Skip to content

Commit 5d4ee35

Browse files
committed
Merge branch 'development'
2 parents 5d9b126 + ae52d26 commit 5d4ee35

File tree

18 files changed

+21632
-21491
lines changed

18 files changed

+21632
-21491
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# react-components 5.26.0 (2021-01-07)
2+
3+
- [Drawer] Add Drawer component (by [@Lukeaber](https://github.com/Lukeaber) in [#343](https://github.com/puppetlabs/design-system/pull/343))
4+
- [Icon] Add new chevron icons ("chevron-double-down" and "chevron-double-up") (by [@Lukeaber](https://github.com/Lukeaber) in [#343](https://github.com/puppetlabs/design-system/pull/343))
5+
- [Form] Add ability to choose cancel button type in Form actions (by [@jilliankeenan](https://github.com/jilliankeenan) in [#372](https://github.com/puppetlabs/design-system/pull/372))
6+
- [Security] Remove fast-csv dependency (by [@vine77](https://github.com/vine77) in [#369](https://github.com/puppetlabs/design-system/pull/369))
7+
18
# data-grid 0.5.1 (2020-11-10)
29

310
- Use new version of react-components to get colored up and down icons in table headers (by [@Lukeaber](https://github.com/Lukeaber) in [#363](https://github.com/puppetlabs/design-system/pull/363))

packages/data-grid/package-lock.json

+21,310-21,310
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/design-system-website/package-lock.json

-74
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/design-system-website/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
"enzyme": "^3.11.0",
3131
"enzyme-adapter-react-16": "^1.15.3",
3232
"extract-text-webpack-plugin": "^4.0.0-beta.0",
33-
"fast-csv": "^3.7.0",
3433
"file-loader": "^4.3.0",
3534
"jsdom": "^15.2.1",
3635
"mocha": "^6.2.3",

packages/react-components/package-lock.json

+1-75
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/react-components/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@puppet/react-components",
3-
"version": "5.25.1",
3+
"version": "5.26.0",
44
"author": "Puppet, Inc.",
55
"license": "Apache-2.0",
66
"main": "build/library.js",
@@ -55,7 +55,6 @@
5555
"eslint-plugin-prettier": "^3.1.4",
5656
"eslint-plugin-react": "^7.20.6",
5757
"extract-text-webpack-plugin": "^4.0.0-beta.0",
58-
"fast-csv": "^3.7.0",
5958
"file-loader": "^4.3.0",
6059
"jsdom": "^15.2.1",
6160
"mocha": "^6.2.3",

packages/react-components/scripts/parseComplexity.js

-25
This file was deleted.

packages/react-components/source/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import Code from './react/library/code';
1414
import Copy from './react/library/copy';
1515
import ConfirmationModal from './react/library/confirmation-modal';
1616
import Content from './react/library/content';
17+
import Drawer from './react/library/drawer';
1718
import Filters from './react/library/filters';
1819
import Form from './react/library/form';
1920
import Heading from './react/library/heading';
@@ -50,6 +51,7 @@ export {
5051
ConfirmationModal,
5152
Content,
5253
Copy,
54+
Drawer,
5355
Filters,
5456
Form,
5557
Heading,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import React, { useState } from 'react';
2+
import classnames from 'classnames';
3+
import {
4+
bool,
5+
string,
6+
element,
7+
node,
8+
oneOf,
9+
elementType,
10+
func,
11+
} from 'prop-types';
12+
import Button from '../button';
13+
14+
const propTypes = {
15+
/** Selector with determines whether the drawer is open on first render, this prop will be overwritten by the open prop */
16+
defaultOpen: bool,
17+
/** Control whether the body content is open or closed with the open boolean prop. */
18+
open: bool,
19+
/** Callback which returns the new open prop value when the expand button is clicked */
20+
onToggle: func,
21+
/** Button text used when the drawer is toggled open. */
22+
buttonTextOpen: string,
23+
/** Button text used when the drawer is toggled closed. */
24+
buttonTextClosed: string,
25+
/** Content that is displayed within the drawer header and is always visible */
26+
headerContent: element,
27+
/** Lets you pick between transparent and text. */
28+
buttonType: oneOf(['transparent', 'text']),
29+
children: node,
30+
/** React component / element to render */
31+
as: elementType,
32+
};
33+
34+
const defaultProps = {
35+
defaultOpen: undefined,
36+
open: undefined,
37+
onToggle: () => {},
38+
buttonTextOpen: 'Hide details',
39+
buttonTextClosed: 'Details',
40+
headerContent: undefined,
41+
buttonType: 'transparent',
42+
children: undefined,
43+
as: Button,
44+
};
45+
46+
function Drawer({
47+
defaultOpen,
48+
open,
49+
onToggle,
50+
buttonTextOpen,
51+
buttonTextClosed,
52+
headerContent,
53+
buttonType,
54+
children,
55+
as: Element,
56+
}) {
57+
const [isOpen, setIsOpen] = useState(open !== undefined ? open : defaultOpen);
58+
59+
const shouldSetIsOpen = () =>
60+
open === undefined ? setIsOpen(!isOpen) : onToggle(!open);
61+
62+
return (
63+
<div className="rc-drawer-container">
64+
<div
65+
className={classnames('rc-drawer-header', {
66+
'rc-drawer-header-closed': !isOpen,
67+
})}
68+
>
69+
<div
70+
className={classnames('rc-drawer-header-content-container', {
71+
'rc-drawer-header-content-container-open': isOpen,
72+
})}
73+
>
74+
<div className="rc-drawer-header-content">{headerContent}</div>
75+
</div>
76+
<div className="rc-drawer-toggle-container">
77+
<Element
78+
className={classnames('rc-drawer-toggle-button', {
79+
'rc-drawer-toggle-button-open': isOpen,
80+
'rc-drawer-toggle-button-closed': !isOpen,
81+
})}
82+
type={buttonType}
83+
trailingIcon={isOpen ? 'chevron-double-up' : 'chevron-double-down'}
84+
onClick={() => shouldSetIsOpen()}
85+
>
86+
{isOpen ? buttonTextOpen : buttonTextClosed}
87+
</Element>
88+
</div>
89+
</div>
90+
{isOpen && <div className="rc-drawer-body">{children}</div>}
91+
</div>
92+
);
93+
}
94+
95+
Drawer.propTypes = propTypes;
96+
Drawer.defaultProps = defaultProps;
97+
98+
export default Drawer;

0 commit comments

Comments
 (0)