@hitachivantara/uikit-react-core 5.24.4 → 5.24.6
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/cjs/components/BaseDropdown/BaseDropdown.cjs +5 -0
- package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs +1 -0
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/Focus/Focus.cjs +25 -39
- package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
- package/dist/cjs/components/Focus/Focus.styles.cjs +43 -40
- package/dist/cjs/components/Focus/Focus.styles.cjs.map +1 -1
- package/dist/cjs/components/List/List.cjs +38 -28
- package/dist/cjs/components/List/List.cjs.map +1 -1
- package/dist/cjs/components/List/List.styles.cjs +38 -149
- package/dist/cjs/components/List/List.styles.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.cjs +15 -11
- package/dist/cjs/components/MultiButton/MultiButton.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +109 -151
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
- package/dist/cjs/components/SimpleGrid/SimpleGrid.cjs +11 -3
- package/dist/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
- package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs +29 -28
- package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +45 -29
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.styles.cjs +66 -150
- package/dist/cjs/components/Slider/Slider.styles.cjs.map +1 -1
- package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs +13 -9
- package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs.map +1 -1
- package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs +16 -51
- package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs +1 -1
- package/dist/cjs/index.cjs +8 -8
- package/dist/esm/components/BaseDropdown/BaseDropdown.js +5 -0
- package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +1 -0
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Focus/Focus.js +27 -41
- package/dist/esm/components/Focus/Focus.js.map +1 -1
- package/dist/esm/components/Focus/Focus.styles.js +43 -38
- package/dist/esm/components/Focus/Focus.styles.js.map +1 -1
- package/dist/esm/components/List/List.js +39 -28
- package/dist/esm/components/List/List.js.map +1 -1
- package/dist/esm/components/List/List.styles.js +38 -147
- package/dist/esm/components/List/List.styles.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.js +18 -13
- package/dist/esm/components/MultiButton/MultiButton.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.styles.js +109 -149
- package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/components/SimpleGrid/SimpleGrid.js +12 -4
- package/dist/esm/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js +29 -26
- package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +45 -31
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Slider/Slider.styles.js +67 -147
- package/dist/esm/components/Slider/Slider.styles.js.map +1 -1
- package/dist/esm/components/Slider/SliderInput/SliderInput.js +16 -11
- package/dist/esm/components/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js +16 -49
- package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js +1 -1
- package/dist/esm/index.js +238 -238
- package/dist/types/index.d.ts +438 -408
- package/package.json +5 -5
- package/dist/cjs/components/Focus/focusClasses.cjs +0 -8
- package/dist/cjs/components/Focus/focusClasses.cjs.map +0 -1
- package/dist/cjs/components/List/listClasses.cjs +0 -8
- package/dist/cjs/components/List/listClasses.cjs.map +0 -1
- package/dist/cjs/components/MultiButton/multiButtonClasses.cjs +0 -8
- package/dist/cjs/components/MultiButton/multiButtonClasses.cjs.map +0 -1
- package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs +0 -8
- package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs.map +0 -1
- package/dist/cjs/components/Slider/sliderClasses.cjs +0 -8
- package/dist/cjs/components/Slider/sliderClasses.cjs.map +0 -1
- package/dist/esm/components/Focus/focusClasses.js +0 -8
- package/dist/esm/components/Focus/focusClasses.js.map +0 -1
- package/dist/esm/components/List/listClasses.js +0 -8
- package/dist/esm/components/List/listClasses.js.map +0 -1
- package/dist/esm/components/MultiButton/multiButtonClasses.js +0 -8
- package/dist/esm/components/MultiButton/multiButtonClasses.js.map +0 -1
- package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js +0 -8
- package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js.map +0 -1
- package/dist/esm/components/Slider/sliderClasses.js +0 -8
- package/dist/esm/components/Slider/sliderClasses.js.map +0 -1
|
@@ -1,45 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const _styled = require("@emotion/styled/base");
|
|
4
3
|
const focusUtils = require("../../utils/focusUtils.cjs");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
width: "98%",
|
|
31
|
-
height: "98%",
|
|
32
|
-
position: "absolute",
|
|
33
|
-
zIndex: "1",
|
|
34
|
-
...focusUtils.outlineStyles,
|
|
35
|
-
"@media (-webkit-min-device-pixel-ratio:0)": {
|
|
36
|
-
...focusUtils.outlineStyles
|
|
4
|
+
const classes = require("../../utils/classes.cjs");
|
|
5
|
+
const {
|
|
6
|
+
staticClasses,
|
|
7
|
+
useClasses
|
|
8
|
+
} = classes.createClasses("HvFocus", {
|
|
9
|
+
root: {},
|
|
10
|
+
selected: {},
|
|
11
|
+
disabled: {},
|
|
12
|
+
focusDisabled: {
|
|
13
|
+
outline: "none",
|
|
14
|
+
"& *:focus": {
|
|
15
|
+
outline: "none"
|
|
16
|
+
},
|
|
17
|
+
"& *": {
|
|
18
|
+
outline: "none !important"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
focused: {
|
|
22
|
+
...focusUtils.outlineStyles,
|
|
23
|
+
"@media (-webkit-min-device-pixel-ratio:0)": {
|
|
24
|
+
...focusUtils.outlineStyles
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
externalReference: {
|
|
28
|
+
position: "relative"
|
|
37
29
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
falseFocus: {
|
|
31
|
+
width: "98%",
|
|
32
|
+
height: "98%",
|
|
33
|
+
position: "absolute",
|
|
34
|
+
zIndex: "1",
|
|
35
|
+
...focusUtils.outlineStyles,
|
|
36
|
+
"@media (-webkit-min-device-pixel-ratio:0)": {
|
|
37
|
+
...focusUtils.outlineStyles
|
|
38
|
+
},
|
|
39
|
+
top: 0,
|
|
40
|
+
left: "0.5%",
|
|
41
|
+
backgroundColor: "transparent",
|
|
42
|
+
pointerEvents: "none"
|
|
43
|
+
},
|
|
44
|
+
focus: {}
|
|
45
|
+
});
|
|
46
|
+
exports.staticClasses = staticClasses;
|
|
47
|
+
exports.useClasses = useClasses;
|
|
45
48
|
//# sourceMappingURL=Focus.styles.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Focus.styles.cjs","sources":["../../../../src/components/Focus/Focus.styles.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Focus.styles.cjs","sources":["../../../../src/components/Focus/Focus.styles.tsx"],"sourcesContent":["import { outlineStyles } from \"@core/utils/focusUtils\";\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvFocus\", {\n root: {},\n selected: {},\n disabled: {},\n focusDisabled: {\n outline: \"none\",\n \"& *:focus\": {\n outline: \"none\",\n },\n \"& *\": {\n outline: \"none !important\",\n },\n },\n focused: {\n ...outlineStyles,\n \"@media (-webkit-min-device-pixel-ratio:0)\": {\n ...outlineStyles,\n },\n },\n externalReference: {\n position: \"relative\",\n },\n falseFocus: {\n width: \"98%\",\n height: \"98%\",\n position: \"absolute\",\n zIndex: \"1\",\n ...outlineStyles,\n \"@media (-webkit-min-device-pixel-ratio:0)\": {\n ...outlineStyles,\n },\n top: 0,\n left: \"0.5%\",\n backgroundColor: \"transparent\",\n pointerEvents: \"none\",\n },\n focus: {},\n});\n"],"names":["staticClasses","useClasses","createClasses","root","selected","disabled","focusDisabled","outline","focused","outlineStyles","externalReference","position","falseFocus","width","height","zIndex","top","left","backgroundColor","pointerEvents","focus"],"mappings":";;;;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,WAAW;AAAA,EACpEC,MAAM,CAAC;AAAA,EACPC,UAAU,CAAC;AAAA,EACXC,UAAU,CAAC;AAAA,EACXC,eAAe;AAAA,IACbC,SAAS;AAAA,IACT,aAAa;AAAA,MACXA,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACLA,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACAC,SAAS;AAAA,IACP,GAAGC,WAAAA;AAAAA,IACH,6CAA6C;AAAA,MAC3C,GAAGA,WAAAA;AAAAA,IACL;AAAA,EACF;AAAA,EACAC,mBAAmB;AAAA,IACjBC,UAAU;AAAA,EACZ;AAAA,EACAC,YAAY;AAAA,IACVC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRH,UAAU;AAAA,IACVI,QAAQ;AAAA,IACR,GAAGN,WAAAA;AAAAA,IACH,6CAA6C;AAAA,MAC3C,GAAGA,WAAAA;AAAAA,IACL;AAAA,IACAO,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,iBAAiB;AAAA,IACjBC,eAAe;AAAA,EACjB;AAAA,EACAC,OAAO,CAAC;AACV,CAAC;;;"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
|
+
const reactWindow = require("react-window");
|
|
5
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
4
6
|
const useDefaultProps = require("../../hooks/useDefaultProps.cjs");
|
|
5
|
-
const clsx = require("clsx");
|
|
6
7
|
const setId = require("../../utils/setId.cjs");
|
|
7
8
|
const wrapperTooltip = require("../../utils/wrapperTooltip.cjs");
|
|
8
9
|
const List_styles = require("./List.styles.cjs");
|
|
9
|
-
const listClasses = require("./listClasses.cjs");
|
|
10
10
|
const useSelectableList = require("./useSelectableList.cjs");
|
|
11
11
|
const utils = require("./utils.cjs");
|
|
12
12
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
13
|
+
const Radio = require("../Radio/Radio.cjs");
|
|
14
|
+
const Link = require("../Link/Link.cjs");
|
|
13
15
|
const ListContainer = require("../ListContainer/ListContainer.cjs");
|
|
14
16
|
const Typography = require("../Typography/Typography.cjs");
|
|
17
|
+
const CheckBox = require("../CheckBox/CheckBox.cjs");
|
|
18
|
+
const ListItem = require("../ListContainer/ListItem/ListItem.cjs");
|
|
15
19
|
const DEFAULT_LABELS = {
|
|
16
20
|
selectAll: "Select All",
|
|
17
21
|
selectionConjunction: "/"
|
|
@@ -19,7 +23,7 @@ const DEFAULT_LABELS = {
|
|
|
19
23
|
const HvList = (props) => {
|
|
20
24
|
const {
|
|
21
25
|
id,
|
|
22
|
-
classes,
|
|
26
|
+
classes: classesProp,
|
|
23
27
|
className,
|
|
24
28
|
multiSelect = false,
|
|
25
29
|
hasTooltips = false,
|
|
@@ -36,6 +40,10 @@ const HvList = (props) => {
|
|
|
36
40
|
virtualized = false,
|
|
37
41
|
...others
|
|
38
42
|
} = useDefaultProps.useDefaultProps("HvList", props);
|
|
43
|
+
const {
|
|
44
|
+
classes,
|
|
45
|
+
cx
|
|
46
|
+
} = List_styles.useClasses(classesProp);
|
|
39
47
|
const [list, setList, selection] = useSelectableList.useSelectableList(valuesProp);
|
|
40
48
|
const listRef = React.useRef(null);
|
|
41
49
|
React.useEffect(() => {
|
|
@@ -99,37 +107,37 @@ const HvList = (props) => {
|
|
|
99
107
|
}), ` ${selectionConjunction} `, list.length]
|
|
100
108
|
})
|
|
101
109
|
});
|
|
102
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CheckBox.HvCheckBox, {
|
|
103
111
|
id: setId.setId(id, "select-all"),
|
|
104
112
|
label: selectionLabel,
|
|
105
113
|
onChange: handleSelectAll,
|
|
106
|
-
className:
|
|
114
|
+
className: classes.selectAllSelector,
|
|
107
115
|
indeterminate: anySelected2 && !allSelected,
|
|
108
116
|
checked: allSelected
|
|
109
117
|
});
|
|
110
118
|
};
|
|
111
119
|
const renderItemText = (item) => {
|
|
112
120
|
const ItemText = wrapperTooltip.wrapperTooltip(hasTooltips, item.label, item.label);
|
|
113
|
-
return !multiSelect && item.path ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
return !multiSelect && item.path ? /* @__PURE__ */ jsxRuntime.jsx(Link.HvLink, {
|
|
114
122
|
route: item.path,
|
|
115
123
|
classes: {
|
|
116
|
-
a:
|
|
124
|
+
a: classes.link
|
|
117
125
|
},
|
|
118
126
|
children: /* @__PURE__ */ jsxRuntime.jsx(ItemText, {})
|
|
119
127
|
}, item.label) : /* @__PURE__ */ jsxRuntime.jsx(ItemText, {});
|
|
120
128
|
};
|
|
121
129
|
const renderMultiSelectItem = (item, itemId) => {
|
|
122
130
|
if (useSelector) {
|
|
123
|
-
const Selection = wrapperTooltip.wrapperTooltip(hasTooltips, /* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
+
const Selection = wrapperTooltip.wrapperTooltip(hasTooltips, /* @__PURE__ */ jsxRuntime.jsx(CheckBox.HvCheckBox, {
|
|
124
132
|
id: setId.setId(itemId, "selector"),
|
|
125
133
|
label: item.label,
|
|
126
134
|
checked: item.selected,
|
|
127
135
|
disabled: item.disabled,
|
|
128
136
|
onChange: (evt) => handleSelect(evt, item),
|
|
129
137
|
classes: {
|
|
130
|
-
root:
|
|
131
|
-
container:
|
|
132
|
-
label:
|
|
138
|
+
root: classes.selectorRoot,
|
|
139
|
+
container: classes.selectorContainer,
|
|
140
|
+
label: classes.truncate
|
|
133
141
|
}
|
|
134
142
|
}), item.label);
|
|
135
143
|
return /* @__PURE__ */ jsxRuntime.jsx(Selection, {});
|
|
@@ -138,15 +146,15 @@ const HvList = (props) => {
|
|
|
138
146
|
};
|
|
139
147
|
const renderSingleSelectItem = (item, itemId) => {
|
|
140
148
|
if (useSelector) {
|
|
141
|
-
const Selection = wrapperTooltip.wrapperTooltip(hasTooltips, /* @__PURE__ */ jsxRuntime.jsx(
|
|
149
|
+
const Selection = wrapperTooltip.wrapperTooltip(hasTooltips, /* @__PURE__ */ jsxRuntime.jsx(Radio.HvRadio, {
|
|
142
150
|
id: setId.setId(itemId, "selector"),
|
|
143
151
|
label: item.label,
|
|
144
152
|
checked: item.selected,
|
|
145
153
|
disabled: item.disabled,
|
|
146
154
|
classes: {
|
|
147
|
-
root:
|
|
148
|
-
container:
|
|
149
|
-
label:
|
|
155
|
+
root: classes.selectorRoot,
|
|
156
|
+
container: classes.selectorContainer,
|
|
157
|
+
label: classes.truncate
|
|
150
158
|
}
|
|
151
159
|
}), item.label);
|
|
152
160
|
return /* @__PURE__ */ jsxRuntime.jsx(Selection, {});
|
|
@@ -160,22 +168,23 @@ const HvList = (props) => {
|
|
|
160
168
|
if (!useSelector && item.icon) {
|
|
161
169
|
startAdornment = renderLeftIcon(item);
|
|
162
170
|
}
|
|
163
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
171
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ListItem.HvListItem, {
|
|
164
172
|
id: itemId,
|
|
165
173
|
role: selectable ? "option" : "menuitem",
|
|
166
174
|
disabled: item.disabled || void 0,
|
|
167
|
-
className:
|
|
175
|
+
className: classes.item,
|
|
168
176
|
classes: {
|
|
169
|
-
selected:
|
|
177
|
+
selected: cx({
|
|
178
|
+
[classes.itemSelector]: useSelector || multiSelect
|
|
179
|
+
})
|
|
170
180
|
},
|
|
171
181
|
selected: multiSelect || selected ? selected : void 0,
|
|
172
182
|
onClick: (evt) => handleSelect(evt, item),
|
|
173
183
|
startAdornment,
|
|
174
|
-
endAdornment: item.showNavIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
175
|
-
className:
|
|
184
|
+
endAdornment: item.showNavIcon && /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropRightXS, {
|
|
185
|
+
className: classes.box,
|
|
176
186
|
iconSize: "XS"
|
|
177
187
|
}),
|
|
178
|
-
$applySelected: useSelector || multiSelect,
|
|
179
188
|
...otherProps,
|
|
180
189
|
children: multiSelect ? renderMultiSelectItem(item, itemId) : renderSingleSelectItem(item, itemId)
|
|
181
190
|
}, i);
|
|
@@ -188,7 +197,7 @@ const HvList = (props) => {
|
|
|
188
197
|
listRef.current.scrollToItem(selectedItemIndex);
|
|
189
198
|
}
|
|
190
199
|
}, [listRef, selectedItemIndex]);
|
|
191
|
-
const ListItem = ({
|
|
200
|
+
const ListItem$1 = ({
|
|
192
201
|
index,
|
|
193
202
|
style
|
|
194
203
|
}) => {
|
|
@@ -212,7 +221,7 @@ const HvList = (props) => {
|
|
|
212
221
|
...rest
|
|
213
222
|
}, ref) => /* @__PURE__ */ jsxRuntime.jsx(ListContainer.HvListContainer, {
|
|
214
223
|
id,
|
|
215
|
-
className:
|
|
224
|
+
className: cx(classes.root, className),
|
|
216
225
|
role: selectable ? "listbox" : "menu",
|
|
217
226
|
interactive: true,
|
|
218
227
|
condensed,
|
|
@@ -221,11 +230,11 @@ const HvList = (props) => {
|
|
|
221
230
|
ref,
|
|
222
231
|
...rest
|
|
223
232
|
}));
|
|
224
|
-
}, [id, useSelector, className, classes, condensed, selectable, multiSelect]);
|
|
233
|
+
}, [cx, id, useSelector, className, classes, condensed, selectable, multiSelect]);
|
|
225
234
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
226
235
|
children: [multiSelect && useSelector && showSelectAll && renderSelectAll(), filteredList.length > 0 && !virtualized && /* @__PURE__ */ jsxRuntime.jsx(ListContainer.HvListContainer, {
|
|
227
236
|
id,
|
|
228
|
-
className:
|
|
237
|
+
className: cx(classes.root, className),
|
|
229
238
|
role: selectable ? "listbox" : "menu",
|
|
230
239
|
interactive: true,
|
|
231
240
|
condensed,
|
|
@@ -233,18 +242,19 @@ const HvList = (props) => {
|
|
|
233
242
|
"aria-multiselectable": selectable && multiSelect || void 0,
|
|
234
243
|
...others,
|
|
235
244
|
children: filteredList.map((item, i) => renderListItem(item, i))
|
|
236
|
-
}), filteredList.length > 0 && virtualized && /* @__PURE__ */ jsxRuntime.jsx(
|
|
245
|
+
}), filteredList.length > 0 && virtualized && /* @__PURE__ */ jsxRuntime.jsx(reactWindow.FixedSizeList, {
|
|
237
246
|
ref: listRef,
|
|
238
|
-
className:
|
|
247
|
+
className: classes.virtualizedRoot,
|
|
239
248
|
height: (height || 0) + 5,
|
|
240
249
|
width: "100%",
|
|
241
250
|
itemCount: filteredList.length,
|
|
242
251
|
itemSize: condensed ? 32 : 40,
|
|
243
252
|
innerElementType: renderFixedList,
|
|
244
253
|
...others,
|
|
245
|
-
children: ListItem
|
|
254
|
+
children: ListItem$1
|
|
246
255
|
})]
|
|
247
256
|
});
|
|
248
257
|
};
|
|
258
|
+
exports.listClasses = List_styles.staticClasses;
|
|
249
259
|
exports.HvList = HvList;
|
|
250
260
|
//# sourceMappingURL=List.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.cjs","sources":["../../../../src/components/List/List.tsx"],"sourcesContent":["import { forwardRef, isValidElement, useEffect, useMemo, useRef } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { clsx } from \"clsx\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvListContainer } from \"@core/components/ListContainer\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { setId } from \"@core/utils/setId\";\nimport { wrapperTooltip } from \"@core/utils/wrapperTooltip\";\n\nimport {\n StyledFixedSizeList,\n StyledSelectAllCheckBox,\n StyledLink,\n StyledMultiSelectCheckBox,\n StyledSingleSelectRadio,\n StyledListItem,\n StyledDropRightXS,\n} from \"./List.styles\";\nimport listClasses, { HvListClasses } from \"./listClasses\";\nimport { useSelectableList } from \"./useSelectableList\";\nimport { parseList } from \"./utils\";\nimport { HvListLabels, HvListValue } from \"./types\";\n\nexport interface HvListProps\n extends HvBaseProps<HTMLUListElement, \"onChange\" | \"onClick\"> {\n /**\n * A list containing the elements to be rendered.\n *\n * - id: The id of the item.\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - isHidden: Is item visible.\n * - icon: The icon.\n * - showNavIcon: If true renders the navigation icon on the right.\n * - path: The path to navigate to.\n */\n values: HvListValue[];\n /** If true renders a multi select list. */\n multiSelect?: boolean;\n /**\n * If true renders select all option for multi selection lists with selectors.\n * note: It will only be rendered if multiSelect and useSelector props are set to true.\n */\n showSelectAll?: boolean;\n /** An object containing all the labels for the dropdown. */\n labels?: HvListLabels;\n /** If true renders list items with radio or checkbox selectors. */\n useSelector?: boolean;\n /** Call back fired when list item is selected. Returns selection state. */\n onChange?: (value: HvListValue[]) => void;\n /** Call back fired when list item is selected. Returns selected item. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** If `true` the list items will show the selection state. */\n selectable?: boolean;\n /** If `true`, selection can be toggled when single selection. */\n singleSelectionToggle?: boolean;\n /** If `true` the list will be rendered without vertical spacing. */\n condensed?: boolean;\n /** If `true` the dropdown will show tooltips when user mouseenter text in list */\n hasTooltips?: boolean;\n /** Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used */\n height?: number;\n /** Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options. */\n virtualized?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvListClasses;\n}\n\nconst DEFAULT_LABELS = {\n selectAll: \"Select All\",\n selectionConjunction: \"/\",\n};\n\n/**\n * Component used to show a set of related data to the user.\n */\nexport const HvList = (props: HvListProps) => {\n const {\n id,\n classes,\n className,\n multiSelect = false,\n hasTooltips = false,\n showSelectAll = false,\n labels = DEFAULT_LABELS,\n useSelector = false,\n selectable = true,\n singleSelectionToggle = true,\n condensed = false,\n onChange,\n onClick,\n values: valuesProp = [],\n height,\n virtualized = false,\n ...others\n } = useDefaultProps(\"HvList\", props);\n\n const [list, setList, selection] = useSelectableList(valuesProp);\n const listRef = useRef<any>(null);\n\n useEffect(() => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList: HvListValue[] = parseList(\n undefined,\n passedProps,\n undefined,\n valuesProp\n );\n\n setList(parsedList);\n }, [valuesProp, multiSelect, selectable, singleSelectionToggle, setList]);\n\n const handleSelect = (evt, item) => {\n if (!item.path) evt.preventDefault();\n if (item.disabled) return;\n\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(item, passedProps, undefined, list);\n setList(parsedList);\n\n onClick?.(evt, item);\n onChange?.(parsedList);\n };\n\n const handleSelectAll = () => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const anySelectableSelected = list.some(\n (elem) => elem.selected || elem.disabled\n );\n const parsedList = parseList(\n undefined,\n passedProps,\n !anySelectableSelected,\n list\n );\n setList(parsedList);\n\n onChange?.(parsedList);\n };\n\n const renderLeftIcon = (item) => {\n return isValidElement(item.icon)\n ? item.icon\n : item.icon?.({\n isSelected: item.selected,\n isDisabled: item.disabled,\n });\n };\n\n const renderSelectAll = () => {\n const { selectAll, selectionConjunction } = labels;\n\n const anySelected = !!selection?.length;\n const allSelected = selection.length === list.length;\n\n const selectionLabel = (\n <HvTypography component=\"span\">\n {!anySelected ? (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n ) : (\n <>\n <b>{selection.length}</b>\n {`\\xa0${selectionConjunction}\\xa0`}\n {list.length}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <StyledSelectAllCheckBox\n id={setId(id, \"select-all\")}\n label={selectionLabel}\n onChange={handleSelectAll}\n className={clsx(\n listClasses.selectAllSelector,\n classes?.selectAllSelector\n )}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n );\n };\n\n const renderItemText = (item) => {\n const ItemText = wrapperTooltip(hasTooltips, item.label, item.label);\n\n return !multiSelect && item.path ? (\n <StyledLink\n key={item.label}\n route={item.path}\n classes={{ a: clsx(listClasses.link, classes?.link) }}\n >\n <ItemText />\n </StyledLink>\n ) : (\n <ItemText />\n );\n };\n\n const renderMultiSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <StyledMultiSelectCheckBox\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n onChange={(evt) => handleSelect(evt, item)}\n classes={{\n root: clsx(listClasses.selectorRoot, classes?.selectorRoot),\n container: clsx(\n listClasses.selectorContainer,\n classes?.selectorContainer\n ),\n label: clsx(listClasses.truncate, classes?.truncate),\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n\n return renderItemText(item);\n };\n\n const renderSingleSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <StyledSingleSelectRadio\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n classes={{\n root: clsx(listClasses.selectorRoot, classes?.selectorRoot),\n container: clsx(\n listClasses.selectorContainer,\n classes?.selectorContainer\n ),\n label: clsx(listClasses.truncate, classes?.truncate),\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n return renderItemText(item);\n };\n\n const renderListItem = (item, i, otherProps = {}) => {\n const itemId = setId(id, \"item\", i);\n const selected = item.selected || false;\n\n let startAdornment = null;\n if (!useSelector && item.icon) {\n startAdornment = renderLeftIcon(item);\n }\n\n return (\n <StyledListItem\n key={i}\n id={itemId}\n role={selectable ? \"option\" : \"menuitem\"}\n disabled={item.disabled || undefined}\n className={clsx(listClasses.item, classes?.item)}\n classes={{\n selected:\n useSelector || multiSelect\n ? clsx(listClasses.itemSelector, classes?.itemSelector)\n : undefined,\n }}\n selected={multiSelect || selected ? selected : undefined}\n onClick={(evt) => handleSelect(evt, item)}\n startAdornment={startAdornment}\n endAdornment={\n item.showNavIcon && (\n <StyledDropRightXS\n className={clsx(listClasses.box, classes?.box)}\n iconSize=\"XS\"\n />\n )\n }\n $applySelected={useSelector || multiSelect}\n {...otherProps}\n >\n {multiSelect\n ? renderMultiSelectItem(item, itemId)\n : renderSingleSelectItem(item, itemId)}\n </StyledListItem>\n );\n };\n\n const filteredList = list.filter((it) => !it.isHidden);\n const anySelected = list\n .map((item) => item.selected && !item.disabled)\n .reduce((result, selected) => result || selected, false);\n\n const selectedItemIndex = list.findIndex((item) => item.selected);\n useEffect(() => {\n if (selectedItemIndex >= 0 && listRef.current !== null) {\n listRef.current.scrollToItem(selectedItemIndex);\n }\n }, [listRef, selectedItemIndex]);\n\n const ListItem = ({ index, style }) => {\n const item = filteredList[index];\n const tabIndex =\n item.tabIndex ||\n (!anySelected && index === 0) ||\n (item.selected && !item.disabled)\n ? 0\n : -1;\n\n return renderListItem(item, index, {\n style: {\n ...style,\n top: `${parseFloat(style.top) + 5}px`,\n left: `${parseFloat(style.left) + 5}px`,\n width: `calc(${parseFloat(style.width)}% - 10px)`,\n },\n tabIndex,\n interactive: true,\n condensed,\n disableGutters: useSelector,\n });\n };\n\n const renderFixedList = useMemo(() => {\n return forwardRef(({ ...rest }, ref) => (\n <HvListContainer\n id={id}\n className={clsx(className, listClasses.root, classes?.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n ref={ref}\n {...rest}\n />\n ));\n }, [id, useSelector, className, classes, condensed, selectable, multiSelect]);\n\n return (\n <>\n {multiSelect && useSelector && showSelectAll && renderSelectAll()}\n\n {filteredList.length > 0 && !virtualized && (\n <HvListContainer\n id={id}\n className={clsx(className, listClasses.root, classes?.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n {...others}\n >\n {filteredList.map((item, i) => renderListItem(item, i))}\n </HvListContainer>\n )}\n {filteredList.length > 0 && virtualized && (\n <StyledFixedSizeList\n ref={listRef}\n className={clsx(\n listClasses.virtualizedRoot,\n classes?.virtualizedRoot\n )}\n height={(height || 0) + 5}\n width=\"100%\"\n itemCount={filteredList.length}\n itemSize={condensed ? 32 : 40}\n innerElementType={renderFixedList}\n {...others}\n >\n {ListItem}\n </StyledFixedSizeList>\n )}\n </>\n );\n};\n"],"names":["DEFAULT_LABELS","selectAll","selectionConjunction","HvList","props","id","classes","className","multiSelect","hasTooltips","showSelectAll","labels","useSelector","selectable","singleSelectionToggle","condensed","onChange","onClick","values","valuesProp","height","virtualized","others","useDefaultProps","list","setList","selection","useSelectableList","listRef","useRef","useEffect","passedProps","parsedList","parseList","undefined","handleSelect","evt","item","path","preventDefault","disabled","handleSelectAll","anySelectableSelected","some","elem","selected","renderLeftIcon","isValidElement","icon","isSelected","isDisabled","renderSelectAll","anySelected","length","allSelected","selectionLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","StyledSelectAllCheckBox","setId","label","clsx","listClasses","selectAllSelector","indeterminate","checked","renderItemText","ItemText","wrapperTooltip","StyledLink","route","a","link","renderMultiSelectItem","itemId","Selection","StyledMultiSelectCheckBox","root","selectorRoot","container","selectorContainer","truncate","renderSingleSelectItem","StyledSingleSelectRadio","renderListItem","i","otherProps","startAdornment","StyledListItem","role","itemSelector","endAdornment","showNavIcon","StyledDropRightXS","box","iconSize","$applySelected","filteredList","filter","it","isHidden","map","reduce","result","selectedItemIndex","findIndex","current","scrollToItem","ListItem","index","style","tabIndex","top","parseFloat","left","width","interactive","disableGutters","renderFixedList","useMemo","forwardRef","rest","ref","HvListContainer","StyledFixedSizeList","virtualizedRoot","itemCount","itemSize","innerElementType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.cjs","sources":["../../../../src/components/List/List.tsx"],"sourcesContent":["import { forwardRef, isValidElement, useEffect, useMemo, useRef } from \"react\";\n\nimport { FixedSizeList } from \"react-window\";\n\nimport { DropRightXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvListContainer, HvListItem } from \"@core/components/ListContainer\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { setId } from \"@core/utils/setId\";\nimport { wrapperTooltip } from \"@core/utils/wrapperTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvCheckBox } from \"@core/components/CheckBox\";\nimport { HvLink } from \"@core/components/Link\";\nimport { HvRadio } from \"@core/components/Radio\";\n\nimport { staticClasses, useClasses } from \"./List.styles\";\nimport { useSelectableList } from \"./useSelectableList\";\nimport { parseList } from \"./utils\";\nimport { HvListLabels, HvListValue } from \"./types\";\n\nexport { staticClasses as listClasses };\n\nexport type HvListClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvListProps\n extends HvBaseProps<HTMLUListElement, \"onChange\" | \"onClick\"> {\n /**\n * A list containing the elements to be rendered.\n *\n * - id: The id of the item.\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - isHidden: Is item visible.\n * - icon: The icon.\n * - showNavIcon: If true renders the navigation icon on the right.\n * - path: The path to navigate to.\n */\n values: HvListValue[];\n /** If true renders a multi select list. */\n multiSelect?: boolean;\n /**\n * If true renders select all option for multi selection lists with selectors.\n * note: It will only be rendered if multiSelect and useSelector props are set to true.\n */\n showSelectAll?: boolean;\n /** An object containing all the labels for the dropdown. */\n labels?: HvListLabels;\n /** If true renders list items with radio or checkbox selectors. */\n useSelector?: boolean;\n /** Call back fired when list item is selected. Returns selection state. */\n onChange?: (value: HvListValue[]) => void;\n /** Call back fired when list item is selected. Returns selected item. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** If `true` the list items will show the selection state. */\n selectable?: boolean;\n /** If `true`, selection can be toggled when single selection. */\n singleSelectionToggle?: boolean;\n /** If `true` the list will be rendered without vertical spacing. */\n condensed?: boolean;\n /** If `true` the dropdown will show tooltips when user mouseenter text in list */\n hasTooltips?: boolean;\n /** Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used */\n height?: number;\n /** Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options. */\n virtualized?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvListClasses;\n}\n\nconst DEFAULT_LABELS = {\n selectAll: \"Select All\",\n selectionConjunction: \"/\",\n};\n\n/**\n * Component used to show a set of related data to the user.\n */\nexport const HvList = (props: HvListProps) => {\n const {\n id,\n classes: classesProp,\n className,\n multiSelect = false,\n hasTooltips = false,\n showSelectAll = false,\n labels = DEFAULT_LABELS,\n useSelector = false,\n selectable = true,\n singleSelectionToggle = true,\n condensed = false,\n onChange,\n onClick,\n values: valuesProp = [],\n height,\n virtualized = false,\n ...others\n } = useDefaultProps(\"HvList\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [list, setList, selection] = useSelectableList(valuesProp);\n const listRef = useRef<any>(null);\n\n useEffect(() => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList: HvListValue[] = parseList(\n undefined,\n passedProps,\n undefined,\n valuesProp\n );\n\n setList(parsedList);\n }, [valuesProp, multiSelect, selectable, singleSelectionToggle, setList]);\n\n const handleSelect = (evt, item) => {\n if (!item.path) evt.preventDefault();\n if (item.disabled) return;\n\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(item, passedProps, undefined, list);\n setList(parsedList);\n\n onClick?.(evt, item);\n onChange?.(parsedList);\n };\n\n const handleSelectAll = () => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const anySelectableSelected = list.some(\n (elem) => elem.selected || elem.disabled\n );\n const parsedList = parseList(\n undefined,\n passedProps,\n !anySelectableSelected,\n list\n );\n setList(parsedList);\n\n onChange?.(parsedList);\n };\n\n const renderLeftIcon = (item) => {\n return isValidElement(item.icon)\n ? item.icon\n : item.icon?.({\n isSelected: item.selected,\n isDisabled: item.disabled,\n });\n };\n\n const renderSelectAll = () => {\n const { selectAll, selectionConjunction } = labels;\n\n const anySelected = !!selection?.length;\n const allSelected = selection.length === list.length;\n\n const selectionLabel = (\n <HvTypography component=\"span\">\n {!anySelected ? (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n ) : (\n <>\n <b>{selection.length}</b>\n {`\\xa0${selectionConjunction}\\xa0`}\n {list.length}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={selectionLabel}\n onChange={handleSelectAll}\n className={classes.selectAllSelector}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n );\n };\n\n const renderItemText = (item) => {\n const ItemText = wrapperTooltip(hasTooltips, item.label, item.label);\n\n return !multiSelect && item.path ? (\n <HvLink key={item.label} route={item.path} classes={{ a: classes.link }}>\n <ItemText />\n </HvLink>\n ) : (\n <ItemText />\n );\n };\n\n const renderMultiSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvCheckBox\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n onChange={(evt) => handleSelect(evt, item)}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n\n return renderItemText(item);\n };\n\n const renderSingleSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvRadio\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n return renderItemText(item);\n };\n\n const renderListItem = (item, i, otherProps = {}) => {\n const itemId = setId(id, \"item\", i);\n const selected = item.selected || false;\n\n let startAdornment = null;\n if (!useSelector && item.icon) {\n startAdornment = renderLeftIcon(item);\n }\n\n return (\n <HvListItem\n key={i}\n id={itemId}\n role={selectable ? \"option\" : \"menuitem\"}\n disabled={item.disabled || undefined}\n className={classes.item}\n classes={{\n selected: cx({\n [classes.itemSelector]: useSelector || multiSelect,\n }),\n }}\n selected={multiSelect || selected ? selected : undefined}\n onClick={(evt) => handleSelect(evt, item)}\n startAdornment={startAdornment}\n endAdornment={\n item.showNavIcon && (\n <DropRightXS className={classes.box} iconSize=\"XS\" />\n )\n }\n {...otherProps}\n >\n {multiSelect\n ? renderMultiSelectItem(item, itemId)\n : renderSingleSelectItem(item, itemId)}\n </HvListItem>\n );\n };\n\n const filteredList = list.filter((it) => !it.isHidden);\n const anySelected = list\n .map((item) => item.selected && !item.disabled)\n .reduce((result, selected) => result || selected, false);\n\n const selectedItemIndex = list.findIndex((item) => item.selected);\n useEffect(() => {\n if (selectedItemIndex >= 0 && listRef.current !== null) {\n listRef.current.scrollToItem(selectedItemIndex);\n }\n }, [listRef, selectedItemIndex]);\n\n const ListItem = ({ index, style }) => {\n const item = filteredList[index];\n const tabIndex =\n item.tabIndex ||\n (!anySelected && index === 0) ||\n (item.selected && !item.disabled)\n ? 0\n : -1;\n\n return renderListItem(item, index, {\n style: {\n ...style,\n top: `${parseFloat(style.top) + 5}px`,\n left: `${parseFloat(style.left) + 5}px`,\n width: `calc(${parseFloat(style.width)}% - 10px)`,\n },\n tabIndex,\n interactive: true,\n condensed,\n disableGutters: useSelector,\n });\n };\n\n const renderFixedList = useMemo(() => {\n return forwardRef(({ ...rest }, ref) => (\n <HvListContainer\n id={id}\n className={cx(classes.root, className)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n ref={ref}\n {...rest}\n />\n ));\n }, [\n cx,\n id,\n useSelector,\n className,\n classes,\n condensed,\n selectable,\n multiSelect,\n ]);\n\n return (\n <>\n {multiSelect && useSelector && showSelectAll && renderSelectAll()}\n\n {filteredList.length > 0 && !virtualized && (\n <HvListContainer\n id={id}\n className={cx(classes.root, className)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n {...others}\n >\n {filteredList.map((item, i) => renderListItem(item, i))}\n </HvListContainer>\n )}\n {filteredList.length > 0 && virtualized && (\n <FixedSizeList\n ref={listRef}\n className={classes.virtualizedRoot}\n height={(height || 0) + 5}\n width=\"100%\"\n itemCount={filteredList.length}\n itemSize={condensed ? 32 : 40}\n innerElementType={renderFixedList}\n {...others}\n >\n {ListItem}\n </FixedSizeList>\n )}\n </>\n );\n};\n"],"names":["DEFAULT_LABELS","selectAll","selectionConjunction","HvList","props","id","classes","classesProp","className","multiSelect","hasTooltips","showSelectAll","labels","useSelector","selectable","singleSelectionToggle","condensed","onChange","onClick","values","valuesProp","height","virtualized","others","useDefaultProps","cx","useClasses","list","setList","selection","useSelectableList","listRef","useRef","useEffect","passedProps","parsedList","parseList","undefined","handleSelect","evt","item","path","preventDefault","disabled","handleSelectAll","anySelectableSelected","some","elem","selected","renderLeftIcon","isValidElement","icon","isSelected","isDisabled","renderSelectAll","anySelected","length","allSelected","selectionLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","HvCheckBox","setId","label","selectAllSelector","indeterminate","checked","renderItemText","ItemText","wrapperTooltip","HvLink","route","a","link","renderMultiSelectItem","itemId","Selection","root","selectorRoot","container","selectorContainer","truncate","renderSingleSelectItem","HvRadio","renderListItem","i","otherProps","startAdornment","HvListItem","role","itemSelector","endAdornment","showNavIcon","DropRightXS","box","iconSize","filteredList","filter","it","isHidden","map","reduce","result","selectedItemIndex","findIndex","current","scrollToItem","ListItem","index","style","tabIndex","top","parseFloat","left","width","interactive","disableGutters","renderFixedList","useMemo","forwardRef","rest","ref","HvListContainer","FixedSizeList","virtualizedRoot","itemCount","itemSize","innerElementType"],"mappings":"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"}
|