@servicetitan/anvil2 2.1.0 → 2.2.0

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 (143) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{Calendar-BhCce9hE.js → Calendar-D0CczOpQ.js} +2 -2
  3. package/dist/{Calendar-BhCce9hE.js.map → Calendar-D0CczOpQ.js.map} +1 -1
  4. package/dist/{Calendar-D93exRLI.js → Calendar-oNlBgZKB.js} +2 -2
  5. package/dist/{Calendar-D93exRLI.js.map → Calendar-oNlBgZKB.js.map} +1 -1
  6. package/dist/Calendar.js +2 -2
  7. package/dist/{Checkbox-cVlWQOTq.js → Checkbox-DIY-6agd.js} +4 -4
  8. package/dist/{Checkbox-cVlWQOTq.js.map → Checkbox-DIY-6agd.js.map} +1 -1
  9. package/dist/{Checkbox-DHWOiSml.js → Checkbox-DuzAqrE7.js} +2 -2
  10. package/dist/{Checkbox-DHWOiSml.js.map → Checkbox-DuzAqrE7.js.map} +1 -1
  11. package/dist/Checkbox.js +1 -1
  12. package/dist/{Combobox-BGYeW0ZF.js → Combobox-CSGn20KQ.js} +14 -7
  13. package/dist/Combobox-CSGn20KQ.js.map +1 -0
  14. package/dist/Combobox.js +1 -1
  15. package/dist/{DataTable-Dnt-q7jf.js → DataTable-D30sE1Xt.js} +5 -5
  16. package/dist/{DataTable-Dnt-q7jf.js.map → DataTable-D30sE1Xt.js.map} +1 -1
  17. package/dist/{DateFieldRange-Dx2YbnQ-.js → DateFieldRange-DBOiqaML.js} +45 -35
  18. package/dist/DateFieldRange-DBOiqaML.js.map +1 -0
  19. package/dist/DateFieldRange.js +1 -1
  20. package/dist/{DateFieldSingle-CZg1n-n2.js → DateFieldSingle-C4hU55MP.js} +37 -28
  21. package/dist/DateFieldSingle-C4hU55MP.js.map +1 -0
  22. package/dist/DateFieldSingle.js +1 -1
  23. package/dist/{DateFieldYearless-D7-O2FLP.js → DateFieldYearless-BXkUiHIR.js} +4 -4
  24. package/dist/{DateFieldYearless-D7-O2FLP.js.map → DateFieldYearless-BXkUiHIR.js.map} +1 -1
  25. package/dist/DateFieldYearless.js +1 -1
  26. package/dist/{DateFieldYearlessRange-6EocQch6.js → DateFieldYearlessRange-CGffFnVT.js} +4 -4
  27. package/dist/{DateFieldYearlessRange-6EocQch6.js.map → DateFieldYearlessRange-CGffFnVT.js.map} +1 -1
  28. package/dist/DateFieldYearlessRange.js +1 -1
  29. package/dist/{DaysOfTheWeek-BfCVsQK7.js → DaysOfTheWeek-DJEDopC9.js} +4 -4
  30. package/dist/{DaysOfTheWeek-BfCVsQK7.js.map → DaysOfTheWeek-DJEDopC9.js.map} +1 -1
  31. package/dist/DaysOfTheWeek.js +1 -1
  32. package/dist/{Dialog-DVBl8phs.js → Dialog-BbsZMnCA.js} +3 -3
  33. package/dist/{Dialog-DVBl8phs.js.map → Dialog-BbsZMnCA.js.map} +1 -1
  34. package/dist/Dialog.js +1 -1
  35. package/dist/{Drawer-c_d511iA.js → Drawer-Dhq76ot3.js} +3 -3
  36. package/dist/{Drawer-c_d511iA.js.map → Drawer-Dhq76ot3.js.map} +1 -1
  37. package/dist/Drawer.js +1 -1
  38. package/dist/DrillDown.js +1 -1
  39. package/dist/{FieldDialog-BHDi3oXg.js → FieldDialog-CAuhkCZY.js} +7 -5
  40. package/dist/{FieldDialog-BHDi3oXg.js.map → FieldDialog-CAuhkCZY.js.map} +1 -1
  41. package/dist/{FieldLabel-DSrHbw9U.js → FieldLabel-DL0D6fvc.js} +2 -2
  42. package/dist/{FieldLabel-DSrHbw9U.js.map → FieldLabel-DL0D6fvc.js.map} +1 -1
  43. package/dist/FieldLabel.js +1 -1
  44. package/dist/{FieldMessage-B0LBQl0D.js → FieldMessage-DS0COrjp.js} +5 -5
  45. package/dist/FieldMessage-DS0COrjp.js.map +1 -0
  46. package/dist/FieldMessage.js +1 -1
  47. package/dist/{Helper-BXiz9ZRC.js → Helper-PNGm_U2X.js} +2 -2
  48. package/dist/{Helper-BXiz9ZRC.js.map → Helper-PNGm_U2X.js.map} +1 -1
  49. package/dist/{InputMask-CdJ-cfLV.js → InputMask-Ds0W2fKy.js} +2 -2
  50. package/dist/{InputMask-CdJ-cfLV.js.map → InputMask-Ds0W2fKy.js.map} +1 -1
  51. package/dist/InputMask.js +1 -1
  52. package/dist/{ListView-D7GBpVnV.js → ListView-MMmJDM--.js} +2 -2
  53. package/dist/{ListView-D7GBpVnV.js.map → ListView-MMmJDM--.js.map} +1 -1
  54. package/dist/ListView.js +1 -1
  55. package/dist/MultiSelectField.js +1 -1
  56. package/dist/{MultiSelectFieldSync-Bc7IphJ7.js → MultiSelectFieldSync-Bey99LzJ.js} +23 -4
  57. package/dist/MultiSelectFieldSync-Bey99LzJ.js.map +1 -0
  58. package/dist/{NumberField-CcGYnIFG.js → NumberField-CDkEUfXW.js} +3 -3
  59. package/dist/{NumberField-CcGYnIFG.js.map → NumberField-CDkEUfXW.js.map} +1 -1
  60. package/dist/NumberField.js +1 -1
  61. package/dist/{Page-D_IpquWk.js → Page-BVxybI-j.js} +6 -6
  62. package/dist/{Page-D_IpquWk.js.map → Page-BVxybI-j.js.map} +1 -1
  63. package/dist/Page.js +1 -1
  64. package/dist/{Popover-BxgfNjyI.js → Popover-4C5IVk8T.js} +6 -6
  65. package/dist/{Popover-BxgfNjyI.js.map → Popover-4C5IVk8T.js.map} +1 -1
  66. package/dist/Popover.css +15 -14
  67. package/dist/Popover.js +1 -1
  68. package/dist/{ProgressBar-B_g3VRUD.js → ProgressBar-BGwp-qnf.js} +3 -3
  69. package/dist/{ProgressBar-B_g3VRUD.js.map → ProgressBar-BGwp-qnf.js.map} +1 -1
  70. package/dist/ProgressBar.js +1 -1
  71. package/dist/{Radio-CtG1jOiO.js → Radio-BRcpSu-d.js} +4 -4
  72. package/dist/{Radio-CtG1jOiO.js.map → Radio-BRcpSu-d.js.map} +1 -1
  73. package/dist/{Radio-DpSPaTCO.js → Radio-D7hNws2b.js} +2 -2
  74. package/dist/{Radio-DpSPaTCO.js.map → Radio-D7hNws2b.js.map} +1 -1
  75. package/dist/Radio.js +1 -1
  76. package/dist/{SelectCard-WXTxM25t.js → SelectCard-Bag44PmE.js} +3 -3
  77. package/dist/{SelectCard-WXTxM25t.js.map → SelectCard-Bag44PmE.js.map} +1 -1
  78. package/dist/SelectCard.js +1 -1
  79. package/dist/SelectField.js +1 -1
  80. package/dist/{SelectFieldSync-0UwcyJTA.js → SelectFieldSync-CigqXq3T.js} +23 -4
  81. package/dist/SelectFieldSync-CigqXq3T.js.map +1 -0
  82. package/dist/{SelectTrigger-DhEe9uk9.js → SelectTrigger-DgsvUfyl.js} +2 -2
  83. package/dist/{SelectTrigger-DhEe9uk9.js.map → SelectTrigger-DgsvUfyl.js.map} +1 -1
  84. package/dist/SelectTrigger.js +1 -1
  85. package/dist/{SelectTriggerBase-C6HYuH_N.js → SelectTriggerBase-OxfNqdIq.js} +3 -3
  86. package/dist/{SelectTriggerBase-C6HYuH_N.js.map → SelectTriggerBase-OxfNqdIq.js.map} +1 -1
  87. package/dist/{Switch-stfkX7Jb.js → Switch-D0zwZCg4.js} +2 -2
  88. package/dist/{Switch-stfkX7Jb.js.map → Switch-D0zwZCg4.js.map} +1 -1
  89. package/dist/Switch.js +1 -1
  90. package/dist/Table.js +1 -1
  91. package/dist/{TextField-DoC8YyDM.js → TextField-BycenT6H.js} +3 -3
  92. package/dist/{TextField-DoC8YyDM.js.map → TextField-BycenT6H.js.map} +1 -1
  93. package/dist/{TextField-rpj9q7zM.js → TextField-Dfzn2HeL.js} +2 -2
  94. package/dist/{TextField-rpj9q7zM.js.map → TextField-Dfzn2HeL.js.map} +1 -1
  95. package/dist/TextField.js +1 -1
  96. package/dist/{Textarea-NLBfav5i.js → Textarea-BwbwJP6z.js} +3 -3
  97. package/dist/{Textarea-NLBfav5i.js.map → Textarea-BwbwJP6z.js.map} +1 -1
  98. package/dist/Textarea.js +1 -1
  99. package/dist/{TimeField-CnhHEvuK.js → TimeField-B0WSzSfJ.js} +3 -3
  100. package/dist/{TimeField-CnhHEvuK.js.map → TimeField-B0WSzSfJ.js.map} +1 -1
  101. package/dist/TimeField.js +1 -1
  102. package/dist/TimezoneMessage-Cnsl4cHT.js +84 -0
  103. package/dist/TimezoneMessage-Cnsl4cHT.js.map +1 -0
  104. package/dist/TimezoneMessage.css +7 -0
  105. package/dist/Toast.js +2 -2
  106. package/dist/{Toaster-Ca0dk3qg.js → Toaster-9Q_yaKGu.js} +2 -2
  107. package/dist/{Toaster-Ca0dk3qg.js.map → Toaster-9Q_yaKGu.js.map} +1 -1
  108. package/dist/{Toaster-ChpE9e3Z.js → Toaster-DHo8dnWH.js} +2 -2
  109. package/dist/{Toaster-ChpE9e3Z.js.map → Toaster-DHo8dnWH.js.map} +1 -1
  110. package/dist/{Toolbar-BO_vOFMg.js → Toolbar-CVOenuCF.js} +12 -12
  111. package/dist/{Toolbar-BO_vOFMg.js.map → Toolbar-CVOenuCF.js.map} +1 -1
  112. package/dist/Toolbar.js +1 -1
  113. package/dist/{Tooltip-CUiAJXak.js → Tooltip-Bt62hC5J.js} +5 -5
  114. package/dist/{Tooltip-CUiAJXak.js.map → Tooltip-Bt62hC5J.js.map} +1 -1
  115. package/dist/Tooltip.css +9 -8
  116. package/dist/Tooltip.js +1 -1
  117. package/dist/{YearlessDateInputWithPicker-BqDyd-Vq.js → YearlessDateInputWithPicker-ztozRk-X.js} +2 -2
  118. package/dist/{YearlessDateInputWithPicker-BqDyd-Vq.js.map → YearlessDateInputWithPicker-ztozRk-X.js.map} +1 -1
  119. package/dist/beta/components/MultiSelectField/types.d.ts +2 -0
  120. package/dist/beta/components/SelectField/types.d.ts +2 -0
  121. package/dist/beta.js +7 -7
  122. package/dist/components/DateFieldRange/DateFieldRange.d.ts +8 -1
  123. package/dist/components/DateFieldRange/internal/DateFieldRangeCalendar.d.ts +3 -1
  124. package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +8 -1
  125. package/dist/components/DateFieldSingle/internal/DateFieldSingleCalendar.d.ts +3 -1
  126. package/dist/components/DateFieldSingle/internal/TimezoneMessage.d.ts +6 -0
  127. package/dist/components/DateFieldSingle/internal/utils.d.ts +11 -0
  128. package/dist/{index.esm-BZV0wNKZ.js → index.esm-K9kxJhLx.js} +2 -1
  129. package/dist/{index.esm-BZV0wNKZ.js.map → index.esm-K9kxJhLx.js.map} +1 -1
  130. package/dist/index.js +29 -29
  131. package/dist/{useDrilldown-CjabTI9n.js → useDrilldown-jbU4Cs5l.js} +2 -2
  132. package/dist/{useDrilldown-CjabTI9n.js.map → useDrilldown-jbU4Cs5l.js.map} +1 -1
  133. package/dist/{useInitialFocus-CdoVwSbr.js → useInitialFocus-BRRbylek.js} +2 -2
  134. package/dist/{useInitialFocus-CdoVwSbr.js.map → useInitialFocus-BRRbylek.js.map} +1 -1
  135. package/package.json +4 -3
  136. package/dist/Combobox-BGYeW0ZF.js.map +0 -1
  137. package/dist/DateFieldRange-Dx2YbnQ-.js.map +0 -1
  138. package/dist/DateFieldSingle-CZg1n-n2.js.map +0 -1
  139. package/dist/FieldMessage-B0LBQl0D.js.map +0 -1
  140. package/dist/MultiSelectFieldSync-Bc7IphJ7.js.map +0 -1
  141. package/dist/SelectFieldSync-0UwcyJTA.js.map +0 -1
  142. package/dist/utils-BHKRoLps.js +0 -60
  143. package/dist/utils-BHKRoLps.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectFieldSync-0UwcyJTA.js","sources":["../src/beta/components/SelectField/internal/SelectFieldList.tsx","../src/beta/components/SelectField/internal/SelectFieldInput.tsx","../src/beta/components/SelectField/internal/useCombo.tsx","../src/beta/components/SelectField/SelectField.tsx","../src/beta/components/SelectField/SelectFieldSync.tsx"],"sourcesContent":["import { SelectFieldDownshiftItem, SelectFieldOption } from \"../types\";\nimport { UseComboboxPropGetters } from \"downshift\";\nimport { CSSProperties, MutableRefObject, useCallback } from \"react\";\nimport { CheckState } from \"../../../../types\";\nimport { FieldListBase } from \"./FieldListBase\";\nimport { VirtualizedFieldListBase } from \"./VirtualizedFieldListBase\";\nimport { SectionMeta } from \"./types\";\n\ntype GetMenuProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getMenuProps\"];\ntype GetItemProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getItemProps\"];\n\nexport type SelectFieldListProps = {\n isOpen: boolean;\n items: SelectFieldDownshiftItem[];\n getMenuProps: GetMenuProps;\n getItemProps: GetItemProps;\n highlightedIndex: number;\n highlightChangeTypeRef?: MutableRefObject<string>;\n selectedOption: SelectFieldOption | null;\n hasMore: boolean;\n onLoadMore: () => void;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n sectionsMeta?: SectionMeta[];\n virtualize?: boolean;\n};\n\nexport const SelectFieldList = ({\n selectedOption,\n virtualize,\n ...rest\n}: SelectFieldListProps) => {\n const getCheckedState = useCallback(\n (item: SelectFieldDownshiftItem): CheckState =>\n selectedOption?.id === item.original.id ? \"checked\" : \"unchecked\",\n [selectedOption],\n );\n\n const ListComponent = virtualize ? VirtualizedFieldListBase : FieldListBase;\n\n return (\n <ListComponent\n {...rest}\n selectionType=\"single\"\n getCheckedState={getCheckedState}\n />\n );\n};\n\nSelectFieldList.displayName = \"SelectFieldList\";\n","import styles from \"../../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport cx from \"classnames\";\nimport { PassThroughProps, Size } from \"../../../../types\";\nimport { Button } from \"../../../../components/Button\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { ReactElement, RefObject } from \"react\";\n\n/**\n * Props for the SelectFieldInput component\n * @property {string} [placeholder] - Placeholder text displayed when input is empty\n * @property {Extract<Size, \"small\" | \"medium\" | \"large\">} [size] - Size variant of the input\n * @property {boolean} [disableClearButton] - Hides the clear button when true\n * @property {boolean} [disableToggleButton] - Hides the toggle button when true\n * @property {boolean} [disabled] - Disables the input entirely\n * @property {boolean} [readOnly] - Cannot be modified but remains interactive\n * @property {boolean} [required] - Marks the input as required for form validation\n * @property {boolean} [error] - Shows error styling on the input when true\n * @property {() => void} [onClear] - Callback fired when the clear button is clicked\n * @property {string} [id] - HTML id attribute for the input element\n * @property {string} [popoverTarget] - Target identifier for popover association\n * @property {RefObject<HTMLDivElement>} [inputWrapperRef] - Ref for the input wrapper div element\n * @property {PassThroughProps<\"div\">} [htmlInputWrapperProps] - Additional props passed to the wrapper div\n * @property {PassThroughProps<\"input\">} [inputProps] - Additional props passed to the input element\n * @property {PassThroughProps<\"button\">} [toggleButtonProps] - Additional props passed to the toggle button\n * @property {string | ReactElement} [prefix] - Content to display before the input\n * @property {string | ReactElement} [suffix] - Content to display after the input\n */\nexport type SelectFieldInputProps = {\n placeholder?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n disableClearButton?: boolean;\n disableToggleButton?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: boolean;\n onClear?: () => void;\n id?: string;\n popoverTarget?: string;\n inputWrapperRef?: RefObject<HTMLDivElement>;\n htmlInputWrapperProps?: PassThroughProps<\"div\">;\n inputProps?: PassThroughProps<\"input\">;\n toggleButtonProps?: PassThroughProps<\"button\">;\n prefix?: string | ReactElement;\n suffix?: string | ReactElement;\n};\n\n/**\n * Internal input component for the SelectField that provides the text input and action buttons.\n *\n * Features:\n * - Text input for filtering and displaying selected values\n * - Optional clear button for removing the current selection\n * - Optional toggle button for opening/closing the dropdown menu\n * - Supports multiple size variants (small, medium, large)\n * - Fully accessible with proper ARIA labels on buttons\n * - Supports pass-through props for customization of internal elements\n * - Optional prefix and suffix content\n * - Error state styling\n *\n * @example\n * <SelectFieldInput\n * placeholder=\"Search...\"\n * size=\"medium\"\n * onClear={() => handleClear()}\n * prefix=\"$\"\n * />\n */\nexport const SelectFieldInput = ({\n placeholder,\n size,\n disableClearButton,\n disableToggleButton,\n disabled,\n readOnly,\n required,\n error,\n onClear,\n id,\n inputWrapperRef,\n htmlInputWrapperProps,\n inputProps,\n toggleButtonProps,\n prefix,\n suffix,\n}: SelectFieldInputProps) => {\n const inputWrapperClassNames = cx(styles[\"input-wrapper\"], {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: disableClearButton,\n [styles[\"no-toggle-button\"]]: disableToggleButton,\n [styles[\"disabled\"]]: disabled || readOnly,\n });\n\n return (\n <div\n ref={inputWrapperRef}\n {...htmlInputWrapperProps}\n className={cx(inputWrapperClassNames, htmlInputWrapperProps?.className)}\n >\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n <input\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n {...inputProps}\n className={cx(styles[\"input\"], inputProps?.className, {\n [styles[\"error\"]]: error,\n })}\n />\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n <div className={styles[\"buttons-wrapper\"]}>\n {disableClearButton ? null : (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n icon={Close}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n className={styles[\"close-button\"]}\n onClick={() => {\n onClear?.();\n }}\n />\n </div>\n )}\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n icon={Chevron_Right}\n aria-label=\"toggle menu\"\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n {...toggleButtonProps}\n className={cx(\n styles[\"toggle-button\"],\n toggleButtonProps?.className,\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nSelectFieldInput.displayName = \"SelectFieldInput\";\n","import {\n useCombobox,\n UseComboboxProps,\n UseComboboxState,\n UseComboboxStateChangeOptions,\n} from \"downshift\";\nimport { useDownshiftEnvironment } from \"../../../../internal/hooks\";\nimport {\n SelectFieldDownshiftItem,\n SelectFieldGroupByValue,\n SelectFieldOption,\n SelectFieldPinnedOptions,\n} from \"../types\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { usePinnedOptions } from \"./usePinnedOptions\";\nimport { sortGroupSections, useGroupedOptions } from \"./useGroupedOptions\";\nimport { SectionMeta } from \"./types\";\n\nexport type { SectionMeta };\n\nexport type UseComboOptions = {\n // An array of currently loaded options\n options: SelectFieldOption[];\n // Pinned options configuration (raw prop)\n pinned?: SelectFieldPinnedOptions;\n // Function to convert a group value to a display label\n groupToString?: (groupValue: SelectFieldGroupByValue) => string;\n // Function to sort group sections\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n selectAll?: {\n label: string;\n onClick: () => void;\n };\n selectedOption: SelectFieldOption | null;\n onSelectedOptionChange: (option: SelectFieldOption | null) => void;\n displayAs: \"popover\" | \"dialog\";\n disableHighlightOnOpen?: boolean;\n disabled: boolean;\n virtualize?: boolean;\n} & Pick<\n UseComboboxProps<SelectFieldDownshiftItem>,\n \"onInputValueChange\" | \"onIsOpenChange\"\n>;\n\n/**\n * The purpose of useCombo is to provide an abstraction over the downshift combobox hook.\n */\nexport const useCombo = ({\n options,\n pinned,\n groupToString,\n groupSorter,\n selectAll,\n selectedOption,\n onSelectedOptionChange,\n onInputValueChange,\n onIsOpenChange,\n displayAs = \"popover\",\n disableHighlightOnOpen = false,\n disabled,\n virtualize = false,\n}: UseComboOptions) => {\n // Controlled input value state - needed so usePinnedOptions can access it\n // before useCombobox is called\n const [inputValue, setInputValue] = useState(selectedOption?.label ?? \"\");\n\n // Compute effective search value (empty if showing selected option's label)\n const effectiveSearchValue =\n selectedOption?.label === inputValue ? \"\" : inputValue;\n\n // Load pinned options based on current search value\n const { pinnedSections } = usePinnedOptions(pinned, effectiveSearchValue);\n\n // Process options for grouping\n const { ungroupedItems, groupSections: rawGroupSections } = useGroupedOptions(\n options,\n groupToString,\n );\n\n // Apply custom group sorting if provided\n const groupSections = useMemo(() => {\n if (groupSorter && rawGroupSections.length > 0) {\n return sortGroupSections(rawGroupSections, groupSorter);\n }\n return rawGroupSections;\n }, [rawGroupSections, groupSorter]);\n\n // Build all items and combined section metadata\n // Order: pinned sections -> group sections -> flat items\n const { downshiftItems, sectionsMeta } = useMemo(() => {\n const items: SelectFieldDownshiftItem[] = [];\n const meta: SectionMeta[] = [];\n\n // 1. Add pinned sections\n pinnedSections.forEach((section) => {\n const startIndex = items.length;\n\n section.options.forEach((option) => {\n items.push({\n id: option.id + \"-pinned\",\n type: \"pinned-option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n });\n\n const endIndex = items.length;\n\n // Always add metadata for pinned sections (even while loading with 0 items)\n if (endIndex > startIndex || section.loading) {\n meta.push({\n type: \"pinned\",\n label: section.label,\n startIndex,\n endIndex,\n loading: section.loading,\n });\n }\n });\n\n // 2. Add group sections (with their items)\n groupSections.forEach((section) => {\n const startIndex = items.length;\n\n section.options.forEach((option) => {\n items.push({\n id: option.id,\n type: \"grouped-option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n });\n\n const endIndex = items.length;\n\n // Only add metadata if the section has options\n if (endIndex > startIndex) {\n meta.push({\n type: \"group\",\n label: section.label,\n startIndex,\n endIndex,\n });\n }\n });\n\n // 3. Add ungrouped items (flat)\n items.push(...ungroupedItems);\n\n // Add the select all option to the top of the list if it is provided\n if (selectAll) {\n // Shift all section indices by 1 to account for select-all\n meta.forEach((m) => {\n m.startIndex += 1;\n m.endIndex += 1;\n });\n\n items.unshift({\n id: \"select-all\",\n type: \"select-all\",\n original: { id: \"select-all\", label: selectAll.label ?? \"Select All\" },\n disabled: false,\n });\n }\n\n return { downshiftItems: items, sectionsMeta: meta };\n }, [pinnedSections, groupSections, ungroupedItems, selectAll]);\n\n const selectedDownshiftItem = useMemo(() => {\n return selectedOption ? mapOptionToDownshiftItem(selectedOption) : null;\n }, [selectedOption]);\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const highlightChangeTypeRef = useRef(\"\");\n\n const {\n isOpen,\n highlightedIndex,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n closeMenu,\n openMenu,\n setHighlightedIndex,\n } = useCombobox({\n isItemDisabled: (item, _index) => {\n if (!item) {\n return false; // Downshift passes -1 index with an undefined item. Ignore it.\n }\n return (disabled || item.disabled) ?? false;\n },\n environment: environment,\n selectedItem: selectedDownshiftItem,\n inputValue, // Controlled input value\n onSelectedItemChange: ({\n selectedItem: si,\n }: {\n selectedItem: SelectFieldDownshiftItem;\n }) => {\n // Regular, pinned, and grouped options are all selectable\n if (\n si &&\n (si.type === \"option\" ||\n si.type === \"pinned-option\" ||\n si.type === \"grouped-option\")\n ) {\n onSelectedOptionChange(si.original);\n } else {\n onSelectedOptionChange(null);\n }\n },\n onInputValueChange: (changes) => {\n // Update local state\n setInputValue(changes.inputValue ?? \"\");\n // Call external handler\n onInputValueChange?.(changes);\n },\n onHighlightedIndexChange: ({ type }) => {\n highlightChangeTypeRef.current = type;\n },\n onIsOpenChange: (changes) => {\n onIsOpenChange?.(changes);\n if (changes.isOpen && !disableHighlightOnOpen) {\n const selectedItemIndex = downshiftItems.findIndex(\n (item) => item.original.id === selectedOption?.id,\n );\n setHighlightedIndex(selectedItemIndex);\n }\n },\n items: downshiftItems,\n itemToString(item: SelectFieldDownshiftItem | null) {\n return item?.original.label ?? \"\";\n },\n stateReducer: (state, actionAndChanges) =>\n stateReducer(state, actionAndChanges, displayAs),\n ...(virtualize && { scrollIntoView: () => {} }),\n });\n\n return {\n inputValue,\n wrapperDivRef,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n highlightedIndex,\n highlightChangeTypeRef,\n isOpen,\n downshiftItems,\n sectionsMeta,\n closeMenu,\n openMenu,\n };\n};\n\nfunction mapOptionToDownshiftItem(\n option: SelectFieldOption,\n): SelectFieldDownshiftItem {\n return {\n id: option.id,\n type: \"option\",\n disabled: option.disabled ?? false,\n original: option,\n };\n}\n\nfunction stateReducer(\n state: UseComboboxState<SelectFieldDownshiftItem>,\n actionAndChanges: UseComboboxStateChangeOptions<SelectFieldDownshiftItem>,\n displayAs: \"popover\" | \"dialog\",\n) {\n const { type, changes } = actionAndChanges;\n // this prevents the menu from being closed when the user selects an item with 'Enter' or mouse\n switch (type) {\n case useCombobox.stateChangeTypes.InputBlur:\n // keep the dialog open if the user blurs the input while the dialog is open\n if (displayAs === \"dialog\" && state.isOpen) {\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputKeyDownEscape:\n case useCombobox.stateChangeTypes.FunctionCloseMenu:\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputClick:\n if (displayAs === \"dialog\" && state.isOpen) {\n // keep the dialog open if the user clicks the input while the dialog is open\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return changes;\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return changes;\n default:\n return changes; // otherwise business as usual.\n }\n}\n","import { SelectFieldHandle, SelectFieldProps } from \"./types\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n useId,\n useRef,\n} from \"react\";\nimport { SelectFieldList } from \"./internal/SelectFieldList\";\nimport { SelectFieldInput } from \"./internal/SelectFieldInput\";\nimport { SelectFieldLabel } from \"./internal/SelectFieldLabel\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks/useLayoutPropsUtil\";\nimport { useDebouncedCallback } from \"../../../internal/hooks/useDebouncedCallback\";\nimport {\n useSelectFieldLoading,\n DEFAULT_PAGE_SIZE,\n} from \"../../../internal/hooks/useSelectFieldLoading\";\nimport styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport { useCombo } from \"./internal/useCombo\";\nimport { FieldPopover } from \"./internal/FieldPopover/FieldPopover\";\nimport { useAdaptiveView } from \"../../hooks/useAdaptiveView\";\nimport { FieldDialog } from \"./internal/FieldDialog/FieldDialog\";\nimport {\n FieldMessage,\n warnDeprecatedErrorUsage,\n} from \"../../../components/FieldMessage\";\n\nexport const SelectField = forwardRef<SelectFieldHandle, SelectFieldProps>(\n (propsWithLayout, ref) => {\n const { layoutStyles, componentProps: componentProps } =\n useLayoutPropsUtil(propsWithLayout);\n const [initialLoadPerformed, setInitialLoadPerformed] = useState(false);\n\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const {\n id: idProp,\n value: selectedOption,\n initialLoad: initialLoadProp = \"auto\",\n displayMenuAs: displayMenuAsProp = \"auto\",\n lazy,\n loadOptions: loadOptionsProp,\n label,\n labelNode,\n hideLabel,\n placeholder,\n disableClearButton: disableClearButtonProp = false,\n debounceMs = 200,\n onSelectedOptionChange,\n cache,\n size,\n error,\n hint,\n description,\n errorAriaLive: _errorAriaLive,\n required,\n disabled,\n readOnly,\n prefix,\n suffix,\n warning,\n className,\n style,\n pinned,\n virtualize,\n } = componentProps;\n\n // Extract groupToString if available (only on lazy: \"group\" or eager mode)\n const groupToString =\n \"groupToString\" in componentProps\n ? componentProps.groupToString\n : undefined;\n\n // Extract groupSorter if available (only on lazy: \"group\" or eager mode)\n const groupSorter =\n \"groupSorter\" in componentProps ? componentProps.groupSorter : undefined;\n const autoId = useId();\n const id = idProp ?? autoId;\n const helperUid = useId();\n\n warnDeprecatedErrorUsage(\"SelectField\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n const hasHelperText = hint || errorMessages || warning || description;\n const isDisabledOrReadOnly = (disabled || readOnly) ?? false;\n\n const { isMobile } = useAdaptiveView();\n const displayAs =\n displayMenuAsProp === \"auto\"\n ? isMobile\n ? \"dialog\"\n : \"popover\"\n : displayMenuAsProp;\n\n const initialLoad =\n initialLoadProp === \"auto\" ? \"immediate\" : initialLoadProp;\n\n const pageSize =\n lazy === \"page\" && \"lazyOptions\" in componentProps\n ? (componentProps.lazyOptions?.pageSize ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n const limit =\n lazy === \"offset\" && \"lazyOptions\" in componentProps\n ? (componentProps.lazyOptions?.limit ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n\n const loadingHookConfig = useMemo(() => {\n const cacheConfig = {\n enabled: cache?.enabled,\n maxSize: cache?.maxSize,\n };\n if (lazy === \"page\")\n return {\n lazy: \"page\" as const,\n loadOptions: loadOptionsProp,\n pageSize,\n cache: cacheConfig,\n };\n if (lazy === \"offset\")\n return {\n lazy: \"offset\" as const,\n loadOptions: loadOptionsProp,\n limit,\n cache: cacheConfig,\n };\n if (lazy === \"group\")\n return {\n lazy: \"group\" as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n return {\n lazy: false as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n }, [\n lazy,\n loadOptionsProp,\n pageSize,\n limit,\n cache?.enabled,\n cache?.maxSize,\n ]);\n\n const {\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n clearCache,\n } = useSelectFieldLoading(loadingHookConfig);\n\n useImperativeHandle(ref, () => ({ clearCache }), [clearCache]);\n\n const debouncedOptionLoader = useDebouncedCallback((inputValue: string) => {\n loadOptions(selectedOption?.label === inputValue ? \"\" : inputValue, {\n initial: true,\n });\n }, debounceMs);\n\n const adjustInputValueForSelectedOption = useCallback(\n (inputValue: string) => {\n if (selectedOption?.label === inputValue) {\n return \"\";\n } else {\n return inputValue;\n }\n },\n [selectedOption?.label],\n );\n\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n wrapperDivRef,\n highlightedIndex,\n highlightChangeTypeRef,\n getItemProps,\n inputValue,\n downshiftItems,\n closeMenu,\n sectionsMeta,\n } = useCombo({\n displayAs,\n disabled: isDisabledOrReadOnly,\n options,\n pinned,\n groupToString,\n groupSorter,\n selectedOption,\n virtualize,\n onSelectedOptionChange: (selectedOption) => {\n onSelectedOptionChange(selectedOption);\n },\n async onIsOpenChange(changes) {\n if (initialLoad === \"open\" && !initialLoadPerformed && changes.isOpen) {\n await loadOptions(adjustInputValueForSelectedOption(inputValue), {\n initial: true,\n });\n setInitialLoadPerformed(true);\n }\n },\n onInputValueChange: ({ inputValue: iv }) => {\n debouncedOptionLoader(iv ?? \"\");\n },\n });\n\n useEffect(() => {\n const performInitialLoad = async () => {\n if (initialLoad === \"immediate\" && !initialLoadPerformed) {\n await loadOptions(adjustInputValueForSelectedOption(inputValue), {\n initial: true,\n });\n setInitialLoadPerformed(true);\n }\n };\n performInitialLoad();\n }, [\n loadOptions,\n initialLoadPerformed,\n initialLoad,\n inputValue,\n adjustInputValueForSelectedOption,\n ]);\n\n const handleLoadMore = async () => {\n await loadMore(adjustInputValueForSelectedOption(inputValue));\n };\n\n const disableClearButton =\n disableClearButtonProp || !selectedOption || isDisabledOrReadOnly;\n\n if (displayAs === \"dialog\") {\n return (\n <div\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n ref={wrapperDivRef}\n >\n <SelectFieldLabel\n label={label}\n labelNode={labelNode}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n />\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n toggleButtonProps={getToggleButtonProps()}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n inputProps={getInputProps({\n \"aria-describedby\": hasHelperText ? helperUid : undefined,\n \"aria-invalid\": error ? true : undefined,\n })}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n <FieldDialog\n id={`${id}-dialog`}\n isOpen={isOpen}\n onClose={closeMenu}\n title={label}\n field={\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n inputProps={getInputProps()}\n disableToggleButton\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-dialog-input`}\n inputWrapperRef={inputWrapperRef}\n size=\"medium\" // always \"medium\" for the dialog\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n }\n initialFocusResolver={(elements) => {\n return (\n elements.find((element) => element.tagName === \"INPUT\") ||\n elements[0]\n );\n }}\n >\n <SelectFieldList\n isOpen // always \"open\" = always show the list in the dialog\n items={downshiftItems}\n sectionsMeta={sectionsMeta}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n highlightChangeTypeRef={highlightChangeTypeRef}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </FieldDialog>\n </div>\n );\n }\n\n return (\n <div\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n >\n <SelectFieldLabel\n label={label}\n labelNode={labelNode}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n />\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n inputProps={getInputProps({\n popovertarget: `${id}-popover`,\n \"aria-describedby\": hasHelperText ? helperUid : undefined,\n \"aria-invalid\": error ? true : undefined,\n })}\n toggleButtonProps={getToggleButtonProps()}\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n popoverTarget={`${id}-popover`}\n inputWrapperRef={inputWrapperRef}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n\n <FieldPopover\n id={`${id}-popover`}\n referenceElement={inputWrapperRef}\n open={isOpen && displayAs === \"popover\"}\n onClickOutside={closeMenu}\n >\n <SelectFieldList\n isOpen={isOpen}\n items={downshiftItems}\n sectionsMeta={sectionsMeta}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n highlightChangeTypeRef={highlightChangeTypeRef}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </FieldPopover>\n </div>\n );\n },\n);\n\nSelectField.displayName = \"SelectField\";\n","import { useMemo } from \"react\";\nimport { matchSorter, MatchSorterOptions } from \"match-sorter\";\nimport { SelectField } from \"./SelectField\";\nimport {\n SelectFieldProps,\n SelectFieldOption,\n SelectFieldGroupByValue,\n} from \"./types\";\n\ntype FilterFn = (\n options: SelectFieldOption[],\n searchValue: string,\n) => SelectFieldOption[];\n\nexport type SelectFieldSyncProps = Omit<\n SelectFieldProps,\n \"loadOptions\" | \"lazy\" | \"debounceMs\" | \"cache\" | \"initialLoad\"\n> & {\n /**\n * The options to display in the select field.\n */\n options: SelectFieldOption[];\n /**\n * Controls how options are filtered and sorted when the user types a search value.\n * Can be a function that returns options in the desired display order,\n * or a MatchSorterOptions object to customize the default match-sorter behavior.\n *\n * Before any search is performed, options appear in the order they are supplied.\n * By default, options are filtered by `label` and `searchText` using match-sorter,\n * which also ranks results by match quality (best matches first).\n *\n * @example\n * <SelectFieldSync\n * options={options}\n * filter={(options, searchValue) => {\n * return options.filter((option) => {\n * return option.label?.toLowerCase().includes(searchValue.toLowerCase());\n * });\n * }}\n * />\n *\n * @example\n * <SelectFieldSync\n * options={options}\n * filter={{ keys: [\"label\"] }}\n * />\n */\n filter?: FilterFn | MatchSorterOptions<SelectFieldOption>;\n /**\n * Function to compare two group values for sorting.\n * When provided, options are sorted by group using this comparator,\n * then by match-sort order within each group.\n * @param a - First group value to compare\n * @param b - Second group value to compare\n * @returns Negative if a < b, positive if a > b, zero if equal\n */\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n};\n\nconst defaultFilter: FilterFn = (options, searchValue) =>\n matchSorter(options, searchValue, {\n keys: [\"label\", \"searchText\"],\n baseSort: (a, b) => a.index - b.index,\n });\n\nconst toFilterFn = (\n filter: FilterFn | MatchSorterOptions<SelectFieldOption>,\n): FilterFn =>\n typeof filter === \"function\"\n ? filter\n : (options, searchValue) =>\n matchSorter(options, searchValue, {\n baseSort: (a, b) => a.index - b.index,\n ...filter,\n });\n\n/**\n * Sorts options by group using the provided comparator while maintaining\n * the original order within each group (stable sort).\n */\nconst sortByGroup = (\n options: SelectFieldOption[],\n groupSorter: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number,\n): SelectFieldOption[] => {\n // Create a map to track the sort order of each group\n const groupOrder = new Map<SelectFieldGroupByValue | undefined, number>();\n\n // Get unique groups in their natural order, then sort them\n const uniqueGroups: (SelectFieldGroupByValue | undefined)[] = [];\n options.forEach((opt) => {\n if (!groupOrder.has(opt.group)) {\n groupOrder.set(opt.group, uniqueGroups.length);\n uniqueGroups.push(opt.group);\n }\n });\n\n // Sort groups (undefined/ungrouped items go last)\n uniqueGroups.sort((a, b) => {\n // Ungrouped items (undefined) always come last\n if (a === undefined && b === undefined) return 0;\n if (a === undefined) return 1;\n if (b === undefined) return -1;\n return groupSorter(a, b);\n });\n\n // Update group order map with sorted positions\n uniqueGroups.forEach((group, index) => {\n groupOrder.set(group, index);\n });\n\n // Sort options by group order (stable sort preserves match-sort order within groups)\n return [...options].sort((a, b) => {\n const orderA = groupOrder.get(a.group) ?? Infinity;\n const orderB = groupOrder.get(b.group) ?? Infinity;\n return orderA - orderB;\n });\n};\n\n/**\n * SelectFieldSync is a simplified version of SelectField that is used to display a list of options in a select field.\n *\n * Features:\n * - Accepts `options` instead of `loadOptions` and `lazy`.\n * - Performs client-side filtering of the options.\n * - Optionally accepts a function to filter the options, or a MatchSorterOptions object to customize the default filtering.\n * - Supports grouping with optional group sorting via `groupSorter`.\n * - Supports all the other props of SelectField.\n */\nexport const SelectFieldSync = (props: SelectFieldSyncProps) => {\n const {\n options,\n filter: filterProp = defaultFilter,\n groupSorter,\n ...rest\n } = props;\n\n const filter = useMemo(() => toFilterFn(filterProp), [filterProp]);\n\n const loadOptions = (searchValue: string) => {\n const filtered = filter(options, searchValue);\n return groupSorter ? sortByGroup(filtered, groupSorter) : filtered;\n };\n\n return (\n <SelectField\n lazy={false}\n loadOptions={loadOptions}\n debounceMs={0}\n {...rest}\n />\n );\n};\n"],"names":["Close","Chevron_Right","inputValue","selectedOption"],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import * as React from 'react';
2
- import { D as DateTime } from './luxon-wpz4A-OQ.js';
3
-
4
- const SvgEvent = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z" }));
5
-
6
- const DateModeToFormatMap = {
7
- "mm/dd/yyyy": "MM/dd/yyyy",
8
- "dd/mm/yyyy": "dd/MM/yyyy",
9
- "yyyy/mm/dd": "yyyy/MM/dd"
10
- };
11
- const DateModeToPlaceholderMap = {
12
- "dd/mm/yyyy": "__/__/____",
13
- "mm/dd/yyyy": "__/__/____",
14
- "yyyy/mm/dd": "____/__/__"
15
- };
16
-
17
- function jsDateToUtcDateTime(jsDate) {
18
- return DateTime.utc(
19
- jsDate.getFullYear(),
20
- jsDate.getMonth() + 1,
21
- jsDate.getDate()
22
- );
23
- }
24
- function convertStringToDate(v) {
25
- if (v === void 0 || v === null) {
26
- return v;
27
- }
28
- const date = DateTime.fromISO(v, { setZone: true, zone: "utc" }).startOf(
29
- "day"
30
- );
31
- if (date.isValid) {
32
- return date;
33
- }
34
- return null;
35
- }
36
- function validateDate({
37
- date,
38
- constraints
39
- }) {
40
- const { required, unavailable, minDate, maxDate } = constraints;
41
- if (!date) {
42
- return required ? false : true;
43
- }
44
- if (unavailable?.dates?.some((d) => d.equals(date))) {
45
- return false;
46
- }
47
- if (unavailable?.daysOfWeek?.includes(date.weekday)) {
48
- return false;
49
- }
50
- if (minDate && date < minDate) {
51
- return false;
52
- }
53
- if (maxDate && date > maxDate) {
54
- return false;
55
- }
56
- return true;
57
- }
58
-
59
- export { DateModeToPlaceholderMap as D, SvgEvent as S, DateModeToFormatMap as a, convertStringToDate as c, jsDateToUtcDateTime as j, validateDate as v };
60
- //# sourceMappingURL=utils-BHKRoLps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-BHKRoLps.js","sources":["../../hammer-icon/mdi/round/event.svg","../src/components/DateFieldSingle/internal/constants.ts","../src/components/DateFieldSingle/internal/utils.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgEvent = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z\" }));\nexport default SvgEvent;\n","import { DateMode } from \"../types\";\n\nexport const DateModeToFormatMap: Record<DateMode, string> = {\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"yyyy/mm/dd\": \"yyyy/MM/dd\",\n};\n\nexport const DateModeToPlaceholderMap: Record<DateMode, string> = {\n \"dd/mm/yyyy\": \"__/__/____\",\n \"mm/dd/yyyy\": \"__/__/____\",\n \"yyyy/mm/dd\": \"____/__/__\",\n};\n","import { DateTime } from \"luxon\";\n\n/**\n * Converts a JS Date (created with local timezone midnight) to a UTC Luxon DateTime\n * preserving the local date components (year, month, day).\n *\n * This is necessary because maskitoParseDate creates Date objects using\n * `new Date(year, month, day)` which produces midnight in the local timezone.\n * Directly using DateTime.fromJSDate with zone: \"utc\" can shift the *calendar day*\n * for timezones where local midnight falls on a different UTC date (typically\n * positive-offset zones), which would change the intended date.\n */\nexport function jsDateToUtcDateTime(jsDate: Date): DateTime {\n return DateTime.utc(\n jsDate.getFullYear(),\n jsDate.getMonth() + 1,\n jsDate.getDate(),\n );\n}\n\nexport function convertStringToDate(\n v: string | null | undefined,\n): DateTime | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n const date = DateTime.fromISO(v, { setZone: true, zone: \"utc\" }).startOf(\n \"day\",\n );\n if (date.isValid) {\n return date;\n }\n return null;\n}\nexport function validateDate({\n date,\n constraints,\n}: {\n date: DateTime | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n };\n}) {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!date) {\n return required ? false : true;\n }\n if (unavailable?.dates?.some((d) => d.equals(date))) {\n return false;\n }\n if (unavailable?.daysOfWeek?.includes(date.weekday)) {\n return false;\n }\n if (minDate && date < minDate) {\n return false;\n }\n if (maxDate && date > maxDate) {\n return false;\n }\n return true;\n}\n"],"names":[],"mappings":";;;AACK,MAAC,QAAQ,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,2RAA2R,EAAE,CAAC;;ACCrf,MAAM,mBAAA,GAAgD;AAAA,EAC3D,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;AAEO,MAAM,wBAAA,GAAqD;AAAA,EAChE,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;;ACAO,SAAS,oBAAoB,MAAA,EAAwB;AAC1D,EAAA,OAAO,QAAA,CAAS,GAAA;AAAA,IACd,OAAO,WAAA,EAAY;AAAA,IACnB,MAAA,CAAO,UAAS,GAAI,CAAA;AAAA,IACpB,OAAO,OAAA;AAAQ,GACjB;AACF;AAEO,SAAS,oBACd,CAAA,EAC6B;AAC7B,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAA,EAAM;AACjC,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,CAAA,EAAG,EAAE,SAAS,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,OAAA;AAAA,IAC/D;AAAA,GACF;AACA,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AACO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,EAWG;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,SAAQ,GAAI,WAAA;AACpD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,WAAW,KAAA,GAAQ,IAAA;AAAA,EAC5B;AACA,EAAA,IAAI,WAAA,EAAa,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAA,EAAa,UAAA,EAAY,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;;;;"}