@hitachivantara/uikit-react-core 5.24.5 → 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.
Files changed (58) hide show
  1. package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs +5 -0
  2. package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
  3. package/dist/cjs/components/Dropdown/Dropdown.cjs +1 -0
  4. package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
  5. package/dist/cjs/components/Focus/Focus.cjs +25 -39
  6. package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
  7. package/dist/cjs/components/Focus/Focus.styles.cjs +43 -40
  8. package/dist/cjs/components/Focus/Focus.styles.cjs.map +1 -1
  9. package/dist/cjs/components/List/List.cjs +38 -28
  10. package/dist/cjs/components/List/List.cjs.map +1 -1
  11. package/dist/cjs/components/List/List.styles.cjs +38 -149
  12. package/dist/cjs/components/List/List.styles.cjs.map +1 -1
  13. package/dist/cjs/components/MultiButton/MultiButton.cjs +15 -11
  14. package/dist/cjs/components/MultiButton/MultiButton.cjs.map +1 -1
  15. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +109 -151
  16. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
  17. package/dist/cjs/components/SimpleGrid/SimpleGrid.cjs +11 -3
  18. package/dist/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  19. package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs +29 -28
  20. package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs.map +1 -1
  21. package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs +1 -1
  22. package/dist/cjs/index.cjs +6 -6
  23. package/dist/esm/components/BaseDropdown/BaseDropdown.js +5 -0
  24. package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
  25. package/dist/esm/components/Dropdown/Dropdown.js +1 -0
  26. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  27. package/dist/esm/components/Focus/Focus.js +27 -41
  28. package/dist/esm/components/Focus/Focus.js.map +1 -1
  29. package/dist/esm/components/Focus/Focus.styles.js +43 -38
  30. package/dist/esm/components/Focus/Focus.styles.js.map +1 -1
  31. package/dist/esm/components/List/List.js +39 -28
  32. package/dist/esm/components/List/List.js.map +1 -1
  33. package/dist/esm/components/List/List.styles.js +38 -147
  34. package/dist/esm/components/List/List.styles.js.map +1 -1
  35. package/dist/esm/components/MultiButton/MultiButton.js +18 -13
  36. package/dist/esm/components/MultiButton/MultiButton.js.map +1 -1
  37. package/dist/esm/components/MultiButton/MultiButton.styles.js +109 -149
  38. package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
  39. package/dist/esm/components/SimpleGrid/SimpleGrid.js +12 -4
  40. package/dist/esm/components/SimpleGrid/SimpleGrid.js.map +1 -1
  41. package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js +29 -26
  42. package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js.map +1 -1
  43. package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js +1 -1
  44. package/dist/esm/index.js +238 -238
  45. package/dist/types/index.d.ts +395 -374
  46. package/package.json +5 -5
  47. package/dist/cjs/components/Focus/focusClasses.cjs +0 -8
  48. package/dist/cjs/components/Focus/focusClasses.cjs.map +0 -1
  49. package/dist/cjs/components/List/listClasses.cjs +0 -8
  50. package/dist/cjs/components/List/listClasses.cjs.map +0 -1
  51. package/dist/cjs/components/MultiButton/multiButtonClasses.cjs +0 -8
  52. package/dist/cjs/components/MultiButton/multiButtonClasses.cjs.map +0 -1
  53. package/dist/esm/components/Focus/focusClasses.js +0 -8
  54. package/dist/esm/components/Focus/focusClasses.js.map +0 -1
  55. package/dist/esm/components/List/listClasses.js +0 -8
  56. package/dist/esm/components/List/listClasses.js.map +0 -1
  57. package/dist/esm/components/MultiButton/multiButtonClasses.js +0 -8
  58. package/dist/esm/components/MultiButton/multiButtonClasses.js.map +0 -1
@@ -1,43 +1,48 @@
1
- import _styled from "@emotion/styled/base";
2
1
  import { outlineStyles } from "../../utils/focusUtils.js";
3
- function _EMOTION_STRINGIFIED_CSS_ERROR__() {
4
- return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
5
- }
6
- const StyledFocusWrapper = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
7
- target: "ee8blvn1"
8
- } : {
9
- target: "ee8blvn1",
10
- label: "StyledFocusWrapper"
11
- })(process.env.NODE_ENV === "production" ? {
12
- name: "bjn8wh",
13
- styles: "position:relative"
14
- } : {
15
- name: "bjn8wh",
16
- styles: "position:relative",
17
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMuc3R5bGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHa0MiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvaHYtdWlraXQtcmVhY3QvaHYtdWlraXQtcmVhY3QvcGFja2FnZXMvY29yZS9zcmMvY29tcG9uZW50cy9Gb2N1cy9Gb2N1cy5zdHlsZXMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBvdXRsaW5lU3R5bGVzIH0gZnJvbSBcIkBjb3JlL3V0aWxzL2ZvY3VzVXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZvY3VzV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZhbHNlRm9jdXMgPSBzdHlsZWQoXCJkaXZcIikoe1xuICB3aWR0aDogXCI5OCVcIixcbiAgaGVpZ2h0OiBcIjk4JVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB6SW5kZXg6IFwiMVwiLFxuICAuLi5vdXRsaW5lU3R5bGVzLFxuICBcIkBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApXCI6IHtcbiAgICAuLi5vdXRsaW5lU3R5bGVzLFxuICB9LFxuICB0b3A6IDAsXG4gIGxlZnQ6IFwiMC41JVwiLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG59KTtcbiJdfQ== */",
18
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
19
- });
20
- const StyledFalseFocus = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
21
- target: "ee8blvn0"
22
- } : {
23
- target: "ee8blvn0",
24
- label: "StyledFalseFocus"
25
- })({
26
- width: "98%",
27
- height: "98%",
28
- position: "absolute",
29
- zIndex: "1",
30
- ...outlineStyles,
31
- "@media (-webkit-min-device-pixel-ratio:0)": {
32
- ...outlineStyles
2
+ import { createClasses } from "../../utils/classes.js";
3
+ const {
4
+ staticClasses,
5
+ useClasses
6
+ } = createClasses("HvFocus", {
7
+ root: {},
8
+ selected: {},
9
+ disabled: {},
10
+ focusDisabled: {
11
+ outline: "none",
12
+ "& *:focus": {
13
+ outline: "none"
14
+ },
15
+ "& *": {
16
+ outline: "none !important"
17
+ }
18
+ },
19
+ focused: {
20
+ ...outlineStyles,
21
+ "@media (-webkit-min-device-pixel-ratio:0)": {
22
+ ...outlineStyles
23
+ }
24
+ },
25
+ externalReference: {
26
+ position: "relative"
33
27
  },
34
- top: 0,
35
- left: "0.5%",
36
- backgroundColor: "transparent",
37
- pointerEvents: "none"
38
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMuc3R5bGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPZ0MiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvaHYtdWlraXQtcmVhY3QvaHYtdWlraXQtcmVhY3QvcGFja2FnZXMvY29yZS9zcmMvY29tcG9uZW50cy9Gb2N1cy9Gb2N1cy5zdHlsZXMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBvdXRsaW5lU3R5bGVzIH0gZnJvbSBcIkBjb3JlL3V0aWxzL2ZvY3VzVXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZvY3VzV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZhbHNlRm9jdXMgPSBzdHlsZWQoXCJkaXZcIikoe1xuICB3aWR0aDogXCI5OCVcIixcbiAgaGVpZ2h0OiBcIjk4JVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB6SW5kZXg6IFwiMVwiLFxuICAuLi5vdXRsaW5lU3R5bGVzLFxuICBcIkBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApXCI6IHtcbiAgICAuLi5vdXRsaW5lU3R5bGVzLFxuICB9LFxuICB0b3A6IDAsXG4gIGxlZnQ6IFwiMC41JVwiLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXG59KTtcbiJdfQ== */");
28
+ falseFocus: {
29
+ width: "98%",
30
+ height: "98%",
31
+ position: "absolute",
32
+ zIndex: "1",
33
+ ...outlineStyles,
34
+ "@media (-webkit-min-device-pixel-ratio:0)": {
35
+ ...outlineStyles
36
+ },
37
+ top: 0,
38
+ left: "0.5%",
39
+ backgroundColor: "transparent",
40
+ pointerEvents: "none"
41
+ },
42
+ focus: {}
43
+ });
39
44
  export {
40
- StyledFalseFocus,
41
- StyledFocusWrapper
45
+ staticClasses,
46
+ useClasses
42
47
  };
43
48
  //# sourceMappingURL=Focus.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Focus.styles.js","sources":["../../../../src/components/Focus/Focus.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { outlineStyles } from \"@core/utils/focusUtils\";\n\nexport const StyledFocusWrapper = styled(\"div\")({\n position: \"relative\",\n});\n\nexport const StyledFalseFocus = styled(\"div\")({\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"],"names":["StyledFocusWrapper","process","env","NODE_ENV","target","label","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","StyledFalseFocus","width","height","position","zIndex","outlineStyles","top","left","backgroundColor","pointerEvents"],"mappings":";;;;;AAGO,MAAMA,qBAA4B,wBAAA,OAAKC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAACJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAG,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,KAAA;AAAA,EAAAC,UAAAC;AAAA,CAE9C;AAEM,MAAMC,mBAA0B,wBAAA,OAAKV,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAE;AAAA,EAC5CO,OAAO;AAAA,EACPC,QAAQ;AAAA,EACRC,UAAU;AAAA,EACVC,QAAQ;AAAA,EACR,GAAGC;AAAAA,EACH,6CAA6C;AAAA,IAC3C,GAAGA;AAAAA,EACL;AAAA,EACAC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,iBAAiB;AAAA,EACjBC,eAAe;AACjB,GAACnB,QAAAC,IAAAC,aAAC,eAAA,KAAA,qoCAAA;"}
1
+ {"version":3,"file":"Focus.styles.js","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,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;AAAAA,IACH,6CAA6C;AAAA,MAC3C,GAAGA;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;AAAAA,IACH,6CAA6C;AAAA,MAC3C,GAAGA;AAAAA,IACL;AAAA,IACAO,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,iBAAiB;AAAA,IACjBC,eAAe;AAAA,EACjB;AAAA,EACAC,OAAO,CAAC;AACV,CAAC;"}
@@ -1,15 +1,20 @@
1
1
  import { useRef, useEffect, useMemo, forwardRef, isValidElement } from "react";
2
+ import { FixedSizeList } from "react-window";
3
+ import { DropRightXS } from "@hitachivantara/uikit-react-icons";
2
4
  import { useDefaultProps } from "../../hooks/useDefaultProps.js";
3
- import { clsx } from "clsx";
4
5
  import { setId } from "../../utils/setId.js";
5
6
  import { wrapperTooltip } from "../../utils/wrapperTooltip.js";
6
- import { StyledFixedSizeList, StyledSelectAllCheckBox, StyledListItem, StyledDropRightXS, StyledMultiSelectCheckBox, StyledSingleSelectRadio, StyledLink } from "./List.styles.js";
7
- import listClasses from "./listClasses.js";
7
+ import { useClasses } from "./List.styles.js";
8
+ import { staticClasses } from "./List.styles.js";
8
9
  import { useSelectableList } from "./useSelectableList.js";
9
10
  import { parseList } from "./utils.js";
10
11
  import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
12
+ import { HvRadio } from "../Radio/Radio.js";
13
+ import { HvLink } from "../Link/Link.js";
11
14
  import { HvListContainer } from "../ListContainer/ListContainer.js";
12
15
  import { HvTypography } from "../Typography/Typography.js";
16
+ import { HvCheckBox } from "../CheckBox/CheckBox.js";
17
+ import { HvListItem } from "../ListContainer/ListItem/ListItem.js";
13
18
  const DEFAULT_LABELS = {
14
19
  selectAll: "Select All",
15
20
  selectionConjunction: "/"
@@ -17,7 +22,7 @@ const DEFAULT_LABELS = {
17
22
  const HvList = (props) => {
18
23
  const {
19
24
  id,
20
- classes,
25
+ classes: classesProp,
21
26
  className,
22
27
  multiSelect = false,
23
28
  hasTooltips = false,
@@ -34,6 +39,10 @@ const HvList = (props) => {
34
39
  virtualized = false,
35
40
  ...others
36
41
  } = useDefaultProps("HvList", props);
42
+ const {
43
+ classes,
44
+ cx
45
+ } = useClasses(classesProp);
37
46
  const [list, setList, selection] = useSelectableList(valuesProp);
38
47
  const listRef = useRef(null);
39
48
  useEffect(() => {
@@ -97,37 +106,37 @@ const HvList = (props) => {
97
106
  }), ` ${selectionConjunction} `, list.length]
98
107
  })
99
108
  });
100
- return /* @__PURE__ */ jsx(StyledSelectAllCheckBox, {
109
+ return /* @__PURE__ */ jsx(HvCheckBox, {
101
110
  id: setId(id, "select-all"),
102
111
  label: selectionLabel,
103
112
  onChange: handleSelectAll,
104
- className: clsx(listClasses.selectAllSelector, classes == null ? void 0 : classes.selectAllSelector),
113
+ className: classes.selectAllSelector,
105
114
  indeterminate: anySelected2 && !allSelected,
106
115
  checked: allSelected
107
116
  });
108
117
  };
109
118
  const renderItemText = (item) => {
110
119
  const ItemText = wrapperTooltip(hasTooltips, item.label, item.label);
111
- return !multiSelect && item.path ? /* @__PURE__ */ jsx(StyledLink, {
120
+ return !multiSelect && item.path ? /* @__PURE__ */ jsx(HvLink, {
112
121
  route: item.path,
113
122
  classes: {
114
- a: clsx(listClasses.link, classes == null ? void 0 : classes.link)
123
+ a: classes.link
115
124
  },
116
125
  children: /* @__PURE__ */ jsx(ItemText, {})
117
126
  }, item.label) : /* @__PURE__ */ jsx(ItemText, {});
118
127
  };
119
128
  const renderMultiSelectItem = (item, itemId) => {
120
129
  if (useSelector) {
121
- const Selection = wrapperTooltip(hasTooltips, /* @__PURE__ */ jsx(StyledMultiSelectCheckBox, {
130
+ const Selection = wrapperTooltip(hasTooltips, /* @__PURE__ */ jsx(HvCheckBox, {
122
131
  id: setId(itemId, "selector"),
123
132
  label: item.label,
124
133
  checked: item.selected,
125
134
  disabled: item.disabled,
126
135
  onChange: (evt) => handleSelect(evt, item),
127
136
  classes: {
128
- root: clsx(listClasses.selectorRoot, classes == null ? void 0 : classes.selectorRoot),
129
- container: clsx(listClasses.selectorContainer, classes == null ? void 0 : classes.selectorContainer),
130
- label: clsx(listClasses.truncate, classes == null ? void 0 : classes.truncate)
137
+ root: classes.selectorRoot,
138
+ container: classes.selectorContainer,
139
+ label: classes.truncate
131
140
  }
132
141
  }), item.label);
133
142
  return /* @__PURE__ */ jsx(Selection, {});
@@ -136,15 +145,15 @@ const HvList = (props) => {
136
145
  };
137
146
  const renderSingleSelectItem = (item, itemId) => {
138
147
  if (useSelector) {
139
- const Selection = wrapperTooltip(hasTooltips, /* @__PURE__ */ jsx(StyledSingleSelectRadio, {
148
+ const Selection = wrapperTooltip(hasTooltips, /* @__PURE__ */ jsx(HvRadio, {
140
149
  id: setId(itemId, "selector"),
141
150
  label: item.label,
142
151
  checked: item.selected,
143
152
  disabled: item.disabled,
144
153
  classes: {
145
- root: clsx(listClasses.selectorRoot, classes == null ? void 0 : classes.selectorRoot),
146
- container: clsx(listClasses.selectorContainer, classes == null ? void 0 : classes.selectorContainer),
147
- label: clsx(listClasses.truncate, classes == null ? void 0 : classes.truncate)
154
+ root: classes.selectorRoot,
155
+ container: classes.selectorContainer,
156
+ label: classes.truncate
148
157
  }
149
158
  }), item.label);
150
159
  return /* @__PURE__ */ jsx(Selection, {});
@@ -158,22 +167,23 @@ const HvList = (props) => {
158
167
  if (!useSelector && item.icon) {
159
168
  startAdornment = renderLeftIcon(item);
160
169
  }
161
- return /* @__PURE__ */ jsx(StyledListItem, {
170
+ return /* @__PURE__ */ jsx(HvListItem, {
162
171
  id: itemId,
163
172
  role: selectable ? "option" : "menuitem",
164
173
  disabled: item.disabled || void 0,
165
- className: clsx(listClasses.item, classes == null ? void 0 : classes.item),
174
+ className: classes.item,
166
175
  classes: {
167
- selected: useSelector || multiSelect ? clsx(listClasses.itemSelector, classes == null ? void 0 : classes.itemSelector) : void 0
176
+ selected: cx({
177
+ [classes.itemSelector]: useSelector || multiSelect
178
+ })
168
179
  },
169
180
  selected: multiSelect || selected ? selected : void 0,
170
181
  onClick: (evt) => handleSelect(evt, item),
171
182
  startAdornment,
172
- endAdornment: item.showNavIcon && /* @__PURE__ */ jsx(StyledDropRightXS, {
173
- className: clsx(listClasses.box, classes == null ? void 0 : classes.box),
183
+ endAdornment: item.showNavIcon && /* @__PURE__ */ jsx(DropRightXS, {
184
+ className: classes.box,
174
185
  iconSize: "XS"
175
186
  }),
176
- $applySelected: useSelector || multiSelect,
177
187
  ...otherProps,
178
188
  children: multiSelect ? renderMultiSelectItem(item, itemId) : renderSingleSelectItem(item, itemId)
179
189
  }, i);
@@ -210,7 +220,7 @@ const HvList = (props) => {
210
220
  ...rest
211
221
  }, ref) => /* @__PURE__ */ jsx(HvListContainer, {
212
222
  id,
213
- className: clsx(className, listClasses.root, classes == null ? void 0 : classes.root),
223
+ className: cx(classes.root, className),
214
224
  role: selectable ? "listbox" : "menu",
215
225
  interactive: true,
216
226
  condensed,
@@ -219,11 +229,11 @@ const HvList = (props) => {
219
229
  ref,
220
230
  ...rest
221
231
  }));
222
- }, [id, useSelector, className, classes, condensed, selectable, multiSelect]);
232
+ }, [cx, id, useSelector, className, classes, condensed, selectable, multiSelect]);
223
233
  return /* @__PURE__ */ jsxs(Fragment, {
224
234
  children: [multiSelect && useSelector && showSelectAll && renderSelectAll(), filteredList.length > 0 && !virtualized && /* @__PURE__ */ jsx(HvListContainer, {
225
235
  id,
226
- className: clsx(className, listClasses.root, classes == null ? void 0 : classes.root),
236
+ className: cx(classes.root, className),
227
237
  role: selectable ? "listbox" : "menu",
228
238
  interactive: true,
229
239
  condensed,
@@ -231,9 +241,9 @@ const HvList = (props) => {
231
241
  "aria-multiselectable": selectable && multiSelect || void 0,
232
242
  ...others,
233
243
  children: filteredList.map((item, i) => renderListItem(item, i))
234
- }), filteredList.length > 0 && virtualized && /* @__PURE__ */ jsx(StyledFixedSizeList, {
244
+ }), filteredList.length > 0 && virtualized && /* @__PURE__ */ jsx(FixedSizeList, {
235
245
  ref: listRef,
236
- className: clsx(listClasses.virtualizedRoot, classes == null ? void 0 : classes.virtualizedRoot),
246
+ className: classes.virtualizedRoot,
237
247
  height: (height || 0) + 5,
238
248
  width: "100%",
239
249
  itemCount: filteredList.length,
@@ -245,6 +255,7 @@ const HvList = (props) => {
245
255
  });
246
256
  };
247
257
  export {
248
- HvList
258
+ HvList,
259
+ staticClasses as listClasses
249
260
  };
250
261
  //# sourceMappingURL=List.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","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.js","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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"}