@hitachivantara/uikit-react-core 5.37.2 → 5.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs.map +1 -1
  2. package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs.map +1 -1
  3. package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs.map +1 -1
  4. package/dist/cjs/components/Calendar/model.cjs.map +1 -1
  5. package/dist/cjs/components/Drawer/Drawer.cjs +2 -5
  6. package/dist/cjs/components/Drawer/Drawer.cjs.map +1 -1
  7. package/dist/cjs/components/Drawer/Drawer.styles.cjs +0 -2
  8. package/dist/cjs/components/Drawer/Drawer.styles.cjs.map +1 -1
  9. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +11 -3
  10. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
  11. package/dist/cjs/components/Header/Navigation/MenuBar/Bar.cjs.map +1 -1
  12. package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.cjs.map +1 -1
  13. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
  14. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  15. package/dist/cjs/components/Pagination/Pagination.cjs +5 -5
  16. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  17. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs +1 -3
  18. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs.map +1 -1
  19. package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs +4 -5
  20. package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs.map +1 -1
  21. package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +7 -9
  22. package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
  23. package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs +7 -4
  24. package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -1
  25. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs +3 -5
  26. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs.map +1 -1
  27. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs +6 -10
  28. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -1
  29. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +13 -17
  30. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
  31. package/dist/cjs/components/Table/TableBody/TableBody.cjs +1 -1
  32. package/dist/cjs/components/Table/TableBody/TableBody.cjs.map +1 -1
  33. package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
  34. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  35. package/dist/cjs/components/Typography/Typography.cjs +7 -0
  36. package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
  37. package/dist/cjs/hooks/useControlled.cjs.map +1 -1
  38. package/dist/cjs/hooks/useImageLoaded.cjs +1 -1
  39. package/dist/cjs/hooks/useImageLoaded.cjs.map +1 -1
  40. package/dist/cjs/utils/IconButton.cjs +12 -0
  41. package/dist/cjs/utils/IconButton.cjs.map +1 -0
  42. package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  43. package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
  44. package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
  45. package/dist/esm/components/Calendar/model.js.map +1 -1
  46. package/dist/esm/components/Drawer/Drawer.js +2 -5
  47. package/dist/esm/components/Drawer/Drawer.js.map +1 -1
  48. package/dist/esm/components/Drawer/Drawer.styles.js +0 -2
  49. package/dist/esm/components/Drawer/Drawer.styles.js.map +1 -1
  50. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +11 -3
  51. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  52. package/dist/esm/components/Header/Navigation/MenuBar/Bar.js.map +1 -1
  53. package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
  54. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  55. package/dist/esm/components/Input/Input.js.map +1 -1
  56. package/dist/esm/components/Pagination/Pagination.js +5 -5
  57. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  58. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js +1 -3
  59. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +1 -1
  60. package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js +4 -5
  61. package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js.map +1 -1
  62. package/dist/esm/components/QueryBuilder/Rule/Rule.js +8 -10
  63. package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
  64. package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js +7 -4
  65. package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -1
  66. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js +3 -5
  67. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +1 -1
  68. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js +6 -10
  69. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
  70. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +13 -17
  71. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
  72. package/dist/esm/components/Table/TableBody/TableBody.js +1 -1
  73. package/dist/esm/components/Table/TableBody/TableBody.js.map +1 -1
  74. package/dist/esm/components/Tooltip/Tooltip.js +1 -1
  75. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  76. package/dist/esm/components/Typography/Typography.js +7 -0
  77. package/dist/esm/components/Typography/Typography.js.map +1 -1
  78. package/dist/esm/hooks/useControlled.js.map +1 -1
  79. package/dist/esm/hooks/useImageLoaded.js +1 -1
  80. package/dist/esm/hooks/useImageLoaded.js.map +1 -1
  81. package/dist/esm/utils/IconButton.js +12 -0
  82. package/dist/esm/utils/IconButton.js.map +1 -0
  83. package/dist/types/index.d.ts +49 -48
  84. package/package.json +5 -5
  85. package/dist/cjs/components/Pagination/ButtonIconTooltip.cjs +0 -16
  86. package/dist/cjs/components/Pagination/ButtonIconTooltip.cjs.map +0 -1
  87. package/dist/esm/components/Pagination/ButtonIconTooltip.js +0 -16
  88. package/dist/esm/components/Pagination/ButtonIconTooltip.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarHeader.cjs","sources":["../../../../../src/components/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import { useState, useEffect, useContext } from \"react\";\nimport dayjs from \"dayjs\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport localizedFormat from \"dayjs/plugin/localizedFormat\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\n\nimport {\n HvFormElementContext,\n HvFormElementValueContext,\n HvFormElementDescriptorsContext,\n} from \"@core/components/Forms\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { setId } from \"@core/utils/setId\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useDefaultProps } from \"@core/hooks\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { isRange, isSameDay, formatToLocale, isDate } from \"../utils\";\nimport { DateRangeProp } from \"../types\";\nimport { staticClasses, useClasses } from \"./CalendarHeader.styles\";\n\nexport { staticClasses as calendarHeaderClasses };\n\nexport type HvCalendarHeaderClasses = ExtractNames<typeof useClasses>;\n\ndayjs.extend(localeData);\ndayjs.extend(localizedFormat);\ndayjs.extend(customParseFormat);\n\nexport const HvCalendarHeader = (props: HvCalendarHeaderProps) => {\n const {\n id,\n value,\n locale = \"en-US\",\n classes: classesProp,\n onChange,\n showEndDate,\n showDayOfWeek = false,\n onFocus,\n invalidDateLabel = \"Invalid Date\",\n } = useDefaultProps(\"HvCalendarHeader\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const { elementId } = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const { label } = useContext(HvFormElementDescriptorsContext);\n\n let localValue: string | Date | DateRangeProp | undefined =\n value ?? elementValue ?? \"\";\n if (isRange(localValue)) {\n localValue = showEndDate ? localValue.endDate : localValue.startDate;\n }\n\n const [dateValue, setDateValue] = useState<\n string | Date | DateRangeProp | undefined\n >(localValue);\n const [editedValue, setEditedValue] = useState<string | null>(null);\n const [displayValue, setDisplayValue] = useState(\"\");\n const [weekdayDisplay, setWeekdayDisplay] = useState(\"\");\n\n const localId = id ?? setId(elementId, \"calendarHeader\");\n\n const inputValue = editedValue ?? displayValue;\n const localeFormat = dayjs().locale(locale).localeData().longDateFormat(\"L\");\n\n const [isValidValue, setIsValidValue] = useState(\n inputValue.length === 0 || (!!inputValue && dayjs(localValue).isValid())\n );\n\n const validateInput = (incomingValid) =>\n incomingValid === undefined || dayjs(incomingValid).isValid();\n\n useEffect(() => {\n const valid = validateInput(localValue);\n setIsValidValue(valid);\n if (valid) {\n if (!localValue) {\n setDisplayValue(\"\");\n setEditedValue(null);\n setWeekdayDisplay(\"\");\n return;\n }\n const weekday = new Intl.DateTimeFormat(locale, {\n weekday: \"short\",\n }).format(isDate(localValue) ? localValue : 0);\n setDisplayValue(formatToLocale(localValue, locale));\n setEditedValue(null);\n setWeekdayDisplay(weekday);\n }\n }, [localValue, locale]);\n\n const handleNewDate = (event, date) => {\n // attempt to format in locale data, or fallback to default\n const localeParsedDate = dayjs(date, localeFormat);\n\n const isValidInput = localeParsedDate.isValid();\n const dateParsed = isValidInput\n ? localeParsedDate.toDate()\n : dayjs(date).toDate();\n // prevent extra updates\n if (!isSameDay(dateParsed, dateValue)) {\n setDateValue(dateParsed);\n onChange?.(event, dateParsed);\n }\n\n setIsValidValue(isValidInput);\n if (isValidInput) {\n setEditedValue(null);\n }\n };\n\n const onBlurHandler: HvInputProps[\"onBlur\"] = (event) => {\n if (editedValue == null) return;\n if (editedValue === \"\") {\n setIsValidValue(true);\n setEditedValue(null);\n return;\n }\n handleNewDate(event, editedValue);\n };\n\n const keyDownHandler: HvInputProps[\"onKeyDown\"] = (event) => {\n if (!isKey(event, \"Enter\") || editedValue == null || editedValue === \"\")\n return;\n event.preventDefault();\n\n handleNewDate(event, editedValue);\n };\n\n const onFocusHandler: HvInputProps[\"onFocus\"] = (event) => {\n if (!localValue) return;\n const formattedDate =\n isValidValue && isDate(localValue)\n ? dayjs(localValue).locale(locale).format(\"L\")\n : editedValue;\n setEditedValue(formattedDate);\n onFocus?.(event, formattedDate);\n };\n\n const onChangeHandler: HvInputProps[\"onChange\"] = (event, val) => {\n setEditedValue(val);\n };\n\n const isInvalid = !isValidValue && inputValue !== \"\";\n\n // This component needs to be further refactored\n // It's not possible to clear the date\n // In a new major there's no need for all these classes\n return (\n <div\n id={localId}\n className={cx(classes.root, {\n [classes.invalid]: isInvalid,\n })}\n >\n {showDayOfWeek && (\n <HvTypography className={classes.headerDayOfWeek}>\n {weekdayDisplay || \"\\u00A0\"}\n </HvTypography>\n )}\n <HvInput\n type=\"text\"\n id={setId(localId, \"header-input\")}\n className={classes.headerDate}\n classes={{\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n error: classes.invalidMessageStyling,\n }}\n placeholder={localeFormat}\n value={inputValue}\n aria-labelledby={label?.[0]?.id}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onKeyDown={keyDownHandler}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={invalidDateLabel}\n />\n </div>\n );\n};\n\n// TODO: refactor this out\nHvCalendarHeader.formElementType = \"HvCalendarHeader\";\n\nexport interface HvCalendarHeaderProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvCalendarHeaderClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The text to be shown on the main part of the header.\n */\n value?: string | Date | DateRangeProp;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp\n ) => void;\n /**\n * Callback to handle input onFocus.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n formattedDate: string | null\n ) => void;\n /**\n * Indicates if header should display end date in a date range.\n */\n showEndDate?: boolean;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n"],"names":["dayjs","extend","localeData","localizedFormat","customParseFormat","HvCalendarHeader","props","id","value","locale","classes","classesProp","onChange","showEndDate","showDayOfWeek","onFocus","invalidDateLabel","useDefaultProps","cx","useClasses","elementId","useContext","HvFormElementContext","elementValue","HvFormElementValueContext","label","HvFormElementDescriptorsContext","localValue","isRange","endDate","startDate","dateValue","setDateValue","useState","editedValue","setEditedValue","displayValue","setDisplayValue","weekdayDisplay","setWeekdayDisplay","localId","setId","inputValue","localeFormat","longDateFormat","isValidValue","setIsValidValue","length","isValid","validateInput","incomingValid","undefined","useEffect","valid","weekday","Intl","DateTimeFormat","format","isDate","formatToLocale","handleNewDate","event","date","localeParsedDate","isValidInput","dateParsed","toDate","isSameDay","onBlurHandler","keyDownHandler","isKey","preventDefault","onFocusHandler","formattedDate","onChangeHandler","val","isInvalid","root","invalid","HvTypography","headerDayOfWeek","jsx","HvInput","headerDate","input","inputBorderContainer","error","invalidMessageStyling","formElementType"],"mappings":"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"}
1
+ {"version":3,"file":"CalendarHeader.cjs","sources":["../../../../../src/components/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import { useState, useEffect, useContext } from \"react\";\nimport dayjs from \"dayjs\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport localizedFormat from \"dayjs/plugin/localizedFormat\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\n\nimport {\n HvFormElementContext,\n HvFormElementValueContext,\n HvFormElementDescriptorsContext,\n} from \"@core/components/Forms\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { setId } from \"@core/utils/setId\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useDefaultProps } from \"@core/hooks\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { isRange, isSameDay, formatToLocale, isDate } from \"../utils\";\nimport { DateRangeProp } from \"../types\";\nimport { staticClasses, useClasses } from \"./CalendarHeader.styles\";\n\nexport { staticClasses as calendarHeaderClasses };\n\nexport type HvCalendarHeaderClasses = ExtractNames<typeof useClasses>;\n\ndayjs.extend(localeData);\ndayjs.extend(localizedFormat);\ndayjs.extend(customParseFormat);\n\nexport const HvCalendarHeader = (props: HvCalendarHeaderProps) => {\n const {\n id,\n value,\n locale = \"en-US\",\n classes: classesProp,\n onChange,\n showEndDate,\n showDayOfWeek = false,\n onFocus,\n invalidDateLabel = \"Invalid Date\",\n } = useDefaultProps(\"HvCalendarHeader\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const { elementId } = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const { label } = useContext(HvFormElementDescriptorsContext);\n\n let localValue: string | Date | DateRangeProp | undefined =\n value ?? elementValue ?? \"\";\n if (isRange(localValue)) {\n localValue = showEndDate ? localValue.endDate : localValue.startDate;\n }\n\n const [dateValue, setDateValue] = useState<\n string | Date | DateRangeProp | undefined\n >(localValue);\n const [editedValue, setEditedValue] = useState<string | null>(null);\n const [displayValue, setDisplayValue] = useState(\"\");\n const [weekdayDisplay, setWeekdayDisplay] = useState(\"\");\n\n const localId = id ?? setId(elementId, \"calendarHeader\");\n\n const inputValue = editedValue ?? displayValue;\n const localeFormat = dayjs().locale(locale).localeData().longDateFormat(\"L\");\n\n const [isValidValue, setIsValidValue] = useState(\n inputValue.length === 0 || (!!inputValue && dayjs(localValue).isValid())\n );\n\n const validateInput = (incomingValid: any) =>\n incomingValid === undefined || dayjs(incomingValid).isValid();\n\n useEffect(() => {\n const valid = validateInput(localValue);\n setIsValidValue(valid);\n if (valid) {\n if (!localValue) {\n setDisplayValue(\"\");\n setEditedValue(null);\n setWeekdayDisplay(\"\");\n return;\n }\n const weekday = new Intl.DateTimeFormat(locale, {\n weekday: \"short\",\n }).format(isDate(localValue) ? localValue : 0);\n setDisplayValue(formatToLocale(localValue, locale));\n setEditedValue(null);\n setWeekdayDisplay(weekday);\n }\n }, [localValue, locale]);\n\n const handleNewDate = (event: any, date: string) => {\n // attempt to format in locale data, or fallback to default\n const localeParsedDate = dayjs(date, localeFormat);\n\n const isValidInput = localeParsedDate.isValid();\n const dateParsed = isValidInput\n ? localeParsedDate.toDate()\n : dayjs(date).toDate();\n // prevent extra updates\n if (!isSameDay(dateParsed, dateValue)) {\n setDateValue(dateParsed);\n onChange?.(event, dateParsed);\n }\n\n setIsValidValue(isValidInput);\n if (isValidInput) {\n setEditedValue(null);\n }\n };\n\n const onBlurHandler: HvInputProps[\"onBlur\"] = (event) => {\n if (editedValue == null) return;\n if (editedValue === \"\") {\n setIsValidValue(true);\n setEditedValue(null);\n return;\n }\n handleNewDate(event, editedValue);\n };\n\n const keyDownHandler: HvInputProps[\"onKeyDown\"] = (event) => {\n if (!isKey(event, \"Enter\") || editedValue == null || editedValue === \"\")\n return;\n event.preventDefault();\n\n handleNewDate(event, editedValue);\n };\n\n const onFocusHandler: HvInputProps[\"onFocus\"] = (event) => {\n if (!localValue) return;\n const formattedDate =\n isValidValue && isDate(localValue)\n ? dayjs(localValue).locale(locale).format(\"L\")\n : editedValue;\n setEditedValue(formattedDate);\n onFocus?.(event, formattedDate);\n };\n\n const onChangeHandler: HvInputProps[\"onChange\"] = (event, val) => {\n setEditedValue(val);\n };\n\n const isInvalid = !isValidValue && inputValue !== \"\";\n\n // This component needs to be further refactored\n // It's not possible to clear the date\n // In a new major there's no need for all these classes\n return (\n <div\n id={localId}\n className={cx(classes.root, {\n [classes.invalid]: isInvalid,\n })}\n >\n {showDayOfWeek && (\n <HvTypography className={classes.headerDayOfWeek}>\n {weekdayDisplay || \"\\u00A0\"}\n </HvTypography>\n )}\n <HvInput\n type=\"text\"\n id={setId(localId, \"header-input\")}\n className={classes.headerDate}\n classes={{\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n error: classes.invalidMessageStyling,\n }}\n placeholder={localeFormat}\n value={inputValue}\n aria-labelledby={label?.[0]?.id}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onKeyDown={keyDownHandler}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={invalidDateLabel}\n />\n </div>\n );\n};\n\n// TODO: refactor this out\nHvCalendarHeader.formElementType = \"HvCalendarHeader\";\n\nexport interface HvCalendarHeaderProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvCalendarHeaderClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The text to be shown on the main part of the header.\n */\n value?: string | Date | DateRangeProp;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp\n ) => void;\n /**\n * Callback to handle input onFocus.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n formattedDate: string | null\n ) => void;\n /**\n * Indicates if header should display end date in a date range.\n */\n showEndDate?: boolean;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n"],"names":["dayjs","extend","localeData","localizedFormat","customParseFormat","HvCalendarHeader","props","id","value","locale","classes","classesProp","onChange","showEndDate","showDayOfWeek","onFocus","invalidDateLabel","useDefaultProps","cx","useClasses","elementId","useContext","HvFormElementContext","elementValue","HvFormElementValueContext","label","HvFormElementDescriptorsContext","localValue","isRange","endDate","startDate","dateValue","setDateValue","useState","editedValue","setEditedValue","displayValue","setDisplayValue","weekdayDisplay","setWeekdayDisplay","localId","setId","inputValue","localeFormat","longDateFormat","isValidValue","setIsValidValue","length","isValid","validateInput","incomingValid","undefined","useEffect","valid","weekday","Intl","DateTimeFormat","format","isDate","formatToLocale","handleNewDate","event","date","localeParsedDate","isValidInput","dateParsed","toDate","isSameDay","onBlurHandler","keyDownHandler","isKey","preventDefault","onFocusHandler","formattedDate","onChangeHandler","val","isInvalid","root","invalid","HvTypography","headerDayOfWeek","jsx","HvInput","headerDate","input","inputBorderContainer","error","invalidMessageStyling","formElementType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BAA,eAAAA,QAAMC,OAAOC,oBAAAA,OAAU;AACvBF,eAAAA,QAAMC,OAAOE,yBAAAA,OAAe;AAC5BH,eAAAA,QAAMC,OAAOG,2BAAAA,OAAiB;AAEjBC,MAAAA,mBAAmBA,CAACC,UAAiC;AAC1D,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,SAAS;AAAA,IACTC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC,gBAAgB;AAAA,IAChBC;AAAAA,IACAC,mBAAmB;AAAA,EAAA,IACjBC,gBAAgB,gBAAA,oBAAoBX,KAAK;AAEvC,QAAA;AAAA,IAAEI;AAAAA,IAASQ;AAAAA,EAAAA,IAAOC,sBAAAA,WAAWR,WAAW;AAExC,QAAA;AAAA,IAAES;AAAAA,EAAAA,IAAcC,MAAAA,WAAWC,mBAAAA,oBAAoB;AAC/CC,QAAAA,eAAeF,iBAAWG,wBAAAA,yBAAyB;AACnD,QAAA;AAAA,IAAEC;AAAAA,EAAAA,IAAUJ,MAAAA,WAAWK,8BAAAA,+BAA+B;AAExDC,MAAAA,aACFnB,SAASe,gBAAgB;AACvBK,MAAAA,MAAAA,QAAQD,UAAU,GAAG;AACVd,iBAAAA,cAAcc,WAAWE,UAAUF,WAAWG;AAAAA,EAC7D;AAEA,QAAM,CAACC,WAAWC,YAAY,IAAIC,eAEhCN,UAAU;AACZ,QAAM,CAACO,aAAaC,cAAc,IAAIF,eAAwB,IAAI;AAClE,QAAM,CAACG,cAAcC,eAAe,IAAIJ,eAAS,EAAE;AACnD,QAAM,CAACK,gBAAgBC,iBAAiB,IAAIN,eAAS,EAAE;AAEvD,QAAMO,UAAUjC,MAAMkC,MAAMrB,MAAAA,WAAW,gBAAgB;AAEvD,QAAMsB,aAAaR,eAAeE;AAC5BO,QAAAA,eAAe3C,uBAAQS,EAAAA,OAAOA,MAAM,EAAEP,WAAa0C,EAAAA,eAAe,GAAG;AAE3E,QAAM,CAACC,cAAcC,eAAe,IAAIb,eACtCS,WAAWK,WAAW,KAAM,CAAC,CAACL,cAAc1C,eAAAA,QAAM2B,UAAU,EAAEqB,QAChE,CAAA;AAEMC,QAAAA,gBAAgBA,CAACC,kBACrBA,kBAAkBC,UAAanD,uBAAMkD,aAAa,EAAEF;AAEtDI,QAAAA,UAAU,MAAM;AACRC,UAAAA,QAAQJ,cAActB,UAAU;AACtCmB,oBAAgBO,KAAK;AACrB,QAAIA,OAAO;AACT,UAAI,CAAC1B,YAAY;AACfU,wBAAgB,EAAE;AAClBF,uBAAe,IAAI;AACnBI,0BAAkB,EAAE;AACpB;AAAA,MACF;AACA,YAAMe,UAAU,IAAIC,KAAKC,eAAe/C,QAAQ;AAAA,QAC9C6C,SAAS;AAAA,MAAA,CACV,EAAEG,OAAOC,aAAO/B,UAAU,IAAIA,aAAa,CAAC;AAC7BgC,sBAAAA,MAAAA,eAAehC,YAAYlB,MAAM,CAAC;AAClD0B,qBAAe,IAAI;AACnBI,wBAAkBe,OAAO;AAAA,IAC3B;AAAA,EAAA,GACC,CAAC3B,YAAYlB,MAAM,CAAC;AAEjBmD,QAAAA,gBAAgBA,CAACC,OAAYC,SAAiB;AAE5CC,UAAAA,mBAAmB/D,eAAAA,QAAM8D,MAAMnB,YAAY;AAE3CqB,UAAAA,eAAeD,iBAAiBf;AAChCiB,UAAAA,aAAaD,eACfD,iBAAiBG,WACjBlE,uBAAM8D,IAAI,EAAEI;AAEhB,QAAI,CAACC,MAAAA,UAAUF,YAAYlC,SAAS,GAAG;AACrCC,mBAAaiC,UAAU;AACvBrD,iBAAWiD,OAAOI,UAAU;AAAA,IAC9B;AAEAnB,oBAAgBkB,YAAY;AAC5B,QAAIA,cAAc;AAChB7B,qBAAe,IAAI;AAAA,IACrB;AAAA,EAAA;AAGF,QAAMiC,gBAAyCP,CAAU,UAAA;AACvD,QAAI3B,eAAe;AAAM;AACzB,QAAIA,gBAAgB,IAAI;AACtBY,sBAAgB,IAAI;AACpBX,qBAAe,IAAI;AACnB;AAAA,IACF;AACAyB,kBAAcC,OAAO3B,WAAW;AAAA,EAAA;AAGlC,QAAMmC,iBAA6CR,CAAU,UAAA;AAC3D,QAAI,CAACS,cAAMT,MAAAA,OAAO,OAAO,KAAK3B,eAAe,QAAQA,gBAAgB;AACnE;AACF2B,UAAMU,eAAe;AAErBX,kBAAcC,OAAO3B,WAAW;AAAA,EAAA;AAGlC,QAAMsC,iBAA2CX,CAAU,UAAA;AACzD,QAAI,CAAClC;AAAY;AACjB,UAAM8C,gBACJ5B,gBAAgBa,MAAO/B,OAAAA,UAAU,IAC7B3B,eAAAA,QAAM2B,UAAU,EAAElB,OAAOA,MAAM,EAAEgD,OAAO,GAAG,IAC3CvB;AACNC,mBAAesC,aAAa;AAC5B1D,cAAU8C,OAAOY,aAAa;AAAA,EAAA;AAG1BC,QAAAA,kBAA4CA,CAACb,OAAOc,QAAQ;AAChExC,mBAAewC,GAAG;AAAA,EAAA;AAGdC,QAAAA,YAAY,CAAC/B,gBAAgBH,eAAe;AAKlD,yCACG,OACC,EAAA,IAAIF,SACJ,WAAWtB,GAAGR,QAAQmE,MAAM;AAAA,IAC1B,CAACnE,QAAQoE,OAAO,GAAGF;AAAAA,EACpB,CAAA,GAEA9D,UAAAA;AAAAA,IAAAA,gDACEiE,WAAa,cAAA,EAAA,WAAWrE,QAAQsE,iBAC9B1C,4BAAkB,KACrB;AAAA,IAED2C,2BAAAA,IAAAC,MAAAA,SAAA,EACC,MAAK,QACL,IAAIzC,MAAAA,MAAMD,SAAS,cAAc,GACjC,WAAW9B,QAAQyE,YACnB,SAAS;AAAA,MACPC,OAAO1E,QAAQ0E;AAAAA,MACfC,sBAAsB3E,QAAQ2E;AAAAA,MAC9BC,OAAO5E,QAAQ6E;AAAAA,IACjB,GACA,aAAa5C,cACb,OAAOD,YACP,mBAAiBjB,QAAQ,CAAC,GAAGlB,IAC7B,QAAQ6D,eACR,SAASI,gBACT,UAAUE,iBACV,WAAWL,gBACX,QAAQO,YAAY,YAAY,SAChC,eAAe5D,iBAAiB,CAAA;AAAA,EAEpC,EAAA,CAAA;AAEJ;AAGAX,iBAAiBmF,kBAAkB;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComposedNavigation.cjs","sources":["../../../../../../src/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.tsx"],"sourcesContent":["import { setId } from \"@core/utils/setId\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { getMonthNamesList } from \"../../utils\";\nimport { ViewMode } from \"../../enums\";\nimport { Navigation } from \"../Navigation\";\nimport { VisibilitySelectorActions } from \"../../types\";\n\nimport { staticClasses, useClasses } from \"./ComposedNavigation.styles\";\n\nexport { staticClasses as composedNavigationClasses };\n\nexport type HvComposedNavigationClasses = ExtractNames<typeof useClasses>;\n\nexport const HvComposedNavigation = ({\n classes: classesProp,\n id,\n locale,\n onChange,\n onViewModeChange,\n visibleYear,\n visibleMonth,\n ...others\n}: HvComposedNavigationProps) => {\n const { classes } = useClasses(classesProp);\n\n const listMonthNamesLong = getMonthNamesList(locale, \"long\");\n const monthName = listMonthNamesLong[visibleMonth - 1];\n\n return (\n <div className={classes.navigationContainer} {...others}>\n <div className={classes.navigationMonth}>\n <Navigation\n id={setId(id, \"navigation-month\")}\n navigationText={monthName}\n onNavigatePrevious={(event) => {\n onChange?.(event, \"previous_month\");\n }}\n onNavigateNext={(event) => {\n onChange?.(event, \"next_month\");\n }}\n onTextClick={() => {\n onViewModeChange(\"monthly\");\n }}\n className={classes.navigationMonth}\n />\n </div>\n\n <Navigation\n id={setId(id, \"navigation-year\")}\n navigationText={visibleYear.toString()}\n onNavigatePrevious={(event) => {\n onChange?.(event, \"previous_year\");\n }}\n onNavigateNext={(event) => {\n onChange?.(event, \"next_year\");\n }}\n />\n </div>\n );\n};\n\nexport interface HvComposedNavigationProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvComposedNavigationClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (event, action: VisibilitySelectorActions) => void;\n /**\n * Callback to define the view mode.\n */\n onViewModeChange: (viewMode: ViewMode) => void;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth: number;\n /**\n * Controls the visible month of the Calendar\n */\n visibleYear: number;\n}\n"],"names":["HvComposedNavigation","classes","classesProp","id","locale","onChange","onViewModeChange","visibleYear","visibleMonth","others","useClasses","listMonthNamesLong","getMonthNamesList","monthName","navigationContainer","jsx","navigationMonth","Navigation","setId","event","toString"],"mappings":";;;;;;;AAeO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACsB,MAAM;AACzB,QAAA;AAAA,IAAER;AAAAA,EAAAA,IAAYS,0BAAAA,WAAWR,WAAW;AAEpCS,QAAAA,qBAAqBC,MAAAA,kBAAkBR,QAAQ,MAAM;AACrDS,QAAAA,YAAYF,mBAAmBH,eAAe,CAAC;AAErD,yCACG,OAAI,EAAA,WAAWP,QAAQa,qBAAqB,GAAIL,QAC/C,UAAA;AAAA,IAAAM,2BAAA,IAAC,OAAI,EAAA,WAAWd,QAAQe,iBACtB,yCAACC,WACC,YAAA,EAAA,IAAIC,MAAMf,MAAAA,IAAI,kBAAkB,GAChC,gBAAgBU,WAChB,oBAAqBM,CAAU,UAAA;AAC7Bd,iBAAWc,OAAO,gBAAgB;AAAA,IAAA,GAEpC,gBAAiBA,CAAU,UAAA;AACzBd,iBAAWc,OAAO,YAAY;AAAA,IAChC,GACA,aAAa,MAAM;AACjBb,uBAAiB,SAAS;AAAA,IAE5B,GAAA,WAAWL,QAAQe,gBAAAA,CAAgB,EAEvC,CAAA;AAAA,IAECD,2BAAAA,IAAAE,WAAAA,YAAA,EACC,IAAIC,MAAAA,MAAMf,IAAI,iBAAiB,GAC/B,gBAAgBI,YAAYa,SAC5B,GAAA,oBAAqBD,CAAU,UAAA;AAC7Bd,iBAAWc,OAAO,eAAe;AAAA,IAAA,GAEnC,gBAAiBA,CAAU,UAAA;AACzBd,iBAAWc,OAAO,WAAW;AAAA,IAAA,GAC7B;AAAA,EAEN,EAAA,CAAA;AAEJ;;;"}
1
+ {"version":3,"file":"ComposedNavigation.cjs","sources":["../../../../../../src/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.tsx"],"sourcesContent":["import { setId } from \"@core/utils/setId\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { getMonthNamesList } from \"../../utils\";\nimport { ViewMode } from \"../../enums\";\nimport { Navigation } from \"../Navigation\";\nimport { VisibilitySelectorActions } from \"../../types\";\n\nimport { staticClasses, useClasses } from \"./ComposedNavigation.styles\";\n\nexport { staticClasses as composedNavigationClasses };\n\nexport type HvComposedNavigationClasses = ExtractNames<typeof useClasses>;\n\nexport const HvComposedNavigation = ({\n classes: classesProp,\n id,\n locale,\n onChange,\n onViewModeChange,\n visibleYear,\n visibleMonth,\n ...others\n}: HvComposedNavigationProps) => {\n const { classes } = useClasses(classesProp);\n\n const listMonthNamesLong = getMonthNamesList(locale, \"long\");\n const monthName = listMonthNamesLong[visibleMonth - 1];\n\n return (\n <div className={classes.navigationContainer} {...others}>\n <div className={classes.navigationMonth}>\n <Navigation\n id={setId(id, \"navigation-month\")}\n navigationText={monthName}\n onNavigatePrevious={(event) => {\n onChange?.(event, \"previous_month\");\n }}\n onNavigateNext={(event) => {\n onChange?.(event, \"next_month\");\n }}\n onTextClick={() => {\n onViewModeChange(\"monthly\");\n }}\n className={classes.navigationMonth}\n />\n </div>\n\n <Navigation\n id={setId(id, \"navigation-year\")}\n navigationText={visibleYear.toString()}\n onNavigatePrevious={(event) => {\n onChange?.(event, \"previous_year\");\n }}\n onNavigateNext={(event) => {\n onChange?.(event, \"next_year\");\n }}\n />\n </div>\n );\n};\n\nexport interface HvComposedNavigationProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvComposedNavigationClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (event: any, action: VisibilitySelectorActions) => void;\n /**\n * Callback to define the view mode.\n */\n onViewModeChange: (viewMode: ViewMode) => void;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth: number;\n /**\n * Controls the visible month of the Calendar\n */\n visibleYear: number;\n}\n"],"names":["HvComposedNavigation","classes","classesProp","id","locale","onChange","onViewModeChange","visibleYear","visibleMonth","others","useClasses","listMonthNamesLong","getMonthNamesList","monthName","navigationContainer","jsx","navigationMonth","Navigation","setId","event","toString"],"mappings":";;;;;;;AAeO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACsB,MAAM;AACzB,QAAA;AAAA,IAAER;AAAAA,EAAAA,IAAYS,0BAAAA,WAAWR,WAAW;AAEpCS,QAAAA,qBAAqBC,MAAAA,kBAAkBR,QAAQ,MAAM;AACrDS,QAAAA,YAAYF,mBAAmBH,eAAe,CAAC;AAErD,yCACG,OAAI,EAAA,WAAWP,QAAQa,qBAAqB,GAAIL,QAC/C,UAAA;AAAA,IAAAM,2BAAA,IAAC,OAAI,EAAA,WAAWd,QAAQe,iBACtB,yCAACC,WACC,YAAA,EAAA,IAAIC,MAAMf,MAAAA,IAAI,kBAAkB,GAChC,gBAAgBU,WAChB,oBAAqBM,CAAU,UAAA;AAC7Bd,iBAAWc,OAAO,gBAAgB;AAAA,IAAA,GAEpC,gBAAiBA,CAAU,UAAA;AACzBd,iBAAWc,OAAO,YAAY;AAAA,IAChC,GACA,aAAa,MAAM;AACjBb,uBAAiB,SAAS;AAAA,IAE5B,GAAA,WAAWL,QAAQe,gBAAAA,CAAgB,EAEvC,CAAA;AAAA,IAECD,2BAAAA,IAAAE,WAAAA,YAAA,EACC,IAAIC,MAAAA,MAAMf,IAAI,iBAAiB,GAC/B,gBAAgBI,YAAYa,SAC5B,GAAA,oBAAqBD,CAAU,UAAA;AAC7Bd,iBAAWc,OAAO,eAAe;AAAA,IAAA,GAEnC,gBAAiBA,CAAU,UAAA;AACzBd,iBAAWc,OAAO,WAAW;AAAA,IAAA,GAC7B;AAAA,EAEN,EAAA,CAAA;AAEJ;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MonthSelector.cjs","sources":["../../../../../../src/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.tsx"],"sourcesContent":["import { isKey } from \"@core/utils/keyboardUtils\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { getMonthNamesList } from \"../../utils\";\nimport { ViewMode } from \"../../enums\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"../../types\";\n\nimport { staticClasses, useClasses } from \"./MonthSelector.styles\";\n\nexport { staticClasses as monthSelectorClasses };\n\nexport type HvMonthSelectorClasses = ExtractNames<typeof useClasses>;\n\nexport const HvMonthSelector = ({\n classes: classesProp,\n id,\n locale,\n onChange,\n onViewModeChange,\n rangeMode,\n visibleMonth,\n ...others\n}: HvMonthSelectorProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const listMonthNamesShort = getMonthNamesList(locale, \"short\");\n const onKeyDownHandler = (event, index) => {\n if (isKey(event, \"Enter\")) {\n onChange?.(event, \"month\", index + 1);\n onViewModeChange(\"calendar\");\n }\n };\n return (\n <div\n className={cx(classes.calendarMonthlyGrid, {\n [classes.rangeModeWidth]: rangeMode,\n [classes.normalWidth]: !rangeMode,\n })}\n >\n {listMonthNamesShort.map((monthName, index) => (\n <div\n className={classes.focusSelection}\n key={monthName}\n role=\"button\"\n onClick={(event) => {\n onChange?.(event, \"month\", index + 1);\n onViewModeChange(\"calendar\");\n }}\n onKeyDown={(event) => onKeyDownHandler(event, index)}\n tabIndex={0}\n {...others}\n >\n <HvTypography\n className={cx(classes.calendarMonthlyCell, {\n [classes.calendarMonthlyCellSelected]: index + 1 === visibleMonth,\n })}\n >\n {monthName}\n </HvTypography>\n </div>\n ))}\n </div>\n );\n};\n\nexport interface HvMonthSelectorProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvMonthSelectorClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (\n event: any,\n action: VisibilitySelectorActions,\n value: Date | DateRangeProp | number\n ) => void;\n /**\n * Callback to define the input date.\n */\n onViewModeChange: (viewMode: ViewMode) => void;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth: number;\n /**\n * Controls the visible month of the Calendar\n */\n visibleYear?: number;\n rangeMode?: boolean;\n}\n"],"names":["HvMonthSelector","classes","classesProp","id","locale","onChange","onViewModeChange","rangeMode","visibleMonth","others","cx","useClasses","listMonthNamesShort","getMonthNamesList","onKeyDownHandler","event","index","isKey","jsx","calendarMonthlyGrid","rangeModeWidth","normalWidth","map","monthName","focusSelection","HvTypography","calendarMonthlyCell","calendarMonthlyCellSelected"],"mappings":";;;;;;;AAeO,MAAMA,kBAAkBA,CAAC;AAAA,EAC9BC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACiB,MAAM;AACpB,QAAA;AAAA,IAAER;AAAAA,IAASS;AAAAA,EAAAA,IAAOC,qBAAAA,WAAWT,WAAW;AAExCU,QAAAA,sBAAsBC,MAAAA,kBAAkBT,QAAQ,OAAO;AACvDU,QAAAA,mBAAmBA,CAACC,OAAOC,UAAU;AACrCC,QAAAA,cAAAA,MAAMF,OAAO,OAAO,GAAG;AACdA,iBAAAA,OAAO,SAASC,QAAQ,CAAC;AACpCV,uBAAiB,UAAU;AAAA,IAC7B;AAAA,EAAA;AAEF,SACGY,2BAAAA,IAAA,OAAA,EACC,WAAWR,GAAGT,QAAQkB,qBAAqB;AAAA,IACzC,CAAClB,QAAQmB,cAAc,GAAGb;AAAAA,IAC1B,CAACN,QAAQoB,WAAW,GAAG,CAACd;AAAAA,EAAAA,CACzB,GAEAK,UAAoBU,oBAAAA,IAAI,CAACC,WAAWP,UAClCE,+BAAA,OAAA,EACC,WAAWjB,QAAQuB,gBAEnB,MAAK,UACL,SAAUT,CAAU,UAAA;AACPA,eAAAA,OAAO,SAASC,QAAQ,CAAC;AACpCV,qBAAiB,UAAU;AAAA,EAAA,GAE7B,WAAYS,CAAAA,UAAUD,iBAAiBC,OAAOC,KAAK,GACnD,UAAU,GACNP,GAAAA,QAEJ,UAACS,2BAAAA,IAAAO,WAAA,cAAA,EACC,WAAWf,GAAGT,QAAQyB,qBAAqB;AAAA,IACzC,CAACzB,QAAQ0B,2BAA2B,GAAGX,QAAQ,MAAMR;AAAAA,EAAAA,CACtD,GAEAe,UAAAA,UACH,CAAA,EAhBKA,GAAAA,SAiBP,CACD,EACH,CAAA;AAEJ;;;"}
1
+ {"version":3,"file":"MonthSelector.cjs","sources":["../../../../../../src/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.tsx"],"sourcesContent":["import { isKey } from \"@core/utils/keyboardUtils\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { getMonthNamesList } from \"../../utils\";\nimport { ViewMode } from \"../../enums\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"../../types\";\n\nimport { staticClasses, useClasses } from \"./MonthSelector.styles\";\n\nexport { staticClasses as monthSelectorClasses };\n\nexport type HvMonthSelectorClasses = ExtractNames<typeof useClasses>;\n\nexport const HvMonthSelector = ({\n classes: classesProp,\n id,\n locale,\n onChange,\n onViewModeChange,\n rangeMode,\n visibleMonth,\n ...others\n}: HvMonthSelectorProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const listMonthNamesShort = getMonthNamesList(locale, \"short\");\n const onKeyDownHandler = (event: any, index: number) => {\n if (isKey(event, \"Enter\")) {\n onChange?.(event, \"month\", index + 1);\n onViewModeChange(\"calendar\");\n }\n };\n return (\n <div\n className={cx(classes.calendarMonthlyGrid, {\n [classes.rangeModeWidth]: rangeMode,\n [classes.normalWidth]: !rangeMode,\n })}\n >\n {listMonthNamesShort.map((monthName, index) => (\n <div\n className={classes.focusSelection}\n key={monthName}\n role=\"button\"\n onClick={(event) => {\n onChange?.(event, \"month\", index + 1);\n onViewModeChange(\"calendar\");\n }}\n onKeyDown={(event) => onKeyDownHandler(event, index)}\n tabIndex={0}\n {...others}\n >\n <HvTypography\n className={cx(classes.calendarMonthlyCell, {\n [classes.calendarMonthlyCellSelected]: index + 1 === visibleMonth,\n })}\n >\n {monthName}\n </HvTypography>\n </div>\n ))}\n </div>\n );\n};\n\nexport interface HvMonthSelectorProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvMonthSelectorClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (\n event: any,\n action: VisibilitySelectorActions,\n value: Date | DateRangeProp | number\n ) => void;\n /**\n * Callback to define the input date.\n */\n onViewModeChange: (viewMode: ViewMode) => void;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth: number;\n /**\n * Controls the visible month of the Calendar\n */\n visibleYear?: number;\n rangeMode?: boolean;\n}\n"],"names":["HvMonthSelector","classes","classesProp","id","locale","onChange","onViewModeChange","rangeMode","visibleMonth","others","cx","useClasses","listMonthNamesShort","getMonthNamesList","onKeyDownHandler","event","index","isKey","jsx","calendarMonthlyGrid","rangeModeWidth","normalWidth","map","monthName","focusSelection","HvTypography","calendarMonthlyCell","calendarMonthlyCellSelected"],"mappings":";;;;;;;AAeO,MAAMA,kBAAkBA,CAAC;AAAA,EAC9BC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACiB,MAAM;AACpB,QAAA;AAAA,IAAER;AAAAA,IAASS;AAAAA,EAAAA,IAAOC,qBAAAA,WAAWT,WAAW;AAExCU,QAAAA,sBAAsBC,MAAAA,kBAAkBT,QAAQ,OAAO;AACvDU,QAAAA,mBAAmBA,CAACC,OAAYC,UAAkB;AAClDC,QAAAA,cAAAA,MAAMF,OAAO,OAAO,GAAG;AACdA,iBAAAA,OAAO,SAASC,QAAQ,CAAC;AACpCV,uBAAiB,UAAU;AAAA,IAC7B;AAAA,EAAA;AAEF,SACGY,2BAAAA,IAAA,OAAA,EACC,WAAWR,GAAGT,QAAQkB,qBAAqB;AAAA,IACzC,CAAClB,QAAQmB,cAAc,GAAGb;AAAAA,IAC1B,CAACN,QAAQoB,WAAW,GAAG,CAACd;AAAAA,EAAAA,CACzB,GAEAK,UAAoBU,oBAAAA,IAAI,CAACC,WAAWP,UAClCE,+BAAA,OAAA,EACC,WAAWjB,QAAQuB,gBAEnB,MAAK,UACL,SAAUT,CAAU,UAAA;AACPA,eAAAA,OAAO,SAASC,QAAQ,CAAC;AACpCV,qBAAiB,UAAU;AAAA,EAAA,GAE7B,WAAYS,CAAAA,UAAUD,iBAAiBC,OAAOC,KAAK,GACnD,UAAU,GACNP,GAAAA,QAEJ,UAACS,2BAAAA,IAAAO,WAAA,cAAA,EACC,WAAWf,GAAGT,QAAQyB,qBAAqB;AAAA,IACzC,CAACzB,QAAQ0B,2BAA2B,GAAGX,QAAQ,MAAMR;AAAAA,EAAAA,CACtD,GAEAe,UAAAA,UACH,CAAA,EAhBKA,GAAAA,SAiBP,CACD,EACH,CAAA;AAEJ;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"model.cjs","sources":["../../../../src/components/Calendar/model.tsx"],"sourcesContent":["import { createDatesArray, isRange } from \"./utils\";\n\n/**\n * Calendar builder for a specific month and year.\n * Returns an array of date objects.\n */\nexport default class CalendarModel {\n month: any;\n\n year: any;\n\n dates: Date[] = [];\n\n constructor(month?: number, year?: number) {\n this.updateModel(month, year);\n }\n\n /**\n * Updates the model with the received month and year\n *\n * @param {number} month - Number of the month (1 to 12).\n * @param {number} year - Number of the year.\n * @memberOf CalendarModel\n */\n updateModel = (month, year) => {\n let validMonth = month;\n let validYear = year;\n if (!Number.isInteger(validMonth)) {\n validMonth = new Date().getMonth() + 1;\n }\n if (!Number.isInteger(validYear)) {\n validYear = new Date().getFullYear();\n }\n\n this.month = validMonth;\n this.year = validYear;\n this.dates = createDatesArray(validMonth, validYear);\n };\n}\n\nconst generateModelFromDate = (seedValue) => {\n let calendarModel;\n\n if (typeof seedValue === \"string\") {\n const today = new Date();\n calendarModel = new CalendarModel(\n today.getMonth() + 1,\n today.getFullYear()\n );\n } else if (isRange(seedValue)) {\n calendarModel = new CalendarModel(\n seedValue.startDate.getMonth() + 1,\n seedValue.startDate.getFullYear()\n );\n } else {\n calendarModel = new CalendarModel(\n seedValue.getMonth() + 1,\n seedValue.getFullYear()\n );\n }\n\n return calendarModel;\n};\n\nexport const generateCalendarModel = (seedValue, visibleMonth, visibleYear) => {\n let calendarModel;\n\n if (visibleMonth && visibleYear) {\n calendarModel = new CalendarModel(visibleMonth, visibleYear);\n } else if (visibleMonth && !visibleYear) {\n calendarModel = new CalendarModel(visibleMonth, seedValue.getFullYear());\n } else if (!visibleMonth && visibleYear) {\n calendarModel = new CalendarModel(1, visibleYear);\n } else {\n calendarModel = generateModelFromDate(seedValue);\n }\n\n return calendarModel;\n};\n"],"names":["CalendarModel","constructor","month","year","dates","updateModel","validMonth","validYear","Number","isInteger","Date","getMonth","getFullYear","createDatesArray","generateModelFromDate","seedValue","calendarModel","today","isRange","startDate","generateCalendarModel","visibleMonth","visibleYear"],"mappings":";;;AAMA,MAAqBA,cAAc;AAAA,EAOjCC,YAAYC,OAAgBC,MAAe;AAF3CC,SAAAA,QAAgB;AAaFC,SAAAA,cAAAA,CAACH,QAAOC,UAAS;AAC7B,UAAIG,aAAaJ;AACjB,UAAIK,YAAYJ;AAChB,UAAI,CAACK,OAAOC,UAAUH,UAAU,GAAG;AACjCA,sBAAiBI,oBAAAA,KAAOC,GAAAA,SAAAA,IAAa;AAAA,MACvC;AACA,UAAI,CAACH,OAAOC,UAAUF,SAAS,GAAG;AACpB,qBAAA,oBAAIG,KAAK,GAAEE,YAAY;AAAA,MACrC;AAEA,WAAKV,QAAQI;AACb,WAAKH,OAAOI;AACPH,WAAAA,QAAQS,MAAAA,iBAAiBP,YAAYC,SAAS;AAAA,IAAA;AAtB9CF,SAAAA,YAAYH,OAAOC,IAAI;AAAA,EAC9B;AAuBF;AAEA,MAAMW,wBAAyBC,CAAc,cAAA;AACvCC,MAAAA;AAEA,MAAA,OAAOD,cAAc,UAAU;AAC3BE,UAAAA,4BAAYP;AACF,oBAAA,IAAIV,cAClBiB,MAAMN,aAAa,GACnBM,MAAML,aACR;AAAA,EAAA,WACSM,MAAAA,QAAQH,SAAS,GAAG;AACb,oBAAA,IAAIf,cAClBe,UAAUI,UAAUR,aAAa,GACjCI,UAAUI,UAAUP,YACtB,CAAA;AAAA,EAAA,OACK;AACW,oBAAA,IAAIZ,cAClBe,UAAUJ,aAAa,GACvBI,UAAUH,aACZ;AAAA,EACF;AAEOI,SAAAA;AACT;AAEO,MAAMI,wBAAwBA,CAACL,WAAWM,cAAcC,gBAAgB;AACzEN,MAAAA;AAEJ,MAAIK,gBAAgBC,aAAa;AACf,oBAAA,IAAItB,cAAcqB,cAAcC,WAAW;AAAA,EAAA,WAClDD,gBAAgB,CAACC,aAAa;AACvCN,oBAAgB,IAAIhB,cAAcqB,cAAcN,UAAUH,YAAa,CAAA;AAAA,EAAA,WAC9D,CAACS,gBAAgBC,aAAa;AACvB,oBAAA,IAAItB,cAAc,GAAGsB,WAAW;AAAA,EAAA,OAC3C;AACLN,oBAAgBF,sBAAsBC,SAAS;AAAA,EACjD;AAEOC,SAAAA;AACT;;;"}
1
+ {"version":3,"file":"model.cjs","sources":["../../../../src/components/Calendar/model.tsx"],"sourcesContent":["import { createDatesArray, isRange } from \"./utils\";\n\n/**\n * Calendar builder for a specific month and year.\n * Returns an array of date objects.\n */\nexport default class CalendarModel {\n month: any;\n\n year: any;\n\n dates: Date[] = [];\n\n constructor(month?: number, year?: number) {\n this.updateModel(month!, year!);\n }\n\n /**\n * Updates the model with the received month and year\n *\n * @param month - Number of the month (1 to 12).\n * @param year - Number of the year.\n * @memberOf CalendarModel\n */\n updateModel = (month: number, year: number) => {\n let validMonth = month;\n let validYear = year;\n if (!Number.isInteger(validMonth)) {\n validMonth = new Date().getMonth() + 1;\n }\n if (!Number.isInteger(validYear)) {\n validYear = new Date().getFullYear();\n }\n\n this.month = validMonth;\n this.year = validYear;\n this.dates = createDatesArray(validMonth, validYear);\n };\n}\n\nconst generateModelFromDate = (seedValue) => {\n let calendarModel;\n\n if (typeof seedValue === \"string\") {\n const today = new Date();\n calendarModel = new CalendarModel(\n today.getMonth() + 1,\n today.getFullYear()\n );\n } else if (isRange(seedValue)) {\n calendarModel = new CalendarModel(\n seedValue.startDate.getMonth() + 1,\n seedValue.startDate.getFullYear()\n );\n } else {\n calendarModel = new CalendarModel(\n seedValue.getMonth() + 1,\n seedValue.getFullYear()\n );\n }\n\n return calendarModel;\n};\n\nexport const generateCalendarModel = (\n seedValue: any,\n visibleMonth?: number,\n visibleYear?: number\n) => {\n let calendarModel;\n\n if (visibleMonth && visibleYear) {\n calendarModel = new CalendarModel(visibleMonth, visibleYear);\n } else if (visibleMonth && !visibleYear) {\n calendarModel = new CalendarModel(visibleMonth, seedValue.getFullYear());\n } else if (!visibleMonth && visibleYear) {\n calendarModel = new CalendarModel(1, visibleYear);\n } else {\n calendarModel = generateModelFromDate(seedValue);\n }\n\n return calendarModel;\n};\n"],"names":["CalendarModel","constructor","month","year","dates","updateModel","validMonth","validYear","Number","isInteger","Date","getMonth","getFullYear","createDatesArray","generateModelFromDate","seedValue","calendarModel","today","isRange","startDate","generateCalendarModel","visibleMonth","visibleYear"],"mappings":";;;AAMA,MAAqBA,cAAc;AAAA,EAOjCC,YAAYC,OAAgBC,MAAe;AAF3CC,SAAAA,QAAgB;AAaFC,SAAAA,cAAAA,CAACH,QAAeC,UAAiB;AAC7C,UAAIG,aAAaJ;AACjB,UAAIK,YAAYJ;AAChB,UAAI,CAACK,OAAOC,UAAUH,UAAU,GAAG;AACjCA,sBAAiBI,oBAAAA,KAAOC,GAAAA,SAAAA,IAAa;AAAA,MACvC;AACA,UAAI,CAACH,OAAOC,UAAUF,SAAS,GAAG;AACpB,qBAAA,oBAAIG,KAAK,GAAEE,YAAY;AAAA,MACrC;AAEA,WAAKV,QAAQI;AACb,WAAKH,OAAOI;AACPH,WAAAA,QAAQS,MAAAA,iBAAiBP,YAAYC,SAAS;AAAA,IAAA;AAtB9CF,SAAAA,YAAYH,OAAQC,IAAK;AAAA,EAChC;AAuBF;AAEA,MAAMW,wBAAyBC,CAAc,cAAA;AACvCC,MAAAA;AAEA,MAAA,OAAOD,cAAc,UAAU;AAC3BE,UAAAA,4BAAYP;AACF,oBAAA,IAAIV,cAClBiB,MAAMN,aAAa,GACnBM,MAAML,aACR;AAAA,EAAA,WACSM,MAAAA,QAAQH,SAAS,GAAG;AACb,oBAAA,IAAIf,cAClBe,UAAUI,UAAUR,aAAa,GACjCI,UAAUI,UAAUP,YACtB,CAAA;AAAA,EAAA,OACK;AACW,oBAAA,IAAIZ,cAClBe,UAAUJ,aAAa,GACvBI,UAAUH,aACZ;AAAA,EACF;AAEOI,SAAAA;AACT;AAEO,MAAMI,wBAAwBA,CACnCL,WACAM,cACAC,gBACG;AACCN,MAAAA;AAEJ,MAAIK,gBAAgBC,aAAa;AACf,oBAAA,IAAItB,cAAcqB,cAAcC,WAAW;AAAA,EAAA,WAClDD,gBAAgB,CAACC,aAAa;AACvCN,oBAAgB,IAAIhB,cAAcqB,cAAcN,UAAUH,YAAa,CAAA;AAAA,EAAA,WAC9D,CAACS,gBAAgBC,aAAa;AACvB,oBAAA,IAAItB,cAAc,GAAGsB,WAAW;AAAA,EAAA,OAC3C;AACLN,oBAAgBF,sBAAsBC,SAAS;AAAA,EACjD;AAEOC,SAAAA;AACT;;;"}
@@ -5,12 +5,11 @@ const material = require("@mui/material");
5
5
  const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
6
6
  const uikitStyles = require("@hitachivantara/uikit-styles");
7
7
  const useDefaultProps = require("../../hooks/useDefaultProps.cjs");
8
- const withTooltip = require("../../hocs/withTooltip.cjs");
8
+ const IconButton = require("../../utils/IconButton.cjs");
9
9
  const setId = require("../../utils/setId.cjs");
10
10
  const useTheme = require("../../hooks/useTheme.cjs");
11
11
  const hexToRgbA = require("../../utils/hexToRgbA.cjs");
12
12
  const Drawer_styles = require("./Drawer.styles.cjs");
13
- const Button = require("../Button/Button.cjs");
14
13
  const HvDrawer = (props) => {
15
14
  const {
16
15
  className,
@@ -33,15 +32,13 @@ const HvDrawer = (props) => {
33
32
  const {
34
33
  colors
35
34
  } = useTheme.useTheme();
36
- const closeButtonDisplay = () => /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Close, { role: "none" });
37
- const CloseButtonTooltipWrapper = buttonTitle ? withTooltip.withTooltip(closeButtonDisplay, buttonTitle, "top") : closeButtonDisplay;
38
35
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
39
36
  /* @__PURE__ */ jsxRuntime.jsxs(material.Drawer, { className: cx(classes.root, className), id, anchor, open, PaperProps: {
40
37
  classes: {
41
38
  root: classes.paper
42
39
  }
43
40
  }, onClose, ...others, children: [
44
- /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { id: setId.setId(id, "close"), className: classes.closeButton, variant: "secondaryGhost", onClick: onClose, "aria-label": buttonTitle, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButtonTooltipWrapper, {}) }),
41
+ /* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "close"), className: classes.closeButton, variant: "secondaryGhost", onClick: onClose, title: buttonTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Close, { role: "none" }) }),
45
42
  children
46
43
  ] }),
47
44
  showBackdrop && /* @__PURE__ */ jsxRuntime.jsx(material.Backdrop, { open: !!open, onClick: (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\nimport { setId } from \"@core/utils/setId\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvButton } from \"@core/components/Button\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { hexToRgbA } from \"@core/utils/hexToRgbA\";\n\nimport { staticClasses, useClasses } from \"./Drawer.styles\";\n\nexport { staticClasses as drawerClasses };\n\nexport type HvDrawerClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDrawerProps\n extends MuiDrawerProps,\n Omit<MuiDrawerProps, \"classes\">,\n HvBaseProps<HTMLDivElement> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDrawerClasses;\n /**\n * Components of the Drawer.\n */\n children?: React.ReactNode;\n /**\n * Current state of the Drawer.\n */\n open?: boolean;\n /**\n * Function executed on close.\n * Extended from Modal from material-ui\n *\n */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /**\n * The side the drawer opens from.\n */\n anchor?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Title for the button close.\n */\n buttonTitle?: string;\n /**\n * Show backdrop when drawer ix open.\n */\n showBackdrop?: boolean;\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick?: boolean;\n /** @ignore */\n ref?: MuiDrawerProps[\"ref\"];\n /** @ignore */\n component?: MuiDrawerProps[\"component\"];\n}\n\n/**\n * The Drawer component provides a foundation to create a sliding pane.\n * It only provides the pane with a close button, the rest of the\n * content can be customized.\n */\nexport const HvDrawer = (props: HvDrawerProps) => {\n const {\n className,\n classes: classesProp,\n id,\n children,\n open,\n onClose,\n anchor = \"right\",\n buttonTitle = \"Close\",\n showBackdrop = true,\n disableBackdropClick = false,\n ...others\n } = useDefaultProps(\"HvDrawer\", props);\n\n const { classes, cx, css } = useClasses(classesProp);\n const { colors } = useTheme();\n\n const closeButtonDisplay = () => <Close role=\"none\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n return (\n <>\n <MuiDrawer\n className={cx(classes.root, className)}\n id={id}\n anchor={anchor}\n open={open}\n PaperProps={{\n classes: {\n root: classes.paper,\n },\n }}\n onClose={onClose}\n {...others}\n >\n <HvButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={onClose}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </HvButton>\n {children}\n </MuiDrawer>\n {showBackdrop && (\n <MuiBackdrop\n open={!!open}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (disableBackdropClick) return;\n onClose?.(event, \"backdropClick\");\n }}\n className={cx(\n css({\n background: hexToRgbA(colors?.atmo4 || theme.colors.atmo4),\n }),\n classes.background\n )}\n />\n )}\n </>\n );\n};\n"],"names":["HvDrawer","props","className","classes","classesProp","id","children","open","onClose","anchor","buttonTitle","showBackdrop","disableBackdropClick","others","useDefaultProps","cx","css","useClasses","colors","useTheme","closeButtonDisplay","jsx","Close","CloseButtonTooltipWrapper","withTooltip","jsxs","Fragment","MuiDrawer","root","paper","HvButton","setId","closeButton","MuiBackdrop","event","background","hexToRgbA","atmo4","theme"],"mappings":";;;;;;;;;;;;;AAsFaA,MAAAA,WAAWA,CAACC,UAAyB;AAC1C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAAS;AAAA,IACTC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,uBAAuB;AAAA,IACvB,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,YAAYb,KAAK;AAE/B,QAAA;AAAA,IAAEE;AAAAA,IAASY;AAAAA,IAAIC;AAAAA,EAAAA,IAAQC,cAAAA,WAAWb,WAAW;AAC7C,QAAA;AAAA,IAAEc;AAAAA,MAAWC,SAAS,SAAA;AAE5B,QAAMC,qBAAqBA,MAAOC,+BAAAC,gBAAAA,OAAA,EAAM,MAAK,OAAS,CAAA;AAEtD,QAAMC,4BAA4Bb,cAC9Bc,YAAAA,YAAYJ,oBAAoBV,aAAa,KAAK,IAClDU;AAEJ,SAEIK,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAACD,2BAAAA,KAAAE,SAAA,QAAA,EACC,WAAWZ,GAAGZ,QAAQyB,MAAM1B,SAAS,GACrC,IACA,QACA,MACA,YAAY;AAAA,MACVC,SAAS;AAAA,QACPyB,MAAMzB,QAAQ0B;AAAAA,MAChB;AAAA,IAAA,GAEF,SACIhB,GAAAA,QAEJ,UAAA;AAAA,MAAAQ,+BAACS,OAAAA,YACC,IAAIC,MAAAA,MAAM1B,IAAI,OAAO,GACrB,WAAWF,QAAQ6B,aACnB,SAAQ,kBACR,SAASxB,SACT,cAAYE,aAEZ,UAAAW,+BAAC,4BAAyB,CAAA,GAC5B;AAAA,MACCf;AAAAA,IAAAA,GACH;AAAA,IACCK,+CACEsB,SAAAA,UACC,EAAA,MAAM,CAAC,CAAC1B,MACR,SAAS,CAAC2B,UAAqD;AACzDtB,UAAAA;AAAsB;AAC1BJ,gBAAU0B,OAAO,eAAe;AAAA,IAAA,GAElC,WAAWnB,GACTC,IAAI;AAAA,MACFmB,YAAYC,UAAUlB,UAAAA,QAAQmB,SAASC,YAAAA,MAAMpB,OAAOmB,KAAK;AAAA,IAAA,CAC1D,GACDlC,QAAQgC,UACV,GAEH;AAAA,EACH,EAAA,CAAA;AAEJ;;;"}
1
+ {"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { setId } from \"@core/utils/setId\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { hexToRgbA } from \"@core/utils/hexToRgbA\";\n\nimport { staticClasses, useClasses } from \"./Drawer.styles\";\n\nexport { staticClasses as drawerClasses };\n\nexport type HvDrawerClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDrawerProps\n extends MuiDrawerProps,\n Omit<MuiDrawerProps, \"classes\">,\n HvBaseProps<HTMLDivElement> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDrawerClasses;\n /**\n * Components of the Drawer.\n */\n children?: React.ReactNode;\n /**\n * Current state of the Drawer.\n */\n open?: boolean;\n /**\n * Function executed on close.\n * Extended from Modal from material-ui\n *\n */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /**\n * The side the drawer opens from.\n */\n anchor?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Title for the button close.\n */\n buttonTitle?: string;\n /**\n * Show backdrop when drawer ix open.\n */\n showBackdrop?: boolean;\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick?: boolean;\n /** @ignore */\n ref?: MuiDrawerProps[\"ref\"];\n /** @ignore */\n component?: MuiDrawerProps[\"component\"];\n}\n\n/**\n * The Drawer component provides a foundation to create a sliding pane.\n * It only provides the pane with a close button, the rest of the\n * content can be customized.\n */\nexport const HvDrawer = (props: HvDrawerProps) => {\n const {\n className,\n classes: classesProp,\n id,\n children,\n open,\n onClose,\n anchor = \"right\",\n buttonTitle = \"Close\",\n showBackdrop = true,\n disableBackdropClick = false,\n ...others\n } = useDefaultProps(\"HvDrawer\", props);\n\n const { classes, cx, css } = useClasses(classesProp);\n const { colors } = useTheme();\n\n return (\n <>\n <MuiDrawer\n className={cx(classes.root, className)}\n id={id}\n anchor={anchor}\n open={open}\n PaperProps={{\n classes: {\n root: classes.paper,\n },\n }}\n onClose={onClose}\n {...others}\n >\n <IconButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={onClose}\n title={buttonTitle}\n >\n <Close role=\"none\" />\n </IconButton>\n {children}\n </MuiDrawer>\n {showBackdrop && (\n <MuiBackdrop\n open={!!open}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (disableBackdropClick) return;\n onClose?.(event, \"backdropClick\");\n }}\n className={cx(\n css({\n background: hexToRgbA(colors?.atmo4 || theme.colors.atmo4),\n }),\n classes.background\n )}\n />\n )}\n </>\n );\n};\n"],"names":["HvDrawer","props","className","classes","classesProp","id","children","open","onClose","anchor","buttonTitle","showBackdrop","disableBackdropClick","others","useDefaultProps","cx","css","useClasses","colors","useTheme","jsxs","Fragment","MuiDrawer","root","paper","jsx","IconButton","setId","closeButton","Close","MuiBackdrop","event","background","hexToRgbA","atmo4","theme"],"mappings":";;;;;;;;;;;;AAqFaA,MAAAA,WAAWA,CAACC,UAAyB;AAC1C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAAS;AAAA,IACTC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,uBAAuB;AAAA,IACvB,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,YAAYb,KAAK;AAE/B,QAAA;AAAA,IAAEE;AAAAA,IAASY;AAAAA,IAAIC;AAAAA,EAAAA,IAAQC,cAAAA,WAAWb,WAAW;AAC7C,QAAA;AAAA,IAAEc;AAAAA,MAAWC,SAAS,SAAA;AAE5B,SAEIC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAACD,2BAAAA,KAAAE,SAAA,QAAA,EACC,WAAWP,GAAGZ,QAAQoB,MAAMrB,SAAS,GACrC,IACA,QACA,MACA,YAAY;AAAA,MACVC,SAAS;AAAA,QACPoB,MAAMpB,QAAQqB;AAAAA,MAChB;AAAA,IAAA,GAEF,SACIX,GAAAA,QAEJ,UAAA;AAAA,MAAAY,2BAAAA,IAACC,yBACC,IAAIC,YAAMtB,IAAI,OAAO,GACrB,WAAWF,QAAQyB,aACnB,SAAQ,kBACR,SAASpB,SACT,OAAOE,aAEP,yCAACmB,gBAAAA,OAAM,EAAA,MAAK,QAAM,EACpB,CAAA;AAAA,MACCvB;AAAAA,IAAAA,GACH;AAAA,IACCK,+CACEmB,SAAAA,UACC,EAAA,MAAM,CAAC,CAACvB,MACR,SAAS,CAACwB,UAAqD;AACzDnB,UAAAA;AAAsB;AAC1BJ,gBAAUuB,OAAO,eAAe;AAAA,IAAA,GAElC,WAAWhB,GACTC,IAAI;AAAA,MACFgB,YAAYC,UAAUf,UAAAA,QAAQgB,SAASC,YAAAA,MAAMjB,OAAOgB,KAAK;AAAA,IAAA,CAC1D,GACD/B,QAAQ6B,UACV,GAEH;AAAA,EACH,EAAA,CAAA;AAEJ;;;"}
@@ -15,8 +15,6 @@ const {
15
15
  },
16
16
  background: {},
17
17
  closeButton: {
18
- padding: 0,
19
- minWidth: "inherit",
20
18
  position: "absolute",
21
19
  top: uikitStyles.theme.spacing("sm"),
22
20
  right: uikitStyles.theme.spacing("sm")
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.styles.cjs","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n padding: 0,\n minWidth: \"inherit\",\n position: \"absolute\",\n top: theme.spacing(\"sm\"),\n right: theme.spacing(\"sm\"),\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","paper","backgroundColor","theme","colors","atmo1","padding","overflow","boxShadow","shadow","background","closeButton","minWidth","position","top","spacing","right"],"mappings":";;;;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,YAAY;AAAA,EACrEC,MAAM,CAAC;AAAA,EACPC,OAAO;AAAA,IACLC,iBAAiBC,YAAAA,MAAMC,OAAOC;AAAAA,IAC9BC,SAAS;AAAA,IACTC,UAAU;AAAA,IACVC,WAAWL,YAAAA,MAAMC,OAAOK;AAAAA,EAC1B;AAAA,EACAC,YAAY,CAAC;AAAA,EACbC,aAAa;AAAA,IACXL,SAAS;AAAA,IACTM,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,KAAKX,YAAAA,MAAMY,QAAQ,IAAI;AAAA,IACvBC,OAAOb,YAAAA,MAAMY,QAAQ,IAAI;AAAA,EAC3B;AACF,CAAC;;;"}
1
+ {"version":3,"file":"Drawer.styles.cjs","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n position: \"absolute\",\n top: theme.spacing(\"sm\"),\n right: theme.spacing(\"sm\"),\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","paper","backgroundColor","theme","colors","atmo1","padding","overflow","boxShadow","shadow","background","closeButton","position","top","spacing","right"],"mappings":";;;;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,YAAY;AAAA,EACrEC,MAAM,CAAC;AAAA,EACPC,OAAO;AAAA,IACLC,iBAAiBC,YAAAA,MAAMC,OAAOC;AAAAA,IAC9BC,SAAS;AAAA,IACTC,UAAU;AAAA,IACVC,WAAWL,YAAAA,MAAMC,OAAOK;AAAAA,EAC1B;AAAA,EACAC,YAAY,CAAC;AAAA,EACbC,aAAa;AAAA,IACXC,UAAU;AAAA,IACVC,KAAKV,YAAAA,MAAMW,QAAQ,IAAI;AAAA,IACvBC,OAAOZ,YAAAA,MAAMW,QAAQ,IAAI;AAAA,EAC3B;AACF,CAAC;;;"}
@@ -32,7 +32,7 @@ const HvFilterGroupRightPanel = ({
32
32
  setFilterValues,
33
33
  activeGroup
34
34
  } = React.useContext(FilterGroupContext.HvFilterGroupContext);
35
- const activeGroupOptions = React.useMemo(() => filterOptions[activeGroup]?.data.map((option) => option.id) || [], [filterOptions, activeGroup]);
35
+ const activeGroupOptions = React.useMemo(() => filterOptions[activeGroup]?.data.filter((option) => option.name.toLowerCase().includes(searchStr.toLowerCase())).map((option) => option.id) || [], [filterOptions, activeGroup, searchStr]);
36
36
  const activeFilterValues = React.useMemo(() => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)) || [], [filterValues, activeGroupOptions, activeGroup]);
37
37
  const listValues = React.useMemo(() => filterOptions[activeGroup]?.data.map((option) => ({
38
38
  ...option,
@@ -57,9 +57,17 @@ const HvFilterGroupRightPanel = ({
57
57
  };
58
58
  const handleSelectAll = React.useCallback(() => {
59
59
  const newFilterValues = cloneDeep__default.default(filterValues);
60
- newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;
60
+ if (anySelected) {
61
+ if (searchStr !== "") {
62
+ newFilterValues[activeGroup] = filterValues[activeGroup]?.filter((value) => !activeGroupOptions.includes(value));
63
+ } else {
64
+ newFilterValues[activeGroup] = [];
65
+ }
66
+ } else {
67
+ newFilterValues[activeGroup] = [...filterValues[activeGroup], ...activeGroupOptions];
68
+ }
61
69
  setFilterValues(newFilterValues);
62
- }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);
70
+ }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);
63
71
  const SelectAll = React.useCallback(() => {
64
72
  const nbrSelected = activeFilterValues?.length;
65
73
  const defaultLabel = /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { component: "span", children: nbrSelected > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"RightPanel.cjs","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\n\nimport cloneDeep from \"lodash/cloneDeep\";\n\nimport { HvCheckBox } from \"@core/components/CheckBox\";\nimport { HvInput } from \"@core/components/Input\";\nimport { HvList, HvListProps } from \"@core/components/List\";\nimport { HvPanel } from \"@core/components/Panel\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => filterOptions[activeGroup]?.data.map((option) => option.id) || [],\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler: HvListProps[\"onChange\"] = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues as any);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n classes?.selectAllContainer,\n classes?.selectAll,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","jsx","HvTypography","jsxs","Fragment","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","HvPanel","HvInput","root","search","searchBoxPlaceholder","str","HvList","list"],"mappings":"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"}
1
+ {"version":3,"file":"RightPanel.cjs","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\n\nimport cloneDeep from \"lodash/cloneDeep\";\n\nimport { HvCheckBox } from \"@core/components/CheckBox\";\nimport { HvInput } from \"@core/components/Input\";\nimport { HvList, HvListProps } from \"@core/components/List\";\nimport { HvPanel } from \"@core/components/Panel\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () =>\n filterOptions[activeGroup]?.data\n .filter((option) =>\n option.name.toLowerCase().includes(searchStr.toLowerCase())\n )\n .map((option) => option.id) || [],\n [filterOptions, activeGroup, searchStr]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler: HvListProps[\"onChange\"] = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues as any);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n\n if (anySelected) {\n if (searchStr !== \"\") {\n newFilterValues[activeGroup] = filterValues[activeGroup]?.filter(\n (value) => !activeGroupOptions.includes(value)\n );\n } else {\n newFilterValues[activeGroup] = [];\n }\n } else {\n newFilterValues[activeGroup] = [\n ...filterValues[activeGroup],\n ...activeGroupOptions,\n ];\n }\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n searchStr,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n classes?.selectAllContainer,\n classes?.selectAll,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","filter","option","name","toLowerCase","includes","map","activeFilterValues","value","listValues","label","selected","isHidden","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","jsx","HvTypography","jsxs","Fragment","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","HvPanel","HvInput","root","search","searchBoxPlaceholder","str","HvList","list"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuBar/Bar.tsx"],"sourcesContent":["import { useContext } from \"react\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { staticClasses, useClasses } from \"./Bar.styles\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\n\nexport { staticClasses as headerMenuBarClasses };\n\nexport type HvHeaderMenuBarClasses = ExtractNames<typeof useClasses>;\n\nexport interface BarProps extends HvBaseProps {\n data: HvHeaderNavigationItemProp[];\n type?: string;\n classes?: HvHeaderMenuBarClasses;\n}\n\nexport const Bar = (props: BarProps) => {\n const {\n id,\n data = [],\n type = \"menubar\",\n className,\n children,\n classes: classesProp,\n } = useDefaultProps(\"HvHeaderMenuBarBar\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n\n const isActive =\n isMenu && data.filter((item) => item.id === selectionPath?.[1]).length > 0;\n\n return (\n <div\n className={cx(\n classes.root,\n classes[type],\n {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n },\n className\n )}\n >\n <ul className={classes.list} id={id} onFocus={() => {}}>\n {children}\n </ul>\n </div>\n );\n};\n"],"names":["Bar","props","id","data","type","className","children","classes","classesProp","useDefaultProps","cx","useClasses","selectionPath","useContext","SelectionContext","isMenu","isActive","filter","item","length","jsx","root","hidden","active","list"],"mappings":";;;;;;;AAqBaA,MAAAA,MAAMA,CAACC,UAAoB;AAChC,QAAA;AAAA,IACJC;AAAAA,IACAC,OAAO,CAAE;AAAA,IACTC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,gBAAA,sBAAsBR,KAAK;AACzC,QAAA;AAAA,IAAEM;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,WAAAA,WAAWH,WAAW;AAExCI,QAAAA,gBAAgBC,iBAAWC,iBAAAA,gBAAgB;AAEjD,QAAMC,SAASX,SAAS;AAElBY,QAAAA,WACJD,UAAUZ,KAAKc,OAAQC,CAAAA,SAASA,KAAKhB,OAAOU,gBAAgB,CAAC,CAAC,EAAEO,SAAS;AAGzE,SAAAC,2BAAA,IAAC,SACC,WAAWV,GACTH,QAAQc,MACRd,QAAQH,IAAI,GACZ;AAAA,IACE,CAACG,QAAQe,MAAM,GAAGP;AAAAA,IAClB,CAACR,QAAQgB,MAAM,GAAGP;AAAAA,EACpB,GACAX,SACF,GAEA,UAACe,2BAAAA,IAAA,MAAA,EAAG,WAAWb,QAAQiB,MAAM,IAAQ,SAAS,MAAM;AAAA,EAAA,GACjDlB,UACH,EACF,CAAA;AAEJ;;;"}
1
+ {"version":3,"file":"Bar.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuBar/Bar.tsx"],"sourcesContent":["import { useContext } from \"react\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { staticClasses, useClasses } from \"./Bar.styles\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\n\nexport { staticClasses as headerMenuBarClasses };\n\nexport type HvHeaderMenuBarClasses = ExtractNames<typeof useClasses>;\n\nexport interface BarProps extends HvBaseProps {\n data: HvHeaderNavigationItemProp[];\n type?: \"menubar\" | \"menu\";\n classes?: HvHeaderMenuBarClasses;\n}\n\nexport const Bar = (props: BarProps) => {\n const {\n id,\n data = [],\n type = \"menubar\",\n className,\n children,\n classes: classesProp,\n } = useDefaultProps(\"HvHeaderMenuBarBar\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n\n const isActive =\n isMenu && data.filter((item) => item.id === selectionPath?.[1]).length > 0;\n\n return (\n <div\n className={cx(\n classes.root,\n classes[type],\n {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n },\n className\n )}\n >\n <ul className={classes.list} id={id} onFocus={() => {}}>\n {children}\n </ul>\n </div>\n );\n};\n"],"names":["Bar","props","id","data","type","className","children","classes","classesProp","useDefaultProps","cx","useClasses","selectionPath","useContext","SelectionContext","isMenu","isActive","filter","item","length","jsx","root","hidden","active","list"],"mappings":";;;;;;;AAqBaA,MAAAA,MAAMA,CAACC,UAAoB;AAChC,QAAA;AAAA,IACJC;AAAAA,IACAC,OAAO,CAAE;AAAA,IACTC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,gBAAA,sBAAsBR,KAAK;AACzC,QAAA;AAAA,IAAEM;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,WAAAA,WAAWH,WAAW;AAExCI,QAAAA,gBAAgBC,iBAAWC,iBAAAA,gBAAgB;AAEjD,QAAMC,SAASX,SAAS;AAElBY,QAAAA,WACJD,UAAUZ,KAAKc,OAAQC,CAAAA,SAASA,KAAKhB,OAAOU,gBAAgB,CAAC,CAAC,EAAEO,SAAS;AAGzE,SAAAC,2BAAA,IAAC,SACC,WAAWV,GACTH,QAAQc,MACRd,QAAQH,IAAI,GACZ;AAAA,IACE,CAACG,QAAQe,MAAM,GAAGP;AAAAA,IAClB,CAACR,QAAQgB,MAAM,GAAGP;AAAAA,EACpB,GACAX,SACF,GAEA,UAACe,2BAAAA,IAAA,MAAA,EAAG,WAAWb,QAAQiB,MAAM,IAAQ,SAAS,MAAM;AAAA,EAAA,GACjDlB,UACH,EACF,CAAA;AAEJ;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuBar.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuBar/MenuBar.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { HvHeaderMenuItem } from \"../MenuItem\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\nimport { Bar, HvHeaderMenuBarClasses } from \"./Bar\";\n\nexport interface HvHeaderMenuBarProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n data: HvHeaderNavigationItemProp[];\n type: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n levels: number;\n currentLevel: number;\n classes?: HvHeaderMenuBarClasses;\n}\n\nexport const HvHeaderMenuBar = (props: HvHeaderMenuBarProps) => {\n const {\n data = [],\n onClick,\n type = \"menubar\",\n levels,\n currentLevel,\n classes,\n ...others\n } = useDefaultProps(\"HvHeaderMenuBar\", props);\n return (\n <Bar data={data} type={type} classes={classes} {...others}>\n {data.map((item: HvHeaderNavigationItemProp) => (\n <HvHeaderMenuItem\n key={item.id}\n item={item}\n type={type}\n onClick={onClick}\n levels={levels}\n currentLevel={currentLevel}\n />\n ))}\n </Bar>\n );\n};\n"],"names":["HvHeaderMenuBar","props","data","onClick","type","levels","currentLevel","classes","others","useDefaultProps","jsx","Bar","map","item","HvHeaderMenuItem","id"],"mappings":";;;;;;AAoBaA,MAAAA,kBAAkBA,CAACC,UAAgC;AACxD,QAAA;AAAA,IACJC,OAAO,CAAE;AAAA,IACTC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,mBAAmBR,KAAK;AAE1C,SAAAS,+BAACC,IAAAA,OAAI,MAAY,MAAY,SAAsBH,GAAAA,QAChDN,eAAKU,IAAI,CAACC,SACRH,2BAAA,IAAAI,2BAAA,EAEC,MACA,MACA,SACA,QACA,aALKD,GAAAA,KAAKE,EAKiB,CAE9B,EACH,CAAA;AAEJ;;"}
1
+ {"version":3,"file":"MenuBar.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuBar/MenuBar.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { HvHeaderMenuItem } from \"../MenuItem\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\nimport { Bar, BarProps, HvHeaderMenuBarClasses } from \"./Bar\";\n\nexport interface HvHeaderMenuBarProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n data: HvHeaderNavigationItemProp[];\n type?: BarProps[\"type\"];\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n levels: number;\n currentLevel: number;\n classes?: HvHeaderMenuBarClasses;\n}\n\nexport const HvHeaderMenuBar = (props: HvHeaderMenuBarProps) => {\n const {\n data = [],\n onClick,\n type = \"menubar\",\n levels,\n currentLevel,\n classes,\n ...others\n } = useDefaultProps(\"HvHeaderMenuBar\", props);\n return (\n <Bar data={data} type={type} classes={classes} {...others}>\n {data.map((item: HvHeaderNavigationItemProp) => (\n <HvHeaderMenuItem\n key={item.id}\n item={item}\n type={type}\n onClick={onClick}\n levels={levels}\n currentLevel={currentLevel}\n />\n ))}\n </Bar>\n );\n};\n"],"names":["HvHeaderMenuBar","props","data","onClick","type","levels","currentLevel","classes","others","useDefaultProps","jsx","Bar","map","item","HvHeaderMenuItem","id"],"mappings":";;;;;;AAoBaA,MAAAA,kBAAkBA,CAACC,UAAgC;AACxD,QAAA;AAAA,IACJC,OAAO,CAAE;AAAA,IACTC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,mBAAmBR,KAAK;AAE1C,SAAAS,+BAACC,IAAAA,OAAI,MAAY,MAAY,SAAsBH,GAAAA,QAChDN,eAAKU,IAAI,CAACC,SACRH,2BAAA,IAAAI,2BAAA,EAEC,MACA,MACA,SACA,QACA,aALKD,GAAAA,KAAKE,EAKiB,CAE9B,EACH,CAAA;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { MouseEvent, useContext } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { FocusContext } from \"../utils/FocusContext\";\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { useClasses, staticClasses } from \"./MenuItem.styles\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\nimport { Bar } from \"../MenuBar/Bar\";\n\nexport { staticClasses as headerMenuItemClasses };\n\nexport type HvHeaderMenuItemClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvHeaderMenuItemProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n item: HvHeaderNavigationItemProp;\n type?: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n levels: number;\n currentLevel: number;\n classes?: HvHeaderMenuItemClasses;\n}\n\n// Traverse the tree of items and return the first href it finds\nconst traverseItem = (node: HvHeaderNavigationItemProp) => {\n let href;\n let target;\n\n if (node?.href) {\n href = node?.href;\n target = node?.target;\n } else if (node?.data != null && node?.data?.length > 0) {\n let i = 0;\n while (href == null && i < node.data.length) {\n const childNavItem = traverseItem(node?.data[i]);\n if (childNavItem?.href != null) {\n href = childNavItem?.href;\n target = childNavItem?.target;\n break;\n }\n\n i += 1;\n }\n }\n\n return { href, target };\n};\n\nexport const HvHeaderMenuItem = (props: HvHeaderMenuItemProps) => {\n const {\n id,\n item,\n type,\n onClick,\n levels,\n currentLevel,\n classes: classesProp,\n className,\n } = useDefaultProps(\"HvHeaderMenuItem\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const selectionPath = useContext(SelectionContext);\n\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n\n const hasSubLevel = data && data.length;\n\n const isMenu = type === \"menu\";\n\n const isSelected = selectionPath?.[isMenu ? 1 : 0] === item.id;\n\n // true: if the item is part of the selection path but is not the current page the user is seeing, i.e has more sub levels\n // page: used when the selected item is actually the current page the user is seeing\n const isCurrent = isSelected ? (hasSubLevel ? true : \"page\") : undefined;\n\n const actionHandler = (event: any) => {\n if (\n event.type === \"click\" ||\n isKey(event, \"Enter\") ||\n isKey(event, \"Space\")\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event: React.FocusEvent) => {\n dispatch?.({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const itemProps = {\n onClick: actionHandler,\n onKeyDown: actionHandler,\n onFocus: handleFocus,\n };\n\n const label = (\n <HvTypography\n component=\"span\"\n variant={isSelected ? \"label\" : \"body\"}\n data-text={item.label}\n >\n {item.label}\n </HvTypography>\n );\n\n let itemHref = item?.href;\n let itemTarget = item?.target;\n\n // apps should configure the href even on parent items without content\n // so the fallback logic is theirs, but if not we'll do our best to find a link\n if (item?.href == null) {\n const { href, target } = traverseItem(item);\n itemHref = href;\n itemTarget = target;\n }\n\n return (\n <li\n id={id}\n key={item.label}\n className={cx(\n classes.root,\n {\n [classes.menu]: isMenu,\n [classes.menubar]: !isMenu,\n [classes.selected]: !!isSelected,\n },\n className\n )}\n >\n {itemHref ? (\n <a\n className={classes.link}\n href={itemHref}\n target={itemTarget}\n {...itemProps}\n aria-current={isCurrent}\n // Fix for a possible bug in playwright where, even though hidden from screen readers and not appearing in the accessibility\n // tree, due to the styling duplication (span::after - using 'data-text'), locators have to double the name.\n aria-label={item.label}\n >\n {label}\n </a>\n ) : (\n // keeping this code path for backwards compatibility, but\n // shouldn't really be used as it's not accessible\n <div\n className={classes.button}\n role=\"button\"\n {...itemProps}\n tabIndex={0}\n aria-current={isCurrent}\n >\n {label}\n </div>\n )}\n {/* Limits levels to no more than 2. More than that is not expected and not in DS. */}\n {hasSubLevel && currentLevel < levels && currentLevel < 2 && (\n <Bar data={data} type=\"menu\">\n {data.map((itm: HvHeaderNavigationItemProp) => (\n <HvHeaderMenuItem\n key={itm.id}\n item={itm}\n type=\"menu\"\n onClick={onClick}\n levels={levels}\n currentLevel={currentLevel + 1}\n />\n ))}\n </Bar>\n )}\n </li>\n );\n};\n"],"names":["traverseItem","node","href","target","data","length","i","childNavItem","HvHeaderMenuItem","props","id","item","type","onClick","levels","currentLevel","classes","classesProp","className","useDefaultProps","cx","useClasses","selectionPath","useContext","SelectionContext","dispatch","FocusContext","hasSubLevel","isMenu","isSelected","isCurrent","undefined","actionHandler","event","isKey","currentTarget","blur","handleFocus","itemFocused","itemProps","onKeyDown","onFocus","label","jsx","HvTypography","itemHref","itemTarget","root","menu","menubar","selected","link","button","Bar","map","itm"],"mappings":";;;;;;;;;;;AA8BA,MAAMA,eAAeA,CAACC,SAAqC;AACrDC,MAAAA;AACAC,MAAAA;AAEJ,MAAIF,MAAMC,MAAM;AACdA,WAAOD,MAAMC;AACbC,aAASF,MAAME;AAAAA,EAAAA,WACNF,MAAMG,QAAQ,QAAQH,MAAMG,MAAMC,SAAS,GAAG;AACvD,QAAIC,IAAI;AACR,WAAOJ,QAAQ,QAAQI,IAAIL,KAAKG,KAAKC,QAAQ;AAC3C,YAAME,eAAeP,aAAaC,MAAMG,KAAKE,CAAC,CAAC;AAC3CC,UAAAA,cAAcL,QAAQ,MAAM;AAC9BA,eAAOK,cAAcL;AACrBC,iBAASI,cAAcJ;AACvB;AAAA,MACF;AAEK,WAAA;AAAA,IACP;AAAA,EACF;AAEO,SAAA;AAAA,IAAED;AAAAA,IAAMC;AAAAA,EAAAA;AACjB;AAEaK,MAAAA,mBAAmBA,CAACC,UAAiC;AAC1D,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,EAAAA,IACEC,gBAAgB,gBAAA,oBAAoBV,KAAK;AACvC,QAAA;AAAA,IAAEO;AAAAA,IAASI;AAAAA,EAAAA,IAAOC,gBAAAA,WAAWJ,WAAW;AAExCK,QAAAA,gBAAgBC,iBAAWC,iBAAAA,gBAAgB;AAE3C,QAAA;AAAA,IAAEC;AAAAA,EAAAA,IAAaF,MAAAA,WAAWG,aAAAA,YAAY;AAEtC,QAAA;AAAA,IAAEtB;AAAAA,EAASO,IAAAA;AAEXgB,QAAAA,cAAcvB,QAAQA,KAAKC;AAEjC,QAAMuB,SAAShB,SAAS;AAExB,QAAMiB,aAAaP,gBAAgBM,SAAS,IAAI,CAAC,MAAMjB,KAAKD;AAI5D,QAAMoB,YAAYD,aAAcF,cAAc,OAAO,SAAUI;AAEzDC,QAAAA,gBAAgBA,CAACC,UAAe;AAElCA,QAAAA,MAAMrB,SAAS,WACfsB,oBAAMD,OAAO,OAAO,KACpBC,cAAAA,MAAMD,OAAO,OAAO,GACpB;AACIA,UAAAA,MAAMrB,SAAS,SAAS;AAC1BqB,cAAME,cAAcC;MACtB;AAEAvB,gBAAUoB,OAAOtB,IAAI;AAAA,IACvB;AAAA,EAAA;AAGI0B,QAAAA,cAAcA,CAACJ,UAA4B;AACpC,eAAA;AAAA,MAAErB,MAAM;AAAA,MAAkB0B,aAAaL,MAAME;AAAAA,IAAAA,CAAe;AAAA,EAAA;AAGzE,QAAMI,YAAY;AAAA,IAChB1B,SAASmB;AAAAA,IACTQ,WAAWR;AAAAA,IACXS,SAASJ;AAAAA,EAAAA;AAGX,QAAMK,QACJC,2BAAAA,IAACC,WACC,cAAA,EAAA,WAAU,QACV,SAASf,aAAa,UAAU,QAChC,aAAWlB,KAAK+B,OAEf/B,eAAK+B,MACR,CAAA;AAGF,MAAIG,WAAWlC,MAAMT;AACrB,MAAI4C,aAAanC,MAAMR;AAInBQ,MAAAA,MAAMT,QAAQ,MAAM;AAChB,UAAA;AAAA,MAAEA;AAAAA,MAAMC;AAAAA,IAAAA,IAAWH,aAAaW,IAAI;AAC/BT,eAAAA;AACEC,iBAAAA;AAAAA,EACf;AAEA,yCACG,MACC,EAAA,IAEA,WAAWiB,GACTJ,QAAQ+B,MACR;AAAA,IACE,CAAC/B,QAAQgC,IAAI,GAAGpB;AAAAA,IAChB,CAACZ,QAAQiC,OAAO,GAAG,CAACrB;AAAAA,IACpB,CAACZ,QAAQkC,QAAQ,GAAG,CAAC,CAACrB;AAAAA,EAAAA,GAExBX,SACF,GAEC2B,UAAAA;AAAAA,IACC,WAAAF,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW3B,QAAQmC;AAAAA,QACnB,MAAMN;AAAAA,QACN,QAAQC;AAAAA,QACR,GAAIP;AAAAA,QACJ,gBAAcT;AAAAA,QAGd,cAAYnB,KAAK+B;AAAAA,QAEhBA,UAAAA;AAAAA,MAAAA;AAAAA,IACH;AAAA;AAAA;AAAA,MAICC,2BAAA,IAAA,OAAA,EACC,WAAW3B,QAAQoC,QACnB,MAAK,UACDb,GAAAA,WACJ,UAAU,GACV,gBAAcT,WAEbY,UACH,OAAA;AAAA;AAAA,IAGDf,eAAeZ,eAAeD,UAAUC,eAAe,KACtD4B,2BAAA,IAACU,IAAI,KAAA,EAAA,MAAY,MAAK,QACnBjD,UAAKkD,KAAAA,IAAI,CAACC,QACRZ,2BAAA,IAAA,kBAAA,EAEC,MAAMY,KACN,MAAK,QACL,SACA,QACA,cAAcxC,eAAe,EALxBwC,GAAAA,IAAI7C,EAKsB,CAElC,EACH,CAAA;AAAA,EAAA,KAlDGC,KAAK+B,KAoDZ;AAEJ;;;"}
1
+ {"version":3,"file":"MenuItem.cjs","sources":["../../../../../../src/components/Header/Navigation/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { MouseEvent, useContext } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { FocusContext } from \"../utils/FocusContext\";\nimport { SelectionContext } from \"../utils/SelectionContext\";\nimport { useClasses, staticClasses } from \"./MenuItem.styles\";\nimport { HvHeaderNavigationItemProp } from \"../useSelectionPath\";\nimport { Bar } from \"../MenuBar/Bar\";\n\nexport { staticClasses as headerMenuItemClasses };\n\nexport type HvHeaderMenuItemClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvHeaderMenuItemProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n item: HvHeaderNavigationItemProp;\n type?: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n levels: number;\n currentLevel: number;\n classes?: HvHeaderMenuItemClasses;\n}\n\n// Traverse the tree of items and return the first href it finds\nconst traverseItem = (\n node: HvHeaderNavigationItemProp\n): { href?: string; target?: string } => {\n let href: string | undefined;\n let target: string | undefined;\n\n if (node?.href) {\n href = node?.href;\n target = node?.target;\n } else if (node?.data != null && node?.data?.length > 0) {\n let i = 0;\n while (href == null && i < node.data.length) {\n const childNavItem = traverseItem(node?.data[i]);\n if (childNavItem?.href != null) {\n href = childNavItem?.href;\n target = childNavItem?.target;\n break;\n }\n\n i += 1;\n }\n }\n\n return { href, target };\n};\n\nexport const HvHeaderMenuItem = (props: HvHeaderMenuItemProps) => {\n const {\n id,\n item,\n type,\n onClick,\n levels,\n currentLevel,\n classes: classesProp,\n className,\n } = useDefaultProps(\"HvHeaderMenuItem\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const selectionPath = useContext(SelectionContext);\n\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n\n const hasSubLevel = data && data.length;\n\n const isMenu = type === \"menu\";\n\n const isSelected = selectionPath?.[isMenu ? 1 : 0] === item.id;\n\n // true: if the item is part of the selection path but is not the current page the user is seeing, i.e has more sub levels\n // page: used when the selected item is actually the current page the user is seeing\n const isCurrent = isSelected ? (hasSubLevel ? true : \"page\") : undefined;\n\n const actionHandler = (event: any) => {\n if (\n event.type === \"click\" ||\n isKey(event, \"Enter\") ||\n isKey(event, \"Space\")\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event: React.FocusEvent) => {\n dispatch?.({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const itemProps = {\n onClick: actionHandler,\n onKeyDown: actionHandler,\n onFocus: handleFocus,\n };\n\n const label = (\n <HvTypography\n component=\"span\"\n variant={isSelected ? \"label\" : \"body\"}\n data-text={item.label}\n >\n {item.label}\n </HvTypography>\n );\n\n let itemHref = item?.href;\n let itemTarget = item?.target;\n\n // apps should configure the href even on parent items without content\n // so the fallback logic is theirs, but if not we'll do our best to find a link\n if (item?.href == null) {\n const { href, target } = traverseItem(item);\n itemHref = href;\n itemTarget = target;\n }\n\n return (\n <li\n id={id}\n key={item.label}\n className={cx(\n classes.root,\n {\n [classes.menu]: isMenu,\n [classes.menubar]: !isMenu,\n [classes.selected]: !!isSelected,\n },\n className\n )}\n >\n {itemHref ? (\n <a\n className={classes.link}\n href={itemHref}\n target={itemTarget}\n {...itemProps}\n aria-current={isCurrent}\n // Fix for a possible bug in playwright where, even though hidden from screen readers and not appearing in the accessibility\n // tree, due to the styling duplication (span::after - using 'data-text'), locators have to double the name.\n aria-label={item.label}\n >\n {label}\n </a>\n ) : (\n // keeping this code path for backwards compatibility, but\n // shouldn't really be used as it's not accessible\n <div\n className={classes.button}\n role=\"button\"\n {...itemProps}\n tabIndex={0}\n aria-current={isCurrent}\n >\n {label}\n </div>\n )}\n {/* Limits levels to no more than 2. More than that is not expected and not in DS. */}\n {hasSubLevel && currentLevel < levels && currentLevel < 2 && (\n <Bar data={data} type=\"menu\">\n {data.map((itm: HvHeaderNavigationItemProp) => (\n <HvHeaderMenuItem\n key={itm.id}\n item={itm}\n type=\"menu\"\n onClick={onClick}\n levels={levels}\n currentLevel={currentLevel + 1}\n />\n ))}\n </Bar>\n )}\n </li>\n );\n};\n"],"names":["traverseItem","node","href","target","data","length","i","childNavItem","HvHeaderMenuItem","props","id","item","type","onClick","levels","currentLevel","classes","classesProp","className","useDefaultProps","cx","useClasses","selectionPath","useContext","SelectionContext","dispatch","FocusContext","hasSubLevel","isMenu","isSelected","isCurrent","undefined","actionHandler","event","isKey","currentTarget","blur","handleFocus","itemFocused","itemProps","onKeyDown","onFocus","label","jsx","HvTypography","itemHref","itemTarget","root","menu","menubar","selected","link","button","Bar","map","itm"],"mappings":"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"}