@servicetitan/anvil2 1.49.6 → 1.49.7
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/CHANGELOG.md +18 -0
- package/dist/{Alert-aGBkujwE.js → Alert-DNhUyWVm.js} +3 -2
- package/dist/{Alert-aGBkujwE.js.map → Alert-DNhUyWVm.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-BPwFNhYe.js → Announcement-BBq8zIQ3.js} +3 -2
- package/dist/{Announcement-BPwFNhYe.js.map → Announcement-BBq8zIQ3.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{Breadcrumbs-Y6IaMoi5.js → Breadcrumbs-CfJJlIIa.js} +2 -2
- package/dist/{Breadcrumbs-Y6IaMoi5.js.map → Breadcrumbs-CfJJlIIa.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-Ce08LvdP.js → Calendar-C9oxHTGG.js} +2 -2
- package/dist/{Calendar-Ce08LvdP.js.map → Calendar-C9oxHTGG.js.map} +1 -1
- package/dist/{Calendar-B5Ednjem.js → Calendar-CAYitkfM.js} +2 -2
- package/dist/{Calendar-B5Ednjem.js.map → Calendar-CAYitkfM.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-nE-_tWmc.js → Checkbox-DbBeuNdW.js} +2 -2
- package/dist/{Checkbox-nE-_tWmc.js.map → Checkbox-DbBeuNdW.js.map} +1 -1
- package/dist/{Checkbox-ByaZv8wu.js → Checkbox-zAKOGEBl.js} +2 -2
- package/dist/{Checkbox-ByaZv8wu.js.map → Checkbox-zAKOGEBl.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Combobox-Dy4IZDg1.js → Combobox-hxGMMb8x.js} +4 -4
- package/dist/{Combobox-Dy4IZDg1.js.map → Combobox-hxGMMb8x.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-D6MmOQF2.js → DataTable-CUFa7cQK.js} +4 -4
- package/dist/{DataTable-D6MmOQF2.js.map → DataTable-CUFa7cQK.js.map} +1 -1
- package/dist/{DateField-BxS9LZG7.js → DateField-BT9jJRp5.js} +5 -5
- package/dist/{DateField-BxS9LZG7.js.map → DateField-BT9jJRp5.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-BdDiHUfv.js → DateFieldRange-ZAic_9mt.js} +5 -5
- package/dist/{DateFieldRange-BdDiHUfv.js.map → DateFieldRange-ZAic_9mt.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CuQO3LH9.js → DateFieldSingle-DAtR8ImE.js} +5 -5
- package/dist/{DateFieldSingle-CuQO3LH9.js.map → DateFieldSingle-DAtR8ImE.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-2YhZmNYg.js → DateFieldYearless-DXO_MPwA.js} +3 -3
- package/dist/{DateFieldYearless-2YhZmNYg.js.map → DateFieldYearless-DXO_MPwA.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-CgCmvHLs.js → DateFieldYearlessRange-Cg6bbPIi.js} +3 -3
- package/dist/{DateFieldYearlessRange-CgCmvHLs.js.map → DateFieldYearlessRange-Cg6bbPIi.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-DlIka9b_.js → DaysOfTheWeek-9B9d7-hF.js} +2 -2
- package/dist/{DaysOfTheWeek-DlIka9b_.js.map → DaysOfTheWeek-9B9d7-hF.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-DSwvbfdW.js → Dialog-UzG6-s9H.js} +13 -13
- package/dist/{Dialog-DSwvbfdW.js.map → Dialog-UzG6-s9H.js.map} +1 -1
- package/dist/Dialog.css +32 -32
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-CGYcEj6d.js → Drawer-BHK18NYm.js} +12 -12
- package/dist/{Drawer-CGYcEj6d.js.map → Drawer-BHK18NYm.js.map} +1 -1
- package/dist/Drawer.css +31 -31
- package/dist/Drawer.js +1 -1
- package/dist/{FieldMessage-DWONT3dr.js → FieldMessage-DdCUxZz-.js} +3 -3
- package/dist/FieldMessage-DdCUxZz-.js.map +1 -0
- package/dist/FieldMessage.js +1 -1
- package/dist/{Helper-DjWotFtO.js → Helper-DzVUQgUJ.js} +2 -2
- package/dist/{Helper-DjWotFtO.js.map → Helper-DzVUQgUJ.js.map} +1 -1
- package/dist/{InputMask-DaN_Adz6.js → InputMask-CJC9xZHG.js} +2 -2
- package/dist/{InputMask-DaN_Adz6.js.map → InputMask-CJC9xZHG.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DqZxs0kQ.js → Link-CGXEFA9w.js} +2 -2
- package/dist/{Link-DqZxs0kQ.js.map → Link-CGXEFA9w.js.map} +1 -1
- package/dist/Link.css +30 -24
- package/dist/Link.js +1 -1
- package/dist/Link.module-ByPQQ0zy.js +14 -0
- package/dist/Link.module-ByPQQ0zy.js.map +1 -0
- package/dist/{LinkButton-jb2Gc3hC.js → LinkButton-BBCO-4em.js} +2 -2
- package/dist/{LinkButton-jb2Gc3hC.js.map → LinkButton-BBCO-4em.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-B1I7Ii3g.js → ListView-D8mfK8Lu.js} +2 -2
- package/dist/{ListView-B1I7Ii3g.js.map → ListView-D8mfK8Lu.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{NumberField-BdK4U9mW.js → NumberField-CjWLnD9X.js} +2 -2
- package/dist/{NumberField-BdK4U9mW.js.map → NumberField-CjWLnD9X.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-C-yMjgoO.js → Page-ClI3IOc7.js} +4 -4
- package/dist/{Page-C-yMjgoO.js.map → Page-ClI3IOc7.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Popover-CcMDyKTj.js → Popover-CCXrzBul.js} +27 -6
- package/dist/Popover-CCXrzBul.js.map +1 -0
- package/dist/Popover.css +40 -9
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CufkbVu5.js → ProgressBar-BpKEr6cO.js} +4 -3
- package/dist/{ProgressBar-CufkbVu5.js.map → ProgressBar-BpKEr6cO.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BeBG7Ksw.js → Radio-jj0-1dOg.js} +2 -2
- package/dist/{Radio-BeBG7Ksw.js.map → Radio-jj0-1dOg.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-BAjpkCjp.js → RadioGroup-Bxy415eu.js} +2 -2
- package/dist/{RadioGroup-BAjpkCjp.js.map → RadioGroup-Bxy415eu.js.map} +1 -1
- package/dist/{SelectCard-DDN7qqHv.js → SelectCard-CjbsPKZ4.js} +3 -3
- package/dist/{SelectCard-DDN7qqHv.js.map → SelectCard-CjbsPKZ4.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-DQm3_D0v.js → SelectFieldSync-BOzavAtv.js} +2 -2
- package/dist/{SelectFieldSync-DQm3_D0v.js.map → SelectFieldSync-BOzavAtv.js.map} +1 -1
- package/dist/{SelectTrigger-CNEhRluU.js → SelectTrigger-DfVnPiNf.js} +2 -2
- package/dist/{SelectTrigger-CNEhRluU.js.map → SelectTrigger-DfVnPiNf.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Cv6hGsrC.js → SelectTriggerBase-D8scKtBr.js} +2 -2
- package/dist/{SelectTriggerBase-Cv6hGsrC.js.map → SelectTriggerBase-D8scKtBr.js.map} +1 -1
- package/dist/{Switch-BXDPs2mD.js → Switch-CGpg2ake.js} +2 -2
- package/dist/{Switch-BXDPs2mD.js.map → Switch-CGpg2ake.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{TextField-aMwSN1iP.js → TextField-DNuEXKyN.js} +2 -2
- package/dist/{TextField-aMwSN1iP.js.map → TextField-DNuEXKyN.js.map} +1 -1
- package/dist/{TextField--y8q4R2H.js → TextField-Qv6OqiKQ.js} +2 -2
- package/dist/{TextField--y8q4R2H.js.map → TextField-Qv6OqiKQ.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-D1zwX2h6.js → Textarea-DdLD4imO.js} +2 -2
- package/dist/{Textarea-D1zwX2h6.js.map → Textarea-DdLD4imO.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-BHxXbOfe.js → TimeField-C39hYluo.js} +3 -3
- package/dist/{TimeField-BHxXbOfe.js.map → TimeField-C39hYluo.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CRp3nf4U.js → Toaster-DJ4tNy-0.js} +2 -2
- package/dist/{Toaster-CRp3nf4U.js.map → Toaster-DJ4tNy-0.js.map} +1 -1
- package/dist/{Toaster-qPt6zb6F.js → Toaster-DyDVYq4x.js} +148 -53
- package/dist/Toaster-DyDVYq4x.js.map +1 -0
- package/dist/Toaster.css +95 -71
- package/dist/{Toolbar-XJrmS4v4.js → Toolbar-BxYOXLmv.js} +10 -10
- package/dist/{Toolbar-XJrmS4v4.js.map → Toolbar-BxYOXLmv.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{YearlessDateInputWithPicker-LiMI-Oer.js → YearlessDateInputWithPicker-DMGx3gE2.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-LiMI-Oer.js.map → YearlessDateInputWithPicker-DMGx3gE2.js.map} +1 -1
- package/dist/beta.js +5 -5
- package/dist/check_circle-CM0ukqXv.js +6 -0
- package/dist/check_circle-CM0ukqXv.js.map +1 -0
- package/dist/components/Popover/internal/PopoverContext.d.ts +1 -0
- package/dist/components/Popover/internal/usePopoverContext.d.ts +1 -0
- package/dist/components/Toast/internal/constants.d.ts +16 -0
- package/dist/error-DR_wWdYY.js +6 -0
- package/dist/error-DR_wWdYY.js.map +1 -0
- package/dist/index.js +35 -35
- package/dist/{utils-C-hkPwMi.js → utils-Bkbn9cyk.js} +2 -2
- package/dist/{utils-C-hkPwMi.js.map → utils-Bkbn9cyk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/FieldMessage-DWONT3dr.js.map +0 -1
- package/dist/Link.module-CjeOl2NH.js +0 -14
- package/dist/Link.module-CjeOl2NH.js.map +0 -1
- package/dist/Popover-CcMDyKTj.js.map +0 -1
- package/dist/Toaster-qPt6zb6F.js.map +0 -1
- package/dist/check_circle-Dja-C2lM.js +0 -8
- package/dist/check_circle-Dja-C2lM.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox-Dy4IZDg1.js","sources":["../src/internal/components/Label/Label.tsx","../src/components/Combobox/internal/ComboboxContext.ts","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyUtils.ts","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacy.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyTrigger.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyContent.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyList.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyItem.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyEmpty.tsx","../src/components/Combobox/ComboboxEmpty.tsx","../src/components/Combobox/internal/useGroups.tsx","../src/components/Combobox/ComboboxSelect.tsx","../src/components/Combobox/internal/ComboboxItemVisual.tsx","../src/components/Combobox/internal/ComboboxSelectAll.tsx","../src/components/Combobox/internal/ComboboxGroupContext.tsx","../src/components/Combobox/internal/ComboboxGroupList.tsx","../src/components/Combobox/internal/ComboboxGroupProvider.tsx","../src/components/Combobox/ComboboxContent.tsx","../src/components/Combobox/ComboboxTrigger.tsx","../src/components/Combobox/ComboboxItem.tsx","../src/components/Combobox/ComboboxList.tsx","../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactNode,\n useState,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Label.module.scss\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport { Icon, SrOnly, Tooltip, TooltipProps } from \"../../../components\";\n\n/**\n * Props for the Label component.\n */\nexport type LabelProps = Omit<ComponentPropsWithoutRef<\"label\">, \"id\"> & {\n /** Unique identifier for the label element */\n id?: string;\n /**\n * Whether the field is required. Shows a red asterisk (*) when true.\n * @default false\n */\n required?: boolean;\n /** Additional information to display in a tooltip */\n moreInfo?: ReactNode;\n /**\n * Controls the open state of the more info tooltip.\n * @default false\n */\n openMoreInfo?: TooltipProps[\"open\"];\n};\n\n/**\n * Internal component for rendering the info icon with tooltip.\n *\n * @param props - Component props\n * @param props.moreInfo - The content to display in the tooltip\n * @param props.openMoreInfo - Controls the tooltip open state\n */\nexport const LabelMoreInfoIcon = ({\n moreInfo,\n openMoreInfo,\n}: {\n moreInfo: LabelProps[\"moreInfo\"];\n openMoreInfo: LabelProps[\"openMoreInfo\"];\n}) => {\n const [open, setOpen] = useState(openMoreInfo);\n\n useEffect(() => {\n if (openMoreInfo) {\n setOpen(true);\n } else {\n // close the tooltip\n setOpen(false);\n\n // reset to uncontrolled state\n setTimeout(() => {\n setOpen(undefined);\n });\n }\n }, [openMoreInfo]);\n\n return (\n <Tooltip\n open={open}\n placement=\"top\"\n offset={5}\n fallbackPlacements={[\"right\", \"bottom\", \"left\"]}\n >\n <Tooltip.Trigger className={styles[\"info-trigger\"]}>\n <Icon svg={Info} />\n </Tooltip.Trigger>\n <Tooltip.Content className={styles[\"info-content\"]}>\n {moreInfo}\n </Tooltip.Content>\n </Tooltip>\n );\n};\n\n/**\n * Label component for form field labels with optional required indicator and help tooltip.\n *\n * Features:\n * - Accessible form label with proper semantic HTML\n * - Optional required field indicator with red asterisk\n * - Help tooltip with info icon for additional context\n * - Screen reader support for required field announcement\n * - Controlled and uncontrolled tooltip state management\n * - Flexible content support for label text and help information\n * - Proper ARIA attributes and semantic structure\n * - Responsive design with consistent typography\n *\n * @example\n * <Label htmlFor=\"email\" required>\n * Email Address\n * </Label>\n * <input id=\"email\" type=\"email\" />\n *\n * @example\n * <Label\n * htmlFor=\"password\"\n * required\n * moreInfo=\"Password must be at least 8 characters long\"\n * >\n * Password\n * </Label>\n * <input id=\"password\" type=\"password\" />\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { children, className, moreInfo, required, openMoreInfo, ...rest } =\n props;\n const LabelClassNames = cx([styles[\"label\"]], className);\n\n return (\n <label className={LabelClassNames} data-anv=\"label\" ref={ref} {...rest}>\n <div className={styles[\"top-container\"]} aria-atomic=\"true\">\n <span className={styles[\"label-text\"]}>\n {children}\n {required ? (\n <>\n <span aria-hidden className={styles[\"required\"]}>\n *\n </span>\n <SrOnly>Required</SrOnly>\n </>\n ) : null}\n </span>\n {moreInfo ? (\n <LabelMoreInfoIcon moreInfo={moreInfo} openMoreInfo={openMoreInfo} />\n ) : null}\n </div>\n\n {moreInfo ? <SrOnly>{moreInfo}</SrOnly> : null}\n </label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import { createContext, useContext } from \"react\";\nimport { ComboboxContextProps } from \"../ComboboxTypes\";\n\nexport const ComboboxContext = createContext<ComboboxContextProps | null>(null);\n\n/**\n * Hook to access the Combobox context\n * @returns The Combobox context value\n * @throws Error if used outside of a Combobox component\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useCombobox = function <Item = any>() {\n const context = useContext<ComboboxContextProps<Item> | null>(\n ComboboxContext,\n );\n if (context == null) {\n throw new Error(\"useCombobox must be wrapped in <Combobox />\");\n }\n return context;\n};\n","import {\n useRef,\n createContext,\n Dispatch,\n SetStateAction,\n type MutableRefObject,\n useContext,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../../../types\";\nimport {\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n UseMultipleSelectionReturnValue as UseDownshiftMultipleSelectionReturnValue,\n UseSelectProps as UseDownshiftSelectProps,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\n\nexport const defaultItemToString = function <Item>(item: Item | null) {\n return item != null ? String(item) : \"\";\n};\n\nexport const defaultItemToKey = function <Item>(item: Item | null) {\n return item;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComboboxLegacyContextProps<Item = any> = Required<\n Pick<\n UseDownshiftComboboxLegacyProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\" | \"itemToString\" | \"itemToKey\" | \"selectedItem\"\n >\n> &\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n | \"getToggleButtonProps\"\n | \"getItemProps\"\n | \"getLabelProps\"\n | \"getMenuProps\"\n | \"closeMenu\"\n | \"selectItem\"\n | \"highlightedIndex\"\n | \"isOpen\"\n | \"inputValue\"\n > &\n // Select-only doesn't have \"getInputProps\" so this needs to be made optional\n Partial<Pick<UseDownshiftComboboxLegacyReturnValue<Item>, \"getInputProps\">> &\n Partial<\n Pick<\n UseDownshiftMultipleSelectionReturnValue<Item>,\n | \"getSelectedItemProps\"\n | \"getDropdownProps\"\n | \"addSelectedItem\"\n | \"removeSelectedItem\"\n | \"setSelectedItems\"\n | \"reset\"\n >\n > &\n // Multiple and select-only both have \"reset\" but single-select doesn't\n Partial<\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"reset\"\n >\n > &\n LayoutUtilProps & {\n disableClearSelection?: boolean;\n isReadOnly?: boolean;\n isDisabled?: boolean;\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n setIsReadOnly: Dispatch<SetStateAction<undefined | boolean>>;\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n setIsDisabled: Dispatch<SetStateAction<undefined | boolean>>;\n hasDisabledPopover: boolean;\n setHasDisabledPopover: Dispatch<SetStateAction<boolean>>;\n hasEmpty: boolean;\n setHasEmpty: Dispatch<SetStateAction<boolean>>;\n\n multiple: boolean;\n select: boolean;\n selectedItems: Item[];\n disabledItems: Item[];\n setDisabledItems: Dispatch<SetStateAction<Item[]>>;\n\n loading: boolean;\n\n referenceRef: MutableRefObject<HTMLDivElement | null>;\n contentRef: MutableRefObject<HTMLDivElement | null>;\n\n // select-only can't add new so these are optional\n hasAddNew?: boolean;\n setHasAddNew?: Dispatch<SetStateAction<boolean>>;\n onSelectItemAddNew?: (\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void;\n setOnSelectItemAddNew?: Dispatch<\n SetStateAction<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >\n >;\n hasExactMatch?: boolean;\n setHasExactMatch?: Dispatch<SetStateAction<boolean>>;\n };\n\nexport const ComboboxLegacyContext =\n createContext<ComboboxLegacyContextProps | null>(null);\n\nexport const useDownshiftEnvironment = () => {\n // fix for shadow DOM, see https://gist.github.com/Rendez/1dd55882e9b850dd3990feefc9d6e177\n const wrapperDivRef = useRef<HTMLDivElement | null>(null);\n\n const shadowRoot = wrapperDivRef.current\n ? wrapperDivRef.current.getRootNode()\n : null;\n\n const shadowDocument =\n wrapperDivRef.current && shadowRoot ? shadowRoot.ownerDocument : null;\n\n const environment = shadowDocument\n ? {\n document: shadowDocument,\n addEventListener: shadowDocument.addEventListener.bind(shadowRoot),\n removeEventListener:\n shadowDocument.removeEventListener.bind(shadowRoot),\n Node,\n }\n : undefined;\n\n return { ref: wrapperDivRef, environment };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useComboboxLegacy = function <Item = any>() {\n const context = useContext<ComboboxLegacyContextProps<Item> | null>(\n ComboboxLegacyContext,\n );\n if (context == null) {\n throw new Error(\"useComboboxLegacy must be wrapped in <ComboboxLegacy />\");\n }\n return context;\n};\n","import {\n ComponentPropsWithoutRef,\n useState,\n useEffect,\n useRef,\n useMemo,\n Dispatch,\n SetStateAction,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n useCombobox as useDownshiftComboboxLegacy,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseMultipleSelectionProps as UseDownshiftMultipleSelectionProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n useSelect as useDownshiftSelect,\n UseSelectProps as UseDownshiftSelectProps,\n} from \"downshift\";\nimport { matchSorter, MatchSorterOptions } from \"match-sorter\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n useDownshiftEnvironment,\n ADD_NEW,\n ComboboxLegacyContext,\n} from \"./ComboboxLegacyUtils\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks\";\nimport Popover from \"../../../Popover\";\n\n// const debugStateReducers = false;\n\ntype SharedProps = LayoutUtilProps &\n Pick<ComponentPropsWithoutRef<\"div\">, \"className\" | \"style\"> & {\n children?: ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default false\n */\n readOnly?: boolean;\n /**\n * @default false\n */\n loading?: boolean;\n /**\n * @default false\n */\n disableCloseOnClickOutside?: boolean;\n /**\n * @default false\n */\n disableMatchReferenceWidth?: boolean;\n\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n\n /**\n * @default false\n */\n open?: boolean;\n /**\n * @default false\n */\n disableCloseOnSelectItem?: boolean;\n };\n\ntype SharedComboboxLegacyProps<Item> = Omit<\n UseDownshiftComboboxLegacyProps<Item>,\n \"onStateChange\" | \"onInputValueChange\"\n> & {\n filterOptions?: MatchSorterOptions<Item>;\n\n /**\n * @deprecated Please use `ComboboxLegacy.SearchField`'s `onChange` method instead\n */\n onInputValueChange?: UseDownshiftComboboxLegacyProps<Item>[\"onInputValueChange\"];\n};\n\ntype SharedSelectProps<Item> = Omit<\n UseDownshiftSelectProps<Item>,\n \"onStateChange\" | \"onInputValueChange\"\n>;\n\ntype SharedSingleProps<Item> = {\n multiple?: never;\n onChange?:\n | Dispatch<SetStateAction<Item | null>>\n | ((arg: Item | null) => void);\n};\n\ntype SharedMultipleProps<Item> = {\n multiple: true;\n onChange?:\n | Dispatch<SetStateAction<Item[] | null>>\n | ((arg: Item[] | null) => void);\n} & Partial<\n Pick<\n UseDownshiftMultipleSelectionProps<Item>,\n | \"onSelectedItemsChange\"\n | \"initialSelectedItems\"\n | \"initialActiveIndex\"\n | \"defaultSelectedItems\"\n | \"defaultActiveIndex\"\n | \"activeIndex\"\n | \"selectedItems\"\n >\n>;\n\ntype SelectSingleProps<Item> = SharedProps &\n SharedSelectProps<Item> &\n SharedSingleProps<Item> & {\n disableClearSelection?: boolean;\n };\n\ntype SelectMultipleProps<Item> = SharedProps &\n SharedSelectProps<Item> &\n SharedMultipleProps<Item>;\n\ntype ComboboxLegacySingleProps<Item> = SharedProps &\n SharedComboboxLegacyProps<Item> &\n SharedSingleProps<Item>;\n\ntype ComboboxLegacyMultipleProps<Item> = Omit<\n SharedProps,\n \"open\" | \"disableCloseOnSelectItem\"\n> &\n SharedComboboxLegacyProps<Item> &\n SharedMultipleProps<Item> &\n (\n | {\n // the `disableClearInputValueOnSelectItem` prop only makes sense if\n // the popover is being held open by `open={true}` or\n // `disableCloseOnSelectItem={true}`\n\n disableClearInputValueOnSelectItem: true;\n disableCloseOnSelectItem: true;\n open?: boolean;\n }\n | {\n disableClearInputValueOnSelectItem: true;\n open: true;\n disableCloseOnSelectItem?: boolean;\n }\n | {\n disableClearInputValueOnSelectItem?: never;\n disableCloseOnSelectItem?: boolean;\n open?: boolean;\n }\n );\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComboboxLegacyProps<Item = any> =\n | ComboboxLegacySingleProps<Item>\n | ComboboxLegacyMultipleProps<Item>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SelectProps<Item = any> =\n | SelectSingleProps<Item>\n | SelectMultipleProps<Item>;\n\nexport type ComboboxLegacySelectProps<Item> = SelectProps<Item>;\n\nfunction isMultiple<Item>(\n props: ComboboxLegacyProps<Item> | SelectProps<Item>,\n): props is ComboboxLegacyMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport const ComboboxLegacySingle = function <Item>(\n props: ComboboxLegacySingleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n loading = false,\n root,\n onInputValueChange,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () => (showAddNew ? [...items, ADD_NEW as Item] : items),\n [items, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftComboboxLegacy<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 0); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftComboboxLegacy.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type ===\n useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftComboboxLegacy.stateChangeTypes.ItemClick\n ) {\n setItems(itemsProp);\n setHasExactMatch(true);\n } else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n setItems(itemsProp);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n setInputValue(selectedItem != null ? itemToString(selectedItem) : \"\");\n }\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: false,\n select: false,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\nexport const ComboboxLegacyMultiple = function <Item>(\n props: ComboboxLegacyMultipleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n loading = false,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useComboboxLegacy and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () => (showAddNew ? [...items, ADD_NEW as Item] : items),\n [items, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange({ type }) {\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftComboboxLegacy<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 0); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftComboboxLegacy.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftComboboxLegacy.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange({ type, selectedItem: newSelectedItem }) {\n switch (type) {\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type ===\n useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftComboboxLegacy.stateChangeTypes.ItemClick\n ) {\n setItems(itemsProp);\n setHasExactMatch(true);\n } else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n setInputValue(\"\");\n\n setItems(itemsProp);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // Now that useDownshiftComboboxLegacy has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: true,\n select: false,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useComboboxLegacy`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectLegacySingle = function <Item>(\n props: SelectSingleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n root,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n\n // prevent this from closing the popover by default\n case useDownshiftSelect.stateChangeTypes.ToggleButtonClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\nexport const SelectLegacyMultiple = function <Item>(\n props: SelectMultipleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n\n // prevent this from closing the popover by default\n case useDownshiftSelect.stateChangeTypes.ToggleButtonClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onStateChange({ type, selectedItem: newSelectedItem }) {\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: true,\n select: true,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxLegacyElement = function <Item>(\n props: ComboboxLegacyProps<Item>,\n) {\n if (isMultiple(props)) {\n return <ComboboxLegacyMultiple<Item> {...props} />;\n } else {\n return <ComboboxLegacySingle<Item> {...props} />;\n }\n};\n\nexport const ComboboxLegacySelect = function <Item>(props: SelectProps<Item>) {\n if (isMultiple(props)) {\n return <SelectLegacyMultiple<Item> {...props} />;\n } else {\n return <SelectLegacySingle<Item> {...props} />;\n }\n};\n\n// export const ComboboxLegacy = Object.assign(ComboboxLegacyElement, {\n// Select: ComboboxLegacySelect,\n// SearchField: ComboboxLegacySearchField,\n// SelectTrigger: ComboboxLegacySelectTrigger,\n// Content: ComboboxLegacyContent,\n// List: ComboboxLegacyList,\n// Item: ComboboxLegacyItem,\n// ItemAddNew: ComboboxLegacyItemAddNew,\n// Empty: ComboboxLegacyEmpty,\n// });\n","import {\n useState,\n // useEffect,\n useId,\n useRef,\n useLayoutEffect,\n type FocusEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\nimport { Flex } from \"../../../Flex\";\nimport { usePopoverLegacyContext } from \"../../../Popover/internal/PopoverLegacy\";\nimport { TextFieldProps } from \"../../../TextField/internal/TextField\";\nimport { Button } from \"../../../Button\";\nimport { Chip } from \"../../../Chip\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport { Label, LabelProps } from \"../../../../internal/components/Label\";\nimport { Helper } from \"../../../../internal/components\";\n\ntype ComboboxLegacyTriggerProps = Omit<\n TextFieldProps,\n \"disabled\" | \"readOnly\"\n> &\n Pick<LabelProps, \"required\" | \"moreInfo\" | \"openMoreInfo\"> & {\n /**\n * Should be a positive integer.\n */\n maxRows?: number;\n } & {\n /** @deprecated use disabled in <ComboboxLegacy /> */\n disabled?: boolean;\n /** @deprecated use readOnly in <ComboboxLegacy /> */\n readOnly?: boolean;\n };\n\nexport type ComboboxLegacySearchFieldProps = ComboboxLegacyTriggerProps;\nexport type ComboboxLegacySelectTriggerProps = ComboboxLegacyTriggerProps;\n\nexport const ComboboxLegacyTrigger = ({\n // variant: variantProp = \"combobox\",\n className,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n openMoreInfo,\n prefix,\n suffix,\n maxRows,\n id,\n disabled,\n readOnly,\n ...rest\n}: ComboboxLegacyTriggerProps & { variant?: \"combobox\" | \"select\" }) => {\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n contentRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useComboboxLegacy();\n\n const variant = select ? \"select\" : \"combobox\";\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"ComboboxLegacy.SearchField should be used with non-Select ComboboxLegacy\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"ComboboxLegacy.SelectTrigger should be used with ComboboxLegacy.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverLegacyContext();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const ComboboxLegacyTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = isDisabled || isReadOnly || disableClearSelection;\n\n const ComboboxLegacyInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n },\n );\n\n const ComboboxLegacyInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n const labelUid = \"label\" + useId();\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n const errorMessage = typeof error !== \"boolean\" ? error : undefined;\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n referenceRef.current && referenceRef.current.contains(target);\n const focusedOnContent =\n contentRef.current && contentRef.current.contains(target);\n\n if (!focusedOnReference && !focusedOnContent) {\n closeMenu();\n }\n };\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const [stillCalculating, setStillCalculating] = useState<boolean>(false);\n const [collapsedChips, setCollapsedChips] = useState<boolean>(false);\n const [visibleChipsCount, setVisibleChipsCount] = useState<number | null>(\n null,\n );\n const [forceRenderCount, setForceRenderCount] = useState<number>(0);\n\n useLayoutEffect(() => {\n // we only need to do this nonsense if maxRows is set\n if (maxRows === undefined) return;\n\n // 1) Render with no chips collapsed, if it's already just one row, we're done\n // 2) If there is a second row, then render again with best guess at how we should collapse\n // 3) If there is still a second row while collapsed, then render again with one less item\n // 4) Keep going until there is only one row, then /actually/ render\n\n // start calculation loop, set intiial values and force re-render\n if (stillCalculating === false) {\n setStillCalculating(true);\n setCollapsedChips(false);\n setVisibleChipsCount(null);\n setForceRenderCount((x) => x + 1);\n\n // otherwise, calculate the number of rows\n } else if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n const rowData = Array.from(children).reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n // if we don't have a second row or if we're already hiding everything, call it a day\n if (!rowData[maxRows] || visibleChipsCount === 0) {\n setStillCalculating(false);\n } else {\n setCollapsedChips(true);\n\n // otherwise, either guess how many visible chips we have\n if (visibleChipsCount == null) {\n const firstGuess = Math.max(\n rowData.reduce((sum, row) => sum + row.count, -2),\n 0,\n );\n setVisibleChipsCount(firstGuess);\n\n // or decrease our last guess by 1 and try again\n } else {\n setVisibleChipsCount(visibleChipsCount - 1);\n }\n\n setForceRenderCount((x) => x + 1);\n }\n }\n }, [selectedItems.length, maxRows, forceRenderCount]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const selectedItemsDisplayCount =\n collapsedChips && maxRows != null && visibleChipsCount !== null\n ? visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div\n className={ComboboxLegacyTriggerClassNames}\n data-anv=\"combobox-searchfield\"\n ref={referenceRef}\n onBlur={handleBlur}\n >\n {label ? (\n <Label\n {...getLabelProps({\n className: styles[\"label\"],\n required,\n moreInfo,\n openMoreInfo,\n id: labelUid,\n })}\n >\n {label}\n </Label>\n ) : null}\n\n <div\n className={ComboboxLegacyInputWrapperClassNames}\n role=\"presentation\"\n {...(variant === \"select\"\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n ref: context.refs.setReference,\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n }),\n }\n : {\n ref: context.refs.setReference,\n onClick: () => inputRef.current?.focus(),\n })}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e) => {\n e.stopPropagation();\n\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...(variant === \"select\"\n ? { tabIndex: -1 }\n : getToggleButtonProps())}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={isDisabled}\n />\n </div>\n </div>\n\n <div className={styles[\"rows-wrapper\"]} ref={rowsRef}>\n {selectedItems.length &&\n removeSelectedItem != null &&\n getSelectedItemProps != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n const { onClick, ...selectedItemProps } =\n getSelectedItemProps({\n selectedItem: item,\n index,\n });\n\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...selectedItemProps}\n label={itemToString(item)}\n onClose={\n isDisabled || isReadOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n }\n }\n className={styles[\"chip\"]}\n title={itemToString(item)}\n />\n </div>\n );\n })\n : null}\n\n {collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n\n {variant === \"select\" ? (\n <div\n {...(getDropdownProps != null\n ? getDropdownProps({\n className: ComboboxLegacyInputClassNames,\n required,\n preventKeyAction: false,\n })\n : {\n className: ComboboxLegacyInputClassNames,\n required,\n })}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {rest.placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n {...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n className: ComboboxLegacyInputClassNames,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n className: ComboboxLegacyInputClassNames,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n ref: inputRef,\n })\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessage || description ? (\n <Helper\n id={helperUid}\n errorMessage={errorMessage}\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n\nexport const ComboboxLegacySearchField = (\n props: ComboboxLegacyTriggerProps,\n) => {\n return <ComboboxLegacyTrigger {...props} variant=\"combobox\" />;\n};\n\nexport const ComboboxLegacySelectTrigger = (\n props: ComboboxLegacyTriggerProps,\n) => {\n return <ComboboxLegacyTrigger {...props} variant=\"select\" />;\n};\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../../../Popover\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyContentOptionsProps<Item> = {\n optionProps: ReturnType<\n UseDownshiftComboboxLegacyReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n item: Item;\n index: number;\n};\n\nexport type ComboboxLegacyContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxLegacyProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxLegacyReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxLegacyContentOptionsProps<Item>[];\n }) => ReactNode;\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxLegacyContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n referenceRef,\n contentRef,\n closeMenu,\n } = useComboboxLegacy<Item>();\n\n const ComboboxLegacyPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n referenceRef.current && referenceRef.current.contains(target);\n const focusedOnContent =\n contentRef.current && contentRef.current.contains(target);\n\n if (!focusedOnReference && !focusedOnContent) {\n closeMenu();\n }\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxLegacyPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {children\n ? children({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: items.length ? \"\" : \"none\",\n overflow: \"auto\",\n },\n },\n options: items.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) =>\n itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n })\n : null}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxLegacyPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n onBlur={handleBlur}\n >\n {children\n ? children({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: items.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: items.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) =>\n itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n })\n : null}\n </Popover.Content>\n );\n};\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Flex } from \"../../../Flex\";\nimport { Text } from \"../../../Text\";\nimport { Spinner } from \"../../../Spinner\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport listboxStyles from \"../../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../../ListView/ListView.module.scss\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyList = function <Item = any>({\n children,\n ...rest\n}: ComboboxLegacyListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n } = useComboboxLegacy<Item>();\n\n if (multiple) {\n return (\n <>\n <div\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"div\">)}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"])}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n overflow: \"auto\",\n }}\n >\n {children}\n\n {loading ? (\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n ) : null}\n </div>\n\n {!items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n overflow: \"auto\",\n }}\n >\n {children}\n\n {loading ? (\n <li>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </li>\n ) : null}\n </ul>\n\n {!items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import {\n useEffect,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport { UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue } from \"downshift\";\n\nimport { Icon } from \"../../../Icon\";\nimport { Flex, FlexProps } from \"../../../Flex\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport listboxStyles from \"../../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../../Checkbox/Checkbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { ADD_NEW, useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\ntype ComboboxLegacyItemSharedProps = ComponentPropsWithoutRef<\"li\" | \"div\"> & {\n children?: ReactNode;\n disabled?: boolean;\n\n alignItems?: FlexProps[\"alignItems\"];\n justifyItems?: FlexProps[\"justifyItems\"];\n alignContent?: FlexProps[\"alignContent\"];\n justifyContent?: FlexProps[\"justifyContent\"];\n placeItems?: FlexProps[\"placeItems\"];\n placeContent?: FlexProps[\"placeContent\"];\n gap?: FlexProps[\"gap\"];\n rowGap?: FlexProps[\"rowGap\"];\n columnGap?: FlexProps[\"columnGap\"];\n};\n\nexport type ComboboxLegacyItemProps<Item> = ComboboxLegacyItemSharedProps & {\n item: Item;\n index: number;\n};\n\nexport type ComboboxLegacyItemAddNewProps<Item> =\n ComboboxLegacyItemSharedProps & {\n onSelection?: (\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void;\n };\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyItem = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxLegacyItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n highlightedIndex,\n } = useComboboxLegacy<Item>();\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <div\n data-anv=\"combobox-item\"\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n )}\n >\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n\n <Flex\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n gap={gap}\n rowGap={rowGap}\n columnGap={columnGap}\n >\n {children}\n </Flex>\n </div>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n gap={gap}\n rowGap={rowGap}\n columnGap={columnGap}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyItemAddNew = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxLegacyItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useComboboxLegacy<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n // hide the \"Add New\" item on our initial render so it doesn't flicker\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n return !hasExactMatch && !firstRenderRef.current ? (\n <ComboboxLegacyItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n","import { useEffect, type ReactNode } from \"react\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyEmpty = function <Item = any>({\n children,\n}: ComboboxLegacyEmptyProps) {\n const { items, setHasEmpty } = useComboboxLegacy<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n return !items.length ? children : null;\n};\n","import { useEffect, type ReactNode } from \"react\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport { ComboboxLegacyEmpty } from \"./internal/ComboboxLegacy\";\n\n/**\n * Props for the ComboboxEmpty component\n */\nexport type ComboboxEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxEmptyElement = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n const { items, setHasEmpty } = useCombobox<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n if (!supportsPopover()) return;\n\n return !items.length ? children : null;\n};\n\n/**\n * ComboboxEmpty component for rendering content when no items are available\n *\n * Features:\n * - Only renders children when the combobox has no items\n * - Integrates with combobox state management\n * - Supports popover and legacy fallback modes\n * - Automatically manages empty state visibility\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns The children when no items are available, or null\n *\n * @example\n * <ComboboxEmpty>\n * <Text>No items found. Try a different search term.</Text>\n * </ComboboxEmpty>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxEmpty = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n if (!supportsPopover())\n return <ComboboxLegacyEmpty<Item>>{children}</ComboboxLegacyEmpty>;\n\n return <ComboboxEmptyElement<Item>>{children}</ComboboxEmptyElement>;\n};\n","import { useMemo } from \"react\";\nimport { ComboboxGroupByValue } from \"./ComboboxGroupContext\";\n\nexport function useGroups<Item>({\n items,\n groupBy,\n groupToString,\n groupSorter = (a, b) => `${a}`.localeCompare(`${b}`),\n}: {\n items: Item[];\n groupBy?: string;\n groupToString?: (key: string) => string | null;\n groupSorter?: (a: ComboboxGroupByValue, b: ComboboxGroupByValue) => number;\n}) {\n const { groups, orderedItems } = useMemo(() => {\n if (!groupBy) return { groups: [], orderedItems: items };\n const groupsSansItems: {\n key: ComboboxGroupByValue;\n label: string | null;\n }[] = []; // { key: \"strawberry\", label: \"Strawberry\" }\n const groupedItems: Record<ComboboxGroupByValue, Item[]> = {}; // { strawberry: [] }\n\n items.forEach((item) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupKey = (item as Record<string, any>)[groupBy];\n if (!groupedItems[groupKey]) {\n groupedItems[groupKey] = [];\n }\n groupedItems[groupKey].push(item);\n });\n\n Object.keys(groupedItems).forEach((key) => {\n groupsSansItems.push({\n key,\n label: groupToString ? groupToString?.(key) : key,\n });\n });\n\n // Sort groups\n // Yes, this is mutative. We'll survive.\n groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));\n\n const orderedItems = [] as Item[];\n // [{ key: \"strawberry\", label: \"Strawberry\", items: [{...}, {...}, {...}] }]\n const groups = groupsSansItems.map((group) => ({\n ...group,\n items: groupedItems[group.key].map((item) => {\n orderedItems.push(item);\n return item;\n }),\n }));\n\n return { groups, orderedItems };\n }, [groupBy, groupSorter, groupToString, items]);\n\n return { groups, orderedItems };\n}\n","import { supportsPopover } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Popover from \"../Popover\";\nimport {\n ComboboxSelectProps,\n SelectMultipleProps,\n SelectSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport {\n SelectLegacyMultiple,\n SelectLegacySingle,\n} from \"./internal/ComboboxLegacy/ComboboxLegacy\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n useDownshiftEnvironment,\n} from \"./internal/ComboboxUtils\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useGroups } from \"./internal/useGroups\";\nimport {\n useMultipleSelection as useDownshiftMultipleSelection,\n useSelect as useDownshiftSelect,\n UseSelectStateChangeTypes,\n} from \"downshift\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useCombobox`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectSingle = function <Item>(props: SelectSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n environment: environmentProp,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groups,\n groupBy,\n groupToString,\n listRef,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst SelectMultiple = function <Item>(props: SelectMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n groupBy,\n groupToString,\n selectAll,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems: orderedItemsBase } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const orderedItems = selectAll\n ? [SELECT_ALL as Item, ...orderedItemsBase]\n : orderedItemsBase;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange,\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n }\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownHome,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnd,\n ] as UseSelectStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: true,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groupBy,\n groupToString,\n groups,\n listRef,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n/**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n\nexport const ComboboxSelect = function <Item>(\n props: ComboboxSelectProps<Item>,\n) {\n if (!supportsPopover()) {\n if (isMultiple(props)) {\n return <SelectLegacyMultiple<Item> {...props} />;\n } else {\n return <SelectLegacySingle<Item> {...props} />;\n }\n }\n\n if (isMultiple(props)) {\n return <SelectMultiple<Item> {...props} />;\n } else {\n return <SelectSingle<Item> {...props} />;\n }\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../Checkbox/Checkbox.module.scss\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { PassThroughProps } from \"../../../types\";\n\nexport type ComboboxItemVisualProps = {\n children: ReactNode;\n rootDivProps: PassThroughProps<\"div\">;\n disabled: boolean;\n checked: boolean;\n hideCheckbox: boolean;\n flexProps?: FlexProps;\n};\n\nexport const ComboboxItemVisual = forwardRef(\n (\n {\n children,\n disabled,\n checked,\n hideCheckbox,\n rootDivProps,\n flexProps,\n }: ComboboxItemVisualProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n data-anv=\"combobox-item\"\n {...rootDivProps}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n rootDivProps.className,\n )}\n >\n {!hideCheckbox ? (\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n tabIndex={-1}\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n ) : null}\n <Flex grow={1} shrink={1} {...flexProps}>\n {children}\n </Flex>\n </div>\n );\n },\n);\n\nComboboxItemVisual.displayName = \"ComboboxItemVisual\";\n","import { SELECT_ALL } from \"./ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./ComboboxItemVisual\";\nimport { useEffect, useRef } from \"react\";\nimport { useCombobox } from \"./ComboboxContext\";\nimport styles from \"../Combobox.module.scss\";\nimport cx from \"classnames\";\n\nconst ComboboxSelectAll = function ({ className }: { className?: string }) {\n const {\n getItemProps,\n setForceCloseOnSelectItems,\n highlightedIndex,\n items,\n selectAll,\n } = useCombobox();\n\n const item = SELECT_ALL;\n const index = items.indexOf(item);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, setForceCloseOnSelectItems]);\n\n return (\n <ComboboxItemVisual\n key=\"select-all\"\n ref={ref}\n rootDivProps={getItemProps({\n item: SELECT_ALL,\n index,\n \"aria-selected\": highlightedIndex === index,\n className: cx(styles[\"select-all\"], className),\n })}\n hideCheckbox={false}\n disabled={false}\n checked={!!selectAll?.isChecked}\n >\n {selectAll?.label}\n </ComboboxItemVisual>\n );\n};\n\nexport { ComboboxSelectAll };\n","import { createContext, useContext } from \"react\";\n\nexport type ComboboxGroupByValue = string | number;\n\nexport type ComboboxGroupContextType = {\n key: ComboboxGroupByValue;\n label: string | null;\n} | null;\n\nexport const ComboboxGroupContext =\n createContext<ComboboxGroupContextType>(null);\n\nexport const useComboboxGroupContext = () => useContext(ComboboxGroupContext);\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./ComboboxContext\";\n\nimport { Flex } from \"../../Flex\";\nimport { Text } from \"../../Text\";\nimport { Spinner } from \"../../Spinner\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listboxStyles from \"../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport { supportsPopover } from \"../../../internal/functions\";\nimport { ComboboxLegacyList } from \"./ComboboxLegacy\";\nimport { ComboboxSelectAll } from \"./ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./ComboboxGroupContext\";\nimport Divider from \"../../Divider\";\n\n/**\n * Props for the ComboboxGroupList component\n */\nexport type ComboboxGroupListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxGroupList = function <Item = any>({\n children,\n ...rest\n}: ComboboxGroupListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (!supportsPopover())\n return <ComboboxLegacyList {...rest}>{children}</ComboboxLegacyList>;\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && (\n <>\n <ComboboxSelectAll />\n <Divider />\n </>\n )}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import { ComboboxGroupContext } from \"./ComboboxGroupContext\";\n\nexport const ComboboxGroupProvider = ComboboxGroupContext.Provider;\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n useId,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../Popover\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\n\nimport { supportsPopover } from \"../../internal/functions\";\nimport { Text } from \"../Text\";\nimport { Divider } from \"../Divider\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ComboboxLegacyContent } from \"./internal/ComboboxLegacy\";\nimport { ADD_NEW, SELECT_ALL } from \"./internal/ComboboxUtils\";\nimport { ComboboxGroupList } from \"./internal/ComboboxGroupList\";\nimport { ComboboxGroupProvider } from \"./internal/ComboboxGroupProvider\";\n\n/**\n * Props for the options passed to the children render function\n */\nexport type ComboboxContentOptionsProps<Item> = {\n /** Props for the option including selection and disabled state */\n optionProps: ReturnType<\n UseDownshiftComboboxReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n /** The item to render */\n item: Item;\n /** The index of the item in the list */\n index: number;\n};\n\n/**\n * Props for the ComboboxContent component\n */\nexport type ComboboxContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /** Render function that receives combobox state and returns content */\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxContentOptionsProps<Item>[];\n }) => ReactNode;\n /** Whether to disable popover behavior and render inline */\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxContentElement = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n contentRef,\n closeMenu,\n groups,\n } = useCombobox<Item>();\n\n const ComboboxPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n const context = usePopoverContext();\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (_e: FocusEvent) => {\n if (context?.controlled) return;\n context?.popover.close?.(closeMenu);\n };\n\n const resolveChildren = (groupItems: Item[]) =>\n children?.({\n items: groupItems,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: groupItems.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: groupItems.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n tabIndex: disablePopover ? -1 : undefined,\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n });\n\n const id = useId();\n\n const filterAlreadyRenderedItems = (items: Item[]) => {\n // \"Select all\" is already rendered in the list (i.e. ComboboxList)\n // And \"Add new\" is passed as a separate child\n // So we don't need to render them here\n return items.filter((item) => item !== ADD_NEW && item !== SELECT_ALL);\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n tabIndex={-1}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </Popover.Content>\n );\n};\n\n/**\n * ComboboxContent component for rendering the content area of a combobox\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox content area\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <ul>\n * {items.map((item, index) => (\n * <li key={item.id}>\n * {item.name}\n * </li>\n * ))}\n * </ul>\n * )}\n * </Combobox.Content>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n if (!supportsPopover())\n return (\n <ComboboxLegacyContent<Item>\n disablePopover={disablePopover}\n className={className}\n {...rest}\n >\n {children}\n </ComboboxLegacyContent>\n );\n\n return (\n <ComboboxContentElement<Item>\n className={className}\n disablePopover={disablePopover}\n {...rest}\n >\n {children}\n </ComboboxContentElement>\n );\n};\n","import {\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type MouseEvent,\n type RefObject,\n} from \"react\";\n\nimport {\n ComboboxSearchFieldProps,\n ComboboxSelectTriggerProps,\n ComboboxTriggerProps,\n} from \"./ComboboxTypes\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ComboboxLegacyTrigger } from \"./internal/ComboboxLegacy/ComboboxLegacyTrigger\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { supportsPopover, childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport Icon from \"../Icon\";\nimport Avatar from \"../Avatar\";\nimport { SelectTriggerBase } from \"../SelectTrigger/internal/SelectTriggerBase\";\n\nconst ComboboxTrigger = function <Item>(\n props: ComboboxTriggerProps<Item> & { variant?: \"combobox\" | \"select\" },\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n // variant: variantProp = \"combobox\",\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n openMoreInfo,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled,\n readOnly,\n onClear,\n ...rest\n } = componentProps;\n\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useCombobox();\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"Combobox.SearchField should be used with non-Select Combobox\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"Combobox.SelectTrigger should be used with Combobox.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverContext();\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n context?.invoker.ref.current &&\n context?.invoker.ref.current.contains(target);\n const focusedOnContent =\n (context?.popover.ref.current &&\n context?.popover.ref.current.contains(target)) ||\n context?.popover.element?.contains(target);\n\n if ((!focusedOnReference && !focusedOnContent) || !e.relatedTarget) {\n closeMenu();\n }\n };\n\n const labelProps = getLabelProps({\n required,\n moreInfo,\n openMoreInfo,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const inputWrapperProps = {\n ...(select\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n id,\n ref: context?.invoker.ref as unknown as RefObject<\n HTMLDivElement & HTMLButtonElement\n >,\n }),\n }\n : {\n onClick: () => inputRef.current?.focus(),\n ref: context?.invoker.ref as unknown as RefObject<HTMLDivElement>,\n }),\n };\n\n const toggleButtonProps = select ? {} : getToggleButtonProps();\n\n const handleClearButtonClick = (_e: MouseEvent<HTMLButtonElement>) => {\n if (onClear) {\n onClear();\n } else {\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }\n };\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <SelectTriggerBase\n data-anv={select ? \"combobox-select-trigger\" : \"combobox-search-field\"}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n placeholder={placeholder}\n labelProps={labelProps}\n inputWrapperProps={inputWrapperProps}\n toggleButtonProps={toggleButtonProps}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n variant={select ? \"select\" : \"combobox\"}\n disableClearSelection={disableClearSelection}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n inputValue={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n referenceRef={referenceRef}\n onBlur={handleBlur}\n onClearButtonClick={handleClearButtonClick}\n chipProps={(item: Item, index: number) => {\n if (getSelectedItemProps != null) {\n const { onClick: _, ...chipProps } = getSelectedItemProps({\n selectedItem: item,\n index,\n });\n return chipProps;\n }\n return {};\n }}\n inputProps={\n select\n ? {\n ...(getDropdownProps != null\n ? getDropdownProps({\n required,\n preventKeyAction: false,\n })\n : {\n required,\n }),\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n }\n : {\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n [\"aria-controls\"]: getMenuProps().id,\n ...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n ref: inputRef,\n })\n : {}),\n }\n }\n />\n );\n};\n\n/**\n * ComboboxSearchField component for rendering the search input field of a combobox\n *\n * Features:\n * - Provides search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered search field for combobox\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * maxRows={3}\n * />\n */\nconst ComboboxSearchFieldElement = function <Item>({\n onClear,\n ...props\n}: ComboboxTriggerProps<Item>) {\n if (!supportsPopover())\n return <ComboboxLegacyTrigger {...props} variant=\"combobox\" />;\n return (\n <ComboboxTrigger<Item> onClear={onClear} {...props} variant=\"combobox\" />\n );\n};\n\n/**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\nexport const ComboboxSearchField = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSearchFieldProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n openMoreInfo: props.openMoreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSearchFieldElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n\nconst ComboboxSelectTriggerElement = function <Item>(\n props: ComboboxTriggerProps<Item>,\n) {\n if (!supportsPopover())\n return <ComboboxLegacyTrigger {...props} variant=\"select\" />;\n return <ComboboxTrigger<Item> {...props} variant=\"select\" />;\n};\n\n/**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\nexport const ComboboxSelectTrigger = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSelectTriggerProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n openMoreInfo: props.openMoreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSelectTriggerElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n","import { useEffect, useRef, type ComponentPropsWithoutRef } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Flex } from \"../Flex\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n ComboboxLegacyItem,\n ComboboxLegacyItemAddNew,\n} from \"./internal/ComboboxLegacy\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { ComboboxItemAddNewProps, ComboboxItemProps } from \"./ComboboxTypes\";\nimport { useTrackingId } from \"../../hooks\";\nimport { ADD_NEW } from \"./internal/ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./internal/ComboboxItemVisual\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemElement = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index: indexProp,\n hideCheckbox,\n forceCloseOnSelect,\n forceClearInputValueOnSelect,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n highlightedIndex,\n items,\n } = useCombobox<Item>();\n\n const index = item === ADD_NEW && !multiple ? indexProp : items.indexOf(item);\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (forceCloseOnSelect) {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems;\n } else {\n return [...forceCloseOnSelectItems, item];\n }\n });\n }\n\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);\n\n useEffect(() => {\n if (forceClearInputValueOnSelect) {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems;\n } else {\n return [...forceClearInputValueOnSelectItems, item];\n }\n },\n );\n }\n\n return () => {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceClearInputValueOnSelectItems;\n }\n },\n );\n };\n }, [\n item,\n forceClearInputValueOnSelect,\n setForceClearInputValueOnSelectItems,\n ]);\n\n const flexProps = {\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n };\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <ComboboxItemVisual\n rootDivProps={getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n disabled={disabled as boolean}\n checked={checked}\n hideCheckbox={hideCheckbox || item === ADD_NEW}\n flexProps={flexProps}\n >\n {children}\n </ComboboxItemVisual>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n {...flexProps}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n/**\n * ComboboxItem component for rendering individual items in a combobox list\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Handles disabled state for individual items\n * - Provides checkbox UI for multiple selection\n * - Supports custom layout with Flex props\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox item\n *\n * @example\n * <ComboboxItem item={user} index={0}>\n * <Text>{user.name}</Text>\n * <Text subdued>{user.email}</Text>\n * </ComboboxItem>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemElement = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n if (!supportsPopover()) return <ComboboxLegacyItem<Item> {...props} />;\n return <CoreComboboxItemElement {...props} />;\n};\n\n/**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItem = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n const data = {\n item: props.item,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemElement<Item> data-tracking-id={trackingId} {...props} />;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemAddNewElement = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useCombobox<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n // hide the \"Add New\" item on our initial render so it doesn't flicker\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n return !hasExactMatch && !firstRenderRef.current ? (\n <ComboboxItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option in a combobox\n *\n * Features:\n * - Allows users to add new items that don't exist in the list\n * - Integrates with combobox state management\n * - Supports custom layout with Flex props\n * - Handles selection callback for new item creation\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered \"Add New\" item or null\n *\n * @example\n * <ComboboxItemAddNew onSelection={(value) => createNewItem(value)}>\n * <Text>Add \"{inputValue}\" as new item</Text>\n * </ComboboxItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemAddNewElement = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n if (!supportsPopover()) return <ComboboxLegacyItemAddNew<Item> {...props} />;\n return <CoreComboboxItemAddNewElement {...props} />;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItemAddNew = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n const data = {\n item: \"add-new\",\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItemAddNew\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemAddNewElement data-tracking-id={trackingId} {...props} />;\n};\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\nimport { Flex } from \"../Flex\";\nimport { Text } from \"../Text\";\nimport { Spinner } from \"../Spinner\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../ListView/ListView.module.scss\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport { ComboboxLegacyList } from \"./internal/ComboboxLegacy\";\nimport { ComboboxSelectAll } from \"./internal/ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./internal/ComboboxGroupContext\";\n\n/**\n * Props for the ComboboxList component\n */\nexport type ComboboxListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxListElement = function <Item = any>({\n children,\n ...rest\n}: ComboboxListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (!supportsPopover())\n return <ComboboxLegacyList {...rest}>{children}</ComboboxLegacyList>;\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && <ComboboxSelectAll />}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n\n/**\n * ComboboxList component for rendering the list container of combobox items\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Automatically handles empty state with \"No match found\" message\n * - Shows loading spinner during async operations\n * - Integrates with combobox state management\n * - Supports popover and legacy fallback modes\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox list container\n *\n * @example\n * <ComboboxList>\n * {items.map((item, index) => (\n * <ComboboxItem key={item.id} item={item} index={index}>\n * {item.name}\n * </ComboboxItem>\n * ))}\n * </ComboboxList>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxList = function <Item = any>({\n children,\n className,\n ...rest\n}: ComboboxListProps) {\n if (!supportsPopover())\n return (\n <ComboboxLegacyList<Item> className={className} {...rest}>\n {children}\n </ComboboxLegacyList>\n );\n\n return (\n <ComboboxListElement<Item> className={className} {...rest}>\n {children}\n </ComboboxListElement>\n );\n};\n","import { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxSelect } from \"./ComboboxSelect\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxSearchField, ComboboxSelectTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxItem, ComboboxItemAddNew } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n ADD_NEW,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport {\n ComboboxLegacyMultiple,\n ComboboxLegacySingle,\n} from \"./internal/ComboboxLegacy/ComboboxLegacy\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useCombobox as useDownshiftCombobox,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseComboboxStateChangeTypes,\n} from \"downshift\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n useDownshiftEnvironment,\n} from \"./internal/ComboboxUtils\";\nimport { useGroups } from \"./internal/useGroups\";\nimport { matchSorter } from \"match-sorter\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport Popover from \"../Popover\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\nconst ComboboxSingle = function <Item>(props: ComboboxSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n onInputValueChange,\n environment: environmentProp,\n groupBy,\n groupToString,\n groupSorter,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () =>\n showAddNew\n ? [...searchedItemsOrderedByGroup, ADD_NEW as Item]\n : searchedItemsOrderedByGroup,\n [searchedItemsOrderedByGroup, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? itemToString(state.selectedItem) === state.inputValue ||\n !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setItems(allItemsOrderedByGroup);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n\n setInputValue(\n selectedItem != null ? itemToString(selectedItem) : \"\",\n );\n }\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allItemsOrderedByGroup]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: false,\n items: searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst ComboboxMultiple = function <Item>(props: ComboboxMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n selectAll,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [\n forceClearInputValueOnSelectItems,\n setForceClearInputValueOnSelectItems,\n ] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useCombobox and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(() => {\n let items = searchedItemsOrderedByGroup;\n if (showAddNew) {\n items = [...items, ADD_NEW as Item];\n }\n if (selectAll) {\n items = [SELECT_ALL as Item, ...items];\n }\n return items;\n }, [searchedItemsOrderedByGroup, showAddNew, selectAll]);\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type } = changes;\n\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n\n onStateChange?.(changes);\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n const forceClearInputValue =\n forceClearInputValueOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: forceClearInputValue\n ? 0\n : disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: forceClearInputValue\n ? \"\"\n : disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftCombobox.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setInputValue(\"\");\n\n setItems(allItemsOrderedByGroup);\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftCombobox.stateChangeTypes.InputKeyDownHome,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownEnd,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowUp,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageUp,\n ] as UseComboboxStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n // Now that useDownshiftCombobox has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty && !disableFilter) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: false,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxElement = function <Item>(props: ComboboxProps<Item>) {\n if (!supportsPopover()) {\n if (isMultiple(props)) {\n return <ComboboxLegacyMultiple<Item> {...props} />;\n } else {\n return <ComboboxLegacySingle<Item> {...props} />;\n }\n }\n\n if (isMultiple(props)) {\n return <ComboboxMultiple<Item> {...props} />;\n } else {\n return <ComboboxSingle<Item> {...props} />;\n }\n};\n\n/**\n * Combobox component for selecting items with search and filtering capabilities.\n *\n * Features:\n * - Single and multiple item selection\n * - Search and filtering with configurable options\n * - Optional \"Add New\" item functionality\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * filterOptions={{ keys: [\"name\"] }}\n * >\n * <Combobox.SearchField label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox>\n */\nexport const Combobox = Object.assign(ComboboxElement, {\n /**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n Select: ComboboxSelect,\n /**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\n SearchField: ComboboxSearchField,\n /**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\n SelectTrigger: ComboboxSelectTrigger,\n /**\n * ComboboxContent component for rendering the content area of a combobox.\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, index) => (\n * <Combobox.Item key={item.id} item={item} index={index}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n */\n Content: ComboboxContent,\n /**\n * ComboboxList component for rendering the list of items.\n *\n * Features:\n * - Renders list of items with proper accessibility\n * - Supports both single and multiple selection modes\n * - Loading state with spinner\n * - Empty state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n */\n List: ComboboxList,\n /**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n Item: ComboboxItem,\n /**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n ItemAddNew: ComboboxItemAddNew,\n /**\n * ComboboxEmpty component for rendering content when no items are available.\n *\n * Features:\n * - Renders content when list is empty\n * - Customizable empty state message\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Empty>\n * <Text>No items found. Try adjusting your search.</Text>\n * </Combobox.Empty>\n */\n Empty: ComboboxEmpty,\n});\n"],"names":["styles","Icon","Info","useDownshiftComboboxLegacy","inputValue","selectedItem","isOpen","useDownshiftMultipleSelection","selectedItems","useDownshiftSelect","Close","Chevron_Right","CheckboxIndeterminate","CheckboxChecked","CheckboxOutline","Check","orderedItems","groups","useDownshiftEnvironment","defaultItemToString","defaultItemToKey","items","ADD_NEW","useDownshiftCombobox"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox-hxGMMb8x.js","sources":["../src/internal/components/Label/Label.tsx","../src/components/Combobox/internal/ComboboxContext.ts","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyUtils.ts","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacy.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyTrigger.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyContent.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyList.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyItem.tsx","../src/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyEmpty.tsx","../src/components/Combobox/ComboboxEmpty.tsx","../src/components/Combobox/internal/useGroups.tsx","../src/components/Combobox/ComboboxSelect.tsx","../src/components/Combobox/internal/ComboboxItemVisual.tsx","../src/components/Combobox/internal/ComboboxSelectAll.tsx","../src/components/Combobox/internal/ComboboxGroupContext.tsx","../src/components/Combobox/internal/ComboboxGroupList.tsx","../src/components/Combobox/internal/ComboboxGroupProvider.tsx","../src/components/Combobox/ComboboxContent.tsx","../src/components/Combobox/ComboboxTrigger.tsx","../src/components/Combobox/ComboboxItem.tsx","../src/components/Combobox/ComboboxList.tsx","../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactNode,\n useState,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Label.module.scss\";\nimport Info from \"@servicetitan/hammer-icon/mdi/round/info.svg\";\nimport { Icon, SrOnly, Tooltip, TooltipProps } from \"../../../components\";\n\n/**\n * Props for the Label component.\n */\nexport type LabelProps = Omit<ComponentPropsWithoutRef<\"label\">, \"id\"> & {\n /** Unique identifier for the label element */\n id?: string;\n /**\n * Whether the field is required. Shows a red asterisk (*) when true.\n * @default false\n */\n required?: boolean;\n /** Additional information to display in a tooltip */\n moreInfo?: ReactNode;\n /**\n * Controls the open state of the more info tooltip.\n * @default false\n */\n openMoreInfo?: TooltipProps[\"open\"];\n};\n\n/**\n * Internal component for rendering the info icon with tooltip.\n *\n * @param props - Component props\n * @param props.moreInfo - The content to display in the tooltip\n * @param props.openMoreInfo - Controls the tooltip open state\n */\nexport const LabelMoreInfoIcon = ({\n moreInfo,\n openMoreInfo,\n}: {\n moreInfo: LabelProps[\"moreInfo\"];\n openMoreInfo: LabelProps[\"openMoreInfo\"];\n}) => {\n const [open, setOpen] = useState(openMoreInfo);\n\n useEffect(() => {\n if (openMoreInfo) {\n setOpen(true);\n } else {\n // close the tooltip\n setOpen(false);\n\n // reset to uncontrolled state\n setTimeout(() => {\n setOpen(undefined);\n });\n }\n }, [openMoreInfo]);\n\n return (\n <Tooltip\n open={open}\n placement=\"top\"\n offset={5}\n fallbackPlacements={[\"right\", \"bottom\", \"left\"]}\n >\n <Tooltip.Trigger className={styles[\"info-trigger\"]}>\n <Icon svg={Info} />\n </Tooltip.Trigger>\n <Tooltip.Content className={styles[\"info-content\"]}>\n {moreInfo}\n </Tooltip.Content>\n </Tooltip>\n );\n};\n\n/**\n * Label component for form field labels with optional required indicator and help tooltip.\n *\n * Features:\n * - Accessible form label with proper semantic HTML\n * - Optional required field indicator with red asterisk\n * - Help tooltip with info icon for additional context\n * - Screen reader support for required field announcement\n * - Controlled and uncontrolled tooltip state management\n * - Flexible content support for label text and help information\n * - Proper ARIA attributes and semantic structure\n * - Responsive design with consistent typography\n *\n * @example\n * <Label htmlFor=\"email\" required>\n * Email Address\n * </Label>\n * <input id=\"email\" type=\"email\" />\n *\n * @example\n * <Label\n * htmlFor=\"password\"\n * required\n * moreInfo=\"Password must be at least 8 characters long\"\n * >\n * Password\n * </Label>\n * <input id=\"password\" type=\"password\" />\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { children, className, moreInfo, required, openMoreInfo, ...rest } =\n props;\n const LabelClassNames = cx([styles[\"label\"]], className);\n\n return (\n <label className={LabelClassNames} data-anv=\"label\" ref={ref} {...rest}>\n <div className={styles[\"top-container\"]} aria-atomic=\"true\">\n <span className={styles[\"label-text\"]}>\n {children}\n {required ? (\n <>\n <span aria-hidden className={styles[\"required\"]}>\n *\n </span>\n <SrOnly>Required</SrOnly>\n </>\n ) : null}\n </span>\n {moreInfo ? (\n <LabelMoreInfoIcon moreInfo={moreInfo} openMoreInfo={openMoreInfo} />\n ) : null}\n </div>\n\n {moreInfo ? <SrOnly>{moreInfo}</SrOnly> : null}\n </label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import { createContext, useContext } from \"react\";\nimport { ComboboxContextProps } from \"../ComboboxTypes\";\n\nexport const ComboboxContext = createContext<ComboboxContextProps | null>(null);\n\n/**\n * Hook to access the Combobox context\n * @returns The Combobox context value\n * @throws Error if used outside of a Combobox component\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useCombobox = function <Item = any>() {\n const context = useContext<ComboboxContextProps<Item> | null>(\n ComboboxContext,\n );\n if (context == null) {\n throw new Error(\"useCombobox must be wrapped in <Combobox />\");\n }\n return context;\n};\n","import {\n useRef,\n createContext,\n Dispatch,\n SetStateAction,\n type MutableRefObject,\n useContext,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../../../types\";\nimport {\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n UseMultipleSelectionReturnValue as UseDownshiftMultipleSelectionReturnValue,\n UseSelectProps as UseDownshiftSelectProps,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\n\nexport const defaultItemToString = function <Item>(item: Item | null) {\n return item != null ? String(item) : \"\";\n};\n\nexport const defaultItemToKey = function <Item>(item: Item | null) {\n return item;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComboboxLegacyContextProps<Item = any> = Required<\n Pick<\n UseDownshiftComboboxLegacyProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\" | \"itemToString\" | \"itemToKey\" | \"selectedItem\"\n >\n> &\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n | \"getToggleButtonProps\"\n | \"getItemProps\"\n | \"getLabelProps\"\n | \"getMenuProps\"\n | \"closeMenu\"\n | \"selectItem\"\n | \"highlightedIndex\"\n | \"isOpen\"\n | \"inputValue\"\n > &\n // Select-only doesn't have \"getInputProps\" so this needs to be made optional\n Partial<Pick<UseDownshiftComboboxLegacyReturnValue<Item>, \"getInputProps\">> &\n Partial<\n Pick<\n UseDownshiftMultipleSelectionReturnValue<Item>,\n | \"getSelectedItemProps\"\n | \"getDropdownProps\"\n | \"addSelectedItem\"\n | \"removeSelectedItem\"\n | \"setSelectedItems\"\n | \"reset\"\n >\n > &\n // Multiple and select-only both have \"reset\" but single-select doesn't\n Partial<\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"reset\"\n >\n > &\n LayoutUtilProps & {\n disableClearSelection?: boolean;\n isReadOnly?: boolean;\n isDisabled?: boolean;\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n setIsReadOnly: Dispatch<SetStateAction<undefined | boolean>>;\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n setIsDisabled: Dispatch<SetStateAction<undefined | boolean>>;\n hasDisabledPopover: boolean;\n setHasDisabledPopover: Dispatch<SetStateAction<boolean>>;\n hasEmpty: boolean;\n setHasEmpty: Dispatch<SetStateAction<boolean>>;\n\n multiple: boolean;\n select: boolean;\n selectedItems: Item[];\n disabledItems: Item[];\n setDisabledItems: Dispatch<SetStateAction<Item[]>>;\n\n loading: boolean;\n\n referenceRef: MutableRefObject<HTMLDivElement | null>;\n contentRef: MutableRefObject<HTMLDivElement | null>;\n\n // select-only can't add new so these are optional\n hasAddNew?: boolean;\n setHasAddNew?: Dispatch<SetStateAction<boolean>>;\n onSelectItemAddNew?: (\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void;\n setOnSelectItemAddNew?: Dispatch<\n SetStateAction<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >\n >;\n hasExactMatch?: boolean;\n setHasExactMatch?: Dispatch<SetStateAction<boolean>>;\n };\n\nexport const ComboboxLegacyContext =\n createContext<ComboboxLegacyContextProps | null>(null);\n\nexport const useDownshiftEnvironment = () => {\n // fix for shadow DOM, see https://gist.github.com/Rendez/1dd55882e9b850dd3990feefc9d6e177\n const wrapperDivRef = useRef<HTMLDivElement | null>(null);\n\n const shadowRoot = wrapperDivRef.current\n ? wrapperDivRef.current.getRootNode()\n : null;\n\n const shadowDocument =\n wrapperDivRef.current && shadowRoot ? shadowRoot.ownerDocument : null;\n\n const environment = shadowDocument\n ? {\n document: shadowDocument,\n addEventListener: shadowDocument.addEventListener.bind(shadowRoot),\n removeEventListener:\n shadowDocument.removeEventListener.bind(shadowRoot),\n Node,\n }\n : undefined;\n\n return { ref: wrapperDivRef, environment };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useComboboxLegacy = function <Item = any>() {\n const context = useContext<ComboboxLegacyContextProps<Item> | null>(\n ComboboxLegacyContext,\n );\n if (context == null) {\n throw new Error(\"useComboboxLegacy must be wrapped in <ComboboxLegacy />\");\n }\n return context;\n};\n","import {\n ComponentPropsWithoutRef,\n useState,\n useEffect,\n useRef,\n useMemo,\n Dispatch,\n SetStateAction,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n useCombobox as useDownshiftComboboxLegacy,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseMultipleSelectionProps as UseDownshiftMultipleSelectionProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n useSelect as useDownshiftSelect,\n UseSelectProps as UseDownshiftSelectProps,\n} from \"downshift\";\nimport { matchSorter, MatchSorterOptions } from \"match-sorter\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n useDownshiftEnvironment,\n ADD_NEW,\n ComboboxLegacyContext,\n} from \"./ComboboxLegacyUtils\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks\";\nimport Popover from \"../../../Popover\";\n\n// const debugStateReducers = false;\n\ntype SharedProps = LayoutUtilProps &\n Pick<ComponentPropsWithoutRef<\"div\">, \"className\" | \"style\"> & {\n children?: ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default false\n */\n readOnly?: boolean;\n /**\n * @default false\n */\n loading?: boolean;\n /**\n * @default false\n */\n disableCloseOnClickOutside?: boolean;\n /**\n * @default false\n */\n disableMatchReferenceWidth?: boolean;\n\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n\n /**\n * @default false\n */\n open?: boolean;\n /**\n * @default false\n */\n disableCloseOnSelectItem?: boolean;\n };\n\ntype SharedComboboxLegacyProps<Item> = Omit<\n UseDownshiftComboboxLegacyProps<Item>,\n \"onStateChange\" | \"onInputValueChange\"\n> & {\n filterOptions?: MatchSorterOptions<Item>;\n\n /**\n * @deprecated Please use `ComboboxLegacy.SearchField`'s `onChange` method instead\n */\n onInputValueChange?: UseDownshiftComboboxLegacyProps<Item>[\"onInputValueChange\"];\n};\n\ntype SharedSelectProps<Item> = Omit<\n UseDownshiftSelectProps<Item>,\n \"onStateChange\" | \"onInputValueChange\"\n>;\n\ntype SharedSingleProps<Item> = {\n multiple?: never;\n onChange?:\n | Dispatch<SetStateAction<Item | null>>\n | ((arg: Item | null) => void);\n};\n\ntype SharedMultipleProps<Item> = {\n multiple: true;\n onChange?:\n | Dispatch<SetStateAction<Item[] | null>>\n | ((arg: Item[] | null) => void);\n} & Partial<\n Pick<\n UseDownshiftMultipleSelectionProps<Item>,\n | \"onSelectedItemsChange\"\n | \"initialSelectedItems\"\n | \"initialActiveIndex\"\n | \"defaultSelectedItems\"\n | \"defaultActiveIndex\"\n | \"activeIndex\"\n | \"selectedItems\"\n >\n>;\n\ntype SelectSingleProps<Item> = SharedProps &\n SharedSelectProps<Item> &\n SharedSingleProps<Item> & {\n disableClearSelection?: boolean;\n };\n\ntype SelectMultipleProps<Item> = SharedProps &\n SharedSelectProps<Item> &\n SharedMultipleProps<Item>;\n\ntype ComboboxLegacySingleProps<Item> = SharedProps &\n SharedComboboxLegacyProps<Item> &\n SharedSingleProps<Item>;\n\ntype ComboboxLegacyMultipleProps<Item> = Omit<\n SharedProps,\n \"open\" | \"disableCloseOnSelectItem\"\n> &\n SharedComboboxLegacyProps<Item> &\n SharedMultipleProps<Item> &\n (\n | {\n // the `disableClearInputValueOnSelectItem` prop only makes sense if\n // the popover is being held open by `open={true}` or\n // `disableCloseOnSelectItem={true}`\n\n disableClearInputValueOnSelectItem: true;\n disableCloseOnSelectItem: true;\n open?: boolean;\n }\n | {\n disableClearInputValueOnSelectItem: true;\n open: true;\n disableCloseOnSelectItem?: boolean;\n }\n | {\n disableClearInputValueOnSelectItem?: never;\n disableCloseOnSelectItem?: boolean;\n open?: boolean;\n }\n );\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComboboxLegacyProps<Item = any> =\n | ComboboxLegacySingleProps<Item>\n | ComboboxLegacyMultipleProps<Item>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SelectProps<Item = any> =\n | SelectSingleProps<Item>\n | SelectMultipleProps<Item>;\n\nexport type ComboboxLegacySelectProps<Item> = SelectProps<Item>;\n\nfunction isMultiple<Item>(\n props: ComboboxLegacyProps<Item> | SelectProps<Item>,\n): props is ComboboxLegacyMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport const ComboboxLegacySingle = function <Item>(\n props: ComboboxLegacySingleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n loading = false,\n root,\n onInputValueChange,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () => (showAddNew ? [...items, ADD_NEW as Item] : items),\n [items, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftComboboxLegacy<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 0); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftComboboxLegacy.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type ===\n useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftComboboxLegacy.stateChangeTypes.ItemClick\n ) {\n setItems(itemsProp);\n setHasExactMatch(true);\n } else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n setItems(itemsProp);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n setInputValue(selectedItem != null ? itemToString(selectedItem) : \"\");\n }\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: false,\n select: false,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\nexport const ComboboxLegacyMultiple = function <Item>(\n props: ComboboxLegacyMultipleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n loading = false,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useComboboxLegacy and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () => (showAddNew ? [...items, ADD_NEW as Item] : items),\n [items, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange({ type }) {\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftComboboxLegacy<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 0); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftComboboxLegacy.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftComboboxLegacy.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange({ type, selectedItem: newSelectedItem }) {\n switch (type) {\n case useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftComboboxLegacy.stateChangeTypes.ItemClick:\n case useDownshiftComboboxLegacy.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type ===\n useDownshiftComboboxLegacy.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftComboboxLegacy.stateChangeTypes.ItemClick\n ) {\n setItems(itemsProp);\n setHasExactMatch(true);\n } else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n setInputValue(\"\");\n\n setItems(itemsProp);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // Now that useDownshiftComboboxLegacy has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: true,\n select: false,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useComboboxLegacy`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectLegacySingle = function <Item>(\n props: SelectSingleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n root,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n\n // prevent this from closing the popover by default\n case useDownshiftSelect.stateChangeTypes.ToggleButtonClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\nexport const SelectLegacyMultiple = function <Item>(\n props: SelectMultipleProps<Item>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n ...rest\n } = componentProps;\n\n const ComboboxLegacyClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by ComboboxLegacy's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const handleOutsidePress = (e: MouseEvent) => {\n const clickedInsideReference =\n referenceRef.current &&\n e.target != null &&\n referenceRef.current.contains(e.target as Node);\n\n // only close if we didn't click the SearchField\n if (!clickedInsideReference) {\n closeMenu();\n return true;\n } else {\n return false;\n }\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n // debugStateReducers && console.log(type, changes, { state });\n\n switch (type) {\n // keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? 0\n : changes.highlightedIndex,\n };\n\n // prevent this from closing the popover by default\n case useDownshiftSelect.stateChangeTypes.ToggleButtonClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onStateChange({ type, selectedItem: newSelectedItem }) {\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxLegacyContext.Provider\n value={{\n multiple: true,\n select: true,\n items,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n }}\n >\n <div\n className={ComboboxLegacyClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n root={root}\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n >\n {children}\n </Popover>\n </div>\n </ComboboxLegacyContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxLegacyElement = function <Item>(\n props: ComboboxLegacyProps<Item>,\n) {\n if (isMultiple(props)) {\n return <ComboboxLegacyMultiple<Item> {...props} />;\n } else {\n return <ComboboxLegacySingle<Item> {...props} />;\n }\n};\n\nexport const ComboboxLegacySelect = function <Item>(props: SelectProps<Item>) {\n if (isMultiple(props)) {\n return <SelectLegacyMultiple<Item> {...props} />;\n } else {\n return <SelectLegacySingle<Item> {...props} />;\n }\n};\n\n// export const ComboboxLegacy = Object.assign(ComboboxLegacyElement, {\n// Select: ComboboxLegacySelect,\n// SearchField: ComboboxLegacySearchField,\n// SelectTrigger: ComboboxLegacySelectTrigger,\n// Content: ComboboxLegacyContent,\n// List: ComboboxLegacyList,\n// Item: ComboboxLegacyItem,\n// ItemAddNew: ComboboxLegacyItemAddNew,\n// Empty: ComboboxLegacyEmpty,\n// });\n","import {\n useState,\n // useEffect,\n useId,\n useRef,\n useLayoutEffect,\n type FocusEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\nimport { Flex } from \"../../../Flex\";\nimport { usePopoverLegacyContext } from \"../../../Popover/internal/PopoverLegacy\";\nimport { TextFieldProps } from \"../../../TextField/internal/TextField\";\nimport { Button } from \"../../../Button\";\nimport { Chip } from \"../../../Chip\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport { Label, LabelProps } from \"../../../../internal/components/Label\";\nimport { Helper } from \"../../../../internal/components\";\n\ntype ComboboxLegacyTriggerProps = Omit<\n TextFieldProps,\n \"disabled\" | \"readOnly\"\n> &\n Pick<LabelProps, \"required\" | \"moreInfo\" | \"openMoreInfo\"> & {\n /**\n * Should be a positive integer.\n */\n maxRows?: number;\n } & {\n /** @deprecated use disabled in <ComboboxLegacy /> */\n disabled?: boolean;\n /** @deprecated use readOnly in <ComboboxLegacy /> */\n readOnly?: boolean;\n };\n\nexport type ComboboxLegacySearchFieldProps = ComboboxLegacyTriggerProps;\nexport type ComboboxLegacySelectTriggerProps = ComboboxLegacyTriggerProps;\n\nexport const ComboboxLegacyTrigger = ({\n // variant: variantProp = \"combobox\",\n className,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n openMoreInfo,\n prefix,\n suffix,\n maxRows,\n id,\n disabled,\n readOnly,\n ...rest\n}: ComboboxLegacyTriggerProps & { variant?: \"combobox\" | \"select\" }) => {\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n contentRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useComboboxLegacy();\n\n const variant = select ? \"select\" : \"combobox\";\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"ComboboxLegacy.SearchField should be used with non-Select ComboboxLegacy\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"ComboboxLegacy.SelectTrigger should be used with ComboboxLegacy.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverLegacyContext();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const ComboboxLegacyTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = isDisabled || isReadOnly || disableClearSelection;\n\n const ComboboxLegacyInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n },\n );\n\n const ComboboxLegacyInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n const labelUid = \"label\" + useId();\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n const errorMessage = typeof error !== \"boolean\" ? error : undefined;\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n referenceRef.current && referenceRef.current.contains(target);\n const focusedOnContent =\n contentRef.current && contentRef.current.contains(target);\n\n if (!focusedOnReference && !focusedOnContent) {\n closeMenu();\n }\n };\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const [stillCalculating, setStillCalculating] = useState<boolean>(false);\n const [collapsedChips, setCollapsedChips] = useState<boolean>(false);\n const [visibleChipsCount, setVisibleChipsCount] = useState<number | null>(\n null,\n );\n const [forceRenderCount, setForceRenderCount] = useState<number>(0);\n\n useLayoutEffect(() => {\n // we only need to do this nonsense if maxRows is set\n if (maxRows === undefined) return;\n\n // 1) Render with no chips collapsed, if it's already just one row, we're done\n // 2) If there is a second row, then render again with best guess at how we should collapse\n // 3) If there is still a second row while collapsed, then render again with one less item\n // 4) Keep going until there is only one row, then /actually/ render\n\n // start calculation loop, set intiial values and force re-render\n if (stillCalculating === false) {\n setStillCalculating(true);\n setCollapsedChips(false);\n setVisibleChipsCount(null);\n setForceRenderCount((x) => x + 1);\n\n // otherwise, calculate the number of rows\n } else if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n const rowData = Array.from(children).reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n // if we don't have a second row or if we're already hiding everything, call it a day\n if (!rowData[maxRows] || visibleChipsCount === 0) {\n setStillCalculating(false);\n } else {\n setCollapsedChips(true);\n\n // otherwise, either guess how many visible chips we have\n if (visibleChipsCount == null) {\n const firstGuess = Math.max(\n rowData.reduce((sum, row) => sum + row.count, -2),\n 0,\n );\n setVisibleChipsCount(firstGuess);\n\n // or decrease our last guess by 1 and try again\n } else {\n setVisibleChipsCount(visibleChipsCount - 1);\n }\n\n setForceRenderCount((x) => x + 1);\n }\n }\n }, [selectedItems.length, maxRows, forceRenderCount]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const selectedItemsDisplayCount =\n collapsedChips && maxRows != null && visibleChipsCount !== null\n ? visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div\n className={ComboboxLegacyTriggerClassNames}\n data-anv=\"combobox-searchfield\"\n ref={referenceRef}\n onBlur={handleBlur}\n >\n {label ? (\n <Label\n {...getLabelProps({\n className: styles[\"label\"],\n required,\n moreInfo,\n openMoreInfo,\n id: labelUid,\n })}\n >\n {label}\n </Label>\n ) : null}\n\n <div\n className={ComboboxLegacyInputWrapperClassNames}\n role=\"presentation\"\n {...(variant === \"select\"\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n ref: context.refs.setReference,\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n }),\n }\n : {\n ref: context.refs.setReference,\n onClick: () => inputRef.current?.focus(),\n })}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e) => {\n e.stopPropagation();\n\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...(variant === \"select\"\n ? { tabIndex: -1 }\n : getToggleButtonProps())}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={isDisabled}\n />\n </div>\n </div>\n\n <div className={styles[\"rows-wrapper\"]} ref={rowsRef}>\n {selectedItems.length &&\n removeSelectedItem != null &&\n getSelectedItemProps != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n const { onClick, ...selectedItemProps } =\n getSelectedItemProps({\n selectedItem: item,\n index,\n });\n\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...selectedItemProps}\n label={itemToString(item)}\n onClose={\n isDisabled || isReadOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n }\n }\n className={styles[\"chip\"]}\n title={itemToString(item)}\n />\n </div>\n );\n })\n : null}\n\n {collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n\n {variant === \"select\" ? (\n <div\n {...(getDropdownProps != null\n ? getDropdownProps({\n className: ComboboxLegacyInputClassNames,\n required,\n preventKeyAction: false,\n })\n : {\n className: ComboboxLegacyInputClassNames,\n required,\n })}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {rest.placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n {...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n className: ComboboxLegacyInputClassNames,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n className: ComboboxLegacyInputClassNames,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelUid,\n ref: inputRef,\n })\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessage || description ? (\n <Helper\n id={helperUid}\n errorMessage={errorMessage}\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n\nexport const ComboboxLegacySearchField = (\n props: ComboboxLegacyTriggerProps,\n) => {\n return <ComboboxLegacyTrigger {...props} variant=\"combobox\" />;\n};\n\nexport const ComboboxLegacySelectTrigger = (\n props: ComboboxLegacyTriggerProps,\n) => {\n return <ComboboxLegacyTrigger {...props} variant=\"select\" />;\n};\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxLegacyProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../../../Popover\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyContentOptionsProps<Item> = {\n optionProps: ReturnType<\n UseDownshiftComboboxLegacyReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n item: Item;\n index: number;\n};\n\nexport type ComboboxLegacyContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxLegacyProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxLegacyReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxLegacyReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxLegacyContentOptionsProps<Item>[];\n }) => ReactNode;\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxLegacyContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n referenceRef,\n contentRef,\n closeMenu,\n } = useComboboxLegacy<Item>();\n\n const ComboboxLegacyPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n referenceRef.current && referenceRef.current.contains(target);\n const focusedOnContent =\n contentRef.current && contentRef.current.contains(target);\n\n if (!focusedOnReference && !focusedOnContent) {\n closeMenu();\n }\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxLegacyPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {children\n ? children({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: items.length ? \"\" : \"none\",\n overflow: \"auto\",\n },\n },\n options: items.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) =>\n itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n })\n : null}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxLegacyPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n onBlur={handleBlur}\n >\n {children\n ? children({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: items.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: items.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) =>\n itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n })\n : null}\n </Popover.Content>\n );\n};\n","import { type ComponentPropsWithoutRef, type ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Flex } from \"../../../Flex\";\nimport { Text } from \"../../../Text\";\nimport { Spinner } from \"../../../Spinner\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport listboxStyles from \"../../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../../ListView/ListView.module.scss\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyList = function <Item = any>({\n children,\n ...rest\n}: ComboboxLegacyListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n } = useComboboxLegacy<Item>();\n\n if (multiple) {\n return (\n <>\n <div\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"div\">)}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"])}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n overflow: \"auto\",\n }}\n >\n {children}\n\n {loading ? (\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n ) : null}\n </div>\n\n {!items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n overflow: \"auto\",\n }}\n >\n {children}\n\n {loading ? (\n <li>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </li>\n ) : null}\n </ul>\n\n {!items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import {\n useEffect,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport { UseComboboxReturnValue as UseDownshiftComboboxLegacyReturnValue } from \"downshift\";\n\nimport { Icon } from \"../../../Icon\";\nimport { Flex, FlexProps } from \"../../../Flex\";\n\nimport styles from \"./ComboboxLegacy.module.scss\";\nimport listboxStyles from \"../../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../../Checkbox/Checkbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { ADD_NEW, useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\ntype ComboboxLegacyItemSharedProps = ComponentPropsWithoutRef<\"li\" | \"div\"> & {\n children?: ReactNode;\n disabled?: boolean;\n\n alignItems?: FlexProps[\"alignItems\"];\n justifyItems?: FlexProps[\"justifyItems\"];\n alignContent?: FlexProps[\"alignContent\"];\n justifyContent?: FlexProps[\"justifyContent\"];\n placeItems?: FlexProps[\"placeItems\"];\n placeContent?: FlexProps[\"placeContent\"];\n gap?: FlexProps[\"gap\"];\n rowGap?: FlexProps[\"rowGap\"];\n columnGap?: FlexProps[\"columnGap\"];\n};\n\nexport type ComboboxLegacyItemProps<Item> = ComboboxLegacyItemSharedProps & {\n item: Item;\n index: number;\n};\n\nexport type ComboboxLegacyItemAddNewProps<Item> =\n ComboboxLegacyItemSharedProps & {\n onSelection?: (\n inputValue: UseDownshiftComboboxLegacyReturnValue<Item>[\"inputValue\"],\n ) => void;\n };\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyItem = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxLegacyItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n highlightedIndex,\n } = useComboboxLegacy<Item>();\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <div\n data-anv=\"combobox-item\"\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n )}\n >\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n\n <Flex\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n gap={gap}\n rowGap={rowGap}\n columnGap={columnGap}\n >\n {children}\n </Flex>\n </div>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n gap={gap}\n rowGap={rowGap}\n columnGap={columnGap}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyItemAddNew = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxLegacyItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useComboboxLegacy<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n // hide the \"Add New\" item on our initial render so it doesn't flicker\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n return !hasExactMatch && !firstRenderRef.current ? (\n <ComboboxLegacyItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n","import { useEffect, type ReactNode } from \"react\";\nimport { useComboboxLegacy } from \"./ComboboxLegacyUtils\";\n\nexport type ComboboxLegacyEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxLegacyEmpty = function <Item = any>({\n children,\n}: ComboboxLegacyEmptyProps) {\n const { items, setHasEmpty } = useComboboxLegacy<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n return !items.length ? children : null;\n};\n","import { useEffect, type ReactNode } from \"react\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport { ComboboxLegacyEmpty } from \"./internal/ComboboxLegacy\";\n\n/**\n * Props for the ComboboxEmpty component\n */\nexport type ComboboxEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxEmptyElement = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n const { items, setHasEmpty } = useCombobox<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n if (!supportsPopover()) return;\n\n return !items.length ? children : null;\n};\n\n/**\n * ComboboxEmpty component for rendering content when no items are available\n *\n * Features:\n * - Only renders children when the combobox has no items\n * - Integrates with combobox state management\n * - Supports popover and legacy fallback modes\n * - Automatically manages empty state visibility\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns The children when no items are available, or null\n *\n * @example\n * <ComboboxEmpty>\n * <Text>No items found. Try a different search term.</Text>\n * </ComboboxEmpty>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxEmpty = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n if (!supportsPopover())\n return <ComboboxLegacyEmpty<Item>>{children}</ComboboxLegacyEmpty>;\n\n return <ComboboxEmptyElement<Item>>{children}</ComboboxEmptyElement>;\n};\n","import { useMemo } from \"react\";\nimport { ComboboxGroupByValue } from \"./ComboboxGroupContext\";\n\nexport function useGroups<Item>({\n items,\n groupBy,\n groupToString,\n groupSorter = (a, b) => `${a}`.localeCompare(`${b}`),\n}: {\n items: Item[];\n groupBy?: string;\n groupToString?: (key: string) => string | null;\n groupSorter?: (a: ComboboxGroupByValue, b: ComboboxGroupByValue) => number;\n}) {\n const { groups, orderedItems } = useMemo(() => {\n if (!groupBy) return { groups: [], orderedItems: items };\n const groupsSansItems: {\n key: ComboboxGroupByValue;\n label: string | null;\n }[] = []; // { key: \"strawberry\", label: \"Strawberry\" }\n const groupedItems: Record<ComboboxGroupByValue, Item[]> = {}; // { strawberry: [] }\n\n items.forEach((item) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupKey = (item as Record<string, any>)[groupBy];\n if (!groupedItems[groupKey]) {\n groupedItems[groupKey] = [];\n }\n groupedItems[groupKey].push(item);\n });\n\n Object.keys(groupedItems).forEach((key) => {\n groupsSansItems.push({\n key,\n label: groupToString ? groupToString?.(key) : key,\n });\n });\n\n // Sort groups\n // Yes, this is mutative. We'll survive.\n groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));\n\n const orderedItems = [] as Item[];\n // [{ key: \"strawberry\", label: \"Strawberry\", items: [{...}, {...}, {...}] }]\n const groups = groupsSansItems.map((group) => ({\n ...group,\n items: groupedItems[group.key].map((item) => {\n orderedItems.push(item);\n return item;\n }),\n }));\n\n return { groups, orderedItems };\n }, [groupBy, groupSorter, groupToString, items]);\n\n return { groups, orderedItems };\n}\n","import { supportsPopover } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Popover from \"../Popover\";\nimport {\n ComboboxSelectProps,\n SelectMultipleProps,\n SelectSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport {\n SelectLegacyMultiple,\n SelectLegacySingle,\n} from \"./internal/ComboboxLegacy/ComboboxLegacy\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n useDownshiftEnvironment,\n} from \"./internal/ComboboxUtils\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useGroups } from \"./internal/useGroups\";\nimport {\n useMultipleSelection as useDownshiftMultipleSelection,\n useSelect as useDownshiftSelect,\n UseSelectStateChangeTypes,\n} from \"downshift\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useCombobox`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectSingle = function <Item>(props: SelectSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n environment: environmentProp,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groups,\n groupBy,\n groupToString,\n listRef,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst SelectMultiple = function <Item>(props: SelectMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n groupBy,\n groupToString,\n selectAll,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems: orderedItemsBase } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const orderedItems = selectAll\n ? [SELECT_ALL as Item, ...orderedItemsBase]\n : orderedItemsBase;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange,\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n }\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownHome,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnd,\n ] as UseSelectStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: true,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groupBy,\n groupToString,\n groups,\n listRef,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n/**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n\nexport const ComboboxSelect = function <Item>(\n props: ComboboxSelectProps<Item>,\n) {\n if (!supportsPopover()) {\n if (isMultiple(props)) {\n return <SelectLegacyMultiple<Item> {...props} />;\n } else {\n return <SelectLegacySingle<Item> {...props} />;\n }\n }\n\n if (isMultiple(props)) {\n return <SelectMultiple<Item> {...props} />;\n } else {\n return <SelectSingle<Item> {...props} />;\n }\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../Checkbox/Checkbox.module.scss\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { PassThroughProps } from \"../../../types\";\n\nexport type ComboboxItemVisualProps = {\n children: ReactNode;\n rootDivProps: PassThroughProps<\"div\">;\n disabled: boolean;\n checked: boolean;\n hideCheckbox: boolean;\n flexProps?: FlexProps;\n};\n\nexport const ComboboxItemVisual = forwardRef(\n (\n {\n children,\n disabled,\n checked,\n hideCheckbox,\n rootDivProps,\n flexProps,\n }: ComboboxItemVisualProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n data-anv=\"combobox-item\"\n {...rootDivProps}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n rootDivProps.className,\n )}\n >\n {!hideCheckbox ? (\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n tabIndex={-1}\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n ) : null}\n <Flex grow={1} shrink={1} {...flexProps}>\n {children}\n </Flex>\n </div>\n );\n },\n);\n\nComboboxItemVisual.displayName = \"ComboboxItemVisual\";\n","import { SELECT_ALL } from \"./ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./ComboboxItemVisual\";\nimport { useEffect, useRef } from \"react\";\nimport { useCombobox } from \"./ComboboxContext\";\nimport styles from \"../Combobox.module.scss\";\nimport cx from \"classnames\";\n\nconst ComboboxSelectAll = function ({ className }: { className?: string }) {\n const {\n getItemProps,\n setForceCloseOnSelectItems,\n highlightedIndex,\n items,\n selectAll,\n } = useCombobox();\n\n const item = SELECT_ALL;\n const index = items.indexOf(item);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, setForceCloseOnSelectItems]);\n\n return (\n <ComboboxItemVisual\n key=\"select-all\"\n ref={ref}\n rootDivProps={getItemProps({\n item: SELECT_ALL,\n index,\n \"aria-selected\": highlightedIndex === index,\n className: cx(styles[\"select-all\"], className),\n })}\n hideCheckbox={false}\n disabled={false}\n checked={!!selectAll?.isChecked}\n >\n {selectAll?.label}\n </ComboboxItemVisual>\n );\n};\n\nexport { ComboboxSelectAll };\n","import { createContext, useContext } from \"react\";\n\nexport type ComboboxGroupByValue = string | number;\n\nexport type ComboboxGroupContextType = {\n key: ComboboxGroupByValue;\n label: string | null;\n} | null;\n\nexport const ComboboxGroupContext =\n createContext<ComboboxGroupContextType>(null);\n\nexport const useComboboxGroupContext = () => useContext(ComboboxGroupContext);\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./ComboboxContext\";\n\nimport { Flex } from \"../../Flex\";\nimport { Text } from \"../../Text\";\nimport { Spinner } from \"../../Spinner\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listboxStyles from \"../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport { supportsPopover } from \"../../../internal/functions\";\nimport { ComboboxLegacyList } from \"./ComboboxLegacy\";\nimport { ComboboxSelectAll } from \"./ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./ComboboxGroupContext\";\nimport Divider from \"../../Divider\";\n\n/**\n * Props for the ComboboxGroupList component\n */\nexport type ComboboxGroupListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxGroupList = function <Item = any>({\n children,\n ...rest\n}: ComboboxGroupListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (!supportsPopover())\n return <ComboboxLegacyList {...rest}>{children}</ComboboxLegacyList>;\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && (\n <>\n <ComboboxSelectAll />\n <Divider />\n </>\n )}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import { ComboboxGroupContext } from \"./ComboboxGroupContext\";\n\nexport const ComboboxGroupProvider = ComboboxGroupContext.Provider;\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n useId,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../Popover\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\n\nimport { supportsPopover } from \"../../internal/functions\";\nimport { Text } from \"../Text\";\nimport { Divider } from \"../Divider\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ComboboxLegacyContent } from \"./internal/ComboboxLegacy\";\nimport { ADD_NEW, SELECT_ALL } from \"./internal/ComboboxUtils\";\nimport { ComboboxGroupList } from \"./internal/ComboboxGroupList\";\nimport { ComboboxGroupProvider } from \"./internal/ComboboxGroupProvider\";\n\n/**\n * Props for the options passed to the children render function\n */\nexport type ComboboxContentOptionsProps<Item> = {\n /** Props for the option including selection and disabled state */\n optionProps: ReturnType<\n UseDownshiftComboboxReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n /** The item to render */\n item: Item;\n /** The index of the item in the list */\n index: number;\n};\n\n/**\n * Props for the ComboboxContent component\n */\nexport type ComboboxContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /** Render function that receives combobox state and returns content */\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxContentOptionsProps<Item>[];\n }) => ReactNode;\n /** Whether to disable popover behavior and render inline */\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxContentElement = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n contentRef,\n closeMenu,\n groups,\n } = useCombobox<Item>();\n\n const ComboboxPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n const context = usePopoverContext();\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (_e: FocusEvent) => {\n if (context?.controlled) return;\n context?.popover.close?.(closeMenu);\n };\n\n const resolveChildren = (groupItems: Item[]) =>\n children?.({\n items: groupItems,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: groupItems.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: groupItems.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n tabIndex: disablePopover ? -1 : undefined,\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n });\n\n const id = useId();\n\n const filterAlreadyRenderedItems = (items: Item[]) => {\n // \"Select all\" is already rendered in the list (i.e. ComboboxList)\n // And \"Add new\" is passed as a separate child\n // So we don't need to render them here\n return items.filter((item) => item !== ADD_NEW && item !== SELECT_ALL);\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n tabIndex={-1}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </Popover.Content>\n );\n};\n\n/**\n * ComboboxContent component for rendering the content area of a combobox\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox content area\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <ul>\n * {items.map((item, index) => (\n * <li key={item.id}>\n * {item.name}\n * </li>\n * ))}\n * </ul>\n * )}\n * </Combobox.Content>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n if (!supportsPopover())\n return (\n <ComboboxLegacyContent<Item>\n disablePopover={disablePopover}\n className={className}\n {...rest}\n >\n {children}\n </ComboboxLegacyContent>\n );\n\n return (\n <ComboboxContentElement<Item>\n className={className}\n disablePopover={disablePopover}\n {...rest}\n >\n {children}\n </ComboboxContentElement>\n );\n};\n","import {\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type MouseEvent,\n type RefObject,\n} from \"react\";\n\nimport {\n ComboboxSearchFieldProps,\n ComboboxSelectTriggerProps,\n ComboboxTriggerProps,\n} from \"./ComboboxTypes\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ComboboxLegacyTrigger } from \"./internal/ComboboxLegacy/ComboboxLegacyTrigger\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { supportsPopover, childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport Icon from \"../Icon\";\nimport Avatar from \"../Avatar\";\nimport { SelectTriggerBase } from \"../SelectTrigger/internal/SelectTriggerBase\";\n\nconst ComboboxTrigger = function <Item>(\n props: ComboboxTriggerProps<Item> & { variant?: \"combobox\" | \"select\" },\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n // variant: variantProp = \"combobox\",\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n openMoreInfo,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled,\n readOnly,\n onClear,\n ...rest\n } = componentProps;\n\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useCombobox();\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"Combobox.SearchField should be used with non-Select Combobox\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"Combobox.SelectTrigger should be used with Combobox.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverContext();\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n context?.invoker.ref.current &&\n context?.invoker.ref.current.contains(target);\n const focusedOnContent =\n (context?.popover.ref.current &&\n context?.popover.ref.current.contains(target)) ||\n context?.popover.element?.contains(target);\n\n if ((!focusedOnReference && !focusedOnContent) || !e.relatedTarget) {\n closeMenu();\n }\n };\n\n const labelProps = getLabelProps({\n required,\n moreInfo,\n openMoreInfo,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const inputWrapperProps = {\n ...(select\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n id,\n ref: context?.invoker.ref as unknown as RefObject<\n HTMLDivElement & HTMLButtonElement\n >,\n }),\n }\n : {\n onClick: () => inputRef.current?.focus(),\n ref: context?.invoker.ref as unknown as RefObject<HTMLDivElement>,\n }),\n };\n\n const toggleButtonProps = select ? {} : getToggleButtonProps();\n\n const handleClearButtonClick = (_e: MouseEvent<HTMLButtonElement>) => {\n if (onClear) {\n onClear();\n } else {\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }\n };\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <SelectTriggerBase\n data-anv={select ? \"combobox-select-trigger\" : \"combobox-search-field\"}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n placeholder={placeholder}\n labelProps={labelProps}\n inputWrapperProps={inputWrapperProps}\n toggleButtonProps={toggleButtonProps}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n variant={select ? \"select\" : \"combobox\"}\n disableClearSelection={disableClearSelection}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n inputValue={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n referenceRef={referenceRef}\n onBlur={handleBlur}\n onClearButtonClick={handleClearButtonClick}\n chipProps={(item: Item, index: number) => {\n if (getSelectedItemProps != null) {\n const { onClick: _, ...chipProps } = getSelectedItemProps({\n selectedItem: item,\n index,\n });\n return chipProps;\n }\n return {};\n }}\n inputProps={\n select\n ? {\n ...(getDropdownProps != null\n ? getDropdownProps({\n required,\n preventKeyAction: false,\n })\n : {\n required,\n }),\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n }\n : {\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n [\"aria-controls\"]: getMenuProps().id,\n ...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n ref: inputRef,\n })\n : {}),\n }\n }\n />\n );\n};\n\n/**\n * ComboboxSearchField component for rendering the search input field of a combobox\n *\n * Features:\n * - Provides search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered search field for combobox\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * maxRows={3}\n * />\n */\nconst ComboboxSearchFieldElement = function <Item>({\n onClear,\n ...props\n}: ComboboxTriggerProps<Item>) {\n if (!supportsPopover())\n return <ComboboxLegacyTrigger {...props} variant=\"combobox\" />;\n return (\n <ComboboxTrigger<Item> onClear={onClear} {...props} variant=\"combobox\" />\n );\n};\n\n/**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\nexport const ComboboxSearchField = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSearchFieldProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n openMoreInfo: props.openMoreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSearchFieldElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n\nconst ComboboxSelectTriggerElement = function <Item>(\n props: ComboboxTriggerProps<Item>,\n) {\n if (!supportsPopover())\n return <ComboboxLegacyTrigger {...props} variant=\"select\" />;\n return <ComboboxTrigger<Item> {...props} variant=\"select\" />;\n};\n\n/**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\nexport const ComboboxSelectTrigger = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSelectTriggerProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n openMoreInfo: props.openMoreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSelectTriggerElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n","import { useEffect, useRef, type ComponentPropsWithoutRef } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Flex } from \"../Flex\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n ComboboxLegacyItem,\n ComboboxLegacyItemAddNew,\n} from \"./internal/ComboboxLegacy\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { ComboboxItemAddNewProps, ComboboxItemProps } from \"./ComboboxTypes\";\nimport { useTrackingId } from \"../../hooks\";\nimport { ADD_NEW } from \"./internal/ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./internal/ComboboxItemVisual\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemElement = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index: indexProp,\n hideCheckbox,\n forceCloseOnSelect,\n forceClearInputValueOnSelect,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n highlightedIndex,\n items,\n } = useCombobox<Item>();\n\n const index = item === ADD_NEW && !multiple ? indexProp : items.indexOf(item);\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (forceCloseOnSelect) {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems;\n } else {\n return [...forceCloseOnSelectItems, item];\n }\n });\n }\n\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);\n\n useEffect(() => {\n if (forceClearInputValueOnSelect) {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems;\n } else {\n return [...forceClearInputValueOnSelectItems, item];\n }\n },\n );\n }\n\n return () => {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceClearInputValueOnSelectItems;\n }\n },\n );\n };\n }, [\n item,\n forceClearInputValueOnSelect,\n setForceClearInputValueOnSelectItems,\n ]);\n\n const flexProps = {\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n };\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <ComboboxItemVisual\n rootDivProps={getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n disabled={disabled as boolean}\n checked={checked}\n hideCheckbox={hideCheckbox || item === ADD_NEW}\n flexProps={flexProps}\n >\n {children}\n </ComboboxItemVisual>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n {...flexProps}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n/**\n * ComboboxItem component for rendering individual items in a combobox list\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Handles disabled state for individual items\n * - Provides checkbox UI for multiple selection\n * - Supports custom layout with Flex props\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox item\n *\n * @example\n * <ComboboxItem item={user} index={0}>\n * <Text>{user.name}</Text>\n * <Text subdued>{user.email}</Text>\n * </ComboboxItem>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemElement = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n if (!supportsPopover()) return <ComboboxLegacyItem<Item> {...props} />;\n return <CoreComboboxItemElement {...props} />;\n};\n\n/**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItem = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n const data = {\n item: props.item,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemElement<Item> data-tracking-id={trackingId} {...props} />;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemAddNewElement = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useCombobox<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n // hide the \"Add New\" item on our initial render so it doesn't flicker\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n return !hasExactMatch && !firstRenderRef.current ? (\n <ComboboxItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option in a combobox\n *\n * Features:\n * - Allows users to add new items that don't exist in the list\n * - Integrates with combobox state management\n * - Supports custom layout with Flex props\n * - Handles selection callback for new item creation\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered \"Add New\" item or null\n *\n * @example\n * <ComboboxItemAddNew onSelection={(value) => createNewItem(value)}>\n * <Text>Add \"{inputValue}\" as new item</Text>\n * </ComboboxItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemAddNewElement = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n if (!supportsPopover()) return <ComboboxLegacyItemAddNew<Item> {...props} />;\n return <CoreComboboxItemAddNewElement {...props} />;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItemAddNew = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n const data = {\n item: \"add-new\",\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItemAddNew\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemAddNewElement data-tracking-id={trackingId} {...props} />;\n};\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\nimport { Flex } from \"../Flex\";\nimport { Text } from \"../Text\";\nimport { Spinner } from \"../Spinner\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../ListView/ListView.module.scss\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport { ComboboxLegacyList } from \"./internal/ComboboxLegacy\";\nimport { ComboboxSelectAll } from \"./internal/ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./internal/ComboboxGroupContext\";\n\n/**\n * Props for the ComboboxList component\n */\nexport type ComboboxListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxListElement = function <Item = any>({\n children,\n ...rest\n}: ComboboxListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (!supportsPopover())\n return <ComboboxLegacyList {...rest}>{children}</ComboboxLegacyList>;\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && <ComboboxSelectAll />}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n\n/**\n * ComboboxList component for rendering the list container of combobox items\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Automatically handles empty state with \"No match found\" message\n * - Shows loading spinner during async operations\n * - Integrates with combobox state management\n * - Supports popover and legacy fallback modes\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox list container\n *\n * @example\n * <ComboboxList>\n * {items.map((item, index) => (\n * <ComboboxItem key={item.id} item={item} index={index}>\n * {item.name}\n * </ComboboxItem>\n * ))}\n * </ComboboxList>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxList = function <Item = any>({\n children,\n className,\n ...rest\n}: ComboboxListProps) {\n if (!supportsPopover())\n return (\n <ComboboxLegacyList<Item> className={className} {...rest}>\n {children}\n </ComboboxLegacyList>\n );\n\n return (\n <ComboboxListElement<Item> className={className} {...rest}>\n {children}\n </ComboboxListElement>\n );\n};\n","import { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxSelect } from \"./ComboboxSelect\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxSearchField, ComboboxSelectTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxItem, ComboboxItemAddNew } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n ADD_NEW,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport {\n ComboboxLegacyMultiple,\n ComboboxLegacySingle,\n} from \"./internal/ComboboxLegacy/ComboboxLegacy\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useCombobox as useDownshiftCombobox,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseComboboxStateChangeTypes,\n} from \"downshift\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n useDownshiftEnvironment,\n} from \"./internal/ComboboxUtils\";\nimport { useGroups } from \"./internal/useGroups\";\nimport { matchSorter } from \"match-sorter\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport Popover from \"../Popover\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\nconst ComboboxSingle = function <Item>(props: ComboboxSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n onInputValueChange,\n environment: environmentProp,\n groupBy,\n groupToString,\n groupSorter,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () =>\n showAddNew\n ? [...searchedItemsOrderedByGroup, ADD_NEW as Item]\n : searchedItemsOrderedByGroup,\n [searchedItemsOrderedByGroup, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? itemToString(state.selectedItem) === state.inputValue ||\n !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setItems(allItemsOrderedByGroup);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n\n setInputValue(\n selectedItem != null ? itemToString(selectedItem) : \"\",\n );\n }\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allItemsOrderedByGroup]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: false,\n items: searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst ComboboxMultiple = function <Item>(props: ComboboxMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n selectAll,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [\n forceClearInputValueOnSelectItems,\n setForceClearInputValueOnSelectItems,\n ] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useCombobox and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(() => {\n let items = searchedItemsOrderedByGroup;\n if (showAddNew) {\n items = [...items, ADD_NEW as Item];\n }\n if (selectAll) {\n items = [SELECT_ALL as Item, ...items];\n }\n return items;\n }, [searchedItemsOrderedByGroup, showAddNew, selectAll]);\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type } = changes;\n\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n\n onStateChange?.(changes);\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n const forceClearInputValue =\n forceClearInputValueOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: forceClearInputValue\n ? 0\n : disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: forceClearInputValue\n ? \"\"\n : disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftCombobox.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n setItems(\n matchSorter(allItemsOrderedByGroup, inputValue, filterOptions),\n );\n setHasExactMatch(\n matchSorter(allItemsOrderedByGroup, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setInputValue(\"\");\n\n setItems(allItemsOrderedByGroup);\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftCombobox.stateChangeTypes.InputKeyDownHome,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownEnd,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowUp,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageUp,\n ] as UseComboboxStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n // Now that useDownshiftCombobox has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty && !disableFilter) {\n setItems(matchSorter(itemsProp, inputValue, filterOptions));\n setHasExactMatch(\n matchSorter(itemsProp, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: false,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onOutsidePress={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxElement = function <Item>(props: ComboboxProps<Item>) {\n if (!supportsPopover()) {\n if (isMultiple(props)) {\n return <ComboboxLegacyMultiple<Item> {...props} />;\n } else {\n return <ComboboxLegacySingle<Item> {...props} />;\n }\n }\n\n if (isMultiple(props)) {\n return <ComboboxMultiple<Item> {...props} />;\n } else {\n return <ComboboxSingle<Item> {...props} />;\n }\n};\n\n/**\n * Combobox component for selecting items with search and filtering capabilities.\n *\n * Features:\n * - Single and multiple item selection\n * - Search and filtering with configurable options\n * - Optional \"Add New\" item functionality\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * filterOptions={{ keys: [\"name\"] }}\n * >\n * <Combobox.SearchField label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox>\n */\nexport const Combobox = Object.assign(ComboboxElement, {\n /**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n Select: ComboboxSelect,\n /**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\n SearchField: ComboboxSearchField,\n /**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\n SelectTrigger: ComboboxSelectTrigger,\n /**\n * ComboboxContent component for rendering the content area of a combobox.\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, index) => (\n * <Combobox.Item key={item.id} item={item} index={index}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n */\n Content: ComboboxContent,\n /**\n * ComboboxList component for rendering the list of items.\n *\n * Features:\n * - Renders list of items with proper accessibility\n * - Supports both single and multiple selection modes\n * - Loading state with spinner\n * - Empty state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n */\n List: ComboboxList,\n /**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n Item: ComboboxItem,\n /**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n ItemAddNew: ComboboxItemAddNew,\n /**\n * ComboboxEmpty component for rendering content when no items are available.\n *\n * Features:\n * - Renders content when list is empty\n * - Customizable empty state message\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Empty>\n * <Text>No items found. Try adjusting your search.</Text>\n * </Combobox.Empty>\n */\n Empty: ComboboxEmpty,\n});\n"],"names":["styles","Icon","Info","useDownshiftComboboxLegacy","inputValue","selectedItem","isOpen","useDownshiftMultipleSelection","selectedItems","useDownshiftSelect","Close","Chevron_Right","CheckboxIndeterminate","CheckboxChecked","CheckboxOutline","Check","orderedItems","groups","useDownshiftEnvironment","defaultItemToString","defaultItemToKey","items","ADD_NEW","useDownshiftCombobox"],"mappings":"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"}
|