@elliemae/ds-side-panel 2.3.0-alpha.7 → 2.3.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/cjs/SidePanel.js +97 -0
  2. package/cjs/SidePanelHeader.js +100 -0
  3. package/cjs/TemplateBasicPageWithSidePanel.js +122 -0
  4. package/cjs/defaultProps.js +14 -0
  5. package/cjs/index.js +17 -0
  6. package/cjs/props.js +44 -0
  7. package/esm/SidePanel.js +86 -0
  8. package/esm/SidePanelHeader.js +89 -0
  9. package/esm/TemplateBasicPageWithSidePanel.js +113 -0
  10. package/esm/defaultProps.js +10 -0
  11. package/esm/index.js +3 -0
  12. package/esm/props.js +40 -0
  13. package/package.json +30 -32
  14. package/types/SidePanel.d.ts +95 -0
  15. package/types/SidePanelHeader.d.ts +46 -0
  16. package/types/TemplateBasicPageWithSidePanel.d.ts +109 -0
  17. package/types/defaultProps.d.ts +8 -0
  18. package/types/index.d.ts +4 -0
  19. package/types/props.d.ts +82 -0
  20. package/dist/cjs/SidePanel.js +0 -111
  21. package/dist/cjs/SidePanel.js.map +0 -7
  22. package/dist/cjs/SidePanelHeader.js +0 -109
  23. package/dist/cjs/SidePanelHeader.js.map +0 -7
  24. package/dist/cjs/TemplateBasicPageWithSidePanel.js +0 -91
  25. package/dist/cjs/TemplateBasicPageWithSidePanel.js.map +0 -7
  26. package/dist/cjs/defaultProps.js +0 -42
  27. package/dist/cjs/defaultProps.js.map +0 -7
  28. package/dist/cjs/index.js +0 -38
  29. package/dist/cjs/index.js.map +0 -7
  30. package/dist/cjs/props.js +0 -48
  31. package/dist/cjs/props.js.map +0 -7
  32. package/dist/esm/SidePanel.js +0 -82
  33. package/dist/esm/SidePanel.js.map +0 -7
  34. package/dist/esm/SidePanelHeader.js +0 -80
  35. package/dist/esm/SidePanelHeader.js.map +0 -7
  36. package/dist/esm/TemplateBasicPageWithSidePanel.js +0 -62
  37. package/dist/esm/TemplateBasicPageWithSidePanel.js.map +0 -7
  38. package/dist/esm/defaultProps.js +0 -13
  39. package/dist/esm/defaultProps.js.map +0 -7
  40. package/dist/esm/index.js +0 -9
  41. package/dist/esm/index.js.map +0 -7
  42. package/dist/esm/props.js +0 -19
  43. package/dist/esm/props.js.map +0 -7
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var styled = require('styled-components');
9
+ var dsSystem = require('@elliemae/ds-system');
10
+ var dsGrid = require('@elliemae/ds-grid');
11
+ var props = require('./props.js');
12
+ var defaultProps = require('./defaultProps.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
17
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
18
+
19
+ const Container = /*#__PURE__*/styled__default["default"].div.withConfig({
20
+ componentId: "sc-71f9h4-0"
21
+ })(["display:flex;height:100%;flex-direction:row;max-height:100%;overflow:hidden;", ""], _ref => {
22
+ let {
23
+ noGridInfluencer
24
+ } = _ref;
25
+ return noGridInfluencer ? 'position: relative;' : '';
26
+ });
27
+ const TransGrid = /*#__PURE__*/styled__default["default"](dsGrid.Grid).withConfig({
28
+ componentId: "sc-71f9h4-1"
29
+ })(["box-shadow:", ";transition:300ms;border-left:", ";", " background:", ";"], props => props.withBoxShadow ? '0 2px 5px 0 rgba(53, 60, 70, 0.5)' : 'none', props => props.withBorder ? dsSystem.border(props.theme.colors.neutral['300'], '1px') : 'none', _ref2 => {
30
+ let {
31
+ noGridInfluencer
32
+ } = _ref2;
33
+ return noGridInfluencer ? "\n position: absolute;\n top:0;\n right:0;\n height: 100%;\n " : '';
34
+ }, props => props.theme.colors.neutral['000']);
35
+ const FooterContainer = /*#__PURE__*/styled__default["default"](dsGrid.Grid).withConfig({
36
+ componentId: "sc-71f9h4-2"
37
+ })(["border-top:", ";"], props => dsSystem.border(props.theme.colors.neutral['300']));
38
+
39
+ const SidePanel = _ref3 => {
40
+ let {
41
+ children,
42
+ isOpen,
43
+ footer,
44
+ header,
45
+ panelContent,
46
+ panelWidth,
47
+ panelContentOverflow,
48
+ widthWhenIsClosed,
49
+ noGridInfluencer,
50
+ withBorder = true,
51
+ withBoxShadow = false
52
+ } = _ref3;
53
+ return /*#__PURE__*/_jsx__default["default"](Container, {
54
+ noGridInfluencer: noGridInfluencer
55
+ }, void 0, /*#__PURE__*/_jsx__default["default"](TransGrid, {
56
+ height: "100%",
57
+ flex: "1",
58
+ mr: noGridInfluencer ? "".concat(widthWhenIsClosed, "px") : 0
59
+ }, void 0, children), /*#__PURE__*/_jsx__default["default"](TransGrid, {
60
+ style: {
61
+ overflow: 'hidden'
62
+ },
63
+ height: "100%",
64
+ maxHeight: "100%",
65
+ width: isOpen ? "".concat(panelWidth, "px") : "".concat(widthWhenIsClosed, "px"),
66
+ withBorder: withBorder,
67
+ withBoxShadow: withBoxShadow,
68
+ isOpen: isOpen,
69
+ cols: [1],
70
+ noGridInfluencer: noGridInfluencer
71
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
72
+ rows: footer ? [header ? '48px' : '0px', 'minmax(0px, 1fr)', '48px'] : [header ? '48px' : '0px', 'minmax(0px, 1fr)'],
73
+ style: {
74
+ overflow: 'hidden'
75
+ }
76
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {}, void 0, header), /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
77
+ style: {
78
+ overflow: 'hidden'
79
+ }
80
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
81
+ style: {
82
+ overflow: panelContentOverflow
83
+ }
84
+ }, void 0, panelContent)), footer ? /*#__PURE__*/_jsx__default["default"](FooterContainer, {
85
+ alignItems: "center",
86
+ pl: "xs",
87
+ pr: "xs"
88
+ }, void 0, footer) : null)));
89
+ };
90
+
91
+ SidePanel.defaultProps = defaultProps.defaultProps;
92
+ const DSSidePanelWithSchema = reactDesc.describe(SidePanel);
93
+ DSSidePanelWithSchema.propTypes = props.props;
94
+
95
+ exports.DSSidePanelWithSchema = DSSidePanelWithSchema;
96
+ exports.SidePanel = SidePanel;
97
+ exports["default"] = SidePanel;
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var styled = require('styled-components');
9
+ var lodash = require('lodash');
10
+ var dsSystem = require('@elliemae/ds-system');
11
+ var dsIcons = require('@elliemae/ds-icons');
12
+ var DSButton = require('@elliemae/ds-button');
13
+ var dsGrid = require('@elliemae/ds-grid');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
18
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
19
+ var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
20
+
21
+ var _Grid, _CloseSmall;
22
+ const StyledSeparator = /*#__PURE__*/styled__default["default"].div.withConfig({
23
+ componentId: "sc-1xdsdq5-0"
24
+ })(["width:0;height:100%;margin:0 ", ";border-left:", ";"], props => props.theme.space.xxs, props => "".concat(props.theme.colors.neutral[300], " 1px solid"));
25
+ const StyledTitle = /*#__PURE__*/styled__default["default"].div.withConfig({
26
+ componentId: "sc-1xdsdq5-1"
27
+ })(["font-size:18px;font-weight:", ";color:", ";", ""], props => props.theme.fontWeights.regular, props => props.theme.colors.neutral['700'], dsSystem.truncate());
28
+ const Wrapper = /*#__PURE__*/styled__default["default"](dsGrid.Grid).withConfig({
29
+ componentId: "sc-1xdsdq5-2"
30
+ })(["border-bottom:", ";"], props => dsSystem.border(props.theme.colors.neutral['300']));
31
+
32
+ const SidePanelHeader = _ref => {
33
+ let {
34
+ title = null,
35
+ additionalAction = null,
36
+ onClose = lodash.noop,
37
+ showClose = true
38
+ } = _ref;
39
+ const theme = dsSystem.useTheme();
40
+
41
+ const separator = _Grid || (_Grid = /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
42
+ height: "24px"
43
+ }, void 0, /*#__PURE__*/_jsx__default["default"](StyledSeparator, {})));
44
+
45
+ const cols = [1, 'auto', 'auto'];
46
+ const cols2 = ['auto'];
47
+ return /*#__PURE__*/_jsx__default["default"](Wrapper, {
48
+ cols: cols,
49
+ height: theme.space.m,
50
+ pl: theme.space.xs,
51
+ pr: theme.space.xs,
52
+ alignItems: "center",
53
+ width: "100%"
54
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
55
+ alignItems: "center",
56
+ justifyContent: "flex-start",
57
+ cols: cols2
58
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
59
+ cols: [1],
60
+ alignItems: "center",
61
+ pr: theme.space.xs
62
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
63
+ flexGrow: 0
64
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
65
+ cols: ['auto', 'auto'],
66
+ alignItems: "center"
67
+ }, void 0, /*#__PURE__*/_jsx__default["default"](StyledTitle, {
68
+ maxWidth: "100%",
69
+ alignItems: "center"
70
+ }, void 0, title))))), /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
71
+ ml: "xxs",
72
+ alignItems: "center",
73
+ cols: additionalAction ? ['auto', 'auto', 'auto'] : ['auto']
74
+ }, void 0, additionalAction && /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {}, void 0, additionalAction), additionalAction && showClose && separator, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {}, void 0, showClose && /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
75
+ buttonType: "text",
76
+ icon: _CloseSmall || (_CloseSmall = /*#__PURE__*/_jsx__default["default"](dsIcons.CloseSmall, {})),
77
+ size: "m",
78
+ onClick: onClose,
79
+ "data-testid": "btn-close-slide-panel"
80
+ }))));
81
+ };
82
+
83
+ const props = {
84
+ /** Page title */
85
+ title: reactDesc.PropTypes.string.description('Page title'),
86
+
87
+ /** Action button */
88
+ additionalAction: reactDesc.PropTypes.element.description('Action button'),
89
+
90
+ /** Called when the slide collapse */
91
+ onClose: reactDesc.PropTypes.func.description('Called when the slide collapse'),
92
+
93
+ /** Show/Hide close button */
94
+ showClose: reactDesc.PropTypes.bool.description('Show/Hide close button')
95
+ };
96
+ const DSSidePanelHeaderWithSchema = reactDesc.describe(SidePanelHeader);
97
+ DSSidePanelHeaderWithSchema.propTypes = props;
98
+
99
+ exports.DSSidePanelHeaderWithSchema = DSSidePanelHeaderWithSchema;
100
+ exports.SidePanelHeader = SidePanelHeader;
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var dsGrid = require('@elliemae/ds-grid');
9
+ var SidePanel = require('./SidePanel.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
+
15
+ const TemplateBasicPageWithSidePanel = _ref => {
16
+ let {
17
+ globalHeader = null,
18
+ mainHeader = null,
19
+ mainContent,
20
+ mainFooter,
21
+ isOpen = false,
22
+ onClose,
23
+ panelFooter,
24
+ panelHeader,
25
+ panelContent,
26
+ panelWidth
27
+ } = _ref;
28
+ return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
29
+ style: {
30
+ overflow: 'hidden',
31
+ width: '100%'
32
+ },
33
+ height: "100%",
34
+ maxHeight: "100%",
35
+ rows: ['auto', '1fr']
36
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {}, void 0, globalHeader), /*#__PURE__*/_jsx__default["default"](SidePanel.SidePanel, {
37
+ footer: panelFooter,
38
+ header: panelHeader,
39
+ panelWidth: panelWidth,
40
+ onClose: onClose,
41
+ panelContent: panelContent,
42
+ isOpen: isOpen
43
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
44
+ style: {
45
+ overflow: 'hidden'
46
+ },
47
+ height: "100%",
48
+ maxHeight: "100%"
49
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
50
+ rows: mainFooter ? [mainHeader ? 'auto' : '0px', 'minmax(0px, 1fr)', '48px'] : [mainHeader ? 'auto' : '0px', 'minmax(0px, 1fr)'],
51
+ style: {
52
+ overflow: 'hidden'
53
+ }
54
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {}, void 0, mainHeader), /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
55
+ style: {
56
+ overflow: 'hidden'
57
+ }
58
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
59
+ style: {
60
+ overflow: 'auto'
61
+ }
62
+ }, void 0, mainContent)), mainFooter && /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
63
+ alignItems: "center"
64
+ }, void 0, mainFooter)))));
65
+ };
66
+
67
+ const props = {
68
+ /**
69
+ * Global Header
70
+ */
71
+ globalHeader: reactDesc.PropTypes.element.description('Global Header'),
72
+
73
+ /**
74
+ * Main Header
75
+ */
76
+ mainHeader: reactDesc.PropTypes.element.description('Main Header'),
77
+
78
+ /**
79
+ * Main content
80
+ */
81
+ mainContent: reactDesc.PropTypes.element.isRequired.description('Main content'),
82
+
83
+ /**
84
+ * Main Footer
85
+ */
86
+ mainFooter: reactDesc.PropTypes.element.description('Main Footer'),
87
+
88
+ /**
89
+ * Should show the slide panel or not
90
+ */
91
+ isOpen: reactDesc.PropTypes.bool.description('Should show the slide panel or not'),
92
+
93
+ /**
94
+ * Footer for Slide Panel
95
+ */
96
+ panelFooter: reactDesc.PropTypes.element.description('Footer for Slide Panel'),
97
+
98
+ /**
99
+ * Header for Slide Panel instance of SlidePanelHeader
100
+ */
101
+ panelHeader: reactDesc.PropTypes.element.description('Header for Slide Panel instance of SlidePanelHeader'),
102
+
103
+ /**
104
+ * Content for Slide Panel
105
+ */
106
+ panelContent: reactDesc.PropTypes.element.description('Content for Slide Panel'),
107
+
108
+ /**
109
+ * Width of the panel open. eg: 300
110
+ */
111
+ panelWidth: reactDesc.PropTypes.number.description('Width of the panel open. eg: 300'),
112
+
113
+ /**
114
+ * Callback
115
+ */
116
+ onClose: reactDesc.PropTypes.func.description('callback')
117
+ };
118
+ const DSTemplateBasicPageWithSidePanel = reactDesc.describe(TemplateBasicPageWithSidePanel);
119
+ DSTemplateBasicPageWithSidePanel.propTypes = props;
120
+
121
+ exports.DSTemplateBasicPageWithSidePanel = DSTemplateBasicPageWithSidePanel;
122
+ exports.TemplateBasicPageWithSidePanel = TemplateBasicPageWithSidePanel;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const defaultProps = {
6
+ isOpen: false,
7
+ panelWidth: 300,
8
+ widthWhenIsClosed: 0,
9
+ panelContentOverflow: 'auto',
10
+ withBorder: true,
11
+ withBoxShadow: false
12
+ };
13
+
14
+ exports.defaultProps = defaultProps;
package/cjs/index.js ADDED
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var SidePanel = require('./SidePanel.js');
6
+ var SidePanelHeader = require('./SidePanelHeader.js');
7
+ var TemplateBasicPageWithSidePanel = require('./TemplateBasicPageWithSidePanel.js');
8
+
9
+
10
+
11
+ exports.DSSidePanelWithSchema = SidePanel.DSSidePanelWithSchema;
12
+ exports.SidePanel = SidePanel.SidePanel;
13
+ exports["default"] = SidePanel.SidePanel;
14
+ exports.DSSidePanelHeaderWithSchema = SidePanelHeader.DSSidePanelHeaderWithSchema;
15
+ exports.SidePanelHeader = SidePanelHeader.SidePanelHeader;
16
+ exports.DSTemplateBasicPageWithSidePanel = TemplateBasicPageWithSidePanel.DSTemplateBasicPageWithSidePanel;
17
+ exports.TemplateBasicPageWithSidePanel = TemplateBasicPageWithSidePanel.TemplateBasicPageWithSidePanel;
package/cjs/props.js ADDED
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactDesc = require('react-desc');
6
+
7
+ const props = {
8
+ /**
9
+ * Main content
10
+ */
11
+ children: reactDesc.PropTypes.element.isRequired.description('Main content'),
12
+
13
+ /**
14
+ * Should show the slide panel or not
15
+ */
16
+ isOpen: reactDesc.PropTypes.bool.description('Should show the slide panel or not'),
17
+
18
+ /**
19
+ * Footer for Slide Panel
20
+ */
21
+ footer: reactDesc.PropTypes.element.description('Footer for Slide Panel'),
22
+
23
+ /**
24
+ * Header for Slide Panel instance of SlidePanelHeader
25
+ */
26
+ header: reactDesc.PropTypes.element.description('Header for Slide Panel instance of SlidePanelHeader'),
27
+
28
+ /**
29
+ * Content for Slide Panel
30
+ */
31
+ panelContent: reactDesc.PropTypes.element.description('Content for Slide Panel'),
32
+
33
+ /**
34
+ * Width of the panel open. eg: 300
35
+ */
36
+ panelWidth: reactDesc.PropTypes.number.description('Width of the panel open. eg: 300'),
37
+ widthWhenIsClosed: reactDesc.PropTypes.number.description('Width of the panel closed. eg: 0'),
38
+ panelContentOverflow: reactDesc.PropTypes.oneOf(['auto', 'hidden']).description('Overflow on SidePanel content'),
39
+ withBorder: reactDesc.PropTypes.bool.description('Whether the sidepanel has border or not'),
40
+ withBoxShadow: reactDesc.PropTypes.bool.description('Whether the sidepanel has box shadow or not'),
41
+ noGridInfluencer: reactDesc.PropTypes.bool.description('Whether the sidepanel is grid-influencer or not')
42
+ };
43
+
44
+ exports.props = props;
@@ -0,0 +1,86 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'react';
3
+ import { describe } from 'react-desc';
4
+ import styled from 'styled-components';
5
+ import { border } from '@elliemae/ds-system';
6
+ import { Grid } from '@elliemae/ds-grid';
7
+ import { props } from './props.js';
8
+ import { defaultProps } from './defaultProps.js';
9
+
10
+ const Container = /*#__PURE__*/styled.div.withConfig({
11
+ componentId: "sc-71f9h4-0"
12
+ })(["display:flex;height:100%;flex-direction:row;max-height:100%;overflow:hidden;", ""], _ref => {
13
+ let {
14
+ noGridInfluencer
15
+ } = _ref;
16
+ return noGridInfluencer ? 'position: relative;' : '';
17
+ });
18
+ const TransGrid = /*#__PURE__*/styled(Grid).withConfig({
19
+ componentId: "sc-71f9h4-1"
20
+ })(["box-shadow:", ";transition:300ms;border-left:", ";", " background:", ";"], props => props.withBoxShadow ? '0 2px 5px 0 rgba(53, 60, 70, 0.5)' : 'none', props => props.withBorder ? border(props.theme.colors.neutral['300'], '1px') : 'none', _ref2 => {
21
+ let {
22
+ noGridInfluencer
23
+ } = _ref2;
24
+ return noGridInfluencer ? "\n position: absolute;\n top:0;\n right:0;\n height: 100%;\n " : '';
25
+ }, props => props.theme.colors.neutral['000']);
26
+ const FooterContainer = /*#__PURE__*/styled(Grid).withConfig({
27
+ componentId: "sc-71f9h4-2"
28
+ })(["border-top:", ";"], props => border(props.theme.colors.neutral['300']));
29
+
30
+ const SidePanel = _ref3 => {
31
+ let {
32
+ children,
33
+ isOpen,
34
+ footer,
35
+ header,
36
+ panelContent,
37
+ panelWidth,
38
+ panelContentOverflow,
39
+ widthWhenIsClosed,
40
+ noGridInfluencer,
41
+ withBorder = true,
42
+ withBoxShadow = false
43
+ } = _ref3;
44
+ return /*#__PURE__*/_jsx(Container, {
45
+ noGridInfluencer: noGridInfluencer
46
+ }, void 0, /*#__PURE__*/_jsx(TransGrid, {
47
+ height: "100%",
48
+ flex: "1",
49
+ mr: noGridInfluencer ? "".concat(widthWhenIsClosed, "px") : 0
50
+ }, void 0, children), /*#__PURE__*/_jsx(TransGrid, {
51
+ style: {
52
+ overflow: 'hidden'
53
+ },
54
+ height: "100%",
55
+ maxHeight: "100%",
56
+ width: isOpen ? "".concat(panelWidth, "px") : "".concat(widthWhenIsClosed, "px"),
57
+ withBorder: withBorder,
58
+ withBoxShadow: withBoxShadow,
59
+ isOpen: isOpen,
60
+ cols: [1],
61
+ noGridInfluencer: noGridInfluencer
62
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
63
+ rows: footer ? [header ? '48px' : '0px', 'minmax(0px, 1fr)', '48px'] : [header ? '48px' : '0px', 'minmax(0px, 1fr)'],
64
+ style: {
65
+ overflow: 'hidden'
66
+ }
67
+ }, void 0, /*#__PURE__*/_jsx(Grid, {}, void 0, header), /*#__PURE__*/_jsx(Grid, {
68
+ style: {
69
+ overflow: 'hidden'
70
+ }
71
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
72
+ style: {
73
+ overflow: panelContentOverflow
74
+ }
75
+ }, void 0, panelContent)), footer ? /*#__PURE__*/_jsx(FooterContainer, {
76
+ alignItems: "center",
77
+ pl: "xs",
78
+ pr: "xs"
79
+ }, void 0, footer) : null)));
80
+ };
81
+
82
+ SidePanel.defaultProps = defaultProps;
83
+ const DSSidePanelWithSchema = describe(SidePanel);
84
+ DSSidePanelWithSchema.propTypes = props;
85
+
86
+ export { DSSidePanelWithSchema, SidePanel, SidePanel as default };
@@ -0,0 +1,89 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'react';
3
+ import { PropTypes, describe } from 'react-desc';
4
+ import styled from 'styled-components';
5
+ import { noop } from 'lodash';
6
+ import { truncate, useTheme, border } from '@elliemae/ds-system';
7
+ import { CloseSmall } from '@elliemae/ds-icons';
8
+ import DSButton from '@elliemae/ds-button';
9
+ import { Grid } from '@elliemae/ds-grid';
10
+
11
+ var _Grid, _CloseSmall;
12
+ const StyledSeparator = /*#__PURE__*/styled.div.withConfig({
13
+ componentId: "sc-1xdsdq5-0"
14
+ })(["width:0;height:100%;margin:0 ", ";border-left:", ";"], props => props.theme.space.xxs, props => "".concat(props.theme.colors.neutral[300], " 1px solid"));
15
+ const StyledTitle = /*#__PURE__*/styled.div.withConfig({
16
+ componentId: "sc-1xdsdq5-1"
17
+ })(["font-size:18px;font-weight:", ";color:", ";", ""], props => props.theme.fontWeights.regular, props => props.theme.colors.neutral['700'], truncate());
18
+ const Wrapper = /*#__PURE__*/styled(Grid).withConfig({
19
+ componentId: "sc-1xdsdq5-2"
20
+ })(["border-bottom:", ";"], props => border(props.theme.colors.neutral['300']));
21
+
22
+ const SidePanelHeader = _ref => {
23
+ let {
24
+ title = null,
25
+ additionalAction = null,
26
+ onClose = noop,
27
+ showClose = true
28
+ } = _ref;
29
+ const theme = useTheme();
30
+
31
+ const separator = _Grid || (_Grid = /*#__PURE__*/_jsx(Grid, {
32
+ height: "24px"
33
+ }, void 0, /*#__PURE__*/_jsx(StyledSeparator, {})));
34
+
35
+ const cols = [1, 'auto', 'auto'];
36
+ const cols2 = ['auto'];
37
+ return /*#__PURE__*/_jsx(Wrapper, {
38
+ cols: cols,
39
+ height: theme.space.m,
40
+ pl: theme.space.xs,
41
+ pr: theme.space.xs,
42
+ alignItems: "center",
43
+ width: "100%"
44
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
45
+ alignItems: "center",
46
+ justifyContent: "flex-start",
47
+ cols: cols2
48
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
49
+ cols: [1],
50
+ alignItems: "center",
51
+ pr: theme.space.xs
52
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
53
+ flexGrow: 0
54
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
55
+ cols: ['auto', 'auto'],
56
+ alignItems: "center"
57
+ }, void 0, /*#__PURE__*/_jsx(StyledTitle, {
58
+ maxWidth: "100%",
59
+ alignItems: "center"
60
+ }, void 0, title))))), /*#__PURE__*/_jsx(Grid, {
61
+ ml: "xxs",
62
+ alignItems: "center",
63
+ cols: additionalAction ? ['auto', 'auto', 'auto'] : ['auto']
64
+ }, void 0, additionalAction && /*#__PURE__*/_jsx(Grid, {}, void 0, additionalAction), additionalAction && showClose && separator, /*#__PURE__*/_jsx(Grid, {}, void 0, showClose && /*#__PURE__*/_jsx(DSButton, {
65
+ buttonType: "text",
66
+ icon: _CloseSmall || (_CloseSmall = /*#__PURE__*/_jsx(CloseSmall, {})),
67
+ size: "m",
68
+ onClick: onClose,
69
+ "data-testid": "btn-close-slide-panel"
70
+ }))));
71
+ };
72
+
73
+ const props = {
74
+ /** Page title */
75
+ title: PropTypes.string.description('Page title'),
76
+
77
+ /** Action button */
78
+ additionalAction: PropTypes.element.description('Action button'),
79
+
80
+ /** Called when the slide collapse */
81
+ onClose: PropTypes.func.description('Called when the slide collapse'),
82
+
83
+ /** Show/Hide close button */
84
+ showClose: PropTypes.bool.description('Show/Hide close button')
85
+ };
86
+ const DSSidePanelHeaderWithSchema = describe(SidePanelHeader);
87
+ DSSidePanelHeaderWithSchema.propTypes = props;
88
+
89
+ export { DSSidePanelHeaderWithSchema, SidePanelHeader };
@@ -0,0 +1,113 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'react';
3
+ import { PropTypes, describe } from 'react-desc';
4
+ import { Grid } from '@elliemae/ds-grid';
5
+ import { SidePanel } from './SidePanel.js';
6
+
7
+ const TemplateBasicPageWithSidePanel = _ref => {
8
+ let {
9
+ globalHeader = null,
10
+ mainHeader = null,
11
+ mainContent,
12
+ mainFooter,
13
+ isOpen = false,
14
+ onClose,
15
+ panelFooter,
16
+ panelHeader,
17
+ panelContent,
18
+ panelWidth
19
+ } = _ref;
20
+ return /*#__PURE__*/_jsx(Grid, {
21
+ style: {
22
+ overflow: 'hidden',
23
+ width: '100%'
24
+ },
25
+ height: "100%",
26
+ maxHeight: "100%",
27
+ rows: ['auto', '1fr']
28
+ }, void 0, /*#__PURE__*/_jsx(Grid, {}, void 0, globalHeader), /*#__PURE__*/_jsx(SidePanel, {
29
+ footer: panelFooter,
30
+ header: panelHeader,
31
+ panelWidth: panelWidth,
32
+ onClose: onClose,
33
+ panelContent: panelContent,
34
+ isOpen: isOpen
35
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
36
+ style: {
37
+ overflow: 'hidden'
38
+ },
39
+ height: "100%",
40
+ maxHeight: "100%"
41
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
42
+ rows: mainFooter ? [mainHeader ? 'auto' : '0px', 'minmax(0px, 1fr)', '48px'] : [mainHeader ? 'auto' : '0px', 'minmax(0px, 1fr)'],
43
+ style: {
44
+ overflow: 'hidden'
45
+ }
46
+ }, void 0, /*#__PURE__*/_jsx(Grid, {}, void 0, mainHeader), /*#__PURE__*/_jsx(Grid, {
47
+ style: {
48
+ overflow: 'hidden'
49
+ }
50
+ }, void 0, /*#__PURE__*/_jsx(Grid, {
51
+ style: {
52
+ overflow: 'auto'
53
+ }
54
+ }, void 0, mainContent)), mainFooter && /*#__PURE__*/_jsx(Grid, {
55
+ alignItems: "center"
56
+ }, void 0, mainFooter)))));
57
+ };
58
+
59
+ const props = {
60
+ /**
61
+ * Global Header
62
+ */
63
+ globalHeader: PropTypes.element.description('Global Header'),
64
+
65
+ /**
66
+ * Main Header
67
+ */
68
+ mainHeader: PropTypes.element.description('Main Header'),
69
+
70
+ /**
71
+ * Main content
72
+ */
73
+ mainContent: PropTypes.element.isRequired.description('Main content'),
74
+
75
+ /**
76
+ * Main Footer
77
+ */
78
+ mainFooter: PropTypes.element.description('Main Footer'),
79
+
80
+ /**
81
+ * Should show the slide panel or not
82
+ */
83
+ isOpen: PropTypes.bool.description('Should show the slide panel or not'),
84
+
85
+ /**
86
+ * Footer for Slide Panel
87
+ */
88
+ panelFooter: PropTypes.element.description('Footer for Slide Panel'),
89
+
90
+ /**
91
+ * Header for Slide Panel instance of SlidePanelHeader
92
+ */
93
+ panelHeader: PropTypes.element.description('Header for Slide Panel instance of SlidePanelHeader'),
94
+
95
+ /**
96
+ * Content for Slide Panel
97
+ */
98
+ panelContent: PropTypes.element.description('Content for Slide Panel'),
99
+
100
+ /**
101
+ * Width of the panel open. eg: 300
102
+ */
103
+ panelWidth: PropTypes.number.description('Width of the panel open. eg: 300'),
104
+
105
+ /**
106
+ * Callback
107
+ */
108
+ onClose: PropTypes.func.description('callback')
109
+ };
110
+ const DSTemplateBasicPageWithSidePanel = describe(TemplateBasicPageWithSidePanel);
111
+ DSTemplateBasicPageWithSidePanel.propTypes = props;
112
+
113
+ export { DSTemplateBasicPageWithSidePanel, TemplateBasicPageWithSidePanel };