@hitachivantara/uikit-react-core 5.7.0 → 5.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs +1 -1
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.cjs +8 -8
- package/dist/cjs/components/Card/Card.cjs.map +1 -1
- package/dist/cjs/components/Card/Content/Content.cjs +3 -3
- package/dist/cjs/components/Card/Content/Content.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.cjs +10 -10
- package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.cjs +4 -4
- package/dist/cjs/components/Card/Media/Media.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +21 -20
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +7 -7
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs +7 -6
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +4 -4
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs +12 -12
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterGroup.cjs +7 -7
- package/dist/cjs/components/FilterGroup/FilterGroup.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs +3 -3
- package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +8 -7
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs +9 -9
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs +16 -14
- package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +5 -5
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs +5 -5
- package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs +11 -9
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs +4 -4
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs +8 -7
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs.map +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.js +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.js.map +1 -1
- package/dist/esm/components/Card/Card.js +8 -8
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/Content/Content.js +3 -3
- package/dist/esm/components/Card/Content/Content.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.js +10 -10
- package/dist/esm/components/Card/Header/Header.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.js +4 -4
- package/dist/esm/components/Card/Media/Media.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +21 -20
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +7 -7
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js +7 -6
- package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/Counter.js +4 -4
- package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js +12 -12
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterGroup.js +7 -7
- package/dist/esm/components/FilterGroup/FilterGroup.js.map +1 -1
- package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js +3 -3
- package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +8 -7
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.js +9 -9
- package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.styles.js +16 -14
- package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +5 -5
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js +5 -5
- package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js +11 -9
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js +4 -4
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js +8 -7
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.cjs","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { clsx } from \"clsx\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport datePickerClasses, { HvDatePickerClasses } from \"./datePickerClasses\";\nimport { styles } from \"./DatePicker.styles\";\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n};\n\nexport type HvDatePickerStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvDatePickerStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <ClassNames>\n {({ css }) => (\n <HvActionBar\n className={\n showClear\n ? clsx(\n datePickerClasses.actionContainer,\n classes?.actionContainer,\n css(styles.actionContainer)\n )\n : \"\"\n }\n >\n {showClear && (\n <div\n className={clsx(\n datePickerClasses.leftContainer,\n classes?.leftContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={clsx(\n datePickerClasses.action,\n classes?.action,\n css(styles.action)\n )}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div\n className={clsx(\n datePickerClasses.rightContainer,\n classes?.rightContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={clsx(\n datePickerClasses.action,\n classes?.action,\n css(styles.action)\n )}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={clsx(\n datePickerClasses.action,\n classes?.action,\n css(styles.action)\n )}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n )}\n </ClassNames>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <ClassNames>\n {({ css }) => (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={clsx(\n className,\n datePickerClasses.root,\n classes?.root,\n css(styles.root)\n )}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div\n className={clsx(\n datePickerClasses.labelContainer,\n classes?.labelContainer,\n css(styles.labelContainer)\n )}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={clsx(\n datePickerClasses.label,\n classes?.label,\n css(styles.label)\n )}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={clsx(\n datePickerClasses.description,\n classes?.description,\n css(styles.description)\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: clsx(\n datePickerClasses.dropdown,\n classes?.dropdown,\n css(styles.dropdown)\n ),\n panel: clsx(\n datePickerClasses.panel,\n classes?.panel,\n css(styles.panel)\n ),\n header: isStateInvalid\n ? clsx(\n datePickerClasses.dropdownHeaderInvalid,\n classes?.dropdownHeaderInvalid,\n css(styles.dropdownHeaderInvalid)\n )\n : undefined,\n headerOpen: clsx(\n datePickerClasses.dropdownHeaderOpen,\n classes?.dropdownHeaderOpen,\n css(styles.dropdownHeaderOpen)\n ),\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(\n getDateLabel(dateValue, rangeMode, locale)\n )}\n adornment={\n <Calendar\n className={clsx(\n datePickerClasses.icon,\n classes?.icon,\n css(styles.icon)\n )}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={clsx(datePickerClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n )}\n </ClassNames>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","HvDatePicker","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsx","ClassNames","children","css","HvActionBar","clsx","datePickerClasses","actionContainer","styles","leftContainer","HvButton","setId","action","variant","onClick","_jsxs","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","HvWarningText","disableBorder","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,iBAAiB;AAAA,EACrBC,YAAY;AAAA,EACZC,aAAa;AAAA,EACbC,YAAY;AACd;AAkLO,MAAMC,eAAeA,CAAC;AAAA,EAC3BC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EACAC;AAAAA,EAEAC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC;AAAAA,EAEAC;AAAAA,EACA,cAAcC;AAAAA,EACd,mBAAmBC;AAAAA,EACnBC;AAAAA,EACA,oBAAoBC;AAAAA,EAEpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,qBAAqBC;AAAAA,EAErBC;AAAAA,EAEAC,QAAQC;AAAAA,EAERC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC,YAAY;AAAA,EACZC;AAAAA,EACAC,sBAAsB;AAAA,EACtBC,QAAQC;AAAAA,EACRC,cAAc;AAAA,EACdC,YAAY;AAAA,EACZC,gBAAgB;AAAA,EAChBC,sBAAsB;AAAA,EACtBC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACc,MAAM;AACjBhB,QAAAA,SAASiB,UAAAA,UAAUzC,gBAAgByB,UAAU;AAE7CiB,QAAAA,YAAYC,YAAAA,QAAYpC,IAAI,cAAc;AAEhD,QAAM,CAACqC,iBAAiBC,kBAAkB,IAAIC,cAAAA,cAC5C1B,QACA,SAAS;AAGX,QAAM,CAAC2B,iBAAiB,IAAID,cAAAA,cAAczB,eAAe,UAAU;AAEnE,QAAMW,SAASC,cAAc;AAE7B,QAAM,CAACe,cAAcC,eAAe,IAAIC,eAAS,KAAK;AAEhD,QAAA,CAACC,WAAWC,cAAcC,iBAAiB,IAAIC,cAAAA,cACnDzB,YAAYF,aAAaD,KAAK;AAEhC,QAAM,CAAC6B,SAASC,YAAYC,eAAe,IAAIH,cAAAA,cAAc1B,QAAQ;AAErE,QAAM,CAAC8B,aAAaC,cAAc,IAAIC,eAAAA,QAAeT,WAAWI,OAAO;AAEjEM,QAAAA,cAAcC,aAAuB,IAAI;AAEzC,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAU,SAAA;AAElCC,QAAAA,UAAU,MAAM;AACDpC,iBAAAA,YAAYF,aAAaD,OAAO,IAAI;AACjD8B,eAAW5B,UAAU,IAAI;AAAA,KACxB,CAACF,OAAOC,YAAYC,UAAUC,SAAS,CAAC;AAErCqC,QAAAA,eAAeJ,aAAO,KAAK;AACjCI,eAAaC,UAAUZ,WAAW;AAElCU,QAAAA,UAAU,MAAM;AACd,QAAId,aAAa,MAAM;AACN,qBAAA;AAAA,QACbiB,MAAM;AAAA,QACNC,QAAQH,aAAaC,UAAU,SAAS;AAAA,QACxCG,MAAMnB,UAAUoB,YAAa;AAAA,QAC7BC,OAAOrB,UAAUsB,SAAAA,IAAa;AAAA,MAAA,CAC/B;AAAA,IACH;AAAA,EAAA,GACC,CAACd,gBAAgBR,SAAS,CAAC;AAE9Bc,QAAAA,UAAU,MAAM;AACd,QAAIV,WAAW,MAAM;AACJ,qBAAA;AAAA,QACba,MAAM;AAAA,QACNC,QAAQ;AAAA,QACRC,MAAMf,QAAQgB,YAAa;AAAA,QAC3BC,OAAOjB,QAAQkB,SAAAA,IAAa;AAAA,MAAA,CAC7B;AAAA,IACH;AAAA,EAAA,GACC,CAACd,gBAAgBJ,OAAO,CAAC;AAK5B,QAAMmB,cAAcA,MAAM;AACxBtB,iBAAaD,WAAW,IAAI;AACjBI,eAAAA,WAAWJ,WAAW,IAAI;AAErClC,yCAAWkC,WAAWI;AAEtBV,uBAAmB,MAAM;AAEnBpC,UAAAA,aAAa,CAACkE,QAAAA,OAAOxB,SAAS,KAAMtB,aAAa,CAAC8C,QAAAA,OAAOpB,OAAO,IAAK;AAChE,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAEDN,oBAAgB,KAAK;AAAA,EAAA;AAMvB,QAAM2B,eAAeA,MAAM;AACN;AACF;AAEL;AAEZ3B,oBAAgB,KAAK;AAAA,EAAA;AAMvB,QAAM4B,cAAcA,MAAM;AACxBzB,iBAAa0B,QAAW,KAAK;AAC7BtB,eAAWsB,QAAW,KAAK;AAChB;AAAA,EAAA;AAGb,QAAMC,sBAAsBA,MAAM;AAC1BC,UAAAA,aAAa,EAAEnD,aAAaK;AAClC,QAAI8C,YAAY;AACD;IAAA,OACR;AACS;IAChB;AAAA,EAAA;AAGIC,QAAAA,eAAeA,CAACC,KAAKC,SAAS;AAMlC,QAAID,QAAQ;AAAM;AAClBjC,oBAAgBkC,IAAI;AACpB,QAAI,CAACA;AAA2B;EAAA;AAGlC,QAAMC,mBAAmBA,MAAM;;AAC7BvB,sBAAYM,YAAZN,mBAAqBwB;AAAAA,EAAO;AAGxBC,QAAAA,mBAAmBA,CAACC,OAAOC,YAAY;AACvC,QAAA,CAACb,eAAOa,OAAO;AAAG;AAEhBC,UAAAA,WAAW,CAACvD,eAAe,CAACL;AAElC,QAAIA,WAAW;AACb,UAAI,CAACsB,aAAcA,aAAaI,WAAYiC,UAAUrC,WAAW;AAC/DC,qBAAaoC,OAAO;AACpBhC,mBAAWsB,MAAS;AAAA,MAAA,OACf;AACLtB,mBAAWgC,OAAO;AAAA,MACpB;AAAA,IAAA,OACK;AACLpC,mBAAaoC,SAASC,QAAQ;AAAA,IAChC;AAEA,QAAIA,UAAU;AACZxE,2CAAWuE;AAEX3C,yBAAmB,MAAM;AAEvB,YAAIpC,YAAY,CAACkE,eAAOa,OAAO,GAAG;AACzB,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,MAAA,CACR;AAEDvC,sBAAgB,KAAK;AAAA,IACvB;AAAA,EAAA;AAGF,QAAMyC,wBAAwBA,CAACH,OAAOC,SAASG,aAAa;AACtD,QAAA,CAAChB,eAAOa,OAAO;AAAG;AAEtB,QAAI,CAAC3D,WAAW;AACdyD,uBAAiBC,OAAOC,OAAO;AAC/B;AAAA,IACF;AAEA,QAAIG,aAAa,QAAQ;AACnBpC,UAAAA;AAAsBiC,qBAAAA,UAAUjC,UAAUA,UAAUiC,OAAO;AAAA,IAAA,WACtDG,aAAa,SAAS;AAC/B,UAAI,CAACxC,WAAW;AACVI,YAAAA;AAAsBiC,uBAAAA,UAAUjC,UAAUA,UAAUiC,OAAO;AAC/D;AAAA,MACF;AACWA,iBAAAA,UAAUrC,YAAYA,YAAYqC,OAAO;AAAA,IACtD;AAAA,EAAA;AAMII,QAAAA,gBAAgBA,MACpBC,2BAAAA,IAACC,kBAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,IAAAA,sCACDC,UAAAA,aAAW;AAAA,MACV3F,WACE6B,YACI+D,UACEC,kBAAAA,QAAkBC,iBAClB/F,mCAAS+F,iBACTJ,IAAIK,kBAAAA,OAAOD,eAAe,CAAC,IAE7B;AAAA,MACLL,UAAA,CAEA5D,aACC0D,2BAAAA,IAAA,OAAA;AAAA,QACEvF,WAAW4F,KAAAA,KACTC,kBAAAA,QAAkBG,eAClBjG,mCAASiG,aAAa;AAAA,QACtBP,yCAEDQ,iBAAQ;AAAA,UACPhG,IAAIiG,MAAAA,MAAMjG,IAAI,UAAU,OAAO;AAAA,UAC/BD,WAAW4F,KAAAA,KACTC,kBAAkBM,QAAAA,QAClBpG,mCAASoG,QACTT,IAAIK,yBAAOI,MAAM,CAAC;AAAA,UAEpBC,SAAQ;AAAA,UACRC,SAAS9B;AAAAA,UAAYkB,UAEpBvE,iCAAQrB;AAAAA,QAAAA,CAAU;AAAA,MAAA,CACV,GAGfyG,2BAAAA,KAAA,OAAA;AAAA,QACEtG,WAAW4F,KAAAA,KACTC,kBAAAA,QAAkBU,gBAClBxG,mCAASwG,cAAc;AAAA,QACvBd,UAAA,CAEFF,2BAAAA,IAACU,iBAAQ;AAAA,UACPhG,IAAIiG,MAAAA,MAAMjG,IAAI,UAAU,OAAO;AAAA,UAC/BD,WAAW4F,KAAAA,KACTC,kBAAkBM,QAAAA,QAClBpG,mCAASoG,QACTT,IAAIK,yBAAOI,MAAM,CAAC;AAAA,UAEpBC,SAAQ;AAAA,UACRC,SAASjC;AAAAA,UAAYqB,UAEpBvE,iCAAQvB;AAAAA,QAAAA,CACA,GACX4F,2BAAAA,IAACU,iBAAQ;AAAA,UACPhG,IAAIiG,MAAAA,MAAMjG,IAAI,UAAU,QAAQ;AAAA,UAChCD,WAAW4F,KAAAA,KACTC,kBAAkBM,QAAAA,QAClBpG,mCAASoG,QACTT,IAAIK,yBAAOI,MAAM,CAAC;AAAA,UAEpBC,SAAQ;AAAA,UACRC,SAAS/B;AAAAA,UAAamB,UAErBvE,iCAAQtB;AAAAA,QAAAA,CACA,CAAA;AAAA,MAAA,CACP,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAIb;AAED,QAAM4G,mBAAmBA,CAACC,YAAYL,SAASM,SAAS;AACtD,UAAMC,mBAA0BC,iCAAAA,QAAAA,WAAAA,cAAYC,QAAAC,IAAAC,aAAA,eAAA;AAAA,MAAAhD,QAAA;AAAA,IAAA,IAAA;AAAA,MAAAA,QAAA;AAAA,MAAAzD,OAAA;AAAA,IAAA,CAAA,EAAE;AAAA,MAC5C0G,OAAOP,aACHQ,kBAAMC,OAAOC,YACbF,YAAAA,MAAMG,WAAWC;AAAAA,IAAAA,GACtBR,QAAAC,IAAAC,aAAC,eAAA,KAAA,i7zBAAA;AAEF,0CAAQJ,kBAAgB;AAAA,MAACP;AAAAA,MAAiBX,UAAEiB;AAAAA,IAAAA,CAAwB;AAAA,EAAA;AAGtE,QAAMY,cAAeb,CAAAA,eACnBD,iBACEC,YACAhD,2CAAa2D,WAAWG,qBACvBd,cAAcxF,iBAAiBuD,SAAY,KAAKiC,cAAcxF,WAAW;AAG9E,QAAMuG,YAAYjG,YAAY;AAAA,IAAEsB;AAAAA,IAAWI;AAAAA,EAAYJ,IAAAA;AAEvD,QAAM4E,WAAWnH,SAAS;AAC1B,QAAMoH,iBAAiBjH,eAAe;AAMhCkH,QAAAA,eACJ3G,oBAAoB,SAClBF,WAAW0D,UAAazD,kBAAkByD,UACzC1D,WAAW0D,UAAarE;AAEvByH,QAAAA,iBAAiBC,2BAAUvF,eAAe;AAE5CwF,MAAAA;AACJ,MAAIF,gBAAgB;AAClBE,qBAAiBH,eACbzB,MAAAA,MAAM9D,WAAW,OAAO,IACxBpB;AAAAA,EACN;AAEA,wCACGwE,MAAAA,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,IAAAA,sCACDqC,YAAAA,eAAa;AAAA,MACZ9H;AAAAA,MACAC;AAAAA,MACAkB,OAAOoG;AAAAA,MACP1G,QAAQwB;AAAAA,MACRlC;AAAAA,MACAD;AAAAA,MACAH,WAAW4F,KACT5F,KAAAA,WACA6F,kBAAAA,QAAkBmC,MAClBjI,mCAASiI,MACTtC,IAAIK,yBAAOiC,IAAI,CAAC;AAAA,MAElB3H;AAAAA,MAAmB,GACf6B;AAAAA,MAAMuD,YAERgC,YAAYC,mDACZ,OAAA;AAAA,QACE1H,WAAW4F,KAAAA,KACTC,kBAAkBoC,QAAAA,gBAClBlI,mCAASkI,gBACTvC,IAAIK,yBAAOkC,cAAc,CAAC;AAAA,QAC1BxC,UAEDgC,CAAAA,YACClC,2BAAAA,IAAC2C,eAAO;AAAA,UACNjI,IAAIiG,MAAAA,MAAM9D,WAAW,OAAO;AAAA,UAC5B9B;AAAAA,UACAN,WAAW4F,KAAAA,KACTC,kBAAkBvF,QAAAA,OAClBP,mCAASO,OACToF,IAAIK,yBAAOzF,KAAK,CAAC;AAAA,QAAA,CACjB,GAILoH,kBACCnC,2BAAAA,IAAC4C,2BAAa;AAAA,UACZlI,IAAIiG,MAAAA,MAAM9D,WAAW,aAAa;AAAA,UAClCpC,WAAW4F,KAAAA,KACTC,kBAAkBpF,QAAAA,aAClBV,mCAASU,aACTiF,IAAIK,yBAAOtF,WAAW,CAAC;AAAA,UACvBgF,UAEDhF;AAAAA,QAAAA,CAEJ,CAAA;AAAA,MAAA,CAEJ,GACD6F,2BAAAA,KAAC8B,6BAAc;AAAA,QACbC,MAAK;AAAA,QACLtI,SAAS;AAAA,UACPiI,MAAMpC,KAAAA,KACJC,kBAAkByC,QAAAA,UAClBvI,mCAASuI,UACT5C,IAAIK,yBAAOuC,QAAQ,CAAC;AAAA,UAEtBC,OAAO3C,KAAAA,KACLC,kBAAkB0C,QAAAA,OAClBxI,mCAASwI,OACT7C,IAAIK,yBAAOwC,KAAK,CAAC;AAAA,UAEnBC,QAAQZ,iBACJhC,UACEC,kBAAAA,QAAkB4C,uBAClB1I,mCAAS0I,uBACT/C,IAAIK,kBAAAA,OAAO0C,qBAAqB,CAAC,IAEnCjE;AAAAA,UACJkE,YAAY9C,KAAAA,KACVC,kBAAkB8C,QAAAA,oBAClB5I,mCAAS4I,oBACTjD,IAAIK,yBAAO4C,kBAAkB,CAAC;AAAA,QAElC;AAAA,QACAtI;AAAAA,QACAD;AAAAA,QACA0B;AAAAA,QACA8G,eAAa;AAAA,QACbC,WAAWpH;AAAAA,QACXqH,UAAUpG;AAAAA,QACVqG,UAAUpE;AAAAA,QACVqE,gBAAgBvE;AAAAA,QAChBwE,qBAAqBnE;AAAAA,QACrB7D,aAAaqG,YACX4B,MAAAA,aAAa1B,WAAWjG,WAAWG,MAAM,CAAC;AAAA,QAE5CyH,0CACGC,0BAAQ;AAAA,UACPpJ,WAAW4F,KAAAA,KACTC,kBAAkBwD,QAAAA,MAClBtJ,mCAASsJ,MACT3D,IAAIK,yBAAOsD,IAAI,CAAC;AAAA,UAElBrC,OAAO5G,WAAW,iBAAiBoE;AAAAA,QAAAA,CAEtC;AAAA,QACD8E,aAAa;AAAA,UACXC,WAAW,CACT;AAAA,YAAErJ,MAAM;AAAA,YAAmBsJ,SAASzH;AAAAA,UAAAA,CAAqB;AAAA,QAE7D;AAAA,QACA,iBAAc;AAAA,QACd,cAAYxB;AAAAA,QACZ,mBACE,CAACD,SAAS4F,YAAM9D,WAAW,OAAO,GAAG5B,cAAc,EAChDiJ,KAAK,GAAG,EACRC,UAAUlF;AAAAA,QAEf,gBAAcoD,iBAAiB,OAAOpD;AAAAA,QACtC,qBAAmBsD;AAAAA,QACnB,oBACE,CAACrH,eAAeyF,YAAM9D,WAAW,aAAa,GAAG1B,eAAe,EAC7D+I,KAAK,GAAG,EACRC,UAAUlF;AAAAA,QACd,GACGxC;AAAAA,QAAayD,WAEjBF,2BAAAA,IAAA,OAAA;AAAA,UAAKoE,KAAKpG;AAAAA,UAAaqG,UAAU;AAAA,QAAA,CAAM,GACvCrE,2BAAAA,IAACsE,qBAAU;AAAA,UACT5J,IAAIiG,MAAAA,MAAMjG,IAAI,UAAU;AAAA,UACxBuB;AAAAA,UACAb,UAAUqE;AAAAA,UACV8E,eAAe1E;AAAAA,UACf2E,qBAAqBA,CAACC,QAAQlG,MAAMI,OAAOH,WAAW;AACrC,2BAAA;AAAA,cAAED;AAAAA,cAAMC;AAAAA,cAAQG;AAAAA,YAAAA,CAAO;AAAA,UACxC;AAAA,UACAxC;AAAAA,UAAe,GACX0B;AAAAA,UAAW,GACXnB;AAAAA,QAAa,CAAA,IAEjBV,aAAaK,gBAAgB0D,eAAe;AAAA,MAAA,CAAA,GAE/CqC,gBACCpC,2BAAAA,IAAC0E,2BAAa;AAAA,QACZhK,IAAIiG,MAAAA,MAAM9D,WAAW,OAAO;AAAA,QAC5B8H,eAAa;AAAA,QACblK,WAAW4F,KAAAA,KAAKC,kBAAAA,QAAkBsE,OAAOpK,mCAASoK,KAAK;AAAA,QAAE1E,UAExDhD;AAAAA,MAAAA,CAEJ,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAGM;AAEjB;;"}
|
|
1
|
+
{"version":3,"file":"DatePicker.cjs","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport datePickerClasses, { HvDatePickerClasses } from \"./datePickerClasses\";\nimport { styles } from \"./DatePicker.styles\";\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n};\n\nexport type HvDatePickerStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvDatePickerStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <ClassNames>\n {({ css, cx }) => (\n <HvActionBar\n className={\n showClear\n ? cx(\n datePickerClasses.actionContainer,\n css(styles.actionContainer),\n classes?.actionContainer\n )\n : \"\"\n }\n >\n {showClear && (\n <div\n className={cx(\n datePickerClasses.leftContainer,\n classes?.leftContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div\n className={cx(\n datePickerClasses.rightContainer,\n classes?.rightContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n )}\n </ClassNames>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(\n datePickerClasses.root,\n css(styles.root),\n className,\n classes?.root\n )}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div\n className={cx(\n datePickerClasses.labelContainer,\n css(styles.labelContainer),\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={cx(\n datePickerClasses.label,\n css(styles.label),\n classes?.label\n )}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={cx(\n datePickerClasses.description,\n css(styles.description),\n classes?.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: cx(\n datePickerClasses.dropdown,\n css(styles.dropdown),\n classes?.dropdown\n ),\n panel: cx(\n datePickerClasses.panel,\n css(styles.panel),\n classes?.panel\n ),\n header: isStateInvalid\n ? cx(\n datePickerClasses.dropdownHeaderInvalid,\n css(styles.dropdownHeaderInvalid),\n classes?.dropdownHeaderInvalid\n )\n : undefined,\n headerOpen: cx(\n datePickerClasses.dropdownHeaderOpen,\n css(styles.dropdownHeaderOpen),\n classes?.dropdownHeaderOpen\n ),\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(\n getDateLabel(dateValue, rangeMode, locale)\n )}\n adornment={\n <Calendar\n className={cx(\n datePickerClasses.icon,\n css(styles.icon),\n classes?.icon\n )}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(datePickerClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n )}\n </ClassNames>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","HvDatePicker","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsx","ClassNames","children","css","cx","HvActionBar","datePickerClasses","actionContainer","styles","leftContainer","HvButton","setId","action","variant","onClick","_jsxs","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","HvWarningText","disableBorder","error"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
|
-
const clsx = require("clsx");
|
|
5
4
|
const MuiDialog = require("@mui/material/Dialog");
|
|
6
5
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
7
6
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
@@ -97,10 +96,11 @@ const HvDialog = ({
|
|
|
97
96
|
const CloseButtonTooltipWrapper = buttonTitle ? withTooltip.default(closeButtonDisplay, buttonTitle, "top") : closeButtonDisplay;
|
|
98
97
|
return /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, {
|
|
99
98
|
children: ({
|
|
100
|
-
css
|
|
99
|
+
css,
|
|
100
|
+
cx
|
|
101
101
|
}) => /* @__PURE__ */ jsxRuntime.jsxs(MuiDialog__default.default, {
|
|
102
102
|
container: document.getElementById(rootId || "") || document.body,
|
|
103
|
-
className:
|
|
103
|
+
className: cx(dialogClasses.default.root, className, classes == null ? void 0 : classes.root),
|
|
104
104
|
id,
|
|
105
105
|
ref: measuredRef,
|
|
106
106
|
open,
|
|
@@ -127,21 +127,21 @@ const HvDialog = ({
|
|
|
127
127
|
},
|
|
128
128
|
BackdropProps: {
|
|
129
129
|
classes: {
|
|
130
|
-
root:
|
|
130
|
+
root: cx(dialogClasses.default.background, classes == null ? void 0 : classes.background)
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
PaperProps: {
|
|
134
134
|
classes: {
|
|
135
|
-
root:
|
|
135
|
+
root: cx(dialogClasses.default.paper, fullscreen && cx(dialogClasses.default.fullscreen, "fullscreen"), css(Dialog_styles.styles.paper), css({
|
|
136
136
|
position: "absolute"
|
|
137
|
-
}), fullscreen &&
|
|
137
|
+
}), classes == null ? void 0 : classes.paper, fullscreen && (classes == null ? void 0 : classes.fullscreen))
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
"aria-modal": true,
|
|
141
141
|
...others,
|
|
142
142
|
children: [/* @__PURE__ */ jsxRuntime.jsx(Dialog_styles.StyledClose, {
|
|
143
143
|
id: setId.setId(id, "close"),
|
|
144
|
-
className:
|
|
144
|
+
className: cx(dialogClasses.default.closeButton, classes == null ? void 0 : classes.closeButton),
|
|
145
145
|
variant: "secondaryGhost",
|
|
146
146
|
onClick: (event) => wrappedClose(event, true, void 0),
|
|
147
147
|
"aria-label": buttonTitle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useCallback, useRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport MuiDialog, { DialogProps as MuiDialogProps } from \"@mui/material/Dialog\";\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport isNil from \"lodash/isNil\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { StyledBackdrop, StyledClose, styles } from \"./Dialog.styles\";\nimport {\n isKeypress,\n keyboardCodes,\n setId,\n getFocusableList,\n} from \"@core/utils\";\nimport { withTooltip } from \"@core/hocs\";\nimport dialogClasses, { HvDialogClasses } from \"./dialogClasses\";\nimport { useTheme } from \"@core/hooks\";\nimport { ClassNames } from \"@emotion/react\";\n\nexport interface HvDialogProps\n extends Omit<MuiDialogProps, \"fullScreen\" | \"classes\" | \"open\">,\n HvBaseProps {\n /** Id to be applied to the root node. */\n id?: string;\n /** Current state of the Dialog. */\n open?: boolean;\n /** Function executed on close. */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /** Element id that should be focus when the Dialog opens. */\n firstFocusable?: string;\n /** Title for the button close. */\n buttonTitle?: string;\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n /** Prevent closing the dialog when clicking on the backdrop. */\n disableBackdropClick?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDialogClasses;\n}\n\nexport const HvDialog = ({\n classes,\n className,\n id,\n children,\n open = false,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}: HvDialogProps) => {\n delete (others as any).fullScreen;\n\n const { activeTheme, selectedMode, rootId } = useTheme();\n\n const focusableQueue = useRef<{\n first?: HTMLElement;\n last?: HTMLElement;\n }>({ first: undefined, last: undefined });\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that functionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = (\n event,\n bypassValidation: boolean = false,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => {\n if (bypassValidation) {\n onClose?.(event, reason);\n } else if (!disableBackdropClick) {\n onClose?.(event, reason);\n }\n };\n\n const measuredRef = useCallback(\n (node) => {\n if (node) {\n const focusableList = getFocusableList(node);\n focusableQueue.current = {\n first: focusableList[1],\n last: focusableList[focusableList.length - 2],\n };\n if (isNil(firstFocusable)) focusableList[1].focus();\n else {\n const element =\n firstFocusable && document.getElementById(firstFocusable);\n if (element) element.focus();\n else {\n console.warn(`firstFocusable element ${firstFocusable} not found.`);\n\n focusableList[1].focus();\n }\n }\n }\n },\n [firstFocusable]\n );\n\n const keyDownHandler = (event) => {\n if (\n isKeypress(event, keyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableQueue)\n ) {\n if (event.shiftKey && event.target === focusableQueue.current.first) {\n focusableQueue.current.last?.focus();\n event.preventDefault();\n }\n if (!event.shiftKey && event.target === focusableQueue.current.last) {\n focusableQueue.current.first?.focus();\n event.preventDefault();\n }\n }\n // Needed as this handler overrides the one in the material ui Modal.\n else if (isKeypress(event, keyboardCodes.Esc)) {\n if (\n \"onEscapeKeyDown\" in others &&\n typeof others.onEscapeKeyDown === \"function\"\n ) {\n others.onEscapeKeyDown(event);\n }\n\n if (!others.disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n wrappedClose(event, true, \"escapeKeyDown\");\n }\n }\n };\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n return (\n <ClassNames>\n {({ css }) => (\n <MuiDialog\n container={document.getElementById(rootId || \"\") || document.body}\n className={clsx(dialogClasses.root, classes?.root, className)}\n id={id}\n ref={measuredRef}\n open={open}\n fullScreen={fullscreen}\n onClose={(event, reason) => wrappedClose(event, undefined, reason)}\n onKeyDown={keyDownHandler}\n fullWidth\n maxWidth={false}\n slots={{\n backdrop: (backdropProps) => (\n <StyledBackdrop\n open={open}\n onClick={(event) => wrappedClose(event)}\n $backColor={\n activeTheme?.colors?.modes[selectedMode].atmo4 ||\n theme.colors.atmo4\n }\n {...backdropProps}\n />\n ),\n }}\n classes={{ container: css({ position: \"relative\" }) }}\n BackdropProps={{\n classes: {\n root: clsx(classes?.background, dialogClasses.background),\n },\n }}\n PaperProps={{\n classes: {\n root: clsx(\n css(styles.paper),\n classes?.paper,\n dialogClasses.paper,\n css({ position: \"absolute\" }),\n fullscreen &&\n clsx(\n dialogClasses.fullscreen,\n classes?.fullscreen,\n \"fullscreen\"\n )\n ),\n },\n }}\n aria-modal\n {...others}\n >\n <StyledClose\n id={setId(id, \"close\")}\n className={clsx(dialogClasses.closeButton, classes?.closeButton)}\n variant=\"secondaryGhost\"\n onClick={(event) => wrappedClose(event, true, undefined)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </StyledClose>\n {children && typeof children === \"object\"\n ? React.Children.map(\n children,\n (c: React.ReactNode) =>\n c &&\n React.cloneElement(c as React.ReactElement, { fullscreen })\n )\n : children}\n </MuiDialog>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvDialog","classes","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","fullScreen","activeTheme","selectedMode","rootId","useTheme","focusableQueue","useRef","first","undefined","last","wrappedClose","event","bypassValidation","reason","measuredRef","useCallback","node","focusableList","getFocusableList","current","length","isNil","focus","element","document","getElementById","warn","keyDownHandler","isKeypress","keyboardCodes","Tab","target","shiftKey","preventDefault","Esc","onEscapeKeyDown","disableEscapeKeyDown","stopPropagation","closeButtonDisplay","_jsx","Close","role","CloseButtonTooltipWrapper","withTooltip","ClassNames","css","MuiDialog","container","body","clsx","dialogClasses","root","ref","onKeyDown","fullWidth","maxWidth","slots","backdrop","backdropProps","StyledBackdrop","onClick","$backColor","colors","modes","atmo4","theme","position","BackdropProps","background","PaperProps","styles","paper","StyledClose","setId","closeButton","variant","React","Children","map","c","cloneElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2CO,MAAMA,WAAWA,CAAC;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACAC,cAAc;AAAA,EACdC,aAAa;AAAA,EACbC,uBAAuB;AAAA,EACvB,GAAGC;AACU,MAAM;AACnB,SAAQA,OAAeC;AAEjB,QAAA;AAAA,IAAEC;AAAAA,IAAaC;AAAAA,IAAcC;AAAAA,MAAWC,SAAU,SAAA;AAExD,QAAMC,iBAAiBC,MAAAA,OAGpB;AAAA,IAAEC,OAAOC;AAAAA,IAAWC,MAAMD;AAAAA,EAAAA,CAAW;AAKxC,QAAME,eAAeA,CACnBC,OACAC,mBAA4B,OAC5BC,WACG;AACH,QAAID,kBAAkB;AACpBlB,yCAAUiB,OAAOE;AAAAA,IAAM,WACd,CAACf,sBAAsB;AAChCJ,yCAAUiB,OAAOE;AAAAA,IACnB;AAAA,EAAA;AAGIC,QAAAA,cAAcC,kBACjBC,CAAS,SAAA;AACR,QAAIA,MAAM;AACFC,YAAAA,gBAAgBC,wCAAiBF,IAAI;AAC3CX,qBAAec,UAAU;AAAA,QACvBZ,OAAOU,cAAc,CAAC;AAAA,QACtBR,MAAMQ,cAAcA,cAAcG,SAAS,CAAC;AAAA,MAAA;AAE9C,UAAIC,eAAAA,QAAM1B,cAAc;AAAiB,sBAAA,CAAC,EAAE2B;WACvC;AACH,cAAMC,UACJ5B,kBAAkB6B,SAASC,eAAe9B,cAAc;AACtD4B,YAAAA;AAASA,kBAAQD,MAAK;AAAA,aACrB;AACKI,kBAAAA,KAAM,0BAAyB/B,2BAA2B;AAEpD,wBAAA,CAAC,EAAE2B;QACnB;AAAA,MACF;AAAA,IACF;AAAA,EAAA,GAEF,CAAC3B,cAAc,CAAC;AAGlB,QAAMgC,iBAAkBhB,CAAU,UAAA;;AAChC,QACEiB,oBAAWjB,OAAOkB,cAAcC,cAAAA,GAAG,KACnC,CAACT,uBAAMV,MAAMoB,MAAM,KACnB,CAACV,eAAAA,QAAMhB,cAAc,GACrB;AACA,UAAIM,MAAMqB,YAAYrB,MAAMoB,WAAW1B,eAAec,QAAQZ,OAAO;AACpDY,6BAAAA,QAAQV,SAARU,mBAAcG;AAC7BX,cAAMsB,eAAgB;AAAA,MACxB;AACA,UAAI,CAACtB,MAAMqB,YAAYrB,MAAMoB,WAAW1B,eAAec,QAAQV,MAAM;AACpDU,6BAAAA,QAAQZ,UAARY,mBAAeG;AAC9BX,cAAMsB,eAAgB;AAAA,MACxB;AAAA,IAGOL,WAAAA,SAAAA,WAAWjB,OAAOkB,cAAAA,cAAcK,GAAG,GAAG;AAC7C,UACE,qBAAqBnC,UACrB,OAAOA,OAAOoC,oBAAoB,YAClC;AACApC,eAAOoC,gBAAgBxB,KAAK;AAAA,MAC9B;AAEI,UAAA,CAACZ,OAAOqC,sBAAsB;AAEhCzB,cAAM0B,gBAAiB;AAEV1B,qBAAAA,OAAO,MAAM,eAAe;AAAA,MAC3C;AAAA,IACF;AAAA,EAAA;AAGI2B,QAAAA,qBAAqBA,MAAMC,2BAAAA,IAACC,uBAAK;AAAA,IAACC,MAAK;AAAA,EAAA,CAAiB;AAE9D,QAAMC,4BAA4B9C,cAC9B+C,YAAAA,QAAYL,oBAAoB1C,aAAa,KAAK,IAClD0C;AAEJ,wCACGM,MAAAA,YAAU;AAAA,IAAApD,UACRA,CAAC;AAAA,MAAEqD;AAAAA,IAAAA,sCACDC,mBAAAA,SAAS;AAAA,MACRC,WAAWvB,SAASC,eAAetB,UAAU,EAAE,KAAKqB,SAASwB;AAAAA,MAC7D1D,WAAW2D,KAAKC,KAAAA,cAAAA,QAAcC,MAAM9D,mCAAS8D,MAAM7D,SAAS;AAAA,MAC5DC;AAAAA,MACA6D,KAAKtC;AAAAA,MACLrB;AAAAA,MACAO,YAAYH;AAAAA,MACZH,SAASA,CAACiB,OAAOE,WAAWH,aAAaC,OAAOH,QAAWK,MAAM;AAAA,MACjEwC,WAAW1B;AAAAA,MACX2B,WAAS;AAAA,MACTC,UAAU;AAAA,MACVC,OAAO;AAAA,QACLC,UAAWC,CACTnB;;AAAAA,4CAAAA,IAACoB,8BAAc;AAAA,YACblE;AAAAA,YACAmE,SAAUjD,CAAUD,UAAAA,aAAaC,KAAK;AAAA,YACtCkD,cACE5D,gDAAa6D,WAAb7D,mBAAqB8D,MAAM7D,cAAc8D,UACzCC,kBAAMH,OAAOE;AAAAA,YACd,GACGN;AAAAA,UAAAA,CAAa;AAAA;AAAA,MAGvB;AAAA,MACArE,SAAS;AAAA,QAAE0D,WAAWF,IAAI;AAAA,UAAEqB,UAAU;AAAA,QAAA,CAAY;AAAA,MAAE;AAAA,MACpDC,eAAe;AAAA,QACb9E,SAAS;AAAA,UACP8D,MAAMF,KAAAA,KAAK5D,mCAAS+E,YAAYlB,cAAAA,QAAckB,UAAU;AAAA,QAC1D;AAAA,MACF;AAAA,MACAC,YAAY;AAAA,QACVhF,SAAS;AAAA,UACP8D,MAAMF,KACJJ,KAAAA,IAAIyB,cAAAA,OAAOC,KAAK,GAChBlF,mCAASkF,OACTrB,cAAAA,QAAcqB,OACd1B,IAAI;AAAA,YAAEqB,UAAU;AAAA,UAAA,CAAY,GAC5BrE,cACEoD,KAAAA,KACEC,sBAAcrD,YACdR,mCAASQ,YACT,YAAY,CACb;AAAA,QAEP;AAAA,MACF;AAAA,MACA,cAAU;AAAA,MAAA,GACNE;AAAAA,MAAMP,UAAA,CAEV+C,2BAAAA,IAACiC,2BAAW;AAAA,QACVjF,IAAIkF,MAAAA,MAAMlF,IAAI,OAAO;AAAA,QACrBD,WAAW2D,KAAAA,KAAKC,cAAAA,QAAcwB,aAAarF,mCAASqF,WAAW;AAAA,QAC/DC,SAAQ;AAAA,QACRf,SAAUjD,CAAAA,UAAUD,aAAaC,OAAO,MAAMH,MAAS;AAAA,QACvD,cAAYZ;AAAAA,QAAYJ,UAExB+C,2BAAAA,IAACG,2BAAyB,EAAA;AAAA,MAAG,CAAA,GAE9BlD,YAAY,OAAOA,aAAa,WAC7BoF,eAAAA,QAAMC,SAASC,IACbtF,UACA,CAACuF,MACCA,KACAH,eAAAA,QAAMI,aAAaD,GAAyB;AAAA,QAAElF;AAAAA,MAAAA,CAAY,CAAC,IAE/DL,QAAQ;AAAA,IAAA,CAAA;AAAA,EAAA,CAGL;AAEjB;;"}
|
|
1
|
+
{"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useCallback, useRef } from \"react\";\nimport MuiDialog, { DialogProps as MuiDialogProps } from \"@mui/material/Dialog\";\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport isNil from \"lodash/isNil\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { StyledBackdrop, StyledClose, styles } from \"./Dialog.styles\";\nimport {\n isKeypress,\n keyboardCodes,\n setId,\n getFocusableList,\n} from \"@core/utils\";\nimport { withTooltip } from \"@core/hocs\";\nimport dialogClasses, { HvDialogClasses } from \"./dialogClasses\";\nimport { useTheme } from \"@core/hooks\";\nimport { ClassNames } from \"@emotion/react\";\n\nexport interface HvDialogProps\n extends Omit<MuiDialogProps, \"fullScreen\" | \"classes\" | \"open\">,\n HvBaseProps {\n /** Id to be applied to the root node. */\n id?: string;\n /** Current state of the Dialog. */\n open?: boolean;\n /** Function executed on close. */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /** Element id that should be focus when the Dialog opens. */\n firstFocusable?: string;\n /** Title for the button close. */\n buttonTitle?: string;\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n /** Prevent closing the dialog when clicking on the backdrop. */\n disableBackdropClick?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDialogClasses;\n}\n\nexport const HvDialog = ({\n classes,\n className,\n id,\n children,\n open = false,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}: HvDialogProps) => {\n delete (others as any).fullScreen;\n\n const { activeTheme, selectedMode, rootId } = useTheme();\n\n const focusableQueue = useRef<{\n first?: HTMLElement;\n last?: HTMLElement;\n }>({ first: undefined, last: undefined });\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that functionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = (\n event,\n bypassValidation: boolean = false,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => {\n if (bypassValidation) {\n onClose?.(event, reason);\n } else if (!disableBackdropClick) {\n onClose?.(event, reason);\n }\n };\n\n const measuredRef = useCallback(\n (node) => {\n if (node) {\n const focusableList = getFocusableList(node);\n focusableQueue.current = {\n first: focusableList[1],\n last: focusableList[focusableList.length - 2],\n };\n if (isNil(firstFocusable)) focusableList[1].focus();\n else {\n const element =\n firstFocusable && document.getElementById(firstFocusable);\n if (element) element.focus();\n else {\n console.warn(`firstFocusable element ${firstFocusable} not found.`);\n\n focusableList[1].focus();\n }\n }\n }\n },\n [firstFocusable]\n );\n\n const keyDownHandler = (event) => {\n if (\n isKeypress(event, keyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableQueue)\n ) {\n if (event.shiftKey && event.target === focusableQueue.current.first) {\n focusableQueue.current.last?.focus();\n event.preventDefault();\n }\n if (!event.shiftKey && event.target === focusableQueue.current.last) {\n focusableQueue.current.first?.focus();\n event.preventDefault();\n }\n }\n // Needed as this handler overrides the one in the material ui Modal.\n else if (isKeypress(event, keyboardCodes.Esc)) {\n if (\n \"onEscapeKeyDown\" in others &&\n typeof others.onEscapeKeyDown === \"function\"\n ) {\n others.onEscapeKeyDown(event);\n }\n\n if (!others.disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n wrappedClose(event, true, \"escapeKeyDown\");\n }\n }\n };\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <MuiDialog\n container={document.getElementById(rootId || \"\") || document.body}\n className={cx(dialogClasses.root, className, classes?.root)}\n id={id}\n ref={measuredRef}\n open={open}\n fullScreen={fullscreen}\n onClose={(event, reason) => wrappedClose(event, undefined, reason)}\n onKeyDown={keyDownHandler}\n fullWidth\n maxWidth={false}\n slots={{\n backdrop: (backdropProps) => (\n <StyledBackdrop\n open={open}\n onClick={(event) => wrappedClose(event)}\n $backColor={\n activeTheme?.colors?.modes[selectedMode].atmo4 ||\n theme.colors.atmo4\n }\n {...backdropProps}\n />\n ),\n }}\n classes={{ container: css({ position: \"relative\" }) }}\n BackdropProps={{\n classes: {\n root: cx(dialogClasses.background, classes?.background),\n },\n }}\n PaperProps={{\n classes: {\n root: cx(\n dialogClasses.paper,\n fullscreen && cx(dialogClasses.fullscreen, \"fullscreen\"),\n css(styles.paper),\n css({ position: \"absolute\" }),\n classes?.paper,\n fullscreen && classes?.fullscreen\n ),\n },\n }}\n aria-modal\n {...others}\n >\n <StyledClose\n id={setId(id, \"close\")}\n className={cx(dialogClasses.closeButton, classes?.closeButton)}\n variant=\"secondaryGhost\"\n onClick={(event) => wrappedClose(event, true, undefined)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </StyledClose>\n {children && typeof children === \"object\"\n ? React.Children.map(\n children,\n (c: React.ReactNode) =>\n c &&\n React.cloneElement(c as React.ReactElement, { fullscreen })\n )\n : children}\n </MuiDialog>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvDialog","classes","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","fullScreen","activeTheme","selectedMode","rootId","useTheme","focusableQueue","useRef","first","undefined","last","wrappedClose","event","bypassValidation","reason","measuredRef","useCallback","node","focusableList","getFocusableList","current","length","isNil","focus","element","document","getElementById","warn","keyDownHandler","isKeypress","keyboardCodes","Tab","target","shiftKey","preventDefault","Esc","onEscapeKeyDown","disableEscapeKeyDown","stopPropagation","closeButtonDisplay","_jsx","Close","role","CloseButtonTooltipWrapper","withTooltip","ClassNames","css","cx","MuiDialog","container","body","dialogClasses","root","ref","onKeyDown","fullWidth","maxWidth","slots","backdrop","backdropProps","StyledBackdrop","onClick","$backColor","colors","modes","atmo4","theme","position","BackdropProps","background","PaperProps","paper","styles","StyledClose","setId","closeButton","variant","React","Children","map","c","cloneElement"],"mappings":"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"}
|
|
@@ -76,19 +76,20 @@ const HvDropDownMenu = ({
|
|
|
76
76
|
};
|
|
77
77
|
return /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, {
|
|
78
78
|
children: ({
|
|
79
|
-
css
|
|
79
|
+
css,
|
|
80
|
+
cx
|
|
80
81
|
}) => /* @__PURE__ */ jsxRuntime.jsx(DropDownMenu_styles.StyledBaseDropDown, {
|
|
81
82
|
id,
|
|
82
|
-
className:
|
|
83
|
+
className: cx(dropDownMenuClasses.default.container, className, classes == null ? void 0 : classes.container),
|
|
83
84
|
classes: {
|
|
84
|
-
root:
|
|
85
|
+
root: cx(dropDownMenuClasses.default.root, css({
|
|
85
86
|
display: "inline-block",
|
|
86
87
|
width: "auto",
|
|
87
88
|
"&.focus-visible $icon": {
|
|
88
89
|
...focusUtils.outlineStyles
|
|
89
90
|
}
|
|
90
|
-
})),
|
|
91
|
-
container:
|
|
91
|
+
}), classes == null ? void 0 : classes.root),
|
|
92
|
+
container: cx(dropDownMenuClasses.default.baseContainer, classes == null ? void 0 : classes.baseContainer)
|
|
92
93
|
},
|
|
93
94
|
expanded: open && !disabled,
|
|
94
95
|
component: headerComponent,
|
|
@@ -117,7 +118,7 @@ const HvDropDownMenu = ({
|
|
|
117
118
|
},
|
|
118
119
|
onKeyDown: handleKeyDown,
|
|
119
120
|
classes: {
|
|
120
|
-
root:
|
|
121
|
+
root: cx(dropDownMenuClasses.default.menuList, classes == null ? void 0 : classes.menuList)
|
|
121
122
|
}
|
|
122
123
|
})
|
|
123
124
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropDownMenu.cjs","sources":["../../../../src/components/DropDownMenu/DropDownMenu.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useMemo } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { MoreOptionsVertical } from \"@hitachivantara/uikit-react-icons\";\n\nimport { useControlled } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport withId from \"@core/hocs/withId\";\nimport {\n isKeypress,\n keyboardCodes,\n outlineStyles,\n setId,\n getPrevNextFocus,\n} from \"@core/utils\";\n\nimport {\n HvBaseDropdownProps,\n HvButtonVariant,\n HvList,\n HvListValue,\n} from \"@core/components\";\nimport {\n StyledBaseDropDown,\n StyledButton,\n StyledPanel,\n} from \"./DropDownMenu.styles\";\nimport dropDownMenuClasses, {\n HvDropDownMenuClasses,\n} from \"./dropDownMenuClasses\";\n\nexport interface HvDropDownMenuProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** Icon. */\n icon?: React.ReactElement;\n /**\n * A list containing the elements to be rendered.\n *\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - icon: The icon node to be rendered on the left.\n * - showNavIcon: If true renders the navigation icon on the right.\n */\n dataList: HvListValue[];\n /** Placement of the dropdown. */\n placement?: \"left\" | \"right\";\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Function executed on toggle of the dropdown. Should receive the open status. */\n onToggle?: (event: Event, open: boolean) => void;\n /** Function executed in each onClick. Should received the clicked element. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** Keep the Dropdown Menu opened after clicking one option */\n keepOpened?: boolean;\n /** Defines if the component is disabled. */\n disabled?: boolean;\n /** If true it should be displayed open. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** The variant to be used in the header. */\n category?: HvButtonVariant;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDropDownMenuClasses;\n}\n\n/**\n * A drop-down menu is a graphical control element, similar to a list box, that allows the user to choose a value from a list.\n */\nconst HvDropDownMenu = ({\n id,\n classes,\n className,\n icon,\n placement = \"right\",\n dataList,\n disablePortal = false,\n onToggle,\n onClick,\n keepOpened = true,\n disabled = false,\n expanded,\n defaultExpanded = false,\n category = \"secondaryGhost\",\n ...others\n}: HvDropDownMenuProps) => {\n const [open, setOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const focusNodes = getPrevNextFocus(setId(id, \"icon-button\"));\n\n const listId = setId(id, \"list\");\n\n const handleClose = (event) => {\n // this will only run if uncontrolled\n setOpen(false);\n onToggle?.(event, false);\n };\n\n // If the ESCAPE key is pressed inside the list, the close handler must be called.\n const handleKeyDown = (event) => {\n if (isKeypress(event, keyboardCodes.Tab)) {\n const node = event.shiftKey ? focusNodes.prevFocus : focusNodes.nextFocus;\n if (node) setTimeout(() => node.focus(), 0);\n handleClose(event);\n }\n event.preventDefault();\n };\n\n const setFocusToContent = (containerRef) => {\n containerRef?.getElementsByTagName(\"li\")[0]?.focus();\n };\n\n const headerComponent = (\n <StyledButton\n icon\n variant={category}\n id={setId(id, \"icon-button\")}\n className={clsx(\n dropDownMenuClasses.icon,\n classes?.icon,\n open && clsx(dropDownMenuClasses.iconSelected, classes?.iconSelected)\n )}\n aria-expanded={open}\n disabled={disabled}\n aria-label=\"Dropdown menu\"\n $open={open}\n >\n {icon || (\n <MoreOptionsVertical color={disabled ? \"secondary_60\" : undefined} />\n )}\n </StyledButton>\n );\n\n const condensed = useMemo(() => dataList.every((el) => !el.icon), [dataList]);\n const popperStyle: HvBaseDropdownProps[\"popperProps\"] = {\n style: {\n zIndex: theme.zIndices.tooltip,\n width: \"auto\",\n position: \"relative\",\n },\n };\n\n return (\n <ClassNames>\n {({ css }) => (\n <StyledBaseDropDown\n id={id}\n className={clsx(\n className,\n dropDownMenuClasses.container,\n classes?.container\n )}\n classes={{\n root: clsx(\n dropDownMenuClasses.root,\n classes?.root,\n css({\n display: \"inline-block\",\n width: \"auto\",\n \"&.focus-visible $icon\": {\n ...outlineStyles,\n },\n })\n ),\n container: clsx(\n dropDownMenuClasses.baseContainer,\n classes?.baseContainer\n ),\n }}\n expanded={open && !disabled}\n component={headerComponent}\n aria-haspopup=\"menu\"\n placement={placement}\n variableWidth\n disablePortal={disablePortal}\n onToggle={(e, s) => {\n // this will only run if uncontrolled\n setOpen(s);\n onToggle?.(e, s);\n }}\n disabled={disabled}\n onContainerCreation={setFocusToContent}\n popperProps={popperStyle}\n {...others}\n >\n <StyledPanel>\n <HvList\n id={listId}\n values={dataList}\n selectable={false}\n condensed={condensed}\n onClick={(event, item) => {\n if (!keepOpened) handleClose(event);\n onClick?.(event, item);\n }}\n onKeyDown={handleKeyDown}\n classes={{\n root: clsx(dropDownMenuClasses.menuList, classes?.menuList),\n }}\n />\n </StyledPanel>\n </StyledBaseDropDown>\n )}\n </ClassNames>\n );\n};\n\nexport default withId(HvDropDownMenu);\n"],"names":["HvDropDownMenu","id","classes","className","icon","placement","dataList","disablePortal","onToggle","onClick","keepOpened","disabled","expanded","defaultExpanded","category","others","open","setOpen","useControlled","Boolean","focusNodes","getPrevNextFocus","setId","listId","handleClose","event","handleKeyDown","isKeypress","keyboardCodes","Tab","node","shiftKey","prevFocus","nextFocus","setTimeout","focus","preventDefault","setFocusToContent","containerRef","getElementsByTagName","headerComponent","StyledButton","variant","clsx","dropDownMenuClasses","iconSelected","$open","children","_jsx","MoreOptionsVertical","color","undefined","condensed","useMemo","every","el","popperStyle","style","zIndex","theme","zIndices","tooltip","width","position","ClassNames","css","StyledBaseDropDown","container","root","display","outlineStyles","baseContainer","component","variableWidth","e","s","onContainerCreation","popperProps","StyledPanel","HvList","values","selectable","item","onKeyDown","menuList","withId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropDownMenu.cjs","sources":["../../../../src/components/DropDownMenu/DropDownMenu.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useMemo } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { MoreOptionsVertical } from \"@hitachivantara/uikit-react-icons\";\nimport { useControlled } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport withId from \"@core/hocs/withId\";\nimport {\n isKeypress,\n keyboardCodes,\n outlineStyles,\n setId,\n getPrevNextFocus,\n} from \"@core/utils\";\n\nimport {\n HvBaseDropdownProps,\n HvButtonVariant,\n HvList,\n HvListValue,\n} from \"@core/components\";\nimport {\n StyledBaseDropDown,\n StyledButton,\n StyledPanel,\n} from \"./DropDownMenu.styles\";\nimport dropDownMenuClasses, {\n HvDropDownMenuClasses,\n} from \"./dropDownMenuClasses\";\n\nexport interface HvDropDownMenuProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** Icon. */\n icon?: React.ReactElement;\n /**\n * A list containing the elements to be rendered.\n *\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - icon: The icon node to be rendered on the left.\n * - showNavIcon: If true renders the navigation icon on the right.\n */\n dataList: HvListValue[];\n /** Placement of the dropdown. */\n placement?: \"left\" | \"right\";\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Function executed on toggle of the dropdown. Should receive the open status. */\n onToggle?: (event: Event, open: boolean) => void;\n /** Function executed in each onClick. Should received the clicked element. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** Keep the Dropdown Menu opened after clicking one option */\n keepOpened?: boolean;\n /** Defines if the component is disabled. */\n disabled?: boolean;\n /** If true it should be displayed open. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** The variant to be used in the header. */\n category?: HvButtonVariant;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDropDownMenuClasses;\n}\n\n/**\n * A drop-down menu is a graphical control element, similar to a list box, that allows the user to choose a value from a list.\n */\nconst HvDropDownMenu = ({\n id,\n classes,\n className,\n icon,\n placement = \"right\",\n dataList,\n disablePortal = false,\n onToggle,\n onClick,\n keepOpened = true,\n disabled = false,\n expanded,\n defaultExpanded = false,\n category = \"secondaryGhost\",\n ...others\n}: HvDropDownMenuProps) => {\n const [open, setOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const focusNodes = getPrevNextFocus(setId(id, \"icon-button\"));\n\n const listId = setId(id, \"list\");\n\n const handleClose = (event) => {\n // this will only run if uncontrolled\n setOpen(false);\n onToggle?.(event, false);\n };\n\n // If the ESCAPE key is pressed inside the list, the close handler must be called.\n const handleKeyDown = (event) => {\n if (isKeypress(event, keyboardCodes.Tab)) {\n const node = event.shiftKey ? focusNodes.prevFocus : focusNodes.nextFocus;\n if (node) setTimeout(() => node.focus(), 0);\n handleClose(event);\n }\n event.preventDefault();\n };\n\n const setFocusToContent = (containerRef) => {\n containerRef?.getElementsByTagName(\"li\")[0]?.focus();\n };\n\n const headerComponent = (\n <StyledButton\n icon\n variant={category}\n id={setId(id, \"icon-button\")}\n className={clsx(\n dropDownMenuClasses.icon,\n classes?.icon,\n open && clsx(dropDownMenuClasses.iconSelected, classes?.iconSelected)\n )}\n aria-expanded={open}\n disabled={disabled}\n aria-label=\"Dropdown menu\"\n $open={open}\n >\n {icon || (\n <MoreOptionsVertical color={disabled ? \"secondary_60\" : undefined} />\n )}\n </StyledButton>\n );\n\n const condensed = useMemo(() => dataList.every((el) => !el.icon), [dataList]);\n const popperStyle: HvBaseDropdownProps[\"popperProps\"] = {\n style: {\n zIndex: theme.zIndices.tooltip,\n width: \"auto\",\n position: \"relative\",\n },\n };\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <StyledBaseDropDown\n id={id}\n className={cx(\n dropDownMenuClasses.container,\n className,\n classes?.container\n )}\n classes={{\n root: cx(\n dropDownMenuClasses.root,\n css({\n display: \"inline-block\",\n width: \"auto\",\n \"&.focus-visible $icon\": {\n ...outlineStyles,\n },\n }),\n classes?.root\n ),\n container: cx(\n dropDownMenuClasses.baseContainer,\n classes?.baseContainer\n ),\n }}\n expanded={open && !disabled}\n component={headerComponent}\n aria-haspopup=\"menu\"\n placement={placement}\n variableWidth\n disablePortal={disablePortal}\n onToggle={(e, s) => {\n // this will only run if uncontrolled\n setOpen(s);\n onToggle?.(e, s);\n }}\n disabled={disabled}\n onContainerCreation={setFocusToContent}\n popperProps={popperStyle}\n {...others}\n >\n <StyledPanel>\n <HvList\n id={listId}\n values={dataList}\n selectable={false}\n condensed={condensed}\n onClick={(event, item) => {\n if (!keepOpened) handleClose(event);\n onClick?.(event, item);\n }}\n onKeyDown={handleKeyDown}\n classes={{\n root: cx(dropDownMenuClasses.menuList, classes?.menuList),\n }}\n />\n </StyledPanel>\n </StyledBaseDropDown>\n )}\n </ClassNames>\n );\n};\n\nexport default withId(HvDropDownMenu);\n"],"names":["HvDropDownMenu","id","classes","className","icon","placement","dataList","disablePortal","onToggle","onClick","keepOpened","disabled","expanded","defaultExpanded","category","others","open","setOpen","useControlled","Boolean","focusNodes","getPrevNextFocus","setId","listId","handleClose","event","handleKeyDown","isKeypress","keyboardCodes","Tab","node","shiftKey","prevFocus","nextFocus","setTimeout","focus","preventDefault","setFocusToContent","containerRef","getElementsByTagName","headerComponent","StyledButton","variant","clsx","dropDownMenuClasses","iconSelected","$open","children","_jsx","MoreOptionsVertical","color","undefined","condensed","useMemo","every","el","popperStyle","style","zIndex","theme","zIndices","tooltip","width","position","ClassNames","css","cx","StyledBaseDropDown","container","root","display","outlineStyles","baseContainer","component","variableWidth","e","s","onContainerCreation","popperProps","StyledPanel","HvList","values","selectable","item","onKeyDown","menuList","withId"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ const React = require("react");
|
|
|
4
4
|
const FilterGroupContext = require("../FilterGroupContext.cjs");
|
|
5
5
|
const Counter_styles = require("./Counter.styles.cjs");
|
|
6
6
|
const react = require("@emotion/react");
|
|
7
|
-
const clsx = require("clsx");
|
|
8
7
|
const counterClasses = require("./counterClasses.cjs");
|
|
9
8
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
10
9
|
const getExistingFiltersById = (idx, filterValues, filterOptions) => {
|
|
@@ -39,11 +38,12 @@ const HvFilterGroupCounter = ({
|
|
|
39
38
|
const totalCounter = options.reduce((acc, option) => acc + option.data.length, 0);
|
|
40
39
|
return /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, {
|
|
41
40
|
children: ({
|
|
42
|
-
css
|
|
41
|
+
css,
|
|
42
|
+
cx
|
|
43
43
|
}) => /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
44
|
-
className:
|
|
44
|
+
className: cx(counterClasses.default.root, css(Counter_styles.styles.root), className, classes == null ? void 0 : classes.root),
|
|
45
45
|
children: [partialCounter > 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", {
|
|
46
|
-
className:
|
|
46
|
+
className: cx(counterClasses.default.partialCounter, css(Counter_styles.styles.partialCounter), classes == null ? void 0 : classes.partialCounter),
|
|
47
47
|
children: partialCounter
|
|
48
48
|
}) : partialCounter, ` / ${totalCounter}`]
|
|
49
49
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.cjs","sources":["../../../../../src/components/FilterGroup/Counter/Counter.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { styles } from \"./Counter.styles\";\nimport { HvFilterGroupFilters, HvFilterGroupValue } from \"../FilterGroup\";\nimport { ClassNames } from \"@emotion/react\";\nimport
|
|
1
|
+
{"version":3,"file":"Counter.cjs","sources":["../../../../../src/components/FilterGroup/Counter/Counter.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { styles } from \"./Counter.styles\";\nimport { HvFilterGroupFilters, HvFilterGroupValue } from \"../FilterGroup\";\nimport { ClassNames } from \"@emotion/react\";\nimport filterGroupCounterClasses, {\n HvFilterGroupCounterClasses,\n} from \"./counterClasses\";\n\nexport interface HvFilterGroupCounterProps {\n className?: string;\n id?: string;\n classes?: HvFilterGroupCounterClasses;\n}\n\nconst getExistingFiltersById = (\n idx: number,\n filterValues: HvFilterGroupValue,\n filterOptions: HvFilterGroupFilters\n) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nexport const HvFilterGroupCounter = ({\n className,\n id,\n classes,\n}: HvFilterGroupCounterProps) => {\n const {\n filterOptions,\n filterValues = [],\n appliedFilters = [],\n } = useContext(HvFilterGroupContext);\n\n const options =\n id && filterOptions.find((option) => option.id === id)\n ? ([\n filterOptions.find((option) => option.id === id),\n ] as HvFilterGroupFilters)\n : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters\n ?.flat()\n ?.filter((elem) => elem !== undefined)\n .forEach((fg, i) => {\n groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);\n });\n\n const partialCounter = id\n ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0\n : groupsCounter;\n\n const totalCounter = options.reduce(\n (acc, option) => acc + option.data.length,\n 0\n );\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n filterGroupCounterClasses.root,\n css(styles.root),\n className,\n classes?.root\n )}\n >\n {partialCounter > 0 ? (\n <p\n className={cx(\n filterGroupCounterClasses.partialCounter,\n css(styles.partialCounter),\n classes?.partialCounter\n )}\n >\n {partialCounter}\n </p>\n ) : (\n partialCounter\n )}\n {` / ${totalCounter}`}\n </div>\n )}\n </ClassNames>\n );\n};\n"],"names":["getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","HvFilterGroupCounter","className","classes","appliedFilters","useContext","HvFilterGroupContext","options","option","optionIdx","findIndex","groupsCounter","flat","filter","elem","undefined","fg","i","partialCounter","totalCounter","reduce","acc","length","ClassNames","children","css","cx","filterGroupCounterClasses","root","styles"],"mappings":";;;;;;;;AAeA,MAAMA,yBAAyBA,CAC7BC,KACAC,cACAC,kBACG;;AACH,MAAIC,QAAQ;AACCH,qBAAAA,GAAG,MAAHA,mBAAMI,QAASC,CAAO,OAAA;;AAC7BH,SAAAA,MAAAA,cAAcF,GAAG,MAAjBE,gBAAAA,IAAoBI,KAAKC,KAAMC,CAAMA,MAAAA,EAAEC,OAAOJ,KAAK;AAC5C,eAAA;AAAA,IACX;AAAA,EAAA;AAEKF,SAAAA;AACT;AAEO,MAAMO,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAF;AAAAA,EACAG;AACyB,MAAM;;AACzB,QAAA;AAAA,IACJV;AAAAA,IACAD,eAAe,CAAE;AAAA,IACjBY,iBAAiB,CAAA;AAAA,EAAA,IACfC,MAAAA,WAAWC,mBAAAA,oBAAoB;AAEnC,QAAMC,UACJP,MAAMP,cAAcK,KAAMU,CAAAA,WAAWA,OAAOR,OAAOA,EAAE,IAChD,CACCP,cAAcK,KAAMU,CAAAA,WAAWA,OAAOR,OAAOA,EAAE,CAAC,IAElDP;AACN,QAAMgB,YAAYhB,cAAciB,UAAWF,CAAWA,WAAAA,OAAOR,OAAOA,EAAE;AAEtE,MAAIW,gBAAgB;AAEhBC,yDAAAA,WAAAA,mBACAC,OAAQC,CAASA,SAAAA,SAASC,QAC3BpB,QAAQ,CAACqB,IAAIC,MAAM;AACD3B,qBAAAA,uBAAuB2B,GAAGzB,cAAcC,aAAa;AAAA,EAAA;AAG1E,QAAMyB,iBAAiBlB,KACnBV,uBAAuBmB,WAAWjB,cAAcC,aAAa,KAAK,IAClEkB;AAEEQ,QAAAA,eAAeZ,QAAQa,OAC3B,CAACC,KAAKb,WAAWa,MAAMb,OAAOX,KAAKyB,QACnC,CAAC;AAGH,wCACGC,MAAAA,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,sCACP,OAAA;AAAA,MACExB,WAAWwB,GACTC,uBAA0BC,MAC1BH,IAAII,sBAAOD,IAAI,GACf1B,WACAC,mCAASyB,IAAI;AAAA,MACbJ,UAEDN,CAAAA,iBAAiB,mCAChB,KAAA;AAAA,QACEhB,WAAWwB,GACTC,eAA0BT,QAAAA,gBAC1BO,IAAII,eAAAA,OAAOX,cAAc,GACzBf,mCAASe,cAAc;AAAA,QACvBM,UAEDN;AAAAA,MAAc,CAAA,IAGjBA,gBAEA,MAAKC,cAAc;AAAA,IAAA,CAAA;AAAA,EAAA,CAGd;AAEjB;;"}
|
|
@@ -5,7 +5,6 @@ const filterContentClasses = require("./filterContentClasses.cjs");
|
|
|
5
5
|
const FilterGroupContext = require("../FilterGroupContext.cjs");
|
|
6
6
|
const React = require("react");
|
|
7
7
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
8
|
-
const clsx = require("clsx");
|
|
9
8
|
const react = require("@emotion/react");
|
|
10
9
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
11
10
|
const LeftPanel = require("../LeftPanel/LeftPanel.cjs");
|
|
@@ -84,15 +83,16 @@ const HvFilterGroupContent = ({
|
|
|
84
83
|
}), [labels == null ? void 0 : labels.placeholder]);
|
|
85
84
|
return /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, {
|
|
86
85
|
children: ({
|
|
87
|
-
css
|
|
86
|
+
css,
|
|
87
|
+
cx
|
|
88
88
|
}) => /* @__PURE__ */ jsxRuntime.jsxs(BaseDropdown.HvBaseDropdown, {
|
|
89
89
|
id: setId.setId(id, "dropdown"),
|
|
90
90
|
role: "combobox",
|
|
91
91
|
classes: {
|
|
92
|
-
root:
|
|
93
|
-
panel:
|
|
94
|
-
selection:
|
|
95
|
-
header:
|
|
92
|
+
root: cx(filterContentClasses.default.dropdown, classes == null ? void 0 : classes.dropdown),
|
|
93
|
+
panel: cx(filterContentClasses.default.panel, css(FilterContent_styles.styles.panel), classes == null ? void 0 : classes.panel),
|
|
94
|
+
selection: cx(filterContentClasses.default.baseDropdownSelection, css(FilterContent_styles.styles.baseDropdownSelection), classes == null ? void 0 : classes.baseDropdownSelection),
|
|
95
|
+
header: cx(filterContentClasses.default.header, css(FilterContent_styles.styles.header), classes == null ? void 0 : classes.header)
|
|
96
96
|
},
|
|
97
97
|
disabled,
|
|
98
98
|
disablePortal,
|
|
@@ -121,22 +121,22 @@ const HvFilterGroupContent = ({
|
|
|
121
121
|
ref: focusTarget,
|
|
122
122
|
tabIndex: -1
|
|
123
123
|
}), /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
124
|
-
className:
|
|
124
|
+
className: cx(filterContentClasses.default.root, css(FilterContent_styles.styles.root), classes == null ? void 0 : classes.root),
|
|
125
125
|
style: {
|
|
126
126
|
height
|
|
127
127
|
},
|
|
128
128
|
children: [/* @__PURE__ */ jsxRuntime.jsx(LeftPanel.HvFilterGroupLeftPanel, {
|
|
129
129
|
id,
|
|
130
|
-
className:
|
|
130
|
+
className: cx(filterContentClasses.default.leftSidePanel, css(FilterContent_styles.styles.leftSidePanel), classes == null ? void 0 : classes.leftSidePanel),
|
|
131
131
|
emptyElement: leftEmptyElement
|
|
132
132
|
}), /* @__PURE__ */ jsxRuntime.jsx(RightPanel.HvFilterGroupRightPanel, {
|
|
133
133
|
id,
|
|
134
|
-
className:
|
|
134
|
+
className: cx(filterContentClasses.default.rightSidePanel, css(FilterContent_styles.styles.rightSidePanel), classes == null ? void 0 : classes.rightSidePanel),
|
|
135
135
|
emptyElement: rightEmptyElement,
|
|
136
136
|
labels
|
|
137
137
|
})]
|
|
138
138
|
}), /* @__PURE__ */ jsxRuntime.jsxs(ActionBar.HvActionBar, {
|
|
139
|
-
className:
|
|
139
|
+
className: cx(filterContentClasses.default.actionBar, css(FilterContent_styles.styles.actionBar), classes == null ? void 0 : classes.actionBar),
|
|
140
140
|
children: [/* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, {
|
|
141
141
|
id: setId.setId(id, "clearFilters-button"),
|
|
142
142
|
disabled: defaultValue ? (defaultValue == null ? void 0 : defaultValue.flat().length) === (filterValues == null ? void 0 : filterValues.flat().length) : (filterValues == null ? void 0 : filterValues.flat().length) === 0,
|
|
@@ -145,14 +145,14 @@ const HvFilterGroupContent = ({
|
|
|
145
145
|
children: labels == null ? void 0 : labels.clearLabel
|
|
146
146
|
}), /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
147
147
|
"aria-hidden": "true",
|
|
148
|
-
className:
|
|
148
|
+
className: cx(filterContentClasses.default.space, css(FilterContent_styles.styles.space), classes == null ? void 0 : classes.space),
|
|
149
149
|
children: " "
|
|
150
150
|
}), /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, {
|
|
151
151
|
id: setId.setId(id, "apply-button"),
|
|
152
152
|
disabled: applyDisabled,
|
|
153
153
|
variant: activeTheme == null ? void 0 : activeTheme.filterGroup.applyButtonVariant,
|
|
154
154
|
onClick: onApplyHandler,
|
|
155
|
-
className:
|
|
155
|
+
className: cx(filterContentClasses.default.applyButton, css(FilterContent_styles.styles.applyButton), classes == null ? void 0 : classes.applyButton),
|
|
156
156
|
children: labels == null ? void 0 : labels.applyLabel
|
|
157
157
|
}), /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, {
|
|
158
158
|
id: setId.setId(id, "cancel-button"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterContent.cjs","sources":["../../../../../src/components/FilterGroup/FilterContent/FilterContent.tsx"],"sourcesContent":["import {\n HvActionBar,\n HvBaseDropdown,\n HvBaseDropdownProps,\n HvButton,\n HvButtonVariant,\n HvFormStatus,\n HvTypography,\n} from \"@core/components\";\nimport { setId } from \"@core/utils\";\nimport {\n HvFilterGroupLabels,\n HvFilterGroupValue,\n HvFilterGroupHorizontalPlacement,\n} from \"../FilterGroup\";\nimport { styles } from \"./FilterContent.styles\";\nimport filterGroupContentClasses, {\n HvFilterGroupContentClasses,\n} from \"./filterContentClasses\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { useContext, useMemo, useRef, useState } from \"react\";\nimport { Filters } from \"@hitachivantara/uikit-react-icons\";\nimport { clsx } from \"clsx\";\nimport { HvFilterGroupCounter } from \"../Counter\";\nimport { ClassNames } from \"@emotion/react\";\nimport { HvFilterGroupLeftPanel } from \"../LeftPanel\";\nimport { HvFilterGroupRightPanel } from \"../RightPanel\";\nimport { useTheme } from \"@core/hooks\";\n\nexport interface HvFilterGroupContentProps\n extends Omit<HvBaseDropdownProps, \"onChange\"> {\n description?: React.ReactNode;\n status?: HvFormStatus;\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement>,\n value?: HvFilterGroupValue\n ) => void;\n onCancel?: (event: React.MouseEvent<HTMLButtonElement> | Event) => void;\n onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n labels?: HvFilterGroupLabels;\n horizontalPlacement?: HvFilterGroupHorizontalPlacement;\n disablePortal?: boolean;\n escapeWithReference?: boolean;\n height?: string | number;\n leftEmptyElement?: React.ReactNode;\n rightEmptyElement?: React.ReactNode;\n disabled?: boolean;\n classes?: HvFilterGroupContentClasses;\n}\n\nexport const HvFilterGroupContent = ({\n id,\n status,\n disabled = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n onChange,\n onCancel,\n onClear,\n labels,\n horizontalPlacement = \"right\",\n disablePortal = true,\n escapeWithReference = true,\n height,\n leftEmptyElement,\n rightEmptyElement,\n classes,\n ...others\n}: HvFilterGroupContentProps) => {\n const { activeTheme } = useTheme();\n\n const [filterGroupOpen, setFilterGroupOpen] = useState<boolean>(false);\n\n const {\n defaultValue,\n filterValues,\n rollbackFilters,\n clearFilters,\n applyFilters,\n applyDisabled,\n } = useContext(HvFilterGroupContext);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const onApplyHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n applyFilters();\n onChange?.(event, filterValues);\n setFilterGroupOpen(false);\n };\n\n const onCancelHandler = (\n event: React.MouseEvent<HTMLButtonElement> | Event\n ) => {\n rollbackFilters();\n onCancel?.(event);\n setFilterGroupOpen(false);\n };\n\n const onClearHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n clearFilters();\n onClear?.(event);\n };\n\n const handleToggle = (event: Event, open: boolean) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (event === null) return;\n setFilterGroupOpen(open);\n if (!open) onCancelHandler?.(event);\n };\n\n const Header = useMemo(\n () => (\n <>\n <Filters />\n <HvTypography variant=\"label\">{labels?.placeholder}</HvTypography>\n </>\n ),\n [labels?.placeholder]\n );\n\n return (\n <ClassNames>\n {({ css }) => (\n <HvBaseDropdown\n id={setId(id, \"dropdown\")}\n role=\"combobox\"\n classes={{\n root: clsx(classes?.dropdown, filterGroupContentClasses.dropdown),\n panel: clsx(\n classes?.panel,\n filterGroupContentClasses.panel,\n css(styles.panel)\n ),\n selection: clsx(\n classes?.baseDropdownSelection,\n filterGroupContentClasses.baseDropdownSelection,\n css(styles.baseDropdownSelection)\n ),\n header: clsx(\n classes?.header,\n filterGroupContentClasses.header,\n css(styles.header)\n ),\n }}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={filterGroupOpen}\n onToggle={handleToggle}\n onClickOutside={onCancelHandler}\n onContainerCreation={focusOnContainer}\n placeholder={Header}\n adornment={<HvFilterGroupCounter />}\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-invalid={status === \"invalid\" ? true : undefined}\n aria-errormessage={\n status === \"invalid\" ? setId(id, \"error\") : undefined\n }\n aria-describedby={\n [description && setId(id, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...others}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <div\n className={clsx(\n classes?.root,\n filterGroupContentClasses.root,\n css(styles.root)\n )}\n style={{ height }}\n >\n <HvFilterGroupLeftPanel\n id={id}\n className={clsx(\n classes?.leftSidePanel,\n filterGroupContentClasses.leftSidePanel,\n css(styles.leftSidePanel)\n )}\n emptyElement={leftEmptyElement}\n />\n <HvFilterGroupRightPanel\n id={id}\n className={clsx(\n classes?.rightSidePanel,\n filterGroupContentClasses.rightSidePanel,\n css(styles.rightSidePanel)\n )}\n emptyElement={rightEmptyElement}\n labels={labels}\n />\n </div>\n <HvActionBar\n className={clsx(\n classes?.actionBar,\n filterGroupContentClasses.actionBar,\n css(styles.actionBar)\n )}\n >\n <HvButton\n id={setId(id, \"clearFilters-button\")}\n disabled={\n defaultValue\n ? defaultValue?.flat().length === filterValues?.flat().length\n : filterValues?.flat().length === 0\n }\n variant=\"secondaryGhost\"\n onClick={onClearHandler}\n >\n {labels?.clearLabel}\n </HvButton>\n <div\n aria-hidden=\"true\"\n className={clsx(\n classes?.space,\n filterGroupContentClasses.space,\n css(styles.space)\n )}\n >\n \n </div>\n <HvButton\n id={setId(id, \"apply-button\")}\n disabled={applyDisabled}\n variant={\n activeTheme?.filterGroup.applyButtonVariant as HvButtonVariant\n }\n onClick={onApplyHandler}\n className={clsx(\n filterGroupContentClasses.applyButton,\n css(styles.applyButton),\n classes?.applyButton\n )}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"cancel-button\")}\n variant={\n activeTheme?.filterGroup.cancelButtonVariant as HvButtonVariant\n }\n onClick={onCancelHandler}\n >\n {labels?.cancelLabel}\n </HvButton>\n </HvActionBar>\n </HvBaseDropdown>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvFilterGroupContent","id","status","disabled","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","labels","horizontalPlacement","disablePortal","escapeWithReference","height","leftEmptyElement","rightEmptyElement","classes","others","activeTheme","useTheme","filterGroupOpen","setFilterGroupOpen","useState","defaultValue","filterValues","rollbackFilters","clearFilters","applyFilters","applyDisabled","useContext","HvFilterGroupContext","focusTarget","useRef","focusOnContainer","current","focus","onApplyHandler","event","onCancelHandler","onClearHandler","handleToggle","open","Header","useMemo","_jsxs","_Fragment","children","Filters","HvTypography","variant","placeholder","ClassNames","css","HvBaseDropdown","setId","role","root","clsx","dropdown","filterGroupContentClasses","panel","styles","selection","baseDropdownSelection","header","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","adornment","_jsx","HvFilterGroupCounter","popperProps","modifiers","name","enabled","undefined","join","trim","ref","tabIndex","className","style","HvFilterGroupLeftPanel","leftSidePanel","emptyElement","HvFilterGroupRightPanel","rightSidePanel","HvActionBar","actionBar","HvButton","flat","length","onClick","clearLabel","space","filterGroup","applyButtonVariant","applyButton","applyLabel","cancelButtonVariant","cancelLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterContent.cjs","sources":["../../../../../src/components/FilterGroup/FilterContent/FilterContent.tsx"],"sourcesContent":["import {\n HvActionBar,\n HvBaseDropdown,\n HvBaseDropdownProps,\n HvButton,\n HvButtonVariant,\n HvFormStatus,\n HvTypography,\n} from \"@core/components\";\nimport { setId } from \"@core/utils\";\nimport {\n HvFilterGroupLabels,\n HvFilterGroupValue,\n HvFilterGroupHorizontalPlacement,\n} from \"../FilterGroup\";\nimport { styles } from \"./FilterContent.styles\";\nimport filterGroupContentClasses, {\n HvFilterGroupContentClasses,\n} from \"./filterContentClasses\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { useContext, useMemo, useRef, useState } from \"react\";\nimport { Filters } from \"@hitachivantara/uikit-react-icons\";\nimport { HvFilterGroupCounter } from \"../Counter\";\nimport { ClassNames } from \"@emotion/react\";\nimport { HvFilterGroupLeftPanel } from \"../LeftPanel\";\nimport { HvFilterGroupRightPanel } from \"../RightPanel\";\nimport { useTheme } from \"@core/hooks\";\n\nexport interface HvFilterGroupContentProps\n extends Omit<HvBaseDropdownProps, \"onChange\"> {\n description?: React.ReactNode;\n status?: HvFormStatus;\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement>,\n value?: HvFilterGroupValue\n ) => void;\n onCancel?: (event: React.MouseEvent<HTMLButtonElement> | Event) => void;\n onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n labels?: HvFilterGroupLabels;\n horizontalPlacement?: HvFilterGroupHorizontalPlacement;\n disablePortal?: boolean;\n escapeWithReference?: boolean;\n height?: string | number;\n leftEmptyElement?: React.ReactNode;\n rightEmptyElement?: React.ReactNode;\n disabled?: boolean;\n classes?: HvFilterGroupContentClasses;\n}\n\nexport const HvFilterGroupContent = ({\n id,\n status,\n disabled = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n onChange,\n onCancel,\n onClear,\n labels,\n horizontalPlacement = \"right\",\n disablePortal = true,\n escapeWithReference = true,\n height,\n leftEmptyElement,\n rightEmptyElement,\n classes,\n ...others\n}: HvFilterGroupContentProps) => {\n const { activeTheme } = useTheme();\n\n const [filterGroupOpen, setFilterGroupOpen] = useState<boolean>(false);\n\n const {\n defaultValue,\n filterValues,\n rollbackFilters,\n clearFilters,\n applyFilters,\n applyDisabled,\n } = useContext(HvFilterGroupContext);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const onApplyHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n applyFilters();\n onChange?.(event, filterValues);\n setFilterGroupOpen(false);\n };\n\n const onCancelHandler = (\n event: React.MouseEvent<HTMLButtonElement> | Event\n ) => {\n rollbackFilters();\n onCancel?.(event);\n setFilterGroupOpen(false);\n };\n\n const onClearHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n clearFilters();\n onClear?.(event);\n };\n\n const handleToggle = (event: Event, open: boolean) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (event === null) return;\n setFilterGroupOpen(open);\n if (!open) onCancelHandler?.(event);\n };\n\n const Header = useMemo(\n () => (\n <>\n <Filters />\n <HvTypography variant=\"label\">{labels?.placeholder}</HvTypography>\n </>\n ),\n [labels?.placeholder]\n );\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvBaseDropdown\n id={setId(id, \"dropdown\")}\n role=\"combobox\"\n classes={{\n root: cx(filterGroupContentClasses.dropdown, classes?.dropdown),\n panel: cx(\n filterGroupContentClasses.panel,\n css(styles.panel),\n classes?.panel\n ),\n selection: cx(\n filterGroupContentClasses.baseDropdownSelection,\n css(styles.baseDropdownSelection),\n classes?.baseDropdownSelection\n ),\n header: cx(\n filterGroupContentClasses.header,\n css(styles.header),\n classes?.header\n ),\n }}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={filterGroupOpen}\n onToggle={handleToggle}\n onClickOutside={onCancelHandler}\n onContainerCreation={focusOnContainer}\n placeholder={Header}\n adornment={<HvFilterGroupCounter />}\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-invalid={status === \"invalid\" ? true : undefined}\n aria-errormessage={\n status === \"invalid\" ? setId(id, \"error\") : undefined\n }\n aria-describedby={\n [description && setId(id, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...others}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <div\n className={cx(\n filterGroupContentClasses.root,\n css(styles.root),\n classes?.root\n )}\n style={{ height }}\n >\n <HvFilterGroupLeftPanel\n id={id}\n className={cx(\n filterGroupContentClasses.leftSidePanel,\n css(styles.leftSidePanel),\n classes?.leftSidePanel\n )}\n emptyElement={leftEmptyElement}\n />\n <HvFilterGroupRightPanel\n id={id}\n className={cx(\n filterGroupContentClasses.rightSidePanel,\n css(styles.rightSidePanel),\n classes?.rightSidePanel\n )}\n emptyElement={rightEmptyElement}\n labels={labels}\n />\n </div>\n <HvActionBar\n className={cx(\n filterGroupContentClasses.actionBar,\n css(styles.actionBar),\n classes?.actionBar\n )}\n >\n <HvButton\n id={setId(id, \"clearFilters-button\")}\n disabled={\n defaultValue\n ? defaultValue?.flat().length === filterValues?.flat().length\n : filterValues?.flat().length === 0\n }\n variant=\"secondaryGhost\"\n onClick={onClearHandler}\n >\n {labels?.clearLabel}\n </HvButton>\n <div\n aria-hidden=\"true\"\n className={cx(\n filterGroupContentClasses.space,\n css(styles.space),\n classes?.space\n )}\n >\n \n </div>\n <HvButton\n id={setId(id, \"apply-button\")}\n disabled={applyDisabled}\n variant={\n activeTheme?.filterGroup.applyButtonVariant as HvButtonVariant\n }\n onClick={onApplyHandler}\n className={cx(\n filterGroupContentClasses.applyButton,\n css(styles.applyButton),\n classes?.applyButton\n )}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"cancel-button\")}\n variant={\n activeTheme?.filterGroup.cancelButtonVariant as HvButtonVariant\n }\n onClick={onCancelHandler}\n >\n {labels?.cancelLabel}\n </HvButton>\n </HvActionBar>\n </HvBaseDropdown>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvFilterGroupContent","id","status","disabled","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","labels","horizontalPlacement","disablePortal","escapeWithReference","height","leftEmptyElement","rightEmptyElement","classes","others","activeTheme","useTheme","filterGroupOpen","setFilterGroupOpen","useState","defaultValue","filterValues","rollbackFilters","clearFilters","applyFilters","applyDisabled","useContext","HvFilterGroupContext","focusTarget","useRef","focusOnContainer","current","focus","onApplyHandler","event","onCancelHandler","onClearHandler","handleToggle","open","Header","useMemo","_jsxs","_Fragment","children","Filters","HvTypography","variant","placeholder","ClassNames","css","cx","HvBaseDropdown","setId","role","root","filterGroupContentClasses","dropdown","panel","styles","selection","baseDropdownSelection","header","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","adornment","_jsx","HvFilterGroupCounter","popperProps","modifiers","name","enabled","undefined","join","trim","ref","tabIndex","className","style","HvFilterGroupLeftPanel","leftSidePanel","emptyElement","HvFilterGroupRightPanel","rightSidePanel","HvActionBar","actionBar","HvButton","flat","length","onClick","clearLabel","space","filterGroup","applyButtonVariant","applyButton","applyLabel","cancelButtonVariant","cancelLabel"],"mappings":"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"}
|