@laerdal/life-react-components 1.3.2-dev.1.full → 1.3.2-dev.2

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 (27) hide show
  1. package/dist/esm/Accordion/ContentAccordion.js +238 -0
  2. package/dist/esm/Accordion/ContentAccordion.js.map +1 -0
  3. package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js +137 -0
  4. package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  5. package/dist/esm/Accordion/index.js +1 -0
  6. package/dist/esm/Accordion/index.js.map +1 -1
  7. package/dist/esm/Dropdown/ChipDropdownInput.js +2 -2
  8. package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
  9. package/dist/js/Accordion/ContentAccordion.d.ts +18 -0
  10. package/dist/js/Accordion/ContentAccordion.js +151 -0
  11. package/dist/js/Accordion/ContentAccordion.js.map +1 -0
  12. package/dist/js/Accordion/__tests__/ContetnAccordion.test.js +151 -0
  13. package/dist/js/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  14. package/dist/js/Accordion/index.d.ts +1 -0
  15. package/dist/js/Accordion/index.js +8 -0
  16. package/dist/js/Accordion/index.js.map +1 -1
  17. package/dist/js/Dropdown/ChipDropdownInput.js +3 -1
  18. package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
  19. package/dist/umd/Accordion/ContentAccordion.js +266 -0
  20. package/dist/umd/Accordion/ContentAccordion.js.map +1 -0
  21. package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js +165 -0
  22. package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  23. package/dist/umd/Accordion/index.js +10 -4
  24. package/dist/umd/Accordion/index.js.map +1 -1
  25. package/dist/umd/Dropdown/ChipDropdownInput.js +2 -2
  26. package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
  27. package/package.json +1 -1
@@ -0,0 +1,266 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["exports", "prop-types", "react", "styled-components", "../types", "../icons", "../styles/typography", "../styles", "../styles/z-indexes"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(exports, require("prop-types"), require("react"), require("styled-components"), require("../types"), require("../icons"), require("../styles/typography"), require("../styles"), require("../styles/z-indexes"));
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(mod.exports, global.propTypes, global.react, global.styledComponents, global.types, global.icons, global.typography, global.styles, global.zIndexes);
11
+ global.undefined = mod.exports;
12
+ }
13
+ })(this, function (exports, _propTypes, _react, _styledComponents, _types, _icons, _typography, _styles, _zIndexes) {
14
+ "use strict";
15
+
16
+ Object.defineProperty(exports, "__esModule", {
17
+ value: true
18
+ });
19
+ exports.ContentAccordion = undefined;
20
+
21
+ var _propTypes2 = _interopRequireDefault(_propTypes);
22
+
23
+ var _react2 = _interopRequireDefault(_react);
24
+
25
+ var _styledComponents2 = _interopRequireDefault(_styledComponents);
26
+
27
+ function _interopRequireDefault(obj) {
28
+ return obj && obj.__esModule ? obj : {
29
+ default: obj
30
+ };
31
+ }
32
+
33
+ const ContentAccordionWrapper = _styledComponents2.default.div`
34
+ width: 100%;
35
+ position: relative;
36
+
37
+
38
+ .content-accordion-item {
39
+ display: flex;
40
+ flex-direction: column;
41
+ border-top: 1px solid ${_styles.COLORS.neutral_100};
42
+
43
+ .item-header {
44
+ display: flex;
45
+ align-items: center;
46
+ box-sizing: border-box;
47
+ min-height: 48px;
48
+ color: ${_styles.COLORS.neutral_600};
49
+ cursor: pointer;
50
+
51
+ &:hover {
52
+ color: ${_styles.COLORS.primary_700};
53
+ background-color: ${_styles.COLORS.primary_20};
54
+ z-index: ${_zIndexes.Z_INDEXES.hover};
55
+ }
56
+
57
+ &:focus {
58
+ box-shadow: 0 4px 12px rgba(46, 127, 161, 0.25), 0 0 8px #2E7FA1;
59
+ background-color: ${_styles.COLORS.white};
60
+ z-index: ${_zIndexes.Z_INDEXES.focus};
61
+ outline: none;
62
+ }
63
+
64
+ &:active {
65
+ color: ${_styles.COLORS.primary_800};
66
+ background-color: ${_styles.COLORS.primary_100};
67
+ box-shadow: none;
68
+ z-index: ${_zIndexes.Z_INDEXES.active};
69
+ }
70
+
71
+ .item-header-icon,
72
+ .item-header-icon svg {
73
+ width: 24px;
74
+ height: 24px;
75
+ }
76
+
77
+ .item-header-text {
78
+ }
79
+ }
80
+
81
+ .item-content {
82
+ display: none;
83
+ flex-direction: column;
84
+
85
+ .item-content-header {
86
+
87
+ }
88
+
89
+ .item-content-body {
90
+
91
+ }
92
+
93
+ .item-content-footer {
94
+ }
95
+ }
96
+
97
+ &.active {
98
+ .item-content {
99
+ display: flex;
100
+ }
101
+ }
102
+
103
+ &.disabled {
104
+ .item-header {
105
+ color: ${_styles.COLORS.neutral_300};
106
+ cursor: not-allowed;
107
+ pointer-events: none;
108
+ }
109
+ }
110
+ }
111
+
112
+ .content-accordion-item:last-child {
113
+ border-bottom: 1px solid ${_styles.COLORS.neutral_100};
114
+ }
115
+
116
+ &.small {
117
+ min-width: 320px;
118
+ max-width: 528px;
119
+
120
+ .item-header {
121
+ gap: 8px;
122
+ padding: 0 8px;
123
+ ${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, null)}
124
+ }
125
+
126
+ .item-content {
127
+ padding: 0 8px 16px 40px;
128
+ gap: 8px;
129
+
130
+ .item-content-header {
131
+ ${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Bold, null)}
132
+ }
133
+
134
+ .item-content-body {
135
+ ${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, null)}
136
+ }
137
+ }
138
+ }
139
+
140
+
141
+ &.medium {
142
+ min-width: 344px;
143
+ max-width: 584px;
144
+
145
+ .item-header {
146
+ gap: 12px;
147
+ padding: 0 12px;
148
+ ${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, null)}
149
+ }
150
+
151
+ .item-content {
152
+ padding: 8px 12px 24px 48px;
153
+ gap: 12px;
154
+
155
+ .item-content-header {
156
+ ${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Bold, null)}
157
+ }
158
+
159
+ .item-content-body {
160
+ ${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, null)}
161
+ }
162
+
163
+ }
164
+ }
165
+
166
+ &.large {
167
+ min-width: 384px;
168
+ max-width: 656px;
169
+
170
+ .item-header {
171
+ gap: 16px;
172
+ padding: 0 16px;
173
+ ${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Regular, null)}
174
+ }
175
+
176
+ .item-content {
177
+ padding: 16px 16px 32px 56px;
178
+ gap: 16px;
179
+
180
+ .item-content-header {
181
+ ${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Bold, null)}
182
+ }
183
+
184
+ .item-content-body {
185
+ ${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Regular, null)}
186
+ }
187
+ }
188
+ }
189
+ `;
190
+
191
+ const ContentAccordion = exports.ContentAccordion = props => {
192
+ const [opened, setOpened] = _react2.default.useState([]);
193
+
194
+ _react2.default.useEffect(() => {
195
+ if (props.multi) {
196
+ setOpened(props.items.filter(item => item.active).map(item => item.key));
197
+ } else {
198
+ let active = props.items.find(item => !!item.active)?.key;
199
+
200
+ if (active) {
201
+ setOpened([active]);
202
+ }
203
+ }
204
+ }, [props.items, props.multi]);
205
+
206
+ const onItemClick = item => {
207
+ if (item.disabled) return;
208
+
209
+ if (opened.includes(item.key)) {
210
+ setOpened(opened.filter(key => key !== item.key));
211
+ } else {
212
+ if (props.multi) {
213
+ setOpened([...opened, item.key]);
214
+ } else {
215
+ setOpened([item.key]);
216
+ }
217
+ }
218
+ };
219
+
220
+ const renderItem = item => {
221
+ const isActive = opened.includes(item.key);
222
+ return /*#__PURE__*/_react2.default.createElement("div", {
223
+ key: item.key,
224
+ id: `item_${item.key}`,
225
+ className: 'content-accordion-item'.concat(isActive ? ' active' : '').concat(item.disabled ? ' disabled' : '')
226
+ }, /*#__PURE__*/_react2.default.createElement("div", {
227
+ className: 'item-header',
228
+ tabIndex: !item.disabled ? 0 : undefined,
229
+ onMouseDown: e => e.preventDefault(),
230
+ onClick: () => !item.disabled && onItemClick(item),
231
+ onKeyPress: event => event.key === 'Enter' && onItemClick(item)
232
+ }, /*#__PURE__*/_react2.default.createElement("div", {
233
+ className: 'item-header-icon'
234
+ }, props.multi ? isActive ? /*#__PURE__*/_react2.default.createElement(_icons.SystemIcons.Minus, null) : /*#__PURE__*/_react2.default.createElement(_icons.SystemIcons.Plus, null) : isActive ? /*#__PURE__*/_react2.default.createElement(_icons.SystemIcons.ChevronDown, null) : /*#__PURE__*/_react2.default.createElement(_icons.SystemIcons.ChevronRight, null)), /*#__PURE__*/_react2.default.createElement("div", {
235
+ className: 'item-header-text'
236
+ }, item.title)), /*#__PURE__*/_react2.default.createElement("div", {
237
+ className: 'item-content'
238
+ }, item.header && /*#__PURE__*/_react2.default.createElement("div", {
239
+ className: 'item-content-header'
240
+ }, item.header), /*#__PURE__*/_react2.default.createElement("div", {
241
+ className: 'item-content-body'
242
+ }, item.body), item.footer && /*#__PURE__*/_react2.default.createElement("div", {
243
+ className: 'item-content-footer'
244
+ }, item.footer)));
245
+ };
246
+
247
+ return /*#__PURE__*/_react2.default.createElement(ContentAccordionWrapper, {
248
+ className: 'content-accordion'.concat(` ${props.size ?? _types.Size.Medium}`)
249
+ }, props.items.map(item => renderItem(item)));
250
+ };
251
+
252
+ ContentAccordion.propTypes = {
253
+ items: _propTypes2.default.arrayOf(_propTypes2.default.shape({
254
+ key: _propTypes2.default.string.isRequired,
255
+ title: _propTypes2.default.string.isRequired,
256
+ header: _propTypes2.default.string,
257
+ body: _propTypes2.default.any.isRequired,
258
+ footer: _propTypes2.default.any,
259
+ disabled: _propTypes2.default.bool,
260
+ active: _propTypes2.default.bool
261
+ })).isRequired,
262
+ multi: _propTypes2.default.bool
263
+ };
264
+ exports.default = ContentAccordion;
265
+ });
266
+ //# sourceMappingURL=ContentAccordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Accordion/ContentAccordion.tsx"],"names":["ContentAccordionWrapper","styled","div","COLORS","neutral_100","neutral_600","primary_700","primary_20","Z_INDEXES","hover","white","focus","primary_800","primary_100","active","neutral_300","ComponentSStyling","ComponentTextStyle","ComponentMStyling","ComponentLStyling","key","title","header","body","footer","disabled","items","multi","ContentAccordion","props","React","setOpened","item","onItemClick","opened","renderItem","isActive","e","event","Size","Medium"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,QAAMA,uBAAuB,GAAGC,2BAAOC,GAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4BC,eAAOC,WAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAeD,eAAOE,WAAY;AAClC;AACA;AACA;AACA,iBAAiBF,eAAOG,WAAY;AACpC,4BAA4BH,eAAOI,UAAW;AAC9C,mBAAmBC,oBAAUC,KAAM;AACnC;AACA;AACA;AACA;AACA,4BAA4BN,eAAOO,KAAM;AACzC,mBAAmBF,oBAAUG,KAAM;AACnC;AACA;AACA;AACA;AACA,iBAAiBR,eAAOS,WAAY;AACpC,4BAA4BT,eAAOU,WAAY;AAC/C;AACA,mBAAmBL,oBAAUM,MAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBX,eAAOY,WAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+BZ,eAAOC,WAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQY,mCAAkBC,+BAAD,OAAjBD,EAAiB,IAAjBA,CAAoD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUA,mCAAkBC,+BAAD,IAAjBD,EAAiB,IAAjBA,CAAiD;AAC3D;AACA;AACA;AACA,UAAUA,mCAAkBC,+BAAD,OAAjBD,EAAiB,IAAjBA,CAAoD;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQE,mCAAkBD,+BAAD,OAAjBC,EAAiB,IAAjBA,CAAoD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUA,mCAAkBD,+BAAD,IAAjBC,EAAiB,IAAjBA,CAAiD;AAC3D;AACA;AACA;AACA,UAAUA,mCAAkBD,+BAAD,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","sourcesContent":["import React from 'react'\nimport styled from 'styled-components';\nimport {Size} from '../types';\nimport {SystemIcons} from '../icons';\nimport {ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle} from '../styles/typography';\nimport {COLORS} from '../styles';\nimport {Z_INDEXES} from '../styles/z-indexes';\n\n\nconst ContentAccordionWrapper = styled.div`\n width: 100%;\n position: relative;\n\n\n .content-accordion-item {\n display: flex;\n flex-direction: column;\n border-top: 1px solid ${COLORS.neutral_100};\n\n .item-header {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n min-height: 48px;\n color: ${COLORS.neutral_600};\n cursor: pointer;\n\n &:hover {\n color: ${COLORS.primary_700};\n background-color: ${COLORS.primary_20};\n z-index: ${Z_INDEXES.hover};\n }\n\n &:focus {\n box-shadow: 0 4px 12px rgba(46, 127, 161, 0.25), 0 0 8px #2E7FA1;\n background-color: ${COLORS.white};\n z-index: ${Z_INDEXES.focus};\n outline: none;\n }\n\n &:active {\n color: ${COLORS.primary_800};\n background-color: ${COLORS.primary_100};\n box-shadow: none;\n z-index: ${Z_INDEXES.active};\n }\n\n .item-header-icon,\n .item-header-icon svg {\n width: 24px;\n height: 24px;\n }\n\n .item-header-text {\n }\n }\n\n .item-content {\n display: none;\n flex-direction: column;\n\n .item-content-header {\n\n }\n\n .item-content-body {\n\n }\n\n .item-content-footer {\n }\n }\n\n &.active {\n .item-content {\n display: flex;\n }\n }\n\n &.disabled {\n .item-header {\n color: ${COLORS.neutral_300};\n cursor: not-allowed;\n pointer-events: none;\n }\n }\n }\n\n .content-accordion-item:last-child {\n border-bottom: 1px solid ${COLORS.neutral_100};\n }\n\n &.small {\n min-width: 320px;\n max-width: 528px;\n\n .item-header {\n gap: 8px;\n padding: 0 8px;\n ${ComponentSStyling(ComponentTextStyle.Regular, null)}\n }\n\n .item-content {\n padding: 0 8px 16px 40px;\n gap: 8px;\n\n .item-content-header {\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\n }\n\n .item-content-body {\n ${ComponentSStyling(ComponentTextStyle.Regular, null)}\n }\n }\n }\n\n\n &.medium {\n min-width: 344px;\n max-width: 584px;\n\n .item-header {\n gap: 12px;\n padding: 0 12px;\n ${ComponentMStyling(ComponentTextStyle.Regular, null)}\n }\n\n .item-content {\n padding: 8px 12px 24px 48px;\n gap: 12px;\n\n .item-content-header {\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\n }\n\n .item-content-body {\n ${ComponentMStyling(ComponentTextStyle.Regular, null)}\n }\n\n }\n }\n\n &.large {\n min-width: 384px;\n max-width: 656px;\n\n .item-header {\n gap: 16px;\n padding: 0 16px;\n ${ComponentLStyling(ComponentTextStyle.Regular, null)}\n }\n\n .item-content {\n padding: 16px 16px 32px 56px;\n gap: 16px;\n\n .item-content-header {\n ${ComponentLStyling(ComponentTextStyle.Bold, null)}\n }\n\n .item-content-body {\n ${ComponentLStyling(ComponentTextStyle.Regular, null)}\n }\n }\n }\n`;\n\nexport interface ContentAccordionItem {\n key: string;\n title: string;\n header?: string;\n body: any;\n footer?: any;\n disabled?: boolean;\n active?: boolean;\n}\n\nexport interface ContentAccordionProps {\n items: ContentAccordionItem[];\n multi?: boolean;\n size?: Size;\n}\n\nexport const ContentAccordion: React.FunctionComponent<ContentAccordionProps> = (props) => {\n\n const [opened, setOpened] = React.useState<string[]>([]);\n\n React.useEffect(() => {\n if (props.multi) {\n setOpened(props.items.filter(item => item.active).map(item => item.key));\n } else {\n let active = props.items.find(item => !!item.active)?.key;\n if (active) {\n setOpened([active]);\n }\n }\n }, [props.items, props.multi]);\n\n const onItemClick = (item: ContentAccordionItem) => {\n if (item.disabled) return;\n if (opened.includes(item.key)) {\n setOpened(opened.filter(key => key !== item.key));\n } else {\n if (props.multi) {\n setOpened([...opened, item.key]);\n } else {\n setOpened([item.key]);\n }\n }\n }\n\n const renderItem = (item: ContentAccordionItem) => {\n const isActive = opened.includes(item.key);\n\n return (\n <div key={item.key}\n id={`item_${item.key}`}\n className={'content-accordion-item'.concat(isActive ? ' active' : '').concat(item.disabled ? ' disabled' : '')}>\n <div className={'item-header'}\n tabIndex={!item.disabled ? 0 : undefined}\n onMouseDown={e => e.preventDefault()}\n onClick={() => !item.disabled && onItemClick(item)}\n onKeyPress={event => event.key === 'Enter' && onItemClick(item)}>\n <div className={'item-header-icon'}>\n {\n props.multi\n ? isActive\n ? <SystemIcons.Minus/>\n : <SystemIcons.Plus/>\n : isActive\n ? <SystemIcons.ChevronDown/>\n : <SystemIcons.ChevronRight/>\n }\n </div>\n <div className={'item-header-text'}>\n {item.title}\n </div>\n </div>\n <div className={'item-content'}>\n {\n item.header &&\n <div className={'item-content-header'}>\n {item.header}\n </div>\n }\n <div className={'item-content-body'}>\n {item.body}\n </div>\n {\n item.footer &&\n <div className={'item-content-footer'}>\n {item.footer}\n </div>\n }\n </div>\n </div>\n );\n }\n\n return (\n <ContentAccordionWrapper className={'content-accordion'.concat(` ${props.size ?? Size.Medium}`)}>\n {props.items.map(item => renderItem(item))}\n </ContentAccordionWrapper>\n );\n};\n\nexport default ContentAccordion;\n"],"file":"ContentAccordion.js"}
@@ -0,0 +1,165 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["react", "../ContentAccordion", "@testing-library/react", "../../types"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(require("react"), require("../ContentAccordion"), require("@testing-library/react"), require("../../types"));
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(global.react, global.ContentAccordion, global.react, global.types);
11
+ global.undefined = mod.exports;
12
+ }
13
+ })(this, function (_react, _ContentAccordion, _react3, _types) {
14
+ "use strict";
15
+
16
+ var _react2 = _interopRequireDefault(_react);
17
+
18
+ var _ContentAccordion2 = _interopRequireDefault(_ContentAccordion);
19
+
20
+ function _interopRequireDefault(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ default: obj
23
+ };
24
+ }
25
+
26
+ describe('ContentAccordion', () => {
27
+ const contentAccordionItemsWithBody = [{
28
+ key: '1',
29
+ title: 'Item 1',
30
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
31
+ }, {
32
+ key: '2',
33
+ title: 'Item 2',
34
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
35
+ active: true
36
+ }, {
37
+ key: '3',
38
+ title: 'Item 3',
39
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
40
+ disabled: true
41
+ }, {
42
+ key: '4',
43
+ title: 'Item 4',
44
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
45
+ }];
46
+ const contentAccordionItemsWithBodyAndHeaderAndFooter = [{
47
+ key: '1',
48
+ title: 'Item 1',
49
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
50
+ header: 'Header 1',
51
+ footer: /*#__PURE__*/_react2.default.createElement("span", null)
52
+ }, {
53
+ key: '2',
54
+ title: 'Item 2',
55
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
56
+ header: 'Header 2',
57
+ footer: /*#__PURE__*/_react2.default.createElement("span", null)
58
+ }, {
59
+ key: '3',
60
+ title: 'Item 3',
61
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
62
+ header: 'Header 3',
63
+ footer: /*#__PURE__*/_react2.default.createElement("span", null),
64
+ disabled: true
65
+ }, {
66
+ key: '4',
67
+ title: 'Item 4',
68
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
69
+ header: 'Header 4',
70
+ footer: /*#__PURE__*/_react2.default.createElement("span", null)
71
+ }];
72
+ it('should render items in correct state', () => {
73
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
74
+ items: contentAccordionItemsWithBody
75
+ }));
76
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item').length).toBe(4);
77
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item disabled').length).toBe(1);
78
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item disabled')[0].id).toBe('item_3');
79
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);
80
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');
81
+ });
82
+ it('should not render header if not provided', () => {
83
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
84
+ items: contentAccordionItemsWithBody
85
+ }));
86
+ expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);
87
+ expect(wrapper.baseElement.getElementsByClassName('item-content-header').length).toBe(0);
88
+ });
89
+ it('should not render footer if not provided', () => {
90
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
91
+ items: contentAccordionItemsWithBody
92
+ }));
93
+ expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);
94
+ expect(wrapper.baseElement.getElementsByClassName('item-content-footer').length).toBe(0);
95
+ });
96
+ it('should render body, header, and footer if all are provided', () => {
97
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
98
+ items: contentAccordionItemsWithBodyAndHeaderAndFooter
99
+ }));
100
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item').length).toBe(4);
101
+ expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);
102
+ expect(wrapper.baseElement.getElementsByClassName('item-content-header').length).toBe(4);
103
+ expect(wrapper.baseElement.getElementsByClassName('item-content-footer').length).toBe(4);
104
+ });
105
+ it('should set correct size class name for small accordion', () => {
106
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
107
+ items: contentAccordionItemsWithBodyAndHeaderAndFooter,
108
+ size: _types.Size.Small
109
+ }));
110
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion small').length).toBe(1);
111
+ });
112
+ it('should set correct size class name for medium accordion', () => {
113
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
114
+ items: contentAccordionItemsWithBodyAndHeaderAndFooter,
115
+ size: _types.Size.Medium
116
+ }));
117
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion medium').length).toBe(1);
118
+ });
119
+ it('should set correct size class name for large accordion', () => {
120
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
121
+ items: contentAccordionItemsWithBodyAndHeaderAndFooter,
122
+ size: _types.Size.Large
123
+ }));
124
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion large').length).toBe(1);
125
+ });
126
+ it('should change active state when item header is clicked', () => {
127
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
128
+ items: contentAccordionItemsWithBody,
129
+ multi: false
130
+ }));
131
+ const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];
132
+
133
+ _react3.fireEvent.click(itemHeader);
134
+
135
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);
136
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_4');
137
+ });
138
+ it('should not change active state when disabled item header is clicked', () => {
139
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
140
+ items: contentAccordionItemsWithBody,
141
+ multi: false
142
+ }));
143
+ const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[2];
144
+
145
+ _react3.fireEvent.click(itemHeader);
146
+
147
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);
148
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');
149
+ });
150
+ it('should append active items if multi property is true', () => {
151
+ const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
152
+ items: contentAccordionItemsWithBody,
153
+ multi: true
154
+ }));
155
+ const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];
156
+
157
+ _react3.fireEvent.click(itemHeader);
158
+
159
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(2);
160
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');
161
+ expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[1].id).toBe('item_4');
162
+ });
163
+ });
164
+ });
165
+ //# sourceMappingURL=ContetnAccordion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/Accordion/__tests__/ContetnAccordion.test.tsx"],"names":["describe","contentAccordionItemsWithBody","key","title","body","active","disabled","contentAccordionItemsWithBodyAndHeaderAndFooter","header","footer","it","wrapper","render","expect","Size","Small","Medium","Large","itemHeader","fireEvent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ContentAccordion from '../ContentAccordion';\nimport {fireEvent, render} from '@testing-library/react';\nimport {Size} from '../../types';\n\ndescribe('ContentAccordion', () => {\n const contentAccordionItemsWithBody = [\n {\n key: '1',\n title: 'Item 1',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'\n },\n {\n key: '2',\n title: 'Item 2',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n active: true\n },\n {\n key: '3',\n title: 'Item 3',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n disabled: true\n },\n {\n key: '4',\n title: 'Item 4',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'\n }\n ];\n\n const contentAccordionItemsWithBodyAndHeaderAndFooter = [\n {\n key: '1',\n title: 'Item 1',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n header: 'Header 1',\n footer: <span/>,\n },\n {\n key: '2',\n title: 'Item 2',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n header: 'Header 2',\n footer: <span/>,\n },\n {\n key: '3',\n title: 'Item 3',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n header: 'Header 3',\n footer: <span/>,\n disabled: true\n },\n {\n key: '4',\n title: 'Item 4',\n body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n header: 'Header 4',\n footer: <span/>,\n }\n ];\n\n it('should render items in correct state', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);\n\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item disabled').length).toBe(1);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item disabled')[0].id).toBe('item_3');\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');\n });\n\n it('should not render header if not provided', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);\n\n expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('item-content-header').length).toBe(0);\n });\n\n it('should not render footer if not provided', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);\n\n expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('item-content-footer').length).toBe(0);\n });\n\n it('should render body, header, and footer if all are provided', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}/>);\n\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('item-content-header').length).toBe(4);\n expect(wrapper.baseElement.getElementsByClassName('item-content-footer').length).toBe(4);\n });\n\n it('should set correct size class name for small accordion', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}\n size={Size.Small}/>);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion small').length).toBe(1);\n });\n\n it('should set correct size class name for medium accordion', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}\n size={Size.Medium}/>);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion medium').length).toBe(1);\n });\n\n it('should set correct size class name for large accordion', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}\n size={Size.Large}/>);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion large').length).toBe(1);\n });\n\n it('should change active state when item header is clicked', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={false}/>);\n const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_4');\n });\n\n it('should not change active state when disabled item header is clicked', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={false}/>);\n const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[2];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(1);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');\n });\n\n it('should append active items if multi property is true', () => {\n const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={true}/>);\n const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active').length).toBe(2);\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[0].id).toBe('item_2');\n expect(wrapper.baseElement.getElementsByClassName('content-accordion-item active')[1].id).toBe('item_4');\n });\n\n});\n"],"file":"ContetnAccordion.test.js"}
@@ -1,16 +1,16 @@
1
1
  (function (global, factory) {
2
2
  if (typeof define === "function" && define.amd) {
3
- define(["exports", "./AccordionMenu", "./styles"], factory);
3
+ define(["exports", "./AccordionMenu", "./ContentAccordion", "./styles"], factory);
4
4
  } else if (typeof exports !== "undefined") {
5
- factory(exports, require("./AccordionMenu"), require("./styles"));
5
+ factory(exports, require("./AccordionMenu"), require("./ContentAccordion"), require("./styles"));
6
6
  } else {
7
7
  var mod = {
8
8
  exports: {}
9
9
  };
10
- factory(mod.exports, global.AccordionMenu, global.styles);
10
+ factory(mod.exports, global.AccordionMenu, global.ContentAccordion, global.styles);
11
11
  global.undefined = mod.exports;
12
12
  }
13
- })(this, function (exports, _AccordionMenu, _styles) {
13
+ })(this, function (exports, _AccordionMenu, _ContentAccordion, _styles) {
14
14
  "use strict";
15
15
 
16
16
  Object.defineProperty(exports, "__esModule", {
@@ -28,6 +28,12 @@
28
28
  return _interopRequireDefault(_AccordionMenu).default;
29
29
  }
30
30
  });
31
+ Object.defineProperty(exports, "ContentAccordion", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _ContentAccordion.ContentAccordion;
35
+ }
36
+ });
31
37
  Object.defineProperty(exports, "AccordionMenuWrapper", {
32
38
  enumerable: true,
33
39
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Accordion/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;oDAAA,O;;;;;;oDACA,O;;;;;;qBACA,oB","sourcesContent":["export { default as AccordionMenu } from './AccordionMenu';\nexport { default as AccordionMenuItem } from './AccordionMenu';\nexport { AccordionMenuWrapper } from './styles';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/Accordion/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;oDAAA,O;;;;;;oDACA,O;;;;;;+BACA,gB;;;;;;qBACA,oB","sourcesContent":["export {default as AccordionMenu} from './AccordionMenu';\nexport {default as AccordionMenuItem} from './AccordionMenu';\nexport {ContentAccordion} from './ContentAccordion';\nexport {AccordionMenuWrapper} from './styles';\n"],"file":"index.js"}
@@ -333,10 +333,10 @@
333
333
  };
334
334
 
335
335
  React.useEffect(() => {
336
- var options = [...givenList];
336
+ let options = [...givenList];
337
337
 
338
338
  if (!restartFilter && value !== '') {
339
- options = options.filter(option => option.label.toUpperCase().indexOf(value.toUpperCase()) !== -1);
339
+ options = options.filter(option => option.label.toUpperCase().indexOf(value.toUpperCase()) !== -1 || option.secondaryLabel && option.secondaryLabel?.toUpperCase().indexOf(value.toUpperCase()) !== -1);
340
340
  }
341
341
 
342
342
  if (!disableSorting) {