@hitachivantara/uikit-react-core 5.18.1 → 5.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AppSwitcher/Action/Action.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/TitleWithTooltip.cjs +5 -5
- package/dist/cjs/components/AppSwitcher/TitleWithTooltip.cjs.map +1 -1
- package/dist/cjs/components/Banner/Banner.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/validations.cjs.map +1 -1
- package/dist/cjs/components/Box/Box.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/utils.cjs.map +1 -1
- package/dist/cjs/components/BulkActions/BulkActions.cjs +1 -5
- package/dist/cjs/components/BulkActions/BulkActions.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/CheckBox/CheckBox.cjs +4 -4
- package/dist/cjs/components/CheckBox/CheckBox.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
- package/dist/cjs/components/Controls/Controls.cjs.map +1 -1
- package/dist/cjs/components/Controls/LeftControl/LeftControl.cjs +1 -1
- package/dist/cjs/components/Controls/LeftControl/LeftControl.cjs.map +1 -1
- package/dist/cjs/components/Controls/RightControl/RightControl.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs.map +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.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/Dropdown.cjs +3 -3
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/utils.cjs +2 -2
- package/dist/cjs/components/Dropdown/utils.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/Forms/Adornment/Adornment.cjs +1 -2
- package/dist/cjs/components/Forms/Adornment/Adornment.cjs.map +1 -1
- package/dist/cjs/components/Forms/FormElement/validationStates.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
- package/dist/cjs/components/List/useSelectableList.cjs +1 -4
- package/dist/cjs/components/List/useSelectableList.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.cjs.map +1 -1
- package/dist/cjs/components/OverflowTooltip/OverflowTooltip.cjs +1 -1
- package/dist/cjs/components/OverflowTooltip/OverflowTooltip.cjs.map +1 -1
- package/dist/cjs/components/Pagination/ButtonIconTooltip.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Select.cjs +2 -4
- package/dist/cjs/components/Pagination/Select.cjs.map +1 -1
- package/dist/cjs/components/Pagination/utils.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.cjs.map +1 -1
- package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs +1 -1
- package/dist/cjs/components/SimpleGrid/SimpleGrid.styles.cjs.map +1 -1
- package/dist/cjs/components/TimeAgo/TimeAgo.cjs +14 -7
- package/dist/cjs/components/TimeAgo/TimeAgo.cjs.map +1 -1
- package/dist/cjs/components/TimeAgo/TimeAgo.styles.cjs +12 -0
- package/dist/cjs/components/TimeAgo/TimeAgo.styles.cjs.map +1 -0
- 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/hooks/useWidth.cjs +1 -1
- package/dist/cjs/hooks/useWidth.cjs.map +1 -1
- package/dist/cjs/index.cjs +7 -6
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/components/AppSwitcher/Action/Action.js.map +1 -1
- package/dist/esm/components/AppSwitcher/TitleWithTooltip.js +6 -6
- package/dist/esm/components/AppSwitcher/TitleWithTooltip.js.map +1 -1
- package/dist/esm/components/Banner/Banner.js.map +1 -1
- package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/esm/components/BaseInput/validations.js.map +1 -1
- package/dist/esm/components/Box/Box.js.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/components/BreadCrumb/utils.js.map +1 -1
- package/dist/esm/components/BulkActions/BulkActions.js +1 -5
- package/dist/esm/components/BulkActions/BulkActions.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/CheckBox/CheckBox.js +4 -4
- package/dist/esm/components/CheckBox/CheckBox.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/Controls/Controls.js.map +1 -1
- package/dist/esm/components/Controls/LeftControl/LeftControl.js +1 -1
- package/dist/esm/components/Controls/LeftControl/LeftControl.js.map +1 -1
- package/dist/esm/components/Controls/RightControl/RightControl.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js.map +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.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/Dropdown.js +3 -3
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/List/List.js.map +1 -1
- package/dist/esm/components/Dropdown/utils.js +2 -2
- package/dist/esm/components/Dropdown/utils.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/Forms/Adornment/Adornment.js +1 -2
- package/dist/esm/components/Forms/Adornment/Adornment.js.map +1 -1
- package/dist/esm/components/Forms/FormElement/validationStates.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/Header/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/components/List/useSelectableList.js +2 -5
- package/dist/esm/components/List/useSelectableList.js.map +1 -1
- package/dist/esm/components/Loading/Loading.js.map +1 -1
- package/dist/esm/components/OverflowTooltip/OverflowTooltip.js +1 -1
- package/dist/esm/components/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/esm/components/Pagination/ButtonIconTooltip.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/Select.js +2 -4
- package/dist/esm/components/Pagination/Select.js.map +1 -1
- package/dist/esm/components/Pagination/utils.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js +1 -1
- package/dist/esm/components/SimpleGrid/SimpleGrid.styles.js.map +1 -1
- package/dist/esm/components/TimeAgo/TimeAgo.js +16 -8
- package/dist/esm/components/TimeAgo/TimeAgo.js.map +1 -1
- package/dist/esm/components/TimeAgo/TimeAgo.styles.js +12 -0
- package/dist/esm/components/TimeAgo/TimeAgo.styles.js.map +1 -0
- 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/hooks/useWidth.js +1 -1
- package/dist/esm/hooks/useWidth.js.map +1 -1
- package/dist/esm/index.js +266 -265
- package/dist/types/index.d.ts +221 -177
- package/package.json +2 -2
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs +0 -8
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs.map +0 -1
- package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs +0 -8
- package/dist/cjs/components/TimeAgo/timeAgoClasses.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/TimeAgo/timeAgoClasses.js +0 -8
- package/dist/esm/components/TimeAgo/timeAgoClasses.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":"Action.cjs","sources":["../../../../../src/components/AppSwitcher/Action/Action.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvAvatar, HvTooltip, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { useUniqueId } from \"@core/hooks\";\nimport { HvAppSwitcherActionApplication } from \"../AppSwitcher\";\nimport TitleWithTooltip from \"../TitleWithTooltip\";\nimport {\n StyledIcon,\n StyledIconInfo,\n StyledListItem,\n StyledTypography,\n StyledImg,\n} from \"./Action.styles\";\nimport appSwitcherActionClasses, {\n HvAppSwitcherActionClasses,\n} from \"./actionClasses\";\n\nexport interface HvAppSwitcherActionProps extends HvBaseProps {\n /** The application data to be used to render the Action object. */\n application: HvAppSwitcherActionApplication;\n /** Callback triggered when the action is clicked. */\n onClickCallback?: (\n event: React.MouseEvent,\n application: HvAppSwitcherActionApplication\n ) => void;\n /** Must return a boolean stating if the action element is selected or not. */\n isSelectedCallback?: (application: HvAppSwitcherActionApplication) => boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvAppSwitcherActionClasses;\n}\n\nconst getColor = (color, defaultColor) =>\n theme.colors[color] || color || defaultColor;\n\nexport const HvAppSwitcherAction = ({\n id,\n className,\n classes,\n application,\n onClickCallback = () => {},\n isSelectedCallback = () => false,\n}: HvAppSwitcherActionProps) => {\n const { name, description, disabled, iconElement, iconUrl, url, target } =\n application;\n\n const color = disabled\n ? theme.colors.secondary_60\n : getColor(application?.color, theme.colors.secondary);\n\n const [validIconUrl, setValidIconUrl] = useState<boolean>(true);\n\n const renderApplicationIcon = () => {\n if (iconElement) {\n return iconElement;\n }\n\n if (iconUrl && validIconUrl) {\n return (\n <StyledImg\n className={clsx(appSwitcherActionClasses.iconUrl, classes?.iconUrl)}\n src={iconUrl}\n onError={() => {\n setValidIconUrl(false);\n }}\n alt={description}\n />\n );\n }\n\n const brokenTitle = name.split(\" \");\n const initials =\n brokenTitle[0].substring(0, 1) +\n (brokenTitle[1] ? brokenTitle[1].substring(0, 1) : \"\");\n\n return (\n <HvAvatar size=\"sm\" backgroundColor={color} variant=\"square\" aria-hidden>\n {initials}\n </HvAvatar>\n );\n };\n\n const isSelected = isSelectedCallback(application);\n\n /**\n * Handles the onClick event and triggers the appropriate callback if it exists.\n */\n const handleOnClick = (event: React.MouseEvent) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClickCallback?.(event, { ...application, isSelected });\n };\n\n const isLink = url != null;\n const descriptionElementId = useUniqueId(id, \"hvAction-description\");\n\n return (\n <StyledListItem\n id={id}\n interactive\n tabIndex={0}\n selected={isSelected}\n disabled={disabled}\n className={clsx(\n className,\n appSwitcherActionClasses.root,\n classes?.root,\n disabled && clsx(appSwitcherActionClasses.disabled, classes?.disabled),\n isSelected && clsx(appSwitcherActionClasses.selected, classes?.selected)\n )}\n >\n {/* As HvTooltip don't have the id prop, is not possible to use the aria-labelledby to reference it.\n In substitution is used the aria-label with the \"title\" value */}\n <StyledTypography\n component={isLink ? \"a\" : \"button\"}\n href={isLink ? url : undefined}\n target={isLink ? target || \"_top\" : undefined}\n className={clsx(\n appSwitcherActionClasses.typography,\n classes?.typography\n )}\n onClick={handleOnClick}\n style={{ borderColor: color }}\n aria-describedby={descriptionElementId}\n aria-label={name}\n >\n <StyledIcon\n className={clsx(appSwitcherActionClasses.icon, classes?.icon)}\n >\n {renderApplicationIcon()}\n </StyledIcon>\n\n <TitleWithTooltip\n title={name}\n className={clsx(appSwitcherActionClasses.title, classes?.title)}\n type=\"action\"\n />\n\n {description && (\n <HvTooltip\n disableFocusListener\n disableTouchListener\n title={<HvTypography>{description}</HvTypography>}\n >\n <div>\n <StyledIconInfo\n className={clsx(\n appSwitcherActionClasses.iconInfo,\n classes?.iconInfo\n )}\n role=\"img\"\n aria-label={description}\n id={descriptionElementId}\n />\n </div>\n </HvTooltip>\n )}\n </StyledTypography>\n </StyledListItem>\n );\n};\n"],"names":["getColor","color","defaultColor","theme","colors","HvAppSwitcherAction","id","className","classes","application","onClickCallback","isSelectedCallback","name","description","disabled","iconElement","iconUrl","url","target","secondary_60","secondary","validIconUrl","setValidIconUrl","useState","renderApplicationIcon","StyledImg","clsx","appSwitcherActionClasses","src","onError","alt","brokenTitle","split","initials","substring","HvAvatar","size","backgroundColor","variant","children","isSelected","handleOnClick","event","preventDefault","isLink","descriptionElementId","useUniqueId","StyledListItem","interactive","tabIndex","selected","root","StyledTypography","component","href","undefined","typography","onClick","style","borderColor","_jsx","StyledIcon","icon","TitleWithTooltip","title","type","HvTooltip","disableFocusListener","disableTouchListener","HvTypography","StyledIconInfo","iconInfo","role"],"mappings":";;;;;;;;;;;;;AAiCA,MAAMA,WAAWA,CAACC,
|
|
1
|
+
{"version":3,"file":"Action.cjs","sources":["../../../../../src/components/AppSwitcher/Action/Action.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvAvatar, HvTooltip, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { useUniqueId } from \"@core/hooks\";\nimport { HvAppSwitcherActionApplication } from \"../AppSwitcher\";\nimport TitleWithTooltip from \"../TitleWithTooltip\";\nimport {\n StyledIcon,\n StyledIconInfo,\n StyledListItem,\n StyledTypography,\n StyledImg,\n} from \"./Action.styles\";\nimport appSwitcherActionClasses, {\n HvAppSwitcherActionClasses,\n} from \"./actionClasses\";\n\nexport interface HvAppSwitcherActionProps extends HvBaseProps {\n /** The application data to be used to render the Action object. */\n application: HvAppSwitcherActionApplication;\n /** Callback triggered when the action is clicked. */\n onClickCallback?: (\n event: React.MouseEvent,\n application: HvAppSwitcherActionApplication\n ) => void;\n /** Must return a boolean stating if the action element is selected or not. */\n isSelectedCallback?: (application: HvAppSwitcherActionApplication) => boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvAppSwitcherActionClasses;\n}\n\nconst getColor = (color: any, defaultColor: string) =>\n theme.colors[color] || color || defaultColor;\n\nexport const HvAppSwitcherAction = ({\n id,\n className,\n classes,\n application,\n onClickCallback = () => {},\n isSelectedCallback = () => false,\n}: HvAppSwitcherActionProps) => {\n const { name, description, disabled, iconElement, iconUrl, url, target } =\n application;\n\n const color = disabled\n ? theme.colors.secondary_60\n : getColor(application?.color, theme.colors.secondary);\n\n const [validIconUrl, setValidIconUrl] = useState<boolean>(true);\n\n const renderApplicationIcon = () => {\n if (iconElement) {\n return iconElement;\n }\n\n if (iconUrl && validIconUrl) {\n return (\n <StyledImg\n className={clsx(appSwitcherActionClasses.iconUrl, classes?.iconUrl)}\n src={iconUrl}\n onError={() => {\n setValidIconUrl(false);\n }}\n alt={description}\n />\n );\n }\n\n const brokenTitle = name.split(\" \");\n const initials =\n brokenTitle[0].substring(0, 1) +\n (brokenTitle[1] ? brokenTitle[1].substring(0, 1) : \"\");\n\n return (\n <HvAvatar size=\"sm\" backgroundColor={color} variant=\"square\" aria-hidden>\n {initials}\n </HvAvatar>\n );\n };\n\n const isSelected = isSelectedCallback(application);\n\n /**\n * Handles the onClick event and triggers the appropriate callback if it exists.\n */\n const handleOnClick = (event: React.MouseEvent) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClickCallback?.(event, { ...application, isSelected });\n };\n\n const isLink = url != null;\n const descriptionElementId = useUniqueId(id, \"hvAction-description\");\n\n return (\n <StyledListItem\n id={id}\n interactive\n tabIndex={0}\n selected={isSelected}\n disabled={disabled}\n className={clsx(\n className,\n appSwitcherActionClasses.root,\n classes?.root,\n disabled && clsx(appSwitcherActionClasses.disabled, classes?.disabled),\n isSelected && clsx(appSwitcherActionClasses.selected, classes?.selected)\n )}\n >\n {/* As HvTooltip don't have the id prop, is not possible to use the aria-labelledby to reference it.\n In substitution is used the aria-label with the \"title\" value */}\n <StyledTypography\n component={isLink ? \"a\" : \"button\"}\n href={isLink ? url : undefined}\n target={isLink ? target || \"_top\" : undefined}\n className={clsx(\n appSwitcherActionClasses.typography,\n classes?.typography\n )}\n onClick={handleOnClick}\n style={{ borderColor: color }}\n aria-describedby={descriptionElementId}\n aria-label={name}\n >\n <StyledIcon\n className={clsx(appSwitcherActionClasses.icon, classes?.icon)}\n >\n {renderApplicationIcon()}\n </StyledIcon>\n\n <TitleWithTooltip\n title={name}\n className={clsx(appSwitcherActionClasses.title, classes?.title)}\n type=\"action\"\n />\n\n {description && (\n <HvTooltip\n disableFocusListener\n disableTouchListener\n title={<HvTypography>{description}</HvTypography>}\n >\n <div>\n <StyledIconInfo\n className={clsx(\n appSwitcherActionClasses.iconInfo,\n classes?.iconInfo\n )}\n role=\"img\"\n aria-label={description}\n id={descriptionElementId}\n />\n </div>\n </HvTooltip>\n )}\n </StyledTypography>\n </StyledListItem>\n );\n};\n"],"names":["getColor","color","defaultColor","theme","colors","HvAppSwitcherAction","id","className","classes","application","onClickCallback","isSelectedCallback","name","description","disabled","iconElement","iconUrl","url","target","secondary_60","secondary","validIconUrl","setValidIconUrl","useState","renderApplicationIcon","StyledImg","clsx","appSwitcherActionClasses","src","onError","alt","brokenTitle","split","initials","substring","HvAvatar","size","backgroundColor","variant","children","isSelected","handleOnClick","event","preventDefault","isLink","descriptionElementId","useUniqueId","StyledListItem","interactive","tabIndex","selected","root","StyledTypography","component","href","undefined","typography","onClick","style","borderColor","_jsx","StyledIcon","icon","TitleWithTooltip","title","type","HvTooltip","disableFocusListener","disableTouchListener","HvTypography","StyledIconInfo","iconInfo","role"],"mappings":"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"}
|
|
@@ -10,12 +10,12 @@ const TitleWithTooltip = ({
|
|
|
10
10
|
title,
|
|
11
11
|
type
|
|
12
12
|
}) => {
|
|
13
|
-
const [isOverflowed, setIsOverflowed] = React.useState(false);
|
|
14
13
|
const textRef = React.useRef(null);
|
|
15
|
-
React.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
const isOverflowed = React.useMemo(() => {
|
|
15
|
+
const el = textRef.current;
|
|
16
|
+
if (!el)
|
|
17
|
+
return false;
|
|
18
|
+
return el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight;
|
|
19
19
|
}, []);
|
|
20
20
|
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.HvTooltip, {
|
|
21
21
|
disableHoverListener: !isOverflowed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleWithTooltip.cjs","sources":["../../../../src/components/AppSwitcher/TitleWithTooltip.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"TitleWithTooltip.cjs","sources":["../../../../src/components/AppSwitcher/TitleWithTooltip.tsx"],"sourcesContent":["import { useMemo, useRef } from \"react\";\nimport { HvTooltip, HvTypography } from \"@core/components\";\nimport { StyledTitleWithTooltip } from \"./AppSwitcher.styles\";\n\nconst TitleWithTooltip = ({ className, title, type }) => {\n const textRef = useRef<HTMLDivElement>(null);\n\n const isOverflowed = useMemo(() => {\n const el = textRef.current;\n if (!el) return false;\n\n return el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight;\n }, []);\n\n return (\n <HvTooltip\n disableHoverListener={!isOverflowed}\n placement=\"top-start\"\n title={<HvTypography>{title}</HvTypography>}\n >\n <StyledTitleWithTooltip\n variant=\"label\"\n component=\"span\"\n ref={textRef}\n className={className}\n $type={type}\n >\n {title}\n </StyledTitleWithTooltip>\n </HvTooltip>\n );\n};\n\nexport default TitleWithTooltip;\n"],"names":["TitleWithTooltip","className","title","type","textRef","useRef","isOverflowed","useMemo","el","current","scrollWidth","clientWidth","scrollHeight","clientHeight","HvTooltip","disableHoverListener","placement","HvTypography","children","StyledTitleWithTooltip","variant","component","ref","$type"],"mappings":";;;;;;;AAIA,MAAMA,mBAAmBA,CAAC;AAAA,EAAEC;AAAAA,EAAWC;AAAAA,EAAOC;AAAK,MAAM;AACjDC,QAAAA,UAAUC,aAAuB,IAAI;AAErCC,QAAAA,eAAeC,MAAAA,QAAQ,MAAM;AACjC,UAAMC,KAAKJ,QAAQK;AACnB,QAAI,CAACD;AAAW,aAAA;AAEhB,WAAOA,GAAGE,cAAcF,GAAGG,eAAeH,GAAGI,eAAeJ,GAAGK;AAAAA,EACjE,GAAG,CAAE,CAAA;AAEL,wCACGC,QAAAA,WAAS;AAAA,IACRC,sBAAsB,CAACT;AAAAA,IACvBU,WAAU;AAAA,IACVd,sCAAQe,yBAAY;AAAA,MAAAC,UAAEhB;AAAAA,IAAAA,CAAoB;AAAA,IAAEgB,yCAE3CC,2CAAsB;AAAA,MACrBC,SAAQ;AAAA,MACRC,WAAU;AAAA,MACVC,KAAKlB;AAAAA,MACLH;AAAAA,MACAsB,OAAOpB;AAAAA,MAAKe,UAEXhB;AAAAA,IAAAA,CACqB;AAAA,EAAA,CACf;AAEf;AAEA,MAAA,qBAAeF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.cjs","sources":["../../../../src/components/Banner/Banner.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport Slide from \"@mui/material/Slide\";\nimport Snackbar, {\n SnackbarProps as MuiSnackbarProps,\n SnackbarOrigin,\n} from \"@mui/material/Snackbar\";\nimport { HvActionGeneric } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useClasses, staticClasses } from \"./Banner.styles\";\nimport {\n HvBannerContent,\n HvBannerContentProps,\n} from \"./BannerContent/BannerContent\";\n\nexport { staticClasses as bannerClasses };\n\nexport type HvBannerClasses = ExtractNames<typeof useClasses>;\n\nexport type HvBannerVariant = \"success\" | \"warning\" | \"error\" | \"default\";\n\nexport type HvBannerActionPosition = \"auto\" | \"inline\" | \"bottom-right\";\n\nexport interface HvBannerProps\n extends Omit<MuiSnackbarProps, \"anchorOrigin\" | \"classes\" | \"onClose\">,\n HvBaseProps<HTMLDivElement, \"children\"> {\n /** If true, the snackbar is open. */\n open: boolean;\n /** Callback fired when the component requests to be closed. Typically onClose is used to set state in the parent component, which is used to control the Snackbar open prop. The reason parameter can optionally be used to control the response to onClose, for example ignoring clickaway. */\n onClose?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** The message to display. */\n label?: string;\n /** The anchor of the Snackbar. */\n anchorOrigin?: \"top\" | \"bottom\";\n /** Variant of the snackbar. */\n variant?: HvBannerVariant;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Actions to display on the right side. */\n actions?: React.ReactNode | HvActionGeneric[];\n /** The callback function ran when an action is triggered, receiving `action` as param */\n actionsCallback?: (\n event: React.SyntheticEvent,\n id: string,\n action: HvActionGeneric\n ) => void;\n /** The position property of the header. */\n actionsPosition?: HvBannerActionPosition;\n /** How much the transition animation last in milliseconds, if 0 no animation is played. */\n transitionDuration?: number;\n /** Direction of slide transition. */\n transitionDirection?: \"up\" | \"down\" | \"left\" | \"right\";\n /** Offset from top/bottom of the page, in px. Defaults to 60px. */\n offset?: number;\n /** Props to pass down to the Banner Wrapper. An object `actionProps` can be included to be passed as others to actions. */\n bannerContentProps?: HvBannerContentProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBannerClasses;\n}\n\n/**\n * A Banner displays an important and succinct message. It can also provide actions for the user to address, or dismiss.\n * It requires a user action, for it to be dismissed. Banners should appear at the top of the screen, below a top app bar.\n */\nexport const HvBanner = ({\n id,\n classes: classesProp = {},\n className,\n open,\n onClose,\n anchorOrigin = \"top\",\n variant = \"default\",\n transitionDuration = 300,\n transitionDirection = \"down\",\n showIcon = false,\n customIcon,\n actions,\n actionsCallback,\n actionsPosition = \"auto\",\n label,\n offset = 60,\n bannerContentProps,\n ...others\n}: HvBannerProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const anchorOriginBanner: SnackbarOrigin = {\n horizontal: \"center\",\n vertical: anchorOrigin,\n };\n\n const SlideTransition = useCallback(\n (properties) => <Slide {...properties} direction={transitionDirection} />,\n [transitionDirection]\n );\n\n return (\n <Snackbar\n id={id}\n open={open}\n className={className}\n classes={{\n root: cx(classes.root, { [classes.rootClosed]: !open }),\n anchorOriginTopCenter: classes.anchorOriginTopCenter,\n anchorOriginBottomCenter: classes.anchorOriginBottomCenter,\n }}\n style={{ [anchorOrigin]: offset }}\n anchorOrigin={anchorOriginBanner}\n TransitionComponent={SlideTransition}\n transitionDuration={transitionDuration}\n {...others}\n >\n <HvBannerContent\n id={setId(id, \"content\")}\n content={label}\n variant={variant}\n customIcon={customIcon}\n showIcon={showIcon}\n actions={actions}\n actionsCallback={actionsCallback}\n actionsPosition={actionsPosition}\n onClose={onClose}\n {...bannerContentProps}\n />\n </Snackbar>\n );\n};\n"],"names":["HvBanner","id","classes","classesProp","className","open","onClose","anchorOrigin","variant","transitionDuration","transitionDirection","showIcon","customIcon","actions","actionsCallback","actionsPosition","label","offset","bannerContentProps","others","cx","useClasses","anchorOriginBanner","horizontal","vertical","SlideTransition","useCallback","properties","_jsx","Slide","direction","Snackbar","root","rootClosed","anchorOriginTopCenter","anchorOriginBottomCenter","style","TransitionComponent","children","HvBannerContent","setId","content"],"mappings":";;;;;;;;;;;;AAkEO,MAAMA,WAAWA,CAAC;AAAA,EACvBC;AAAAA,EACAC,SAASC,cAAc,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,eAAe;AAAA,EACfC,UAAU;AAAA,EACVC,qBAAqB;AAAA,EACrBC,sBAAsB;AAAA,EACtBC,WAAW;AAAA,EACXC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,kBAAkB;AAAA,EAClBC;AAAAA,EACAC,SAAS;AAAA,EACTC;AAAAA,EACA,GAAGC;AACU,MAAM;AACb,QAAA;AAAA,IAAEjB;AAAAA,IAASkB;AAAAA,EAAAA,IAAOC,cAAAA,WAAWlB,WAAW;AAE9C,QAAMmB,qBAAqC;AAAA,IACzCC,YAAY;AAAA,IACZC,UAAUjB;AAAAA,EAAAA;AAGZ,QAAMkB,kBAAkBC,MAAAA,
|
|
1
|
+
{"version":3,"file":"Banner.cjs","sources":["../../../../src/components/Banner/Banner.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport Slide from \"@mui/material/Slide\";\nimport Snackbar, {\n SnackbarProps as MuiSnackbarProps,\n SnackbarOrigin,\n} from \"@mui/material/Snackbar\";\nimport { HvActionGeneric } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useClasses, staticClasses } from \"./Banner.styles\";\nimport {\n HvBannerContent,\n HvBannerContentProps,\n} from \"./BannerContent/BannerContent\";\n\nexport { staticClasses as bannerClasses };\n\nexport type HvBannerClasses = ExtractNames<typeof useClasses>;\n\nexport type HvBannerVariant = \"success\" | \"warning\" | \"error\" | \"default\";\n\nexport type HvBannerActionPosition = \"auto\" | \"inline\" | \"bottom-right\";\n\nexport interface HvBannerProps\n extends Omit<MuiSnackbarProps, \"anchorOrigin\" | \"classes\" | \"onClose\">,\n HvBaseProps<HTMLDivElement, \"children\"> {\n /** If true, the snackbar is open. */\n open: boolean;\n /** Callback fired when the component requests to be closed. Typically onClose is used to set state in the parent component, which is used to control the Snackbar open prop. The reason parameter can optionally be used to control the response to onClose, for example ignoring clickaway. */\n onClose?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** The message to display. */\n label?: string;\n /** The anchor of the Snackbar. */\n anchorOrigin?: \"top\" | \"bottom\";\n /** Variant of the snackbar. */\n variant?: HvBannerVariant;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Actions to display on the right side. */\n actions?: React.ReactNode | HvActionGeneric[];\n /** The callback function ran when an action is triggered, receiving `action` as param */\n actionsCallback?: (\n event: React.SyntheticEvent,\n id: string,\n action: HvActionGeneric\n ) => void;\n /** The position property of the header. */\n actionsPosition?: HvBannerActionPosition;\n /** How much the transition animation last in milliseconds, if 0 no animation is played. */\n transitionDuration?: number;\n /** Direction of slide transition. */\n transitionDirection?: \"up\" | \"down\" | \"left\" | \"right\";\n /** Offset from top/bottom of the page, in px. Defaults to 60px. */\n offset?: number;\n /** Props to pass down to the Banner Wrapper. An object `actionProps` can be included to be passed as others to actions. */\n bannerContentProps?: HvBannerContentProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBannerClasses;\n}\n\n/**\n * A Banner displays an important and succinct message. It can also provide actions for the user to address, or dismiss.\n * It requires a user action, for it to be dismissed. Banners should appear at the top of the screen, below a top app bar.\n */\nexport const HvBanner = ({\n id,\n classes: classesProp = {},\n className,\n open,\n onClose,\n anchorOrigin = \"top\",\n variant = \"default\",\n transitionDuration = 300,\n transitionDirection = \"down\",\n showIcon = false,\n customIcon,\n actions,\n actionsCallback,\n actionsPosition = \"auto\",\n label,\n offset = 60,\n bannerContentProps,\n ...others\n}: HvBannerProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const anchorOriginBanner: SnackbarOrigin = {\n horizontal: \"center\",\n vertical: anchorOrigin,\n };\n\n const SlideTransition = useCallback<\n NonNullable<MuiSnackbarProps[\"TransitionComponent\"]>\n >(\n (properties) => <Slide {...properties} direction={transitionDirection} />,\n [transitionDirection]\n );\n\n return (\n <Snackbar\n id={id}\n open={open}\n className={className}\n classes={{\n root: cx(classes.root, { [classes.rootClosed]: !open }),\n anchorOriginTopCenter: classes.anchorOriginTopCenter,\n anchorOriginBottomCenter: classes.anchorOriginBottomCenter,\n }}\n style={{ [anchorOrigin]: offset }}\n anchorOrigin={anchorOriginBanner}\n TransitionComponent={SlideTransition}\n transitionDuration={transitionDuration}\n {...others}\n >\n <HvBannerContent\n id={setId(id, \"content\")}\n content={label}\n variant={variant}\n customIcon={customIcon}\n showIcon={showIcon}\n actions={actions}\n actionsCallback={actionsCallback}\n actionsPosition={actionsPosition}\n onClose={onClose}\n {...bannerContentProps}\n />\n </Snackbar>\n );\n};\n"],"names":["HvBanner","id","classes","classesProp","className","open","onClose","anchorOrigin","variant","transitionDuration","transitionDirection","showIcon","customIcon","actions","actionsCallback","actionsPosition","label","offset","bannerContentProps","others","cx","useClasses","anchorOriginBanner","horizontal","vertical","SlideTransition","useCallback","properties","_jsx","Slide","direction","Snackbar","root","rootClosed","anchorOriginTopCenter","anchorOriginBottomCenter","style","TransitionComponent","children","HvBannerContent","setId","content"],"mappings":";;;;;;;;;;;;AAkEO,MAAMA,WAAWA,CAAC;AAAA,EACvBC;AAAAA,EACAC,SAASC,cAAc,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,eAAe;AAAA,EACfC,UAAU;AAAA,EACVC,qBAAqB;AAAA,EACrBC,sBAAsB;AAAA,EACtBC,WAAW;AAAA,EACXC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,kBAAkB;AAAA,EAClBC;AAAAA,EACAC,SAAS;AAAA,EACTC;AAAAA,EACA,GAAGC;AACU,MAAM;AACb,QAAA;AAAA,IAAEjB;AAAAA,IAASkB;AAAAA,EAAAA,IAAOC,cAAAA,WAAWlB,WAAW;AAE9C,QAAMmB,qBAAqC;AAAA,IACzCC,YAAY;AAAA,IACZC,UAAUjB;AAAAA,EAAAA;AAGZ,QAAMkB,kBAAkBC,MAAAA,YAGrBC,CAAeC,eAAAA,2BAAAA,IAACC,eAAAA,SAAK;AAAA,IAAA,GAAKF;AAAAA,IAAYG,WAAWpB;AAAAA,EAAAA,CAAsB,GACxE,CAACA,mBAAmB,CACtB;AAEA,wCACGqB,kBAAAA,SAAQ;AAAA,IACP9B;AAAAA,IACAI;AAAAA,IACAD;AAAAA,IACAF,SAAS;AAAA,MACP8B,MAAMZ,GAAGlB,QAAQ8B,MAAM;AAAA,QAAE,CAAC9B,QAAQ+B,UAAU,GAAG,CAAC5B;AAAAA,MAAAA,CAAM;AAAA,MACtD6B,uBAAuBhC,QAAQgC;AAAAA,MAC/BC,0BAA0BjC,QAAQiC;AAAAA,IACpC;AAAA,IACAC,OAAO;AAAA,MAAE,CAAC7B,YAAY,GAAGU;AAAAA,IAAO;AAAA,IAChCV,cAAce;AAAAA,IACde,qBAAqBZ;AAAAA,IACrBhB;AAAAA,IAAuC,GACnCU;AAAAA,IAAMmB,yCAETC,+BAAe;AAAA,MACdtC,IAAIuC,MAAAA,MAAMvC,IAAI,SAAS;AAAA,MACvBwC,SAASzB;AAAAA,MACTR;AAAAA,MACAI;AAAAA,MACAD;AAAAA,MACAE;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAT;AAAAA,MAAiB,GACbY;AAAAA,IAAAA,CACL;AAAA,EAAA,CACO;AAEd;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDropdown.cjs","sources":["../../../../src/components/BaseDropdown/BaseDropdown.tsx"],"sourcesContent":["import React, { useMemo, useState, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { clsx } from \"clsx\";\nimport {\n ClickAwayListener,\n PopperPlacementType,\n PopperProps,\n} from \"@mui/material\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useControlled, useForkRef, useTheme, useUniqueId } from \"@core/hooks\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { getFirstAndLastFocus } from \"@core/utils/focusableElementFinder\";\nimport { HvBaseProps } from \"@core/types\";\nimport { usePopper } from \"react-popper\";\nimport { detectOverflow, ModifierArguments, Options } from \"@popperjs/core\";\nimport {\n StyledAdornment,\n StyledAnchor,\n StyledContainer,\n StyledExtension,\n StyledHeaderRoot,\n StyledPanel,\n StyledPlaceholder,\n StyledRoot,\n StyledSelection,\n} from \"./BaseDropdown.styles\";\nimport BaseDropdownContext from \"./BaseDropdownContext\";\nimport baseDropdownClasses, {\n HvBaseDropdownClasses,\n} from \"./baseDropdownClasses\";\n\nconst { Tab, Enter, Esc, Space, ArrowDown } = keyboardCodes;\n\nexport interface HvBaseDropdownProps\n extends HvBaseProps<HTMLDivElement, \"placeholder\"> {\n /**\n * The role of the element that triggers the popup.\n *\n * Defaults to \"combobox\" if `component` and the default\n * \"textbox\" header is used, undefined otherwise.\n */\n role?: string;\n /**\n * Header placeholder.\n */\n placeholder?: string | React.ReactNode;\n /**\n * If `true` the dropdown is disabled unable to be interacted, if `false` it is enabled.\n */\n disabled?: boolean;\n /**\n * If `true` the dropdown will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * If `true` the dropdown width depends size of content if `false` the width depends on the header size.\n * Defaults to `false`.\n */\n variableWidth?: boolean;\n /**\n * If `true` the dropdown starts opened if `false` it starts closed.\n */\n expanded?: boolean;\n /**\n * When uncontrolled, defines the initial expanded state.\n */\n defaultExpanded?: boolean;\n /**\n * An object containing props to be wired to the popper component.\n */\n popperProps?: Partial<PopperProps>;\n /**\n * Placement of the dropdown.\n */\n placement?: \"left\" | \"right\";\n /**\n * Replacement for the header component.\n */\n component?: React.ReactNode;\n /**\n * Adornment to replace the default arrows.\n */\n adornment?: React.ReactNode;\n /**\n * When dropdown changes the expanded state.\n */\n onToggle?: (event: Event, open: boolean) => void;\n /**\n * When user click outside the open container.\n */\n onClickOutside?: (event: Event) => void;\n /**\n * Callback called when the dropdown is opened and ready,\n * commonly used to set focus to the content.\n */\n onContainerCreation?: (container: HTMLElement | null) => void;\n /**\n * Attributes applied to the dropdown header element.\n */\n dropdownHeaderProps?: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n /**\n * Pass a ref to the dropdown header element.\n */\n dropdownHeaderRef?: React.Ref<any>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvBaseDropdownClasses;\n}\n\nexport const HvBaseDropdown = ({\n id,\n className,\n classes,\n children,\n role,\n placeholder,\n component,\n adornment,\n expanded,\n dropdownHeaderProps,\n defaultExpanded = false,\n disabled = false,\n readOnly = false,\n disablePortal = false,\n variableWidth = false,\n placement = \"right\",\n popperProps = {},\n dropdownHeaderRef: dropdownHeaderRefProp,\n onToggle,\n onClickOutside,\n onContainerCreation,\n ...others\n}: HvBaseDropdownProps) => {\n const { rootId } = useTheme();\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(\n null\n );\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null);\n const [popperMaxSize, setPopperMaxSize] = useState<{\n width?: number;\n height?: number;\n }>({});\n\n const handleDropdownHeaderRefProp = useForkRef(\n dropdownHeaderRefProp,\n dropdownHeaderProps?.ref\n );\n const handleDropdownHeaderRef = useForkRef(\n setReferenceElement,\n handleDropdownHeaderRefProp\n );\n\n const ariaRole = role || (component == null ? \"combobox\" : undefined);\n\n const elementId = useUniqueId(id, \"hvbasedropdown\");\n\n const bottom: PopperPlacementType =\n placement && `bottom-${placement === \"right\" ? \"start\" : \"end\"}`;\n\n const extensionWidth = referenceElement\n ? referenceElement?.offsetWidth\n : \"inherit\";\n\n const { modifiers: popperPropsModifiers = [], ...otherPopperProps } =\n popperProps;\n\n const onFirstUpdate = useCallback(() => {\n if (onContainerCreation) onContainerCreation(popperElement);\n }, [onContainerCreation, popperElement]);\n\n const widthCalculator = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n []\n );\n\n const widthCalculatorEffect = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n state.elements.popper.style.width = `${\n (state.elements.reference as any).offsetWidth\n }px`;\n },\n []\n );\n\n const applyMaxSizeCalculator = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n // The `maxSize` modifier provides this data\n const { width, height } = state.modifiersData.maxSize;\n if (width !== popperMaxSize?.width || height !== popperMaxSize?.height) {\n setPopperMaxSize({ width, height });\n }\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n };\n },\n [popperMaxSize]\n );\n\n const maxSizeCalculator = useCallback(\n ({ state, name, options }: ModifierArguments<Options>) => {\n const overflow = detectOverflow(state, options);\n\n const x = state.modifiersData.preventOverflow?.x || 0;\n const y = state.modifiersData.preventOverflow?.y || 0;\n\n const popperWidth = state.rects.popper.width;\n const popperHeight = state.rects.popper.height;\n\n const basePlacement = state.placement.split(\"-\")[0];\n\n const widthProp = basePlacement === \"left\" ? \"left\" : \"right\";\n const heightProp = basePlacement === \"top\" ? \"top\" : \"bottom\";\n\n state.modifiersData[name] = {\n width: popperWidth - overflow[widthProp] - x,\n height: popperHeight - overflow[heightProp] - y,\n };\n },\n []\n );\n\n const modifiers: PopperProps[\"modifiers\"] = useMemo(\n () => [\n {\n name: \"variableWidth\",\n enabled: !variableWidth,\n phase: \"beforeWrite\",\n requires: [\"computeStyles\"],\n fn: widthCalculator,\n effect: widthCalculatorEffect,\n },\n {\n name: \"maxSize\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\"offset\", \"preventOverflow\", \"flip\"],\n fn: maxSizeCalculator,\n },\n {\n name: \"applyMaxSize\",\n enabled: true,\n phase: \"beforeWrite\",\n requires: [\"maxSize\"],\n fn: applyMaxSizeCalculator,\n },\n ...popperPropsModifiers,\n ],\n [\n maxSizeCalculator,\n applyMaxSizeCalculator,\n popperPropsModifiers,\n variableWidth,\n widthCalculator,\n widthCalculatorEffect,\n ]\n );\n\n const { styles: popperStyles, attributes } = usePopper(\n referenceElement,\n popperElement,\n {\n placement: bottom,\n modifiers,\n onFirstUpdate,\n ...otherPopperProps,\n }\n );\n\n const popperPlacement =\n attributes.popper?.[\"data-popper-placement\"] ?? \"bottom\";\n\n const handleToggle = useCallback(\n (event) => {\n if (event && !isKeypress(event, Tab)) {\n event.preventDefault();\n }\n\n // We are checking specifically for false because if \"isKeypress\" returns true or undefined it should continue\n const notControlKey = [Tab, Enter, Esc, ArrowDown, Space].every(\n (key) => isKeypress(event, key) === false\n );\n\n const ignoredCombinations =\n (isKeypress(event, Esc) && !isOpen) ||\n (isKeypress(event, ArrowDown) && isOpen) ||\n (isKeypress(event, Tab) && !isOpen);\n\n if (disabled || notControlKey || ignoredCombinations) return;\n\n const newOpen = !isOpen;\n\n /* If about to close focus on the header component. */\n const focusHeader = () => {\n if (!newOpen) {\n // Focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n referenceElement?.focus({ preventScroll: true });\n }\n\n return newOpen;\n };\n setIsOpen(focusHeader());\n\n onToggle?.(event, newOpen);\n },\n [isOpen, disabled, setIsOpen, onToggle, referenceElement]\n );\n\n const headerComponent = (() => {\n if (component) {\n return React.cloneElement(component as React.ReactElement, {\n ref: handleDropdownHeaderRef,\n });\n }\n\n const ExpanderComponent = isOpen ? DropUpXS : DropDownXS;\n\n return (\n <StyledHeaderRoot\n id={setId(id, \"header\")}\n className={clsx(\n baseDropdownClasses.header,\n classes?.header,\n disabled &&\n clsx(baseDropdownClasses.headerDisabled, classes?.headerDisabled),\n readOnly &&\n clsx(baseDropdownClasses.headerReadOnly, classes?.headerReadOnly),\n isOpen && clsx(baseDropdownClasses.headerOpen, classes?.headerOpen),\n isOpen &&\n popperPlacement.includes(\"top\") &&\n clsx(baseDropdownClasses.headerOpenUp, classes?.headerOpenUp),\n isOpen &&\n popperPlacement.includes(\"bottom\") &&\n clsx(baseDropdownClasses.headerOpenDown, classes?.headerOpenDown)\n )}\n $disabled={disabled}\n $readOnly={readOnly}\n $opened={isOpen}\n $openedUp={isOpen && popperPlacement.includes(\"top\")}\n $openedDown={isOpen && popperPlacement.includes(\"bottom\")}\n role={ariaRole === \"combobox\" ? \"textbox\" : undefined}\n style={disabled || readOnly ? { pointerEvents: \"none\" } : undefined}\n aria-controls={\n isOpen ? setId(elementId, \"children-container\") : undefined\n }\n aria-label={others[\"aria-label\"] ?? undefined}\n aria-labelledby={others[\"aria-labelledby\"] ?? undefined}\n // Removes the element from the navigation sequence for keyboard focus if disabled\n tabIndex={disabled ? -1 : 0}\n ref={handleDropdownHeaderRef}\n {...dropdownHeaderProps}\n >\n <StyledSelection\n className={clsx(baseDropdownClasses.selection, classes?.selection)}\n >\n {placeholder && typeof placeholder === \"string\" ? (\n <StyledPlaceholder\n className={clsx(\n baseDropdownClasses.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(\n baseDropdownClasses.selectionDisabled,\n classes?.selectionDisabled\n )\n )}\n $disabled={disabled}\n variant=\"body\"\n >\n {placeholder}\n </StyledPlaceholder>\n ) : (\n placeholder\n )}\n </StyledSelection>\n <StyledAdornment>\n {adornment || (\n <ExpanderComponent\n iconSize=\"XS\"\n color={disabled ? theme.colors.secondary_60 : undefined}\n className={clsx(baseDropdownClasses.arrow, classes?.arrow)}\n />\n )}\n </StyledAdornment>\n </StyledHeaderRoot>\n );\n })();\n\n const containerComponent = (() => {\n /**\n * Handle keyboard inside children container.\n */\n const handleContainerKeyDown = (event) => {\n if (isKeypress(event, Esc)) {\n handleToggle(event);\n }\n if (isKeypress(event, Tab) && !event.shiftKey) {\n const focusList = getFirstAndLastFocus(popperElement);\n if (document.activeElement === focusList?.last) {\n event.preventDefault();\n focusList?.first?.focus();\n }\n }\n };\n\n const handleOutside = (event) => {\n const isButtonClick = referenceElement?.contains(event.target);\n if (!isButtonClick) {\n onClickOutside?.(event);\n setIsOpen(false);\n onToggle?.(event, false);\n }\n };\n\n const container = (\n <StyledContainer\n role=\"tooltip\"\n ref={setPopperElement}\n className={clsx(baseDropdownClasses.container, classes?.container)}\n style={popperStyles.popper}\n {...attributes.popper}\n >\n <ClickAwayListener onClickAway={handleOutside}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div onKeyDown={handleContainerKeyDown}>\n {popperPlacement.includes(\"bottom\") && (\n <StyledExtension\n style={{ width: extensionWidth }}\n className={clsx(\n baseDropdownClasses.inputExtensionOpen,\n classes?.inputExtensionOpen,\n popperPlacement.includes(\"end\") &&\n clsx(\n baseDropdownClasses.inputExtensionLeftPosition,\n classes?.inputExtensionLeftPosition\n )\n )}\n $leftPosition={popperPlacement.includes(\"end\")}\n $openShadow={false}\n $floatLeft={false}\n $floatRight={false}\n />\n )}\n <BaseDropdownContext.Provider value={popperMaxSize}>\n <StyledPanel\n id={setId(elementId, \"children-container\")}\n className={clsx(baseDropdownClasses.panel, classes?.panel)}\n $popperPlacement={\n popperPlacement.includes(\"top\") ? \"top\" : \"bottom\"\n }\n >\n {children}\n </StyledPanel>\n </BaseDropdownContext.Provider>\n {popperPlacement.includes(\"top\") && (\n <StyledExtension\n style={{ width: extensionWidth }}\n className={clsx(\n baseDropdownClasses.inputExtensionOpen,\n classes?.inputExtensionOpen,\n baseDropdownClasses.inputExtensionOpenShadow,\n classes?.inputExtensionOpenShadow,\n popperPlacement.includes(\"end\") &&\n clsx(\n baseDropdownClasses.inputExtensionFloatRight,\n classes?.inputExtensionFloatRight\n ),\n popperPlacement.includes(\"start\") &&\n clsx(\n baseDropdownClasses.inputExtensionFloatLeft,\n classes?.inputExtensionFloatLeft\n )\n )}\n $leftPosition={false}\n $openShadow\n $floatLeft={popperPlacement.includes(\"start\")}\n $floatRight={popperPlacement.includes(\"end\")}\n />\n )}\n </div>\n </ClickAwayListener>\n </StyledContainer>\n );\n\n if (disablePortal) return container;\n\n return createPortal(\n container,\n document.getElementById(rootId || \"\") || document.body\n );\n })();\n\n return (\n <StyledRoot className={clsx(baseDropdownClasses.root, classes?.root)}>\n <StyledAnchor\n id={id}\n role={ariaRole}\n aria-expanded={!!isOpen}\n aria-owns={isOpen ? setId(elementId, \"children-container\") : undefined}\n className={clsx(\n className,\n baseDropdownClasses.anchor,\n classes?.anchor,\n disabled &&\n clsx(baseDropdownClasses.rootDisabled, classes?.rootDisabled)\n )}\n $disabled={disabled}\n {...(!readOnly && {\n onKeyDown: handleToggle,\n onClick: handleToggle,\n })}\n // Removes the element from the navigation sequence for keyboard focus\n tabIndex={-1}\n {...others}\n >\n {headerComponent}\n </StyledAnchor>\n {isOpen && containerComponent}\n </StyledRoot>\n );\n};\n"],"names":["Tab","Enter","Esc","Space","ArrowDown","keyboardCodes","HvBaseDropdown","id","className","classes","children","role","placeholder","component","adornment","expanded","dropdownHeaderProps","defaultExpanded","disabled","readOnly","disablePortal","variableWidth","placement","popperProps","dropdownHeaderRef","dropdownHeaderRefProp","onToggle","onClickOutside","onContainerCreation","others","rootId","useTheme","isOpen","setIsOpen","useControlled","Boolean","referenceElement","setReferenceElement","useState","popperElement","setPopperElement","popperMaxSize","setPopperMaxSize","handleDropdownHeaderRefProp","useForkRef","ref","handleDropdownHeaderRef","ariaRole","undefined","elementId","useUniqueId","bottom","extensionWidth","offsetWidth","modifiers","popperPropsModifiers","otherPopperProps","onFirstUpdate","useCallback","widthCalculator","state","styles","popper","width","rects","reference","widthCalculatorEffect","elements","style","applyMaxSizeCalculator","height","modifiersData","maxSize","maxWidth","maxHeight","maxSizeCalculator","name","options","overflow","detectOverflow","x","preventOverflow","y","popperWidth","popperHeight","basePlacement","split","widthProp","heightProp","useMemo","enabled","phase","requires","fn","effect","requiresIfExists","popperStyles","attributes","usePopper","popperPlacement","handleToggle","event","isKeypress","preventDefault","notControlKey","every","key","ignoredCombinations","newOpen","focusHeader","focus","preventScroll","headerComponent","React","cloneElement","ExpanderComponent","DropUpXS","DropDownXS","StyledHeaderRoot","setId","clsx","baseDropdownClasses","header","headerDisabled","headerReadOnly","headerOpen","includes","headerOpenUp","headerOpenDown","$disabled","$readOnly","$opened","$openedUp","$openedDown","pointerEvents","tabIndex","_jsx","StyledSelection","selection","StyledPlaceholder","selectionDisabled","variant","StyledAdornment","iconSize","color","theme","colors","secondary_60","arrow","containerComponent","handleContainerKeyDown","shiftKey","focusList","getFirstAndLastFocus","document","activeElement","last","first","handleOutside","isButtonClick","contains","target","container","StyledContainer","ClickAwayListener","onClickAway","onKeyDown","StyledExtension","inputExtensionOpen","inputExtensionLeftPosition","$leftPosition","$openShadow","$floatLeft","$floatRight","BaseDropdownContext","Provider","value","StyledPanel","panel","$popperPlacement","inputExtensionOpenShadow","inputExtensionFloatRight","inputExtensionFloatLeft","createPortal","getElementById","body","StyledRoot","root","StyledAnchor","anchor","rootDisabled","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseDropdown.cjs","sources":["../../../../src/components/BaseDropdown/BaseDropdown.tsx"],"sourcesContent":["import React, {\n useMemo,\n useState,\n useCallback,\n KeyboardEventHandler,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { clsx } from \"clsx\";\nimport {\n ClickAwayListener,\n ClickAwayListenerProps,\n PopperPlacementType,\n PopperProps,\n} from \"@mui/material\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useControlled, useForkRef, useTheme, useUniqueId } from \"@core/hooks\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { getFirstAndLastFocus } from \"@core/utils/focusableElementFinder\";\nimport { HvBaseProps } from \"@core/types\";\nimport { usePopper } from \"react-popper\";\nimport { detectOverflow, ModifierArguments, Options } from \"@popperjs/core\";\nimport {\n StyledAdornment,\n StyledAnchor,\n StyledContainer,\n StyledExtension,\n StyledHeaderRoot,\n StyledPanel,\n StyledPlaceholder,\n StyledRoot,\n StyledSelection,\n} from \"./BaseDropdown.styles\";\nimport BaseDropdownContext from \"./BaseDropdownContext\";\nimport baseDropdownClasses, {\n HvBaseDropdownClasses,\n} from \"./baseDropdownClasses\";\n\nconst { Tab, Enter, Esc, Space, ArrowDown } = keyboardCodes;\n\nexport interface HvBaseDropdownProps\n extends HvBaseProps<HTMLDivElement, \"placeholder\"> {\n /**\n * The role of the element that triggers the popup.\n *\n * Defaults to \"combobox\" if `component` and the default\n * \"textbox\" header is used, undefined otherwise.\n */\n role?: string;\n /**\n * Header placeholder.\n */\n placeholder?: string | React.ReactNode;\n /**\n * If `true` the dropdown is disabled unable to be interacted, if `false` it is enabled.\n */\n disabled?: boolean;\n /**\n * If `true` the dropdown will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * If `true` the dropdown width depends size of content if `false` the width depends on the header size.\n * Defaults to `false`.\n */\n variableWidth?: boolean;\n /**\n * If `true` the dropdown starts opened if `false` it starts closed.\n */\n expanded?: boolean;\n /**\n * When uncontrolled, defines the initial expanded state.\n */\n defaultExpanded?: boolean;\n /**\n * An object containing props to be wired to the popper component.\n */\n popperProps?: Partial<PopperProps>;\n /**\n * Placement of the dropdown.\n */\n placement?: \"left\" | \"right\";\n /**\n * Replacement for the header component.\n */\n component?: React.ReactNode;\n /**\n * Adornment to replace the default arrows.\n */\n adornment?: React.ReactNode;\n /**\n * When dropdown changes the expanded state.\n */\n onToggle?: (event: Event, open: boolean) => void;\n /**\n * When user click outside the open container.\n */\n onClickOutside?: (event: Event) => void;\n /**\n * Callback called when the dropdown is opened and ready,\n * commonly used to set focus to the content.\n */\n onContainerCreation?: (container: HTMLElement | null) => void;\n /**\n * Attributes applied to the dropdown header element.\n */\n dropdownHeaderProps?: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n /**\n * Pass a ref to the dropdown header element.\n */\n dropdownHeaderRef?: React.Ref<any>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvBaseDropdownClasses;\n}\n\nexport const HvBaseDropdown = ({\n id,\n className,\n classes,\n children,\n role,\n placeholder,\n component,\n adornment,\n expanded,\n dropdownHeaderProps,\n defaultExpanded = false,\n disabled = false,\n readOnly = false,\n disablePortal = false,\n variableWidth = false,\n placement = \"right\",\n popperProps = {},\n dropdownHeaderRef: dropdownHeaderRefProp,\n onToggle,\n onClickOutside,\n onContainerCreation,\n ...others\n}: HvBaseDropdownProps) => {\n const { rootId } = useTheme();\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(\n null\n );\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null);\n const [popperMaxSize, setPopperMaxSize] = useState<{\n width?: number;\n height?: number;\n }>({});\n\n const handleDropdownHeaderRefProp = useForkRef(\n dropdownHeaderRefProp,\n dropdownHeaderProps?.ref\n );\n const handleDropdownHeaderRef = useForkRef(\n setReferenceElement,\n handleDropdownHeaderRefProp\n );\n\n const ariaRole = role || (component == null ? \"combobox\" : undefined);\n\n const elementId = useUniqueId(id, \"hvbasedropdown\");\n\n const bottom: PopperPlacementType =\n placement && `bottom-${placement === \"right\" ? \"start\" : \"end\"}`;\n\n const extensionWidth = referenceElement\n ? referenceElement?.offsetWidth\n : \"inherit\";\n\n const { modifiers: popperPropsModifiers = [], ...otherPopperProps } =\n popperProps;\n\n const onFirstUpdate = useCallback(() => {\n if (onContainerCreation) onContainerCreation(popperElement);\n }, [onContainerCreation, popperElement]);\n\n const widthCalculator = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n []\n );\n\n const widthCalculatorEffect = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n state.elements.popper.style.width = `${\n (state.elements.reference as any).offsetWidth\n }px`;\n },\n []\n );\n\n const applyMaxSizeCalculator = useCallback(\n ({ state }: ModifierArguments<Options>) => {\n // The `maxSize` modifier provides this data\n const { width, height } = state.modifiersData.maxSize;\n if (width !== popperMaxSize?.width || height !== popperMaxSize?.height) {\n setPopperMaxSize({ width, height });\n }\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n };\n },\n [popperMaxSize]\n );\n\n const maxSizeCalculator = useCallback(\n ({ state, name, options }: ModifierArguments<Options>) => {\n const overflow = detectOverflow(state, options);\n\n const x = state.modifiersData.preventOverflow?.x || 0;\n const y = state.modifiersData.preventOverflow?.y || 0;\n\n const popperWidth = state.rects.popper.width;\n const popperHeight = state.rects.popper.height;\n\n const basePlacement = state.placement.split(\"-\")[0];\n\n const widthProp = basePlacement === \"left\" ? \"left\" : \"right\";\n const heightProp = basePlacement === \"top\" ? \"top\" : \"bottom\";\n\n state.modifiersData[name] = {\n width: popperWidth - overflow[widthProp] - x,\n height: popperHeight - overflow[heightProp] - y,\n };\n },\n []\n );\n\n const modifiers: PopperProps[\"modifiers\"] = useMemo(\n () => [\n {\n name: \"variableWidth\",\n enabled: !variableWidth,\n phase: \"beforeWrite\",\n requires: [\"computeStyles\"],\n fn: widthCalculator,\n effect: widthCalculatorEffect,\n },\n {\n name: \"maxSize\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\"offset\", \"preventOverflow\", \"flip\"],\n fn: maxSizeCalculator,\n },\n {\n name: \"applyMaxSize\",\n enabled: true,\n phase: \"beforeWrite\",\n requires: [\"maxSize\"],\n fn: applyMaxSizeCalculator,\n },\n ...popperPropsModifiers,\n ],\n [\n maxSizeCalculator,\n applyMaxSizeCalculator,\n popperPropsModifiers,\n variableWidth,\n widthCalculator,\n widthCalculatorEffect,\n ]\n );\n\n const { styles: popperStyles, attributes } = usePopper(\n referenceElement,\n popperElement,\n {\n placement: bottom,\n modifiers,\n onFirstUpdate,\n ...otherPopperProps,\n }\n );\n\n const popperPlacement =\n attributes.popper?.[\"data-popper-placement\"] ?? \"bottom\";\n\n const handleToggle = useCallback(\n (event) => {\n if (event && !isKeypress(event, Tab)) {\n event.preventDefault();\n }\n\n // We are checking specifically for false because if \"isKeypress\" returns true or undefined it should continue\n const notControlKey = [Tab, Enter, Esc, ArrowDown, Space].every(\n (key) => isKeypress(event, key) === false\n );\n\n const ignoredCombinations =\n (isKeypress(event, Esc) && !isOpen) ||\n (isKeypress(event, ArrowDown) && isOpen) ||\n (isKeypress(event, Tab) && !isOpen);\n\n if (disabled || notControlKey || ignoredCombinations) return;\n\n const newOpen = !isOpen;\n\n /* If about to close focus on the header component. */\n const focusHeader = () => {\n if (!newOpen) {\n // Focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n referenceElement?.focus({ preventScroll: true });\n }\n\n return newOpen;\n };\n setIsOpen(focusHeader());\n\n onToggle?.(event, newOpen);\n },\n [isOpen, disabled, setIsOpen, onToggle, referenceElement]\n );\n\n const headerComponent = (() => {\n if (component) {\n return React.cloneElement(component as React.ReactElement, {\n ref: handleDropdownHeaderRef,\n });\n }\n\n const ExpanderComponent = isOpen ? DropUpXS : DropDownXS;\n\n return (\n <StyledHeaderRoot\n id={setId(id, \"header\")}\n className={clsx(\n baseDropdownClasses.header,\n classes?.header,\n disabled &&\n clsx(baseDropdownClasses.headerDisabled, classes?.headerDisabled),\n readOnly &&\n clsx(baseDropdownClasses.headerReadOnly, classes?.headerReadOnly),\n isOpen && clsx(baseDropdownClasses.headerOpen, classes?.headerOpen),\n isOpen &&\n popperPlacement.includes(\"top\") &&\n clsx(baseDropdownClasses.headerOpenUp, classes?.headerOpenUp),\n isOpen &&\n popperPlacement.includes(\"bottom\") &&\n clsx(baseDropdownClasses.headerOpenDown, classes?.headerOpenDown)\n )}\n $disabled={disabled}\n $readOnly={readOnly}\n $opened={isOpen}\n $openedUp={isOpen && popperPlacement.includes(\"top\")}\n $openedDown={isOpen && popperPlacement.includes(\"bottom\")}\n role={ariaRole === \"combobox\" ? \"textbox\" : undefined}\n style={disabled || readOnly ? { pointerEvents: \"none\" } : undefined}\n aria-controls={\n isOpen ? setId(elementId, \"children-container\") : undefined\n }\n aria-label={others[\"aria-label\"] ?? undefined}\n aria-labelledby={others[\"aria-labelledby\"] ?? undefined}\n // Removes the element from the navigation sequence for keyboard focus if disabled\n tabIndex={disabled ? -1 : 0}\n ref={handleDropdownHeaderRef}\n {...dropdownHeaderProps}\n >\n <StyledSelection\n className={clsx(baseDropdownClasses.selection, classes?.selection)}\n >\n {placeholder && typeof placeholder === \"string\" ? (\n <StyledPlaceholder\n className={clsx(\n baseDropdownClasses.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(\n baseDropdownClasses.selectionDisabled,\n classes?.selectionDisabled\n )\n )}\n $disabled={disabled}\n variant=\"body\"\n >\n {placeholder}\n </StyledPlaceholder>\n ) : (\n placeholder\n )}\n </StyledSelection>\n <StyledAdornment>\n {adornment || (\n <ExpanderComponent\n iconSize=\"XS\"\n color={disabled ? theme.colors.secondary_60 : undefined}\n className={clsx(baseDropdownClasses.arrow, classes?.arrow)}\n />\n )}\n </StyledAdornment>\n </StyledHeaderRoot>\n );\n })();\n\n const containerComponent = (() => {\n /**\n * Handle keyboard inside children container.\n */\n const handleContainerKeyDown: KeyboardEventHandler = (event) => {\n if (isKeypress(event, Esc)) {\n handleToggle(event);\n }\n if (isKeypress(event, Tab) && !event.shiftKey) {\n const focusList = getFirstAndLastFocus(popperElement);\n if (document.activeElement === focusList?.last) {\n event.preventDefault();\n focusList?.first?.focus();\n }\n }\n };\n\n const handleOutside: ClickAwayListenerProps[\"onClickAway\"] = (event) => {\n const isButtonClick = referenceElement?.contains(event.target as any);\n if (!isButtonClick) {\n onClickOutside?.(event);\n setIsOpen(false);\n onToggle?.(event, false);\n }\n };\n\n const container = (\n <StyledContainer\n role=\"tooltip\"\n ref={setPopperElement}\n className={clsx(baseDropdownClasses.container, classes?.container)}\n style={popperStyles.popper}\n {...attributes.popper}\n >\n <ClickAwayListener onClickAway={handleOutside}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div onKeyDown={handleContainerKeyDown}>\n {popperPlacement.includes(\"bottom\") && (\n <StyledExtension\n style={{ width: extensionWidth }}\n className={clsx(\n baseDropdownClasses.inputExtensionOpen,\n classes?.inputExtensionOpen,\n popperPlacement.includes(\"end\") &&\n clsx(\n baseDropdownClasses.inputExtensionLeftPosition,\n classes?.inputExtensionLeftPosition\n )\n )}\n $leftPosition={popperPlacement.includes(\"end\")}\n $openShadow={false}\n $floatLeft={false}\n $floatRight={false}\n />\n )}\n <BaseDropdownContext.Provider value={popperMaxSize}>\n <StyledPanel\n id={setId(elementId, \"children-container\")}\n className={clsx(baseDropdownClasses.panel, classes?.panel)}\n $popperPlacement={\n popperPlacement.includes(\"top\") ? \"top\" : \"bottom\"\n }\n >\n {children}\n </StyledPanel>\n </BaseDropdownContext.Provider>\n {popperPlacement.includes(\"top\") && (\n <StyledExtension\n style={{ width: extensionWidth }}\n className={clsx(\n baseDropdownClasses.inputExtensionOpen,\n classes?.inputExtensionOpen,\n baseDropdownClasses.inputExtensionOpenShadow,\n classes?.inputExtensionOpenShadow,\n popperPlacement.includes(\"end\") &&\n clsx(\n baseDropdownClasses.inputExtensionFloatRight,\n classes?.inputExtensionFloatRight\n ),\n popperPlacement.includes(\"start\") &&\n clsx(\n baseDropdownClasses.inputExtensionFloatLeft,\n classes?.inputExtensionFloatLeft\n )\n )}\n $leftPosition={false}\n $openShadow\n $floatLeft={popperPlacement.includes(\"start\")}\n $floatRight={popperPlacement.includes(\"end\")}\n />\n )}\n </div>\n </ClickAwayListener>\n </StyledContainer>\n );\n\n if (disablePortal) return container;\n\n return createPortal(\n container,\n document.getElementById(rootId || \"\") || document.body\n );\n })();\n\n return (\n <StyledRoot className={clsx(baseDropdownClasses.root, classes?.root)}>\n <StyledAnchor\n id={id}\n role={ariaRole}\n aria-expanded={!!isOpen}\n aria-owns={isOpen ? setId(elementId, \"children-container\") : undefined}\n className={clsx(\n className,\n baseDropdownClasses.anchor,\n classes?.anchor,\n disabled &&\n clsx(baseDropdownClasses.rootDisabled, classes?.rootDisabled)\n )}\n $disabled={disabled}\n {...(!readOnly && {\n onKeyDown: handleToggle,\n onClick: handleToggle,\n })}\n // Removes the element from the navigation sequence for keyboard focus\n tabIndex={-1}\n {...others}\n >\n {headerComponent}\n </StyledAnchor>\n {isOpen && containerComponent}\n </StyledRoot>\n );\n};\n"],"names":["Tab","Enter","Esc","Space","ArrowDown","keyboardCodes","HvBaseDropdown","id","className","classes","children","role","placeholder","component","adornment","expanded","dropdownHeaderProps","defaultExpanded","disabled","readOnly","disablePortal","variableWidth","placement","popperProps","dropdownHeaderRef","dropdownHeaderRefProp","onToggle","onClickOutside","onContainerCreation","others","rootId","useTheme","isOpen","setIsOpen","useControlled","Boolean","referenceElement","setReferenceElement","useState","popperElement","setPopperElement","popperMaxSize","setPopperMaxSize","handleDropdownHeaderRefProp","useForkRef","ref","handleDropdownHeaderRef","ariaRole","undefined","elementId","useUniqueId","bottom","extensionWidth","offsetWidth","modifiers","popperPropsModifiers","otherPopperProps","onFirstUpdate","useCallback","widthCalculator","state","styles","popper","width","rects","reference","widthCalculatorEffect","elements","style","applyMaxSizeCalculator","height","modifiersData","maxSize","maxWidth","maxHeight","maxSizeCalculator","name","options","overflow","detectOverflow","x","preventOverflow","y","popperWidth","popperHeight","basePlacement","split","widthProp","heightProp","useMemo","enabled","phase","requires","fn","effect","requiresIfExists","popperStyles","attributes","usePopper","popperPlacement","handleToggle","event","isKeypress","preventDefault","notControlKey","every","key","ignoredCombinations","newOpen","focusHeader","focus","preventScroll","headerComponent","React","cloneElement","ExpanderComponent","DropUpXS","DropDownXS","StyledHeaderRoot","setId","clsx","baseDropdownClasses","header","headerDisabled","headerReadOnly","headerOpen","includes","headerOpenUp","headerOpenDown","$disabled","$readOnly","$opened","$openedUp","$openedDown","pointerEvents","tabIndex","_jsx","StyledSelection","selection","StyledPlaceholder","selectionDisabled","variant","StyledAdornment","iconSize","color","theme","colors","secondary_60","arrow","containerComponent","handleContainerKeyDown","shiftKey","focusList","getFirstAndLastFocus","document","activeElement","last","first","handleOutside","isButtonClick","contains","target","container","StyledContainer","ClickAwayListener","onClickAway","onKeyDown","StyledExtension","inputExtensionOpen","inputExtensionLeftPosition","$leftPosition","$openShadow","$floatLeft","$floatRight","BaseDropdownContext","Provider","value","StyledPanel","panel","$popperPlacement","inputExtensionOpenShadow","inputExtensionFloatRight","inputExtensionFloatLeft","createPortal","getElementById","body","StyledRoot","root","StyledAnchor","anchor","rootDisabled","onClick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.cjs","sources":["../../../../src/components/BaseInput/validations.ts"],"sourcesContent":["import validationStates from \"../Forms/FormElement/validationStates\";\n\n/**\n * Checks if the value is a number.\n *\n * @param {Number || String} num - The value to test.\n *\n * @returns {Boolean} - `true` if the value is a number `false` otherwise.\n */\nconst isNumeric = (num) =>\n // to prevent Number( <spaces> ) = 0\n num.trim().length > 0 && !Number.isNaN(Number(num));\n\n/**\n * Checks if the value is an email\n *\n * @param {String} email - The value to test.\n *\n * @returns {Boolean} - `true` if the value is an email `false` otherwise.\n */\nconst isEmail = (email) => {\n const regexp =\n /^[^\\\\s]+[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[.])+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$/i;\n return regexp.test(email);\n};\n\nexport const validationTypes = Object.freeze({\n none: \"none\",\n number: \"number\",\n email: \"email\",\n});\n\n/**\n * Returns the input's validation type based in the type of the input.\n *\n * @param {String} type - the input type.\n *\n * @returns {String} - the validation type.\n */\nexport const computeValidationType = (type) => {\n switch (type) {\n case \"number\":\n return validationTypes.number;\n case \"email\":\n return validationTypes.email;\n\n default:\n return validationTypes.none;\n }\n};\n\n/**\n * Checks whether any integrated validation, native or not, is active.\n */\nexport const hasBuiltInValidations = (\n required,\n validationType,\n minCharQuantity,\n maxCharQuantity,\n validation,\n inputProps\n) =>\n required ||\n validationType !== validationTypes.none ||\n minCharQuantity != null ||\n maxCharQuantity != null ||\n validation != null ||\n inputProps?.required != null ||\n inputProps?.minLength != null ||\n inputProps?.maxLength != null ||\n inputProps?.min != null ||\n inputProps?.max != null ||\n (inputProps?.type != null &&\n inputProps?.type !== \"text\" &&\n inputProps?.type !== \"password\") ||\n inputProps?.pattern != null;\n\n/**\n * Returns the form element's validation state based in the validity state of the input.\n *\n * @param {Object} inputValidity - the input validity state (implementing ValidityState interface).\n *\n * @returns {String} - the validation state.\n */\nexport const computeValidationState = (inputValidity, isEmptyValue) => {\n // to keep 2.x behaviour,\n // consider that if the value is empty (and not required) we're returning to the standBy state.\n // might not make sense, as it makes impossible to say if the user explicitly cleared the input.\n if (inputValidity.valid && isEmptyValue) {\n return validationStates.standBy;\n }\n\n return inputValidity.valid\n ? validationStates.valid\n : validationStates.invalid;\n};\n\n/**\n * Returns a error message based in the validity state of the input.\n *\n * Only one error message is returned even if multiple validations fail.\n * Also, only required, minCharQuantity, maxCharQuantity and validationType have specific error messages.\n *\n * For further customization both status and statusMessage should be controlled and\n * set using the onBlur callback that receives both the value and the input validity object.\n *\n * @param {Object} inputValidity - the input validity state (implementing ValidityState interface).\n * @param {Object} errorMessages - the available localized error messages.\n *\n * @returns {String} - the error message.\n */\nexport const computeValidationMessage = (inputValidity, errorMessages) => {\n if (inputValidity.valid) {\n return \"\";\n }\n\n if (inputValidity.valueMissing) {\n return errorMessages.requiredError;\n }\n if (inputValidity.tooLong) {\n return errorMessages.maxCharError;\n }\n if (inputValidity.tooShort) {\n return errorMessages.minCharError;\n }\n if (inputValidity.typeMismatch) {\n return errorMessages.typeMismatchError;\n }\n\n return errorMessages.error;\n};\n\n/**\n * Returns a object describing the validity state of the input.\n *\n * It implements the native browser's ValidityState interface:\n * https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n *\n * @param {DOMElement} input - the input being validated.\n * @param {String} value - the inputted value.\n * @param {Boolean} required - if the input needs to be filled.\n * @param {Number} minCharQuantity - the minimum length of the value.\n * @param {Number} maxCharQuantity - the maximum length of the value.\n * @param {String} validationType - the input value type.\n * @param {Function} validation - a custom validation function.\n *\n * @returns {Object} - the validity state of the input.\n */\nexport const validateInput = (\n input,\n value,\n required,\n minCharQuantity,\n maxCharQuantity,\n validationType,\n validation\n): HvInputValidity => {\n // bootstrap validity object using browser's built-in validation\n const inputValidity: HvInputValidity = {\n valid: input?.validity?.valid ?? true,\n badInput: input?.validity?.badInput,\n customError: input?.validity?.customError,\n patternMismatch: input?.validity?.patternMismatch,\n rangeOverflow: input?.validity?.rangeOverflow,\n rangeUnderflow: input?.validity?.rangeUnderflow,\n stepMismatch: input?.validity?.stepMismatch,\n tooLong: input?.validity?.tooLong,\n tooShort: input?.validity?.tooShort,\n typeMismatch: input?.validity?.typeMismatch,\n valueMissing: input?.validity?.valueMissing,\n };\n\n if (!value) {\n if (required) {\n // this is redundant because we're setting the required property in the native input\n inputValidity.valueMissing = true;\n inputValidity.valid = false;\n }\n } else {\n // we're not setting minlength and maxlength in the native input\n // to avoid different browser's behaviours and keep the user experience consistent\n if (minCharQuantity !== null && value.length < minCharQuantity) {\n inputValidity.tooShort = true;\n inputValidity.valid = false;\n }\n\n if (maxCharQuantity !== null && value.length > maxCharQuantity) {\n inputValidity.tooLong = true;\n inputValidity.valid = false;\n }\n\n // the validationType is used instead of type\n // for the same reason stated above\n switch (validationType) {\n case validationTypes.number:\n if (!isNumeric(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n case validationTypes.email:\n if (!isEmail(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n default:\n }\n\n if (validation != null && !validation(value)) {\n inputValidity.customError = true;\n inputValidity.valid = false;\n }\n }\n\n return inputValidity;\n};\n\nexport type HvInputValidity = {\n valid?: boolean;\n badInput?: boolean;\n customError?: boolean;\n patternMismatch?: boolean;\n rangeOverflow?: boolean;\n rangeUnderflow?: boolean;\n stepMismatch?: boolean;\n tooLong?: boolean;\n tooShort?: boolean;\n typeMismatch?: boolean;\n valueMissing?: boolean;\n};\n\nexport const DEFAULT_ERROR_MESSAGES = {\n error: \"Invalid value\",\n requiredError: \"The value is required\",\n minCharError: \"The value is too short\",\n maxCharError: \"The value is too long\",\n typeMismatchError: \"Invalid value\",\n};\n"],"names":["isNumeric","num","trim","length","Number","isNaN","isEmail","email","regexp","test","validationTypes","Object","freeze","none","number","computeValidationType","type","hasBuiltInValidations","required","validationType","minCharQuantity","maxCharQuantity","validation","inputProps","minLength","maxLength","min","max","pattern","computeValidationState","inputValidity","isEmptyValue","valid","validationStates","standBy","invalid","computeValidationMessage","errorMessages","valueMissing","requiredError","tooLong","maxCharError","tooShort","minCharError","typeMismatch","typeMismatchError","error","validateInput","input","value","validity","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","DEFAULT_ERROR_MESSAGES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validations.cjs","sources":["../../../../src/components/BaseInput/validations.ts"],"sourcesContent":["import { HTMLInputTypeAttribute } from \"react\";\nimport { InputBaseComponentProps } from \"@mui/material\";\nimport validationStates from \"../Forms/FormElement/validationStates\";\nimport { HvInputProps } from \"..\";\n\n/** Checks if the value is a number. */\nconst isNumeric = (num: string) =>\n // to prevent Number( <spaces> ) = 0\n num.trim().length > 0 && !Number.isNaN(Number(num));\n\n/** Checks if the value is an email */\nconst isEmail = (email: string) => {\n const regexp =\n /^[^\\\\s]+[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[.])+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$/i;\n return regexp.test(email);\n};\n\nexport const validationTypes = Object.freeze({\n none: \"none\",\n number: \"number\",\n email: \"email\",\n});\n\n/** Returns the input's validation type based in the type of the input. */\nexport const computeValidationType = (type: HTMLInputTypeAttribute) => {\n switch (type) {\n case \"number\":\n return validationTypes.number;\n case \"email\":\n return validationTypes.email;\n\n default:\n return validationTypes.none;\n }\n};\n\n/**\n * Checks whether any integrated validation, native or not, is active.\n */\nexport const hasBuiltInValidations = (\n required: boolean,\n validationType: HTMLInputTypeAttribute,\n minCharQuantity: number | null | undefined,\n maxCharQuantity: number | null | undefined,\n validation?: (value: string) => boolean,\n inputProps?: InputBaseComponentProps\n) =>\n required ||\n validationType !== validationTypes.none ||\n minCharQuantity != null ||\n maxCharQuantity != null ||\n validation != null ||\n inputProps?.required != null ||\n inputProps?.minLength != null ||\n inputProps?.maxLength != null ||\n inputProps?.min != null ||\n inputProps?.max != null ||\n (inputProps?.type != null &&\n inputProps?.type !== \"text\" &&\n inputProps?.type !== \"password\") ||\n inputProps?.pattern != null;\n\n/** Returns the form element's validation state based in the validity state of the input. */\nexport const computeValidationState = (\n inputValidity: HvInputValidity,\n isEmptyValue: boolean\n) => {\n // to keep 2.x behaviour,\n // consider that if the value is empty (and not required) we're returning to the standBy state.\n // might not make sense, as it makes impossible to say if the user explicitly cleared the input.\n if (inputValidity.valid && isEmptyValue) {\n return validationStates.standBy;\n }\n\n return inputValidity.valid\n ? validationStates.valid\n : validationStates.invalid;\n};\n\n/**\n * Returns a error message based in the validity state of the input.\n *\n * Only one error message is returned even if multiple validations fail.\n * Also, only required, minCharQuantity, maxCharQuantity and validationType have specific error messages.\n *\n * For further customization both status and statusMessage should be controlled and\n * set using the onBlur callback that receives both the value and the input validity object.\n */\nexport const computeValidationMessage = (\n inputValidity: HvInputValidity,\n /** The available localized error messages. */\n errorMessages: Record<string, string>\n) => {\n if (inputValidity.valid) {\n return \"\";\n }\n\n if (inputValidity.valueMissing) {\n return errorMessages.requiredError;\n }\n if (inputValidity.tooLong) {\n return errorMessages.maxCharError;\n }\n if (inputValidity.tooShort) {\n return errorMessages.minCharError;\n }\n if (inputValidity.typeMismatch) {\n return errorMessages.typeMismatchError;\n }\n\n return errorMessages.error;\n};\n\n/**\n * Returns a object describing the validity state of the input.\n *\n * It implements the native browser's ValidityState interface:\n * https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n */\nexport const validateInput = (\n input: HTMLInputElement | HTMLTextAreaElement | null,\n value: string,\n required: boolean,\n minCharQuantity: any,\n maxCharQuantity: any,\n validationType: string,\n validation: HvInputProps[\"validation\"]\n): HvInputValidity => {\n // bootstrap validity object using browser's built-in validation\n const inputValidity: HvInputValidity = {\n valid: input?.validity?.valid ?? true,\n badInput: input?.validity?.badInput,\n customError: input?.validity?.customError,\n patternMismatch: input?.validity?.patternMismatch,\n rangeOverflow: input?.validity?.rangeOverflow,\n rangeUnderflow: input?.validity?.rangeUnderflow,\n stepMismatch: input?.validity?.stepMismatch,\n tooLong: input?.validity?.tooLong,\n tooShort: input?.validity?.tooShort,\n typeMismatch: input?.validity?.typeMismatch,\n valueMissing: input?.validity?.valueMissing,\n };\n\n if (!value) {\n if (required) {\n // this is redundant because we're setting the required property in the native input\n inputValidity.valueMissing = true;\n inputValidity.valid = false;\n }\n } else {\n // we're not setting minlength and maxlength in the native input\n // to avoid different browser's behaviours and keep the user experience consistent\n if (minCharQuantity !== null && value.length < minCharQuantity) {\n inputValidity.tooShort = true;\n inputValidity.valid = false;\n }\n\n if (maxCharQuantity !== null && value.length > maxCharQuantity) {\n inputValidity.tooLong = true;\n inputValidity.valid = false;\n }\n\n // the validationType is used instead of type\n // for the same reason stated above\n switch (validationType) {\n case validationTypes.number:\n if (!isNumeric(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n case validationTypes.email:\n if (!isEmail(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n default:\n }\n\n if (validation != null && !validation(value)) {\n inputValidity.customError = true;\n inputValidity.valid = false;\n }\n }\n\n return inputValidity;\n};\n\nexport type HvInputValidity = {\n valid?: boolean;\n badInput?: boolean;\n customError?: boolean;\n patternMismatch?: boolean;\n rangeOverflow?: boolean;\n rangeUnderflow?: boolean;\n stepMismatch?: boolean;\n tooLong?: boolean;\n tooShort?: boolean;\n typeMismatch?: boolean;\n valueMissing?: boolean;\n};\n\nexport const DEFAULT_ERROR_MESSAGES = {\n error: \"Invalid value\",\n requiredError: \"The value is required\",\n minCharError: \"The value is too short\",\n maxCharError: \"The value is too long\",\n typeMismatchError: \"Invalid value\",\n};\n"],"names":["isNumeric","num","trim","length","Number","isNaN","isEmail","email","regexp","test","validationTypes","Object","freeze","none","number","computeValidationType","type","hasBuiltInValidations","required","validationType","minCharQuantity","maxCharQuantity","validation","inputProps","minLength","maxLength","min","max","pattern","computeValidationState","inputValidity","isEmptyValue","valid","validationStates","standBy","invalid","computeValidationMessage","errorMessages","valueMissing","requiredError","tooLong","maxCharError","tooShort","minCharError","typeMismatch","typeMismatchError","error","validateInput","input","value","validity","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","DEFAULT_ERROR_MESSAGES"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Box.cjs","sources":["../../../../src/components/Box/Box.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { forwardRef } from \"react\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\n\ntype SxProps = React.CSSProperties | ((theme) => React.CSSProperties);\n\ntype HvBoxBaseProps<C extends React.ElementType> = PolymorphicComponentRef<\n C,\n { style?: React.CSSProperties; sx?: SxProps }\n>;\n\nexport type HvBoxProps = <C extends React.ElementType = \"div\">(\n props: HvBoxBaseProps<C>\n) => React.ReactElement | null;\n\nconst sxFn = (sx: SxProps) => {\n return typeof sx === \"function\" ? sx(theme) : sx;\n};\n\n/**\n * Customizable layout component that can be used to wrap other components.\n * It can be used to add styles to the wrapped components.\n * It can also be used to create a layout using the flexbox properties.\n */\nexport const HvBox: HvBoxProps = forwardRef(\n <C extends React.ElementType = \"div\">(\n { style, component, sx, children, ...restProps }: HvBoxBaseProps<C>,\n ref?: PolymorphicRef<C>\n ) => {\n const Component = component || \"div\";\n\n return (\n <Component style={sx ? sxFn(sx) : style} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n }\n);\n"],"names":["sxFn","sx","theme","HvBox","forwardRef","style","component","children","restProps","ref","Component"],"mappings":";;;;;AAeA,MAAMA,OAAOA,CAACC,OAAgB;AAC5B,SAAO,OAAOA,OAAO,aAAaA,GAAGC,YAAK,KAAA,IAAID;AAChD;AAOaE,MAAAA,QAAoBC,iBAC/B,CACE;AAAA,EAAEC;AAAAA,EAAOC;AAAAA,EAAWL;AAAAA,EAAIM;AAAAA,EAAU,GAAGC;AAA6B,GAClEC,QACG;AACH,QAAMC,YAAYJ,aAAa;AAE/B,wCACGI,WAAS;AAAA,IAACL,OAAOJ,KAAKD,KAAKC,EAAE,IAAII;AAAAA,IAAOI;AAAAA,IAAS,GAAKD;AAAAA,IAASD;AAAAA,EAAAA,CAErD;AAEf,CACF;;"}
|
|
1
|
+
{"version":3,"file":"Box.cjs","sources":["../../../../src/components/Box/Box.tsx"],"sourcesContent":["import { HvTheme, theme } from \"@hitachivantara/uikit-styles\";\nimport { forwardRef } from \"react\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\n\ntype SxProps = React.CSSProperties | ((theme: HvTheme) => React.CSSProperties);\n\ntype HvBoxBaseProps<C extends React.ElementType> = PolymorphicComponentRef<\n C,\n { style?: React.CSSProperties; sx?: SxProps }\n>;\n\nexport type HvBoxProps = <C extends React.ElementType = \"div\">(\n props: HvBoxBaseProps<C>\n) => React.ReactElement | null;\n\nconst sxFn = (sx: SxProps) => {\n return typeof sx === \"function\" ? sx(theme) : sx;\n};\n\n/**\n * Customizable layout component that can be used to wrap other components.\n * It can be used to add styles to the wrapped components.\n * It can also be used to create a layout using the flexbox properties.\n */\nexport const HvBox: HvBoxProps = forwardRef(\n <C extends React.ElementType = \"div\">(\n { style, component, sx, children, ...restProps }: HvBoxBaseProps<C>,\n ref?: PolymorphicRef<C>\n ) => {\n const Component = component || \"div\";\n\n return (\n <Component style={sx ? sxFn(sx) : style} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n }\n);\n"],"names":["sxFn","sx","theme","HvBox","forwardRef","style","component","children","restProps","ref","Component"],"mappings":";;;;;AAeA,MAAMA,OAAOA,CAACC,OAAgB;AAC5B,SAAO,OAAOA,OAAO,aAAaA,GAAGC,YAAK,KAAA,IAAID;AAChD;AAOaE,MAAAA,QAAoBC,iBAC/B,CACE;AAAA,EAAEC;AAAAA,EAAOC;AAAAA,EAAWL;AAAAA,EAAIM;AAAAA,EAAU,GAAGC;AAA6B,GAClEC,QACG;AACH,QAAMC,YAAYJ,aAAa;AAE/B,wCACGI,WAAS;AAAA,IAACL,OAAOJ,KAAKD,KAAKC,EAAE,IAAII;AAAAA,IAAOI;AAAAA,IAAS,GAAKD;AAAAA,IAASD;AAAAA,EAAAA,CAErD;AAEf,CACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadCrumb.cjs","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport startCase from \"lodash/startCase\";\nimport { isValidElement, MouseEvent } from \"react\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components\";\nimport breadCrumbClasses, { HvBreadCrumbClasses } from \"./breadCrumbClasses\";\nimport { HvPathElement } from \"./PathElement\";\nimport { HvPage } from \"./Page\";\nimport {\n StyledOrderedList,\n StyledRoot,\n StyledTypography,\n} from \"./BreadCrumb.styles\";\nimport { pathWithSubMenu, removeExtension } from \"./utils\";\n\nexport interface HvBreadCrumbPathElement extends Record<string, any> {\n label: string;\n path: string;\n}\n\nexport interface HvBreadCrumbProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** List of breadcrumb. */\n listRoute?: HvBreadCrumbPathElement[];\n /** URL to build the breadcrumb. */\n url?: string;\n /** Number of pages visible. */\n maxVisible?: number;\n /** The component used for the link node. Either a string to use a DOM element or a component. */\n component?: React.ElementType;\n /** Function passed to the component. If defined the component prop is used as the link node. */\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n /** Props passed down to the DropDownMenu sub-menu component. */\n dropDownMenuProps?: HvDropDownMenuProps
|
|
1
|
+
{"version":3,"file":"BreadCrumb.cjs","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport startCase from \"lodash/startCase\";\nimport { isValidElement, MouseEvent } from \"react\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components\";\nimport breadCrumbClasses, { HvBreadCrumbClasses } from \"./breadCrumbClasses\";\nimport { HvPathElement } from \"./PathElement\";\nimport { HvPage } from \"./Page\";\nimport {\n StyledOrderedList,\n StyledRoot,\n StyledTypography,\n} from \"./BreadCrumb.styles\";\nimport { pathWithSubMenu, removeExtension } from \"./utils\";\n\nexport interface HvBreadCrumbPathElement extends Record<string, any> {\n label: string;\n path: string;\n}\n\nexport interface HvBreadCrumbProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** List of breadcrumb. */\n listRoute?: HvBreadCrumbPathElement[];\n /** URL to build the breadcrumb. */\n url?: string;\n /** Number of pages visible. */\n maxVisible?: number;\n /** The component used for the link node. Either a string to use a DOM element or a component. */\n component?: React.ElementType;\n /** Function passed to the component. If defined the component prop is used as the link node. */\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n /** Props passed down to the DropDownMenu sub-menu component. */\n dropDownMenuProps?: Partial<HvDropDownMenuProps>;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBreadCrumbClasses;\n}\n\n/**\n * A breadcrumb is a graphical control element frequently used as a navigational aid.\n */\nexport const HvBreadCrumb = ({\n classes,\n className,\n id,\n listRoute = [],\n maxVisible,\n url,\n onClick,\n component,\n dropDownMenuProps,\n ...others\n}: HvBreadCrumbProps) => {\n const maxVisibleElem = maxVisible && maxVisible < 2 ? 2 : maxVisible;\n let listPath = listRoute.slice();\n\n // build the listPath object list\n if (!isNil(url)) {\n listPath = [];\n\n // get the domain\n const baseUrl = url.match(/^.*\\/\\/[^/]+/);\n\n // get url without domain\n const urlWithoutDomain = url.replace(/^.*\\/\\/[^/]+/, \"\");\n\n const pathNames = urlWithoutDomain.split(\"/\").filter((x) => x);\n\n pathNames.map((elem, index) =>\n listPath.push({\n label: decodeURI(elem),\n path: `${baseUrl}/${pathNames.slice(0, index + 1).join(\"/\")}`,\n })\n );\n }\n\n const breadcrumbPath =\n maxVisibleElem && listPath.length > maxVisibleElem\n ? pathWithSubMenu(\n id,\n onClick,\n listPath,\n maxVisibleElem,\n dropDownMenuProps\n )\n : listPath;\n\n return (\n <StyledRoot\n id={id}\n className={clsx(breadCrumbClasses.root, classes?.root, className)}\n {...others}\n >\n <StyledOrderedList\n className={clsx(breadCrumbClasses.orderedList, classes?.orderedList)}\n >\n {listPath.map((elem, index) => {\n const key = `key_${index}`;\n const isLast = index === breadcrumbPath.length - 1;\n\n return (\n <HvPathElement\n classes={{\n centerContainer: clsx(\n breadCrumbClasses.centerContainer,\n classes?.centerContainer\n ),\n separatorContainer: clsx(\n breadCrumbClasses.separatorContainer,\n classes?.separatorContainer\n ),\n }}\n key={key}\n last={isLast}\n >\n {(isValidElement(elem) && elem) ||\n (isLast && (\n <StyledTypography\n className={clsx(\n breadCrumbClasses.currentPage,\n classes?.currentPage\n )}\n variant=\"body\"\n >\n {startCase(removeExtension(elem.label))}\n </StyledTypography>\n )) || (\n <HvPage\n elem={elem}\n classes={{\n a: clsx(breadCrumbClasses.a, classes?.a),\n link: clsx(breadCrumbClasses.link, classes?.link),\n }}\n component={component}\n onClick={onClick}\n />\n )}\n </HvPathElement>\n );\n })}\n </StyledOrderedList>\n </StyledRoot>\n );\n};\n"],"names":["HvBreadCrumb","classes","className","id","listRoute","maxVisible","url","onClick","component","dropDownMenuProps","others","maxVisibleElem","listPath","slice","isNil","baseUrl","match","urlWithoutDomain","replace","pathNames","split","filter","x","map","elem","index","push","label","decodeURI","path","join","breadcrumbPath","length","pathWithSubMenu","StyledRoot","clsx","breadCrumbClasses","root","children","StyledOrderedList","orderedList","key","isLast","HvPathElement","centerContainer","separatorContainer","last","isValidElement","StyledTypography","currentPage","variant","startCase","removeExtension","_jsx","HvPage","a","link"],"mappings":";;;;;;;;;;;;;;;AA0CO,MAAMA,eAAeA,CAAC;AAAA,EAC3BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,YAAY,CAAE;AAAA,EACdC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACc,MAAM;AACvB,QAAMC,iBAAiBN,cAAcA,aAAa,IAAI,IAAIA;AACtDO,MAAAA,WAAWR,UAAUS;AAGrB,MAAA,CAACC,eAAAA,QAAMR,GAAG,GAAG;AACfM,eAAW,CAAA;AAGLG,UAAAA,UAAUT,IAAIU,MAAM,cAAc;AAGxC,UAAMC,mBAAmBX,IAAIY,QAAQ,gBAAgB,EAAE;AAEvD,UAAMC,YAAYF,iBAAiBG,MAAM,GAAG,EAAEC,OAAQC,OAAMA,CAAC;AAE7DH,cAAUI,IAAI,CAACC,MAAMC,UACnBb,SAASc,KAAK;AAAA,MACZC,OAAOC,UAAUJ,IAAI;AAAA,MACrBK,MAAO,GAAEd,WAAWI,UAAUN,MAAM,GAAGY,QAAQ,CAAC,EAAEK,KAAK,GAAG;AAAA,IAC3D,CAAA,CACH;AAAA,EACF;AAEMC,QAAAA,iBACJpB,kBAAkBC,SAASoB,SAASrB,iBAChCsB,MAAAA,gBACE9B,IACAI,SACAK,UACAD,gBACAF,iBACF,IACAG;AAEN,wCACGsB,kBAAAA,YAAU;AAAA,IACT/B;AAAAA,IACAD,WAAWiC,KAAKC,KAAAA,kBAAAA,QAAkBC,MAAMpC,mCAASoC,MAAMnC,SAAS;AAAA,IAAE,GAC9DQ;AAAAA,IAAM4B,yCAETC,qCAAiB;AAAA,MAChBrC,WAAWiC,KAAAA,KAAKC,kBAAAA,QAAkBI,aAAavC,mCAASuC,WAAW;AAAA,MAAEF,UAEpE1B,SAASW,IAAI,CAACC,MAAMC,UAAU;AAC7B,cAAMgB,MAAO,OAAMhB;AACbiB,cAAAA,SAASjB,UAAUM,eAAeC,SAAS;AAEjD,8CACGW,YAAAA,eAAa;AAAA,UACZ1C,SAAS;AAAA,YACP2C,iBAAiBT,KAAAA,KACfC,kBAAAA,QAAkBQ,iBAClB3C,mCAAS2C,eACX;AAAA,YACAC,oBAAoBV,KAAAA,KAClBC,kBAAAA,QAAkBS,oBAClB5C,mCAAS4C,kBACX;AAAA,UACF;AAAA,UAEAC,MAAMJ;AAAAA,UAAOJ,UAEXS,MAAevB,eAAAA,IAAI,KAAKA,QACvBkB,yCACEM,oCAAgB;AAAA,YACf9C,WAAWiC,KAAAA,KACTC,kBAAAA,QAAkBa,aAClBhD,mCAASgD,WACX;AAAA,YACAC,SAAQ;AAAA,YAAMZ,UAEba,mBAAAA,QAAUC,MAAAA,gBAAgB5B,KAAKG,KAAK,CAAC;AAAA,UAAA,CACtB,KAElB0B,2BAAAA,IAACC,aAAM;AAAA,YACL9B;AAAAA,YACAvB,SAAS;AAAA,cACPsD,GAAGpB,KAAAA,KAAKC,kBAAAA,QAAkBmB,GAAGtD,mCAASsD,CAAC;AAAA,cACvCC,MAAMrB,KAAAA,KAAKC,kBAAAA,QAAkBoB,MAAMvD,mCAASuD,IAAI;AAAA,YAClD;AAAA,YACAhD;AAAAA,YACAD;AAAAA,UAAAA,CACD;AAAA,WAvBAkC,GAyBQ;AAAA,MAAA,CAElB;AAAA,IAAA,CACgB;AAAA,EAAA,CACT;AAEhB;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../../../src/components/BreadCrumb/utils.tsx"],"sourcesContent":["import { MoreOptionsHorizontal } from \"@hitachivantara/uikit-react-icons\";\nimport { HvDropDownMenu } from \"@core/components\";\nimport { setId } from \"@core/utils\";\n\nexport const removeExtension = (label) =>\n label.includes(\".\") ? label.substring(0, label.lastIndexOf(\".\")) : label;\n\nexport const pathWithSubMenu = (\n id,\n onClick,\n listRoute,\n maxVisible,\n dropDownMenuProps\n) => {\n const nbrElemToSubMenu = listRoute.length - maxVisible;\n const subMenuList = listRoute.slice(1, nbrElemToSubMenu + 1);\n\n const handleClick = (event, data) => {\n event.preventDefault();\n\n onClick?.(event, data);\n };\n\n listRoute.splice(\n 1,\n nbrElemToSubMenu,\n <HvDropDownMenu\n id={setId(id, \"submenu\")}\n icon={<MoreOptionsHorizontal iconSize=\"S\" color=\"secondary\" />}\n dataList={subMenuList}\n {...dropDownMenuProps}\n onClick={onClick != null ? handleClick : undefined}\n />\n );\n\n return listRoute;\n};\n"],"names":["removeExtension","label","includes","substring","lastIndexOf","pathWithSubMenu","id","onClick","listRoute","maxVisible","dropDownMenuProps","nbrElemToSubMenu","length","subMenuList","slice","handleClick","event","data","preventDefault","splice","_jsx","HvDropDownMenu","setId","icon","MoreOptionsHorizontal","iconSize","color","dataList","undefined"],"mappings":";;;;;;AAIO,MAAMA,
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../../../src/components/BreadCrumb/utils.tsx"],"sourcesContent":["import { MoreOptionsHorizontal } from \"@hitachivantara/uikit-react-icons\";\nimport { HvBreadCrumbProps, HvDropDownMenu } from \"@core/components\";\nimport { setId } from \"@core/utils\";\n\nexport const removeExtension = (label: string) =>\n label.includes(\".\") ? label.substring(0, label.lastIndexOf(\".\")) : label;\n\nexport const pathWithSubMenu = (\n id: string | undefined,\n onClick: HvBreadCrumbProps[\"onClick\"],\n listRoute: any,\n maxVisible: number,\n dropDownMenuProps?: HvBreadCrumbProps[\"dropDownMenuProps\"]\n) => {\n const nbrElemToSubMenu = listRoute.length - maxVisible;\n const subMenuList = listRoute.slice(1, nbrElemToSubMenu + 1);\n\n const handleClick = (event: any, data: any) => {\n event.preventDefault();\n\n onClick?.(event, data);\n };\n\n listRoute.splice(\n 1,\n nbrElemToSubMenu,\n <HvDropDownMenu\n id={setId(id, \"submenu\")}\n icon={<MoreOptionsHorizontal iconSize=\"S\" color=\"secondary\" />}\n dataList={subMenuList}\n {...dropDownMenuProps}\n onClick={onClick != null ? handleClick : undefined}\n />\n );\n\n return listRoute;\n};\n"],"names":["removeExtension","label","includes","substring","lastIndexOf","pathWithSubMenu","id","onClick","listRoute","maxVisible","dropDownMenuProps","nbrElemToSubMenu","length","subMenuList","slice","handleClick","event","data","preventDefault","splice","_jsx","HvDropDownMenu","setId","icon","MoreOptionsHorizontal","iconSize","color","dataList","undefined"],"mappings":";;;;;;AAIO,MAAMA,kBAAkBA,CAACC,UAC9BA,MAAMC,SAAS,GAAG,IAAID,MAAME,UAAU,GAAGF,MAAMG,YAAY,GAAG,CAAC,IAAIH;AAE9D,MAAMI,kBAAkBA,CAC7BC,IACAC,SACAC,WACAC,YACAC,sBACG;AACGC,QAAAA,mBAAmBH,UAAUI,SAASH;AAC5C,QAAMI,cAAcL,UAAUM,MAAM,GAAGH,mBAAmB,CAAC;AAErDI,QAAAA,cAAcA,CAACC,OAAYC,SAAc;AAC7CD,UAAME,eAAe;AAErBX,uCAAUS,OAAOC;AAAAA,EAAI;AAGvBT,YAAUW,OACR,GACAR,kBACAS,2BAAAA,IAACC,aAAAA,gBAAc;AAAA,IACbf,IAAIgB,MAAAA,MAAMhB,IAAI,SAAS;AAAA,IACvBiB,qCAAOC,uCAAqB;AAAA,MAACC,UAAS;AAAA,MAAIC,OAAM;AAAA,IAAA,CAAa;AAAA,IAC7DC,UAAUd;AAAAA,IAAY,GAClBH;AAAAA,IACJH,SAASA,WAAW,OAAOQ,cAAca;AAAAA,EAC1C,CAAA,CACH;AAEOpB,SAAAA;AACT;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const React = require("react");
|
|
4
3
|
const clsx = require("clsx");
|
|
5
4
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
6
5
|
const BulkActions_styles = require("./BulkActions.styles.cjs");
|
|
@@ -36,11 +35,8 @@ const HvBulkActions = ({
|
|
|
36
35
|
activeTheme,
|
|
37
36
|
selectedMode
|
|
38
37
|
} = useTheme.useTheme();
|
|
39
|
-
const
|
|
38
|
+
const anySelected = numSelected > 0;
|
|
40
39
|
const isSemantic = semantic && anySelected;
|
|
41
|
-
React.useEffect(() => {
|
|
42
|
-
setAnySelected(numSelected > 0);
|
|
43
|
-
}, [numSelected]);
|
|
44
40
|
const selectAllLabelComponent = /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, {
|
|
45
41
|
component: "span",
|
|
46
42
|
disabled: checkboxProps == null ? void 0 : checkboxProps.disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkActions.cjs","sources":["../../../../src/components/BulkActions/BulkActions.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport {\n HvButton,\n HvButtonProps,\n HvCheckBox,\n HvCheckBoxProps,\n HvActionGeneric,\n HvActionsGenericProps,\n HvTypography,\n} from \"@core/components\";\nimport {
|
|
1
|
+
{"version":3,"file":"BulkActions.cjs","sources":["../../../../src/components/BulkActions/BulkActions.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport {\n HvButton,\n HvButtonProps,\n HvCheckBox,\n HvCheckBoxProps,\n HvActionGeneric,\n HvActionsGenericProps,\n HvTypography,\n} from \"@core/components\";\nimport { clsx } from \"clsx\";\nimport { setId } from \"@core/utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { useTheme } from \"@core/hooks\";\nimport {\n StyledGenericActions,\n StyledRoot,\n StyledSelectAllContainer,\n StyledDivider,\n} from \"./BulkActions.styles\";\nimport bulkActionsClasses, { HvBulkActionsClasses } from \"./bulkActionsClasses\";\n\nexport interface HvBulkActionsProps extends HvBaseProps {\n /**\n * Custom label for select all checkbox\n */\n selectAllLabel?: React.ReactNode;\n /**\n * Custom label for select all checkbox conjunction\n */\n selectAllConjunctionLabel?: string;\n /**\n * Custom label for select all pages button\n */\n selectAllPagesLabel?: React.ReactNode;\n /**\n * Whether select all pages element should be visible\n */\n showSelectAllPages?: boolean;\n /**\n * The total number of elements\n */\n numTotal?: number;\n /**\n * The number of elements currently selected\n */\n numSelected?: number;\n /**\n * Function called when the \"select all\" Checkbox is toggled.\n */\n onSelectAll?: HvCheckBoxProps[\"onChange\"];\n /**\n * Function called when the \"select all pages\" button is clicked toggled.\n */\n onSelectAllPages?: HvButtonProps[\"onClick\"];\n /**\n * Whether the bulk actions should use the semantic styles when there are selected elements.\n */\n semantic?: boolean;\n /**\n * The renderable content inside the right actions slot,\n * or an Array of actions `{ id, label, icon, disabled, ... }`\n */\n actions?: React.ReactNode | HvActionGeneric[];\n /**\n * Whether actions should be all disabled\n */\n actionsDisabled?: boolean;\n /**\n * The callback function ran when an action is triggered, receiving `action` as param\n */\n actionsCallback?: HvActionsGenericProps[\"actionsCallback\"];\n /**\n * The number of maximum visible actions before they're collapsed into a `DropDownMenu`.\n */\n maxVisibleActions?: number;\n /**\n * Properties to be passed onto the checkbox component, the values of the object are equivalent to the\n * HvCheckbox API.\n */\n checkboxProps?: HvCheckBoxProps;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvBulkActionsClasses;\n}\n\n/**\n * Bulk Actions allow users to perform an action on a single or multiple items.\n * Also known as \"batch production\" of multiple items at once, one stage at a time.\n */\nexport const HvBulkActions = ({\n id,\n className,\n classes,\n selectAllPagesLabel,\n actionsDisabled,\n maxVisibleActions,\n checkboxProps,\n actions,\n numTotal = 0,\n numSelected = 0,\n selectAllLabel = \"All\",\n selectAllConjunctionLabel = \"/\",\n showSelectAllPages = false,\n semantic = true,\n actionsCallback,\n onSelectAll,\n onSelectAllPages,\n ...others\n}: HvBulkActionsProps) => {\n const { activeTheme, selectedMode } = useTheme();\n\n const anySelected = numSelected > 0;\n const isSemantic = semantic && anySelected;\n\n const selectAllLabelComponent = (\n <HvTypography\n component=\"span\"\n disabled={checkboxProps?.disabled}\n variant=\"body\"\n >\n {!anySelected ? (\n <>\n <HvTypography variant=\"label\">{selectAllLabel}</HvTypography>\n {` (${numTotal})`}\n </>\n ) : (\n <>\n <HvTypography variant=\"label\">{numSelected}</HvTypography>\n {` ${selectAllConjunctionLabel} ${numTotal}`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <StyledRoot\n id={id}\n className={clsx(\n className,\n classes?.root,\n bulkActionsClasses.root,\n isSemantic && clsx(classes?.semantic, bulkActionsClasses.semantic)\n )}\n $isSemantic={isSemantic}\n $baseColor={\n activeTheme?.colors?.modes[selectedMode].base_light ||\n theme.colors.base_light\n }\n {...others}\n >\n <StyledSelectAllContainer\n className={clsx(\n classes?.selectAllContainer,\n bulkActionsClasses.selectAllContainer\n )}\n >\n <HvCheckBox\n id={setId(id, \"select\")}\n className={clsx(classes?.selectAll, bulkActionsClasses.selectAll)}\n checked={numSelected > 0}\n semantic={isSemantic}\n onChange={onSelectAll}\n indeterminate={numSelected > 0 && numSelected < numTotal}\n label={selectAllLabelComponent}\n {...checkboxProps}\n />\n {showSelectAllPages && anySelected && numSelected < numTotal && (\n <>\n <StyledDivider />\n <HvButton\n id={setId(id, \"pages\")}\n className={clsx(\n classes?.selectAllPages,\n bulkActionsClasses.selectAllPages\n )}\n variant={isSemantic ? \"semantic\" : \"secondaryGhost\"}\n onClick={onSelectAllPages}\n >\n {selectAllPagesLabel ??\n `Select all ${numTotal} items across all pages`}\n </HvButton>\n </>\n )}\n </StyledSelectAllContainer>\n <StyledGenericActions\n id={setId(id, \"actions\")}\n classes={{ root: clsx(classes?.actions, bulkActionsClasses.actions) }}\n category={isSemantic ? \"semantic\" : \"secondaryGhost\"}\n actions={actions}\n disabled={actionsDisabled ?? numSelected === 0}\n actionsCallback={actionsCallback}\n maxVisibleActions={maxVisibleActions}\n />\n </StyledRoot>\n );\n};\n"],"names":["HvBulkActions","id","className","classes","selectAllPagesLabel","actionsDisabled","maxVisibleActions","checkboxProps","actions","numTotal","numSelected","selectAllLabel","selectAllConjunctionLabel","showSelectAllPages","semantic","actionsCallback","onSelectAll","onSelectAllPages","others","activeTheme","selectedMode","useTheme","anySelected","isSemantic","selectAllLabelComponent","HvTypography","component","disabled","variant","children","_jsxs","_Fragment","_jsx","StyledRoot","clsx","root","bulkActionsClasses","$isSemantic","$baseColor","colors","modes","base_light","theme","StyledSelectAllContainer","selectAllContainer","HvCheckBox","setId","selectAll","checked","onChange","indeterminate","label","StyledDivider","HvButton","selectAllPages","onClick","StyledGenericActions","category"],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ const HvButton = React.forwardRef((props, ref) => {
|
|
|
64
64
|
onFocus: onFocusHandler,
|
|
65
65
|
onBlur: onBlurHandler,
|
|
66
66
|
$variant: mapVariant(variant, activeTheme == null ? void 0 : activeTheme.name),
|
|
67
|
-
$iconOnly:
|
|
67
|
+
$iconOnly: icon,
|
|
68
68
|
$size: size,
|
|
69
69
|
$radius: radius,
|
|
70
70
|
$overrideIconColors: overrideIconColors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, { forwardRef, ReactElement, useMemo } from \"react\";\nimport { useTheme } from \"@core/hooks\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\nimport {\n StyledButton,\n StyledChildren,\n StyledContentDiv,\n StyledIconSpan,\n} from \"./Button.styles\";\nimport buttonClasses, { HvButtonClasses } from \"./buttonClasses\";\n\nexport const buttonVariant = [\n \"primary\",\n \"primarySubtle\",\n \"primaryGhost\",\n \"secondarySubtle\",\n \"secondaryGhost\",\n \"semantic\",\n // deprecated props\n \"secondary\",\n \"ghost\",\n] as const;\nexport type HvButtonVariant = (typeof buttonVariant)[number];\n\nexport const buttonSize = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as const;\nexport type HvButtonSize = (typeof buttonSize)[number];\n\nexport const buttonRadius = [\n \"none\",\n \"base\",\n \"round\",\n \"circle\",\n \"full\",\n] as const;\nexport type HvButtonRadius = (typeof buttonRadius)[number];\n\nexport type HvButtonProps<C extends React.ElementType = \"button\"> =\n PolymorphicComponentRef<\n C,\n {\n /** Use the variant prop to change the visual style of the Button. */\n variant?: HvButtonVariant;\n /** Whether the Button is an icon-only button. */\n icon?: boolean;\n /** Whether the Button is disabled or not. */\n disabled?: boolean;\n /** Class names to be applied. */\n className?: string;\n /** Element placed before the children. */\n startIcon?: ReactElement;\n /** Element placed after the children. */\n endIcon?: ReactElement;\n /** Button size. */\n size?: HvButtonSize;\n /** Button border radius. */\n radius?: HvButtonRadius;\n /** Defines the default colors of the button are forced into the icon. */\n overrideIconColors?: boolean;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvButtonClasses;\n /** Whether the Button is selected or not. */\n selected?: boolean;\n }\n >;\n\n/**\n * Normalize the button variant. It's meant to give us some retro-compatibility with\n * the DS 3.6 API.\n *\n * @param variant the variant of the button\n * @returns the normalized variant in DS 5 API\n */\nconst mapVariant = (\n variant: HvButtonVariant,\n theme?: string\n): HvButtonVariant => {\n if (theme !== \"ds3\") {\n if (variant === \"secondary\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'secondary' is deprecated. Please use 'secondarySubtle'.\"\n );\n return \"secondarySubtle\";\n }\n if (variant === \"ghost\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'ghost' is deprecated. Please use 'primaryGhost'.\"\n );\n return \"primaryGhost\";\n }\n }\n return variant;\n};\n\n/**\n * Button component is used to trigger an action or event.\n */\nexport const HvButton: <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>\n) => React.ReactElement | null = forwardRef(\n <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>,\n ref: PolymorphicRef<C>\n ) => {\n const {\n id,\n classes,\n children,\n variant = \"primary\",\n onClick,\n disabled = false,\n className,\n startIcon,\n endIcon,\n icon = false,\n size,\n radius = \"base\",\n overrideIconColors = true,\n component: Component = \"button\",\n ...others\n } = props;\n\n const { activeTheme } = useTheme();\n\n const onFocusHandler = (event) => {\n event.target.classList.add(\"HvIsFocusVisible\");\n event.target.classList.add(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.add(classes.focusVisible);\n }\n };\n\n const onBlurHandler = (event) => {\n event.target.classList.remove(\"HvIsFocusVisible\");\n event.target.classList.remove(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.remove(classes.focusVisible);\n }\n };\n\n const StyledComponent = useMemo(() => StyledButton(Component), [Component]);\n\n return (\n <StyledComponent\n id={id}\n ref={ref}\n type=\"button\"\n className={clsx(className, classes?.root, buttonClasses.root)}\n onClick={onClick}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n $variant={mapVariant(variant, activeTheme?.name)}\n $iconOnly={
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, { forwardRef, ReactElement, useMemo } from \"react\";\nimport { useTheme } from \"@core/hooks\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\nimport {\n StyledButton,\n StyledChildren,\n StyledContentDiv,\n StyledIconSpan,\n} from \"./Button.styles\";\nimport buttonClasses, { HvButtonClasses } from \"./buttonClasses\";\n\nexport const buttonVariant = [\n \"primary\",\n \"primarySubtle\",\n \"primaryGhost\",\n \"secondarySubtle\",\n \"secondaryGhost\",\n \"semantic\",\n // deprecated props\n \"secondary\",\n \"ghost\",\n] as const;\nexport type HvButtonVariant = (typeof buttonVariant)[number];\n\nexport const buttonSize = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as const;\nexport type HvButtonSize = (typeof buttonSize)[number];\n\nexport const buttonRadius = [\n \"none\",\n \"base\",\n \"round\",\n \"circle\",\n \"full\",\n] as const;\nexport type HvButtonRadius = (typeof buttonRadius)[number];\n\nexport type HvButtonProps<C extends React.ElementType = \"button\"> =\n PolymorphicComponentRef<\n C,\n {\n /** Use the variant prop to change the visual style of the Button. */\n variant?: HvButtonVariant;\n /** Whether the Button is an icon-only button. */\n icon?: boolean;\n /** Whether the Button is disabled or not. */\n disabled?: boolean;\n /** Class names to be applied. */\n className?: string;\n /** Element placed before the children. */\n startIcon?: ReactElement;\n /** Element placed after the children. */\n endIcon?: ReactElement;\n /** Button size. */\n size?: HvButtonSize;\n /** Button border radius. */\n radius?: HvButtonRadius;\n /** Defines the default colors of the button are forced into the icon. */\n overrideIconColors?: boolean;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvButtonClasses;\n /** Whether the Button is selected or not. */\n selected?: boolean;\n }\n >;\n\n/**\n * Normalize the button variant. It's meant to give us some retro-compatibility with\n * the DS 3.6 API.\n *\n * @param variant the variant of the button\n * @returns the normalized variant in DS 5 API\n */\nconst mapVariant = (\n variant: HvButtonVariant,\n theme?: string\n): HvButtonVariant => {\n if (theme !== \"ds3\") {\n if (variant === \"secondary\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'secondary' is deprecated. Please use 'secondarySubtle'.\"\n );\n return \"secondarySubtle\";\n }\n if (variant === \"ghost\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'ghost' is deprecated. Please use 'primaryGhost'.\"\n );\n return \"primaryGhost\";\n }\n }\n return variant;\n};\n\n/**\n * Button component is used to trigger an action or event.\n */\nexport const HvButton: <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>\n) => React.ReactElement | null = forwardRef(\n <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>,\n ref: PolymorphicRef<C>\n ) => {\n const {\n id,\n classes,\n children,\n variant = \"primary\",\n onClick,\n disabled = false,\n className,\n startIcon,\n endIcon,\n icon = false,\n size,\n radius = \"base\",\n overrideIconColors = true,\n component: Component = \"button\",\n ...others\n } = props;\n\n const { activeTheme } = useTheme();\n\n const onFocusHandler = (event) => {\n event.target.classList.add(\"HvIsFocusVisible\");\n event.target.classList.add(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.add(classes.focusVisible);\n }\n };\n\n const onBlurHandler = (event) => {\n event.target.classList.remove(\"HvIsFocusVisible\");\n event.target.classList.remove(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.remove(classes.focusVisible);\n }\n };\n\n const StyledComponent = useMemo(() => StyledButton(Component), [Component]);\n\n return (\n <StyledComponent\n id={id}\n ref={ref}\n type=\"button\"\n className={clsx(className, classes?.root, buttonClasses.root)}\n onClick={onClick}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n $variant={mapVariant(variant, activeTheme?.name)}\n $iconOnly={icon}\n $size={size}\n $radius={radius}\n $overrideIconColors={overrideIconColors}\n $startIcon={!!startIcon}\n $endIcon={!!endIcon}\n {...(disabled && {\n $disabled: true,\n disabled: true,\n tabIndex: -1,\n \"aria-disabled\": true,\n })}\n {...others}\n >\n <StyledContentDiv>\n {startIcon && (\n <StyledIconSpan\n className={clsx(classes?.startIcon, buttonClasses.startIcon)}\n >\n {startIcon}\n </StyledIconSpan>\n )}\n {children && <StyledChildren>{children}</StyledChildren>}\n {endIcon && (\n <StyledIconSpan\n className={clsx(classes?.endIcon, buttonClasses.endIcon)}\n >\n {endIcon}\n </StyledIconSpan>\n )}\n </StyledContentDiv>\n </StyledComponent>\n );\n }\n);\n"],"names":["mapVariant","variant","theme","console","warn","HvButton","forwardRef","props","ref","id","classes","children","onClick","disabled","className","startIcon","endIcon","icon","size","radius","overrideIconColors","component","Component","others","activeTheme","useTheme","onFocusHandler","event","target","classList","add","buttonClasses","focusVisible","onBlurHandler","remove","StyledComponent","useMemo","StyledButton","type","clsx","root","onFocus","onBlur","$variant","name","$iconOnly","$size","$radius","$overrideIconColors","$startIcon","$endIcon","$disabled","tabIndex","StyledContentDiv","_jsx","StyledIconSpan","StyledChildren"],"mappings":";;;;;;;;AAyEA,MAAMA,aAAaA,CACjBC,SACAC,UACoB;AACpB,MAAIA,UAAU,OAAO;AACnB,QAAID,YAAY,aAAa;AAE3BE,cAAQC,KACN,yEACF;AACO,aAAA;AAAA,IACT;AACA,QAAIH,YAAY,SAAS;AAEvBE,cAAQC,KACN,kEACF;AACO,aAAA;AAAA,IACT;AAAA,EACF;AACOH,SAAAA;AACT;AAKO,MAAMI,WAEoBC,MAAAA,WAC/B,CACEC,OACAC,QACG;AACG,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAV,UAAU;AAAA,IACVW;AAAAA,IACAC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC,SAAS;AAAA,IACTC,qBAAqB;AAAA,IACrBC,WAAWC,YAAY;AAAA,IACvB,GAAGC;AAAAA,EACDhB,IAAAA;AAEE,QAAA;AAAA,IAAEiB;AAAAA,MAAgBC,SAAS,SAAA;AAEjC,QAAMC,iBAAkBC,CAAU,UAAA;AAC1BC,UAAAA,OAAOC,UAAUC,IAAI,kBAAkB;AAC7CH,UAAMC,OAAOC,UAAUC,IAAIC,cAAAA,QAAcC,YAAY;AACrD,QAAItB,mCAASsB,cAAc;AACzBL,YAAMC,OAAOC,UAAUC,IAAIpB,QAAQsB,YAAY;AAAA,IACjD;AAAA,EAAA;AAGF,QAAMC,gBAAiBN,CAAU,UAAA;AACzBC,UAAAA,OAAOC,UAAUK,OAAO,kBAAkB;AAChDP,UAAMC,OAAOC,UAAUK,OAAOH,cAAAA,QAAcC,YAAY;AACxD,QAAItB,mCAASsB,cAAc;AACzBL,YAAMC,OAAOC,UAAUK,OAAOxB,QAAQsB,YAAY;AAAA,IACpD;AAAA,EAAA;AAGIG,QAAAA,kBAAkBC,MAAAA,QAAQ,MAAMC,cAAAA,aAAaf,SAAS,GAAG,CAACA,SAAS,CAAC;AAE1E,wCACGa,iBAAe;AAAA,IACd1B;AAAAA,IACAD;AAAAA,IACA8B,MAAK;AAAA,IACLxB,WAAWyB,KAAKzB,KAAAA,WAAWJ,mCAAS8B,MAAMT,sBAAcS,IAAI;AAAA,IAC5D5B;AAAAA,IACA6B,SAASf;AAAAA,IACTgB,QAAQT;AAAAA,IACRU,UAAU3C,WAAWC,SAASuB,2CAAaoB,IAAI;AAAA,IAC/CC,WAAW5B;AAAAA,IACX6B,OAAO5B;AAAAA,IACP6B,SAAS5B;AAAAA,IACT6B,qBAAqB5B;AAAAA,IACrB6B,YAAY,CAAC,CAAClC;AAAAA,IACdmC,UAAU,CAAC,CAAClC;AAAAA,IAAQ,GACfH,YAAY;AAAA,MACfsC,WAAW;AAAA,MACXtC,UAAU;AAAA,MACVuC,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB;AAAA,IAAC,GACG7B;AAAAA,IAAMZ,0CAET0C,gCAAgB;AAAA,MAAA1C,UACdI,CAAAA,aACCuC,2BAAAA,IAACC,8BAAc;AAAA,QACbzC,WAAWyB,KAAAA,KAAK7B,mCAASK,WAAWgB,cAAAA,QAAchB,SAAS;AAAA,QAAEJ,UAE5DI;AAAAA,MAAAA,CACa,GAEjBJ,YAAY2C,2BAAAA,IAACE,8BAAc;AAAA,QAAA7C;AAAAA,MAAAA,CAA2B,GACtDK,WACCsC,2BAAAA,IAACC,8BAAc;AAAA,QACbzC,WAAWyB,KAAAA,KAAK7B,mCAASM,SAASe,cAAAA,QAAcf,OAAO;AAAA,QAAEL,UAExDK;AAAAA,MAAAA,CACa,CACjB;AAAA,IAAA,CACe;AAAA,EAAA,CACH;AAErB,CACF;;"}
|