@laerdal/life-react-components 1.3.2-dev.9 → 1.4.1-dev.3
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.
- package/dist/esm/Accordion/ContentAccordion.js +102 -81
- package/dist/esm/Accordion/ContentAccordion.js.map +1 -1
- package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js +27 -27
- package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js.map +1 -1
- package/dist/esm/Button/DualFunctionButton.js +4 -0
- package/dist/esm/Button/DualFunctionButton.js.map +1 -1
- package/dist/esm/Button/Iconbutton.js +0 -1
- package/dist/esm/Button/Iconbutton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownButton.js +5 -2
- package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownContent.js +6 -6
- package/dist/esm/Dropdown/DropdownContent.js.map +1 -1
- package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/esm/HyperLink/HyperLink.js +2 -1
- package/dist/esm/HyperLink/HyperLink.js.map +1 -1
- package/dist/esm/InputFields/Checkbox.js +23 -13
- package/dist/esm/InputFields/Checkbox.js.map +1 -1
- package/dist/esm/Modals/ModalDialog.js +14 -5
- package/dist/esm/Modals/ModalDialog.js.map +1 -1
- package/dist/esm/Modals/ModalNote.js +1 -1
- package/dist/esm/Modals/ModalNote.js.map +1 -1
- package/dist/esm/Table/Table.js +131 -181
- package/dist/esm/Table/Table.js.map +1 -1
- package/dist/esm/Table/TableBody.js +135 -0
- package/dist/esm/Table/TableBody.js.map +1 -0
- package/dist/esm/Table/TableFooter.js +68 -0
- package/dist/esm/Table/TableFooter.js.map +1 -0
- package/dist/esm/Table/TableHeaders.js +55 -0
- package/dist/esm/Table/TableHeaders.js.map +1 -0
- package/dist/esm/Table/TableStyles.js +181 -110
- package/dist/esm/Table/TableStyles.js.map +1 -1
- package/dist/esm/Table/__tests__/Table.test.js +162 -21
- package/dist/esm/Table/__tests__/Table.test.js.map +1 -1
- package/dist/js/Accordion/ContentAccordion.d.ts +0 -9
- package/dist/js/Accordion/ContentAccordion.js +21 -42
- package/dist/js/Accordion/ContentAccordion.js.map +1 -1
- package/dist/js/Accordion/__tests__/ContetnAccordion.test.js +27 -33
- package/dist/js/Accordion/__tests__/ContetnAccordion.test.js.map +1 -1
- package/dist/js/Button/DualFunctionButton.js +4 -0
- package/dist/js/Button/DualFunctionButton.js.map +1 -1
- package/dist/js/Button/Iconbutton.d.ts +2 -2
- package/dist/js/Button/Iconbutton.js +0 -1
- package/dist/js/Button/Iconbutton.js.map +1 -1
- package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
- package/dist/js/Dropdown/DropdownButton.js +5 -2
- package/dist/js/Dropdown/DropdownButton.js.map +1 -1
- package/dist/js/Dropdown/DropdownButtonTypes.d.ts +1 -0
- package/dist/js/Dropdown/DropdownContent.js +8 -8
- package/dist/js/Dropdown/DropdownContent.js.map +1 -1
- package/dist/js/Dropdown/DropdownFilter.d.ts +1 -1
- package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/js/HyperLink/HyperLink.d.ts +1 -1
- package/dist/js/HyperLink/HyperLink.js +2 -2
- package/dist/js/HyperLink/HyperLink.js.map +1 -1
- package/dist/js/InputFields/Checkbox.d.ts +3 -2
- package/dist/js/InputFields/Checkbox.js +13 -11
- package/dist/js/InputFields/Checkbox.js.map +1 -1
- package/dist/js/Modals/ModalDialog.d.ts +2 -1
- package/dist/js/Modals/ModalDialog.js +14 -5
- package/dist/js/Modals/ModalDialog.js.map +1 -1
- package/dist/js/Modals/ModalNote.d.ts +1 -1
- package/dist/js/Modals/ModalNote.js +1 -1
- package/dist/js/Modals/ModalNote.js.map +1 -1
- package/dist/js/Table/Table.js +166 -209
- package/dist/js/Table/Table.js.map +1 -1
- package/dist/js/Table/TableBody.d.ts +9 -0
- package/dist/js/Table/TableBody.js +167 -0
- package/dist/js/Table/TableBody.js.map +1 -0
- package/dist/js/Table/TableFooter.d.ts +15 -0
- package/dist/js/Table/TableFooter.js +95 -0
- package/dist/js/Table/TableFooter.js.map +1 -0
- package/dist/js/Table/TableHeaders.d.ts +9 -0
- package/dist/js/Table/TableHeaders.js +77 -0
- package/dist/js/Table/TableHeaders.js.map +1 -0
- package/dist/js/Table/TableStyles.d.ts +19 -7
- package/dist/js/Table/TableStyles.js +66 -16
- package/dist/js/Table/TableStyles.js.map +1 -1
- package/dist/js/Table/TableTypes.d.ts +26 -16
- package/dist/js/Table/__tests__/Table.test.js +172 -30
- package/dist/js/Table/__tests__/Table.test.js.map +1 -1
- package/dist/umd/Accordion/ContentAccordion.js +103 -82
- package/dist/umd/Accordion/ContentAccordion.js.map +1 -1
- package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js +26 -26
- package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js.map +1 -1
- package/dist/umd/Button/DualFunctionButton.js +4 -0
- package/dist/umd/Button/DualFunctionButton.js.map +1 -1
- package/dist/umd/Button/Iconbutton.js +0 -1
- package/dist/umd/Button/Iconbutton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownButton.js +5 -2
- package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownContent.js +6 -6
- package/dist/umd/Dropdown/DropdownContent.js.map +1 -1
- package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/umd/HyperLink/HyperLink.js +2 -1
- package/dist/umd/HyperLink/HyperLink.js.map +1 -1
- package/dist/umd/InputFields/Checkbox.js +23 -13
- package/dist/umd/InputFields/Checkbox.js.map +1 -1
- package/dist/umd/Modals/ModalDialog.js +14 -5
- package/dist/umd/Modals/ModalDialog.js.map +1 -1
- package/dist/umd/Modals/ModalNote.js +1 -1
- package/dist/umd/Modals/ModalNote.js.map +1 -1
- package/dist/umd/Table/Table.js +157 -188
- package/dist/umd/Table/Table.js.map +1 -1
- package/dist/umd/Table/TableBody.js +270 -0
- package/dist/umd/Table/TableBody.js.map +1 -0
- package/dist/umd/Table/TableFooter.js +89 -0
- package/dist/umd/Table/TableFooter.js.map +1 -0
- package/dist/umd/Table/TableHeaders.js +91 -0
- package/dist/umd/Table/TableHeaders.js.map +1 -0
- package/dist/umd/Table/TableStyles.js +185 -115
- package/dist/umd/Table/TableStyles.js.map +1 -1
- package/dist/umd/Table/__tests__/Table.test.js +164 -25
- package/dist/umd/Table/__tests__/Table.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", {
|
|
17
17
|
value: true
|
|
18
18
|
});
|
|
19
|
-
exports.ContentAccordion =
|
|
19
|
+
exports.ContentAccordion = undefined;
|
|
20
20
|
|
|
21
21
|
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
22
22
|
|
|
@@ -30,79 +30,86 @@
|
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
box-sizing: border-box;
|
|
37
|
-
min-height: 48px;
|
|
38
|
-
color: ${_styles.COLORS.neutral_600};
|
|
39
|
-
cursor: pointer;
|
|
40
|
-
|
|
41
|
-
&:hover {
|
|
42
|
-
color: ${_styles.COLORS.primary_700};
|
|
43
|
-
background-color: ${_styles.COLORS.primary_20};
|
|
44
|
-
z-index: ${_zIndexes.Z_INDEXES.hover};
|
|
45
|
-
}
|
|
33
|
+
const ContentAccordionWrapper = _styledComponents2.default.div`
|
|
34
|
+
width: 100%;
|
|
35
|
+
position: relative;
|
|
46
36
|
|
|
47
|
-
&:focus {
|
|
48
|
-
box-shadow: 0 4px 12px rgba(46, 127, 161, 0.25), 0 0 8px #2E7FA1;
|
|
49
|
-
background-color: ${_styles.COLORS.white};
|
|
50
|
-
z-index: ${_zIndexes.Z_INDEXES.focus};
|
|
51
|
-
outline: none;
|
|
52
|
-
}
|
|
53
37
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
z-index: ${_zIndexes.Z_INDEXES.active};
|
|
59
|
-
}
|
|
60
|
-
`;
|
|
61
|
-
const ContentAccordionItemHeaderIcon = exports.ContentAccordionItemHeaderIcon = _styledComponents2.default.div`
|
|
62
|
-
width: 24px;
|
|
63
|
-
height: 24px;
|
|
38
|
+
.content-accordion-item {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
border-top: 1px solid ${_styles.COLORS.neutral_100};
|
|
64
42
|
|
|
65
|
-
|
|
66
|
-
width: 24px;
|
|
67
|
-
height: 24px;
|
|
68
|
-
}
|
|
69
|
-
`;
|
|
70
|
-
const ContentAccordionItemHeaderText = exports.ContentAccordionItemHeaderText = _styledComponents2.default.div`
|
|
71
|
-
`;
|
|
72
|
-
const ContentAccordionItemContent = exports.ContentAccordionItemContent = _styledComponents2.default.div`
|
|
73
|
-
display: none;
|
|
74
|
-
flex-direction: column;
|
|
75
|
-
`;
|
|
76
|
-
const ContentAccordionItemContentHeader = exports.ContentAccordionItemContentHeader = _styledComponents2.default.div`
|
|
77
|
-
`;
|
|
78
|
-
const ContentAccordionItemContentBody = exports.ContentAccordionItemContentBody = _styledComponents2.default.div`
|
|
79
|
-
`;
|
|
80
|
-
const ContentAccordionItemContentFooter = exports.ContentAccordionItemContentFooter = _styledComponents2.default.div`
|
|
81
|
-
`;
|
|
82
|
-
const ContentAccordionItem = exports.ContentAccordionItem = _styledComponents2.default.div`
|
|
83
|
-
display: flex;
|
|
84
|
-
flex-direction: column;
|
|
85
|
-
border-top: 1px solid ${_styles.COLORS.neutral_100};
|
|
86
|
-
|
|
87
|
-
&.active {
|
|
88
|
-
${ContentAccordionItemContent} {
|
|
43
|
+
.item-header {
|
|
89
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
|
+
}
|
|
90
79
|
}
|
|
91
|
-
}
|
|
92
80
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
+
}
|
|
98
109
|
}
|
|
99
110
|
}
|
|
100
|
-
`;
|
|
101
|
-
const ContentAccordionWrapper = exports.ContentAccordionWrapper = _styledComponents2.default.div`
|
|
102
|
-
width: 100%;
|
|
103
|
-
position: relative;
|
|
104
111
|
|
|
105
|
-
|
|
112
|
+
.content-accordion-item:last-child {
|
|
106
113
|
border-bottom: 1px solid ${_styles.COLORS.neutral_100};
|
|
107
114
|
}
|
|
108
115
|
|
|
@@ -110,45 +117,46 @@
|
|
|
110
117
|
min-width: 320px;
|
|
111
118
|
max-width: 528px;
|
|
112
119
|
|
|
113
|
-
|
|
120
|
+
.item-header {
|
|
114
121
|
gap: 8px;
|
|
115
122
|
padding: 0 8px;
|
|
116
123
|
${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
117
124
|
}
|
|
118
125
|
|
|
119
|
-
|
|
126
|
+
.item-content {
|
|
120
127
|
padding: 0 8px 16px 40px;
|
|
121
128
|
gap: 8px;
|
|
122
129
|
|
|
123
|
-
|
|
130
|
+
.item-content-header {
|
|
124
131
|
${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Bold, null)}
|
|
125
132
|
}
|
|
126
133
|
|
|
127
|
-
|
|
134
|
+
.item-content-body {
|
|
128
135
|
${(0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
129
136
|
}
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
139
|
|
|
140
|
+
|
|
133
141
|
&.medium {
|
|
134
142
|
min-width: 344px;
|
|
135
143
|
max-width: 584px;
|
|
136
144
|
|
|
137
|
-
|
|
145
|
+
.item-header {
|
|
138
146
|
gap: 12px;
|
|
139
147
|
padding: 0 12px;
|
|
140
148
|
${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
141
149
|
}
|
|
142
150
|
|
|
143
|
-
|
|
151
|
+
.item-content {
|
|
144
152
|
padding: 8px 12px 24px 48px;
|
|
145
153
|
gap: 12px;
|
|
146
154
|
|
|
147
|
-
|
|
155
|
+
.item-content-header {
|
|
148
156
|
${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Bold, null)}
|
|
149
157
|
}
|
|
150
158
|
|
|
151
|
-
|
|
159
|
+
.item-content-body {
|
|
152
160
|
${(0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
153
161
|
}
|
|
154
162
|
|
|
@@ -159,21 +167,21 @@
|
|
|
159
167
|
min-width: 384px;
|
|
160
168
|
max-width: 656px;
|
|
161
169
|
|
|
162
|
-
|
|
170
|
+
.item-header {
|
|
163
171
|
gap: 16px;
|
|
164
172
|
padding: 0 16px;
|
|
165
173
|
${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
166
174
|
}
|
|
167
175
|
|
|
168
|
-
|
|
176
|
+
.item-content {
|
|
169
177
|
padding: 16px 16px 32px 56px;
|
|
170
178
|
gap: 16px;
|
|
171
179
|
|
|
172
|
-
|
|
180
|
+
.item-content-header {
|
|
173
181
|
${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Bold, null)}
|
|
174
182
|
}
|
|
175
183
|
|
|
176
|
-
|
|
184
|
+
.item-content-body {
|
|
177
185
|
${(0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Regular, null)}
|
|
178
186
|
}
|
|
179
187
|
}
|
|
@@ -211,20 +219,33 @@
|
|
|
211
219
|
|
|
212
220
|
const renderItem = item => {
|
|
213
221
|
const isActive = opened.includes(item.key);
|
|
214
|
-
return /*#__PURE__*/_react2.default.createElement(
|
|
222
|
+
return /*#__PURE__*/_react2.default.createElement("div", {
|
|
215
223
|
key: item.key,
|
|
216
224
|
id: `item_${item.key}`,
|
|
217
|
-
className: ''.concat(isActive ? ' active' : '').concat(item.disabled ? ' disabled' : '')
|
|
218
|
-
}, /*#__PURE__*/_react2.default.createElement(
|
|
225
|
+
className: 'content-accordion-item'.concat(isActive ? ' active' : '').concat(item.disabled ? ' disabled' : '')
|
|
226
|
+
}, /*#__PURE__*/_react2.default.createElement("div", {
|
|
227
|
+
className: 'item-header',
|
|
219
228
|
tabIndex: !item.disabled ? 0 : undefined,
|
|
220
229
|
onMouseDown: e => e.preventDefault(),
|
|
221
230
|
onClick: () => !item.disabled && onItemClick(item),
|
|
222
231
|
onKeyPress: event => event.key === 'Enter' && onItemClick(item)
|
|
223
|
-
}, /*#__PURE__*/_react2.default.createElement(
|
|
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)));
|
|
224
245
|
};
|
|
225
246
|
|
|
226
247
|
return /*#__PURE__*/_react2.default.createElement(ContentAccordionWrapper, {
|
|
227
|
-
className: ''.concat(` ${props.size ?? _types.Size.Medium}`)
|
|
248
|
+
className: 'content-accordion'.concat(` ${props.size ?? _types.Size.Medium}`)
|
|
228
249
|
}, props.items.map(item => renderItem(item)));
|
|
229
250
|
};
|
|
230
251
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Accordion/ContentAccordion.tsx"],"names":["ContentAccordionItemHeader","styled","div","COLORS","neutral_600","primary_700","primary_20","Z_INDEXES","hover","white","focus","primary_800","primary_100","active","ContentAccordionItemHeaderIcon","ContentAccordionItemHeaderText","ContentAccordionItemContent","ContentAccordionItemContentHeader","ContentAccordionItemContentBody","ContentAccordionItemContentFooter","ContentAccordionItem","neutral_100","neutral_300","ContentAccordionWrapper","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":"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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\nexport const ContentAccordionItemHeader = styled.div`\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\nexport const ContentAccordionItemHeaderIcon = styled.div`\n width: 24px;\n height: 24px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n`;\n\nexport const ContentAccordionItemHeaderText = styled.div`\n`;\n\nexport const ContentAccordionItemContent = styled.div`\n display: none;\n flex-direction: column;\n`;\n\nexport const ContentAccordionItemContentHeader = styled.div`\n`;\n\nexport const ContentAccordionItemContentBody = styled.div`\n`;\n\nexport const ContentAccordionItemContentFooter = styled.div`\n`;\n\nexport const ContentAccordionItem = styled.div`\n display: flex;\n flex-direction: column;\n border-top: 1px solid ${COLORS.neutral_100};\n\n &.active {\n ${ContentAccordionItemContent} {\n display: flex;\n }\n }\n\n &.disabled {\n ${ContentAccordionItemHeader} {\n color: ${COLORS.neutral_300};\n cursor: not-allowed;\n pointer-events: none;\n }\n }\n`;\n\nexport const ContentAccordionWrapper = styled.div`\n width: 100%;\n position: relative;\n\n ${ContentAccordionItem}:last-child {\n border-bottom: 1px solid ${COLORS.neutral_100};\n }\n\n &.small {\n min-width: 320px;\n max-width: 528px;\n\n ${ContentAccordionItemHeader} {\n gap: 8px;\n padding: 0 8px;\n ${ComponentSStyling(ComponentTextStyle.Regular, null)}\n }\n\n ${ContentAccordionItemContent} {\n padding: 0 8px 16px 40px;\n gap: 8px;\n\n ${ContentAccordionItemContentHeader} {\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\n }\n\n ${ContentAccordionItemContentBody} {\n ${ComponentSStyling(ComponentTextStyle.Regular, null)}\n }\n }\n }\n\n &.medium {\n min-width: 344px;\n max-width: 584px;\n\n ${ContentAccordionItemHeader} {\n gap: 12px;\n padding: 0 12px;\n ${ComponentMStyling(ComponentTextStyle.Regular, null)}\n }\n\n ${ContentAccordionItemContent} {\n padding: 8px 12px 24px 48px;\n gap: 12px;\n\n ${ContentAccordionItemContentHeader} {\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\n }\n\n ${ContentAccordionItemContentBody} {\n ${ComponentMStyling(ComponentTextStyle.Regular, null)}\n }\n\n }\n }\n\n &.large {\n min-width: 384px;\n max-width: 656px;\n\n ${ContentAccordionItemHeader} {\n gap: 16px;\n padding: 0 16px;\n ${ComponentLStyling(ComponentTextStyle.Regular, null)}\n }\n\n ${ContentAccordionItemContent} {\n padding: 16px 16px 32px 56px;\n gap: 16px;\n\n ${ContentAccordionItemContentHeader} {\n ${ComponentLStyling(ComponentTextStyle.Bold, null)}\n }\n\n ${ContentAccordionItemContentBody} {\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 <ContentAccordionItem key={item.key}\n id={`item_${item.key}`}\n className={''.concat(isActive ? ' active' : '').concat(item.disabled ? ' disabled' : '')}>\n <ContentAccordionItemHeader 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 <ContentAccordionItemHeaderIcon>\n {\n props.multi\n ? isActive\n ? <SystemIcons.Minus/>\n : <SystemIcons.Plus/>\n : isActive\n ? <SystemIcons.ChevronDown/>\n : <SystemIcons.ChevronRight/>\n }\n </ContentAccordionItemHeaderIcon>\n <ContentAccordionItemHeaderText>\n {item.title}\n </ContentAccordionItemHeaderText>\n </ContentAccordionItemHeader>\n <ContentAccordionItemContent>\n {\n item.header &&\n <ContentAccordionItemContentHeader>\n {item.header}\n </ContentAccordionItemContentHeader>\n }\n <ContentAccordionItemContentBody>\n {item.body}\n </ContentAccordionItemContentBody>\n {\n item.footer &&\n <ContentAccordionItemContentFooter>\n {item.footer}\n </ContentAccordionItemContentFooter>\n }\n </ContentAccordionItemContent>\n </ContentAccordionItem>\n );\n }\n\n return (\n <ContentAccordionWrapper className={''.concat(` ${props.size ?? Size.Medium}`)}>\n {props.items.map(item => renderItem(item))}\n </ContentAccordionWrapper>\n );\n};\n\nexport default ContentAccordion;\n"],"file":"ContentAccordion.js"}
|
|
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"}
|
|
@@ -73,92 +73,92 @@
|
|
|
73
73
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
74
74
|
items: contentAccordionItemsWithBody
|
|
75
75
|
}));
|
|
76
|
-
expect(wrapper.
|
|
77
|
-
expect(wrapper.
|
|
78
|
-
expect(wrapper.
|
|
79
|
-
expect(wrapper.
|
|
80
|
-
expect(wrapper.
|
|
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
81
|
});
|
|
82
82
|
it('should not render header if not provided', () => {
|
|
83
83
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
84
84
|
items: contentAccordionItemsWithBody
|
|
85
85
|
}));
|
|
86
|
-
expect(wrapper.
|
|
87
|
-
expect(wrapper.
|
|
86
|
+
expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);
|
|
87
|
+
expect(wrapper.baseElement.getElementsByClassName('item-content-header').length).toBe(0);
|
|
88
88
|
});
|
|
89
89
|
it('should not render footer if not provided', () => {
|
|
90
90
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
91
91
|
items: contentAccordionItemsWithBody
|
|
92
92
|
}));
|
|
93
|
-
expect(wrapper.
|
|
94
|
-
expect(wrapper.
|
|
93
|
+
expect(wrapper.baseElement.getElementsByClassName('item-content-body').length).toBe(4);
|
|
94
|
+
expect(wrapper.baseElement.getElementsByClassName('item-content-footer').length).toBe(0);
|
|
95
95
|
});
|
|
96
96
|
it('should render body, header, and footer if all are provided', () => {
|
|
97
97
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
98
98
|
items: contentAccordionItemsWithBodyAndHeaderAndFooter
|
|
99
99
|
}));
|
|
100
|
-
expect(wrapper.
|
|
101
|
-
expect(wrapper.
|
|
102
|
-
expect(wrapper.
|
|
103
|
-
expect(wrapper.
|
|
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
104
|
});
|
|
105
105
|
it('should set correct size class name for small accordion', () => {
|
|
106
106
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
107
107
|
items: contentAccordionItemsWithBodyAndHeaderAndFooter,
|
|
108
108
|
size: _types.Size.Small
|
|
109
109
|
}));
|
|
110
|
-
expect(wrapper.
|
|
110
|
+
expect(wrapper.baseElement.getElementsByClassName('content-accordion small').length).toBe(1);
|
|
111
111
|
});
|
|
112
112
|
it('should set correct size class name for medium accordion', () => {
|
|
113
113
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
114
114
|
items: contentAccordionItemsWithBodyAndHeaderAndFooter,
|
|
115
115
|
size: _types.Size.Medium
|
|
116
116
|
}));
|
|
117
|
-
expect(wrapper.
|
|
117
|
+
expect(wrapper.baseElement.getElementsByClassName('content-accordion medium').length).toBe(1);
|
|
118
118
|
});
|
|
119
119
|
it('should set correct size class name for large accordion', () => {
|
|
120
120
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
121
121
|
items: contentAccordionItemsWithBodyAndHeaderAndFooter,
|
|
122
122
|
size: _types.Size.Large
|
|
123
123
|
}));
|
|
124
|
-
expect(wrapper.
|
|
124
|
+
expect(wrapper.baseElement.getElementsByClassName('content-accordion large').length).toBe(1);
|
|
125
125
|
});
|
|
126
126
|
it('should change active state when item header is clicked', () => {
|
|
127
127
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
128
128
|
items: contentAccordionItemsWithBody,
|
|
129
129
|
multi: false
|
|
130
130
|
}));
|
|
131
|
-
const itemHeader = wrapper.
|
|
131
|
+
const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];
|
|
132
132
|
|
|
133
133
|
_react3.fireEvent.click(itemHeader);
|
|
134
134
|
|
|
135
|
-
expect(wrapper.
|
|
136
|
-
expect(wrapper.
|
|
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
137
|
});
|
|
138
138
|
it('should not change active state when disabled item header is clicked', () => {
|
|
139
139
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
140
140
|
items: contentAccordionItemsWithBody,
|
|
141
141
|
multi: false
|
|
142
142
|
}));
|
|
143
|
-
const itemHeader = wrapper.
|
|
143
|
+
const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[2];
|
|
144
144
|
|
|
145
145
|
_react3.fireEvent.click(itemHeader);
|
|
146
146
|
|
|
147
|
-
expect(wrapper.
|
|
148
|
-
expect(wrapper.
|
|
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
149
|
});
|
|
150
150
|
it('should append active items if multi property is true', () => {
|
|
151
151
|
const wrapper = (0, _react3.render)( /*#__PURE__*/_react2.default.createElement(_ContentAccordion2.default, {
|
|
152
152
|
items: contentAccordionItemsWithBody,
|
|
153
153
|
multi: true
|
|
154
154
|
}));
|
|
155
|
-
const itemHeader = wrapper.
|
|
155
|
+
const itemHeader = wrapper.baseElement.getElementsByClassName('item-header')[3];
|
|
156
156
|
|
|
157
157
|
_react3.fireEvent.click(itemHeader);
|
|
158
158
|
|
|
159
|
-
expect(wrapper.
|
|
160
|
-
expect(wrapper.
|
|
161
|
-
expect(wrapper.
|
|
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
162
|
});
|
|
163
163
|
});
|
|
164
164
|
});
|
|
@@ -1 +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","ContentAccordionItem","ContentAccordionItemContentBody","ContentAccordionItemContentHeader","ContentAccordionItemContentFooter","Size","Small","ContentAccordionWrapper","Medium","Large","itemHeader","ContentAccordionItemHeader","fireEvent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AASAA,EAAAA,QAAQ,CAAA,kBAAA,EAAqB,MAAM;AACjC,UAAMC,6BAA6B,GAAG,CACpC;AACEC,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAAE;AAHR,KADoC,EAMpC;AACEF,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEC,MAAAA,MAAM,EAAE;AAJV,KANoC,EAYpC;AACEH,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEE,MAAAA,QAAQ,EAAE;AAJZ,KAZoC,EAkBpC;AACEJ,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAAE;AAHR,KAlBoC,CAAtC;AAyBA,UAAMG,+CAA+C,GAAG,CACtD;AACEL,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KADsD,EAQtD;AACEP,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KARsD,EAetD;AACEP,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EALV,IAKU,CALV;AAMEH,MAAAA,QAAQ,EAAE;AANZ,KAfsD,EAuBtD;AACEJ,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KAvBsD,CAAxD;AAgCAC,IAAAA,EAAE,CAAA,sCAAA,EAAyC,MAAM;AAC/C,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,WAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,WAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,0CAAA,EAA6C,MAAM;AACnD,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEI,iDAAtCJ,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEK,mDAAtCL,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAJFH,KAAE,CAAFA;AAOAA,IAAAA,EAAE,CAAA,0CAAA,EAA6C,MAAM;AACnD,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEI,iDAAtCJ,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEM,mDAAtCN,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAJFH,KAAE,CAAFA;AAOAA,IAAAA,EAAE,CAAA,4DAAA,EAA+D,MAAM;AACrE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEL;AAAzB,OAAA,CAAPK,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEI,iDAAtCJ,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEK,mDAAtCL,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEM,mDAAtCN,EAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AANFH,KAAE,CAAFA;AASAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEM,YAAKC;AAD7B,OAAA,CAAPP,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAES,yCAAtCT,QAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,yDAAA,EAA4D,MAAM;AAClE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEM,YAAKG;AAD7B,OAAA,CAAPT,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAES,yCAAtCT,SAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEM,YAAKI;AAD7B,OAAA,CAAPV,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAES,yCAAtCT,QAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMW,UAAU,GAAGZ,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEa,4CAAtCb,EAAAA,EAAnB,CAAmBA,CAAnB;;AAEAc,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAZ,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,qEAAA,EAAwE,MAAM;AAC9E,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMW,UAAU,GAAGZ,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEa,4CAAtCb,EAAAA,EAAnB,CAAmBA,CAAnB;;AAEAc,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAZ,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,sDAAA,EAAyD,MAAM;AAC/D,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMW,UAAU,GAAGZ,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEa,4CAAtCb,EAAAA,EAAnB,CAAmBA,CAAnB;;AAEAc,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAZ,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,SAAAA,CAAAA,gBAAAA,CAAoC,GAAEG,sCAAtCH,SAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AARFH,KAAE,CAAFA;AAjIFV,GAAQ,CAARA","sourcesContent":["import React from 'react';\nimport ContentAccordion, {\n ContentAccordionItem,\n ContentAccordionItemContentBody, ContentAccordionItemContentFooter,\n ContentAccordionItemContentHeader, ContentAccordionItemHeader, ContentAccordionWrapper\n} 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.container.querySelectorAll(`${ContentAccordionItem}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.disabled`).length).toBe(1);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.disabled`)[0].id).toBe('item_3');\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.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.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentHeader}`).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.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentFooter}`).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.container.querySelectorAll(`${ContentAccordionItem}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentHeader}`).length).toBe(4);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentFooter}`).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.container.querySelectorAll(`${ContentAccordionWrapper}.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.container.querySelectorAll(`${ContentAccordionWrapper}.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.container.querySelectorAll(`${ContentAccordionWrapper}.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.container.querySelectorAll(`${ContentAccordionItemHeader}`)[3];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.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.container.querySelectorAll(`${ContentAccordionItemHeader}`)[2];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.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.container.querySelectorAll(`${ContentAccordionItemHeader}`)[3];\n\n fireEvent.click(itemHeader);\n\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(2);\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[0].id).toBe('item_2');\n expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[1].id).toBe('item_4');\n });\n\n});\n"],"file":"ContetnAccordion.test.js"}
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,EAAAA,QAAQ,CAAA,kBAAA,EAAqB,MAAM;AACjC,UAAMC,6BAA6B,GAAG,CACpC;AACEC,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAAE;AAHR,KADoC,EAMpC;AACEF,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEC,MAAAA,MAAM,EAAE;AAJV,KANoC,EAYpC;AACEH,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEE,MAAAA,QAAQ,EAAE;AAJZ,KAZoC,EAkBpC;AACEJ,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAAE;AAHR,KAlBoC,CAAtC;AAyBA,UAAMG,+CAA+C,GAAG,CACtD;AACEL,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KADsD,EAQtD;AACEP,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KARsD,EAetD;AACEP,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EALV,IAKU,CALV;AAMEH,MAAAA,QAAQ,EAAE;AANZ,KAfsD,EAuBtD;AACEJ,MAAAA,GAAG,EADL,GAAA;AAEEC,MAAAA,KAAK,EAFP,QAAA;AAGEC,MAAAA,IAAI,EAHN,6HAAA;AAIEI,MAAAA,MAAM,EAJR,UAAA;AAKEC,MAAAA,MAAM,EAAA,aAAE,gBAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AALV,KAvBsD,CAAxD;AAgCAC,IAAAA,EAAE,CAAA,sCAAA,EAAyC,MAAM;AAC/C,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,wBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,iCAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,iCAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,0CAAA,EAA6C,MAAM;AACnD,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,mBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,qBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAJFH,KAAE,CAAFA;AAOAA,IAAAA,EAAE,CAAA,0CAAA,EAA6C,MAAM;AACnD,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEX;AAAzB,OAAA,CAAPW,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,mBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,qBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAJFH,KAAE,CAAFA;AAOAA,IAAAA,EAAE,CAAA,4DAAA,EAA+D,MAAM;AACrE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAEL;AAAzB,OAAA,CAAPK,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,wBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,mBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,qBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,qBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AANFH,KAAE,CAAFA;AASAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEE,YAAKC;AAD7B,OAAA,CAAPH,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,yBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,yDAAA,EAA4D,MAAM;AAClE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEE,YAAKE;AAD7B,OAAA,CAAPJ,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,0BAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,+CAAA;AACkB,QAAA,IAAI,EAAEE,YAAKG;AAD7B,OAAA,CAAPL,CAAhB;AAEAC,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,yBAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AAHFH,KAAE,CAAFA;AAMAA,IAAAA,EAAE,CAAA,wDAAA,EAA2D,MAAM;AACjE,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMM,UAAU,GAAGP,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,aAAAA,EAAnB,CAAmBA,CAAnB;;AAEAQ,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAN,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,qEAAA,EAAwE,MAAM;AAC9E,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMM,UAAU,GAAGP,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,aAAAA,EAAnB,CAAmBA,CAAnB;;AAEAQ,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAN,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AAPFH,KAAE,CAAFA;AAUAA,IAAAA,EAAE,CAAA,sDAAA,EAAyD,MAAM;AAC/D,YAAMC,OAAO,GAAGC,qBAAM,aAAC,gBAAA,aAAA,CAAA,0BAAA,EAAA;AAAkB,QAAA,KAAK,EAAvB,6BAAA;AAAwD,QAAA,KAAK,EAAE;AAA/D,OAAA,CAAPA,CAAhB;AACA,YAAMM,UAAU,GAAGP,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,aAAAA,EAAnB,CAAmBA,CAAnB;;AAEAQ,wBAAAA,KAAAA,CAAAA,UAAAA;;AAEAN,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAPE,MAAM,CAANA,CAAAA,IAAAA,CAAAA,CAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AACAA,MAAAA,MAAM,CAACF,OAAO,CAAPA,WAAAA,CAAAA,sBAAAA,CAAAA,+BAAAA,EAAAA,CAAAA,EAAPE,EAAM,CAANA,CAAAA,IAAAA,CAAAA,QAAAA;AARFH,KAAE,CAAFA;AAjIFV,GAAQ,CAARA","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"}
|
|
@@ -218,6 +218,10 @@
|
|
|
218
218
|
})), /*#__PURE__*/React.createElement(_Button2.default, _extends({
|
|
219
219
|
variant: variant
|
|
220
220
|
}, renderProps, {
|
|
221
|
+
onKeyPress: e => {
|
|
222
|
+
if (isOpen) return;
|
|
223
|
+
if (e.key == 'Enter' || e.key == ' ') setFocused(0);
|
|
224
|
+
},
|
|
221
225
|
disabled: disabled,
|
|
222
226
|
type: type,
|
|
223
227
|
size: size,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Button/DualFunctionButton.tsx"],"names":["ButtonsContainer","styled","div","props","Size","dropdownMenuValues","setDropdownMenuValues","DualFunctionButton","children","variant","type","size","width","dropdownCustomizationProps","onClick","renderProps","React","dropdownContainerRef","id","setIsOpen","isOpen"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAAA,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,QAAMA,gBAAgB,GAAGC,2BAAOC,GAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAgBC,KAAK,IAAIA,KAAK,CAALA,IAAAA,IAAcC,YAAdD,KAAAA,GAAAA,UAAAA,GAAwCA,KAAK,CAALA,IAAAA,IAAcC,YAAdD,MAAAA,GAAAA,UAAAA,GAAyC,UAAY;AACtH;AAXA,CAAA;;AAwBA,QAAMI,kBAA4D,GAAG,IAAA,IAa/D;AAAA,QAbgE;AACpEC,MAAAA,QAAQ,GAD4D,gBAAA;AAEpEC,MAAAA,OAAO,GAF6D,SAAA;AAGpEC,MAAAA,IAAI,GAHgE,QAAA;AAIpEC,MAAAA,IAAI,GAAGP,YAJ6D,MAAA;AAKpEQ,MAAAA,KAAK,GAL+D,MAAA;AAAA,MAAA,MAAA;AAAA,MAAA,QAAA;AAAA,MAAA,EAAA;AAAA,MAAA,kBAAA;AAAA,MAAA,qBAAA;AAWpEC,MAAAA;AAXoE,QAahE,IAAA;AAAA,QADDV,KACC,GAAA,wBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CACJ;;;AACA,UAAM;AAAA,MAAA,OAAA;AAAA,MAAA,IAAA;AAAiBW,MAAAA;AAAjB,QAAN,KAAA;AAAA,UAAmCC,WAAnC,GAAA,wBAAA,CAAA,KAAA,EAAA,UAAA,CAAA;;AACA,UAAM,CAAA,MAAA,EAAA,SAAA,IAAsBC,KAAK,CAALA,QAAAA,CAA5B,KAA4BA,CAA5B;AACA,UAAM,CAAA,OAAA,EAAA,UAAA,IAAwBA,KAAK,CAALA,QAAAA,CAA9B,IAA8BA,CAA9B;AACA,UAAMC,oBAAoB,GAAGD,KAAK,CAALA,MAAAA,CAA7B,IAA6BA,CAA7B;AACA,UAAM,CAAA,cAAA,EAAA,iBAAA,IAAsCA,KAAK,CAALA,QAAAA,CAA5C,EAA4CA,CAA5C;
|
|
1
|
+
{"version":3,"sources":["../../../src/Button/DualFunctionButton.tsx"],"names":["ButtonsContainer","styled","div","props","Size","dropdownMenuValues","setDropdownMenuValues","DualFunctionButton","children","variant","type","size","width","dropdownCustomizationProps","onClick","renderProps","React","dropdownContainerRef","id","e","setFocused","setIsOpen","isOpen"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { LoadingIndicator } from '../LoadingIndicator';\nimport Button, { ButtonProps } from './Button'\nimport { ArrowDropDown, ArrowDropUp } from '../icons/systemicons/SystemIcons';\nimport { Dropdown } from '../Dropdown/CommonStyling';\nimport { Size } from '../types';\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\nimport styled from 'styled-components';\n\nconst ButtonsContainer = styled.div<{ size?: Size }>`\n display: flex;\n align-items: center;\n\n button:first-child {\n margin-right: 2px;\n }\n\n div.button-content {\n gap: 0px;\n padding: ${ props => props.size == Size.Large ? '4px 18px' : props.size == Size.Medium ? '4px 14px' : '4px 10px' };\n }\n`;\n\nexport interface ButtonOption {\n label: string;\n}\n\nexport interface DualButtonProps extends ButtonProps {\n dropdownCustomizationProps: DropdownCustomizationProps;\n dropdownMenuValues?: string[];\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\n}\n\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\n children = 'Primary Button',\n variant = 'primary',\n type = 'button',\n size = Size.Medium,\n width = 'auto',\n testId,\n disabled,\n id,\n dropdownMenuValues,\n setDropdownMenuValues,\n dropdownCustomizationProps,\n ...props\n}) => {\n // Let's filter out properties that we don't need to render.\n const { loading, icon, onClick, ...renderProps } = props;\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\n const [focused, setFocused] = React.useState<number | null>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n\n return <ButtonsContainer ref={dropdownContainerRef} size={size}>\n <Dropdown isButton={true} locked={false} disabled={false} margin=''>\n <Button\n {...renderProps}\n onClick={onClick}\n disabled={disabled}\n type={type}\n loading={loading}\n icon={icon}\n size={size}\n width={width}\n variant={variant}\n flatEdge=\"right\">\n {children}\n </Button>\n <DropdownContent\n customizationProps={dropdownCustomizationProps}\n filter=''\n selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : (dropdownMenuValues ?? selectedValues)}\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\n isButton={true}\n setIsOpen={setIsOpen}\n focused={focused}\n setFocused={setFocused}\n hideOnClickOutside={true}\n size={size}\n isOpen={isOpen}\n id={id ?? 'dropdownId'}\n messageOnNoResults=''\n alignLeft={true} />\n </Dropdown>\n <Button variant={variant}\n {...renderProps}\n onKeyPress={(e:any) => {\n if(isOpen)\n return;\n\n if (e.key == 'Enter' || e.key == ' ')\n setFocused(0); \n }}\n\n disabled={disabled}\n type={type}\n size={size}\n minWidth={'unset'}\n onClick={() => setIsOpen(!isOpen)}\n icon={isOpen ? <ArrowDropUp size=\"16px\" /> : <ArrowDropDown size=\"16px\"/>}\n flatEdge=\"left\" />\n </ButtonsContainer>;\n };\n\n\nexport default DualFunctionButton;\n"],"file":"DualFunctionButton.js"}
|