@hitachivantara/uikit-react-core 5.18.0 → 5.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +2 -5
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/Box/Box.cjs +2 -2
- package/dist/cjs/components/Box/Box.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.styles.cjs +6 -5
- package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +8 -8
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +8 -8
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +2 -2
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +2 -2
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.cjs +19 -13
- package/dist/cjs/components/DotPagination/DotPagination.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs +20 -67
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +1 -0
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs +16 -13
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +26 -15
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +83 -75
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +2 -2
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +10 -10
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.styles.cjs +1 -3
- package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.cjs +9 -14
- package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.styles.cjs +38 -29
- package/dist/cjs/components/Snackbar/Snackbar.styles.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +22 -18
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs +37 -89
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +34 -64
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs +28 -0
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs.map +1 -0
- package/dist/cjs/components/Table/TableCell/TableCell.cjs +6 -3
- package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs +9 -6
- package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.cjs +45 -43
- package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +20 -133
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.styles.cjs +107 -0
- package/dist/cjs/components/Typography/Typography.styles.cjs.map +1 -0
- package/dist/cjs/components/Typography/utils.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -7
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +5 -5
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs +1 -4
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +5 -5
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
- package/dist/cjs/hooks/useWidth.cjs.map +1 -1
- package/dist/cjs/index.cjs +13 -10
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/ThemeProvider.cjs +20 -18
- package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +1 -1
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -5
- package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/Box/Box.js +2 -2
- package/dist/esm/components/Box/Box.js.map +1 -1
- package/dist/esm/components/Button/Button.js +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/Button.styles.js +6 -5
- package/dist/esm/components/Button/Button.styles.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +9 -9
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/ColorPicker/Fields/Fields.js +8 -8
- package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -1
- package/dist/esm/components/ColorPicker/Picker/Picker.js +2 -2
- package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +2 -2
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +1 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.js +22 -15
- package/dist/esm/components/DotPagination/DotPagination.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.styles.js +20 -65
- package/dist/esm/components/DotPagination/DotPagination.styles.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +1 -0
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/components/Dropdown/List/List.js +1 -1
- package/dist/esm/components/Dropdown/List/List.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/Suggestions.js +17 -14
- package/dist/esm/components/Forms/Suggestions/Suggestions.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +26 -15
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/Input/Input.js +84 -76
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.js +2 -2
- package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.styles.js +10 -10
- package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.styles.js +1 -3
- package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +2 -2
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.js +12 -16
- package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.styles.js +38 -26
- package/dist/esm/components/Snackbar/Snackbar.styles.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +21 -18
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js +37 -86
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +35 -62
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js +28 -0
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js.map +1 -0
- package/dist/esm/components/Table/TableCell/TableCell.js +6 -3
- package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js +9 -6
- package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +46 -44
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +23 -133
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/Typography/Typography.styles.js +107 -0
- package/dist/esm/components/Typography/Typography.styles.js.map +1 -0
- package/dist/esm/components/Typography/utils.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -7
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +5 -5
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js +1 -4
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -6
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/hooks/useWidth.js.map +1 -1
- package/dist/esm/index.js +270 -267
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/ThemeProvider.js +21 -19
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/types/index.d.ts +265 -204
- package/package.json +3 -3
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs +0 -8
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs.map +0 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs +0 -8
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +0 -1
- package/dist/cjs/components/Snackbar/snackbarClasses.cjs +0 -8
- package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +0 -1
- package/dist/cjs/components/Typography/typographyClasses.cjs +0 -8
- package/dist/cjs/components/Typography/typographyClasses.cjs.map +0 -1
- package/dist/esm/components/DotPagination/dotPaginationClasses.js +0 -8
- package/dist/esm/components/DotPagination/dotPaginationClasses.js.map +0 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js +0 -8
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +0 -1
- package/dist/esm/components/Snackbar/snackbarClasses.js +0 -8
- package/dist/esm/components/Snackbar/snackbarClasses.js.map +0 -1
- package/dist/esm/components/Typography/typographyClasses.js +0 -8
- package/dist/esm/components/Typography/typographyClasses.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.cjs","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import {\n HvCheckBox,\n HvInput,\n HvList,\n HvPanel,\n HvTypography,\n} from \"@core/components\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => filterOptions[activeGroup]?.data.map((option) => option.id) || [],\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","onChange","indeterminate","checked","HvPanel","HvInput","root","search","type","placeholder","searchBoxPlaceholder","str","HvList","list","multiSelect","useSelector","showSelectAll","selectable","condensed","hasTooltips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.cjs","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import {\n HvCheckBox,\n HvInput,\n HvList,\n HvPanel,\n HvTypography,\n} from \"@core/components\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => filterOptions[activeGroup]?.data.map((option) => option.id) || [],\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n classes?.selectAllContainer,\n classes?.selectAll,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","onChange","indeterminate","checked","HvPanel","HvInput","root","search","type","placeholder","searchBoxPlaceholder","str","HvList","list","multiSelect","useSelector","showSelectAll","selectable","condensed","hasTooltips"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const clsx = require("clsx");
|
|
4
4
|
const React = require("react");
|
|
5
|
+
const material = require("@mui/material");
|
|
5
6
|
const Suggestions_styles = require("./Suggestions.styles.cjs");
|
|
6
7
|
const suggestionsClasses = require("./suggestionsClasses.cjs");
|
|
7
8
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
@@ -9,22 +10,24 @@ const useClickOutside = require("../../../hooks/useClickOutside.cjs");
|
|
|
9
10
|
const ListItem = require("../../ListContainer/ListItem/ListItem.cjs");
|
|
10
11
|
const FormElementContext = require("../FormElement/context/FormElementContext.cjs");
|
|
11
12
|
const setId = require("../../../utils/setId.cjs");
|
|
12
|
-
const HvSuggestions = ({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
const HvSuggestions = React.forwardRef((props, extRef) => {
|
|
14
|
+
const {
|
|
15
|
+
id,
|
|
16
|
+
className,
|
|
17
|
+
classes,
|
|
18
|
+
expanded = false,
|
|
19
|
+
anchorEl,
|
|
20
|
+
suggestionValues = [],
|
|
21
|
+
onClose,
|
|
22
|
+
onSuggestionSelected,
|
|
23
|
+
...others
|
|
24
|
+
} = props;
|
|
23
25
|
const {
|
|
24
26
|
elementId
|
|
25
27
|
} = React.useContext(FormElementContext.HvFormElementContext);
|
|
26
28
|
const localId = id ?? setId.setId(elementId, "suggestions");
|
|
27
29
|
const ref = React.useRef(null);
|
|
30
|
+
const forkedRef = material.useForkRef(ref, extRef);
|
|
28
31
|
const [isOpen, setIsOpen] = React.useState(expanded);
|
|
29
32
|
useClickOutside.useClickOutside(ref, (event) => {
|
|
30
33
|
setIsOpen(false);
|
|
@@ -35,7 +38,7 @@ const HvSuggestions = ({
|
|
|
35
38
|
}, [expanded]);
|
|
36
39
|
return /* @__PURE__ */ jsxRuntime.jsx(Suggestions_styles.StyledRoot, {
|
|
37
40
|
id: localId,
|
|
38
|
-
ref,
|
|
41
|
+
ref: forkedRef,
|
|
39
42
|
className: clsx.clsx(className, suggestionsClasses.default.root, classes == null ? void 0 : classes.root),
|
|
40
43
|
...others,
|
|
41
44
|
children: /* @__PURE__ */ jsxRuntime.jsx(Suggestions_styles.StyledPopper, {
|
|
@@ -58,6 +61,6 @@ const HvSuggestions = ({
|
|
|
58
61
|
})
|
|
59
62
|
})
|
|
60
63
|
});
|
|
61
|
-
};
|
|
64
|
+
});
|
|
62
65
|
exports.HvSuggestions = HvSuggestions;
|
|
63
66
|
//# sourceMappingURL=Suggestions.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Suggestions.cjs","sources":["../../../../../src/components/Forms/Suggestions/Suggestions.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, {
|
|
1
|
+
{"version":3,"file":"Suggestions.cjs","sources":["../../../../../src/components/Forms/Suggestions/Suggestions.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useForkRef } from \"@mui/material\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId } from \"@core/utils\";\nimport {\n StyledRoot,\n StyledSelectionList,\n StyledPopper,\n} from \"./Suggestions.styles\";\nimport { HvFormElementContext } from \"../FormElement\";\nimport { HvListItem } from \"../../ListContainer/ListItem\";\nimport { HvClickOutsideEvent, useClickOutside } from \"../../../hooks\";\nimport suggestionsClasses, { HvSuggestionsClasses } from \"./suggestionsClasses\";\n\nexport interface HvSuggestion {\n id?: string;\n label: React.ReactNode;\n value?: string;\n disabled?: boolean;\n}\n\nexport interface HvSuggestionsProps extends HvBaseProps {\n /** Whether suggestions is visible. */\n expanded?: boolean;\n /** The HTML element Suggestions attaches to. */\n anchorEl?: HTMLElement | null;\n /** Array of { id, label, ...others } values to display in the suggestion list */\n suggestionValues?: HvSuggestion[] | null;\n /** Function called when a suggestion is selected */\n onSuggestionSelected?: (event: React.MouseEvent, value: HvSuggestion) => void;\n /** Function called when suggestion list is closed */\n onClose?: (event: HvClickOutsideEvent) => void;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvSuggestionsClasses;\n}\n\nexport const HvSuggestions = forwardRef((props: HvSuggestionsProps, extRef) => {\n const {\n id,\n className,\n classes,\n expanded = false,\n anchorEl,\n suggestionValues = [],\n onClose,\n onSuggestionSelected,\n ...others\n } = props;\n const { elementId } = useContext(HvFormElementContext);\n const localId = id ?? setId(elementId, \"suggestions\");\n\n const ref = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef(ref, extRef);\n\n const [isOpen, setIsOpen] = useState(expanded);\n\n useClickOutside(ref, (event) => {\n setIsOpen(false);\n onClose?.(event);\n });\n\n useEffect(() => {\n setIsOpen(expanded);\n }, [expanded]);\n\n return (\n <StyledRoot\n id={localId}\n ref={forkedRef}\n className={clsx(className, suggestionsClasses.root, classes?.root)}\n {...others}\n >\n <StyledPopper\n open={isOpen}\n disablePortal\n anchorEl={anchorEl}\n className={clsx(suggestionsClasses.popper, classes?.popper)}\n >\n <StyledSelectionList\n className={clsx(suggestionsClasses.list, classes?.list)}\n id={setId(localId, \"list\")}\n onChange={onSuggestionSelected}\n >\n {suggestionValues?.map((item, i) => {\n const itemKey = item.id || setId(\"item\", i);\n\n return (\n <HvListItem\n key={itemKey}\n value={item}\n disabled={item.disabled || undefined}\n >\n {item.label}\n </HvListItem>\n );\n })}\n </StyledSelectionList>\n </StyledPopper>\n </StyledRoot>\n );\n});\n"],"names":["HvSuggestions","forwardRef","props","extRef","id","className","classes","expanded","anchorEl","suggestionValues","onClose","onSuggestionSelected","others","elementId","useContext","HvFormElementContext","localId","setId","ref","useRef","forkedRef","useForkRef","isOpen","setIsOpen","useState","useClickOutside","event","useEffect","StyledRoot","clsx","suggestionsClasses","root","children","StyledPopper","open","disablePortal","popper","StyledSelectionList","list","onChange","map","item","i","itemKey","HvListItem","value","disabled","undefined","label"],"mappings":";;;;;;;;;;;;AA2CO,MAAMA,gBAAgBC,MAAAA,WAAW,CAACC,OAA2BC,WAAW;AACvE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,WAAW;AAAA,IACXC;AAAAA,IACAC,mBAAmB,CAAE;AAAA,IACrBC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EACDV,IAAAA;AACE,QAAA;AAAA,IAAEW;AAAAA,EAAAA,IAAcC,MAAAA,WAAWC,mBAAAA,oBAAoB;AACrD,QAAMC,UAAUZ,MAAMa,MAAMJ,MAAAA,WAAW,aAAa;AAE9CK,QAAAA,MAAMC,aAAuB,IAAI;AACjCC,QAAAA,YAAYC,SAAAA,WAAWH,KAAKf,MAAM;AAExC,QAAM,CAACmB,QAAQC,SAAS,IAAIC,eAASjB,QAAQ;AAE7CkB,kCAAgBP,KAAMQ,CAAU,UAAA;AAC9BH,cAAU,KAAK;AACfb,uCAAUgB;AAAAA,EAAK,CAChB;AAEDC,QAAAA,UAAU,MAAM;AACdJ,cAAUhB,QAAQ;AAAA,EAAA,GACjB,CAACA,QAAQ,CAAC;AAEb,wCACGqB,mBAAAA,YAAU;AAAA,IACTxB,IAAIY;AAAAA,IACJE,KAAKE;AAAAA,IACLf,WAAWwB,KAAKxB,KAAAA,WAAWyB,mBAAmBC,QAAAA,MAAMzB,mCAASyB,IAAI;AAAA,IAAE,GAC/DnB;AAAAA,IAAMoB,yCAETC,iCAAY;AAAA,MACXC,MAAMZ;AAAAA,MACNa,eAAa;AAAA,MACb3B;AAAAA,MACAH,WAAWwB,KAAAA,KAAKC,mBAAAA,QAAmBM,QAAQ9B,mCAAS8B,MAAM;AAAA,MAAEJ,yCAE3DK,wCAAmB;AAAA,QAClBhC,WAAWwB,KAAAA,KAAKC,mBAAAA,QAAmBQ,MAAMhC,mCAASgC,IAAI;AAAA,QACtDlC,IAAIa,MAAAA,MAAMD,SAAS,MAAM;AAAA,QACzBuB,UAAU5B;AAAAA,QAAqBqB,UAE9BvB,qDAAkB+B,IAAI,CAACC,MAAMC,MAAM;AAClC,gBAAMC,UAAUF,KAAKrC,MAAMa,MAAAA,MAAM,QAAQyB,CAAC;AAE1C,gDACGE,SAAAA,YAAU;AAAA,YAETC,OAAOJ;AAAAA,YACPK,UAAUL,KAAKK,YAAYC;AAAAA,YAAUf,UAEpCS,KAAKO;AAAAA,aAJDL,OAKK;AAAA,QAAA;AAAA,MAEf,CACkB;AAAA,IAAA,CACT;AAAA,EAAA,CACJ;AAEhB,CAAC;;"}
|
|
@@ -9,6 +9,25 @@ const MenuBar = require("../MenuBar/MenuBar.cjs");
|
|
|
9
9
|
const Typography = require("../../../Typography/Typography.cjs");
|
|
10
10
|
const keyCheck = require("../../../../utils/keyboardUtils/keyCheck.cjs");
|
|
11
11
|
const keyboardCodes = require("../../../../utils/keyboardUtils/keyboardCodes.cjs");
|
|
12
|
+
const traverseItem = (node) => {
|
|
13
|
+
var _a;
|
|
14
|
+
let href;
|
|
15
|
+
let target;
|
|
16
|
+
if (node == null ? void 0 : node.href) {
|
|
17
|
+
href = node == null ? void 0 : node.href;
|
|
18
|
+
target = node == null ? void 0 : node.target;
|
|
19
|
+
} else if ((node == null ? void 0 : node.data) != null && ((_a = node == null ? void 0 : node.data) == null ? void 0 : _a.length) > 0) {
|
|
20
|
+
let i = 0;
|
|
21
|
+
while (href == null && i < node.data.length) {
|
|
22
|
+
traverseItem(node == null ? void 0 : node.data[i]);
|
|
23
|
+
i += 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
href,
|
|
28
|
+
target
|
|
29
|
+
};
|
|
30
|
+
};
|
|
12
31
|
const HvMenuItem = ({
|
|
13
32
|
id,
|
|
14
33
|
item,
|
|
@@ -53,21 +72,13 @@ const HvMenuItem = ({
|
|
|
53
72
|
});
|
|
54
73
|
let itemHref = item == null ? void 0 : item.href;
|
|
55
74
|
let itemTarget = item == null ? void 0 : item.target;
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
let i = 0;
|
|
64
|
-
while (itemHref == null && i < node.data.length) {
|
|
65
|
-
traversePreOrder(node == null ? void 0 : node.data[i]);
|
|
66
|
-
i += 1;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
traversePreOrder(item);
|
|
75
|
+
if ((item == null ? void 0 : item.href) == null) {
|
|
76
|
+
const {
|
|
77
|
+
href,
|
|
78
|
+
target
|
|
79
|
+
} = traverseItem(item);
|
|
80
|
+
itemHref = href;
|
|
81
|
+
itemTarget = target;
|
|
71
82
|
}
|
|
72
83
|
return /* @__PURE__ */ jsxRuntime.jsxs(MenuItem_styles.MenuItemLi, {
|
|
73
84
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { HvHeaderNavigationItemProp, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { isKeypress, keyboardCodes } from \"@core/utils\";\nimport { HvMenuBar } from \"../MenuBar\";\nimport { FocusContext } from \"../utils/FocusContext\";\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { MenuItemLabel, MenuItemLi, MenuItemLink } from \"./MenuItem.styles\";\n\nexport interface MenuItemProps extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n item: HvHeaderNavigationItemProp;\n type?: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n}\n\nexport const HvMenuItem = ({ id, item, type, onClick }: MenuItemProps) => {\n const selectionPath = useContext(SelectionContext);\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n const hasSubLevel = data && data.length;\n const isMenu = type === \"menu\";\n const isSelected = selectionPath?.[isMenu ? 1 : 0] === item.id;\n const isCurrent = isSelected\n ? selectionPath?.length > (isMenu ? 2 : 1)\n ? true\n : \"page\"\n : undefined;\n\n const actionHandler = (event) => {\n if (\n event.type === \"click\" ||\n isKeypress(event, keyboardCodes.Enter) ||\n isKeypress(event, keyboardCodes.SpaceBar)\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event: React.FocusEvent) => {\n dispatch?.({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const itemProps = {\n onClick: actionHandler,\n onKeyDown: actionHandler,\n onFocus: handleFocus,\n };\n\n const label = (\n <HvTypography\n component=\"span\"\n variant={isSelected ? \"label\" : \"body\"}\n data-text={item.label}\n >\n {item.label}\n </HvTypography>\n );\n\n let itemHref = item?.href;\n let itemTarget = item?.target;\n
|
|
1
|
+
{"version":3,"file":"MenuItem.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { HvHeaderNavigationItemProp, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { isKeypress, keyboardCodes } from \"@core/utils\";\nimport { HvMenuBar } from \"../MenuBar\";\nimport { FocusContext } from \"../utils/FocusContext\";\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { MenuItemLabel, MenuItemLi, MenuItemLink } from \"./MenuItem.styles\";\n\nexport interface MenuItemProps extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n item: HvHeaderNavigationItemProp;\n type?: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n}\n\n// Traverse the tree of items and return the first href it finds\nconst traverseItem = (node: HvHeaderNavigationItemProp) => {\n let href;\n let target;\n\n if (node?.href) {\n href = node?.href;\n target = node?.target;\n } else if (node?.data != null && node?.data?.length > 0) {\n let i = 0;\n while (href == null && i < node.data.length) {\n traverseItem(node?.data[i]);\n i += 1;\n }\n }\n\n return { href, target };\n};\n\nexport const HvMenuItem = ({ id, item, type, onClick }: MenuItemProps) => {\n const selectionPath = useContext(SelectionContext);\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n const hasSubLevel = data && data.length;\n const isMenu = type === \"menu\";\n const isSelected = selectionPath?.[isMenu ? 1 : 0] === item.id;\n const isCurrent = isSelected\n ? selectionPath?.length > (isMenu ? 2 : 1)\n ? true\n : \"page\"\n : undefined;\n\n const actionHandler = (event) => {\n if (\n event.type === \"click\" ||\n isKeypress(event, keyboardCodes.Enter) ||\n isKeypress(event, keyboardCodes.SpaceBar)\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event: React.FocusEvent) => {\n dispatch?.({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const itemProps = {\n onClick: actionHandler,\n onKeyDown: actionHandler,\n onFocus: handleFocus,\n };\n\n const label = (\n <HvTypography\n component=\"span\"\n variant={isSelected ? \"label\" : \"body\"}\n data-text={item.label}\n >\n {item.label}\n </HvTypography>\n );\n\n let itemHref = item?.href;\n let itemTarget = item?.target;\n\n // apps should configure the href even on parent items without content\n // so the fallback logic is theirs, but if not we'll do our best to find a link\n if (item?.href == null) {\n const { href, target } = traverseItem(item);\n itemHref = href;\n itemTarget = target;\n }\n\n return (\n <MenuItemLi\n id={id}\n key={item.label}\n $selected={!!isSelected}\n $isMenu={isMenu}\n >\n {itemHref ? (\n <MenuItemLink\n href={itemHref}\n target={itemTarget}\n {...itemProps}\n $isSelected={isSelected}\n $isMenu={isMenu}\n aria-current={isCurrent}\n >\n {label}\n </MenuItemLink>\n ) : (\n // keeping this code path for backwards compatibility, but\n // shouldn't really be used as it's not accessible\n <MenuItemLabel\n role=\"button\"\n {...itemProps}\n tabIndex={0}\n $isSelected={isSelected}\n $isMenu={isMenu}\n aria-current={isCurrent}\n >\n {label}\n </MenuItemLabel>\n )}\n {hasSubLevel && <HvMenuBar data={data} onClick={onClick} type=\"menu\" />}\n </MenuItemLi>\n );\n};\n"],"names":["traverseItem","node","href","target","data","length","i","HvMenuItem","id","item","type","onClick","selectionPath","useContext","SelectionContext","dispatch","FocusContext","hasSubLevel","isMenu","isSelected","isCurrent","undefined","actionHandler","event","isKeypress","keyboardCodes","Enter","SpaceBar","currentTarget","blur","handleFocus","itemFocused","itemProps","onKeyDown","onFocus","label","HvTypography","component","variant","children","itemHref","itemTarget","MenuItemLi","$selected","$isMenu","_jsx","MenuItemLink","$isSelected","MenuItemLabel","role","tabIndex","HvMenuBar"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a;
|
|
2
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
4
|
const React = require("react");
|
|
5
|
+
const material = require("@mui/material");
|
|
4
6
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
5
7
|
const Input_styles = require("./Input.styles.cjs");
|
|
6
8
|
const validationStates = require("../Forms/FormElement/validationStates.cjs");
|
|
@@ -36,65 +38,80 @@ const getFocusedElement = (event) => browser.default("ie") ? document.activeElem
|
|
|
36
38
|
function eventTargetIsInsideContainer(container, event) {
|
|
37
39
|
return container != null && container.contains(getFocusedElement(event));
|
|
38
40
|
}
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
41
|
+
const setInputValue = (_a = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")) == null ? void 0 : _a.set;
|
|
42
|
+
const changeInputValue = (input, value = "") => {
|
|
43
|
+
const event = new Event("input", {
|
|
44
|
+
bubbles: true
|
|
45
|
+
});
|
|
46
|
+
setInputValue == null ? void 0 : setInputValue.call(input, value);
|
|
47
|
+
input == null ? void 0 : input.dispatchEvent(event);
|
|
48
|
+
};
|
|
49
|
+
const HvInput = React.forwardRef((props, ref) => {
|
|
50
|
+
var _a2;
|
|
51
|
+
const {
|
|
52
|
+
classes: classesProp,
|
|
53
|
+
className,
|
|
54
|
+
id,
|
|
55
|
+
name,
|
|
56
|
+
value: valueProp,
|
|
57
|
+
defaultValue = "",
|
|
58
|
+
required = false,
|
|
59
|
+
readOnly = false,
|
|
60
|
+
disabled = false,
|
|
61
|
+
label,
|
|
62
|
+
"aria-label": ariaLabel,
|
|
63
|
+
"aria-labelledby": ariaLabelledBy,
|
|
64
|
+
description,
|
|
65
|
+
"aria-describedby": ariaDescribedBy,
|
|
66
|
+
onChange,
|
|
67
|
+
onEnter,
|
|
68
|
+
status,
|
|
69
|
+
statusMessage,
|
|
70
|
+
"aria-errormessage": ariaErrorMessage,
|
|
71
|
+
type = "text",
|
|
72
|
+
placeholder,
|
|
73
|
+
autoFocus = false,
|
|
74
|
+
labels: labelsProp,
|
|
75
|
+
validationMessages,
|
|
76
|
+
disableClear = false,
|
|
77
|
+
disableRevealPassword = false,
|
|
78
|
+
disableSearchButton = false,
|
|
79
|
+
endAdornment,
|
|
80
|
+
maxCharQuantity,
|
|
81
|
+
minCharQuantity,
|
|
82
|
+
validation,
|
|
83
|
+
showValidationIcon = false,
|
|
84
|
+
suggestionListCallback,
|
|
85
|
+
inputRef: inputRefProp,
|
|
86
|
+
onBlur,
|
|
87
|
+
onFocus,
|
|
88
|
+
onKeyDown,
|
|
89
|
+
inputProps = {},
|
|
90
|
+
...others
|
|
91
|
+
} = props;
|
|
81
92
|
const {
|
|
82
93
|
classes,
|
|
83
94
|
cx
|
|
84
95
|
} = Input_styles.useClasses(classesProp);
|
|
85
96
|
const labels = useLabels.useLabels(DEFAULT_LABELS, labelsProp);
|
|
86
97
|
const elementId = useUniqueId.default(id, "hvinput");
|
|
87
|
-
const inputRef = React.useRef(
|
|
98
|
+
const inputRef = React.useRef(null);
|
|
99
|
+
const forkedRef = material.useForkRef(ref, inputRef, inputRefProp);
|
|
100
|
+
const suggestionsRef = React.useRef(null);
|
|
88
101
|
const [focused, setFocused] = React.useState(false);
|
|
89
102
|
const isDirty = React.useRef(false);
|
|
90
103
|
const [value, setValue] = useControlled.useControlled(valueProp, defaultValue);
|
|
91
104
|
const isEmptyValue = value == null || value === "";
|
|
92
105
|
const [validationState, setValidationState] = useControlled.useControlled(status, validationStates.default.standBy);
|
|
93
106
|
const [validationMessage, setValidationMessage] = useControlled.useControlled(statusMessage, "");
|
|
94
|
-
const errorMessages = React.useMemo(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
const errorMessages = React.useMemo(
|
|
108
|
+
() => ({
|
|
109
|
+
...validations.DEFAULT_ERROR_MESSAGES,
|
|
110
|
+
...validationMessages
|
|
111
|
+
}),
|
|
112
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
113
|
+
[validationMessages == null ? void 0 : validationMessages.error, validationMessages == null ? void 0 : validationMessages.requiredError, validationMessages == null ? void 0 : validationMessages.minCharError, validationMessages == null ? void 0 : validationMessages.maxCharError, validationMessages == null ? void 0 : validationMessages.typeMismatchError]
|
|
114
|
+
);
|
|
98
115
|
const validationType = React.useMemo(() => validations.computeValidationType(type), [type]);
|
|
99
116
|
const performValidation = React.useCallback(() => {
|
|
100
117
|
const inputValidity = validations.validateInput(inputRef.current, value, required, minCharQuantity, maxCharQuantity, validationType, validation);
|
|
@@ -117,16 +134,11 @@ const HvInput = ({
|
|
|
117
134
|
const [suggestionValues, setSuggestionValues] = React.useState(null);
|
|
118
135
|
const canShowSuggestions = suggestionListCallback != null;
|
|
119
136
|
const hasSuggestions = !!suggestionValues;
|
|
120
|
-
const materialInputRef = React.useRef(null);
|
|
121
|
-
const suggestionRef = React.useRef(null);
|
|
122
|
-
React.useEffect(() => {
|
|
123
|
-
suggestionRef.current = document.getElementById(setId.setId(elementId, "suggestions") || "");
|
|
124
|
-
}, [elementId]);
|
|
125
137
|
const hasLabel = label != null;
|
|
126
138
|
const hasDescription = description != null;
|
|
127
139
|
const focusInput = () => {
|
|
128
|
-
var
|
|
129
|
-
(
|
|
140
|
+
var _a3;
|
|
141
|
+
(_a3 = inputRef.current) == null ? void 0 : _a3.focus();
|
|
130
142
|
};
|
|
131
143
|
const isMounted = useIsMounted.default();
|
|
132
144
|
const suggestionClearHandler = () => {
|
|
@@ -135,9 +147,9 @@ const HvInput = ({
|
|
|
135
147
|
}
|
|
136
148
|
};
|
|
137
149
|
const suggestionHandler = (val) => {
|
|
138
|
-
var
|
|
150
|
+
var _a3;
|
|
139
151
|
const suggestionsArray = suggestionListCallback == null ? void 0 : suggestionListCallback(val);
|
|
140
|
-
if ((
|
|
152
|
+
if ((_a3 = suggestionsArray == null ? void 0 : suggestionsArray[0]) == null ? void 0 : _a3.label) {
|
|
141
153
|
setSuggestionValues(suggestionsArray);
|
|
142
154
|
} else {
|
|
143
155
|
suggestionClearHandler();
|
|
@@ -145,8 +157,7 @@ const HvInput = ({
|
|
|
145
157
|
};
|
|
146
158
|
const suggestionSelectedHandler = (event, item) => {
|
|
147
159
|
const newValue = item.value || item.label;
|
|
148
|
-
|
|
149
|
-
onChange == null ? void 0 : onChange(event, newValue);
|
|
160
|
+
changeInputValue(inputRef.current, newValue);
|
|
150
161
|
focusInput();
|
|
151
162
|
suggestionClearHandler();
|
|
152
163
|
if (type === "search") {
|
|
@@ -162,7 +173,7 @@ const HvInput = ({
|
|
|
162
173
|
}
|
|
163
174
|
};
|
|
164
175
|
const onInputBlurHandler = (event) => {
|
|
165
|
-
if (eventTargetIsInsideContainer(
|
|
176
|
+
if (eventTargetIsInsideContainer(suggestionsRef.current, event))
|
|
166
177
|
return;
|
|
167
178
|
setFocused(false);
|
|
168
179
|
const inputValidity = performValidation();
|
|
@@ -174,9 +185,9 @@ const HvInput = ({
|
|
|
174
185
|
onFocus == null ? void 0 : onFocus(event, value);
|
|
175
186
|
};
|
|
176
187
|
const getSuggestions = (li) => {
|
|
177
|
-
var
|
|
188
|
+
var _a3;
|
|
178
189
|
const listEl = document.getElementById(setId.setId(elementId, "suggestions-list") || "");
|
|
179
|
-
return li != null ? (
|
|
190
|
+
return li != null ? (_a3 = listEl == null ? void 0 : listEl.getElementsByTagName("li")) == null ? void 0 : _a3[li] : listEl;
|
|
180
191
|
};
|
|
181
192
|
const onSuggestionKeyDown = (event) => {
|
|
182
193
|
if (keyCheck.isKeypress(event, keyboardCodes.keyboardCodes.Esc)) {
|
|
@@ -208,12 +219,11 @@ const HvInput = ({
|
|
|
208
219
|
const showClear = !disabled && !readOnly && !disableClear && !isEmptyValue && (!hasOnEnter || type !== "search" || disableSearchButton || validationState !== validationStates.default.standBy);
|
|
209
220
|
const showSearchIcon = type === "search" && !disableSearchButton;
|
|
210
221
|
const showRevealPasswordButton = type === "password" && !disableRevealPassword;
|
|
211
|
-
const handleClear = React.useCallback((
|
|
222
|
+
const handleClear = React.useCallback(() => {
|
|
212
223
|
setValidationState(validationStates.default.standBy);
|
|
213
|
-
|
|
214
|
-
onChange == null ? void 0 : onChange(event, "");
|
|
224
|
+
changeInputValue(inputRef.current, "");
|
|
215
225
|
setTimeout(focusInput);
|
|
216
|
-
}, [
|
|
226
|
+
}, [setValidationState]);
|
|
217
227
|
const clearButton = React.useMemo(() => {
|
|
218
228
|
if (!showClear) {
|
|
219
229
|
return null;
|
|
@@ -230,7 +240,7 @@ const HvInput = ({
|
|
|
230
240
|
icon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.CloseXS, {})
|
|
231
241
|
}
|
|
232
242
|
);
|
|
233
|
-
}, [showClear, classes.adornmentButton, classes.iconClear, showSearchIcon, handleClear, labels == null ? void 0 : labels.clearButtonLabel, elementId]);
|
|
243
|
+
}, [showClear, classes.adornmentButton, classes.iconClear, showSearchIcon, handleClear, labels == null ? void 0 : labels.clearButtonLabel, elementId, cx]);
|
|
234
244
|
const handleSearch = React.useCallback((event) => {
|
|
235
245
|
onEnter == null ? void 0 : onEnter(event, value);
|
|
236
246
|
}, [onEnter, value]);
|
|
@@ -282,7 +292,7 @@ const HvInput = ({
|
|
|
282
292
|
}, [showValidationIcon, validationState, classes.icon]);
|
|
283
293
|
const customIconEl = React.useMemo(() => React.isValidElement(endAdornment) && React__default.default.cloneElement(endAdornment, {
|
|
284
294
|
className: cx(endAdornment.props.className, classes.icon)
|
|
285
|
-
}), [classes.icon, endAdornment]);
|
|
295
|
+
}), [classes.icon, endAdornment, cx]);
|
|
286
296
|
const adornments = React.useMemo(() => {
|
|
287
297
|
if (!clearButton && !revealPasswordButton && !searchButton && !validationIcon && !customIconEl)
|
|
288
298
|
return null;
|
|
@@ -298,10 +308,7 @@ const HvInput = ({
|
|
|
298
308
|
}
|
|
299
309
|
performValidation();
|
|
300
310
|
}, [focused, isEmptyValue, performValidation]);
|
|
301
|
-
|
|
302
|
-
if (isStateInvalid) {
|
|
303
|
-
errorMessageId = canShowError ? setId.setId(elementId, "error") : ariaErrorMessage;
|
|
304
|
-
}
|
|
311
|
+
const errorMessageId = isStateInvalid ? canShowError ? setId.setId(elementId, "error") : ariaErrorMessage : void 0;
|
|
305
312
|
return /* @__PURE__ */ jsxRuntime.jsxs(FormElement.HvFormElement, {
|
|
306
313
|
id,
|
|
307
314
|
name,
|
|
@@ -355,12 +362,12 @@ const HvInput = ({
|
|
|
355
362
|
"aria-errormessage": errorMessageId,
|
|
356
363
|
"aria-describedby": ariaDescribedBy != null ? ariaDescribedBy : description ? setId.setId(elementId, "description") : void 0,
|
|
357
364
|
"aria-controls": canShowSuggestions ? setId.setId(elementId, "suggestions") : void 0,
|
|
358
|
-
ref:
|
|
365
|
+
ref: inputRef,
|
|
359
366
|
// prevent browsers auto-fill/suggestions when we have our own
|
|
360
367
|
autoComplete: canShowSuggestions ? "off" : void 0,
|
|
361
368
|
...inputProps
|
|
362
369
|
},
|
|
363
|
-
inputRef:
|
|
370
|
+
inputRef: forkedRef,
|
|
364
371
|
endAdornment: adornments,
|
|
365
372
|
...others
|
|
366
373
|
}), canShowSuggestions && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
@@ -368,13 +375,14 @@ const HvInput = ({
|
|
|
368
375
|
role: "presentation",
|
|
369
376
|
className: classes.inputExtension
|
|
370
377
|
}), /* @__PURE__ */ jsxRuntime.jsx(Suggestions.HvSuggestions, {
|
|
378
|
+
ref: suggestionsRef,
|
|
371
379
|
id: setId.setId(elementId, "suggestions"),
|
|
372
380
|
classes: {
|
|
373
381
|
root: classes.suggestionsContainer,
|
|
374
382
|
list: classes.suggestionList
|
|
375
383
|
},
|
|
376
384
|
expanded: hasSuggestions,
|
|
377
|
-
anchorEl: (
|
|
385
|
+
anchorEl: (_a2 = inputRef.current) == null ? void 0 : _a2.parentElement,
|
|
378
386
|
onClose: suggestionClearHandler,
|
|
379
387
|
onKeyDown: onSuggestionKeyDown,
|
|
380
388
|
onSuggestionSelected: suggestionSelectedHandler,
|
|
@@ -387,7 +395,7 @@ const HvInput = ({
|
|
|
387
395
|
children: validationMessage
|
|
388
396
|
})]
|
|
389
397
|
});
|
|
390
|
-
};
|
|
398
|
+
});
|
|
391
399
|
exports.inputClasses = Input_styles.staticClasses;
|
|
392
400
|
exports.HvInput = HvInput;
|
|
393
401
|
//# sourceMappingURL=Input.cjs.map
|