@hitachivantara/uikit-react-core 5.18.0 → 5.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
  2. package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +2 -5
  4. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
  5. package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
  6. package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
  7. package/dist/cjs/components/Box/Box.cjs +2 -2
  8. package/dist/cjs/components/Box/Box.cjs.map +1 -1
  9. package/dist/cjs/components/Carousel/Carousel.cjs +8 -8
  10. package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
  11. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +8 -8
  12. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -1
  13. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +2 -2
  14. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -1
  15. package/dist/cjs/components/DatePicker/DatePicker.cjs +2 -2
  16. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  17. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  18. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  19. package/dist/cjs/components/Dropdown/List/List.cjs +1 -1
  20. package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
  21. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +1 -1
  22. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
  23. package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs +16 -13
  24. package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs.map +1 -1
  25. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +26 -15
  26. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
  27. package/dist/cjs/components/Input/Input.cjs +83 -75
  28. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  29. package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +2 -2
  30. package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
  31. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +10 -10
  32. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
  33. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  34. package/dist/cjs/components/Pagination/Pagination.styles.cjs +1 -3
  35. package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
  36. package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -1
  37. package/dist/cjs/components/Slider/Slider.cjs +1 -1
  38. package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
  39. package/dist/cjs/components/Snackbar/Snackbar.cjs +9 -14
  40. package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
  41. package/dist/cjs/components/Snackbar/Snackbar.styles.cjs +38 -29
  42. package/dist/cjs/components/Snackbar/Snackbar.styles.cjs.map +1 -1
  43. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +22 -18
  44. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
  45. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs +37 -89
  46. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs.map +1 -1
  47. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +34 -64
  48. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
  49. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs +28 -0
  50. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs.map +1 -0
  51. package/dist/cjs/components/Table/TableCell/TableCell.cjs +6 -3
  52. package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
  53. package/dist/cjs/components/Table/TableRow/TableRow.cjs +9 -6
  54. package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
  55. package/dist/cjs/components/TagsInput/TagsInput.cjs +1 -1
  56. package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  57. package/dist/cjs/components/TextArea/TextArea.cjs +45 -43
  58. package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
  59. package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +1 -1
  60. package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
  61. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -7
  62. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  63. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +5 -5
  64. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
  65. package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs +1 -4
  66. package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
  67. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +5 -5
  68. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  69. package/dist/cjs/hooks/useWidth.cjs.map +1 -1
  70. package/dist/cjs/index.cjs +8 -6
  71. package/dist/cjs/index.cjs.map +1 -1
  72. package/dist/cjs/providers/ThemeProvider.cjs +20 -18
  73. package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
  74. package/dist/esm/components/Accordion/Accordion.js +1 -1
  75. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  76. package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -5
  77. package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
  78. package/dist/esm/components/BaseInput/BaseInput.js +1 -1
  79. package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
  80. package/dist/esm/components/Box/Box.js +2 -2
  81. package/dist/esm/components/Box/Box.js.map +1 -1
  82. package/dist/esm/components/Carousel/Carousel.js +9 -9
  83. package/dist/esm/components/Carousel/Carousel.js.map +1 -1
  84. package/dist/esm/components/ColorPicker/Fields/Fields.js +8 -8
  85. package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -1
  86. package/dist/esm/components/ColorPicker/Picker/Picker.js +2 -2
  87. package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -1
  88. package/dist/esm/components/DatePicker/DatePicker.js +2 -2
  89. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  90. package/dist/esm/components/Dialog/Dialog.js +1 -1
  91. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  92. package/dist/esm/components/Dropdown/List/List.js +1 -1
  93. package/dist/esm/components/Dropdown/List/List.js.map +1 -1
  94. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +1 -1
  95. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  96. package/dist/esm/components/Forms/Suggestions/Suggestions.js +17 -14
  97. package/dist/esm/components/Forms/Suggestions/Suggestions.js.map +1 -1
  98. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +26 -15
  99. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  100. package/dist/esm/components/Input/Input.js +84 -76
  101. package/dist/esm/components/Input/Input.js.map +1 -1
  102. package/dist/esm/components/ListContainer/ListItem/ListItem.js +2 -2
  103. package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
  104. package/dist/esm/components/MultiButton/MultiButton.styles.js +10 -10
  105. package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
  106. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  107. package/dist/esm/components/Pagination/Pagination.styles.js +1 -3
  108. package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
  109. package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -1
  110. package/dist/esm/components/Slider/Slider.js +2 -2
  111. package/dist/esm/components/Slider/Slider.js.map +1 -1
  112. package/dist/esm/components/Snackbar/Snackbar.js +12 -16
  113. package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
  114. package/dist/esm/components/Snackbar/Snackbar.styles.js +38 -26
  115. package/dist/esm/components/Snackbar/Snackbar.styles.js.map +1 -1
  116. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +21 -18
  117. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
  118. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js +37 -86
  119. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js.map +1 -1
  120. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +35 -62
  121. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
  122. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js +28 -0
  123. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js.map +1 -0
  124. package/dist/esm/components/Table/TableCell/TableCell.js +6 -3
  125. package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
  126. package/dist/esm/components/Table/TableRow/TableRow.js +9 -6
  127. package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
  128. package/dist/esm/components/TagsInput/TagsInput.js +1 -1
  129. package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
  130. package/dist/esm/components/TextArea/TextArea.js +46 -44
  131. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  132. package/dist/esm/components/VerticalNavigation/Header/Header.js +1 -1
  133. package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
  134. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -7
  135. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  136. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +5 -5
  137. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  138. package/dist/esm/components/VerticalNavigation/TreeView/descendants.js +1 -4
  139. package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
  140. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -6
  141. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  142. package/dist/esm/hooks/useWidth.js.map +1 -1
  143. package/dist/esm/index.js +128 -126
  144. package/dist/esm/index.js.map +1 -1
  145. package/dist/esm/providers/ThemeProvider.js +21 -19
  146. package/dist/esm/providers/ThemeProvider.js.map +1 -1
  147. package/dist/types/index.d.ts +156 -120
  148. package/package.json +3 -3
  149. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs +0 -8
  150. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +0 -1
  151. package/dist/cjs/components/Snackbar/snackbarClasses.cjs +0 -8
  152. package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +0 -1
  153. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js +0 -8
  154. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +0 -1
  155. package/dist/esm/components/Snackbar/snackbarClasses.js +0 -8
  156. package/dist/esm/components/Snackbar/snackbarClasses.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Header.cjs","sources":["../../../../../src/components/VerticalNavigation/Header/Header.tsx"],"sourcesContent":["import { Backwards, Forwards, Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { clsx } from \"clsx\";\nimport { HvButton, HvButtonProps, HvTypography } from \"@core/components\";\nimport { MouseEventHandler, useContext, useMemo } from \"react\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { StyledCollapseButton, StyledHeader } from \"./Header.styles\";\nimport verticalNavigationHeaderClasses, {\n HvVerticalNavigationHeaderClasses,\n} from \"./headerClasses\";\n\nexport interface HvVerticalNavigationHeaderProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * The title text to show on Header.\n */\n title?: string;\n /**\n * Icon to show when Vertical Navigation is collapsed.\n */\n openIcon?: React.ReactNode;\n /**\n * Icon to show when Vertical Navigation is expanded.\n */\n closeIcon?: React.ReactNode;\n /**\n * Props for the collapse button.\n */\n collapseButtonProps?: HvButtonProps;\n /**\n * Props for the back button.\n */\n backButtonProps?: HvButtonProps;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationHeaderClasses;\n /**\n * Handler for the collapse button.\n */\n onCollapseButtonClick?: MouseEventHandler<HTMLElement>;\n}\n\nexport const HvVerticalNavigationHeader = ({\n title,\n openIcon = <Forwards />,\n closeIcon = <Backwards />,\n collapseButtonProps,\n backButtonProps,\n className,\n classes,\n onCollapseButtonClick,\n ...others\n}: HvVerticalNavigationHeaderProps) => {\n const {\n isOpen,\n useIcons,\n headerTitle,\n slider,\n navigateToParentHandler,\n parentItem,\n } = useContext(VerticalNavigationContext);\n\n openIcon = !useIcons ? <Menu /> : openIcon;\n\n const backButtonClickHandler = () => {\n if (navigateToParentHandler) navigateToParentHandler();\n };\n\n // whenever we're in a sublevel, the parentItem is always a single item.\n // In the first level it's always an array with the first level elements.\n const shouldShowTitle = useMemo(\n () => !slider || (slider && !Array.isArray(parentItem)),\n [parentItem]\n );\n\n return shouldShowTitle ? (\n <StyledHeader\n className={clsx(\n className,\n verticalNavigationHeaderClasses.root,\n classes?.root,\n !isOpen &&\n clsx(verticalNavigationHeaderClasses.minimized, classes?.minimized)\n )}\n {...others}\n >\n {isOpen && headerTitle && slider && (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n onClick={backButtonClickHandler}\n {...backButtonProps}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n )}\n {isOpen && (\n <HvTypography variant={slider ? \"label\" : \"title3\"}>\n {headerTitle && slider ? headerTitle : title}\n </HvTypography>\n )}\n {onCollapseButtonClick && (\n <StyledCollapseButton\n icon\n variant=\"secondaryGhost\"\n onClick={onCollapseButtonClick}\n classes={{\n root: isOpen ? \"\" : verticalNavigationHeaderClasses.minimized,\n }}\n {...collapseButtonProps}\n >\n {isOpen ? closeIcon : openIcon}\n </StyledCollapseButton>\n )}\n </StyledHeader>\n ) : null;\n};\n"],"names":["HvVerticalNavigationHeader","title","openIcon","_jsx","Forwards","closeIcon","Backwards","collapseButtonProps","backButtonProps","className","classes","onCollapseButtonClick","others","isOpen","useIcons","headerTitle","slider","navigateToParentHandler","parentItem","useContext","VerticalNavigationContext","Menu","backButtonClickHandler","shouldShowTitle","useMemo","Array","isArray","StyledHeader","clsx","verticalNavigationHeaderClasses","root","minimized","children","HvButton","icon","variant","onClick","iconSize","HvTypography","StyledCollapseButton"],"mappings":";;;;;;;;;;;AAiDO,MAAMA,6BAA6BA,CAAC;AAAA,EACzCC;AAAAA,EACAC,WAAWC,2BAAAA,IAACC,4BAAU;AAAA,EACtBC,YAAYF,2BAAAA,IAACG,6BAAW;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAC4B,MAAM;AAC/B,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EAAAA,IACEC,MAAAA,WAAWC,0BAAAA,yBAAyB;AAExClB,aAAW,CAACY,WAAWX,2BAAAA,IAACkB,gBAAAA,MAAI,CAAA,CAAE,IAAInB;AAElC,QAAMoB,yBAAyBA,MAAM;AAC/BL,QAAAA;AAAiD;EAAA;AAKvD,QAAMM,kBAAkBC,MAAAA,QACtB,MAAM,CAACR,UAAWA,UAAU,CAACS,MAAMC,QAAQR,UAAU,GACrD,CAACA,UAAU,CACb;AAEOK,SAAAA,kDACJI,4BAAY;AAAA,IACXlB,WAAWmB,KAAAA,KACTnB,WACAoB,cAAAA,QAAgCC,MAChCpB,mCAASoB,MACT,CAACjB,UACCe,KAAKC,KAAAA,cAAAA,QAAgCE,WAAWrB,mCAASqB,SAAS,CACtE;AAAA,IAAE,GACEnB;AAAAA,IAAMoB,UAAA,CAETnB,UAAUE,eAAeC,yCACvBiB,OAAAA,UAAQ;AAAA,MACPC,MAAI;AAAA,MACJC,SAAQ;AAAA,MACRC,SAASd;AAAAA,MAAuB,GAC5Bd;AAAAA,MAAewB,yCAElB1B,2BAAS;AAAA,QAAC+B,UAAS;AAAA,MAAA,CAAM;AAAA,IAAA,CAClB,GAEXxB,UACCV,2BAAAA,IAACmC,yBAAY;AAAA,MAACH,SAASnB,SAAS,UAAU;AAAA,MAASgB,UAChDjB,eAAeC,SAASD,cAAcd;AAAAA,IAAAA,CAC3B,GAEfU,yBACCR,2BAAAA,IAACoC,oCAAoB;AAAA,MACnBL,MAAI;AAAA,MACJC,SAAQ;AAAA,MACRC,SAASzB;AAAAA,MACTD,SAAS;AAAA,QACPoB,MAAMjB,SAAS,KAAKgB,cAAAA,QAAgCE;AAAAA,MACtD;AAAA,MAAE,GACExB;AAAAA,MAAmByB,UAEtBnB,SAASR,YAAYH;AAAAA,IAAAA,CACF,CACvB;AAAA,EACW,CAAA,IACZ;AACN;;"}
1
+ {"version":3,"file":"Header.cjs","sources":["../../../../../src/components/VerticalNavigation/Header/Header.tsx"],"sourcesContent":["import { Backwards, Forwards, Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { clsx } from \"clsx\";\nimport { HvButton, HvButtonProps, HvTypography } from \"@core/components\";\nimport { MouseEventHandler, useContext, useMemo } from \"react\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { StyledCollapseButton, StyledHeader } from \"./Header.styles\";\nimport verticalNavigationHeaderClasses, {\n HvVerticalNavigationHeaderClasses,\n} from \"./headerClasses\";\n\nexport interface HvVerticalNavigationHeaderProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * The title text to show on Header.\n */\n title?: string;\n /**\n * Icon to show when Vertical Navigation is collapsed.\n */\n openIcon?: React.ReactNode;\n /**\n * Icon to show when Vertical Navigation is expanded.\n */\n closeIcon?: React.ReactNode;\n /**\n * Props for the collapse button.\n */\n collapseButtonProps?: HvButtonProps;\n /**\n * Props for the back button.\n */\n backButtonProps?: HvButtonProps;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationHeaderClasses;\n /**\n * Handler for the collapse button.\n */\n onCollapseButtonClick?: MouseEventHandler<HTMLElement>;\n}\n\nexport const HvVerticalNavigationHeader = ({\n title,\n openIcon = <Forwards />,\n closeIcon = <Backwards />,\n collapseButtonProps,\n backButtonProps,\n className,\n classes,\n onCollapseButtonClick,\n ...others\n}: HvVerticalNavigationHeaderProps) => {\n const {\n isOpen,\n useIcons,\n headerTitle,\n slider,\n navigateToParentHandler,\n parentItem,\n } = useContext(VerticalNavigationContext);\n\n openIcon = !useIcons ? <Menu /> : openIcon;\n\n const backButtonClickHandler = () => {\n if (navigateToParentHandler) navigateToParentHandler();\n };\n\n // whenever we're in a sublevel, the parentItem is always a single item.\n // In the first level it's always an array with the first level elements.\n const shouldShowTitle = useMemo(\n () => !slider || (slider && !Array.isArray(parentItem)),\n [parentItem, slider]\n );\n\n return shouldShowTitle ? (\n <StyledHeader\n className={clsx(\n className,\n verticalNavigationHeaderClasses.root,\n classes?.root,\n !isOpen &&\n clsx(verticalNavigationHeaderClasses.minimized, classes?.minimized)\n )}\n {...others}\n >\n {isOpen && headerTitle && slider && (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n onClick={backButtonClickHandler}\n {...backButtonProps}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n )}\n {isOpen && (\n <HvTypography variant={slider ? \"label\" : \"title3\"}>\n {headerTitle && slider ? headerTitle : title}\n </HvTypography>\n )}\n {onCollapseButtonClick && (\n <StyledCollapseButton\n icon\n variant=\"secondaryGhost\"\n onClick={onCollapseButtonClick}\n classes={{\n root: isOpen ? \"\" : verticalNavigationHeaderClasses.minimized,\n }}\n {...collapseButtonProps}\n >\n {isOpen ? closeIcon : openIcon}\n </StyledCollapseButton>\n )}\n </StyledHeader>\n ) : null;\n};\n"],"names":["HvVerticalNavigationHeader","title","openIcon","_jsx","Forwards","closeIcon","Backwards","collapseButtonProps","backButtonProps","className","classes","onCollapseButtonClick","others","isOpen","useIcons","headerTitle","slider","navigateToParentHandler","parentItem","useContext","VerticalNavigationContext","Menu","backButtonClickHandler","shouldShowTitle","useMemo","Array","isArray","StyledHeader","clsx","verticalNavigationHeaderClasses","root","minimized","children","HvButton","icon","variant","onClick","iconSize","HvTypography","StyledCollapseButton"],"mappings":";;;;;;;;;;;AAiDO,MAAMA,6BAA6BA,CAAC;AAAA,EACzCC;AAAAA,EACAC,WAAWC,2BAAAA,IAACC,4BAAU;AAAA,EACtBC,YAAYF,2BAAAA,IAACG,6BAAW;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAC4B,MAAM;AAC/B,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EAAAA,IACEC,MAAAA,WAAWC,0BAAAA,yBAAyB;AAExClB,aAAW,CAACY,WAAWX,2BAAAA,IAACkB,gBAAAA,MAAI,CAAA,CAAE,IAAInB;AAElC,QAAMoB,yBAAyBA,MAAM;AAC/BL,QAAAA;AAAiD;EAAA;AAKvD,QAAMM,kBAAkBC,MAAAA,QACtB,MAAM,CAACR,UAAWA,UAAU,CAACS,MAAMC,QAAQR,UAAU,GACrD,CAACA,YAAYF,MAAM,CACrB;AAEOO,SAAAA,kDACJI,4BAAY;AAAA,IACXlB,WAAWmB,KAAAA,KACTnB,WACAoB,cAAAA,QAAgCC,MAChCpB,mCAASoB,MACT,CAACjB,UACCe,KAAKC,KAAAA,cAAAA,QAAgCE,WAAWrB,mCAASqB,SAAS,CACtE;AAAA,IAAE,GACEnB;AAAAA,IAAMoB,UAAA,CAETnB,UAAUE,eAAeC,yCACvBiB,OAAAA,UAAQ;AAAA,MACPC,MAAI;AAAA,MACJC,SAAQ;AAAA,MACRC,SAASd;AAAAA,MAAuB,GAC5Bd;AAAAA,MAAewB,yCAElB1B,2BAAS;AAAA,QAAC+B,UAAS;AAAA,MAAA,CAAM;AAAA,IAAA,CAClB,GAEXxB,UACCV,2BAAAA,IAACmC,yBAAY;AAAA,MAACH,SAASnB,SAAS,UAAU;AAAA,MAASgB,UAChDjB,eAAeC,SAASD,cAAcd;AAAAA,IAAAA,CAC3B,GAEfU,yBACCR,2BAAAA,IAACoC,oCAAoB;AAAA,MACnBL,MAAI;AAAA,MACJC,SAAQ;AAAA,MACRC,SAASzB;AAAAA,MACTD,SAAS;AAAA,QACPoB,MAAMjB,SAAS,KAAKgB,cAAAA,QAAgCE;AAAAA,MACtD;AAAA,MAAE,GACExB;AAAAA,MAAmByB,UAEtBnB,SAASR,YAAYH;AAAAA,IAAAA,CACF,CACvB;AAAA,EACW,CAAA,IACZ;AACN;;"}
@@ -141,8 +141,8 @@ const HvVerticalNavigationTree = ({
141
141
  onChange(event, selectedItem);
142
142
  }
143
143
  }
144
- }, [onChange, setSelected]);
145
- const treeViewItemMouseEnterHandler = (event, item) => {
144
+ }, [onChange, setSelected, setExpanded, isOpen, useIcons, data]);
145
+ const treeViewItemMouseEnterHandler = React.useCallback((event, item) => {
146
146
  const isCollapsed = useIcons && !isOpen;
147
147
  if (isCollapsed && item.data && !(navigationPopup == null ? void 0 : navigationPopup.fixedMode)) {
148
148
  const currentEventTarget = event.currentTarget;
@@ -155,14 +155,14 @@ const HvVerticalNavigationTree = ({
155
155
  } else if (isCollapsed && !item.data && !(navigationPopup == null ? void 0 : navigationPopup.fixedMode)) {
156
156
  setNavigationPopup(null);
157
157
  }
158
- };
158
+ }, [isOpen, useIcons, navigationPopup]);
159
159
  const handleToggle = React.useCallback((event, newExpanded) => {
160
160
  setExpanded(newExpanded);
161
161
  if (onToggle) {
162
162
  onToggle(event, newExpanded);
163
163
  }
164
164
  }, [onToggle, setExpanded]);
165
- const children = React.useMemo(() => data && createListHierarchy(data, id, classes, treeViewItemMouseEnterHandler, navigationPopup == null ? void 0 : navigationPopup.fixedMode), [classes, data, id, navigationPopup, isOpen]);
165
+ const children = React.useMemo(() => data && createListHierarchy(data, id, classes, treeViewItemMouseEnterHandler, navigationPopup == null ? void 0 : navigationPopup.fixedMode), [classes, data, id, navigationPopup, treeViewItemMouseEnterHandler]);
166
166
  React.useEffect(() => {
167
167
  if (!isOpen) {
168
168
  setNavigationPopup == null ? void 0 : setNavigationPopup(null);
@@ -171,16 +171,16 @@ const HvVerticalNavigationTree = ({
171
171
  React.useEffect(() => {
172
172
  if (setParentSelected)
173
173
  setParentSelected(selected);
174
- }, [selected, setSelected]);
174
+ }, [selected, setSelected, setParentSelected]);
175
175
  React.useEffect(() => {
176
176
  if (setParentData)
177
177
  setParentData(data);
178
- }, [data]);
178
+ }, [data, setParentData]);
179
179
  React.useEffect(() => {
180
180
  if (withParentData && selected && setParentItem && NavigationSlider_utils.getParentItemById(withParentData, selected)) {
181
181
  setParentItem(NavigationSlider_utils.getParentItemById(withParentData, selected));
182
182
  }
183
- }, [withParentData]);
183
+ }, [withParentData, selected, setParentItem]);
184
184
  const navigateToTargetHandler = (event, selectedItem) => {
185
185
  handleChange(event, selectedItem.id, selectedItem);
186
186
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.cjs","sources":["../../../../../src/components/VerticalNavigation/Navigation/Navigation.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useContext,\n useEffect,\n useState,\n ComponentProps,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport uniqueId from \"lodash/uniqueId\";\nimport { setId, wrapperTooltip } from \"@core/utils\";\nimport { useControlled } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport {\n HvVerticalNavigationTreeView,\n HvVerticalNavigationTreeViewItem,\n} from \"../TreeView\";\nimport verticalNavigationTreeClasses, {\n HvVerticalNavigationTreeClasses,\n} from \"./navigationClasses\";\nimport { StyledNav } from \"./Navigation.styles\";\nimport { HvVerticalNavigationSlider } from \"..\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { HvVerticalNavigationPopup } from \"../NavigationPopup/NavigationPopup\";\nimport { getParentItemById } from \"../NavigationSlider/utils/NavigationSlider.utils\";\n\nexport type NavigationData<T extends React.ElementType = \"a\"> =\n ComponentProps<T> &\n Record<string, any> & {\n /** The id to be applied to the root element. */\n id: string;\n /** The label to be rendered on the menu item. */\n label: string;\n /** The icon to be rendered. */\n icon?: React.ReactNode;\n /** The Data children subset. */\n data?: NavigationData<T>[];\n /** Whether the item is disabled and not interactive. */\n disabled?: boolean;\n /** Whether the item has a selected state. */\n selectable?: boolean;\n };\n\nconst createListHierarchy = (\n items,\n id,\n classes?: HvVerticalNavigationTreeClasses,\n mouseEnterHandler?: (event, item) => void,\n disableTooltip = false\n) =>\n items.map((item) => {\n const {\n id: itemId,\n label: itemLabel,\n icon,\n data: children,\n selectable,\n disabled,\n href,\n target,\n } = item;\n\n const ItemText = wrapperTooltip(true, itemLabel, itemLabel);\n\n const itemMouseEnterHandler = (event) => {\n mouseEnterHandler?.(event, item);\n };\n\n return (\n <HvVerticalNavigationTreeViewItem\n id={setId(id, itemId)}\n className={classes?.listItem}\n href={href}\n target={target}\n key={itemId}\n nodeId={itemId}\n label={<ItemText />}\n icon={icon}\n payload={item}\n selectable={selectable}\n disabled={disabled}\n onMouseEnter={itemMouseEnterHandler}\n disableTooltip={disableTooltip}\n >\n {children\n ? createListHierarchy(\n children,\n id,\n classes,\n mouseEnterHandler,\n disableTooltip\n )\n : undefined}\n </HvVerticalNavigationTreeViewItem>\n );\n });\n\nconst getAllParents = (items) => {\n const parents = items.filter(\n (item) => item.data != null && item.data.length > 0\n );\n const childParents = parents.flatMap((item) => getAllParents(item.data));\n\n return [...parents, ...childParents];\n};\n\nfunction pathToElement(data, targetId) {\n const path: string[] = [];\n\n if (data != null && data.length > 0) {\n for (let i = 0; i !== data.length; ++i) {\n const item = data[i];\n if (item.id === targetId) {\n path.push(item.id);\n break;\n }\n\n const subPaths = pathToElement(item.data, targetId);\n if (subPaths.length > 0) {\n path.push(item.id);\n path.push(...subPaths);\n break;\n }\n }\n }\n\n return path;\n}\n\nexport const HvVerticalNavigationTree = ({\n id,\n\n className,\n classes,\n\n data,\n\n mode = \"navigation\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n\n selected: selectedProp,\n defaultSelected,\n onChange,\n\n ...others\n}: HvVerticalNavigationTreeProps) => {\n const [selected, setSelected] = useControlled(selectedProp, defaultSelected);\n const [expanded, setExpanded] = useControlled(expandedProp, () => {\n if (defaultExpanded === true) {\n // all parent nodes will be expanded by default\n return getAllParents(data).map((item) => item.id);\n }\n\n if (defaultExpanded === false) {\n // all parent nodes will be collapsed by default\n return [];\n }\n\n if (defaultExpanded == null) {\n if (selected != null) {\n // the path to the selected node will be expanded (default behaviour)\n const path = pathToElement(data, selected);\n return path.slice(0, -1);\n }\n\n // nothing is expanded\n return [];\n }\n\n return defaultExpanded;\n });\n\n const {\n isOpen,\n useIcons,\n slider,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n\n setParentData,\n setParentSelected,\n } = useContext(VerticalNavigationContext);\n\n const [navigationPopup, setNavigationPopup] = useState<{\n // This value is needed to guarantee that the NavigationPopup is fully re-rendered with keeping any previous values\n uniqueKey: string;\n anchorEl: HTMLButtonElement | null;\n fixedMode: boolean;\n data: NavigationData[];\n } | null>(null);\n\n const handleChange = useCallback(\n (event, selectedId, selectedItem) => {\n if (useIcons && !isOpen && selectedItem.data) {\n const currentEventTarget = event.currentTarget;\n setNavigationPopup((prevState) => {\n // We want to close the popup in case the clicked element is the same as the previous one\n return prevState?.anchorEl === currentEventTarget\n ? null\n : {\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: true,\n data: selectedItem.data,\n };\n });\n\n // We need this stopPropagation or else the Popup will close due to the clickaway being triggered\n event.stopPropagation();\n } else {\n setSelected(selectedId);\n setExpanded((prevState) => {\n if (!isOpen) {\n return [...prevState, ...pathToElement(data, selectedId)];\n }\n return [...prevState];\n });\n setNavigationPopup(null);\n if (onChange) {\n onChange(event, selectedItem);\n }\n }\n },\n [onChange, setSelected]\n );\n\n const treeViewItemMouseEnterHandler = (event, item) => {\n const isCollapsed = useIcons && !isOpen;\n\n if (isCollapsed && item.data && !navigationPopup?.fixedMode) {\n const currentEventTarget = event.currentTarget;\n\n setNavigationPopup?.({\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: false,\n data: item.data,\n });\n } else if (isCollapsed && !item.data && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n };\n\n const handleToggle = useCallback(\n (event, newExpanded) => {\n setExpanded(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n },\n [onToggle, setExpanded]\n );\n\n const children = useMemo(\n () =>\n data &&\n createListHierarchy(\n data,\n id,\n classes,\n treeViewItemMouseEnterHandler,\n navigationPopup?.fixedMode\n ),\n [classes, data, id, navigationPopup, isOpen]\n );\n\n useEffect(() => {\n if (!isOpen) {\n setNavigationPopup?.(null);\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (setParentSelected) setParentSelected(selected);\n }, [selected, setSelected]);\n\n useEffect(() => {\n if (setParentData) setParentData(data);\n }, [data]);\n\n useEffect(() => {\n if (\n withParentData &&\n selected &&\n setParentItem &&\n getParentItemById(withParentData, selected)\n ) {\n setParentItem(getParentItemById(withParentData, selected));\n }\n }, [withParentData]);\n\n // navigation slider\n const navigateToTargetHandler = (event, selectedItem) => {\n handleChange(event, selectedItem.id, selectedItem);\n };\n\n const handleNavigationPopupClose = () => {\n setNavigationPopup(null);\n };\n\n const handleStyledNavMouseLeave = () => {\n if (useIcons && !isOpen && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n };\n\n return (\n <StyledNav\n id={id}\n className={clsx(\n className,\n verticalNavigationTreeClasses.root,\n classes?.root,\n !isOpen &&\n !useIcons &&\n clsx(verticalNavigationTreeClasses.collapsed, classes?.collapsed)\n )}\n onMouseLeave={handleStyledNavMouseLeave}\n {...others}\n >\n {slider ? (\n <HvVerticalNavigationSlider\n data={parentItem.data || withParentData}\n selected={selected}\n onNavigateToTarget={navigateToTargetHandler}\n onNavigateToChild={navigateToChildHandler}\n />\n ) : (\n <HvVerticalNavigationTreeView\n id={setId(id, \"tree\")}\n className={clsx(verticalNavigationTreeClasses.list, classes?.list)}\n selectable\n mode={mode}\n collapsible={collapsible}\n selected={selected}\n onChange={handleChange}\n expanded={expanded}\n onToggle={handleToggle}\n >\n {useIcons && !isOpen && navigationPopup && (\n <HvVerticalNavigationPopup\n id={setId(id, \"navigation-popup\")}\n key={navigationPopup.uniqueKey}\n anchorEl={navigationPopup.anchorEl}\n selected={selected}\n fixedMode={navigationPopup.fixedMode}\n data={navigationPopup.data}\n onClose={handleNavigationPopupClose}\n onChange={handleChange}\n className={clsx(\n verticalNavigationTreeClasses.navigationPopup,\n classes?.navigationPopup\n )}\n />\n )}\n {children}\n </HvVerticalNavigationTreeView>\n )}\n </StyledNav>\n );\n};\n\nexport interface HvVerticalNavigationTreeProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvVerticalNavigationTreeClasses;\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode?: NavigationMode;\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible?: boolean;\n /**\n * The ID of the selected page.\n */\n selected?: string;\n /**\n * When uncontrolled, defines the initial selected page ID.\n */\n defaultSelected?: string;\n /**\n * Callback fired when a navigation item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {object} page The data of the selected page.\n */\n onChange?: (event, page) => void;\n /**\n * Expanded nodes' ids.\n */\n expanded?: string[];\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n *\n * It also supports `true` for starting with all nodes expanded.\n * With `false` all nodes will be collapsed.\n *\n * By default it expands the needed nodes to display the current selection, if any.\n */\n defaultExpanded?: string[] | boolean;\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle?: (event, nodeIds) => void;\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * data - sub-menu items\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data?: NavigationData[];\n}\n\nexport type NavigationMode = \"treeview\" | \"navigation\" | \"slider\";\n"],"names":["createListHierarchy","items","id","classes","mouseEnterHandler","disableTooltip","map","item","itemId","label","itemLabel","icon","data","children","selectable","disabled","href","target","ItemText","wrapperTooltip","itemMouseEnterHandler","event","HvVerticalNavigationTreeViewItem","setId","className","listItem","nodeId","_jsx","payload","onMouseEnter","undefined","getAllParents","parents","filter","length","childParents","flatMap","pathToElement","targetId","path","i","push","subPaths","HvVerticalNavigationTree","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selected","selectedProp","defaultSelected","onChange","others","setSelected","useControlled","setExpanded","slice","isOpen","useIcons","slider","parentItem","setParentItem","withParentData","navigateToChildHandler","setParentData","setParentSelected","useContext","VerticalNavigationContext","navigationPopup","setNavigationPopup","useState","handleChange","useCallback","selectedId","selectedItem","currentEventTarget","currentTarget","prevState","anchorEl","uniqueKey","uniqueId","fixedMode","stopPropagation","treeViewItemMouseEnterHandler","isCollapsed","handleToggle","newExpanded","useMemo","useEffect","getParentItemById","navigateToTargetHandler","handleNavigationPopupClose","handleStyledNavMouseLeave","StyledNav","clsx","verticalNavigationTreeClasses","root","collapsed","onMouseLeave","HvVerticalNavigationSlider","onNavigateToTarget","onNavigateToChild","_jsxs","HvVerticalNavigationTreeView","list","HvVerticalNavigationPopup","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"Navigation.cjs","sources":["../../../../../src/components/VerticalNavigation/Navigation/Navigation.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useContext,\n useEffect,\n useState,\n ComponentProps,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport uniqueId from \"lodash/uniqueId\";\nimport { setId, wrapperTooltip } from \"@core/utils\";\nimport { useControlled } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport {\n HvVerticalNavigationTreeView,\n HvVerticalNavigationTreeViewItem,\n} from \"../TreeView\";\nimport verticalNavigationTreeClasses, {\n HvVerticalNavigationTreeClasses,\n} from \"./navigationClasses\";\nimport { StyledNav } from \"./Navigation.styles\";\nimport { HvVerticalNavigationSlider } from \"..\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { HvVerticalNavigationPopup } from \"../NavigationPopup/NavigationPopup\";\nimport { getParentItemById } from \"../NavigationSlider/utils/NavigationSlider.utils\";\n\nexport type NavigationData<T extends React.ElementType = \"a\"> =\n ComponentProps<T> &\n Record<string, any> & {\n /** The id to be applied to the root element. */\n id: string;\n /** The label to be rendered on the menu item. */\n label: string;\n /** The icon to be rendered. */\n icon?: React.ReactNode;\n /** The Data children subset. */\n data?: NavigationData<T>[];\n /** Whether the item is disabled and not interactive. */\n disabled?: boolean;\n /** Whether the item has a selected state. */\n selectable?: boolean;\n };\n\nconst createListHierarchy = (\n items,\n id,\n classes?: HvVerticalNavigationTreeClasses,\n mouseEnterHandler?: (event, item) => void,\n disableTooltip = false\n) =>\n items.map((item) => {\n const {\n id: itemId,\n label: itemLabel,\n icon,\n data: children,\n selectable,\n disabled,\n href,\n target,\n } = item;\n\n const ItemText = wrapperTooltip(true, itemLabel, itemLabel);\n\n const itemMouseEnterHandler = (event) => {\n mouseEnterHandler?.(event, item);\n };\n\n return (\n <HvVerticalNavigationTreeViewItem\n id={setId(id, itemId)}\n className={classes?.listItem}\n href={href}\n target={target}\n key={itemId}\n nodeId={itemId}\n label={<ItemText />}\n icon={icon}\n payload={item}\n selectable={selectable}\n disabled={disabled}\n onMouseEnter={itemMouseEnterHandler}\n disableTooltip={disableTooltip}\n >\n {children\n ? createListHierarchy(\n children,\n id,\n classes,\n mouseEnterHandler,\n disableTooltip\n )\n : undefined}\n </HvVerticalNavigationTreeViewItem>\n );\n });\n\nconst getAllParents = (items) => {\n const parents = items.filter(\n (item) => item.data != null && item.data.length > 0\n );\n const childParents = parents.flatMap((item) => getAllParents(item.data));\n\n return [...parents, ...childParents];\n};\n\nfunction pathToElement(data, targetId) {\n const path: string[] = [];\n\n if (data != null && data.length > 0) {\n for (let i = 0; i !== data.length; ++i) {\n const item = data[i];\n if (item.id === targetId) {\n path.push(item.id);\n break;\n }\n\n const subPaths = pathToElement(item.data, targetId);\n if (subPaths.length > 0) {\n path.push(item.id);\n path.push(...subPaths);\n break;\n }\n }\n }\n\n return path;\n}\n\nexport const HvVerticalNavigationTree = ({\n id,\n\n className,\n classes,\n\n data,\n\n mode = \"navigation\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n\n selected: selectedProp,\n defaultSelected,\n onChange,\n\n ...others\n}: HvVerticalNavigationTreeProps) => {\n const [selected, setSelected] = useControlled(selectedProp, defaultSelected);\n const [expanded, setExpanded] = useControlled(expandedProp, () => {\n if (defaultExpanded === true) {\n // all parent nodes will be expanded by default\n return getAllParents(data).map((item) => item.id);\n }\n\n if (defaultExpanded === false) {\n // all parent nodes will be collapsed by default\n return [];\n }\n\n if (defaultExpanded == null) {\n if (selected != null) {\n // the path to the selected node will be expanded (default behaviour)\n const path = pathToElement(data, selected);\n return path.slice(0, -1);\n }\n\n // nothing is expanded\n return [];\n }\n\n return defaultExpanded;\n });\n\n const {\n isOpen,\n useIcons,\n slider,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n\n setParentData,\n setParentSelected,\n } = useContext(VerticalNavigationContext);\n\n const [navigationPopup, setNavigationPopup] = useState<{\n // This value is needed to guarantee that the NavigationPopup is fully re-rendered with keeping any previous values\n uniqueKey: string;\n anchorEl: HTMLButtonElement | null;\n fixedMode: boolean;\n data: NavigationData[];\n } | null>(null);\n\n const handleChange = useCallback(\n (event, selectedId, selectedItem) => {\n if (useIcons && !isOpen && selectedItem.data) {\n const currentEventTarget = event.currentTarget;\n setNavigationPopup((prevState) => {\n // We want to close the popup in case the clicked element is the same as the previous one\n return prevState?.anchorEl === currentEventTarget\n ? null\n : {\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: true,\n data: selectedItem.data,\n };\n });\n\n // We need this stopPropagation or else the Popup will close due to the clickaway being triggered\n event.stopPropagation();\n } else {\n setSelected(selectedId);\n setExpanded((prevState) => {\n if (!isOpen) {\n return [...prevState, ...pathToElement(data, selectedId)];\n }\n return [...prevState];\n });\n setNavigationPopup(null);\n if (onChange) {\n onChange(event, selectedItem);\n }\n }\n },\n [onChange, setSelected, setExpanded, isOpen, useIcons, data]\n );\n\n const treeViewItemMouseEnterHandler = useCallback(\n (event, item) => {\n const isCollapsed = useIcons && !isOpen;\n\n if (isCollapsed && item.data && !navigationPopup?.fixedMode) {\n const currentEventTarget = event.currentTarget;\n\n setNavigationPopup?.({\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: false,\n data: item.data,\n });\n } else if (isCollapsed && !item.data && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n },\n [isOpen, useIcons, navigationPopup]\n );\n\n const handleToggle = useCallback(\n (event, newExpanded) => {\n setExpanded(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n },\n [onToggle, setExpanded]\n );\n\n const children = useMemo(\n () =>\n data &&\n createListHierarchy(\n data,\n id,\n classes,\n treeViewItemMouseEnterHandler,\n navigationPopup?.fixedMode\n ),\n [classes, data, id, navigationPopup, treeViewItemMouseEnterHandler]\n );\n\n useEffect(() => {\n if (!isOpen) {\n setNavigationPopup?.(null);\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (setParentSelected) setParentSelected(selected);\n }, [selected, setSelected, setParentSelected]);\n\n useEffect(() => {\n if (setParentData) setParentData(data);\n }, [data, setParentData]);\n\n useEffect(() => {\n if (\n withParentData &&\n selected &&\n setParentItem &&\n getParentItemById(withParentData, selected)\n ) {\n setParentItem(getParentItemById(withParentData, selected));\n }\n }, [withParentData, selected, setParentItem]);\n\n // navigation slider\n const navigateToTargetHandler = (event, selectedItem) => {\n handleChange(event, selectedItem.id, selectedItem);\n };\n\n const handleNavigationPopupClose = () => {\n setNavigationPopup(null);\n };\n\n const handleStyledNavMouseLeave = () => {\n if (useIcons && !isOpen && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n };\n\n return (\n <StyledNav\n id={id}\n className={clsx(\n className,\n verticalNavigationTreeClasses.root,\n classes?.root,\n !isOpen &&\n !useIcons &&\n clsx(verticalNavigationTreeClasses.collapsed, classes?.collapsed)\n )}\n onMouseLeave={handleStyledNavMouseLeave}\n {...others}\n >\n {slider ? (\n <HvVerticalNavigationSlider\n data={parentItem.data || withParentData}\n selected={selected}\n onNavigateToTarget={navigateToTargetHandler}\n onNavigateToChild={navigateToChildHandler}\n />\n ) : (\n <HvVerticalNavigationTreeView\n id={setId(id, \"tree\")}\n className={clsx(verticalNavigationTreeClasses.list, classes?.list)}\n selectable\n mode={mode}\n collapsible={collapsible}\n selected={selected}\n onChange={handleChange}\n expanded={expanded}\n onToggle={handleToggle}\n >\n {useIcons && !isOpen && navigationPopup && (\n <HvVerticalNavigationPopup\n id={setId(id, \"navigation-popup\")}\n key={navigationPopup.uniqueKey}\n anchorEl={navigationPopup.anchorEl}\n selected={selected}\n fixedMode={navigationPopup.fixedMode}\n data={navigationPopup.data}\n onClose={handleNavigationPopupClose}\n onChange={handleChange}\n className={clsx(\n verticalNavigationTreeClasses.navigationPopup,\n classes?.navigationPopup\n )}\n />\n )}\n {children}\n </HvVerticalNavigationTreeView>\n )}\n </StyledNav>\n );\n};\n\nexport interface HvVerticalNavigationTreeProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvVerticalNavigationTreeClasses;\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode?: NavigationMode;\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible?: boolean;\n /**\n * The ID of the selected page.\n */\n selected?: string;\n /**\n * When uncontrolled, defines the initial selected page ID.\n */\n defaultSelected?: string;\n /**\n * Callback fired when a navigation item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {object} page The data of the selected page.\n */\n onChange?: (event, page) => void;\n /**\n * Expanded nodes' ids.\n */\n expanded?: string[];\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n *\n * It also supports `true` for starting with all nodes expanded.\n * With `false` all nodes will be collapsed.\n *\n * By default it expands the needed nodes to display the current selection, if any.\n */\n defaultExpanded?: string[] | boolean;\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle?: (event, nodeIds) => void;\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * data - sub-menu items\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data?: NavigationData[];\n}\n\nexport type NavigationMode = \"treeview\" | \"navigation\" | \"slider\";\n"],"names":["createListHierarchy","items","id","classes","mouseEnterHandler","disableTooltip","map","item","itemId","label","itemLabel","icon","data","children","selectable","disabled","href","target","ItemText","wrapperTooltip","itemMouseEnterHandler","event","HvVerticalNavigationTreeViewItem","setId","className","listItem","nodeId","_jsx","payload","onMouseEnter","undefined","getAllParents","parents","filter","length","childParents","flatMap","pathToElement","targetId","path","i","push","subPaths","HvVerticalNavigationTree","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selected","selectedProp","defaultSelected","onChange","others","setSelected","useControlled","setExpanded","slice","isOpen","useIcons","slider","parentItem","setParentItem","withParentData","navigateToChildHandler","setParentData","setParentSelected","useContext","VerticalNavigationContext","navigationPopup","setNavigationPopup","useState","handleChange","useCallback","selectedId","selectedItem","currentEventTarget","currentTarget","prevState","anchorEl","uniqueKey","uniqueId","fixedMode","stopPropagation","treeViewItemMouseEnterHandler","isCollapsed","handleToggle","newExpanded","useMemo","useEffect","getParentItemById","navigateToTargetHandler","handleNavigationPopupClose","handleStyledNavMouseLeave","StyledNav","clsx","verticalNavigationTreeClasses","root","collapsed","onMouseLeave","HvVerticalNavigationSlider","onNavigateToTarget","onNavigateToChild","_jsxs","HvVerticalNavigationTreeView","list","HvVerticalNavigationPopup","onClose"],"mappings":"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"}
@@ -147,7 +147,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
147
147
  toggleExpansion(event, nodeId);
148
148
  }
149
149
  }
150
- }, [disabled, expandable, focus, focused, isExpanded, multiSelect, nodeId, toggleExpansion, treeviewMode]);
150
+ }, [disabled, expandable, focus, focused, isExpanded, multiSelect, nodeId, toggleExpansion, treeviewMode, isOpen]);
151
151
  const handleSelection = React.useCallback((event) => {
152
152
  if (selectable && !disabled) {
153
153
  if (treeviewMode && !focused && focus) {
@@ -186,7 +186,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
186
186
  if (onClick) {
187
187
  onClick(event);
188
188
  }
189
- }, [disabled, expandable, handleExpansion, handleSelection, onClick, selectable]);
189
+ }, [disabled, expandable, handleExpansion, handleSelection, onClick, selectable, isOpen]);
190
190
  const handleKeyDown = React.useCallback((event) => {
191
191
  let isEventHandled = false;
192
192
  const {
@@ -209,7 +209,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
209
209
  event.stopPropagation();
210
210
  }
211
211
  }
212
- }, [expandable, handleExpansion, handleSelection, selectable]);
212
+ }, [expandable, handleExpansion, handleSelection, selectable, isOpen]);
213
213
  const renderedContent = React.useMemo(() => /* @__PURE__ */ jsxRuntime.jsxs(TreeViewItem_styles.StyledContent, {
214
214
  id: setId.setId(id, "button"),
215
215
  component: href ? "a" : "div",
@@ -247,13 +247,13 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
247
247
  $expandable: !!expandable,
248
248
  children: label
249
249
  }), isOpen && expandable && (expanded ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropUpXS, {}) : /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropDownXS, {}))]
250
- }), [id, href, target, classes == null ? void 0 : classes.content, treeViewItemClasses.default.content, classes == null ? void 0 : classes.link, treeViewItemClasses.default.link, classes == null ? void 0 : classes.minimized, treeViewItemClasses.default.minimized, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label, disableTooltip]);
250
+ }), [id, href, target, classes == null ? void 0 : classes.content, classes == null ? void 0 : classes.link, classes == null ? void 0 : classes.minimized, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label, disableTooltip, payload == null ? void 0 : payload.label, children, isOpen, useIcons, isChildSelected, nodeId]);
251
251
  const renderedChildren = React.useMemo(() => children && /* @__PURE__ */ jsxRuntime.jsx(TreeViewItem_styles.StyledGroup, {
252
252
  id: setId.setId(id, "group"),
253
253
  className: clsx.clsx(treeViewItemClasses.default.group, classes == null ? void 0 : classes.group),
254
254
  role: treeviewMode ? "group" : void 0,
255
255
  children
256
- }), [children, treeViewItemClasses.default.group, classes == null ? void 0 : classes.group, id, treeviewMode]);
256
+ }), [children, classes == null ? void 0 : classes.group, id, treeviewMode]);
257
257
  return /* @__PURE__ */ jsxRuntime.jsxs(TreeViewItem_styles.StyledNode, {
258
258
  ref: handleRef,
259
259
  id: id ?? void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewItem.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"@core/hooks\";\nimport { setId } from \"@core/utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport {\n StyledContent,\n StyledGroup,\n StyledNode,\n StyledLabel,\n} from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"..\";\nimport { IconWrapper } from \"./IconWrapper\";\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, useIcons } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) + level * (collapsible ? 16 : 10),\n }}\n role={href ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <IconWrapper\n icon={useIcons && icon}\n label={payload?.label}\n hasChildren={Boolean(children)}\n showAvatar={!icon && useIcons}\n isOpen={isOpen}\n disableTooltip={disableTooltip}\n />\n\n {isOpen && (\n <StyledLabel $expandable={!!expandable}>{label}</StyledLabel>\n )}\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n treeViewItemClasses.content,\n classes?.link,\n treeViewItemClasses.link,\n classes?.minimized,\n treeViewItemClasses.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n disableTooltip,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, treeViewItemClasses.group, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id ?? undefined}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen && !useIcons && clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n useIcons &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","disableTooltip","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","useIcons","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","_jsx","IconWrapper","hasChildren","Boolean","showAvatar","StyledLabel","$expandable","DropUpXS","DropDownXS","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":"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"}
1
+ {"version":3,"file":"TreeViewItem.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"@core/hooks\";\nimport { setId } from \"@core/utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport {\n StyledContent,\n StyledGroup,\n StyledNode,\n StyledLabel,\n} from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"..\";\nimport { IconWrapper } from \"./IconWrapper\";\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, useIcons } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n isOpen,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n isOpen,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable, isOpen]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) + level * (collapsible ? 16 : 10),\n }}\n role={href ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <IconWrapper\n icon={useIcons && icon}\n label={payload?.label}\n hasChildren={Boolean(children)}\n showAvatar={!icon && useIcons}\n isOpen={isOpen}\n disableTooltip={disableTooltip}\n />\n\n {isOpen && (\n <StyledLabel $expandable={!!expandable}>{label}</StyledLabel>\n )}\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n classes?.link,\n classes?.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n disableTooltip,\n payload?.label,\n children,\n isOpen,\n useIcons,\n isChildSelected,\n nodeId,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id ?? undefined}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen && !useIcons && clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n useIcons &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","disableTooltip","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","useIcons","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","_jsx","IconWrapper","hasChildren","Boolean","showAvatar","StyledLabel","$expandable","DropUpXS","DropDownXS","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":"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"}
@@ -19,10 +19,7 @@ function binaryFindElement(array, element) {
19
19
  if (array[middle].element === element) {
20
20
  return middle;
21
21
  }
22
- if (
23
- // eslint-disable-next-line no-bitwise
24
- array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING
25
- ) {
22
+ if (array[middle].element.compareDocumentPosition(element) && Node.DOCUMENT_POSITION_PRECEDING) {
26
23
  end = middle - 1;
27
24
  } else {
28
25
  start = middle + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"descendants.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/descendants.tsx"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport { useEnhancedEffect } from \"@core/hooks\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\ntype Item = {\n element?;\n index?;\n [key: string]: unknown;\n};\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n // eslint-disable-next-line no-bitwise\n array[middle].element.compareDocumentPosition(element) &\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = createContext<DescendantContextValue>({\n level: 0,\n descendants: [],\n});\n\ninterface DescendantContextValue {\n level?: number;\n registerDescendant?;\n unregisterDescendant?;\n descendants: Item[];\n parentId?;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = useState<{} | null>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(\n descendants,\n (item) => item.element === descendant.element\n );\n\n const previousDescendants: Item[] | null = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants && previousDescendants[position]\n // previousDescendants[position].element !== newDescendant.element\n // was not able to type check this, did not any difference\n );\n }\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = useState<Item[]>([]);\n\n const registerDescendant = useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = useCallback((element: Item) => {\n set((oldItems) =>\n oldItems.filter((item: Item) => element !== item.element)\n );\n }, []);\n\n const value = useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n\nexport type DescendantProviderProps = {\n children?: React.ReactNode;\n id?: string;\n level?: number;\n};\n"],"names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","createContext","level","descendants","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","forceUpdate","useState","registerDescendant","unregisterDescendant","parentId","useContext","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","_jsx","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"descendants.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/descendants.tsx"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport { useEnhancedEffect } from \"@core/hooks\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\ntype Item = {\n element?;\n index?;\n [key: string]: unknown;\n};\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n array[middle].element.compareDocumentPosition(element) &&\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = createContext<DescendantContextValue>({\n level: 0,\n descendants: [],\n});\n\ninterface DescendantContextValue {\n level?: number;\n registerDescendant?;\n unregisterDescendant?;\n descendants: Item[];\n parentId?;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = useState<{} | null>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(\n descendants,\n (item) => item.element === descendant.element\n );\n\n const previousDescendants: Item[] | null = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants && previousDescendants[position]\n // previousDescendants[position].element !== newDescendant.element\n // was not able to type check this, did not any difference\n );\n }\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = useState<Item[]>([]);\n\n const registerDescendant = useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = useCallback((element: Item) => {\n set((oldItems) =>\n oldItems.filter((item: Item) => element !== item.element)\n );\n }, []);\n\n const value = useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n\nexport type DescendantProviderProps = {\n children?: React.ReactNode;\n id?: string;\n level?: number;\n};\n"],"names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","createContext","level","descendants","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","forceUpdate","useState","registerDescendant","unregisterDescendant","parentId","useContext","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","_jsx","Provider"],"mappings":"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"}
@@ -26,13 +26,13 @@ const HvVerticalNavigation = ({
26
26
  const [parentItem, setParentItem] = React.useState(initialParentItem);
27
27
  const hasAnyChildWithData = React.useMemo(() => VerticalNavigation_utils.hasChildNavigationItems(parentData), [parentData]);
28
28
  React.useEffect(() => setHeaderTitle(parentItem == null ? void 0 : parentItem.label), [parentItem, setParentItem]);
29
- const navigateToParentHandler = () => {
29
+ const navigateToParentHandler = React.useCallback(() => {
30
30
  setParentItem(NavigationSlider_utils.getParentItemById(withParentData, parentItem.id));
31
- };
32
- const navigateToChildHandler = (event, item) => {
31
+ }, [parentItem, setParentItem, withParentData]);
32
+ const navigateToChildHandler = React.useCallback((event, item) => {
33
33
  setParentItem(NavigationSlider_utils.getNavigationItemById(withParentData, item.id));
34
34
  event.stopPropagation();
35
- };
35
+ }, [setParentItem, withParentData]);
36
36
  const value = React.useMemo(() => ({
37
37
  isOpen: open,
38
38
  useIcons,
@@ -49,7 +49,7 @@ const HvVerticalNavigation = ({
49
49
  parentSelected,
50
50
  setParentSelected,
51
51
  hasAnyChildWithData
52
- }), [open, useIcons, slider, headerTitle, setHeaderTitle, parentItem, setParentItem, withParentData, navigateToChildHandler, navigateToParentHandler, hasAnyChildWithData]);
52
+ }), [open, useIcons, slider, headerTitle, setHeaderTitle, parentItem, setParentItem, withParentData, navigateToChildHandler, navigateToParentHandler, hasAnyChildWithData, parentData, parentSelected]);
53
53
  const content = /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigationContext.VerticalNavigationContext.Provider, {
54
54
  value,
55
55
  children: /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigation_styles.StyledRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { StyledRoot } from \"./VerticalNavigation.styles\";\nimport verticalNavigationClasses, {\n HvVerticalNavigationClasses,\n} from \"./verticalNavigationClasses\";\nimport { NavigationData, VerticalNavigationContext } from \".\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\n\nexport interface HvVerticalNavigationProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n *\n * @deprecated - `useIcons` property should be used instead.\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n /**\n * Boolean to determine if icons should be displayed in the navigation menu.\n * When `true` a icon will always be displayed, if no icon is provided the first letter of the label will be\n * displayed inside an Avatar component.\n * When `false` no icons will be shown, even if an icon is provided.\n */\n useIcons?: boolean;\n}\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Although both the hierarchically organized data and the visual style resemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n open = true,\n\n slider = false,\n\n useIcons = false,\n\n ...others\n}: HvVerticalNavigationProps) => {\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData]\n );\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = () => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n };\n\n const navigateToChildHandler = (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n };\n\n const value = useMemo(\n () => ({\n isOpen: open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <StyledRoot\n id={id}\n className={clsx(\n className,\n verticalNavigationClasses.root,\n classes?.root,\n !open && verticalNavigationClasses.collapsed,\n slider && verticalNavigationClasses.slider,\n classes?.collapsed\n )}\n hasAnyChildWithData={hasAnyChildWithData}\n {...others}\n >\n {children}\n </StyledRoot>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","id","className","classes","children","open","slider","useIcons","others","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","hasAnyChildWithData","hasChildNavigationItems","useEffect","label","navigateToParentHandler","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","VerticalNavigationContext","Provider","StyledRoot","clsx","verticalNavigationClasses","root","collapsed"],"mappings":";;;;;;;;;;AAsEO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EAEAC,OAAO;AAAA,EAEPC,SAAS;AAAA,EAETC,WAAW;AAAA,EAEX,GAAGC;AACsB,MAAM;AAC/B,QAAM,CAACC,YAAYC,aAAa,IAAIC,MAAAA,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,MAAS,SAAA;AAErD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,MAA6B,SAAA;AAG7DK,QAAAA,iBAAiBC,MAAAA,QACrB,MAAMC,uBAAAA,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CACb;AAEMU,QAAAA,oBAAoBF,cACxB,MAAMG,yCAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CACjC;AAEA,QAAM,CAACS,YAAYC,aAAa,IAAIX,eAASQ,iBAAiB;AAExDI,QAAAA,sBAAsBN,MAAAA,QAC1B,MAAMO,yBAAAA,wBAAwBf,UAAU,GACxC,CAACA,UAAU,CACb;AAGEgB,kBAAA,MAAMV,eAAeM,yCAAYK,KAAK,GACtC,CAACL,YAAYC,aAAa,CAC5B;AAEA,QAAMK,0BAA0BA,MAAM;AACpCL,kBAAcF,uBAAAA,kBAAkBJ,gBAAgBK,WAAWpB,EAAE,CAAC;AAAA,EAAA;AAG1D2B,QAAAA,yBAAyBA,CAACC,OAAOC,SAAS;AAC9CR,kBAAcS,uBAAAA,sBAAsBf,gBAAgBc,KAAK7B,EAAE,CAAC;AAC5D4B,UAAMG,gBAAgB;AAAA,EAAA;AAGlBC,QAAAA,QAAQhB,MAAAA,QACZ,OAAO;AAAA,IACLiB,QAAQ7B;AAAAA,IACRE;AAAAA,IACAD;AAAAA,IACAQ;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAC;AAAAA,IACAN;AAAAA,IACAY;AAAAA,IACAD;AAAAA,IAEAlB;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAU;AAAAA,EAEF,IAAA,CACElB,MACAE,UACAD,QACAQ,aACAC,gBACAM,YACAC,eACAN,gBACAY,wBACAD,yBACAJ,mBAAmB,CAEvB;AAEMY,QAAAA,UACHC,2BAAAA,IAAAA,0BAAAA,0BAA0BC,UAAQ;AAAA,IAACJ;AAAAA,IAAa7B,yCAC9CkC,sCAAU;AAAA,MACTrC;AAAAA,MACAC,WAAWqC,KAAAA,KACTrC,WACAsC,0BAAAA,QAA0BC,MAC1BtC,mCAASsC,MACT,CAACpC,QAAQmC,kCAA0BE,WACnCpC,UAAUkC,0BAA0BlC,QAAAA,QACpCH,mCAASuC,SACX;AAAA,MACAnB;AAAAA,MAAyC,GACrCf;AAAAA,MAAMJ;AAAAA,IAAAA,CAGA;AAAA,EAAA,CACsB;AAG/B+B,SAAAA;AACT;;"}
1
+ {"version":3,"file":"VerticalNavigation.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { StyledRoot } from \"./VerticalNavigation.styles\";\nimport verticalNavigationClasses, {\n HvVerticalNavigationClasses,\n} from \"./verticalNavigationClasses\";\nimport { NavigationData, VerticalNavigationContext } from \".\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\n\nexport interface HvVerticalNavigationProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n *\n * @deprecated - `useIcons` property should be used instead.\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n /**\n * Boolean to determine if icons should be displayed in the navigation menu.\n * When `true` a icon will always be displayed, if no icon is provided the first letter of the label will be\n * displayed inside an Avatar component.\n * When `false` no icons will be shown, even if an icon is provided.\n */\n useIcons?: boolean;\n}\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Although both the hierarchically organized data and the visual style resemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n open = true,\n\n slider = false,\n\n useIcons = false,\n\n ...others\n}: HvVerticalNavigationProps) => {\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData]\n );\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = useCallback(() => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n }, [parentItem, setParentItem, withParentData]);\n\n const navigateToChildHandler = useCallback(\n (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n },\n [setParentItem, withParentData]\n );\n\n const value = useMemo(\n () => ({\n isOpen: open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n parentData,\n parentSelected,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <StyledRoot\n id={id}\n className={clsx(\n className,\n verticalNavigationClasses.root,\n classes?.root,\n !open && verticalNavigationClasses.collapsed,\n slider && verticalNavigationClasses.slider,\n classes?.collapsed\n )}\n hasAnyChildWithData={hasAnyChildWithData}\n {...others}\n >\n {children}\n </StyledRoot>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","id","className","classes","children","open","slider","useIcons","others","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","hasAnyChildWithData","hasChildNavigationItems","useEffect","label","navigateToParentHandler","useCallback","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","VerticalNavigationContext","Provider","StyledRoot","clsx","verticalNavigationClasses","root","collapsed"],"mappings":";;;;;;;;;;AAsEO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EAEAC,OAAO;AAAA,EAEPC,SAAS;AAAA,EAETC,WAAW;AAAA,EAEX,GAAGC;AACsB,MAAM;AAC/B,QAAM,CAACC,YAAYC,aAAa,IAAIC,MAAAA,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,MAAS,SAAA;AAErD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,MAA6B,SAAA;AAG7DK,QAAAA,iBAAiBC,MAAAA,QACrB,MAAMC,uBAAAA,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CACb;AAEMU,QAAAA,oBAAoBF,cACxB,MAAMG,yCAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CACjC;AAEA,QAAM,CAACS,YAAYC,aAAa,IAAIX,eAASQ,iBAAiB;AAExDI,QAAAA,sBAAsBN,MAAAA,QAC1B,MAAMO,yBAAAA,wBAAwBf,UAAU,GACxC,CAACA,UAAU,CACb;AAGEgB,kBAAA,MAAMV,eAAeM,yCAAYK,KAAK,GACtC,CAACL,YAAYC,aAAa,CAC5B;AAEMK,QAAAA,0BAA0BC,MAAAA,YAAY,MAAM;AAChDN,kBAAcF,uBAAAA,kBAAkBJ,gBAAgBK,WAAWpB,EAAE,CAAC;AAAA,EAC7D,GAAA,CAACoB,YAAYC,eAAeN,cAAc,CAAC;AAE9C,QAAMa,yBAAyBD,MAAAA,YAC7B,CAACE,OAAOC,SAAS;AACfT,kBAAcU,uBAAAA,sBAAsBhB,gBAAgBe,KAAK9B,EAAE,CAAC;AAC5D6B,UAAMG,gBAAgB;AAAA,EAAA,GAExB,CAACX,eAAeN,cAAc,CAChC;AAEMkB,QAAAA,QAAQjB,MAAAA,QACZ,OAAO;AAAA,IACLkB,QAAQ9B;AAAAA,IACRE;AAAAA,IACAD;AAAAA,IACAQ;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAC;AAAAA,IACAN;AAAAA,IACAa;AAAAA,IACAF;AAAAA,IAEAlB;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAU;AAAAA,EAAAA,IAEF,CACElB,MACAE,UACAD,QACAQ,aACAC,gBACAM,YACAC,eACAN,gBACAa,wBACAF,yBACAJ,qBACAd,YACAG,cAAc,CAElB;AAEMwB,QAAAA,UACHC,2BAAAA,IAAAA,0BAAAA,0BAA0BC,UAAQ;AAAA,IAACJ;AAAAA,IAAa9B,yCAC9CmC,sCAAU;AAAA,MACTtC;AAAAA,MACAC,WAAWsC,KAAAA,KACTtC,WACAuC,0BAAAA,QAA0BC,MAC1BvC,mCAASuC,MACT,CAACrC,QAAQoC,kCAA0BE,WACnCrC,UAAUmC,0BAA0BnC,QAAAA,QACpCH,mCAASwC,SACX;AAAA,MACApB;AAAAA,MAAyC,GACrCf;AAAAA,MAAMJ;AAAAA,IAAAA,CAGA;AAAA,EAAA,CACsB;AAG/BgC,SAAAA;AACT;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWidth.cjs","sources":["../../../src/hooks/useWidth.ts"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { Breakpoint, useMediaQuery, useTheme } from \"@mui/material\";\n\nexport const useWidth = () => {\n const muiTheme = useTheme();\n const keys = Object.keys(theme.breakpoints.values).reverse();\n return (\n keys.reduce((output, key) => {\n const matches = useMediaQuery(muiTheme.breakpoints.up(key as Breakpoint));\n\n return !output && matches ? key : output;\n }, \"\") || \"xs\"\n );\n};\n"],"names":["useWidth","muiTheme","useTheme","keys","Object","theme","breakpoints","values","reverse","reduce","output","key","matches","useMediaQuery","up"],"mappings":";;;;AAGO,MAAMA,WAAWA,MAAM;AAC5B,QAAMC,WAAWC,SAAAA;AACjB,QAAMC,OAAOC,OAAOD,KAAKE,YAAAA,MAAMC,YAAYC,MAAM,EAAEC;AACnD,SACEL,KAAKM,OAAO,CAACC,QAAQC,QAAQ;AAC3B,UAAMC,UAAUC,SAAAA,cAAcZ,SAASK,YAAYQ,GAAGH,IAAkB;AAEjE,WAAA,CAACD,UAAUE,UAAUD,MAAMD;AAAAA,EAAAA,GACjC,EAAE,KAAK;AAEd;;"}
1
+ {"version":3,"file":"useWidth.cjs","sources":["../../../src/hooks/useWidth.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { Breakpoint, useMediaQuery, useTheme } from \"@mui/material\";\n\nexport const useWidth = () => {\n const muiTheme = useTheme();\n const keys = Object.keys(theme.breakpoints.values).reverse();\n return (\n keys.reduce((output, key) => {\n const matches = useMediaQuery(muiTheme.breakpoints.up(key as Breakpoint));\n\n return !output && matches ? key : output;\n }, \"\") || \"xs\"\n );\n};\n"],"names":["useWidth","muiTheme","useTheme","keys","Object","theme","breakpoints","values","reverse","reduce","output","key","matches","useMediaQuery","up"],"mappings":";;;;AAIO,MAAMA,WAAWA,MAAM;AAC5B,QAAMC,WAAWC,SAAAA;AACjB,QAAMC,OAAOC,OAAOD,KAAKE,YAAAA,MAAMC,YAAYC,MAAM,EAAEC;AACnD,SACEL,KAAKM,OAAO,CAACC,QAAQC,QAAQ;AAC3B,UAAMC,UAAUC,SAAAA,cAAcZ,SAASK,YAAYQ,GAAGH,IAAkB;AAEjE,WAAA,CAACD,UAAUE,UAAUD,MAAMD;AAAAA,EAAAA,GACjC,EAAE,KAAK;AAEd;;"}
@@ -158,10 +158,11 @@ const Banner_styles = require("./components/Banner/Banner.styles.cjs");
158
158
  const Banner = require("./components/Banner/Banner.cjs");
159
159
  const BannerContent_styles = require("./components/Banner/BannerContent/BannerContent.styles.cjs");
160
160
  const BannerContent = require("./components/Banner/BannerContent/BannerContent.cjs");
161
- const snackbarClasses = require("./components/Snackbar/snackbarClasses.cjs");
161
+ const Snackbar_styles = require("./components/Snackbar/Snackbar.styles.cjs");
162
162
  const Snackbar = require("./components/Snackbar/Snackbar.cjs");
163
+ const SnackbarProvider_styles = require("./components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs");
163
164
  const SnackbarProvider = require("./components/Snackbar/SnackbarProvider/SnackbarProvider.cjs");
164
- const snackbarContentWrapperClasses = require("./components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs");
165
+ const SnackbarContentWrapper_styles = require("./components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs");
165
166
  const SnackbarContentWrapper = require("./components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs");
166
167
  const bulkActionsClasses = require("./components/BulkActions/bulkActionsClasses.cjs");
167
168
  const BulkActions = require("./components/BulkActions/BulkActions.cjs");
@@ -469,12 +470,13 @@ exports.bannerClasses = Banner_styles.staticClasses;
469
470
  exports.HvBanner = Banner.HvBanner;
470
471
  exports.bannerContentClasses = BannerContent_styles.staticClasses;
471
472
  exports.HvBannerContent = BannerContent.HvBannerContent;
472
- exports.snackbarClasses = snackbarClasses.default;
473
+ exports.snackbarClasses = Snackbar_styles.staticClasses;
473
474
  exports.HvSnackbar = Snackbar.HvSnackbar;
474
- exports.HvSnackbarProvider = SnackbarProvider.default;
475
+ exports.snackbarProviderClasses = SnackbarProvider_styles.staticClasses;
476
+ exports.HvSnackbarProvider = SnackbarProvider.HvSnackbarProvider;
475
477
  exports.useHvSnackbar = SnackbarProvider.useHvSnackbar;
476
- exports.snackbarContentClasses = snackbarContentWrapperClasses.default;
477
- exports.HvSnackbarContent = SnackbarContentWrapper.default;
478
+ exports.snackbarContentClasses = SnackbarContentWrapper_styles.staticClasses;
479
+ exports.HvSnackbarContent = SnackbarContentWrapper.HvSnackbarContent;
478
480
  exports.bulkActionsClasses = bulkActionsClasses.default;
479
481
  exports.HvBulkActions = BulkActions.HvBulkActions;
480
482
  exports.globalActionsClasses = globalActionsClasses.default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}