se-design 1.0.76-dev1 → 1.0.76-dev2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index25.js","sources":["../src/components/Dropdown/index.tsx"],"sourcesContent":["import React, { FC, useState, useRef, useEffect } from 'react';\n\nimport { Popover, PopoverHandle } from 'src/components/Popover';\nimport { Icon } from 'components/Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { InputWithIcon } from '../InputWithIcon';\nimport { useStableId } from '../../utils/useStableId';\nimport { useCombobox } from '../../utils/a11y/useCombobox';\n\ntype DropdownValue = {\n [key: string]: any;\n};\n\ntype DropdownProps = {\n label?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n type: 'select' | 'multi-select';\n dropDownOptions?: DropdownValue[];\n defaultText?: string;\n selectBy?: string;\n optionsUniqueBy?: string;\n displaySelected?: boolean;\n defaultSelectedValue?: DropdownValue | DropdownValue[];\n customSelectedValue?: string;\n onOptionClick?: (selectedValue: DropdownValue) => void;\n style?: React.CSSProperties;\n renderOptionChip?: (option: DropdownValue, srcOption: boolean) => React.ReactNode;\n className?: string;\n iconColor?: string;\n disabled?: boolean;\n dropdownClassName?: string;\n hasError?: boolean;\n errorMessage?: string;\n onApply?: (selectedValue: DropdownValue[]) => void;\n onClear?: () => void;\n customDropdownContent?: () => React.ReactNode;\n isBorderless?: boolean;\n dropDownSrcAutomationId?: string;\n dropDownSelectAutomationId?: string;\n dropDownContentAutomationId?: string;\n shouldShowSearch?: boolean;\n showSearchIcon?: boolean;\n searchPlaceholder?: string;\n searchResultEmptyMessage?: string;\n /** Controlled selection — when provided, Dropdown won't manage internal selected state */\n selectedValue?: DropdownValue | DropdownValue[];\n /** Controlled open state — when provided, Dropdown won't manage internal open/close */\n isOpen?: boolean;\n /** Callback when open state changes (fires in both controlled and uncontrolled modes) */\n onOpenChange?: (isOpen: boolean) => void;\n /** Custom trigger element — replaces the default bordered div + chevron */\n renderSrcElement?: (props: { isOpen: boolean; selectedValue: DropdownValue[] }) => React.ReactNode;\n};\n\nexport const Dropdown: FC<DropdownProps> = (props) => {\n const isControlledSelection = props.selectedValue !== undefined;\n const isControlledOpen = props.isOpen !== undefined;\n\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [highlightedMultiSelectIndex, setHighlightedMultiSelectIndex] = useState(-1);\n const [internalSelectedValues, setInternalSelectedValues] = useState<DropdownValue[]>(() =>\n props?.defaultSelectedValue\n ? Array.isArray(props?.defaultSelectedValue)\n ? props?.defaultSelectedValue\n : [props.defaultSelectedValue]\n : []\n );\n const popoverRef = useRef<HTMLDivElement & PopoverHandle>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const labelId = useStableId(undefined, 'dropdown-label');\n const listboxId = useStableId(undefined, 'dropdown-listbox');\n\n // Derived state: controlled props take precedence over internal state\n const isDropDownOpen = isControlledOpen ? props.isOpen! : internalIsOpen;\n const selectedDropDownValues = isControlledSelection\n ? (Array.isArray(props.selectedValue) ? props.selectedValue : props.selectedValue ? [props.selectedValue] : [])\n : internalSelectedValues;\n\n const setIsDropDownOpen = (value: boolean) => {\n if (!isControlledOpen) {\n setInternalIsOpen(value);\n }\n props.onOpenChange?.(value);\n };\n\n const setSelectedDropDownValues = (values: DropdownValue[]) => {\n if (!isControlledSelection) {\n setInternalSelectedValues(values);\n }\n };\n\n const {\n selectBy = '',\n optionsUniqueBy = '',\n displaySelected = false,\n dropDownOptions,\n defaultText = 'Select',\n iconColor = 'var(--color-gray-700)',\n disabled = false,\n dropdownClassName = '',\n hasError = false,\n errorMessage = '',\n customDropdownContent = null,\n isBorderless = false,\n shouldShowSearch = false,\n showSearchIcon = true,\n searchPlaceholder = 'Search...',\n searchResultEmptyMessage = 'No results found',\n ariaLabel = '',\n customSelectedValue = ''\n } = props;\n\n useEffect(() => {\n if (!isControlledSelection) {\n const newValues = props?.defaultSelectedValue\n ? Array.isArray(props?.defaultSelectedValue)\n ? props?.defaultSelectedValue\n : [props.defaultSelectedValue]\n : [];\n setInternalSelectedValues(newValues);\n }\n }, [props?.defaultSelectedValue, isControlledSelection]);\n\n useEffect(() => {\n if (!isDropDownOpen) {\n setSearchQuery('');\n setHighlightedMultiSelectIndex(-1);\n }\n }, [isDropDownOpen]);\n\n useEffect(() => {\n if (highlightedMultiSelectIndex >= 0) {\n const optionEl = document.getElementById(`${listboxId}-option-${highlightedMultiSelectIndex}`);\n optionEl?.scrollIntoView({ block: 'nearest' });\n }\n }, [highlightedMultiSelectIndex]);\n\n // Focus search input when dropdown opens with search enabled\n useEffect(() => {\n if (isDropDownOpen && shouldShowSearch && searchInputRef.current) {\n requestAnimationFrame(() => searchInputRef.current?.focus());\n }\n }, [isDropDownOpen, shouldShowSearch]);\n\n const isMultiSelect = props?.type === 'multi-select';\n\n const getFilteredOptions = () => {\n if (!searchQuery.trim()) {\n return dropDownOptions || [];\n }\n return (dropDownOptions || []).filter((option) => {\n const optionValue = option?.[selectBy]?.toString().toLowerCase() || '';\n return optionValue.includes(searchQuery.toLowerCase());\n });\n };\n\n const handleDropDownOptionClick = (dropDownOption: any) => {\n setSelectedDropDownValues([dropDownOption]);\n setIsDropDownOpen(false);\n props?.onOptionClick?.(dropDownOption);\n };\n\n // Use useCombobox hook for keyboard navigation (only for single-select)\n const filteredOptions = getFilteredOptions();\n const {\n listboxProps,\n getOptionProps,\n highlightedIndex,\n containerProps: comboboxContainerProps,\n inputProps: comboboxInputProps\n } = useCombobox({\n items: isMultiSelect ? [] : filteredOptions, // Only use for single-select\n isOpen: isDropDownOpen && !isMultiSelect,\n onOpenChange: setIsDropDownOpen,\n onSelect: (item: DropdownValue) => {\n handleDropDownOptionClick(item);\n },\n listboxId,\n disabled: isMultiSelect || disabled,\n hasItems: filteredOptions.length > 0\n });\n\n const getSelectedDropDownValue = (option: DropdownValue, isSrcOption: boolean = false) => {\n if (isMultiSelect) {\n return defaultText;\n }\n\n // if custom selected value is provided, use it instead of the option value\n if (isSrcOption && customSelectedValue) {\n return customSelectedValue;\n }\n\n return option?.[selectBy] || defaultText;\n };\n\n const clearSelectedDropDownValues = () => {\n setSelectedDropDownValues([]);\n props?.onClear?.();\n };\n\n const optionChip = (option: DropdownValue, srcOption: boolean = false) => {\n if (props?.renderOptionChip) {\n return props?.renderOptionChip(option, srcOption);\n }\n\n if (isMultiSelect && selectedDropDownValues?.length > 0) {\n const firstSelectedLabel = selectedDropDownValues[0]?.[selectBy] || '';\n const remainingCount = selectedDropDownValues.length - 1;\n\n // For multiple selections: text takes remaining space, count takes minimum space needed\n return (\n <div className={`option-chip flex items-center w-full`}>\n <div\n className={`${remainingCount > 0 ? 'w-full' : 'flex-1'} truncate`}\n >{`${defaultText}: ${firstSelectedLabel}`}</div>\n {remainingCount > 0 && <div className=\"flex-shrink-0\">+{remainingCount}</div>}\n </div>\n );\n }\n\n return (\n <p className={`option-chip flex flex-1 items-center justify-between`}>\n {getSelectedDropDownValue(option, srcOption)}\n </p>\n );\n };\n\n const renderSearchBar = () => {\n // When search is the combobox (shouldShowSearch + single-select), wire useCombobox ARIA onto the input\n const searchComboboxProps = shouldShowSearch && !isMultiSelect ? {\n role: comboboxInputProps.role,\n 'aria-expanded': comboboxInputProps['aria-expanded'],\n 'aria-haspopup': comboboxInputProps['aria-haspopup'],\n 'aria-controls': comboboxInputProps['aria-controls'],\n 'aria-autocomplete': comboboxInputProps['aria-autocomplete'],\n 'aria-activedescendant': comboboxInputProps['aria-activedescendant'],\n onKeyDown: comboboxInputProps.onKeyDown\n } : {};\n\n return (\n <div className=\" w-full relative flex items-center border-b border-[var(--color-gray-300)]\">\n <InputWithIcon\n leftIcon={showSearchIcon ? { name: 'search', position: 'left', style: { color: 'var(--color-gray-500)' } } : undefined}\n value={searchQuery}\n onChange={(value) => setSearchQuery(value)}\n placeholder={searchPlaceholder}\n style={{ margin: 0, gap: 0 }}\n inputStyle={{ width: '100%', border: 'none', outline: 'none' }}\n automationId=\"se-design-dropdown-search\"\n ariaLabel={searchPlaceholder}\n inputRef={searchInputRef}\n inputProps={searchComboboxProps}\n />\n </div>\n );\n };\n\n const dropDownOptionJsx = (dropDownOption: DropdownValue, index: number) => {\n const optionTxt = dropDownOption[selectBy];\n const dropDownSelectedValue = selectedDropDownValues[0]?.[selectBy] || defaultText;\n const selectByUniqueId = optionsUniqueBy?.length\n ? dropDownOption[optionsUniqueBy] == selectedDropDownValues[0]?.[optionsUniqueBy]\n : true;\n const isOptionSelected = displaySelected && optionTxt === dropDownSelectedValue && selectByUniqueId;\n const isHighlighted = highlightedIndex === index;\n const optionProps = !isMultiSelect ? getOptionProps(index, isOptionSelected) : {};\n\n return (\n <div\n key={dropDownOption.id || dropDownOption.value}\n className={`option break-words px-3 py-2 hover:bg-gray-100 cursor-pointer select-none flex items-center justify-between ${\n isOptionSelected ? 'selected' : ''\n } ${isHighlighted ? 'bg-gray-100' : ''}`}\n onClick={() => handleDropDownOptionClick(dropDownOption)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleDropDownOptionClick(dropDownOption);\n }\n }}\n tabIndex={-1}\n data-automation-id={`dropdown-option-${dropDownOption?.automationId || index}`}\n {...optionProps}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {optionChip({ ...dropDownOption, isOptionSelected }, false)}\n {isOptionSelected && <Icon name=\"checkmark\" stroke={iconColor} />}\n </div>\n );\n };\n\n const renderDropdownContents = () => {\n return (\n <div\n className=\"dropdown-content dropdown-options\"\n aria-label={`${defaultText} options`}\n {...listboxProps}\n >\n {shouldShowSearch && renderSearchBar()}\n <div className=\"flex flex-col max-h-80 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((dropDownOption, index) => dropDownOptionJsx(dropDownOption, index))\n ) : (\n <div\n className=\"px-3 py-4 text-center text-[var(--color-gray-700)] text-sm\"\n role=\"status\"\n aria-live=\"polite\"\n >\n {searchResultEmptyMessage}\n </div>\n )}\n </div>\n </div>\n );\n };\n\n const handleMultiSelectDropdownOptionClick = (isSelected: boolean, dropDownOption: DropdownValue) => {\n let newSelectedDropDownValues: DropdownValue[] = [];\n if (isSelected) {\n newSelectedDropDownValues = [...selectedDropDownValues, dropDownOption];\n } else {\n newSelectedDropDownValues = selectedDropDownValues?.filter(\n (option) => option[optionsUniqueBy] !== dropDownOption[optionsUniqueBy]\n );\n }\n setSelectedDropDownValues(newSelectedDropDownValues);\n };\n\n const handleApplySelectedDropDownValues = () => {\n popoverRef.current?.togglePopover();\n props?.onApply?.(selectedDropDownValues);\n };\n\n const handleMultiSelectKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const options = getFilteredOptions();\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n setHighlightedMultiSelectIndex((prev) => (prev < options.length - 1 ? prev + 1 : prev));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopPropagation();\n setHighlightedMultiSelectIndex((prev) => (prev > 0 ? prev - 1 : 0));\n } else if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n if (highlightedMultiSelectIndex >= 0 && highlightedMultiSelectIndex < options.length) {\n const option = options[highlightedMultiSelectIndex];\n const isSelected = selectedDropDownValues.some(\n (v) => v[optionsUniqueBy] === option[optionsUniqueBy]\n );\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n }\n }\n };\n\n const multiSelectDropdownOptionJSX = (dropDownOption: DropdownValue, index: number) => {\n const isOptionSelected = selectedDropDownValues.some(\n (option) => option[optionsUniqueBy] === dropDownOption[optionsUniqueBy]\n );\n const optionId = `${listboxId}-option-${index}`;\n const isHighlighted = highlightedMultiSelectIndex === index;\n\n return (\n <div\n key={dropDownOption.id || dropDownOption.value}\n id={optionId}\n role=\"option\"\n aria-selected={isOptionSelected}\n className={`option px-3 py-2 cursor-pointer select-none flex items-center gap-2 ${\n isHighlighted ? 'bg-gray-100' : 'hover:bg-gray-100'\n }`}\n onClick={() => handleMultiSelectDropdownOptionClick(!isOptionSelected, dropDownOption)}\n data-automation-id={`dropdown-option-${dropDownOption?.automationId || index}`}\n >\n <Checkbox\n tabIndex={-1}\n ariaHidden\n checked={isOptionSelected}\n onChange={() => {}}\n />\n <span className=\"checkbox-label\">{dropDownOption?.label}</span>\n </div>\n );\n };\n\n const renderMultiSelectDropdownContents = () => {\n const filteredOptions = getFilteredOptions();\n const activeDescendantId =\n highlightedMultiSelectIndex >= 0\n ? `${listboxId}-option-${highlightedMultiSelectIndex}`\n : undefined;\n\n return (\n <div\n className=\"dropdown-content dropdown-options\"\n onKeyDown={(e) => {\n // Stop all Tab events from reaching Popover's handlePopoverContentKeyDown (which closes on Tab).\n // Forward Tab: listbox → Clear → Apply → focus exits → useDismissOnFocusOut closes.\n // Shift+Tab: Apply → Clear → listbox → trigger (dropdown stays open; next Shift+Tab exits).\n if (e.key === 'Tab') {\n e.stopPropagation();\n }\n }}\n >\n <div\n id={listboxId}\n ref={listboxRef}\n role=\"listbox\"\n aria-label={`${defaultText} options`}\n aria-multiselectable=\"true\"\n tabIndex={-1}\n style={{ outline: 'none' }}\n aria-activedescendant={activeDescendantId}\n onKeyDown={handleMultiSelectKeyDown}\n onFocus={() => {\n if (highlightedMultiSelectIndex === -1 && filteredOptions.length > 0) {\n setHighlightedMultiSelectIndex(0);\n }\n }}\n >\n {shouldShowSearch && renderSearchBar()}\n <div className=\"flex flex-col max-h-80 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((dropDownOption, index) => multiSelectDropdownOptionJSX(dropDownOption, index))\n ) : (\n <div\n className=\"px-3 py-4 text-center text-[var(--color-gray-700)] text-sm\"\n role=\"status\"\n aria-live=\"polite\"\n >\n {searchResultEmptyMessage}\n </div>\n )}\n </div>\n </div>\n <div\n className=\"flex items-center justify-end gap-4 p-3 border-t border-[var(--color-gray-200)]\"\n onKeyDown={(e) => {\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n listboxRef.current?.focus();\n }\n }}\n >\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId=\"se-design-dropdown-clear-button\" ariaLabel={`Clear ${defaultText} selection`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId=\"se-design-dropdown-apply-button\" />\n </div>\n </div>\n );\n };\n\n const renderDropdownSelect = () => {\n const borderColor = isDropDownOpen\n ? 'border-[var(--color-blue-500)]'\n : disabled\n ? 'border-[var(--color-gray-300)]'\n : 'border-[var(--color-gray-600)]';\n const errorBorderColor = hasError ? 'border-[var(--color-red-500)]' : '';\n const dropDownSelectClass = `dropdown-src-element bg-[var(--color-white)] flex px-3 py-2 ${\n isBorderless ? 'border-0' : `border rounded-md ${errorBorderColor ? errorBorderColor : borderColor}`\n } flex items-center ${dropdownClassName}`;\n\n return (\n <div className={dropDownSelectClass}>\n <div\n className=\"flex-1 min-w-0\"\n data-automation-id={props?.dropDownSelectAutomationId || 'selected-dropdown-value'}\n >\n {optionChip(selectedDropDownValues[0], true)}\n </div>\n <div className=\"flex-shrink-0 ml-2\" aria-hidden=\"true\">\n <Icon\n name={'chevron'}\n rotation={isDropDownOpen ? '180' : '0'}\n className={`transition-transform`}\n stroke={iconColor}\n />\n </div>\n </div>\n );\n };\n\n const getDropdownAriaLabel = () => {\n return ariaLabel || defaultText || 'Select option';\n };\n\n // sourceRole: select-only keeps combobox on trigger (APG select-only combobox),\n // search-enabled moves combobox to the search input (trigger becomes a button)\n const triggerSourceRole = shouldShowSearch ? 'button' : 'combobox';\n\n // Combobox ARIA on trigger only for select-only (no search) single-select\n const triggerComboboxProps = triggerSourceRole === 'combobox' && !isMultiSelect && comboboxInputProps ? {\n 'aria-activedescendant': comboboxInputProps['aria-activedescendant'],\n 'aria-controls': comboboxInputProps['aria-controls'],\n 'aria-expanded': comboboxInputProps['aria-expanded']\n } : {};\n\n return (\n <div\n className={`se-design-dropdown-container${props?.className ? ` ${props?.className}` : ''}`}\n style={props?.style}\n >\n {props?.label && (\n <div id={labelId} className=\"se-design-dropdown-label mb-[3px] text-[var(--color-gray-700)] text-sm\">\n {props?.label}\n </div>\n )}\n <div\n style={props?.style}\n className={`${disabled ? 'bg-[var(--color-gray-50)] rounded-md cursor-not-allowed' : ''}`}\n {...(!isMultiSelect ? comboboxContainerProps : {})}\n >\n <Popover\n ref={popoverRef}\n isPopoverOpen={isDropDownOpen}\n renderPopoverContents={\n customDropdownContent\n ? customDropdownContent\n : isMultiSelect\n ? renderMultiSelectDropdownContents\n : renderDropdownContents\n }\n contentWidth={'full'}\n renderPopoverSrcElement={\n props.renderSrcElement\n ? () => props.renderSrcElement!({ isOpen: isDropDownOpen, selectedValue: selectedDropDownValues })\n : renderDropdownSelect\n }\n onPopoverToggle={(value) => {\n setIsDropDownOpen(value);\n if (value && isMultiSelect) {\n setTimeout(() => listboxRef.current?.focus(), 50);\n }\n }}\n disabled={disabled}\n automationId={props?.dropDownSrcAutomationId}\n popoverContentAutomationId={props?.dropDownContentAutomationId}\n ariaLabelledBy={props?.label ? labelId : props?.ariaLabelledBy}\n ariaLabel={props?.label || props?.ariaLabelledBy ? undefined : getDropdownAriaLabel()}\n sourceRole={triggerSourceRole}\n {...triggerComboboxProps}\n {...(isMultiSelect ? { 'aria-controls': listboxId } : {})}\n />\n </div>\n {hasError && <div className=\"text-[var(--color-red-500)] text-sm\">{errorMessage}</div>}\n </div>\n );\n};\n"],"names":["Dropdown","props","isControlledSelection","selectedValue","undefined","isControlledOpen","isOpen","internalIsOpen","setInternalIsOpen","useState","searchQuery","setSearchQuery","highlightedMultiSelectIndex","setHighlightedMultiSelectIndex","internalSelectedValues","setInternalSelectedValues","defaultSelectedValue","Array","isArray","popoverRef","useRef","listboxRef","searchInputRef","labelId","useStableId","listboxId","isDropDownOpen","selectedDropDownValues","setIsDropDownOpen","value","onOpenChange","setSelectedDropDownValues","values","selectBy","optionsUniqueBy","displaySelected","dropDownOptions","defaultText","iconColor","disabled","dropdownClassName","hasError","errorMessage","customDropdownContent","isBorderless","shouldShowSearch","showSearchIcon","searchPlaceholder","searchResultEmptyMessage","ariaLabel","customSelectedValue","useEffect","newValues","document","getElementById","scrollIntoView","block","current","requestAnimationFrame","focus","isMultiSelect","type","getFilteredOptions","trim","filter","option","toString","toLowerCase","includes","handleDropDownOptionClick","dropDownOption","onOptionClick","filteredOptions","listboxProps","getOptionProps","highlightedIndex","containerProps","comboboxContainerProps","inputProps","comboboxInputProps","useCombobox","items","onSelect","item","hasItems","length","getSelectedDropDownValue","isSrcOption","clearSelectedDropDownValues","onClear","optionChip","srcOption","renderOptionChip","firstSelectedLabel","remainingCount","React","createElement","className","renderSearchBar","searchComboboxProps","role","onKeyDown","InputWithIcon","leftIcon","name","position","style","color","onChange","placeholder","margin","gap","inputStyle","width","border","outline","automationId","inputRef","dropDownOptionJsx","index","optionTxt","dropDownSelectedValue","selectByUniqueId","isOptionSelected","isHighlighted","optionProps","_extends","key","id","onClick","e","preventDefault","tabIndex","Icon","stroke","renderDropdownContents","map","handleMultiSelectDropdownOptionClick","isSelected","newSelectedDropDownValues","handleApplySelectedDropDownValues","togglePopover","onApply","handleMultiSelectKeyDown","options","stopPropagation","prev","some","v","multiSelectDropdownOptionJSX","optionId","Checkbox","ariaHidden","checked","label","renderMultiSelectDropdownContents","activeDescendantId","ref","onFocus","shiftKey","Button","size","renderDropdownSelect","borderColor","errorBorderColor","dropDownSelectClass","dropDownSelectAutomationId","rotation","getDropdownAriaLabel","triggerSourceRole","triggerComboboxProps","Popover","isPopoverOpen","renderPopoverContents","contentWidth","renderPopoverSrcElement","renderSrcElement","onPopoverToggle","setTimeout","dropDownSrcAutomationId","popoverContentAutomationId","dropDownContentAutomationId","ariaLabelledBy","sourceRole"],"mappings":"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"}
1
+ {"version":3,"file":"index25.js","sources":["../src/components/Dropdown/index.tsx"],"sourcesContent":["import React, { FC, useState, useRef, useEffect } from 'react';\n\nimport { Popover, PopoverHandle } from 'src/components/Popover';\nimport { Icon } from 'components/Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { InputWithIcon } from '../InputWithIcon';\nimport { useStableId } from '../../utils/useStableId';\nimport { useCombobox } from '../../utils/a11y/useCombobox';\n\ntype DropdownValue = {\n [key: string]: any;\n};\n\ntype DropdownProps = {\n label?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n type: 'select' | 'multi-select';\n dropDownOptions?: DropdownValue[];\n defaultText?: string;\n selectBy?: string;\n optionsUniqueBy?: string;\n displaySelected?: boolean;\n defaultSelectedValue?: DropdownValue | DropdownValue[];\n customSelectedValue?: string;\n onOptionClick?: (selectedValue: DropdownValue) => void;\n style?: React.CSSProperties;\n renderOptionChip?: (option: DropdownValue, srcOption: boolean) => React.ReactNode;\n className?: string;\n iconColor?: string;\n disabled?: boolean;\n dropdownClassName?: string;\n hasError?: boolean;\n errorMessage?: string;\n onApply?: (selectedValue: DropdownValue[]) => void;\n onClear?: () => void;\n customDropdownContent?: () => React.ReactNode;\n isBorderless?: boolean;\n dropDownSrcAutomationId?: string;\n dropDownSelectAutomationId?: string;\n dropDownContentAutomationId?: string;\n shouldShowSearch?: boolean;\n showSearchIcon?: boolean;\n searchPlaceholder?: string;\n searchResultEmptyMessage?: string;\n /** Controlled selection — when provided, Dropdown won't manage internal selected state */\n selectedValue?: DropdownValue | DropdownValue[];\n /** Controlled open state — when provided, Dropdown won't manage internal open/close */\n isOpen?: boolean;\n /** Callback when open state changes (fires in both controlled and uncontrolled modes) */\n onOpenChange?: (isOpen: boolean) => void;\n /** Custom trigger element — replaces the default bordered div + chevron */\n renderSrcElement?: (props: { isOpen: boolean; selectedValue: DropdownValue[] }) => React.ReactNode;\n /** Render the dropdown panel in a portal (document.body) to escape overflow:hidden containers */\n isWithPortal?: boolean;\n};\n\nexport const Dropdown: FC<DropdownProps> = (props) => {\n const isControlledSelection = props.selectedValue !== undefined;\n const isControlledOpen = props.isOpen !== undefined;\n\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [highlightedMultiSelectIndex, setHighlightedMultiSelectIndex] = useState(-1);\n const [internalSelectedValues, setInternalSelectedValues] = useState<DropdownValue[]>(() =>\n props?.defaultSelectedValue\n ? Array.isArray(props?.defaultSelectedValue)\n ? props?.defaultSelectedValue\n : [props.defaultSelectedValue]\n : []\n );\n const popoverRef = useRef<HTMLDivElement & PopoverHandle>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const labelId = useStableId(undefined, 'dropdown-label');\n const listboxId = useStableId(undefined, 'dropdown-listbox');\n\n // Derived state: controlled props take precedence over internal state\n const isDropDownOpen = isControlledOpen ? props.isOpen! : internalIsOpen;\n const selectedDropDownValues = isControlledSelection\n ? (Array.isArray(props.selectedValue) ? props.selectedValue : props.selectedValue ? [props.selectedValue] : [])\n : internalSelectedValues;\n\n const setIsDropDownOpen = (value: boolean) => {\n if (!isControlledOpen) {\n setInternalIsOpen(value);\n }\n props.onOpenChange?.(value);\n };\n\n const setSelectedDropDownValues = (values: DropdownValue[]) => {\n if (!isControlledSelection) {\n setInternalSelectedValues(values);\n }\n };\n\n const {\n selectBy = '',\n optionsUniqueBy = '',\n displaySelected = false,\n dropDownOptions,\n defaultText = 'Select',\n iconColor = 'var(--color-gray-700)',\n disabled = false,\n dropdownClassName = '',\n hasError = false,\n errorMessage = '',\n customDropdownContent = null,\n isBorderless = false,\n shouldShowSearch = false,\n showSearchIcon = true,\n searchPlaceholder = 'Search...',\n searchResultEmptyMessage = 'No results found',\n ariaLabel = '',\n customSelectedValue = '',\n isWithPortal = false\n } = props;\n\n useEffect(() => {\n if (!isControlledSelection) {\n const newValues = props?.defaultSelectedValue\n ? Array.isArray(props?.defaultSelectedValue)\n ? props?.defaultSelectedValue\n : [props.defaultSelectedValue]\n : [];\n setInternalSelectedValues(newValues);\n }\n }, [props?.defaultSelectedValue, isControlledSelection]);\n\n useEffect(() => {\n if (!isDropDownOpen) {\n setSearchQuery('');\n setHighlightedMultiSelectIndex(-1);\n }\n }, [isDropDownOpen]);\n\n useEffect(() => {\n if (highlightedMultiSelectIndex >= 0) {\n const optionEl = document.getElementById(`${listboxId}-option-${highlightedMultiSelectIndex}`);\n optionEl?.scrollIntoView({ block: 'nearest' });\n }\n }, [highlightedMultiSelectIndex]);\n\n // Focus search input when dropdown opens with search enabled\n useEffect(() => {\n if (isDropDownOpen && shouldShowSearch && searchInputRef.current) {\n requestAnimationFrame(() => searchInputRef.current?.focus());\n }\n }, [isDropDownOpen, shouldShowSearch]);\n\n const isMultiSelect = props?.type === 'multi-select';\n\n const getFilteredOptions = () => {\n if (!searchQuery.trim()) {\n return dropDownOptions || [];\n }\n return (dropDownOptions || []).filter((option) => {\n const optionValue = option?.[selectBy]?.toString().toLowerCase() || '';\n return optionValue.includes(searchQuery.toLowerCase());\n });\n };\n\n const handleDropDownOptionClick = (dropDownOption: any) => {\n setSelectedDropDownValues([dropDownOption]);\n setIsDropDownOpen(false);\n props?.onOptionClick?.(dropDownOption);\n };\n\n // Use useCombobox hook for keyboard navigation (only for single-select)\n const filteredOptions = getFilteredOptions();\n const {\n listboxProps,\n getOptionProps,\n highlightedIndex,\n containerProps: comboboxContainerProps,\n inputProps: comboboxInputProps\n } = useCombobox({\n items: isMultiSelect ? [] : filteredOptions, // Only use for single-select\n isOpen: isDropDownOpen && !isMultiSelect,\n onOpenChange: setIsDropDownOpen,\n onSelect: (item: DropdownValue) => {\n handleDropDownOptionClick(item);\n },\n listboxId,\n disabled: isMultiSelect || disabled,\n hasItems: filteredOptions.length > 0\n });\n\n const getSelectedDropDownValue = (option: DropdownValue, isSrcOption: boolean = false) => {\n if (isMultiSelect) {\n return defaultText;\n }\n\n // if custom selected value is provided, use it instead of the option value\n if (isSrcOption && customSelectedValue) {\n return customSelectedValue;\n }\n\n return option?.[selectBy] || defaultText;\n };\n\n const clearSelectedDropDownValues = () => {\n setSelectedDropDownValues([]);\n props?.onClear?.();\n };\n\n const optionChip = (option: DropdownValue, srcOption: boolean = false) => {\n if (props?.renderOptionChip) {\n return props?.renderOptionChip(option, srcOption);\n }\n\n if (isMultiSelect && selectedDropDownValues?.length > 0) {\n const firstSelectedLabel = selectedDropDownValues[0]?.[selectBy] || '';\n const remainingCount = selectedDropDownValues.length - 1;\n\n // For multiple selections: text takes remaining space, count takes minimum space needed\n return (\n <div className={`option-chip flex items-center w-full`}>\n <div\n className={`${remainingCount > 0 ? 'w-full' : 'flex-1'} truncate`}\n >{`${defaultText}: ${firstSelectedLabel}`}</div>\n {remainingCount > 0 && <div className=\"flex-shrink-0\">+{remainingCount}</div>}\n </div>\n );\n }\n\n return (\n <p className={`option-chip flex flex-1 items-center justify-between`}>\n {getSelectedDropDownValue(option, srcOption)}\n </p>\n );\n };\n\n const renderSearchBar = () => {\n // When search is the combobox (shouldShowSearch + single-select), wire useCombobox ARIA onto the input\n const searchComboboxProps = shouldShowSearch && !isMultiSelect ? {\n role: comboboxInputProps.role,\n 'aria-expanded': comboboxInputProps['aria-expanded'],\n 'aria-haspopup': comboboxInputProps['aria-haspopup'],\n 'aria-controls': comboboxInputProps['aria-controls'],\n 'aria-autocomplete': comboboxInputProps['aria-autocomplete'],\n 'aria-activedescendant': comboboxInputProps['aria-activedescendant'],\n onKeyDown: comboboxInputProps.onKeyDown\n } : {};\n\n return (\n <div className=\" w-full relative flex items-center border-b border-[var(--color-gray-300)]\">\n <InputWithIcon\n leftIcon={showSearchIcon ? { name: 'search', position: 'left', style: { color: 'var(--color-gray-500)' } } : undefined}\n value={searchQuery}\n onChange={(value) => setSearchQuery(value)}\n placeholder={searchPlaceholder}\n style={{ margin: 0, gap: 0 }}\n inputStyle={{ width: '100%', border: 'none', outline: 'none' }}\n automationId=\"se-design-dropdown-search\"\n ariaLabel={searchPlaceholder}\n inputRef={searchInputRef}\n inputProps={searchComboboxProps}\n />\n </div>\n );\n };\n\n const dropDownOptionJsx = (dropDownOption: DropdownValue, index: number) => {\n const optionTxt = dropDownOption[selectBy];\n const dropDownSelectedValue = selectedDropDownValues[0]?.[selectBy] || defaultText;\n const selectByUniqueId = optionsUniqueBy?.length\n ? dropDownOption[optionsUniqueBy] == selectedDropDownValues[0]?.[optionsUniqueBy]\n : true;\n const isOptionSelected = displaySelected && optionTxt === dropDownSelectedValue && selectByUniqueId;\n const isHighlighted = highlightedIndex === index;\n const optionProps = !isMultiSelect ? getOptionProps(index, isOptionSelected) : {};\n\n return (\n <div\n key={dropDownOption.id || dropDownOption.value}\n className={`option break-words px-3 py-2 hover:bg-gray-100 cursor-pointer select-none flex items-center justify-between ${\n isOptionSelected ? 'selected' : ''\n } ${isHighlighted ? 'bg-gray-100' : ''}`}\n onClick={() => handleDropDownOptionClick(dropDownOption)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleDropDownOptionClick(dropDownOption);\n }\n }}\n tabIndex={-1}\n data-automation-id={`dropdown-option-${dropDownOption?.automationId || index}`}\n {...optionProps}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {optionChip({ ...dropDownOption, isOptionSelected }, false)}\n {isOptionSelected && <Icon name=\"checkmark\" stroke={iconColor} />}\n </div>\n );\n };\n\n const renderDropdownContents = () => {\n return (\n <div\n className=\"dropdown-content dropdown-options\"\n aria-label={`${defaultText} options`}\n {...listboxProps}\n >\n {shouldShowSearch && renderSearchBar()}\n <div className=\"flex flex-col max-h-80 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((dropDownOption, index) => dropDownOptionJsx(dropDownOption, index))\n ) : (\n <div\n className=\"px-3 py-4 text-center text-[var(--color-gray-700)] text-sm\"\n role=\"status\"\n aria-live=\"polite\"\n >\n {searchResultEmptyMessage}\n </div>\n )}\n </div>\n </div>\n );\n };\n\n const handleMultiSelectDropdownOptionClick = (isSelected: boolean, dropDownOption: DropdownValue) => {\n let newSelectedDropDownValues: DropdownValue[] = [];\n if (isSelected) {\n newSelectedDropDownValues = [...selectedDropDownValues, dropDownOption];\n } else {\n newSelectedDropDownValues = selectedDropDownValues?.filter(\n (option) => option[optionsUniqueBy] !== dropDownOption[optionsUniqueBy]\n );\n }\n setSelectedDropDownValues(newSelectedDropDownValues);\n };\n\n const handleApplySelectedDropDownValues = () => {\n popoverRef.current?.togglePopover();\n props?.onApply?.(selectedDropDownValues);\n };\n\n const handleMultiSelectKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const options = getFilteredOptions();\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n setHighlightedMultiSelectIndex((prev) => (prev < options.length - 1 ? prev + 1 : prev));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopPropagation();\n setHighlightedMultiSelectIndex((prev) => (prev > 0 ? prev - 1 : 0));\n } else if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n if (highlightedMultiSelectIndex >= 0 && highlightedMultiSelectIndex < options.length) {\n const option = options[highlightedMultiSelectIndex];\n const isSelected = selectedDropDownValues.some(\n (v) => v[optionsUniqueBy] === option[optionsUniqueBy]\n );\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n }\n }\n };\n\n const multiSelectDropdownOptionJSX = (dropDownOption: DropdownValue, index: number) => {\n const isOptionSelected = selectedDropDownValues.some(\n (option) => option[optionsUniqueBy] === dropDownOption[optionsUniqueBy]\n );\n const optionId = `${listboxId}-option-${index}`;\n const isHighlighted = highlightedMultiSelectIndex === index;\n\n return (\n <div\n key={dropDownOption.id || dropDownOption.value}\n id={optionId}\n role=\"option\"\n aria-selected={isOptionSelected}\n className={`option px-3 py-2 cursor-pointer select-none flex items-center gap-2 ${\n isHighlighted ? 'bg-gray-100' : 'hover:bg-gray-100'\n }`}\n onClick={() => handleMultiSelectDropdownOptionClick(!isOptionSelected, dropDownOption)}\n data-automation-id={`dropdown-option-${dropDownOption?.automationId || index}`}\n >\n <Checkbox\n tabIndex={-1}\n ariaHidden\n checked={isOptionSelected}\n onChange={() => {}}\n />\n <span className=\"checkbox-label\">{dropDownOption?.label}</span>\n </div>\n );\n };\n\n const renderMultiSelectDropdownContents = () => {\n const filteredOptions = getFilteredOptions();\n const activeDescendantId =\n highlightedMultiSelectIndex >= 0\n ? `${listboxId}-option-${highlightedMultiSelectIndex}`\n : undefined;\n\n return (\n <div\n className=\"dropdown-content dropdown-options\"\n onKeyDown={(e) => {\n // Stop all Tab events from reaching Popover's handlePopoverContentKeyDown (which closes on Tab).\n // Forward Tab: listbox → Clear → Apply → focus exits → useDismissOnFocusOut closes.\n // Shift+Tab: Apply → Clear → listbox → trigger (dropdown stays open; next Shift+Tab exits).\n if (e.key === 'Tab') {\n e.stopPropagation();\n }\n }}\n >\n <div\n id={listboxId}\n ref={listboxRef}\n role=\"listbox\"\n aria-label={`${defaultText} options`}\n aria-multiselectable=\"true\"\n tabIndex={-1}\n style={{ outline: 'none' }}\n aria-activedescendant={activeDescendantId}\n onKeyDown={handleMultiSelectKeyDown}\n onFocus={() => {\n if (highlightedMultiSelectIndex === -1 && filteredOptions.length > 0) {\n setHighlightedMultiSelectIndex(0);\n }\n }}\n >\n {shouldShowSearch && renderSearchBar()}\n <div className=\"flex flex-col max-h-80 overflow-y-auto\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((dropDownOption, index) => multiSelectDropdownOptionJSX(dropDownOption, index))\n ) : (\n <div\n className=\"px-3 py-4 text-center text-[var(--color-gray-700)] text-sm\"\n role=\"status\"\n aria-live=\"polite\"\n >\n {searchResultEmptyMessage}\n </div>\n )}\n </div>\n </div>\n <div\n className=\"flex items-center justify-end gap-4 p-3 border-t border-[var(--color-gray-200)]\"\n onKeyDown={(e) => {\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n listboxRef.current?.focus();\n }\n }}\n >\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId=\"se-design-dropdown-clear-button\" ariaLabel={`Clear ${defaultText} selection`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId=\"se-design-dropdown-apply-button\" />\n </div>\n </div>\n );\n };\n\n const renderDropdownSelect = () => {\n const borderColor = isDropDownOpen\n ? 'border-[var(--color-blue-500)]'\n : disabled\n ? 'border-[var(--color-gray-300)]'\n : 'border-[var(--color-gray-600)]';\n const errorBorderColor = hasError ? 'border-[var(--color-red-500)]' : '';\n const dropDownSelectClass = `dropdown-src-element bg-[var(--color-white)] flex px-3 py-2 ${\n isBorderless ? 'border-0' : `border rounded-md ${errorBorderColor ? errorBorderColor : borderColor}`\n } flex items-center ${dropdownClassName}`;\n\n return (\n <div className={dropDownSelectClass}>\n <div\n className=\"flex-1 min-w-0\"\n data-automation-id={props?.dropDownSelectAutomationId || 'selected-dropdown-value'}\n >\n {optionChip(selectedDropDownValues[0], true)}\n </div>\n <div className=\"flex-shrink-0 ml-2\" aria-hidden=\"true\">\n <Icon\n name={'chevron'}\n rotation={isDropDownOpen ? '180' : '0'}\n className={`transition-transform`}\n stroke={iconColor}\n />\n </div>\n </div>\n );\n };\n\n const getDropdownAriaLabel = () => {\n return ariaLabel || defaultText || 'Select option';\n };\n\n // sourceRole: select-only keeps combobox on trigger (APG select-only combobox),\n // search-enabled moves combobox to the search input (trigger becomes a button)\n const triggerSourceRole = shouldShowSearch ? 'button' : 'combobox';\n\n // Combobox ARIA on trigger only for select-only (no search) single-select\n const triggerComboboxProps = triggerSourceRole === 'combobox' && !isMultiSelect && comboboxInputProps ? {\n 'aria-activedescendant': comboboxInputProps['aria-activedescendant'],\n 'aria-controls': comboboxInputProps['aria-controls'],\n 'aria-expanded': comboboxInputProps['aria-expanded']\n } : {};\n\n return (\n <div\n className={`se-design-dropdown-container${props?.className ? ` ${props?.className}` : ''}`}\n style={props?.style}\n >\n {props?.label && (\n <div id={labelId} className=\"se-design-dropdown-label mb-[3px] text-[var(--color-gray-700)] text-sm\">\n {props?.label}\n </div>\n )}\n <div\n style={props?.style}\n className={`${disabled ? 'bg-[var(--color-gray-50)] rounded-md cursor-not-allowed' : ''}`}\n {...(!isMultiSelect ? {\n ...comboboxContainerProps,\n // Portal content lives in document.body — focus moving into it looks like \"focus out\" to\n // the container's blur handler, causing immediate close. Suppress it; the Popover's own\n // onBlur handler checks both source and portal content and handles dismissal correctly.\n ...(isWithPortal ? { onBlurCapture: undefined } : {})\n } : {})}\n >\n <Popover\n ref={popoverRef}\n isPopoverOpen={isDropDownOpen}\n isWithPortal={isWithPortal}\n renderPopoverContents={\n customDropdownContent\n ? customDropdownContent\n : isMultiSelect\n ? renderMultiSelectDropdownContents\n : renderDropdownContents\n }\n contentWidth={'full'}\n renderPopoverSrcElement={\n props.renderSrcElement\n ? () => props.renderSrcElement!({ isOpen: isDropDownOpen, selectedValue: selectedDropDownValues })\n : renderDropdownSelect\n }\n onPopoverToggle={(value) => {\n setIsDropDownOpen(value);\n if (value && isMultiSelect) {\n setTimeout(() => listboxRef.current?.focus(), 50);\n }\n }}\n disabled={disabled}\n automationId={props?.dropDownSrcAutomationId}\n popoverContentAutomationId={props?.dropDownContentAutomationId}\n ariaLabelledBy={props?.label ? labelId : props?.ariaLabelledBy}\n ariaLabel={props?.label || props?.ariaLabelledBy ? undefined : getDropdownAriaLabel()}\n sourceRole={triggerSourceRole}\n {...triggerComboboxProps}\n {...(isMultiSelect ? { 'aria-controls': listboxId } : {})}\n />\n </div>\n {hasError && <div className=\"text-[var(--color-red-500)] text-sm\">{errorMessage}</div>}\n </div>\n );\n};\n"],"names":["Dropdown","props","isControlledSelection","selectedValue","undefined","isControlledOpen","isOpen","internalIsOpen","setInternalIsOpen","useState","searchQuery","setSearchQuery","highlightedMultiSelectIndex","setHighlightedMultiSelectIndex","internalSelectedValues","setInternalSelectedValues","defaultSelectedValue","Array","isArray","popoverRef","useRef","listboxRef","searchInputRef","labelId","useStableId","listboxId","isDropDownOpen","selectedDropDownValues","setIsDropDownOpen","value","onOpenChange","setSelectedDropDownValues","values","selectBy","optionsUniqueBy","displaySelected","dropDownOptions","defaultText","iconColor","disabled","dropdownClassName","hasError","errorMessage","customDropdownContent","isBorderless","shouldShowSearch","showSearchIcon","searchPlaceholder","searchResultEmptyMessage","ariaLabel","customSelectedValue","isWithPortal","useEffect","newValues","document","getElementById","scrollIntoView","block","current","requestAnimationFrame","focus","isMultiSelect","type","getFilteredOptions","trim","filter","option","toString","toLowerCase","includes","handleDropDownOptionClick","dropDownOption","onOptionClick","filteredOptions","listboxProps","getOptionProps","highlightedIndex","containerProps","comboboxContainerProps","inputProps","comboboxInputProps","useCombobox","items","onSelect","item","hasItems","length","getSelectedDropDownValue","isSrcOption","clearSelectedDropDownValues","onClear","optionChip","srcOption","renderOptionChip","firstSelectedLabel","remainingCount","React","createElement","className","renderSearchBar","searchComboboxProps","role","onKeyDown","InputWithIcon","leftIcon","name","position","style","color","onChange","placeholder","margin","gap","inputStyle","width","border","outline","automationId","inputRef","dropDownOptionJsx","index","optionTxt","dropDownSelectedValue","selectByUniqueId","isOptionSelected","isHighlighted","optionProps","_extends","key","id","onClick","e","preventDefault","tabIndex","Icon","stroke","renderDropdownContents","map","handleMultiSelectDropdownOptionClick","isSelected","newSelectedDropDownValues","handleApplySelectedDropDownValues","togglePopover","onApply","handleMultiSelectKeyDown","options","stopPropagation","prev","some","v","multiSelectDropdownOptionJSX","optionId","Checkbox","ariaHidden","checked","label","renderMultiSelectDropdownContents","activeDescendantId","ref","onFocus","shiftKey","Button","size","renderDropdownSelect","borderColor","errorBorderColor","dropDownSelectClass","dropDownSelectAutomationId","rotation","getDropdownAriaLabel","triggerSourceRole","triggerComboboxProps","onBlurCapture","Popover","isPopoverOpen","renderPopoverContents","contentWidth","renderPopoverSrcElement","renderSrcElement","onPopoverToggle","setTimeout","dropDownSrcAutomationId","popoverContentAutomationId","dropDownContentAutomationId","ariaLabelledBy","sourceRole"],"mappings":"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"}
package/dist/index38.js CHANGED
@@ -1,11 +1,11 @@
1
- import a, { forwardRef as de, useState as I, useRef as V, useCallback as H, useEffect as B, useImperativeHandle as fe } from "react";
2
- import { Popover as ve } from "./index19.js";
3
- import { Icon as we } from "./index6.js";
4
- import { Checkbox as Ee } from "./index23.js";
1
+ import a, { forwardRef as de, useState as I, useRef as V, useCallback as H, useEffect as B, useImperativeHandle as ve } from "react";
2
+ import { Popover as we } from "./index19.js";
3
+ import { Icon as Ee } from "./index6.js";
4
+ import { Checkbox as ke } from "./index23.js";
5
5
  import { Button as G } from "./index4.js";
6
6
  import "./index72.js";
7
- import { useCombobox as ke } from "./index68.js";
8
- import { useStableId as be } from "./index199.js";
7
+ import { useCombobox as be } from "./index68.js";
8
+ import { useStableId as Ce } from "./index199.js";
9
9
  /* empty css */
10
10
  function g() {
11
11
  return g = Object.assign ? Object.assign.bind() : function(v) {
@@ -16,7 +16,7 @@ function g() {
16
16
  return v;
17
17
  }, g.apply(null, arguments);
18
18
  }
19
- const Ie = /* @__PURE__ */ de(({
19
+ const _e = /* @__PURE__ */ de(({
20
20
  value: v,
21
21
  onChange: i,
22
22
  placeholder: E = "Type to search or add custom tags...",
@@ -30,8 +30,9 @@ const Ie = /* @__PURE__ */ de(({
30
30
  disabled: l = !1,
31
31
  type: W = "select",
32
32
  showInput: J = !0,
33
- displayTagBy: K = "label"
34
- }, Q) => {
33
+ displayTagBy: K = "label",
34
+ isWithPortal: Q = !1
35
+ }, X) => {
35
36
  const j = (t) => t.map((e) => {
36
37
  const n = h.find((o) => o.value === e);
37
38
  return n ? {
@@ -41,7 +42,7 @@ const Ie = /* @__PURE__ */ de(({
41
42
  label: e,
42
43
  value: e
43
44
  };
44
- }), [r, p] = I(() => j(v || [])), [s, S] = I(""), [A, X] = I(h), [d, c] = I(!1), Y = V(null), x = V(null), R = V(!1), b = W === "multi-select-without-cta", f = W === "multi-select" || b, Z = be(u, "dropdown-input-tags-listbox"), N = H((t) => {
45
+ }), [r, p] = I(() => j(v || [])), [s, S] = I(""), [A, Y] = I(h), [f, c] = I(!1), Z = V(null), x = V(null), R = V(!1), b = W === "multi-select-without-cta", d = W === "multi-select" || b, ee = Ce(u, "dropdown-input-tags-listbox"), N = H((t) => {
45
46
  if (l) return;
46
47
  const e = [...r];
47
48
  e.some((n) => n.value === t.value) || (e.push({
@@ -66,29 +67,29 @@ const Ie = /* @__PURE__ */ de(({
66
67
  }), p(n), i?.(n.map((o) => o.value))), S(""), c(!1);
67
68
  return;
68
69
  }
69
- if (f) {
70
+ if (d) {
70
71
  const e = r.some((n) => n.value === t.value);
71
72
  D(!e, t);
72
73
  } else
73
74
  N(t);
74
75
  }
75
- }, [l, f, r, s, i, D, N]), $ = A.length > 0 ? A : F && s.trim() ? [{
76
+ }, [l, d, r, s, i, D, N]), $ = A.length > 0 ? A : F && s.trim() ? [{
76
77
  id: y,
77
78
  label: `Add "${s.trim()}"`,
78
79
  value: y
79
80
  }] : [], {
80
- containerProps: ee,
81
+ containerProps: te,
81
82
  inputProps: U,
82
- listboxProps: te,
83
+ listboxProps: ne,
83
84
  getOptionProps: O,
84
85
  highlightedIndex: T,
85
86
  setHighlightedIndex: w
86
- } = ke({
87
+ } = be({
87
88
  items: $,
88
- isOpen: d,
89
+ isOpen: f,
89
90
  onOpenChange: c,
90
91
  onSelect: z,
91
- listboxId: Z,
92
+ listboxId: ee,
92
93
  hasItems: $.length > 0
93
94
  });
94
95
  B(() => {
@@ -97,15 +98,15 @@ const Ie = /* @__PURE__ */ de(({
97
98
  return;
98
99
  }
99
100
  p(j(v || []));
100
- }, [v, h, d]), B(() => {
101
+ }, [v, h, f]), B(() => {
101
102
  const t = h.filter((e) => e.label.toLowerCase().includes(s.toLowerCase()) || e.value.toLowerCase().includes(s.toLowerCase()));
102
- X(t);
103
+ Y(t);
103
104
  }, [s, h]);
104
- const ne = (t) => {
105
+ const ae = (t) => {
105
106
  if (l) return;
106
107
  const e = r.filter((n, o) => o !== t);
107
- p(e), (!f || b || f && !d) && i?.(e.map((n) => n.value));
108
- }, ae = (t) => {
108
+ p(e), (!d || b || d && !f) && i?.(e.map((n) => n.value));
109
+ }, le = (t) => {
109
110
  if (!l) {
110
111
  if (t.key === "Backspace" && s === "" && r.length > 0) {
111
112
  t.preventDefault();
@@ -124,27 +125,27 @@ const Ie = /* @__PURE__ */ de(({
124
125
  }
125
126
  U.onKeyDown(t);
126
127
  }
127
- }, le = (t) => {
128
+ }, re = (t) => {
128
129
  if (l) return;
129
130
  const e = t.target.value;
130
- S(e), w(-1), e.trim() && !d && c(!0);
131
- }, re = () => {
131
+ S(e), w(-1), e.trim() && !f && c(!0);
132
+ }, oe = () => {
132
133
  l || (s.trim() || h.length > 0) && c(!0);
133
- }, oe = (t) => {
134
- l || (t.stopPropagation(), x.current?.focus(), !d && (s.trim() || h.length > 0) && c(!0));
135
134
  }, se = (t) => {
135
+ l || (t.stopPropagation(), x.current?.focus(), !f && (s.trim() || h.length > 0) && c(!0));
136
+ }, ie = (t) => {
136
137
  if (l) {
137
138
  t.preventDefault(), t.stopPropagation();
138
139
  return;
139
140
  }
140
141
  t.target.closest(".input-with-tags-container") && t.stopPropagation();
141
- }, ie = () => {
142
- l || c(!d);
142
+ }, ce = () => {
143
+ l || c(!f);
143
144
  };
144
- fe(Q, () => ({
145
- toggleDropdown: ie
145
+ ve(X, () => ({
146
+ toggleDropdown: ce
146
147
  }), []);
147
- const ce = (t, e, n, o) => {
148
+ const ue = (t, e, n, o) => {
148
149
  const C = r.some((P) => P.value === t.value), m = T === e, M = O(e, C);
149
150
  return /* @__PURE__ */ a.createElement("div", g({
150
151
  key: t.id
@@ -158,13 +159,13 @@ const Ie = /* @__PURE__ */ de(({
158
159
  }, t.label), t.value !== t.label && /* @__PURE__ */ a.createElement("span", {
159
160
  className: "option-value"
160
161
  }, t.value));
161
- }, ue = () => {
162
+ }, pe = () => {
162
163
  R.current = !0;
163
164
  const t = r.map((e) => e.value);
164
165
  i?.(t), c(!1);
165
- }, pe = () => {
166
+ }, me = () => {
166
167
  p([]);
167
- }, me = (t, e) => {
168
+ }, ge = (t, e) => {
168
169
  const n = r.some((m) => m.value === t.value), o = T === e, C = O(e, n);
169
170
  return /* @__PURE__ */ a.createElement("div", g({
170
171
  key: t.id
@@ -176,57 +177,58 @@ const Ie = /* @__PURE__ */ de(({
176
177
  "data-automation-id": `${u}-option-${t.id}`
177
178
  }), /* @__PURE__ */ a.createElement("span", {
178
179
  onClick: (m) => m.stopPropagation()
179
- }, /* @__PURE__ */ a.createElement(Ee, {
180
+ }, /* @__PURE__ */ a.createElement(ke, {
180
181
  automationId: "checkbox",
181
182
  className: "checkbox",
182
183
  defaultChecked: n,
183
184
  onChange: (m) => D(m, t),
184
185
  label: t.label
185
186
  })));
186
- }, ge = () => /* @__PURE__ */ a.createElement("div", {
187
+ }, he = () => /* @__PURE__ */ a.createElement("div", {
187
188
  className: "dropdown-with-input-tags-ctas-container"
188
189
  }, /* @__PURE__ */ a.createElement(G, {
189
190
  label: "Clear",
190
191
  type: "link",
191
192
  size: "sm",
192
- onClick: pe,
193
+ onClick: me,
193
194
  automationId: `${u}-clear-button`
194
195
  }), /* @__PURE__ */ a.createElement(G, {
195
196
  label: "Apply",
196
197
  type: "primary",
197
198
  size: "sm",
198
- onClick: ue,
199
+ onClick: pe,
199
200
  automationId: `${u}-apply-button`
200
201
  }));
201
202
  return /* @__PURE__ */ a.createElement("div", g({
202
203
  className: `dropdown-with-input-tags-wrapper ${k} ${l ? "disabled-wrapper" : ""}`,
203
204
  "data-automation-id": u
204
- }, ee), _ && /* @__PURE__ */ a.createElement("label", {
205
+ }, te), _ && /* @__PURE__ */ a.createElement("label", {
205
206
  id: `${u}-label`,
206
207
  className: "dropdown-with-input-tags-label"
207
208
  }, _), /* @__PURE__ */ a.createElement("div", {
208
- onClick: se
209
- }, /* @__PURE__ */ a.createElement(ve, {
210
- ref: Y,
209
+ onClick: ie
210
+ }, /* @__PURE__ */ a.createElement(we, {
211
+ ref: Z,
211
212
  className: "dropdown-with-input-tags-popover",
212
213
  contentWidth: "full",
213
214
  position: "bottom-left",
214
- isPopoverOpen: !l && d,
215
+ isPopoverOpen: !l && f,
215
216
  onPopoverToggle: l ? () => {
216
217
  } : c,
217
218
  disableClickToggle: !0,
219
+ isWithPortal: Q,
218
220
  renderPopoverContents: ({
219
221
  closePopoverCb: t
220
- }) => /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement("div", g({}, te, {
222
+ }) => /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement("div", g({}, ne, {
221
223
  className: "dropdown-with-input-tags-content"
222
- }, f && {
224
+ }, d && {
223
225
  "aria-multiselectable": "true"
224
226
  }), $.length > 0 ? $.map((e, n) => {
225
227
  if (e.value === y) {
226
- const P = T === n, he = O(n, !1);
228
+ const P = T === n, fe = O(n, !1);
227
229
  return /* @__PURE__ */ a.createElement("div", g({
228
230
  key: e.id
229
- }, he, {
231
+ }, fe, {
230
232
  className: `dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${P ? "highlighted" : ""}`,
231
233
  onClick: () => {
232
234
  l || (z(e), t());
@@ -234,43 +236,43 @@ const Ie = /* @__PURE__ */ de(({
234
236
  onMouseEnter: () => w(n)
235
237
  }), 'Add "', s.trim(), '"');
236
238
  }
237
- if (f)
238
- return me(e, n);
239
+ if (d)
240
+ return ge(e, n);
239
241
  const o = r.some((P) => P.value === e.value), C = T === n, M = {
240
242
  ...O(n, o),
241
243
  onMouseEnter: () => w(n),
242
244
  className: `dropdown-with-input-tags-option ${C ? "highlighted" : ""}`
243
245
  };
244
- return L ? L(e, M, N) : ce(e, n, N, l);
246
+ return L ? L(e, M, N) : ue(e, n, N, l);
245
247
  }) : /* @__PURE__ */ a.createElement("div", {
246
248
  className: "dropdown-with-input-tags-no-options"
247
249
  }, /* @__PURE__ */ a.createElement("div", {
248
250
  className: "dropdown-with-input-tags-no-options-text",
249
251
  role: "status",
250
252
  "aria-live": "polite"
251
- }, q))), f && !b && ge()),
253
+ }, q))), d && !b && he()),
252
254
  renderPopoverSrcElement: () => /* @__PURE__ */ a.createElement("div", {
253
255
  className: "dropdown-with-input-tags-input-container"
254
256
  }, /* @__PURE__ */ a.createElement("div", {
255
257
  className: `input-with-tags-container ${l ? "disabled-input-with-tags-container" : ""}`,
256
- onClick: oe
258
+ onClick: se
257
259
  }, r.map((t, e) => /* @__PURE__ */ a.createElement("span", {
258
260
  key: e,
259
261
  className: "tag-in-inputwithtags"
260
- }, t[K], !l && /* @__PURE__ */ a.createElement(we, {
262
+ }, t[K], !l && /* @__PURE__ */ a.createElement(Ee, {
261
263
  name: "close",
262
264
  className: "close-icon-in-inputwithtags",
263
265
  ariaLabel: `Remove tag ${t[K]}`,
264
- onClick: () => ne(e),
266
+ onClick: () => ae(e),
265
267
  shouldStopPropagation: !0
266
268
  }))), (J || !r.length) && /* @__PURE__ */ a.createElement("input", g({
267
269
  ref: x
268
270
  }, U, {
269
271
  type: "text",
270
272
  value: s,
271
- onChange: le,
272
- onKeyDown: ae,
273
- onFocus: re,
273
+ onChange: re,
274
+ onKeyDown: le,
275
+ onFocus: oe,
274
276
  placeholder: r.length === 0 ? E : "",
275
277
  className: "input-with-tags-input",
276
278
  disabled: l,
@@ -281,6 +283,6 @@ const Ie = /* @__PURE__ */ de(({
281
283
  })));
282
284
  });
283
285
  export {
284
- Ie as DropdownWithInputTags
286
+ _e as DropdownWithInputTags
285
287
  };
286
288
  //# sourceMappingURL=index38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index38.js","sources":["../src/components/DropdownWithInputTags/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, forwardRef, ForwardedRef, useImperativeHandle, KeyboardEvent, useCallback } from 'react';\nimport { Popover, PopoverHandle } from '../Popover';\nimport { Icon } from '../Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { useCombobox } from '../../utils/a11y';\nimport { useStableId } from '../../utils/useStableId';\nimport './styles.scss';\n\nexport interface DropdownOption {\n id: string | number;\n label: string;\n value: string;\n [key: string]: any; // Allow additional properties\n}\n\nexport interface DropdownWithInputTagsHandle {\n toggleDropdown: () => void;\n}\n\nexport interface DropdownWithInputTagsProps {\n value: string[];\n onChange?: (tags: string[]) => void;\n placeholder?: string;\n className?: string;\n options?: DropdownOption[];\n renderOption?: (\n option: DropdownOption, \n props: { \n id: string; \n role: 'option'; \n 'aria-selected': boolean; \n onMouseEnter: () => void;\n className: string;\n },\n onSelect: (option: DropdownOption) => void\n ) => React.ReactNode;\n label?: string;\n automationId?: string;\n noOptionsMessage?: string;\n allowCustomTags?: boolean;\n disabled?: boolean;\n type?: 'select' | 'multi-select' |'multi-select-without-cta';\n showInput?: boolean;\n displayTagBy?: 'label' | 'value';\n}\n\nexport const DropdownWithInputTags = forwardRef<DropdownWithInputTagsHandle, DropdownWithInputTagsProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type to search or add custom tags...\",\n className = '',\n options = [],\n renderOption,\n label,\n automationId = '',\n noOptionsMessage = \"No options found\",\n allowCustomTags = true,\n disabled = false,\n type = 'select',\n showInput = true,\n displayTagBy = 'label'\n },\n ref: ForwardedRef<DropdownWithInputTagsHandle>\n ) => {\n // Define initValues at the top, right after props\n const initValues = (values: string[]) => {\n return values.map(val => {\n const found = options.find(opt => opt.value === val);\n return found ? { label: found.label, value: found.value } : { label: val, value: val };\n });\n };\n\n // Now use it in useState\n const [tags, setTags] = useState<{ label: string; value: string }[]>(() => {\n return initValues(value || []);\n });\n const [inputValue, setInputValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<DropdownOption[]>(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const popoverRef = useRef<PopoverHandle>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const applyClickedRef = useRef<boolean>(false);\n \n const isMultiSelectWithoutCTA = type === 'multi-select-without-cta';\n const isMultiSelect = type === 'multi-select' ||isMultiSelectWithoutCTA;\n\n // Generate stable ID for listbox\n const listboxId = useStableId(automationId, 'dropdown-input-tags-listbox');\n\n const handleSelectOption = useCallback(\n (option: DropdownOption) => {\n if (disabled) return;\n\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === option.value)) {\n newTags.push({ label: option.label, value: option.value });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n },\n [disabled, tags, onChange]\n );\n\n const handleMultiSelectDropdownOptionClick = useCallback(\n (isSelected: boolean, option: DropdownOption) => {\n let newSelectedTags: { label: string; value: string }[] = [];\n if (isSelected) {\n newSelectedTags = [...tags, { label: option.label, value: option.value }];\n } else {\n newSelectedTags = tags.filter((tag) => tag.value !== option.value);\n }\n setTags(newSelectedTags);\n if (isMultiSelectWithoutCTA) {\n onChange?.(newSelectedTags.map((tag) => tag.value));\n }\n },\n [tags, isMultiSelectWithoutCTA, onChange]\n );\n\n const ADD_CUSTOM_TAG_VALUE = '__add_custom_tag__';\n\n const handleSelectFromDropdown = useCallback((option: DropdownOption) => {\n if (disabled) return;\n\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const trimmed = inputValue.trim();\n if (!trimmed) return;\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === trimmed)) {\n newTags.push({ label: trimmed, value: trimmed });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n return;\n }\n\n if (isMultiSelect) {\n const isSelected = tags.some(tag => tag.value === option.value);\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n } else {\n handleSelectOption(option);\n }\n }, [disabled, isMultiSelect, tags, inputValue, onChange, handleMultiSelectDropdownOptionClick, handleSelectOption]);\n\n const effectiveItems: DropdownOption[] =\n filteredOptions.length > 0\n ? filteredOptions\n : allowCustomTags && inputValue.trim()\n ? [{ id: ADD_CUSTOM_TAG_VALUE, label: `Add \"${inputValue.trim()}\"`, value: ADD_CUSTOM_TAG_VALUE }]\n : [];\n\n // Combobox hook for keyboard navigation and ARIA\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex\n } = useCombobox({\n items: effectiveItems,\n isOpen: isDropdownOpen,\n onOpenChange: setIsDropdownOpen,\n onSelect: handleSelectFromDropdown,\n listboxId,\n hasItems: effectiveItems.length > 0\n });\n\n\n useEffect(() => {\n if (applyClickedRef.current) {\n applyClickedRef.current = false;\n return;\n }\n setTags(initValues(value || []));\n }, [value, options, isDropdownOpen]);\n\n\n useEffect(() => {\n // const isInputEmpty = !inputValue.trim();\n const filtered = options.filter(option =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) ||\n option.value.toLowerCase().includes(inputValue.toLowerCase())\n );\n setFilteredOptions(filtered);\n }, [inputValue, options]);\n\n const handleRemoveTag = (indexToRemove: number) => {\n if (disabled) return;\n \n const newTags = tags.filter((_, index) => index !== indexToRemove);\n setTags(newTags);\n \n //in multiselect if tag removed while dorpdownopen, do not call onchange\n if(!isMultiSelect || isMultiSelectWithoutCTA ||(isMultiSelect && !isDropdownOpen)) {\n onChange?.(newTags.map(tag => tag.value));\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n // Handle Backspace to remove last tag (preserve existing behavior)\n if (e.key === 'Backspace' && inputValue === \"\" && tags.length > 0) {\n e.preventDefault();\n const newTags = tags.slice(0, -1);\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n return;\n }\n\n // Handle Enter for custom tags when no options match\n if (e.key === 'Enter' && inputValue.trim() && filteredOptions.length === 0 && allowCustomTags) {\n e.preventDefault();\n const newTags = [...tags];\n if (!newTags.some(tag => tag.value === inputValue.trim())) {\n newTags.push({ label: inputValue.trim(), value: inputValue.trim() });\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n }\n setInputValue('');\n setHighlightedIndex(-1);\n setIsDropdownOpen(false);\n return;\n }\n\n // Let combobox hook handle all other keyboard events (Arrow keys, Enter, Escape, etc.)\n comboboxInputProps.onKeyDown(e);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newValue = e.target.value;\n setInputValue(newValue);\n setHighlightedIndex(-1); // Reset highlighted index when user types\n \n if (newValue.trim() && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputFocus = () => {\n if (disabled) return;\n \n if (inputValue.trim() || options.length > 0) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputContainerClick = (e: React.MouseEvent) => {\n if (disabled) return;\n \n e.stopPropagation();\n inputRef.current?.focus();\n if (!isDropdownOpen && (inputValue.trim() || options.length > 0)) {\n setIsDropdownOpen(true);\n }\n };\n\n const handlePopoverWrapperClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n \n const target = e.target as HTMLElement;\n const isInputArea = target.closest('.input-with-tags-container');\n if (isInputArea) {\n e.stopPropagation();\n }\n };\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n useImperativeHandle(ref, () => ({ toggleDropdown }), []);\n\n const defaultRenderOption = (\n option: DropdownOption,\n index: number,\n onSelect: (option: DropdownOption) => void,\n disabled: boolean\n ) => {\n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option ${isHighlighted ? 'highlighted' : ''}`}\n onClick={() => !disabled && onSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span className=\"option-label\">{option.label}</span>\n {option.value !== option.label && <span className=\"option-value\">{option.value}</span>}\n </div>\n );\n };\n const handleApplySelectedDropDownValues = () => {\n applyClickedRef.current = true;\n const newTagValues = tags.map(tag => tag.value);\n onChange?.(newTagValues);\n setIsDropdownOpen(false);\n };\n\n const clearSelectedDropDownValues = () => {\n setTags([]);\n };\n const multiSelectRenderOption = (option: DropdownOption, index: number) => {\n const isOptionSelected = tags.some(tag => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isOptionSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-multi-select-option ${isHighlighted ? 'highlighted' : ''}`}\n aria-checked={isOptionSelected}\n onClick={() => !disabled && handleMultiSelectDropdownOptionClick(!isOptionSelected, option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span onClick={(e) => e.stopPropagation()}>\n <Checkbox\n automationId=\"checkbox\"\n className=\"checkbox\"\n defaultChecked={isOptionSelected}\n onChange={(value) => handleMultiSelectDropdownOptionClick(value, option)}\n label={option.label}\n />\n </span>\n </div>\n );\n };\n\n const multiSelectRenderCTAs = () => {\n return (\n <div className=\"dropdown-with-input-tags-ctas-container\">\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId={`${automationId}-clear-button`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId={`${automationId}-apply-button`} />\n </div>\n );\n };\n\n \n\n return (\n <div\n className={`dropdown-with-input-tags-wrapper ${className} ${disabled ? 'disabled-wrapper' : ''}`}\n data-automation-id={automationId}\n {...containerProps}\n >\n {label && <label id={`${automationId}-label`} className=\"dropdown-with-input-tags-label\">{label}</label>}\n\n <div onClick={handlePopoverWrapperClick}>\n <Popover\n ref={popoverRef}\n className=\"dropdown-with-input-tags-popover\"\n contentWidth=\"full\"\n position=\"bottom-left\"\n isPopoverOpen={!disabled && isDropdownOpen}\n onPopoverToggle={disabled ? () => {} : setIsDropdownOpen}\n disableClickToggle={true}\n renderPopoverContents={({ closePopoverCb }) => (\n <>\n <div\n {...listboxProps}\n className=\"dropdown-with-input-tags-content\"\n {...(isMultiSelect && { 'aria-multiselectable': 'true' })}\n >\n {effectiveItems.length > 0 ? (\n effectiveItems.map((option, index) => {\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, false);\n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${isHighlighted ? 'highlighted' : ''}`}\n onClick={() => {\n if (disabled) return;\n handleSelectFromDropdown(option);\n closePopoverCb();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n Add \"{inputValue.trim()}\"\n </div>\n );\n }\n if (isMultiSelect) {\n return multiSelectRenderOption(option, index);\n }\n \n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n const optionPropsWithHandlers = {\n ...optionProps,\n onMouseEnter: () => setHighlightedIndex(index),\n className: `dropdown-with-input-tags-option ${isHighlighted ? 'highlighted' : ''}`\n };\n \n return renderOption\n ? renderOption(option, optionPropsWithHandlers, handleSelectOption)\n : defaultRenderOption(option, index, handleSelectOption, disabled);\n })\n ) : (\n <div className=\"dropdown-with-input-tags-no-options\">\n <div className=\"dropdown-with-input-tags-no-options-text\" role=\"status\" aria-live=\"polite\">\n {noOptionsMessage}\n </div>\n </div>\n )}\n </div>\n {isMultiSelect && !isMultiSelectWithoutCTA && multiSelectRenderCTAs()}\n </>\n )}\n renderPopoverSrcElement={() => (\n <div className=\"dropdown-with-input-tags-input-container\">\n <div\n className={`input-with-tags-container ${disabled ? 'disabled-input-with-tags-container' : ''}`}\n onClick={handleInputContainerClick}\n >\n {tags.map((tag, index) => (\n <span key={index} className=\"tag-in-inputwithtags\">\n {tag[displayTagBy]}\n {!disabled && (\n <Icon\n name=\"close\"\n className=\"close-icon-in-inputwithtags\"\n ariaLabel={`Remove tag ${tag[displayTagBy]}`}\n onClick={() => handleRemoveTag(index)}\n shouldStopPropagation\n />\n )}\n </span>\n ))}\n {(showInput ||!tags.length) && (\n <input\n ref={inputRef}\n {...comboboxInputProps}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"input-with-tags-input\"\n disabled={disabled}\n aria-label={label || 'Search and select options'}\n />\n )}\n </div>\n </div>\n )}\n automationId={automationId}\n popoverContentAutomationId={`${automationId}-content`}\n />\n </div>\n </div>\n );\n }\n); "],"names":["DropdownWithInputTags","value","onChange","placeholder","className","options","renderOption","label","automationId","noOptionsMessage","allowCustomTags","disabled","type","showInput","displayTagBy","ref","initValues","values","map","val","found","find","opt","tags","setTags","useState","inputValue","setInputValue","filteredOptions","setFilteredOptions","isDropdownOpen","setIsDropdownOpen","popoverRef","useRef","inputRef","applyClickedRef","isMultiSelectWithoutCTA","isMultiSelect","listboxId","useStableId","handleSelectOption","useCallback","option","newTags","some","tag","push","handleMultiSelectDropdownOptionClick","isSelected","newSelectedTags","filter","ADD_CUSTOM_TAG_VALUE","handleSelectFromDropdown","trimmed","trim","effectiveItems","length","id","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","useCombobox","items","isOpen","onOpenChange","onSelect","hasItems","useEffect","current","filtered","toLowerCase","includes","handleRemoveTag","indexToRemove","_","index","handleKeyDown","e","key","preventDefault","slice","onKeyDown","handleInputChange","newValue","target","handleInputFocus","handleInputContainerClick","stopPropagation","focus","handlePopoverWrapperClick","closest","toggleDropdown","useImperativeHandle","defaultRenderOption","isHighlighted","optionProps","React","createElement","_extends","onClick","onMouseEnter","handleApplySelectedDropDownValues","newTagValues","clearSelectedDropDownValues","multiSelectRenderOption","isOptionSelected","Checkbox","defaultChecked","multiSelectRenderCTAs","Button","size","Popover","contentWidth","position","isPopoverOpen","onPopoverToggle","disableClickToggle","renderPopoverContents","closePopoverCb","Fragment","optionPropsWithHandlers","role","renderPopoverSrcElement","Icon","name","ariaLabel","shouldStopPropagation","onFocus","popoverContentAutomationId"],"mappings":"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"}
1
+ {"version":3,"file":"index38.js","sources":["../src/components/DropdownWithInputTags/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, forwardRef, ForwardedRef, useImperativeHandle, KeyboardEvent, useCallback } from 'react';\nimport { Popover, PopoverHandle } from '../Popover';\nimport { Icon } from '../Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { useCombobox } from '../../utils/a11y';\nimport { useStableId } from '../../utils/useStableId';\nimport './styles.scss';\n\nexport interface DropdownOption {\n id: string | number;\n label: string;\n value: string;\n [key: string]: any; // Allow additional properties\n}\n\nexport interface DropdownWithInputTagsHandle {\n toggleDropdown: () => void;\n}\n\nexport interface DropdownWithInputTagsProps {\n value: string[];\n onChange?: (tags: string[]) => void;\n placeholder?: string;\n className?: string;\n options?: DropdownOption[];\n renderOption?: (\n option: DropdownOption, \n props: { \n id: string; \n role: 'option'; \n 'aria-selected': boolean; \n onMouseEnter: () => void;\n className: string;\n },\n onSelect: (option: DropdownOption) => void\n ) => React.ReactNode;\n label?: string;\n automationId?: string;\n noOptionsMessage?: string;\n allowCustomTags?: boolean;\n disabled?: boolean;\n type?: 'select' | 'multi-select' |'multi-select-without-cta';\n showInput?: boolean;\n displayTagBy?: 'label' | 'value';\n isWithPortal?: boolean;\n}\n\nexport const DropdownWithInputTags = forwardRef<DropdownWithInputTagsHandle, DropdownWithInputTagsProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type to search or add custom tags...\",\n className = '',\n options = [],\n renderOption,\n label,\n automationId = '',\n noOptionsMessage = \"No options found\",\n allowCustomTags = true,\n disabled = false,\n type = 'select',\n showInput = true,\n displayTagBy = 'label',\n isWithPortal = false\n },\n ref: ForwardedRef<DropdownWithInputTagsHandle>\n ) => {\n // Define initValues at the top, right after props\n const initValues = (values: string[]) => {\n return values.map(val => {\n const found = options.find(opt => opt.value === val);\n return found ? { label: found.label, value: found.value } : { label: val, value: val };\n });\n };\n\n // Now use it in useState\n const [tags, setTags] = useState<{ label: string; value: string }[]>(() => {\n return initValues(value || []);\n });\n const [inputValue, setInputValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<DropdownOption[]>(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const popoverRef = useRef<PopoverHandle>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const applyClickedRef = useRef<boolean>(false);\n \n const isMultiSelectWithoutCTA = type === 'multi-select-without-cta';\n const isMultiSelect = type === 'multi-select' ||isMultiSelectWithoutCTA;\n\n // Generate stable ID for listbox\n const listboxId = useStableId(automationId, 'dropdown-input-tags-listbox');\n\n const handleSelectOption = useCallback(\n (option: DropdownOption) => {\n if (disabled) return;\n\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === option.value)) {\n newTags.push({ label: option.label, value: option.value });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n },\n [disabled, tags, onChange]\n );\n\n const handleMultiSelectDropdownOptionClick = useCallback(\n (isSelected: boolean, option: DropdownOption) => {\n let newSelectedTags: { label: string; value: string }[] = [];\n if (isSelected) {\n newSelectedTags = [...tags, { label: option.label, value: option.value }];\n } else {\n newSelectedTags = tags.filter((tag) => tag.value !== option.value);\n }\n setTags(newSelectedTags);\n if (isMultiSelectWithoutCTA) {\n onChange?.(newSelectedTags.map((tag) => tag.value));\n }\n },\n [tags, isMultiSelectWithoutCTA, onChange]\n );\n\n const ADD_CUSTOM_TAG_VALUE = '__add_custom_tag__';\n\n const handleSelectFromDropdown = useCallback((option: DropdownOption) => {\n if (disabled) return;\n\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const trimmed = inputValue.trim();\n if (!trimmed) return;\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === trimmed)) {\n newTags.push({ label: trimmed, value: trimmed });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n return;\n }\n\n if (isMultiSelect) {\n const isSelected = tags.some(tag => tag.value === option.value);\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n } else {\n handleSelectOption(option);\n }\n }, [disabled, isMultiSelect, tags, inputValue, onChange, handleMultiSelectDropdownOptionClick, handleSelectOption]);\n\n const effectiveItems: DropdownOption[] =\n filteredOptions.length > 0\n ? filteredOptions\n : allowCustomTags && inputValue.trim()\n ? [{ id: ADD_CUSTOM_TAG_VALUE, label: `Add \"${inputValue.trim()}\"`, value: ADD_CUSTOM_TAG_VALUE }]\n : [];\n\n // Combobox hook for keyboard navigation and ARIA\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex\n } = useCombobox({\n items: effectiveItems,\n isOpen: isDropdownOpen,\n onOpenChange: setIsDropdownOpen,\n onSelect: handleSelectFromDropdown,\n listboxId,\n hasItems: effectiveItems.length > 0\n });\n\n\n useEffect(() => {\n if (applyClickedRef.current) {\n applyClickedRef.current = false;\n return;\n }\n setTags(initValues(value || []));\n }, [value, options, isDropdownOpen]);\n\n\n useEffect(() => {\n // const isInputEmpty = !inputValue.trim();\n const filtered = options.filter(option =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) ||\n option.value.toLowerCase().includes(inputValue.toLowerCase())\n );\n setFilteredOptions(filtered);\n }, [inputValue, options]);\n\n const handleRemoveTag = (indexToRemove: number) => {\n if (disabled) return;\n \n const newTags = tags.filter((_, index) => index !== indexToRemove);\n setTags(newTags);\n \n //in multiselect if tag removed while dorpdownopen, do not call onchange\n if(!isMultiSelect || isMultiSelectWithoutCTA ||(isMultiSelect && !isDropdownOpen)) {\n onChange?.(newTags.map(tag => tag.value));\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n // Handle Backspace to remove last tag (preserve existing behavior)\n if (e.key === 'Backspace' && inputValue === \"\" && tags.length > 0) {\n e.preventDefault();\n const newTags = tags.slice(0, -1);\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n return;\n }\n\n // Handle Enter for custom tags when no options match\n if (e.key === 'Enter' && inputValue.trim() && filteredOptions.length === 0 && allowCustomTags) {\n e.preventDefault();\n const newTags = [...tags];\n if (!newTags.some(tag => tag.value === inputValue.trim())) {\n newTags.push({ label: inputValue.trim(), value: inputValue.trim() });\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n }\n setInputValue('');\n setHighlightedIndex(-1);\n setIsDropdownOpen(false);\n return;\n }\n\n // Let combobox hook handle all other keyboard events (Arrow keys, Enter, Escape, etc.)\n comboboxInputProps.onKeyDown(e);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newValue = e.target.value;\n setInputValue(newValue);\n setHighlightedIndex(-1); // Reset highlighted index when user types\n \n if (newValue.trim() && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputFocus = () => {\n if (disabled) return;\n \n if (inputValue.trim() || options.length > 0) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputContainerClick = (e: React.MouseEvent) => {\n if (disabled) return;\n \n e.stopPropagation();\n inputRef.current?.focus();\n if (!isDropdownOpen && (inputValue.trim() || options.length > 0)) {\n setIsDropdownOpen(true);\n }\n };\n\n const handlePopoverWrapperClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n \n const target = e.target as HTMLElement;\n const isInputArea = target.closest('.input-with-tags-container');\n if (isInputArea) {\n e.stopPropagation();\n }\n };\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n useImperativeHandle(ref, () => ({ toggleDropdown }), []);\n\n const defaultRenderOption = (\n option: DropdownOption,\n index: number,\n onSelect: (option: DropdownOption) => void,\n disabled: boolean\n ) => {\n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option ${isHighlighted ? 'highlighted' : ''}`}\n onClick={() => !disabled && onSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span className=\"option-label\">{option.label}</span>\n {option.value !== option.label && <span className=\"option-value\">{option.value}</span>}\n </div>\n );\n };\n const handleApplySelectedDropDownValues = () => {\n applyClickedRef.current = true;\n const newTagValues = tags.map(tag => tag.value);\n onChange?.(newTagValues);\n setIsDropdownOpen(false);\n };\n\n const clearSelectedDropDownValues = () => {\n setTags([]);\n };\n const multiSelectRenderOption = (option: DropdownOption, index: number) => {\n const isOptionSelected = tags.some(tag => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isOptionSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-multi-select-option ${isHighlighted ? 'highlighted' : ''}`}\n aria-checked={isOptionSelected}\n onClick={() => !disabled && handleMultiSelectDropdownOptionClick(!isOptionSelected, option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span onClick={(e) => e.stopPropagation()}>\n <Checkbox\n automationId=\"checkbox\"\n className=\"checkbox\"\n defaultChecked={isOptionSelected}\n onChange={(value) => handleMultiSelectDropdownOptionClick(value, option)}\n label={option.label}\n />\n </span>\n </div>\n );\n };\n\n const multiSelectRenderCTAs = () => {\n return (\n <div className=\"dropdown-with-input-tags-ctas-container\">\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId={`${automationId}-clear-button`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId={`${automationId}-apply-button`} />\n </div>\n );\n };\n\n \n\n return (\n <div\n className={`dropdown-with-input-tags-wrapper ${className} ${disabled ? 'disabled-wrapper' : ''}`}\n data-automation-id={automationId}\n {...containerProps}\n >\n {label && <label id={`${automationId}-label`} className=\"dropdown-with-input-tags-label\">{label}</label>}\n\n <div onClick={handlePopoverWrapperClick}>\n <Popover\n ref={popoverRef}\n className=\"dropdown-with-input-tags-popover\"\n contentWidth=\"full\"\n position=\"bottom-left\"\n isPopoverOpen={!disabled && isDropdownOpen}\n onPopoverToggle={disabled ? () => {} : setIsDropdownOpen}\n disableClickToggle={true}\n isWithPortal={isWithPortal}\n renderPopoverContents={({ closePopoverCb }) => (\n <>\n <div\n {...listboxProps}\n className=\"dropdown-with-input-tags-content\"\n {...(isMultiSelect && { 'aria-multiselectable': 'true' })}\n >\n {effectiveItems.length > 0 ? (\n effectiveItems.map((option, index) => {\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, false);\n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${isHighlighted ? 'highlighted' : ''}`}\n onClick={() => {\n if (disabled) return;\n handleSelectFromDropdown(option);\n closePopoverCb();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n Add \"{inputValue.trim()}\"\n </div>\n );\n }\n if (isMultiSelect) {\n return multiSelectRenderOption(option, index);\n }\n \n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n const optionPropsWithHandlers = {\n ...optionProps,\n onMouseEnter: () => setHighlightedIndex(index),\n className: `dropdown-with-input-tags-option ${isHighlighted ? 'highlighted' : ''}`\n };\n \n return renderOption\n ? renderOption(option, optionPropsWithHandlers, handleSelectOption)\n : defaultRenderOption(option, index, handleSelectOption, disabled);\n })\n ) : (\n <div className=\"dropdown-with-input-tags-no-options\">\n <div className=\"dropdown-with-input-tags-no-options-text\" role=\"status\" aria-live=\"polite\">\n {noOptionsMessage}\n </div>\n </div>\n )}\n </div>\n {isMultiSelect && !isMultiSelectWithoutCTA && multiSelectRenderCTAs()}\n </>\n )}\n renderPopoverSrcElement={() => (\n <div className=\"dropdown-with-input-tags-input-container\">\n <div\n className={`input-with-tags-container ${disabled ? 'disabled-input-with-tags-container' : ''}`}\n onClick={handleInputContainerClick}\n >\n {tags.map((tag, index) => (\n <span key={index} className=\"tag-in-inputwithtags\">\n {tag[displayTagBy]}\n {!disabled && (\n <Icon\n name=\"close\"\n className=\"close-icon-in-inputwithtags\"\n ariaLabel={`Remove tag ${tag[displayTagBy]}`}\n onClick={() => handleRemoveTag(index)}\n shouldStopPropagation\n />\n )}\n </span>\n ))}\n {(showInput ||!tags.length) && (\n <input\n ref={inputRef}\n {...comboboxInputProps}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"input-with-tags-input\"\n disabled={disabled}\n aria-label={label || 'Search and select options'}\n />\n )}\n </div>\n </div>\n )}\n automationId={automationId}\n popoverContentAutomationId={`${automationId}-content`}\n />\n </div>\n </div>\n );\n }\n); "],"names":["DropdownWithInputTags","value","onChange","placeholder","className","options","renderOption","label","automationId","noOptionsMessage","allowCustomTags","disabled","type","showInput","displayTagBy","isWithPortal","ref","initValues","values","map","val","found","find","opt","tags","setTags","useState","inputValue","setInputValue","filteredOptions","setFilteredOptions","isDropdownOpen","setIsDropdownOpen","popoverRef","useRef","inputRef","applyClickedRef","isMultiSelectWithoutCTA","isMultiSelect","listboxId","useStableId","handleSelectOption","useCallback","option","newTags","some","tag","push","handleMultiSelectDropdownOptionClick","isSelected","newSelectedTags","filter","ADD_CUSTOM_TAG_VALUE","handleSelectFromDropdown","trimmed","trim","effectiveItems","length","id","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","useCombobox","items","isOpen","onOpenChange","onSelect","hasItems","useEffect","current","filtered","toLowerCase","includes","handleRemoveTag","indexToRemove","_","index","handleKeyDown","e","key","preventDefault","slice","onKeyDown","handleInputChange","newValue","target","handleInputFocus","handleInputContainerClick","stopPropagation","focus","handlePopoverWrapperClick","closest","toggleDropdown","useImperativeHandle","defaultRenderOption","isHighlighted","optionProps","React","createElement","_extends","onClick","onMouseEnter","handleApplySelectedDropDownValues","newTagValues","clearSelectedDropDownValues","multiSelectRenderOption","isOptionSelected","Checkbox","defaultChecked","multiSelectRenderCTAs","Button","size","Popover","contentWidth","position","isPopoverOpen","onPopoverToggle","disableClickToggle","renderPopoverContents","closePopoverCb","Fragment","optionPropsWithHandlers","role","renderPopoverSrcElement","Icon","name","ariaLabel","shouldStopPropagation","onFocus","popoverContentAutomationId"],"mappings":"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"}