@clickhouse/click-ui 0.10.0-rc1 → 0.10.0-rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-ui.css +6 -0
- package/dist/cjs/components/DatePicker/Common.cjs +1 -1
- package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +12 -8
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs +22 -6
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/cjs/components/GenericMenu/GenericMenu.css +2 -0
- package/dist/cjs/components/Select/common/InternalSelect.cjs +147 -193
- package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
- package/dist/cjs/components/Select/common/SelectComponents.css +4 -0
- package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs +1 -0
- package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs.map +1 -1
- package/dist/esm/click-ui.css +6 -0
- package/dist/esm/components/DatePicker/Common.js +2 -2
- package/dist/esm/components/DatePicker/Common.js.map +1 -1
- package/dist/esm/components/DatePicker/DateRangePicker.js +2 -2
- package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js +13 -9
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js +20 -5
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/esm/components/GenericMenu/GenericMenu.css +2 -0
- package/dist/esm/components/Select/common/InternalSelect.js +148 -194
- package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
- package/dist/esm/components/Select/common/SelectComponents.css +4 -0
- package/dist/esm/components/Select/common/SelectComponents.module.css.js +1 -0
- package/dist/esm/components/Select/common/SelectComponents.module.css.js.map +1 -1
- package/dist/types/components/DatePicker/utils.d.ts +3 -2
- package/dist/types/components/Select/common/index.d.ts +1 -1
- package/dist/types/components/Select/common/types.d.ts +0 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalSelect.cjs","sources":["../../../../../src/components/Select/common/InternalSelect.tsx"],"sourcesContent":["import {\n Children,\n FunctionComponent,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n NoAvailableOptionsFactoryProps,\n SelectContainerProps,\n SelectGroupProps,\n SelectItemObject,\n SelectItemProps,\n SelectOptionListItem,\n} from './types';\nimport { Error, FormElementContainer, FormRoot } from '@/components/FormContainer';\nimport { Portal } from '@radix-ui/react-popover';\nimport { Checkbox } from '@/components/Checkbox';\nimport type { CheckboxVariants } from '@/components/Checkbox';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport { IconButton } from '@/components/IconButton';\nimport { Label } from '@/components/Label';\nimport { Separator } from '@/components/Separator';\nimport { Text } from '@/components/Text';\nimport type { TextProps } from '@/components/Text';\n\nimport {\n SelectPopoverContent,\n SearchBar,\n SearchBarContainer,\n SelectList,\n SelectListContent,\n SelectPopoverRoot,\n StyledSelectTrigger,\n SelectValue,\n HiddenSelectElement,\n SelectGroupContainer,\n SelectGroupName,\n SelectGroupContent,\n SelectNoDataContainer,\n SelectItemDescriptionText,\n selectStyles,\n} from './SelectComponents';\nimport { OptionContext } from './OptionContext';\nimport { MultiSelectValue } from '../MultiSelectValue';\nimport SingleSelectValue from '../SingleSelectValue';\nimport { useOption, useSearch } from './useOption';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { GenericMenuItem } from '@/components/GenericMenu';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { useInputModality } from '@/hooks/internal';\nimport { cn } from '@/lib/cva';\nimport { getTextFromNodes } from '@/lib/getTextFromNodes';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\n\ntype CallbackProps = SelectItemObject & {\n nodeProps: SelectItemProps;\n};\n\ninterface NoOptionsDisplayProps {\n allowCreateOption: boolean;\n search: string;\n customText: string;\n noAvailableOptions: boolean | ((props: NoAvailableOptionsFactoryProps) => ReactNode);\n onCreateOption: (e: MouseEvent<HTMLDivElement>) => void;\n onOpenChange: (open: boolean) => void;\n containerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst NoOptionsDisplay: React.FC<NoOptionsDisplayProps> = ({\n allowCreateOption,\n search,\n customText,\n noAvailableOptions,\n onCreateOption,\n onOpenChange,\n containerProps,\n}) => {\n const getCustomTextWithSearch = (text: string) => text.replaceAll('{search}', search);\n\n const getDefaultMessage = () =>\n `No Options found${search.length > 0 ? ` for \"${search}\" ` : ''}`;\n\n const getNoAvailableOptionsNode = (): ReactNode => {\n if (typeof noAvailableOptions === 'boolean') {\n return noAvailableOptions ? getDefaultMessage() : null;\n }\n\n // ReactNode\n return noAvailableOptions({\n search,\n close: (): void => onOpenChange(false),\n });\n };\n\n // Determine node to render when there are no options\n const hasCustomText = customText.length > 0;\n const hasSearchInput = search.length > 0;\n const shouldShowCreateOption = allowCreateOption && hasSearchInput;\n\n let noOptionsNode: ReactNode = null;\n\n if (shouldShowCreateOption) {\n noOptionsNode = hasCustomText ? getCustomTextWithSearch(customText) : `Add ${search}`;\n } else if (hasCustomText) {\n noOptionsNode = getCustomTextWithSearch(customText);\n } else {\n noOptionsNode = getNoAvailableOptionsNode();\n }\n\n if (!noOptionsNode) {\n return null;\n }\n\n const handleNoOptionsClick = (e: MouseEvent<HTMLDivElement>) => {\n if (shouldShowCreateOption) {\n onCreateOption(e);\n onOpenChange(false);\n }\n };\n\n const isCustomReactNode = typeof noAvailableOptions === 'function';\n if (isCustomReactNode) {\n return (\n <Container\n onClick={handleNoOptionsClick}\n {...containerProps}\n >\n {noOptionsNode}\n </Container>\n );\n }\n\n return (\n <SelectNoDataContainer\n onClick={handleNoOptionsClick}\n $clickable={allowCreateOption}\n {...containerProps}\n >\n {noOptionsNode}\n </SelectNoDataContainer>\n );\n};\n\nconst childrenToComboboxItemArray = (\n children: ReactNode,\n callback: (props: CallbackProps) => void,\n heading?: string\n): SelectItemObject[] => {\n return Children.toArray(children).flatMap(child => {\n if (isValidElement(child) && child && typeof child === 'object') {\n const type = child.type as FunctionComponent;\n if (type.displayName === 'Select.Group') {\n const groupChildren = child.props.children;\n return childrenToComboboxItemArray(\n groupChildren,\n callback,\n getTextFromNodes(child.props.heading).toLowerCase()\n );\n } else if (type.displayName === 'Select.Item') {\n const title = getTextFromNodes(child).toLowerCase();\n const value = child.props.value;\n const disabled = child.props.disabled;\n callback({\n disabled,\n value,\n title,\n heading,\n nodeProps: child.props,\n });\n return {\n disabled,\n value,\n title,\n heading,\n };\n } else if ('props' in child && child.props.children) {\n return childrenToComboboxItemArray(child.props.children, callback, heading);\n }\n }\n return [];\n });\n};\n\nexport const InternalSelect = ({\n label,\n children,\n orientation,\n dir,\n disabled,\n id,\n error,\n value: selectedValues,\n onChange,\n onSelect,\n open,\n onOpenChange,\n name,\n form,\n allowCreateOption = false,\n customText = '',\n options,\n sortable = false,\n placeholder = 'Select an option',\n maxHeight,\n multiple,\n checkbox,\n selectLabel,\n showSearch = false,\n container,\n useFullWidthItems = false,\n itemCharacterLimit = '64ch',\n noAvailableOptions = true,\n triggerProps,\n ...props\n}: SelectContainerProps) => {\n const defaultId = useId();\n const [search, setSearch] = useState('');\n const [highlighted, setHighlighted] = useState<string | undefined>();\n const visibleList = useRef<string[]>([]);\n const navigatable = useRef<string[]>([]);\n const valueNode = useRef<Map<string, SelectItemProps>>(new Map());\n const [isInitialized, setInitialized] = useState(false);\n const [list, setList] = useState<SelectItemObject[]>([]);\n const updateElements = useCallback(\n ({ disabled, value, title, heading, nodeProps }: CallbackProps) => {\n if (title.includes(search) || heading?.includes(search)) {\n visibleList.current.push(value);\n if (!disabled) {\n navigatable.current.push(value);\n }\n }\n valueNode.current.set(value, nodeProps);\n },\n [search]\n );\n const onUpdateSearch = useCallback(\n (search: string) => {\n setSearch(search);\n let hasHighlightedValue = false;\n const visibleItemsList: string[] = [];\n const navigatableList: string[] = [];\n const searchLowerCase = search.toLowerCase();\n list.forEach(item => {\n if (\n item.title.includes(searchLowerCase) ||\n item.heading?.includes(searchLowerCase)\n ) {\n if (item.value === highlighted) {\n hasHighlightedValue = true;\n }\n visibleItemsList.push(item.value);\n if (!item.disabled) {\n navigatableList.push(item.value);\n }\n }\n });\n navigatable.current = navigatableList;\n visibleList.current = visibleItemsList;\n if (!hasHighlightedValue) {\n setHighlighted(navigatableList[0] ?? null);\n }\n },\n [highlighted, list]\n );\n\n const updateList = useCallback(\n (children?: ReactNode, options?: SelectOptionListItem[]) => {\n const lowerCasedSearch = search.toLowerCase();\n if (options) {\n setList(\n options.flatMap(option => {\n if ('options' in option) {\n const heading = getTextFromNodes(option.heading).toLowerCase();\n return (option.options ?? []).map(item => {\n valueNode.current.set(item.value, item);\n const title = getTextFromNodes(item.label).toLowerCase();\n if (\n title.includes(lowerCasedSearch) ||\n heading?.includes(lowerCasedSearch)\n ) {\n visibleList.current.push(item.value);\n if (!disabled) {\n navigatable.current.push(item.value);\n }\n }\n return {\n heading,\n disabled: item.disabled,\n value: item.value,\n title,\n };\n });\n } else {\n valueNode.current.set(option.value, option);\n const title = getTextFromNodes(option.label).toLowerCase();\n if (title.includes(lowerCasedSearch)) {\n visibleList.current.push(option.value);\n if (!disabled) {\n navigatable.current.push(option.value);\n }\n }\n return {\n disabled: option.disabled,\n value: option.value,\n title: getTextFromNodes(option.label),\n };\n }\n })\n );\n } else if (children) {\n setList(childrenToComboboxItemArray(children, updateElements));\n }\n },\n [disabled, search, updateElements]\n );\n\n useEffect(() => {\n updateList(children, options);\n setInitialized(true);\n }, [children, options, updateList]);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n const onFocus = () => {\n inputRef.current?.focus();\n };\n\n const clearSearch = () => {\n onUpdateSearch('');\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (!e.defaultPrevented) {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (highlighted) {\n onSelect(highlighted, undefined, e);\n } else if (visibleList.current.length === 0 && allowCreateOption) {\n onSelect(search, 'custom', e);\n }\n } else if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n let nextHighlightedValue = highlighted;\n const highlightedIndex = navigatable.current.findIndex(\n value => value === highlighted\n );\n if (e.key === 'ArrowUp') {\n if (highlightedIndex === 0) {\n nextHighlightedValue = navigatable.current[navigatable.current.length - 1];\n } else {\n nextHighlightedValue = navigatable.current[highlightedIndex - 1];\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (highlightedIndex === navigatable.current.length - 1) {\n nextHighlightedValue = navigatable.current[0];\n } else {\n nextHighlightedValue = navigatable.current[highlightedIndex + 1];\n }\n } else if (e.key === 'End') {\n e.preventDefault();\n nextHighlightedValue = navigatable.current[navigatable.current.length - 1];\n } else if (e.key === 'Home') {\n nextHighlightedValue = navigatable.current[0];\n e.preventDefault();\n }\n setHighlighted(nextHighlightedValue);\n }\n }\n };\n const isHidden = useCallback(\n (value?: string) => {\n return !visibleList.current.includes(value ?? '');\n },\n [visibleList]\n );\n\n const optionContextValue = useMemo(() => {\n return {\n search,\n updateHighlighted: setHighlighted,\n highlighted,\n isHidden,\n onSelect,\n selectedValues,\n };\n }, [search, highlighted, isHidden, onSelect, selectedValues]);\n\n const onCreateOption = (e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowCreateOption) {\n onSelect(search, 'custom', e);\n }\n };\n\n return (\n <FormRoot\n $orientation={orientation}\n $dir={dir}\n $addLabelPadding\n {...props}\n >\n <FormElementContainer>\n <SelectPopoverRoot\n open={open}\n onOpenChange={onOpenChange}\n modal={true}\n >\n <StyledSelectTrigger\n id={id ?? defaultId}\n $error={!!error}\n disabled={disabled}\n data-testid=\"select-trigger\"\n {...triggerProps}\n >\n {isInitialized && (\n <SelectValue>\n {selectedValues.length === 0 ? (\n placeholder\n ) : multiple ? (\n <MultiSelectValue\n disabled={disabled ?? false}\n onSelect={onSelect}\n selectedValues={selectedValues}\n sortable={!disabled && sortable}\n valueNode={valueNode.current}\n onChange={onChange}\n />\n ) : (\n <SingleSelectValue\n valueNode={\n checkbox && selectLabel\n ? { label: selectLabel as string, value: selectLabel as string }\n : valueNode.current.get(selectedValues[0])\n }\n value={selectedValues[0]}\n />\n )}\n </SelectValue>\n )}\n <Icon\n name=\"sort\"\n size=\"sm\"\n />\n </StyledSelectTrigger>\n {form && (\n <HiddenSelectElement\n multiple={multiple}\n name={name}\n form={form}\n value={selectedValues}\n onChange={() => null}\n >\n {list.map(item => (\n <option\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.value}\n </option>\n ))}\n </HiddenSelectElement>\n )}\n <Portal container={portalContainer}>\n <SelectPopoverContent\n {...inputModalityProps}\n sideOffset={5}\n onFocus={onFocus}\n onCloseAutoFocus={() => {\n onUpdateSearch('');\n }}\n onOpenAutoFocus={() => {\n setHighlighted(visibleList.current[0]);\n }}\n align=\"start\"\n $useFullWidthItems={useFullWidthItems}\n $itemCharacterLimit={itemCharacterLimit}\n >\n <SelectList>\n <SearchBarContainer $showSearch={showSearch}>\n <SearchBar\n ref={inputRef}\n value={search}\n onChange={e => onUpdateSearch(e.target.value)}\n data-testid=\"select-search-input\"\n onKeyDown={onKeyDown}\n $showSearch={showSearch}\n />\n <IconButton\n className={cn(\n selectStyles['search-close'],\n search.length > 0 && selectStyles['search-close_show-close']\n )}\n htmlType=\"button\"\n icon=\"cross\"\n onClick={clearSearch}\n data-testid=\"select-search-close\"\n size=\"xs\"\n />\n </SearchBarContainer>\n <SelectListContent $maxHeight={maxHeight}>\n <OptionContext.Provider value={optionContextValue}>\n {options && options.length > 0\n ? options.map((props, index) => {\n if ('options' in props) {\n const { options: itemList = [], ...groupProps } = props;\n return (\n <SelectGroup\n key={`select-${id}-group-${index}`}\n {...groupProps}\n >\n {itemList.map((itemProps, itemIndex) => {\n if (checkbox) {\n return (\n <MultiSelectCheckboxItem\n key={`select-${id}-group-${index}-item-${itemIndex}`}\n {...itemProps}\n />\n );\n }\n return (\n <SelectItem\n key={`select-${id}-group-${index}-item-${itemIndex}`}\n {...itemProps}\n />\n );\n })}\n </SelectGroup>\n );\n } else {\n if (checkbox) {\n return (\n <MultiSelectCheckboxItem\n key={`select-${id}-item-${index}`}\n {...props}\n />\n );\n }\n return (\n <SelectItem\n key={`select-${id}-item-${index}`}\n {...props}\n />\n );\n }\n })\n : children}\n </OptionContext.Provider>\n </SelectListContent>\n {visibleList.current.length === 0 &&\n (allowCreateOption || !!noAvailableOptions) && (\n <NoOptionsDisplay\n allowCreateOption={allowCreateOption}\n search={search}\n customText={customText}\n noAvailableOptions={noAvailableOptions}\n onCreateOption={onCreateOption}\n onOpenChange={onOpenChange}\n containerProps={props}\n />\n )}\n </SelectList>\n </SelectPopoverContent>\n </Portal>\n </SelectPopoverRoot>\n {!!error && error !== true && <Error>{error}</Error>}\n </FormElementContainer>\n {label && (\n <Label\n htmlFor={id ?? defaultId}\n disabled={disabled}\n error={!!error}\n >\n {label}\n </Label>\n )}\n </FormRoot>\n );\n};\n\nexport const SelectGroup = forwardRef<HTMLDivElement, SelectGroupProps>(\n ({ children, heading, ...props }, forwardedRef) => {\n useSearch();\n return (\n <SelectGroupContainer\n {...props}\n ref={mergeRefs([\n forwardedRef,\n node => {\n const hidden = node?.querySelectorAll('[cui-select-item]').length === 0;\n if (hidden) {\n node?.setAttribute('hidden', '');\n } else {\n node?.removeAttribute('hidden');\n }\n node?.setAttribute('aria-hidden', hidden.toString());\n },\n ])}\n >\n <SelectGroupName>{heading}</SelectGroupName>\n <SelectGroupContent>{children}</SelectGroupContent>\n </SelectGroupContainer>\n );\n }\n);\n\nSelectGroup.displayName = 'Select.Group';\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n (\n {\n disabled = false,\n children,\n label,\n description,\n separator,\n onSelect: onSelectProp,\n value = '',\n icon,\n iconDir,\n onMouseOver: onMouseOverProp,\n ...props\n },\n forwardedRef\n ) => {\n const { highlighted, updateHighlighted, isHidden, selectedValues, onSelect } =\n useOption();\n const onSelectValue = (evt: MouseEvent<HTMLElement>) => {\n if (!disabled) {\n onSelect(value, undefined, evt);\n if (typeof onSelectProp == 'function') {\n onSelectProp(value, undefined, evt);\n }\n }\n };\n const onMouseOver = (e: MouseEvent<HTMLDivElement>) => {\n if (onMouseOverProp) {\n onMouseOverProp(e);\n }\n if (!disabled) {\n updateHighlighted(value);\n }\n };\n\n if (isHidden(value)) {\n return null;\n }\n const isChecked = selectedValues.includes(value);\n\n return (\n <>\n <GenericMenuItem\n {...props}\n data-value={value}\n onClick={onSelectValue}\n onMouseOver={onMouseOver}\n ref={forwardedRef}\n data-state={isChecked ? 'checked' : 'unchecked'}\n data-disabled={disabled ? true : undefined}\n data-highlighted={highlighted == value ? 'true' : undefined}\n cui-select-item=\"\"\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n gap=\"xxs\"\n isResponsive={false}\n >\n {label ? (\n <>\n {label}\n {description && (\n <SelectItemDescription>{description}</SelectItemDescription>\n )}\n </>\n ) : (\n children\n )}\n </IconWrapper>\n <Icon\n className={cn(\n selectStyles['check-icon'],\n isChecked && selectStyles['check-icon_show-check']\n )}\n name=\"check\"\n size=\"sm\"\n />\n </GenericMenuItem>\n {separator && <Separator size=\"sm\" />}\n </>\n );\n }\n);\n\nexport type MultiSelectCheckboxItemProps = SelectItemProps & {\n variant?: CheckboxVariants;\n};\n\nSelectItem.displayName = 'Select.Item';\n\nexport const MultiSelectCheckboxItem = forwardRef<\n HTMLDivElement,\n MultiSelectCheckboxItemProps\n>(\n (\n {\n disabled = false,\n children,\n icon,\n iconDir = 'end',\n label,\n description,\n onMouseOver: onMouseOverProp,\n onSelect: onSelectProp,\n separator,\n value = '',\n variant,\n ...props\n },\n forwardedRef\n ) => {\n const { highlighted, updateHighlighted, isHidden, selectedValues, onSelect } =\n useOption();\n\n const handleMenuItemClick = (evt: MouseEvent<HTMLElement>) => {\n if (!disabled) {\n onSelect(value, undefined, evt);\n\n if (typeof onSelectProp === 'function') {\n onSelectProp(value, undefined, evt);\n }\n }\n };\n\n const handleMenuItemMouseOver = (e: MouseEvent<HTMLDivElement>) => {\n if (onMouseOverProp) {\n onMouseOverProp(e);\n }\n if (!disabled) {\n updateHighlighted(value);\n }\n };\n\n if (isHidden(value)) {\n return null;\n }\n\n const isChecked = selectedValues.includes(value);\n\n return (\n <>\n <GenericMenuItem\n {...props}\n data-value={value}\n onClick={handleMenuItemClick}\n onMouseOver={handleMenuItemMouseOver}\n ref={forwardedRef}\n data-disabled={disabled ? true : undefined}\n data-highlighted={highlighted == value ? 'true' : undefined}\n data-testid={`multi-select-checkbox-${value}`}\n cui-select-item=\"\"\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n overflow=\"hidden\"\n isResponsive={false}\n >\n <Checkbox\n checked={isChecked}\n data-testid=\"multi-select-checkbox\"\n disabled={disabled}\n variant={variant ?? 'default'}\n />\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n gap=\"xxs\"\n isResponsive={false}\n >\n {label ? (\n <>\n {label}\n {description && (\n <SelectItemDescription>{description}</SelectItemDescription>\n )}\n </>\n ) : (\n children\n )}\n </IconWrapper>\n </Container>\n </GenericMenuItem>\n {separator && <Separator size=\"sm\" />}\n </>\n );\n }\n);\n\nMultiSelectCheckboxItem.displayName = 'Select.Item';\n\nexport const SelectItemDescription = forwardRef<HTMLDivElement, TextProps>(\n ({ children, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n component={SelectItemDescriptionText}\n color=\"muted\"\n {...props}\n >\n {children}\n </Text>\n );\n }\n);\n\nSelectItemDescription.displayName = 'Select.ItemDescription';\n"],"names":["jsx","Container","SelectNoDataContainer","Children","isValidElement","getTextFromNodes","useId","useState","useRef","useCallback","disabled","search","children","options","useEffect","useInputModality","useResolvedPortalContainer","useMemo","jsxs","FormRoot","FormElementContainer","SelectPopoverRoot","StyledSelectTrigger","SelectValue","MultiSelectValue","SingleSelectValue","Icon","HiddenSelectElement","Portal","SelectPopoverContent","SelectList","SearchBarContainer","SearchBar","IconButton","cn","selectStyles","SelectListContent","OptionContext","props","Error","Label","forwardRef","useSearch","SelectGroupContainer","mergeRefs","SelectGroupName","SelectGroupContent","useOption","Fragment","GenericMenuItem","IconWrapper","Separator","Checkbox","Text","SelectItemDescriptionText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,MAAM,mBAAoD,CAAC;AAAA,EACzD,iBAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,0BAA0B,CAAC,IAAA,KAAiB,IAAA,CAAK,UAAA,CAAW,YAAY,MAAM,CAAA;AAEpF,EAAA,MAAM,iBAAA,GAAoB,MACxB,CAAA,gBAAA,EAAmB,MAAA,CAAO,SAAS,CAAA,GAAI,CAAA,MAAA,EAAS,MAAM,CAAA,EAAA,CAAA,GAAO,EAAE,CAAA,CAAA;AAEjE,EAAA,MAAM,4BAA4B,MAAiB;AACjD,IAAA,IAAI,OAAO,uBAAuB,SAAA,EAAW;AAC3C,MAAA,OAAO,kBAAA,GAAqB,mBAAkB,GAAI,IAAA;AAAA,IACpD;AAGA,IAAA,OAAO,kBAAA,CAAmB;AAAA,MACxB,MAAA;AAAA,MACA,KAAA,EAAO,MAAY,YAAA,CAAa,KAAK;AAAA,KACtC,CAAA;AAAA,EACH,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB,WAAW,MAAA,GAAS,CAAA;AAC1C,EAAA,MAAM,cAAA,GAAiB,OAAO,MAAA,GAAS,CAAA;AACvC,EAAA,MAAM,yBAAyB,iBAAA,IAAqB,cAAA;AAEpD,EAAA,IAAI,aAAA,GAA2B,IAAA;AAE/B,EAAA,IAAI,sBAAA,EAAwB;AAC1B,IAAA,aAAA,GAAgB,aAAA,GAAgB,uBAAA,CAAwB,UAAU,CAAA,GAAI,OAAO,MAAM,CAAA,CAAA;AAAA,EACrF,WAAW,aAAA,EAAe;AACxB,IAAA,aAAA,GAAgB,wBAAwB,UAAU,CAAA;AAAA,EACpD,CAAA,MAAO;AACL,IAAA,aAAA,GAAgB,yBAAA,EAA0B;AAAA,EAC5C;AAEA,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,CAAA,KAAkC;AAC9D,IAAA,IAAI,sBAAA,EAAwB;AAC1B,MAAA,cAAA,CAAe,CAAC,CAAA;AAChB,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,OAAO,kBAAA,KAAuB,UAAA;AACxD,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,uBACEA,cAAA;AAAA,MAACC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,oBAAA;AAAA,QACR,GAAG,cAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACED,cAAA;AAAA,IAACE,sCAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,oBAAA;AAAA,MACT,UAAA,EAAY,iBAAA;AAAA,MACX,GAAG,cAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,MAAM,2BAAA,GAA8B,CAClC,QAAA,EACA,QAAA,EACA,OAAA,KACuB;AACvB,EAAA,OAAOC,cAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAQ,CAAA,KAAA,KAAS;AACjD,IAAA,IAAIC,qBAAe,KAAK,CAAA,IAAK,KAAA,IAAS,OAAO,UAAU,QAAA,EAAU;AAC/D,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,MAAA,IAAI,IAAA,CAAK,gBAAgB,cAAA,EAAgB;AACvC,QAAA,MAAM,aAAA,GAAgB,MAAM,KAAA,CAAM,QAAA;AAClC,QAAA,OAAO,2BAAA;AAAA,UACL,aAAA;AAAA,UACA,QAAA;AAAA,UACAC,iCAAA,CAAiB,KAAA,CAAM,KAAA,CAAM,OAAO,EAAE,WAAA;AAAY,SACpD;AAAA,MACF,CAAA,MAAA,IAAW,IAAA,CAAK,WAAA,KAAgB,aAAA,EAAe;AAC7C,QAAA,MAAM,KAAA,GAAQA,iCAAA,CAAiB,KAAK,CAAA,CAAE,WAAA,EAAY;AAClD,QAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,KAAA;AAC1B,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA;AAC7B,QAAA,QAAA,CAAS;AAAA,UACP,QAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA,WAAW,KAAA,CAAM;AAAA,SAClB,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA,MAAA,IAAW,OAAA,IAAW,KAAA,IAAS,KAAA,CAAM,MAAM,QAAA,EAAU;AACnD,QAAA,OAAO,2BAAA,CAA4B,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,UAAU,OAAO,CAAA;AAAA,MAC5E;AAAA,IACF;AACA,IAAA,OAAO,EAAC;AAAA,EACV,CAAC,CAAA;AACH,CAAA;AAEO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,EAAO,cAAA;AAAA,EACP,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,UAAA,GAAa,EAAA;AAAA,EACb,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,kBAAA;AAAA,EACd,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,kBAAA,GAAqB,MAAA;AAAA,EACrB,kBAAA,GAAqB,IAAA;AAAA,EACrB,YAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,YAAYC,WAAA,EAAM;AACxB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,eAAS,EAAE,CAAA;AACvC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,cAAA,EAA6B;AACnE,EAAA,MAAM,WAAA,GAAcC,YAAA,CAAiB,EAAE,CAAA;AACvC,EAAA,MAAM,WAAA,GAAcA,YAAA,CAAiB,EAAE,CAAA;AACvC,EAAA,MAAM,SAAA,GAAYA,YAAA,iBAAqC,IAAI,GAAA,EAAK,CAAA;AAChE,EAAA,MAAM,CAAC,aAAA,EAAe,cAAc,CAAA,GAAID,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,CAA6B,EAAE,CAAA;AACvD,EAAA,MAAM,cAAA,GAAiBE,iBAAA;AAAA,IACrB,CAAC,EAAE,QAAA,EAAAC,SAAAA,EAAU,OAAO,KAAA,EAAO,OAAA,EAAS,WAAU,KAAqB;AACjE,MAAA,IAAI,MAAM,QAAA,CAAS,MAAM,KAAK,OAAA,EAAS,QAAA,CAAS,MAAM,CAAA,EAAG;AACvD,QAAA,WAAA,CAAY,OAAA,CAAQ,KAAK,KAAK,CAAA;AAC9B,QAAA,IAAI,CAACA,SAAAA,EAAU;AACb,UAAA,WAAA,CAAY,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,QAChC;AAAA,MACF;AACA,MAAA,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,SAAS,CAAA;AAAA,IACxC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AACA,EAAA,MAAM,cAAA,GAAiBD,iBAAA;AAAA,IACrB,CAACE,OAAAA,KAAmB;AAClB,MAAA,SAAA,CAAUA,OAAM,CAAA;AAChB,MAAA,IAAI,mBAAA,GAAsB,KAAA;AAC1B,MAAA,MAAM,mBAA6B,EAAC;AACpC,MAAA,MAAM,kBAA4B,EAAC;AACnC,MAAA,MAAM,eAAA,GAAkBA,QAAO,WAAA,EAAY;AAC3C,MAAA,IAAA,CAAK,QAAQ,CAAA,IAAA,KAAQ;AACnB,QAAA,IACE,IAAA,CAAK,MAAM,QAAA,CAAS,eAAe,KACnC,IAAA,CAAK,OAAA,EAAS,QAAA,CAAS,eAAe,CAAA,EACtC;AACA,UAAA,IAAI,IAAA,CAAK,UAAU,WAAA,EAAa;AAC9B,YAAA,mBAAA,GAAsB,IAAA;AAAA,UACxB;AACA,UAAA,gBAAA,CAAiB,IAAA,CAAK,KAAK,KAAK,CAAA;AAChC,UAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,YAAA,eAAA,CAAgB,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,WAAA,CAAY,OAAA,GAAU,eAAA;AACtB,MAAA,WAAA,CAAY,OAAA,GAAU,gBAAA;AACtB,MAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,QAAA,cAAA,CAAe,eAAA,CAAgB,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,MAC3C;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa,IAAI;AAAA,GACpB;AAEA,EAAA,MAAM,UAAA,GAAaF,iBAAA;AAAA,IACjB,CAACG,WAAsBC,QAAAA,KAAqC;AAC1D,MAAA,MAAM,gBAAA,GAAmB,OAAO,WAAA,EAAY;AAC5C,MAAA,IAAIA,QAAAA,EAAS;AACX,QAAA,OAAA;AAAA,UACEA,QAAAA,CAAQ,QAAQ,CAAA,MAAA,KAAU;AACxB,YAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,cAAA,MAAM,OAAA,GAAUR,iCAAA,CAAiB,MAAA,CAAO,OAAO,EAAE,WAAA,EAAY;AAC7D,cAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,IAAW,EAAC,EAAG,IAAI,CAAA,IAAA,KAAQ;AACxC,gBAAA,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,IAAI,CAAA;AACtC,gBAAA,MAAM,KAAA,GAAQA,iCAAA,CAAiB,IAAA,CAAK,KAAK,EAAE,WAAA,EAAY;AACvD,gBAAA,IACE,MAAM,QAAA,CAAS,gBAAgB,KAC/B,OAAA,EAAS,QAAA,CAAS,gBAAgB,CAAA,EAClC;AACA,kBAAA,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AACnC,kBAAA,IAAI,CAAC,QAAA,EAAU;AACb,oBAAA,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,kBACrC;AAAA,gBACF;AACA,gBAAA,OAAO;AAAA,kBACL,OAAA;AAAA,kBACA,UAAU,IAAA,CAAK,QAAA;AAAA,kBACf,OAAO,IAAA,CAAK,KAAA;AAAA,kBACZ;AAAA,iBACF;AAAA,cACF,CAAC,CAAA;AAAA,YACH,CAAA,MAAO;AACL,cAAA,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAC1C,cAAA,MAAM,KAAA,GAAQA,iCAAA,CAAiB,MAAA,CAAO,KAAK,EAAE,WAAA,EAAY;AACzD,cAAA,IAAI,KAAA,CAAM,QAAA,CAAS,gBAAgB,CAAA,EAAG;AACpC,gBAAA,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AACrC,gBAAA,IAAI,CAAC,QAAA,EAAU;AACb,kBAAA,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAAA,gBACvC;AAAA,cACF;AACA,cAAA,OAAO;AAAA,gBACL,UAAU,MAAA,CAAO,QAAA;AAAA,gBACjB,OAAO,MAAA,CAAO,KAAA;AAAA,gBACd,KAAA,EAAOA,iCAAA,CAAiB,MAAA,CAAO,KAAK;AAAA,eACtC;AAAA,YACF;AAAA,UACF,CAAC;AAAA,SACH;AAAA,MACF,WAAWO,SAAAA,EAAU;AACnB,QAAA,OAAA,CAAQ,2BAAA,CAA4BA,SAAAA,EAAU,cAAc,CAAC,CAAA;AAAA,MAC/D;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,MAAA,EAAQ,cAAc;AAAA,GACnC;AAEA,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,UAAU,OAAO,CAAA;AAC5B,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,EAAS,UAAU,CAAC,CAAA;AAElC,EAAA,MAAM,QAAA,GAAWN,aAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,qBAAqBO,iCAAA,EAAiB;AAC5C,EAAA,MAAM,eAAA,GAAkBC,yCAA2B,SAAS,CAAA;AAE5D,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,cAAA,CAAe,EAAE,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAkC;AACnD,IAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,MAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,QAAA,CAAS,WAAA,EAAa,QAAW,CAAC,CAAA;AAAA,QACpC,CAAA,MAAA,IAAW,WAAA,CAAY,OAAA,CAAQ,MAAA,KAAW,KAAK,iBAAA,EAAmB;AAChE,UAAA,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAC,CAAA;AAAA,QAC9B;AAAA,MACF,CAAA,MAAA,IAAW,CAAC,SAAA,EAAW,WAAA,EAAa,MAAA,EAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,GAAG,CAAA,EAAG;AAClE,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,oBAAA,GAAuB,WAAA;AAC3B,QAAA,MAAM,gBAAA,GAAmB,YAAY,OAAA,CAAQ,SAAA;AAAA,UAC3C,WAAS,KAAA,KAAU;AAAA,SACrB;AACA,QAAA,IAAI,CAAA,CAAE,QAAQ,SAAA,EAAW;AACvB,UAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,YAAA,oBAAA,GAAuB,WAAA,CAAY,OAAA,CAAQ,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,UAC3E,CAAA,MAAO;AACL,YAAA,oBAAA,GAAuB,WAAA,CAAY,OAAA,CAAQ,gBAAA,GAAmB,CAAC,CAAA;AAAA,UACjE;AAAA,QACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,EAAa;AAChC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,gBAAA,KAAqB,WAAA,CAAY,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACvD,YAAA,oBAAA,GAAuB,WAAA,CAAY,QAAQ,CAAC,CAAA;AAAA,UAC9C,CAAA,MAAO;AACL,YAAA,oBAAA,GAAuB,WAAA,CAAY,OAAA,CAAQ,gBAAA,GAAmB,CAAC,CAAA;AAAA,UACjE;AAAA,QACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,EAAO;AAC1B,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,oBAAA,GAAuB,WAAA,CAAY,OAAA,CAAQ,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,QAC3E,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,MAAA,EAAQ;AAC3B,UAAA,oBAAA,GAAuB,WAAA,CAAY,QAAQ,CAAC,CAAA;AAC5C,UAAA,CAAA,CAAE,cAAA,EAAe;AAAA,QACnB;AACA,QAAA,cAAA,CAAe,oBAAoB,CAAA;AAAA,MACrC;AAAA,IACF;AAAA,EACF,CAAA;AACA,EAAA,MAAM,QAAA,GAAWP,iBAAA;AAAA,IACf,CAAC,KAAA,KAAmB;AAClB,MAAA,OAAO,CAAC,WAAA,CAAY,OAAA,CAAQ,QAAA,CAAS,SAAS,EAAE,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,kBAAA,GAAqBQ,cAAQ,MAAM;AACvC,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,iBAAA,EAAmB,cAAA;AAAA,MACnB,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,aAAa,QAAA,EAAU,QAAA,EAAU,cAAc,CAAC,CAAA;AAE5D,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAkC;AACxD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAC,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AAEA,EAAA,uBACEC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,GAAA;AAAA,MACN,gBAAA,EAAgB,IAAA;AAAA,MACf,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,yCAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAF,eAAA;AAAA,YAACG,kCAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,YAAA;AAAA,cACA,KAAA,EAAO,IAAA;AAAA,cAEP,QAAA,EAAA;AAAA,gCAAAH,eAAA;AAAA,kBAACI,oCAAA;AAAA,kBAAA;AAAA,oBACC,IAAI,EAAA,IAAM,SAAA;AAAA,oBACV,MAAA,EAAQ,CAAC,CAAC,KAAA;AAAA,oBACV,QAAA;AAAA,oBACA,aAAA,EAAY,gBAAA;AAAA,oBACX,GAAG,YAAA;AAAA,oBAEH,QAAA,EAAA;AAAA,sBAAA,aAAA,mCACEC,4BAAA,EAAA,EACE,QAAA,EAAA,cAAA,CAAe,MAAA,KAAW,CAAA,GACzB,cACE,QAAA,mBACFvB,cAAA;AAAA,wBAACwB,iCAAA;AAAA,wBAAA;AAAA,0BACC,UAAU,QAAA,IAAY,KAAA;AAAA,0BACtB,QAAA;AAAA,0BACA,cAAA;AAAA,0BACA,QAAA,EAAU,CAAC,QAAA,IAAY,QAAA;AAAA,0BACvB,WAAW,SAAA,CAAU,OAAA;AAAA,0BACrB;AAAA;AAAA,uBACF,mBAEAxB,cAAA;AAAA,wBAACyB,yBAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EACE,QAAA,IAAY,WAAA,GACR,EAAE,OAAO,WAAA,EAAuB,KAAA,EAAO,WAAA,EAAsB,GAC7D,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAI,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,0BAE7C,KAAA,EAAO,eAAe,CAAC;AAAA;AAAA,uBACzB,EAEJ,CAAA;AAAA,sCAEFzB,cAAA;AAAA,wBAAC0B,SAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAK,MAAA;AAAA,0BACL,IAAA,EAAK;AAAA;AAAA;AACP;AAAA;AAAA,iBACF;AAAA,gBACC,IAAA,oBACC1B,cAAA;AAAA,kBAAC2B,oCAAA;AAAA,kBAAA;AAAA,oBACC,QAAA;AAAA,oBACA,IAAA;AAAA,oBACA,IAAA;AAAA,oBACA,KAAA,EAAO,cAAA;AAAA,oBACP,UAAU,MAAM,IAAA;AAAA,oBAEf,QAAA,EAAA,IAAA,CAAK,IAAI,CAAA,IAAA,qBACR3B,cAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBAEC,OAAO,IAAA,CAAK,KAAA;AAAA,wBACZ,UAAU,IAAA,CAAK,QAAA;AAAA,wBAEd,QAAA,EAAA,IAAA,CAAK;AAAA,uBAAA;AAAA,sBAJD,IAAA,CAAK;AAAA,qBAMb;AAAA;AAAA,iBACH;AAAA,gCAEFA,cAAA,CAAC4B,mBAAA,EAAA,EAAO,SAAA,EAAW,eAAA,EACjB,QAAA,kBAAA5B,cAAA;AAAA,kBAAC6B,qCAAA;AAAA,kBAAA;AAAA,oBACE,GAAG,kBAAA;AAAA,oBACJ,UAAA,EAAY,CAAA;AAAA,oBACZ,OAAA;AAAA,oBACA,kBAAkB,MAAM;AACtB,sBAAA,cAAA,CAAe,EAAE,CAAA;AAAA,oBACnB,CAAA;AAAA,oBACA,iBAAiB,MAAM;AACrB,sBAAA,cAAA,CAAe,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,oBACvC,CAAA;AAAA,oBACA,KAAA,EAAM,OAAA;AAAA,oBACN,kBAAA,EAAoB,iBAAA;AAAA,oBACpB,mBAAA,EAAqB,kBAAA;AAAA,oBAErB,0CAACC,2BAAA,EAAA,EACC,QAAA,EAAA;AAAA,sCAAAZ,eAAA,CAACa,mCAAA,EAAA,EAAmB,aAAa,UAAA,EAC/B,QAAA,EAAA;AAAA,wCAAA/B,cAAA;AAAA,0BAACgC,0BAAA;AAAA,0BAAA;AAAA,4BACC,GAAA,EAAK,QAAA;AAAA,4BACL,KAAA,EAAO,MAAA;AAAA,4BACP,QAAA,EAAU,CAAA,CAAA,KAAK,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,4BAC5C,aAAA,EAAY,qBAAA;AAAA,4BACZ,SAAA;AAAA,4BACA,WAAA,EAAa;AAAA;AAAA,yBACf;AAAA,wCACAhC,cAAA;AAAA,0BAACiC,qBAAA;AAAA,0BAAA;AAAA,4BACC,SAAA,EAAWC,MAAA;AAAA,8BACTC,8BAAa,cAAc,CAAA;AAAA,8BAC3B,MAAA,CAAO,MAAA,GAAS,CAAA,IAAKA,6BAAA,CAAa,yBAAyB;AAAA,6BAC7D;AAAA,4BACA,QAAA,EAAS,QAAA;AAAA,4BACT,IAAA,EAAK,OAAA;AAAA,4BACL,OAAA,EAAS,WAAA;AAAA,4BACT,aAAA,EAAY,qBAAA;AAAA,4BACZ,IAAA,EAAK;AAAA;AAAA;AACP,uBAAA,EACF,CAAA;AAAA,qDACCC,kCAAA,EAAA,EAAkB,UAAA,EAAY,WAC7B,QAAA,kBAAApC,cAAA,CAACqC,2BAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,kBAAA,EAC5B,QAAA,EAAA,OAAA,IAAW,QAAQ,MAAA,GAAS,CAAA,GACzB,QAAQ,GAAA,CAAI,CAACC,QAAO,KAAA,KAAU;AAC5B,wBAAA,IAAI,aAAaA,MAAAA,EAAO;AACtB,0BAAA,MAAM,EAAE,OAAA,EAAS,QAAA,GAAW,EAAC,EAAG,GAAG,YAAW,GAAIA,MAAAA;AAClD,0BAAA,uBACEtC,cAAA;AAAA,4BAAC,WAAA;AAAA,4BAAA;AAAA,8BAEE,GAAG,UAAA;AAAA,8BAEH,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,SAAA,EAAW,SAAA,KAAc;AACtC,gCAAA,IAAI,QAAA,EAAU;AACZ,kCAAA,uBACEA,cAAA;AAAA,oCAAC,uBAAA;AAAA,oCAAA;AAAA,sCAEE,GAAG;AAAA,qCAAA;AAAA,oCADC,CAAA,OAAA,EAAU,EAAE,CAAA,OAAA,EAAU,KAAK,SAAS,SAAS,CAAA;AAAA,mCAEpD;AAAA,gCAEJ;AACA,gCAAA,uBACEA,cAAA;AAAA,kCAAC,UAAA;AAAA,kCAAA;AAAA,oCAEE,GAAG;AAAA,mCAAA;AAAA,kCADC,CAAA,OAAA,EAAU,EAAE,CAAA,OAAA,EAAU,KAAK,SAAS,SAAS,CAAA;AAAA,iCAEpD;AAAA,8BAEJ,CAAC;AAAA,6BAAA;AAAA,4BAlBI,CAAA,OAAA,EAAU,EAAE,CAAA,OAAA,EAAU,KAAK,CAAA;AAAA,2BAmBlC;AAAA,wBAEJ,CAAA,MAAO;AACL,0BAAA,IAAI,QAAA,EAAU;AACZ,4BAAA,uBACEA,cAAA;AAAA,8BAAC,uBAAA;AAAA,8BAAA;AAAA,gCAEE,GAAGsC;AAAA,+BAAA;AAAA,8BADC,CAAA,OAAA,EAAU,EAAE,CAAA,MAAA,EAAS,KAAK,CAAA;AAAA,6BAEjC;AAAA,0BAEJ;AACA,0BAAA,uBACEtC,cAAA;AAAA,4BAAC,UAAA;AAAA,4BAAA;AAAA,8BAEE,GAAGsC;AAAA,6BAAA;AAAA,4BADC,CAAA,OAAA,EAAU,EAAE,CAAA,MAAA,EAAS,KAAK,CAAA;AAAA,2BAEjC;AAAA,wBAEJ;AAAA,sBACF,CAAC,CAAA,GACD,QAAA,EACN,CAAA,EACF,CAAA;AAAA,sBACC,YAAY,OAAA,CAAQ,MAAA,KAAW,MAC7B,iBAAA,IAAqB,CAAC,CAAC,kBAAA,CAAA,oBACtBtC,cAAA;AAAA,wBAAC,gBAAA;AAAA,wBAAA;AAAA,0BACC,iBAAA;AAAA,0BACA,MAAA;AAAA,0BACA,UAAA;AAAA,0BACA,kBAAA;AAAA,0BACA,cAAA;AAAA,0BACA,YAAA;AAAA,0BACA,cAAA,EAAgB;AAAA;AAAA;AAClB,qBAAA,EAEN;AAAA;AAAA,iBACF,EACF;AAAA;AAAA;AAAA,WACF;AAAA,UACC,CAAC,CAAC,KAAA,IAAS,UAAU,IAAA,oBAAQA,cAAA,CAACuC,eAAO,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EAC9C,CAAA;AAAA,QACC,KAAA,oBACCvC,cAAA;AAAA,UAACwC,WAAA;AAAA,UAAA;AAAA,YACC,SAAS,EAAA,IAAM,SAAA;AAAA,YACf,QAAA;AAAA,YACA,KAAA,EAAO,CAAC,CAAC,KAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEO,MAAM,WAAA,GAAcC,gBAAA;AAAA,EACzB,CAAC,EAAE,QAAA,EAAU,SAAS,GAAG,KAAA,IAAS,YAAA,KAAiB;AACjD,IAAAC,mBAAA,EAAU;AACV,IAAA,uBACExB,eAAA;AAAA,MAACyB,qCAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,KAAKC,mBAAA,CAAU;AAAA,UACb,YAAA;AAAA,UACA,CAAA,IAAA,KAAQ;AACN,YAAA,MAAM,MAAA,GAAS,IAAA,EAAM,gBAAA,CAAiB,mBAAmB,EAAE,MAAA,KAAW,CAAA;AACtE,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,IAAA,EAAM,YAAA,CAAa,UAAU,EAAE,CAAA;AAAA,YACjC,CAAA,MAAO;AACL,cAAA,IAAA,EAAM,gBAAgB,QAAQ,CAAA;AAAA,YAChC;AACA,YAAA,IAAA,EAAM,YAAA,CAAa,aAAA,EAAe,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,UACrD;AAAA,SACD,CAAA;AAAA,QAED,QAAA,EAAA;AAAA,0BAAA5C,cAAA,CAAC6C,oCAAiB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,0BAC1B7C,cAAA,CAAC8C,uCAAoB,QAAA,EAAS;AAAA;AAAA;AAAA,KAChC;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAEnB,MAAM,UAAA,GAAaL,gBAAA;AAAA,EACxB,CACE;AAAA,IACE,QAAA,GAAW,KAAA;AAAA,IACX,QAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,KAAA,GAAQ,EAAA;AAAA,IACR,IAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA,EAAa,eAAA;AAAA,IACb,GAAG;AAAA,KAEL,YAAA,KACG;AACH,IAAA,MAAM,EAAE,WAAA,EAAa,iBAAA,EAAmB,UAAU,cAAA,EAAgB,QAAA,KAChEM,mBAAA,EAAU;AACZ,IAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAiC;AACtD,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,QAAA,CAAS,KAAA,EAAO,QAAW,GAAG,CAAA;AAC9B,QAAA,IAAI,OAAO,gBAAgB,UAAA,EAAY;AACrC,UAAA,YAAA,CAAa,KAAA,EAAO,QAAW,GAAG,CAAA;AAAA,QACpC;AAAA,MACF;AAAA,IACF,CAAA;AACA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkC;AACrD,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,eAAA,CAAgB,CAAC,CAAA;AAAA,MACnB;AACA,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAE/C,IAAA,uBACE7B,eAAA,CAAA8B,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA9B,eAAA;AAAA,QAAC+B,2BAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA;AAAA,UACJ,YAAA,EAAY,KAAA;AAAA,UACZ,OAAA,EAAS,aAAA;AAAA,UACT,WAAA;AAAA,UACA,GAAA,EAAK,YAAA;AAAA,UACL,YAAA,EAAY,YAAY,SAAA,GAAY,WAAA;AAAA,UACpC,eAAA,EAAe,WAAW,IAAA,GAAO,MAAA;AAAA,UACjC,kBAAA,EAAkB,WAAA,IAAe,KAAA,GAAQ,MAAA,GAAS,MAAA;AAAA,UAClD,iBAAA,EAAgB,EAAA;AAAA,UAEhB,QAAA,EAAA;AAAA,4BAAAjD,cAAA;AAAA,cAACkD,uBAAA;AAAA,cAAA;AAAA,gBACC,IAAA;AAAA,gBACA,OAAA;AAAA,gBACA,GAAA,EAAI,KAAA;AAAA,gBACJ,YAAA,EAAc,KAAA;AAAA,gBAEb,kCACChC,eAAA,CAAA8B,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,kBAAA,KAAA;AAAA,kBACA,WAAA,oBACChD,cAAA,CAAC,qBAAA,EAAA,EAAuB,QAAA,EAAA,WAAA,EAAY;AAAA,iBAAA,EAExC,CAAA,GAEA;AAAA;AAAA,aAEJ;AAAA,4BACAA,cAAA;AAAA,cAAC0B,SAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWQ,MAAA;AAAA,kBACTC,8BAAa,YAAY,CAAA;AAAA,kBACzB,SAAA,IAAaA,8BAAa,uBAAuB;AAAA,iBACnD;AAAA,gBACA,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAK;AAAA;AAAA;AACP;AAAA;AAAA,OACF;AAAA,MACC,SAAA,oBAAanC,cAAA,CAACmD,mBAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK;AAAA,KAAA,EACrC,CAAA;AAAA,EAEJ;AACF;AAMA,UAAA,CAAW,WAAA,GAAc,aAAA;AAElB,MAAM,uBAAA,GAA0BV,gBAAA;AAAA,EAIrC,CACE;AAAA,IACE,QAAA,GAAW,KAAA;AAAA,IACX,QAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,EAAa,eAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,SAAA;AAAA,IACA,KAAA,GAAQ,EAAA;AAAA,IACR,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,KACG;AACH,IAAA,MAAM,EAAE,WAAA,EAAa,iBAAA,EAAmB,UAAU,cAAA,EAAgB,QAAA,KAChEM,mBAAA,EAAU;AAEZ,IAAA,MAAM,mBAAA,GAAsB,CAAC,GAAA,KAAiC;AAC5D,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,QAAA,CAAS,KAAA,EAAO,QAAW,GAAG,CAAA;AAE9B,QAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,UAAA,YAAA,CAAa,KAAA,EAAO,QAAW,GAAG,CAAA;AAAA,QACpC;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,uBAAA,GAA0B,CAAC,CAAA,KAAkC;AACjE,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,eAAA,CAAgB,CAAC,CAAA;AAAA,MACnB;AACA,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAE/C,IAAA,uBACE7B,eAAA,CAAA8B,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAhD,cAAA;AAAA,QAACiD,2BAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA;AAAA,UACJ,YAAA,EAAY,KAAA;AAAA,UACZ,OAAA,EAAS,mBAAA;AAAA,UACT,WAAA,EAAa,uBAAA;AAAA,UACb,GAAA,EAAK,YAAA;AAAA,UACL,eAAA,EAAe,WAAW,IAAA,GAAO,MAAA;AAAA,UACjC,kBAAA,EAAkB,WAAA,IAAe,KAAA,GAAQ,MAAA,GAAS,MAAA;AAAA,UAClD,aAAA,EAAa,yBAAyB,KAAK,CAAA,CAAA;AAAA,UAC3C,iBAAA,EAAgB,EAAA;AAAA,UAEhB,QAAA,kBAAA/B,eAAA;AAAA,YAACjB,mBAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAY,YAAA;AAAA,cACZ,GAAA,EAAI,IAAA;AAAA,cACJ,QAAA,EAAS,QAAA;AAAA,cACT,YAAA,EAAc,KAAA;AAAA,cAEd,QAAA,EAAA;AAAA,gCAAAD,cAAA;AAAA,kBAACoD,iBAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAS,SAAA;AAAA,oBACT,aAAA,EAAY,uBAAA;AAAA,oBACZ,QAAA;AAAA,oBACA,SAAS,OAAA,IAAW;AAAA;AAAA,iBACtB;AAAA,gCACApD,cAAA;AAAA,kBAACkD,uBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,OAAA;AAAA,oBACA,GAAA,EAAI,KAAA;AAAA,oBACJ,YAAA,EAAc,KAAA;AAAA,oBAEb,kCACChC,eAAA,CAAA8B,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAA,KAAA;AAAA,sBACA,WAAA,oBACChD,cAAA,CAAC,qBAAA,EAAA,EAAuB,QAAA,EAAA,WAAA,EAAY;AAAA,qBAAA,EAExC,CAAA,GAEA;AAAA;AAAA;AAEJ;AAAA;AAAA;AACF;AAAA,OACF;AAAA,MACC,SAAA,oBAAaA,cAAA,CAACmD,mBAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK;AAAA,KAAA,EACrC,CAAA;AAAA,EAEJ;AACF;AAEA,uBAAA,CAAwB,WAAA,GAAc,aAAA;AAE/B,MAAM,qBAAA,GAAwBV,gBAAA;AAAA,EACnC,CAAC,EAAE,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/B,IAAA,uBACEzC,cAAA;AAAA,MAACqD,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWC,0CAAA;AAAA,QACX,KAAA,EAAM,OAAA;AAAA,QACL,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,qBAAA,CAAsB,WAAA,GAAc,wBAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"InternalSelect.cjs","sources":["../../../../../src/components/Select/common/InternalSelect.tsx"],"sourcesContent":["import {\n Children,\n FunctionComponent,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n forwardRef,\n isValidElement,\n useCallback,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n NoAvailableOptionsFactoryProps,\n SelectContainerProps,\n SelectGroupProps,\n SelectItemProps,\n} from './types';\nimport { Error, FormElementContainer, FormRoot } from '@/components/FormContainer';\nimport { Portal } from '@radix-ui/react-popover';\nimport { Checkbox } from '@/components/Checkbox';\nimport type { CheckboxVariants } from '@/components/Checkbox';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport { IconButton } from '@/components/IconButton';\nimport { Label } from '@/components/Label';\nimport { Separator } from '@/components/Separator';\nimport { Text } from '@/components/Text';\nimport type { TextProps } from '@/components/Text';\n\nimport {\n SelectPopoverContent,\n SearchBar,\n SearchBarContainer,\n SelectList,\n SelectListContent,\n SelectPopoverRoot,\n StyledSelectTrigger,\n SelectValue,\n HiddenSelectElement,\n SelectGroupContainer,\n SelectGroupName,\n SelectGroupContent,\n SelectNoDataContainer,\n SelectItemDescriptionText,\n selectStyles,\n} from './SelectComponents';\nimport { OptionContext } from './OptionContext';\nimport { MultiSelectValue } from '../MultiSelectValue';\nimport SingleSelectValue from '../SingleSelectValue';\nimport { useOption, useSearch } from './useOption';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { GenericMenuItem } from '@/components/GenericMenu';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { useInputModality } from '@/hooks/internal';\nimport { cn } from '@/lib/cva';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\n\ntype NormalizedOption = {\n value: string;\n disabled?: boolean;\n};\n\ntype RegisterItem = (value: string, nodeProps: SelectItemProps) => void;\n\ninterface NoOptionsDisplayProps {\n allowCreateOption: boolean;\n search: string;\n customText: string;\n noAvailableOptions: boolean | ((props: NoAvailableOptionsFactoryProps) => ReactNode);\n onCreateOption: (e: MouseEvent<HTMLDivElement>) => void;\n onOpenChange: (open: boolean) => void;\n containerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst NoOptionsDisplay: React.FC<NoOptionsDisplayProps> = ({\n allowCreateOption,\n search,\n customText,\n noAvailableOptions,\n onCreateOption,\n onOpenChange,\n containerProps,\n}) => {\n const getCustomTextWithSearch = (text: string) => text.replaceAll('{search}', search);\n\n const getDefaultMessage = () =>\n `No Options found${search.length > 0 ? ` for \"${search}\" ` : ''}`;\n\n const getNoAvailableOptionsNode = (): ReactNode => {\n if (typeof noAvailableOptions === 'boolean') {\n return noAvailableOptions ? getDefaultMessage() : null;\n }\n\n // ReactNode\n return noAvailableOptions({\n search,\n close: (): void => onOpenChange(false),\n });\n };\n\n // Determine node to render when there are no options\n const hasCustomText = customText.length > 0;\n const hasSearchInput = search.length > 0;\n const shouldShowCreateOption = allowCreateOption && hasSearchInput;\n\n let noOptionsNode: ReactNode = null;\n\n if (shouldShowCreateOption) {\n noOptionsNode = hasCustomText ? getCustomTextWithSearch(customText) : `Add ${search}`;\n } else if (hasCustomText) {\n noOptionsNode = getCustomTextWithSearch(customText);\n } else {\n noOptionsNode = getNoAvailableOptionsNode();\n }\n\n if (!noOptionsNode) {\n return null;\n }\n\n const handleNoOptionsClick = (e: MouseEvent<HTMLDivElement>) => {\n if (shouldShowCreateOption) {\n onCreateOption(e);\n onOpenChange(false);\n }\n };\n\n const isCustomReactNode = typeof noAvailableOptions === 'function';\n if (isCustomReactNode) {\n return (\n <Container\n onClick={handleNoOptionsClick}\n {...containerProps}\n >\n {noOptionsNode}\n </Container>\n );\n }\n\n return (\n <SelectNoDataContainer\n onClick={handleNoOptionsClick}\n $clickable={allowCreateOption}\n {...containerProps}\n >\n {noOptionsNode}\n </SelectNoDataContainer>\n );\n};\n\nconst childrenToNormalizedOptions = (\n children: ReactNode,\n register: RegisterItem\n): NormalizedOption[] => {\n return Children.toArray(children).flatMap(child => {\n if (isValidElement(child) && child && typeof child === 'object') {\n const type = child.type as FunctionComponent;\n if (type.displayName === 'Select.Group') {\n return childrenToNormalizedOptions(child.props.children, register);\n } else if (type.displayName === 'Select.Item') {\n const { value, disabled } = child.props;\n register(value, child.props);\n return { value, disabled };\n } else if ('props' in child && child.props.children) {\n return childrenToNormalizedOptions(child.props.children, register);\n }\n }\n return [];\n });\n};\n\nexport const InternalSelect = ({\n label,\n children,\n orientation,\n dir,\n disabled,\n id,\n error,\n value: selectedValues,\n onChange,\n onSelect,\n open,\n onOpenChange,\n name,\n form,\n allowCreateOption = false,\n customText = '',\n options,\n sortable = false,\n placeholder = 'Select an option',\n maxHeight,\n multiple,\n checkbox,\n selectLabel,\n showSearch = false,\n container,\n useFullWidthItems = false,\n itemCharacterLimit = '64ch',\n noAvailableOptions = true,\n triggerProps,\n ...props\n}: SelectContainerProps) => {\n const defaultId = useId();\n const [search, setSearch] = useState('');\n const [highlighted, setHighlighted] = useState<string | undefined>();\n // value -> lowercased rendered text (item + its group heading).\n const [searchSource, setSearchSource] = useState<Map<string, string>>(() => new Map());\n const valueNode = useRef<Map<string, SelectItemProps>>(new Map());\n\n const registerValueNode = useCallback<RegisterItem>((value, nodeProps) => {\n valueNode.current.set(value, nodeProps);\n }, []);\n\n const normalizedOptions = useMemo<NormalizedOption[]>(() => {\n if (options) {\n return options.flatMap(option => {\n if ('options' in option) {\n return (option.options ?? []).map(item => {\n registerValueNode(item.value, item);\n return { value: item.value, disabled: item.disabled };\n });\n }\n registerValueNode(option.value, option);\n return { value: option.value, disabled: option.disabled };\n });\n } else if (children) {\n return childrenToNormalizedOptions(children, registerValueNode);\n }\n\n return [];\n }, [children, options, registerValueNode]);\n\n const listNode = useRef<HTMLDivElement | null>(null);\n\n const captureSearchSource = useCallback(() => {\n const root = listNode.current;\n if (!root) {\n return;\n }\n const next = new Map<string, string>();\n root.querySelectorAll<HTMLElement>('[cui-select-item][data-value]').forEach(el => {\n const value = el.getAttribute('data-value');\n if (value === null) {\n return;\n }\n const group = el.closest('[cui-select-group]');\n const heading = group?.querySelector('[cui-select-group-name]')?.textContent ?? '';\n next.set(value, `${el.textContent ?? ''} ${heading}`.toLowerCase());\n });\n setSearchSource(next);\n }, []);\n\n const onSearchChange = (next: string) => {\n if (search === '' && next !== '') {\n // recapture searchable text from DOM when a new search begins\n // to make sure it's not stale (e.g. an item changed its contents for any reason)\n captureSearchSource();\n }\n setSearch(next);\n };\n\n const matchedOptions = useMemo(() => {\n if (search === '') {\n return normalizedOptions;\n }\n const searchLowerCase = search.toLowerCase();\n return normalizedOptions.filter(item =>\n (searchSource.get(item.value) ?? '').includes(searchLowerCase)\n );\n }, [search, normalizedOptions, searchSource]);\n\n const visibleValues = useMemo(\n () => new Set(matchedOptions.map(o => o.value)),\n [matchedOptions]\n );\n const navigableValues = useMemo(\n () => matchedOptions.filter(o => !o.disabled).map(o => o.value),\n [matchedOptions]\n );\n\n // `highlighted` is the user's last pointer; honor it only while it stays navigable.\n const effectiveHighlight =\n highlighted && navigableValues.includes(highlighted)\n ? highlighted\n : navigableValues[0];\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n const onFocus = () => {\n inputRef.current?.focus();\n };\n\n const clearSearch = () => {\n setSearch('');\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (!e.defaultPrevented) {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (effectiveHighlight) {\n onSelect(effectiveHighlight, undefined, e);\n } else if (matchedOptions.length === 0 && allowCreateOption) {\n onSelect(search, 'custom', e);\n }\n } else if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n let nextHighlightedValue = effectiveHighlight;\n const highlightedIndex = navigableValues.findIndex(\n value => value === effectiveHighlight\n );\n if (e.key === 'ArrowUp') {\n if (highlightedIndex === 0) {\n nextHighlightedValue = navigableValues[navigableValues.length - 1];\n } else {\n nextHighlightedValue = navigableValues[highlightedIndex - 1];\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (highlightedIndex === navigableValues.length - 1) {\n nextHighlightedValue = navigableValues[0];\n } else {\n nextHighlightedValue = navigableValues[highlightedIndex + 1];\n }\n } else if (e.key === 'End') {\n e.preventDefault();\n nextHighlightedValue = navigableValues[navigableValues.length - 1];\n } else if (e.key === 'Home') {\n nextHighlightedValue = navigableValues[0];\n e.preventDefault();\n }\n setHighlighted(nextHighlightedValue);\n }\n }\n };\n const isHidden = useCallback(\n (value?: string) => !visibleValues.has(value ?? ''),\n [visibleValues]\n );\n\n const optionContextValue = useMemo(() => {\n return {\n search,\n updateHighlighted: setHighlighted,\n highlighted: effectiveHighlight,\n isHidden,\n onSelect,\n selectedValues,\n };\n }, [search, effectiveHighlight, isHidden, onSelect, selectedValues]);\n\n const onCreateOption = (e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowCreateOption) {\n onSelect(search, 'custom', e);\n }\n };\n\n return (\n <FormRoot\n $orientation={orientation}\n $dir={dir}\n $addLabelPadding\n {...props}\n >\n <FormElementContainer>\n <SelectPopoverRoot\n open={open}\n onOpenChange={onOpenChange}\n modal={true}\n >\n <StyledSelectTrigger\n id={id ?? defaultId}\n $error={!!error}\n disabled={disabled}\n data-testid=\"select-trigger\"\n {...triggerProps}\n >\n <SelectValue>\n {selectedValues.length === 0 ? (\n placeholder\n ) : multiple ? (\n <MultiSelectValue\n disabled={disabled ?? false}\n onSelect={onSelect}\n selectedValues={selectedValues}\n sortable={!disabled && sortable}\n valueNode={valueNode.current}\n onChange={onChange}\n />\n ) : (\n <SingleSelectValue\n valueNode={\n checkbox && selectLabel\n ? { label: selectLabel as string, value: selectLabel as string }\n : valueNode.current.get(selectedValues[0])\n }\n value={selectedValues[0]}\n />\n )}\n </SelectValue>\n <Icon\n name=\"sort\"\n size=\"sm\"\n />\n </StyledSelectTrigger>\n {form && (\n <HiddenSelectElement\n multiple={multiple}\n name={name}\n form={form}\n value={selectedValues}\n onChange={() => null}\n >\n {normalizedOptions.map(item => (\n <option\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.value}\n </option>\n ))}\n </HiddenSelectElement>\n )}\n <Portal container={portalContainer}>\n <SelectPopoverContent\n {...inputModalityProps}\n sideOffset={5}\n onFocus={onFocus}\n onCloseAutoFocus={() => {\n setSearch('');\n }}\n align=\"start\"\n $useFullWidthItems={useFullWidthItems}\n $itemCharacterLimit={itemCharacterLimit}\n >\n <SelectList>\n <SearchBarContainer $showSearch={showSearch}>\n <SearchBar\n ref={inputRef}\n value={search}\n onChange={e => onSearchChange(e.target.value)}\n data-testid=\"select-search-input\"\n onKeyDown={onKeyDown}\n $showSearch={showSearch}\n />\n <IconButton\n className={cn(\n selectStyles['search-close'],\n search.length > 0 && selectStyles['search-close_show-close']\n )}\n htmlType=\"button\"\n icon=\"cross\"\n onClick={clearSearch}\n data-testid=\"select-search-close\"\n size=\"xs\"\n />\n </SearchBarContainer>\n <SelectListContent\n ref={listNode}\n $maxHeight={maxHeight}\n >\n <OptionContext.Provider value={optionContextValue}>\n {options && options.length > 0\n ? options.map((props, index) => {\n if ('options' in props) {\n const { options: itemList = [], ...groupProps } = props;\n return (\n <SelectGroup\n key={`select-${id}-group-${index}`}\n {...groupProps}\n >\n {itemList.map((itemProps, itemIndex) => {\n if (checkbox) {\n return (\n <MultiSelectCheckboxItem\n key={`select-${id}-group-${index}-item-${itemIndex}`}\n {...itemProps}\n />\n );\n }\n return (\n <SelectItem\n key={`select-${id}-group-${index}-item-${itemIndex}`}\n {...itemProps}\n />\n );\n })}\n </SelectGroup>\n );\n } else {\n if (checkbox) {\n return (\n <MultiSelectCheckboxItem\n key={`select-${id}-item-${index}`}\n {...props}\n />\n );\n }\n return (\n <SelectItem\n key={`select-${id}-item-${index}`}\n {...props}\n />\n );\n }\n })\n : children}\n </OptionContext.Provider>\n </SelectListContent>\n {matchedOptions.length === 0 &&\n (allowCreateOption || !!noAvailableOptions) && (\n <NoOptionsDisplay\n allowCreateOption={allowCreateOption}\n search={search}\n customText={customText}\n noAvailableOptions={noAvailableOptions}\n onCreateOption={onCreateOption}\n onOpenChange={onOpenChange}\n containerProps={props}\n />\n )}\n </SelectList>\n </SelectPopoverContent>\n </Portal>\n </SelectPopoverRoot>\n {!!error && error !== true && <Error>{error}</Error>}\n </FormElementContainer>\n {label && (\n <Label\n htmlFor={id ?? defaultId}\n disabled={disabled}\n error={!!error}\n >\n {label}\n </Label>\n )}\n </FormRoot>\n );\n};\n\nexport const SelectGroup = forwardRef<HTMLDivElement, SelectGroupProps>(\n ({ children, heading, ...props }, forwardedRef) => {\n useSearch();\n return (\n <SelectGroupContainer\n {...props}\n cui-select-group=\"\"\n ref={mergeRefs([\n forwardedRef,\n node => {\n const hidden =\n node?.querySelectorAll('[cui-select-item]:not([hidden])').length === 0;\n if (hidden) {\n node?.setAttribute('hidden', '');\n } else {\n node?.removeAttribute('hidden');\n }\n node?.setAttribute('aria-hidden', hidden.toString());\n },\n ])}\n >\n <SelectGroupName cui-select-group-name=\"\">{heading}</SelectGroupName>\n <SelectGroupContent>{children}</SelectGroupContent>\n </SelectGroupContainer>\n );\n }\n);\n\nSelectGroup.displayName = 'Select.Group';\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n (\n {\n disabled = false,\n children,\n label,\n description,\n separator,\n onSelect: onSelectProp,\n value = '',\n icon,\n iconDir,\n onMouseOver: onMouseOverProp,\n ...props\n },\n forwardedRef\n ) => {\n const { highlighted, updateHighlighted, isHidden, selectedValues, onSelect } =\n useOption();\n const onSelectValue = (evt: MouseEvent<HTMLElement>) => {\n if (!disabled) {\n onSelect(value, undefined, evt);\n if (typeof onSelectProp == 'function') {\n onSelectProp(value, undefined, evt);\n }\n }\n };\n const onMouseOver = (e: MouseEvent<HTMLDivElement>) => {\n if (onMouseOverProp) {\n onMouseOverProp(e);\n }\n if (!disabled) {\n updateHighlighted(value);\n }\n };\n\n // Render hidden rather than unmounting so the text stays in the DOM for search.\n const hidden = isHidden(value);\n const isChecked = selectedValues.includes(value);\n\n return (\n <>\n <GenericMenuItem\n {...props}\n hidden={hidden}\n className={cn(selectStyles['select-item'], props.className)}\n data-value={value}\n onClick={onSelectValue}\n onMouseOver={onMouseOver}\n ref={forwardedRef}\n data-state={isChecked ? 'checked' : 'unchecked'}\n data-disabled={disabled ? true : undefined}\n data-highlighted={highlighted == value ? 'true' : undefined}\n cui-select-item=\"\"\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n gap=\"xxs\"\n isResponsive={false}\n >\n {label ? (\n <>\n {label}\n {description && (\n <SelectItemDescription>{description}</SelectItemDescription>\n )}\n </>\n ) : (\n children\n )}\n </IconWrapper>\n <Icon\n className={cn(\n selectStyles['check-icon'],\n isChecked && selectStyles['check-icon_show-check']\n )}\n name=\"check\"\n size=\"sm\"\n />\n </GenericMenuItem>\n {separator && !hidden && <Separator size=\"sm\" />}\n </>\n );\n }\n);\n\nexport type MultiSelectCheckboxItemProps = SelectItemProps & {\n variant?: CheckboxVariants;\n};\n\nSelectItem.displayName = 'Select.Item';\n\nexport const MultiSelectCheckboxItem = forwardRef<\n HTMLDivElement,\n MultiSelectCheckboxItemProps\n>(\n (\n {\n disabled = false,\n children,\n icon,\n iconDir = 'end',\n label,\n description,\n onMouseOver: onMouseOverProp,\n onSelect: onSelectProp,\n separator,\n value = '',\n variant,\n ...props\n },\n forwardedRef\n ) => {\n const { highlighted, updateHighlighted, isHidden, selectedValues, onSelect } =\n useOption();\n\n const handleMenuItemClick = (evt: MouseEvent<HTMLElement>) => {\n if (!disabled) {\n onSelect(value, undefined, evt);\n\n if (typeof onSelectProp === 'function') {\n onSelectProp(value, undefined, evt);\n }\n }\n };\n\n const handleMenuItemMouseOver = (e: MouseEvent<HTMLDivElement>) => {\n if (onMouseOverProp) {\n onMouseOverProp(e);\n }\n if (!disabled) {\n updateHighlighted(value);\n }\n };\n\n // Render hidden rather than unmounting so the text stays in the DOM for search.\n const hidden = isHidden(value);\n const isChecked = selectedValues.includes(value);\n\n return (\n <>\n <GenericMenuItem\n {...props}\n hidden={hidden}\n className={cn(selectStyles['select-item'], props.className)}\n data-value={value}\n onClick={handleMenuItemClick}\n onMouseOver={handleMenuItemMouseOver}\n ref={forwardedRef}\n data-disabled={disabled ? true : undefined}\n data-highlighted={highlighted == value ? 'true' : undefined}\n data-testid={`multi-select-checkbox-${value}`}\n cui-select-item=\"\"\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n overflow=\"hidden\"\n isResponsive={false}\n >\n <Checkbox\n checked={isChecked}\n data-testid=\"multi-select-checkbox\"\n disabled={disabled}\n variant={variant ?? 'default'}\n />\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n gap=\"xxs\"\n isResponsive={false}\n >\n {label ? (\n <>\n {label}\n {description && (\n <SelectItemDescription>{description}</SelectItemDescription>\n )}\n </>\n ) : (\n children\n )}\n </IconWrapper>\n </Container>\n </GenericMenuItem>\n {separator && !hidden && <Separator size=\"sm\" />}\n </>\n );\n }\n);\n\nMultiSelectCheckboxItem.displayName = 'Select.Item';\n\nexport const SelectItemDescription = forwardRef<HTMLDivElement, TextProps>(\n ({ children, ...props }, ref) => {\n return (\n <Text\n ref={ref}\n component={SelectItemDescriptionText}\n color=\"muted\"\n {...props}\n >\n {children}\n </Text>\n );\n }\n);\n\nSelectItemDescription.displayName = 'Select.ItemDescription';\n"],"names":["jsx","Container","SelectNoDataContainer","Children","isValidElement","useId","useState","useRef","useCallback","useMemo","useInputModality","useResolvedPortalContainer","jsxs","FormRoot","FormElementContainer","SelectPopoverRoot","StyledSelectTrigger","SelectValue","MultiSelectValue","SingleSelectValue","Icon","HiddenSelectElement","Portal","SelectPopoverContent","SelectList","SearchBarContainer","SearchBar","IconButton","cn","selectStyles","SelectListContent","OptionContext","props","Error","Label","forwardRef","useSearch","SelectGroupContainer","mergeRefs","SelectGroupName","SelectGroupContent","useOption","Fragment","GenericMenuItem","IconWrapper","Separator","Checkbox","Text","SelectItemDescriptionText"],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const styles = {
|
|
|
18
18
|
"select-list-content": "select-list-content__AJbe9",
|
|
19
19
|
"hidden-select-element": "hidden-select-element__YZlhL",
|
|
20
20
|
"select-group-container": "select-group-container__Pd5rW",
|
|
21
|
+
"select-item": "select-item__BAnRr",
|
|
21
22
|
"select-group-name": "select-group-name__TrAy3",
|
|
22
23
|
"select-group-content": "select-group-content__OBO5d",
|
|
23
24
|
"select-no-data-container": "select-no-data-container__b2319",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectComponents.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectComponents.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/esm/click-ui.css
CHANGED
|
@@ -1109,6 +1109,8 @@
|
|
|
1109
1109
|
.generic-menu-panel_type_dropdown-menu__ezKZT {
|
|
1110
1110
|
max-width: var(--radix-dropdown-menu-content-available-width);
|
|
1111
1111
|
max-height: var(--radix-dropdown-menu-content-available-height);
|
|
1112
|
+
/* Kept in this file (not Dropdown.module.css) so it can't lose to `overflow: hidden` above due to cross-file import order. */
|
|
1113
|
+
overflow-y: auto;
|
|
1112
1114
|
}
|
|
1113
1115
|
|
|
1114
1116
|
.generic-menu-panel_type_context-menu__nu-Kt {
|
|
@@ -6519,6 +6521,10 @@ div:active + .topbadge__E79OZ {
|
|
|
6519
6521
|
display: none;
|
|
6520
6522
|
}
|
|
6521
6523
|
|
|
6524
|
+
.select-item__BAnRr[hidden] {
|
|
6525
|
+
display: none;
|
|
6526
|
+
}
|
|
6527
|
+
|
|
6522
6528
|
.select-group-name__TrAy3 {
|
|
6523
6529
|
display: flex;
|
|
6524
6530
|
width: 100%;
|
|
@@ -4,7 +4,7 @@ import { useId, useState, useRef, useEffect, useCallback, forwardRef } from 'rea
|
|
|
4
4
|
import { useCalendar } from '@h6s/calendar';
|
|
5
5
|
import { cn } from '../../lib/cva.js';
|
|
6
6
|
import styles from './Common.module.css.js';
|
|
7
|
-
import { shiftToTimezone, formatSelectedDate, formatSelectedDateTimeWithSeconds, formatSelectedDateTime,
|
|
7
|
+
import { shiftToTimezone, formatSelectedDate, formatSelectedDateTimeWithSeconds, formatSelectedDateTime, isDateRangeValid, formatDateHeader, formatWeekday } from './utils.js';
|
|
8
8
|
import { DAYS, YEARS, MONTHS, DAYS_IN_WEEK, getMonthNames } from '../../utils/date.js';
|
|
9
9
|
import { InputStartContent, InputElement, InputWrapper } from '../InputWrapper/index.js';
|
|
10
10
|
import { Icon as SvgImage } from '../Icon/index.js';
|
|
@@ -243,7 +243,7 @@ const DateTimeRangePickerInput = ({
|
|
|
243
243
|
formatDateTime(selectedEndDate).replace("AM", "am").replace("PM", "pm")
|
|
244
244
|
] });
|
|
245
245
|
}
|
|
246
|
-
const startDateIsAfterEndDate = selectedStartDate && selectedEndDate && !
|
|
246
|
+
const startDateIsAfterEndDate = selectedStartDate && selectedEndDate && !isDateRangeValid({
|
|
247
247
|
startDate: selectedStartDate,
|
|
248
248
|
endDate: selectedEndDate
|
|
249
249
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.js","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Common.module.css';\nimport {\n dateRangeIsValid,\n formatDateHeader,\n formatSelectedDate,\n formatSelectedDateTime,\n formatSelectedDateTimeWithSeconds,\n formatWeekday,\n shiftToTimezone,\n Timezone,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst viewGridMonths = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst viewGridYears = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst highlightedInputWrapperVariants = cva(styles['highlighted-input-wrapper'], {\n variants: {\n fillWidth: { true: styles['highlighted-input-wrapper_fill-width'] },\n active: { true: styles['highlighted-input-wrapper_active'] },\n },\n});\n\nconst dateTableCellVariants = cva(styles['date-table-cell'], {\n variants: {\n muted: { true: styles['date-table-cell_muted'] },\n disabled: { true: styles['date-table-cell_disabled'] },\n selected: { true: styles['date-table-cell_selected'] },\n present: { true: styles['date-table-cell_present'] },\n },\n});\n\nconst gridCellVariants = cva(styles['grid-cell'], {\n variants: {\n active: { true: styles['grid-cell_active'] },\n present: { true: styles['grid-cell_present'] },\n },\n});\n\ninterface HighlightedInputWrapperProps extends Omit<\n ComponentProps<typeof InputWrapper>,\n 'error'\n> {\n isActive: boolean;\n error?: boolean;\n fillWidth?: boolean;\n}\n\n// The resting default border and the error border are identical to what the\n// InputWrapper base / `.wrapper_error` already render, so only the width and the\n// active border are overridden here (see Common.module.css).\nconst HighlightedInputWrapper = ({\n isActive,\n error,\n fillWidth,\n disabled,\n id,\n children,\n className,\n}: HighlightedInputWrapperProps) => (\n <InputWrapper\n error={error}\n disabled={disabled}\n id={id}\n className={cn(\n highlightedInputWrapperVariants({ fillWidth, active: isActive && !error }),\n className\n )}\n >\n {children}\n </InputWrapper>\n);\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n timezone?: Timezone;\n}\n\nconst formatPartialDate = (\n timezone: Timezone,\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date =\n timezone === 'UTC'\n ? new Date(Date.UTC(partialYear, partialMonth, 1))\n : new Date(partialYear, partialMonth, 1);\n return formatDateHeader(timezone, date);\n }\n\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n\n if (selectedDate instanceof Date) {\n return formatSelectedDate(timezone, selectedDate);\n }\n\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n timezone = 'system',\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n timezone,\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n timezone = 'system',\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)} –{' '}\n {formatSelectedDate(timezone, selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n timezone = 'system',\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const formatDateTime = useCallback(\n (date: Date) => {\n if (shouldShowSeconds) {\n return formatSelectedDateTimeWithSeconds(timezone, date);\n }\n\n return formatSelectedDateTime(timezone, date);\n },\n [shouldShowSeconds, timezone]\n );\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')} –{' '}\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n }\n\n const startDateIsAfterEndDate =\n selectedStartDate &&\n selectedEndDate &&\n !dateRangeIsValid({\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n });\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n fillWidth\n disabled={disabled}\n error={startDateIsAfterEndDate}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTableCellProps extends HTMLAttributes<HTMLTableCellElement> {\n isCurrentMonth?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n isPresent?: boolean;\n}\n\nexport const DateTableCell = forwardRef<HTMLTableCellElement, DateTableCellProps>(\n (\n {\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n className,\n children,\n onClick,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n },\n ref\n ) => (\n <td\n ref={ref}\n className={cn(\n dateTableCellVariants({\n muted: !isCurrentMonth || isDisabled,\n disabled: isDisabled,\n selected: isSelected,\n present: isPresent && !isSelected,\n }),\n className\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n role={role}\n tabIndex={tabIndex}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n )\n);\nDateTableCell.displayName = 'DateTableCell';\n\nexport const StyledDropdownItem = ({\n className,\n children,\n onClick,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Dropdown.Item> & { 'data-testid'?: string }) => (\n <Dropdown.Item\n onClick={onClick}\n data-testid={dataTestId}\n className={cn(styles['styled-dropdown-item'], className)}\n >\n {children}\n </Dropdown.Item>\n);\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n timezone?: Timezone;\n className?: string;\n 'data-testid'?: string;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n {\n className,\n icon,\n onClick,\n onKeyDown,\n size,\n type,\n tabIndex,\n 'data-testid': dataTestId,\n },\n ref\n ) => (\n <IconButton\n ref={ref}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['picker-nav-control'], className)}\n />\n )\n);\nPickerNavControl.displayName = 'PickerNavControl';\n\nconst EmptyDateSelectNav = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n { className, icon, onKeyDown, size, type, tabIndex, 'data-testid': dataTestId },\n ref\n ) => (\n <PickerNavControl\n ref={ref}\n icon={icon}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['empty-date-select-nav'], className)}\n />\n )\n);\nEmptyDateSelectNav.displayName = 'EmptyDateSelectNav';\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n timezone = 'system',\n className,\n ...props\n}: CalendarRendererProps) => {\n // useCalendar reads dates as local; shiftToTimezone is a no-op in local mode.\n const shiftedCalendarOptions: UseCalendarOptions =\n calendarOptions.defaultDate instanceof Date\n ? {\n ...calendarOptions,\n defaultDate: shiftToTimezone(calendarOptions.defaultDate, timezone),\n }\n : calendarOptions;\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...shiftedCalendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + totalYears);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - totalYears);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = viewGridMonths.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = viewGridYears.columns;\n const totalItems = totalYears;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return 'Month';\n }\n\n if (view === YEARS) {\n return 'Year';\n }\n\n // headerDate already has the right month/year in its local fields.\n return formatDateHeader('system', headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = shiftToTimezone(new Date(), timezone);\n const thisMonth = today.getMonth();\n const thisYear = today.getFullYear();\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n const selectedMonth = shiftedSelected?.getMonth();\n const selectedYear = shiftedSelected?.getFullYear();\n\n return (\n <div\n className={cn(styles['grid-container'], styles['months-grid'])}\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((month, index) => {\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onMonthGridKeyDown(event, index);\n };\n\n const handleClick = () => {\n onMonthSelection(index);\n };\n\n const ref = (element: HTMLButtonElement) => {\n monthGridRef.current[index] = element;\n };\n\n const isActive = Boolean(\n selectedDate && index === selectedMonth && year === selectedYear\n );\n const isPresent = index === thisMonth && year === thisYear;\n\n return (\n <button\n key={month}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={month}\n >\n {month}\n </button>\n );\n })}\n </div>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const thisYear = shiftToTimezone(new Date(), timezone).getFullYear();\n const selectedYear = selectedDate\n ? shiftToTimezone(selectedDate, timezone).getFullYear()\n : undefined;\n\n for (let i = -yearsOffset; i <= yearsOffset; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <div\n className={cn(styles['grid-container'], styles['years-grid'])}\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currentYear, index) => {\n const ref = (element: HTMLButtonElement) => {\n yearGridRef.current[index] = element;\n };\n\n const handleClick = () => {\n onYearSelection(currentYear);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onYearGridKeyDown(event, index, currentYear);\n };\n\n const isActive = Boolean(selectedDate && currentYear === selectedYear);\n const isPresent = currentYear === thisYear;\n\n return (\n <button\n key={currentYear}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`year-cell-${currentYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currentYear)}\n >\n {currentYear}\n </button>\n );\n })}\n </div>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekdays.map(({ key, value: date }) => {\n return (\n <th\n key={key}\n className={styles['date-table-header']}\n >\n {formatWeekday('system', date)}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <Container\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n className={cn(styles['date-picker-container'], className)}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <button\n type=\"button\"\n className={styles['clickable-title']}\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </button>\n ) : (\n <h2 className={styles['unselectable-title']}>{getHeaderTitle(view)}</h2>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <table className={styles['date-table']}>{renderTableContent()}</table>\n </Container>\n );\n};\n"],"names":["Icon","view","selectedYear","month"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Common.js","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Common.module.css';\nimport {\n Timezone,\n formatDateHeader,\n formatSelectedDate,\n formatSelectedDateTime,\n formatSelectedDateTimeWithSeconds,\n formatWeekday,\n isDateRangeValid,\n shiftToTimezone,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst viewGridMonths = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst viewGridYears = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst highlightedInputWrapperVariants = cva(styles['highlighted-input-wrapper'], {\n variants: {\n fillWidth: { true: styles['highlighted-input-wrapper_fill-width'] },\n active: { true: styles['highlighted-input-wrapper_active'] },\n },\n});\n\nconst dateTableCellVariants = cva(styles['date-table-cell'], {\n variants: {\n muted: { true: styles['date-table-cell_muted'] },\n disabled: { true: styles['date-table-cell_disabled'] },\n selected: { true: styles['date-table-cell_selected'] },\n present: { true: styles['date-table-cell_present'] },\n },\n});\n\nconst gridCellVariants = cva(styles['grid-cell'], {\n variants: {\n active: { true: styles['grid-cell_active'] },\n present: { true: styles['grid-cell_present'] },\n },\n});\n\ninterface HighlightedInputWrapperProps extends Omit<\n ComponentProps<typeof InputWrapper>,\n 'error'\n> {\n isActive: boolean;\n error?: boolean;\n fillWidth?: boolean;\n}\n\n// The resting default border and the error border are identical to what the\n// InputWrapper base / `.wrapper_error` already render, so only the width and the\n// active border are overridden here (see Common.module.css).\nconst HighlightedInputWrapper = ({\n isActive,\n error,\n fillWidth,\n disabled,\n id,\n children,\n className,\n}: HighlightedInputWrapperProps) => (\n <InputWrapper\n error={error}\n disabled={disabled}\n id={id}\n className={cn(\n highlightedInputWrapperVariants({ fillWidth, active: isActive && !error }),\n className\n )}\n >\n {children}\n </InputWrapper>\n);\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n timezone?: Timezone;\n}\n\nconst formatPartialDate = (\n timezone: Timezone,\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date =\n timezone === 'UTC'\n ? new Date(Date.UTC(partialYear, partialMonth, 1))\n : new Date(partialYear, partialMonth, 1);\n return formatDateHeader(timezone, date);\n }\n\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n\n if (selectedDate instanceof Date) {\n return formatSelectedDate(timezone, selectedDate);\n }\n\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n timezone = 'system',\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n timezone,\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n timezone = 'system',\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)} –{' '}\n {formatSelectedDate(timezone, selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n timezone = 'system',\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const formatDateTime = useCallback(\n (date: Date) => {\n if (shouldShowSeconds) {\n return formatSelectedDateTimeWithSeconds(timezone, date);\n }\n\n return formatSelectedDateTime(timezone, date);\n },\n [shouldShowSeconds, timezone]\n );\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')} –{' '}\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n }\n\n const startDateIsAfterEndDate =\n selectedStartDate &&\n selectedEndDate &&\n !isDateRangeValid({\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n });\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n fillWidth\n disabled={disabled}\n error={startDateIsAfterEndDate}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTableCellProps extends HTMLAttributes<HTMLTableCellElement> {\n isCurrentMonth?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n isPresent?: boolean;\n}\n\nexport const DateTableCell = forwardRef<HTMLTableCellElement, DateTableCellProps>(\n (\n {\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n className,\n children,\n onClick,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n },\n ref\n ) => (\n <td\n ref={ref}\n className={cn(\n dateTableCellVariants({\n muted: !isCurrentMonth || isDisabled,\n disabled: isDisabled,\n selected: isSelected,\n present: isPresent && !isSelected,\n }),\n className\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n role={role}\n tabIndex={tabIndex}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n )\n);\nDateTableCell.displayName = 'DateTableCell';\n\nexport const StyledDropdownItem = ({\n className,\n children,\n onClick,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Dropdown.Item> & { 'data-testid'?: string }) => (\n <Dropdown.Item\n onClick={onClick}\n data-testid={dataTestId}\n className={cn(styles['styled-dropdown-item'], className)}\n >\n {children}\n </Dropdown.Item>\n);\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n timezone?: Timezone;\n className?: string;\n 'data-testid'?: string;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n {\n className,\n icon,\n onClick,\n onKeyDown,\n size,\n type,\n tabIndex,\n 'data-testid': dataTestId,\n },\n ref\n ) => (\n <IconButton\n ref={ref}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['picker-nav-control'], className)}\n />\n )\n);\nPickerNavControl.displayName = 'PickerNavControl';\n\nconst EmptyDateSelectNav = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n { className, icon, onKeyDown, size, type, tabIndex, 'data-testid': dataTestId },\n ref\n ) => (\n <PickerNavControl\n ref={ref}\n icon={icon}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['empty-date-select-nav'], className)}\n />\n )\n);\nEmptyDateSelectNav.displayName = 'EmptyDateSelectNav';\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n timezone = 'system',\n className,\n ...props\n}: CalendarRendererProps) => {\n // useCalendar reads dates as local; shiftToTimezone is a no-op in local mode.\n const shiftedCalendarOptions: UseCalendarOptions =\n calendarOptions.defaultDate instanceof Date\n ? {\n ...calendarOptions,\n defaultDate: shiftToTimezone(calendarOptions.defaultDate, timezone),\n }\n : calendarOptions;\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...shiftedCalendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + totalYears);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - totalYears);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = viewGridMonths.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = viewGridYears.columns;\n const totalItems = totalYears;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return 'Month';\n }\n\n if (view === YEARS) {\n return 'Year';\n }\n\n // headerDate already has the right month/year in its local fields.\n return formatDateHeader('system', headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = shiftToTimezone(new Date(), timezone);\n const thisMonth = today.getMonth();\n const thisYear = today.getFullYear();\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n const selectedMonth = shiftedSelected?.getMonth();\n const selectedYear = shiftedSelected?.getFullYear();\n\n return (\n <div\n className={cn(styles['grid-container'], styles['months-grid'])}\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((month, index) => {\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onMonthGridKeyDown(event, index);\n };\n\n const handleClick = () => {\n onMonthSelection(index);\n };\n\n const ref = (element: HTMLButtonElement) => {\n monthGridRef.current[index] = element;\n };\n\n const isActive = Boolean(\n selectedDate && index === selectedMonth && year === selectedYear\n );\n const isPresent = index === thisMonth && year === thisYear;\n\n return (\n <button\n key={month}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={month}\n >\n {month}\n </button>\n );\n })}\n </div>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const thisYear = shiftToTimezone(new Date(), timezone).getFullYear();\n const selectedYear = selectedDate\n ? shiftToTimezone(selectedDate, timezone).getFullYear()\n : undefined;\n\n for (let i = -yearsOffset; i <= yearsOffset; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <div\n className={cn(styles['grid-container'], styles['years-grid'])}\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currentYear, index) => {\n const ref = (element: HTMLButtonElement) => {\n yearGridRef.current[index] = element;\n };\n\n const handleClick = () => {\n onYearSelection(currentYear);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onYearGridKeyDown(event, index, currentYear);\n };\n\n const isActive = Boolean(selectedDate && currentYear === selectedYear);\n const isPresent = currentYear === thisYear;\n\n return (\n <button\n key={currentYear}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`year-cell-${currentYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currentYear)}\n >\n {currentYear}\n </button>\n );\n })}\n </div>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekdays.map(({ key, value: date }) => {\n return (\n <th\n key={key}\n className={styles['date-table-header']}\n >\n {formatWeekday('system', date)}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <Container\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n className={cn(styles['date-picker-container'], className)}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <button\n type=\"button\"\n className={styles['clickable-title']}\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </button>\n ) : (\n <h2 className={styles['unselectable-title']}>{getHeaderTitle(view)}</h2>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <table className={styles['date-table']}>{renderTableContent()}</table>\n </Container>\n );\n};\n"],"names":["Icon","view","selectedYear","month"],"mappings":";;;;;;;;;;;;;;;AAiCA,MAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,CAEX,CAAA;AAEA,MAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,CAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,UAAA,GAAa,aAAA,CAAc,OAAA,GAAU,aAAA,CAAc,IAAA;AACzD,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AAE7C,MAAM,+BAAA,GAAkC,GAAA,CAAI,MAAA,CAAO,2BAA2B,CAAA,EAAG;AAAA,EAC/E,QAAA,EAAU;AAAA,IACR,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,CAAO,sCAAsC,CAAA,EAAE;AAAA,IAClE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,CAAO,kCAAkC,CAAA;AAAE;AAE/D,CAAC,CAAA;AAED,MAAM,qBAAA,GAAwB,GAAA,CAAI,MAAA,CAAO,iBAAiB,CAAA,EAAG;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,CAAO,uBAAuB,CAAA,EAAE;AAAA,IAC/C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,CAAO,0BAA0B,CAAA,EAAE;AAAA,IACrD,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,CAAO,0BAA0B,CAAA,EAAE;AAAA,IACrD,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,CAAO,yBAAyB,CAAA;AAAE;AAEvD,CAAC,CAAA;AAED,MAAM,gBAAA,GAAmB,GAAA,CAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AAAA,EAChD,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,CAAO,kBAAkB,CAAA,EAAE;AAAA,IAC3C,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,CAAO,mBAAmB,CAAA;AAAE;AAEjD,CAAC,CAAA;AAcD,MAAM,0BAA0B,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA;AAAA,EAAC,YAAA;AAAA,EAAA;AAAA,IACC,KAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gCAAgC,EAAE,SAAA,EAAW,QAAQ,QAAA,IAAY,CAAC,OAAO,CAAA;AAAA,MACzE;AAAA,KACF;AAAA,IAEC;AAAA;AACH,CAAA;AAcF,MAAM,iBAAA,GAAoB,CACxB,QAAA,EACA,YAAA,EACA,aACA,YAAA,KACW;AACX,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,OAAO,iBAAiB,QAAA,EAAU;AACvE,IAAA,MAAM,OACJ,QAAA,KAAa,KAAA,GACT,IAAI,IAAA,CAAK,KAAK,GAAA,CAAI,WAAA,EAAa,YAAA,EAAc,CAAC,CAAC,CAAA,GAC/C,IAAI,IAAA,CAAK,WAAA,EAAa,cAAc,CAAC,CAAA;AAC3C,IAAA,OAAO,gBAAA,CAAiB,UAAU,IAAI,CAAA;AAAA,EACxC;AAEA,EAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,IAAA,OAAO,OAAO,WAAW,CAAA;AAAA,EAC3B;AAEA,EAAA,IAAI,wBAAwB,IAAA,EAAM;AAChC,IAAA,OAAO,kBAAA,CAAmB,UAAU,YAAY,CAAA;AAAA,EAClD;AAEA,EAAA,OAAO,EAAA;AACT,CAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAA4B;AAC1B,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,MAAM,qBAAA,GAAwB,iBAAA;AAAA,IAC5B,QAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,iBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAACA,QAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,aAAA,EAAY,kBAAA;AAAA,YACZ,WAAA;AAAA,YACA,QAAA,EAAQ,IAAA;AAAA,YACR,KAAA,EAAO;AAAA;AAAA;AACT;AAAA;AAAA,GACF;AAEJ;AAYO,MAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAiC;AAC/B,EAAA,MAAM,YAAY,KAAA,EAAM;AAExB,EAAA,IAAI,cAAA,mBACF,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAU,MAAA;AAAA,MAET,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,GAClB;AAEF,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,cAAA,wBACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,kBAAA,CAAmB,UAAU,iBAAiB,CAAA;AAAA,QAAE,IAAA;AAAA,QAAG,GAAA;AAAA,QACnD,kBAAA,CAAmB,UAAU,eAAe;AAAA,OAAA,EAC/C,CAAA;AAAA,IAEJ,CAAA,MAAO;AACL,MAAA,cAAA,wBACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,kBAAA,CAAmB,UAAU,iBAAiB,CAAA;AAAA,QAAG,GAAA;AAAA,wBAClD,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAU,MAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,iBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAACA,QAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,EAAA,EAAG,KAAA;AAAA,YACH,aAAA,EAAY,uBAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AAaO,MAAM,2BAA2B,CAAC;AAAA,EACvC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAqC;AACnC,EAAA,MAAM,YAAY,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,IAAA,KAAe;AACd,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,OAAO,iCAAA,CAAkC,UAAU,IAAI,CAAA;AAAA,MACzD;AAEA,MAAA,OAAO,sBAAA,CAAuB,UAAU,IAAI,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,mBAAmB,QAAQ;AAAA,GAC9B;AAEA,EAAA,IAAI,cAAA,mBACF,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAU,MAAA;AAAA,MAET,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,GAClB;AAGF,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,cAAA,wBACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,cAAA,CAAe,iBAAiB,EAAE,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,QAAE,IAAA;AAAA,QAAG,GAAA;AAAA,QAC7E,cAAA,CAAe,eAAe,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,OAAA,EACzE,CAAA;AAAA,IAEJ,CAAA,MAAO;AACL,MAAA,cAAA,wBACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,cAAA,CAAe,iBAAiB,EAAE,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,QAAG,GAAA;AAAA,wBAC5E,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAU,MAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF,WAAW,eAAA,EAAiB;AAC1B,IAAA,cAAA,wBACG,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,SAAA,EAAU,MAAA;AAAA,UACX,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YACc;AAAA;AAAA;AAAA,OACf;AAAA,MACC,cAAA,CAAe,eAAe,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,KAAA,EACzE,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,uBAAA,GACJ,iBAAA,IACA,eAAA,IACA,CAAC,gBAAA,CAAiB;AAAA,IAChB,SAAA,EAAW,iBAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACV,CAAA;AAEH,EAAA,uBACE,IAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,QAAA;AAAA,MACA,KAAA,EAAO,uBAAA;AAAA,MACP,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,iBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAACA,QAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,EAAA,EAAG,KAAA;AAAA,YACH,aAAA,EAAY,sBAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AASO,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,CACE;AAAA,IACE,cAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAc;AAAA,KAEhB,GAAA,qBAEA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA,CAAsB;AAAA,UACpB,KAAA,EAAO,CAAC,cAAA,IAAkB,UAAA;AAAA,UAC1B,QAAA,EAAU,UAAA;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,aAAa,CAAC;AAAA,SACxB,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA,EAAY,SAAA;AAAA,MAEX;AAAA;AAAA;AAGP;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAErB,MAAM,qBAAqB,CAAC;AAAA,EACjC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,qBACE,GAAA;AAAA,EAAC,QAAA,CAAS,IAAA;AAAA,EAAT;AAAA,IACC,OAAA;AAAA,IACA,aAAA,EAAa,UAAA;AAAA,IACb,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,sBAAsB,GAAG,SAAS,CAAA;AAAA,IAEtD;AAAA;AACH;AAiBF,MAAM,kBAAA,GAAqB,cAAc,OAAO,CAAA;AAIhD,MAAM,gBAAA,GAAmB,UAAA;AAAA,EAIvB,CACE;AAAA,IACE,SAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA,EAAe;AAAA,KAEjB,GAAA,qBAEA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,oBAAoB,GAAG,SAAS;AAAA;AAAA;AAG3D,CAAA;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,MAAM,kBAAA,GAAqB,UAAA;AAAA,EAIzB,CACE,EAAE,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,UAAA,EAAW,EAC9E,GAAA,qBAEA,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,uBAAuB,GAAG,SAAS;AAAA;AAAA;AAG9D,CAAA;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,MAAM,gBAAgB,CAAC;AAAA,EACrB,EAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,KASM;AACJ,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,uBACE,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,aAAA,EAAa,EAAA;AAAA,QACb,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,aAAA,EAAa,EAAA;AAAA,MACb,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,kBAAkB,EAAC;AAAA,EACnB,QAAA;AAAA,EACA,uBAAA,GAA0B,IAAA;AAAA,EAC1B,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,QAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6B;AAE3B,EAAA,MAAM,sBAAA,GACJ,eAAA,CAAgB,WAAA,YAAuB,IAAA,GACnC;AAAA,IACE,GAAG,eAAA;AAAA,IACH,WAAA,EAAa,eAAA,CAAgB,eAAA,CAAgB,WAAA,EAAa,QAAQ;AAAA,GACpE,GACA,eAAA;AACN,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,UAAA,EAAY,IAAA,KAAS,WAAA,CAAY;AAAA,IAC7D,gBAAA,EAAkB,CAAA;AAAA,IAClB,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAyB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,CAAC,CAAA;AAC9C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA;AAChE,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,WAAW,CAAA;AAEpE,EAAA,MAAM,YAAA,GAAe,MAAA,CAAwC,EAAE,CAAA;AAC/D,EAAA,MAAM,WAAA,GAAc,MAAA,CAAwC,EAAE,CAAA;AAC9D,EAAA,MAAM,gBAAgB,MAAA,CAAwC,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAEhF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA,EAAG,KAAA,EAAM;AAAA,IAC/C,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,YAAA,CAAa,OAAA,CAAQ,iBAAiB,CAAA,EAAG,KAAA,EAAM;AAAA,IACjD;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,gBAAA,EAAkB,iBAAiB,CAAC,CAAA;AAE9C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,aAAA,CAAc,CAAA,IAAA,KAAQ,OAAO,UAAU,CAAA;AAAA,IACzC,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,MAAA,EAAO;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,aAAA,CAAc,CAAA,IAAA,KAAQ,OAAO,UAAU,CAAA;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,UAAA,CAAW,MAAA,EAAO;AAAA,EACpB,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,kBAAA,GAAqB,WAAA,CAAY,CAAC,CAAA,KAAwC;AAC9E,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,CAAA,GAAA,KAAO;AACpD,MAAA,IAAI,CAAC,GAAA,EAAK;AACR,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OACE,GAAA,CAAI,YAAA,KAAiB,IAAA,IACpB,CAAC,GAAA,CAAI,YAAA,CAAa,QAAQ,CAAA,IAAK,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA,KAAM,MAAA;AAAA,IAExE,CAAC,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,SAAA,CAAU,OAAA,CAAQ,CAAA,CAAE,aAAa,CAAA;AAC3D,IAAA,IAAI,iBAAA,KAAsB,EAAA,IAAM,SAAA,CAAU,MAAA,IAAU,CAAA,EAAG;AACrD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAA,CAAE,QAAQ,YAAA,EAAc;AAC1B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,cAAA,GAAA,CAAkB,iBAAA,GAAoB,CAAA,IAAK,SAAA,CAAU,MAAA;AAC3D,MAAA,SAAA,CAAU,cAAc,GAAG,KAAA,EAAM;AAAA,IACnC,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,EAAa;AAChC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,cAAA,GAAA,CACH,iBAAA,GAAoB,CAAA,GAAI,SAAA,CAAU,UAAU,SAAA,CAAU,MAAA;AACzD,MAAA,SAAA,CAAU,cAAc,GAAG,KAAA,EAAM;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,SAAA,KAAsB;AACrB,MAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,MAAA,OAAA,CAAQ,MAAM,CAAA;AACd,MAAA,YAAA,GAAe,SAAS,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,UAAA,KAAuB;AACtB,MAAA,MAAM,SAAA,GAAY,OAAO,YAAA,KAAiB,QAAA,GAAW,YAAA,GAAe,IAAA;AACpE,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,SAAA,EAAW,YAAY,CAAC,CAAA;AAEjD,MAAA,UAAA,CAAW,QAAQ,OAAO,CAAA;AAC1B,MAAA,aAAA,GAAgB,WAAW,UAAU,CAAA;AAErC,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,aAAA,CAAc,CAAC,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,IAAA,EAAM,UAAA,EAAY,aAAa;AAAA,GAChD;AAEA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,OAAyC,KAAA,KAAkB;AAC1D,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,UAAA,GAAa,EAAA;AACnB,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,CAAA,IAAK,UAAA;AACzB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,IAAI,UAAA,IAAc,UAAA;AACtC,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,OAAA,IAAW,UAAA;AAC/B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,UAAU,UAAA,IAAc,UAAA;AAC5C,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,MAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAM;AAAA,IACxC,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,KAAA,EAAyC,KAAA,EAAe,SAAA,KAAsB;AAC7E,MAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,MAAA,MAAM,UAAA,GAAa,UAAA;AACnB,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,CAAA,IAAK,UAAA;AACzB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,IAAI,UAAA,IAAc,UAAA;AACtC,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,OAAA,IAAW,UAAA;AAC/B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,UAAU,UAAA,IAAc,UAAA;AAC5C,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,mBAAA,CAAoB,QAAQ,CAAA;AAC5B,MAAA,WAAA,CAAY,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAM;AAAA,IACvC,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,UAAA,uBAAiB,IAAA,EAAK;AAC5B,EAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AACzB,EAAA,UAAA,CAAW,YAAY,IAAI,CAAA;AAE3B,EAAA,MAAM,cAAA,GAAiB,CAACC,KAAAA,KAAyB;AAC/C,IAAA,IAAIA,UAAS,MAAA,EAAQ;AACnB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,IAAIA,UAAS,KAAA,EAAO;AAClB,MAAA,OAAO,MAAA;AAAA,IACT;AAGA,IAAA,OAAO,gBAAA,CAAiB,UAAU,UAAU,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,eAAA,iBAAgB,IAAI,IAAA,IAAQ,QAAQ,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,MAAM,QAAA,EAAS;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,eAAA,GAAkB,YAAA,GACpB,eAAA,CAAgB,YAAA,EAAc,QAAQ,CAAA,GACtC,MAAA;AACJ,IAAA,MAAM,aAAA,GAAgB,iBAAiB,QAAA,EAAS;AAChD,IAAA,MAAMC,aAAAA,GAAe,iBAAiB,WAAA,EAAY;AAElD,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,MAAA,CAAO,gBAAgB,CAAA,EAAG,MAAA,CAAO,aAAa,CAAC,CAAA;AAAA,QAC7D,aAAA,EAAY,aAAA;AAAA,QACZ,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,cAAA;AAAA,QAEV,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAACC,MAAAA,EAAO,KAAA,KAAU;AACxC,UAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,YAAA,kBAAA,CAAmB,OAAO,KAAK,CAAA;AAAA,UACjC,CAAA;AAEA,UAAA,MAAM,cAAc,MAAM;AACxB,YAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,UACxB,CAAA;AAEA,UAAA,MAAM,GAAA,GAAM,CAAC,OAAA,KAA+B;AAC1C,YAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA;AAAA,UAChC,CAAA;AAEA,UAAA,MAAM,QAAA,GAAW,OAAA;AAAA,YACf,YAAA,IAAgB,KAAA,KAAU,aAAA,IAAiB,IAAA,KAASD;AAAA,WACtD;AACA,UAAA,MAAM,SAAA,GAAY,KAAA,KAAU,SAAA,IAAa,IAAA,KAAS,QAAA;AAElD,UAAA,uBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,GAAA;AAAA,cACA,WAAW,gBAAA,CAAiB;AAAA,gBAC1B,MAAA,EAAQ,QAAA;AAAA,gBACR,OAAA,EAAS,aAAa,CAAC;AAAA,eACxB,CAAA;AAAA,cACD,OAAA,EAAS,WAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,aAAA,EAAa,cAAc,KAAK,CAAA,CAAA;AAAA,cAChC,QAAA,EAAU,KAAA,KAAU,iBAAA,GAAoB,CAAA,GAAI,EAAA;AAAA,cAC5C,YAAA,EAAYC,MAAAA;AAAA,cAEX,QAAA,EAAAA;AAAA,aAAA;AAAA,YAbIA;AAAA,WAcP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,QAAuB,EAAC;AAC9B,IAAA,MAAM,WAAW,IAAA,GAAO,UAAA;AACxB,IAAA,MAAM,WAAW,eAAA,iBAAgB,IAAI,MAAK,EAAG,QAAQ,EAAE,WAAA,EAAY;AACnE,IAAA,MAAMD,gBAAe,YAAA,GACjB,eAAA,CAAgB,cAAc,QAAQ,CAAA,CAAE,aAAY,GACpD,MAAA;AAEJ,IAAA,KAAA,IAAS,CAAA,GAAI,CAAC,WAAA,EAAa,CAAA,IAAK,aAAa,CAAA,EAAA,EAAK;AAChD,MAAA,KAAA,CAAM,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,IACzB;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,MAAA,CAAO,gBAAgB,CAAA,EAAG,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,QAC5D,aAAA,EAAY,YAAA;AAAA,QACZ,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,aAAA;AAAA,QAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,WAAA,EAAa,KAAA,KAAU;AACjC,UAAA,MAAM,GAAA,GAAM,CAAC,OAAA,KAA+B;AAC1C,YAAA,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA;AAAA,UAC/B,CAAA;AAEA,UAAA,MAAM,cAAc,MAAM;AACxB,YAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,UAC7B,CAAA;AAEA,UAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,YAAA,iBAAA,CAAkB,KAAA,EAAO,OAAO,WAAW,CAAA;AAAA,UAC7C,CAAA;AAEA,UAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,YAAA,IAAgB,WAAA,KAAgBA,aAAY,CAAA;AACrE,UAAA,MAAM,YAAY,WAAA,KAAgB,QAAA;AAElC,UAAA,uBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,GAAA;AAAA,cACA,WAAW,gBAAA,CAAiB;AAAA,gBAC1B,MAAA,EAAQ,QAAA;AAAA,gBACR,OAAA,EAAS,aAAa,CAAC;AAAA,eACxB,CAAA;AAAA,cACD,OAAA,EAAS,WAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,aAAA,EAAa,aAAa,WAAW,CAAA,CAAA;AAAA,cACrC,QAAA,EAAU,KAAA,KAAU,gBAAA,GAAmB,CAAA,GAAI,EAAA;AAAA,cAC3C,YAAA,EAAY,OAAO,WAAW,CAAA;AAAA,cAE7B,QAAA,EAAA;AAAA,aAAA;AAAA,YAbI;AAAA,WAcP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS,YAAA,EAAe,QAAA,EAAA,gBAAA,EAAiB,EAAE,CAAA,EACjD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS,YAAA,EAAe,QAAA,EAAA,eAAA,EAAgB,EAAE,CAAA,EAChD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,IAAA,EAAK,KAAM;AAC9C,QAAA,uBACE,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,OAAO,mBAAmB,CAAA;AAAA,YAEpC,QAAA,EAAA,aAAA,CAAc,UAAU,IAAI;AAAA,WAAA;AAAA,UAHxB;AAAA,SAIP;AAAA,MAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,QAAA,CAAS,IAAI,CAAA,EAAE;AAAA,KAAA,EACzB,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,+BAAA;AAAA,MACZ,YAAA,EAAc,KAAA;AAAA,MACd,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAY,UAAA;AAAA,MACZ,OAAA,EAAQ,IAAA;AAAA,MACP,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,uBAAuB,GAAG,SAAS,CAAA;AAAA,MAExD,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,KAAA;AAAA,YACd,cAAA,EAAe,eAAA;AAAA,YACf,WAAA,EAAY,YAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,yBAAA;AAAA,kBACH,IAAA,EAAK,cAAA;AAAA,kBACL,OAAA,EAAS,eAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,IAAA;AAAA,kBACA,QAAA,EAAU,IAAA,KAAS,MAAA,GAAS,EAAA,GAAK,CAAA;AAAA,kBACjC,WAAW,CAAA,EAAA,KAAM;AACf,oBAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,oBAC7B;AAAA,kBACF;AAAA;AAAA,eACF;AAAA,cACC,IAAA,KAAS,QAAQ,uBAAA,mBAChB,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,OAAO,iBAAiB,CAAA;AAAA,kBACnC,KAAK,CAAA,EAAA,KAAM;AACT,oBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,kBAC7B,CAAA;AAAA,kBACA,OAAA,EAAS,YAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,aAAA,EAAY,gBAAA;AAAA,kBACZ,QAAA,EAAU,CAAA;AAAA,kBAET,yBAAe,IAAI;AAAA;AAAA,eACtB,uBAEC,IAAA,EAAA,EAAG,SAAA,EAAW,OAAO,oBAAoB,CAAA,EAAI,QAAA,EAAA,cAAA,CAAe,IAAI,CAAA,EAAE,CAAA;AAAA,8BAErE,GAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,qBAAA;AAAA,kBACH,IAAA,EAAK,eAAA;AAAA,kBACL,OAAA,EAAS,WAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,IAAA;AAAA,kBACA,QAAA,EAAU,IAAA,KAAS,MAAA,GAAS,EAAA,GAAK,CAAA;AAAA,kBACjC,WAAW,CAAA,EAAA,KAAM;AACf,oBAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,oBAC7B;AAAA,kBACF;AAAA;AAAA;AACF;AAAA;AAAA,SACF;AAAA,4BACC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAO,YAAY,CAAA,EAAI,8BAAmB,EAAE;AAAA;AAAA;AAAA,GAChE;AAEJ;;;;"}
|
|
@@ -5,7 +5,7 @@ import { isSameDate } from '@h6s/calendar';
|
|
|
5
5
|
import { DateRangePickerInput, CalendarRenderer, StyledDropdownItem, DateTableCell } from './Common.js';
|
|
6
6
|
import { cn } from '../../lib/cva.js';
|
|
7
7
|
import styles from './DateRangePicker.module.css.js';
|
|
8
|
-
import { isDateRangeTheWholeMonth, formatDateHeader, formatSelectedDate, shiftToTimezone,
|
|
8
|
+
import { isDateRangeTheWholeMonth, formatDateHeader, formatSelectedDate, shiftToTimezone, areDatesWithinMaxRange, isDateNotInAllowList, shiftFromTimezone } from './utils.js';
|
|
9
9
|
import { Dropdown } from '../Dropdown/index.js';
|
|
10
10
|
import { Panel } from '../Panel/index.js';
|
|
11
11
|
import { Container } from '../Container/index.js';
|
|
@@ -163,7 +163,7 @@ const Calendar = ({
|
|
|
163
163
|
if (futureStartDatesDisabled && !shiftedStart && fullDate > today) {
|
|
164
164
|
isDisabled = true;
|
|
165
165
|
}
|
|
166
|
-
if (maxRangeLength > 1 && shiftedStart && !
|
|
166
|
+
if (maxRangeLength > 1 && shiftedStart && !areDatesWithinMaxRange(shiftedStart, fullDate, maxRangeLength) && fullDate > shiftedStart) {
|
|
167
167
|
isDisabled = true;
|
|
168
168
|
}
|
|
169
169
|
if (isDateNotInAllowList(shiftedAllowList, fullDate)) {
|