se-design 1.0.76-dev1 → 1.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/style.css +1 -1
- package/dist/components/Dropdown/index.d.ts +2 -0
- package/dist/components/DropdownWithInputTags/index.d.ts +1 -0
- package/dist/index12.js +11 -13
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +12 -14
- package/dist/index13.js.map +1 -1
- package/dist/index19.js +142 -136
- package/dist/index19.js.map +1 -1
- package/dist/index197.js.map +1 -1
- package/dist/index25.js +78 -68
- package/dist/index25.js.map +1 -1
- package/dist/index32.js +10 -11
- package/dist/index38.js +61 -59
- package/dist/index38.js.map +1 -1
- package/dist/index42.js +7 -8
- package/dist/index43.js +6 -7
- package/dist/index55.js +16 -17
- package/dist/index65.js +1 -2
- package/dist/index7.js +7 -8
- package/package.json +1 -1
package/dist/index25.js.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;AA0DO,MAAMA,KAA+BC,CAAAA,MAAU;AACpD,QAAMC,IAAwBD,EAAME,kBAAkBC,QAChDC,IAAmBJ,EAAMK,WAAWF,QAEpC,CAACG,GAAgBC,EAAiB,IAAIC,EAAS,EAAK,GACpD,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAE,GAC3C,CAACG,GAA6BC,CAA8B,IAAIJ,EAAS,EAAE,GAC3E,CAACK,IAAwBC,CAAyB,IAAIN,EAA0B,MACpFR,GAAOe,uBACHC,MAAMC,QAAQjB,GAAOe,oBAAoB,IACvCf,GAAOe,uBACP,CAACf,EAAMe,oBAAoB,IAC7B,EACN,GACMG,IAAaC,EAAuC,IAAI,GACxDC,IAAaD,EAAuB,IAAI,GACxCE,IAAiBF,EAAyB,IAAI,GAC9CG,IAAUC,GAAYpB,QAAW,gBAAgB,GACjDqB,IAAYD,GAAYpB,QAAW,kBAAkB,GAGrDsB,IAAiBrB,IAAmBJ,EAAMK,SAAUC,GACpDoB,IAAyBzB,IAC1Be,MAAMC,QAAQjB,EAAME,aAAa,IAAIF,EAAME,gBAAgBF,EAAME,gBAAgB,CAACF,EAAME,aAAa,IAAI,CAAA,IAC1GW,IAEEc,IAAoBA,CAACC,MAAmB;AAC5C,IAAKxB,KACHG,GAAkBqB,CAAK,GAEzB5B,EAAM6B,eAAeD,CAAK;AAAA,EAC5B,GAEME,IAA4BA,CAACC,MAA4B;AAC7D,IAAK9B,KACHa,EAA0BiB,CAAM;AAAA,EAEpC,GAEM;AAAA,IACJC,UAAAA,IAAW;AAAA,IACXC,iBAAAA,IAAkB;AAAA,IAClBC,iBAAAA,KAAkB;AAAA,IAClBC,iBAAAA;AAAAA,IACAC,aAAAA,IAAc;AAAA,IACdC,WAAAA,IAAY;AAAA,IACZC,UAAAA,IAAW;AAAA,IACXC,mBAAAA,KAAoB;AAAA,IACpBC,UAAAA,IAAW;AAAA,IACXC,cAAAA,KAAe;AAAA,IACfC,uBAAAA,IAAwB;AAAA,IACxBC,cAAAA,KAAe;AAAA,IACfC,kBAAAA,IAAmB;AAAA,IACnBC,gBAAAA,KAAiB;AAAA,IACjBC,mBAAAA,IAAoB;AAAA,IACpBC,0BAAAA,IAA2B;AAAA,IAC3BC,WAAAA,KAAY;AAAA,IACZC,qBAAAA,IAAsB;AAAA,IACtBC,cAAAA,IAAe;AAAA,EAAA,IACblD;AAEJmD,EAAAA,EAAU,MAAM;AACd,QAAI,CAAClD,GAAuB;AAC1B,YAAMmD,IAAYpD,GAAOe,uBACrBC,MAAMC,QAAQjB,GAAOe,oBAAoB,IACvCf,GAAOe,uBACP,CAACf,EAAMe,oBAAoB,IAC7B,CAAA;AACJD,MAAAA,EAA0BsC,CAAS;AAAA,IACrC;AAAA,EACF,GAAG,CAACpD,GAAOe,sBAAsBd,CAAqB,CAAC,GAEvDkD,EAAU,MAAM;AACd,IAAK1B,MACHf,EAAe,EAAE,GACjBE,EAA+B,EAAE;AAAA,EAErC,GAAG,CAACa,CAAc,CAAC,GAEnB0B,EAAU,MAAM;AACd,IAAIxC,KAA+B,KAChB0C,SAASC,eAAe,GAAG9B,CAAS,WAAWb,CAA2B,EAAE,GACnF4C,eAAe;AAAA,MAAEC,OAAO;AAAA,IAAA,CAAW;AAAA,EAEjD,GAAG,CAAC7C,CAA2B,CAAC,GAGhCwC,EAAU,MAAM;AACd,IAAI1B,KAAkBmB,KAAoBvB,EAAeoC,WACvDC,sBAAsB,MAAMrC,EAAeoC,SAASE,MAAAA,CAAO;AAAA,EAE/D,GAAG,CAAClC,GAAgBmB,CAAgB,CAAC;AAErC,QAAMgB,IAAgB5D,GAAO6D,SAAS,gBAEhCC,IAAqBA,MACpBrD,EAAYsD,UAGT5B,KAAmB,CAAA,GAAI6B,OAAQC,CAAAA,OACjBA,IAASjC,CAAQ,GAAGkC,SAAAA,EAAWC,iBAAiB,IACjDC,SAAS3D,EAAY0D,YAAAA,CAAa,CACtD,IALQhC,KAAmB,CAAA,GAQxBkC,IAA4BA,CAACC,MAAwB;AACzDxC,IAAAA,EAA0B,CAACwC,CAAc,CAAC,GAC1C3C,EAAkB,EAAK,GACvB3B,GAAOuE,gBAAgBD,CAAc;AAAA,EACvC,GAGME,IAAkBV,EAAAA,GAClB;AAAA,IACJW,cAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAC,gBAAgBC;AAAAA,IAChBC,YAAYC;AAAAA,EAAAA,IACVC,GAAY;AAAA,IACdC,OAAOrB,IAAgB,CAAA,IAAKY;AAAAA;AAAAA,IAC5BnE,QAAQoB,KAAkB,CAACmC;AAAAA,IAC3B/B,cAAcF;AAAAA,IACduD,UAAUA,CAACC,MAAwB;AACjCd,MAAAA,EAA0Bc,CAAI;AAAA,IAChC;AAAA,IACA3D,WAAAA;AAAAA,IACAc,UAAUsB,KAAiBtB;AAAAA,IAC3B8C,UAAUZ,EAAgBa,SAAS;AAAA,EAAA,CACpC,GAEKC,KAA2BA,CAACrB,GAAuBsB,IAAuB,OAC1E3B,IACKxB,IAILmD,KAAetC,IACVA,IAGFgB,IAASjC,CAAQ,KAAKI,GAGzBoD,KAA8BA,MAAM;AACxC1D,IAAAA,EAA0B,CAAA,CAAE,GAC5B9B,GAAOyF,UAAAA;AAAAA,EACT,GAEMC,IAAaA,CAACzB,GAAuB0B,IAAqB,OAAU;AACxE,QAAI3F,GAAO4F;AACT,aAAO5F,GAAO4F,iBAAiB3B,GAAQ0B,CAAS;AAGlD,QAAI/B,KAAiBlC,GAAwB2D,SAAS,GAAG;AACvD,YAAMQ,IAAqBnE,EAAuB,CAAC,IAAIM,CAAQ,KAAK,IAC9D8D,IAAiBpE,EAAuB2D,SAAS;AAGvD,aACEU,gBAAAA,EAAAC,cAAA,OAAA;AAAA,QAAKC,WAAW;AAAA,MAAA,GACdF,gBAAAA,EAAAC,cAAA,OAAA;AAAA,QACEC,WAAW,GAAGH,IAAiB,IAAI,WAAW,QAAQ;AAAA,MAAA,GACtD,GAAG1D,CAAW,KAAKyD,CAAkB,EAAQ,GAC9CC,IAAiB,KAAKC,gBAAAA,EAAAC,cAAA,OAAA;AAAA,QAAKC,WAAU;AAAA,MAAA,GAAgB,KAAEH,CAAoB,CACzE;AAAA,IAET;AAEA,WACEC,gBAAAA,EAAAC,cAAA,KAAA;AAAA,MAAGC,WAAW;AAAA,IAAA,GACXX,GAAyBrB,GAAQ0B,CAAS,CAC1C;AAAA,EAEP,GAEMO,IAAkBA,MAAM;AAE5B,UAAMC,IAAsBvD,KAAoB,CAACgB,IAAgB;AAAA,MAC/DwC,MAAMrB,EAAmBqB;AAAAA,MACzB,iBAAiBrB,EAAmB,eAAe;AAAA,MACnD,iBAAiBA,EAAmB,eAAe;AAAA,MACnD,iBAAiBA,EAAmB,eAAe;AAAA,MACnD,qBAAqBA,EAAmB,mBAAmB;AAAA,MAC3D,yBAAyBA,EAAmB,uBAAuB;AAAA,MACnEsB,WAAWtB,EAAmBsB;AAAAA,IAAAA,IAC5B,CAAA;AAEJ,WACEN,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKC,WAAU;AAAA,IAAA,GACbF,gBAAAA,EAAAC,cAACM,IAAa;AAAA,MACZC,UAAU1D,KAAiB;AAAA,QAAE2D,MAAM;AAAA,QAAUC,UAAU;AAAA,QAAQC,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAA;AAAA,MAAwB,IAAMxG;AAAAA,MAC7GyB,OAAOnB;AAAAA,MACPmG,UAAWhF,CAAAA,MAAUlB,EAAekB,CAAK;AAAA,MACzCiF,aAAa/D;AAAAA,MACb4D,OAAO;AAAA,QAAEI,QAAQ;AAAA,QAAGC,KAAK;AAAA,MAAA;AAAA,MACzBC,YAAY;AAAA,QAAEC,OAAO;AAAA,QAAQC,QAAQ;AAAA,QAAQC,SAAS;AAAA,MAAA;AAAA,MACtDC,cAAa;AAAA,MACbpE,WAAWF;AAAAA,MACXuE,UAAUhG;AAAAA,MACVyD,YAAYqB;AAAAA,IAAAA,CACb,CACE;AAAA,EAET,GAEMmB,KAAoBA,CAAChD,GAA+BiD,MAAkB;AAC1E,UAAMC,IAAYlD,EAAetC,CAAQ,GACnCyF,IAAwB/F,EAAuB,CAAC,IAAIM,CAAQ,KAAKI,GACjEsF,IAAmBzF,GAAiBoD,SACtCf,EAAerC,CAAe,KAAKP,EAAuB,CAAC,IAAIO,CAAe,IAC9E,IACE0F,IAAmBzF,MAAmBsF,MAAcC,KAAyBC,GAC7EE,KAAgBjD,OAAqB4C,GACrCM,KAAejE,IAA0D,CAAA,IAA1Cc,GAAe6C,GAAOI,CAAgB;AAE3E,WACE5B,gBAAAA,EAAAC,cAAA,OAAA8B,EAAA;AAAA,MACEC,KAAKzD,EAAe0D,MAAM1D,EAAe1C;AAAAA,MACzCqE,WAAW,+GACT0B,IAAmB,aAAa,EAAE,IAChCC,KAAgB,gBAAgB,EAAE;AAAA,MACtCK,SAASA,MAAM5D,EAA0BC,CAAc;AAAA,MACvD+B,WAAY6B,CAAAA,MAAM;AAChB,SAAIA,EAAEH,QAAQ,WAAWG,EAAEH,QAAQ,SACjCG,EAAEC,eAAAA,GACF9D,EAA0BC,CAAc;AAAA,MAE5C;AAAA,MACA8D,UAAU;AAAA,MACV,sBAAoB,mBAAmB9D,GAAgB8C,gBAAgBG,CAAK;AAAA,IAAA,GACxEM,IAAW;AAAA,MACf,iBAAeF,IAAmB,SAAS;AAAA,IAAA,CAAQ,GAElDjC,EAAW;AAAA,MAAE,GAAGpB;AAAAA,MAAgBqD,kBAAAA;AAAAA,IAAAA,GAAoB,EAAK,GACzDA,KAAoB5B,gBAAAA,EAAAC,cAACqC,GAAI;AAAA,MAAC7B,MAAK;AAAA,MAAY8B,QAAQjG;AAAAA,IAAAA,CAAY,CAC7D;AAAA,EAET,GAEMkG,KAAyBA,MAE3BxC,gBAAAA,EAAAC,cAAA,OAAA8B,EAAA;AAAA,IACE7B,WAAU;AAAA,IACV,cAAY,GAAG7D,CAAW;AAAA,EAAA,GACtBqC,EAAY,GAEf7B,KAAoBsD,KACrBH,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKC,WAAU;AAAA,EAAA,GACZzB,EAAgBa,SAAS,IACxBb,EAAgBgE,IAAI,CAAClE,GAAgBiD,MAAUD,GAAkBhD,GAAgBiD,CAAK,CAAC,IAEvFxB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEC,WAAU;AAAA,IACVG,MAAK;AAAA,IACL,aAAU;AAAA,EAAA,GAETrD,CACE,CAEJ,CACF,GAIH0F,IAAuCA,CAACC,GAAqBpE,MAAkC;AACnG,QAAIqE,IAA6C,CAAA;AACjD,IAAID,IACFC,IAA4B,CAAC,GAAGjH,GAAwB4C,CAAc,IAEtEqE,IAA4BjH,GAAwBsC,OACjDC,CAAAA,MAAWA,EAAOhC,CAAe,MAAMqC,EAAerC,CAAe,CACxE,GAEFH,EAA0B6G,CAAyB;AAAA,EACrD,GAEMC,KAAoCA,MAAM;AAC9C1H,IAAAA,EAAWuC,SAASoF,cAAAA,GACpB7I,GAAO8I,UAAUpH,CAAsB;AAAA,EACzC,GAEMqH,KAA2BA,CAACb,MAA2C;AAC3E,UAAMc,IAAUlF,EAAAA;AAChB,QAAIoE,EAAEH,QAAQ;AACZG,QAAEC,eAAAA,GACFD,EAAEe,gBAAAA,GACFrI,EAAgCsI,OAAUA,IAAOF,EAAQ3D,SAAS,IAAI6D,IAAO,IAAIA,CAAK;AAAA,aAC7EhB,EAAEH,QAAQ;AACnBG,QAAEC,eAAAA,GACFD,EAAEe,gBAAAA,GACFrI,EAAgCsI,CAAAA,MAAUA,IAAO,IAAIA,IAAO,IAAI,CAAE;AAAA,cACzDhB,EAAEH,QAAQ,OAAOG,EAAEH,QAAQ,aACpCG,EAAEC,eAAAA,GACExH,KAA+B,KAAKA,IAA8BqI,EAAQ3D,SAAQ;AACpF,YAAMpB,IAAS+E,EAAQrI,CAA2B,GAC5C+H,IAAahH,EAAuByH,KACvCC,CAAAA,MAAMA,EAAEnH,CAAe,MAAMgC,EAAOhC,CAAe,CACtD;AACAwG,MAAAA,EAAqC,CAACC,GAAYzE,CAAM;AAAA,IAC1D;AAAA,EAEJ,GAEMoF,KAA+BA,CAAC/E,GAA+BiD,MAAkB;AACrF,UAAMI,IAAmBjG,EAAuByH,KAC7ClF,CAAAA,MAAWA,EAAOhC,CAAe,MAAMqC,EAAerC,CAAe,CACxE,GACMqH,IAAW,GAAG9H,CAAS,WAAW+F,CAAK,IACvCK,IAAgBjH,MAAgC4G;AAEtD,WACExB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACE+B,KAAKzD,EAAe0D,MAAM1D,EAAe1C;AAAAA,MACzCoG,IAAIsB;AAAAA,MACJlD,MAAK;AAAA,MACL,iBAAeuB;AAAAA,MACf1B,WAAW,uEACT2B,IAAgB,gBAAgB,mBAAmB;AAAA,MAErDK,SAASA,MAAMQ,EAAqC,CAACd,GAAkBrD,CAAc;AAAA,MACrF,sBAAoB,mBAAmBA,GAAgB8C,gBAAgBG,CAAK;AAAA,IAAA,GAE5ExB,gBAAAA,EAAAC,cAACuD,IAAQ;AAAA,MACPnB,UAAU;AAAA,MACVoB,YAAU;AAAA,MACVC,SAAS9B;AAAAA,MACTf,UAAUA,MAAM;AAAA,MAAC;AAAA,IAAA,CAClB,GACDb,gBAAAA,EAAAC,cAAA,QAAA;AAAA,MAAMC,WAAU;AAAA,IAAA,GAAkB3B,GAAgBoF,KAAY,CAC3D;AAAA,EAET,GAEMC,KAAoCA,MAAM;AAC9C,UAAMnF,IAAkBV,EAAAA,GAClB8F,IACJjJ,KAA+B,IAC3B,GAAGa,CAAS,WAAWb,CAA2B,KAClDR;AAEN,WACE4F,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEC,WAAU;AAAA,MACVI,WAAY6B,CAAAA,MAAM;AAIhB,QAAIA,EAAEH,QAAQ,SACZG,EAAEe,gBAAAA;AAAAA,MAEN;AAAA,IAAA,GAEAlD,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEgC,IAAIxG;AAAAA,MACJqI,KAAKzI;AAAAA,MACLgF,MAAK;AAAA,MACL,cAAY,GAAGhE,CAAW;AAAA,MAC1B,wBAAqB;AAAA,MACrBgG,UAAU;AAAA,MACV1B,OAAO;AAAA,QAAES,SAAS;AAAA,MAAA;AAAA,MAClB,yBAAuByC;AAAAA,MACvBvD,WAAW0C;AAAAA,MACXe,SAASA,MAAM;AACb,QAAInJ,MAAgC,MAAM6D,EAAgBa,SAAS,KACjEzE,EAA+B,CAAC;AAAA,MAEpC;AAAA,IAAA,GAECgC,KAAoBsD,EAAAA,GACrBH,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKC,WAAU;AAAA,IAAA,GACZzB,EAAgBa,SAAS,IACxBb,EAAgBgE,IAAI,CAAClE,GAAgBiD,MAAU8B,GAA6B/E,GAAgBiD,CAAK,CAAC,IAElGxB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEC,WAAU;AAAA,MACVG,MAAK;AAAA,MACL,aAAU;AAAA,IAAA,GAETrD,CACE,CAEJ,CACF,GACLgD,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEC,WAAU;AAAA,MACVI,WAAY6B,CAAAA,MAAM;AAChB,QAAIA,EAAEH,QAAQ,SAASG,EAAE6B,aACvB7B,EAAEC,eAAAA,GACFD,EAAEe,gBAAAA,GACF7H,EAAWqC,SAASE,MAAAA;AAAAA,MAExB;AAAA,IAAA,GAEAoC,gBAAAA,EAAAC,cAACgE,GAAM;AAAA,MAACN,OAAM;AAAA,MAAQ7F,MAAK;AAAA,MAAOoG,MAAK;AAAA,MAAKhC,SAASzC;AAAAA,MAA6B4B,cAAa;AAAA,MAAkCpE,WAAW,SAASZ,CAAW;AAAA,IAAA,CAAe,GAC/K2D,gBAAAA,EAAAC,cAACgE,GAAM;AAAA,MAACN,OAAM;AAAA,MAAQ7F,MAAK;AAAA,MAAUoG,MAAK;AAAA,MAAKhC,SAASW;AAAAA,MAAmCxB,cAAa;AAAA,IAAA,CAAmC,CACxI,CACF;AAAA,EAET,GAEM8C,KAAuBA,MAAM;AACjC,UAAMC,IAAc1I,IAChB,mCACAa,IACA,mCACA,kCACE8H,IAAmB5H,IAAW,kCAAkC,IAChE6H,IAAsB,+DAC1B1H,KAAe,aAAa,qBAAqByH,KAAsCD,CAAW,EAAE,sBAChF5H,EAAiB;AAEvC,WACEwD,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKC,WAAWoE;AAAAA,IAAAA,GACdtE,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEC,WAAU;AAAA,MACV,sBAAoBjG,GAAOsK,8BAA8B;AAAA,IAAA,GAExD5E,EAAWhE,EAAuB,CAAC,GAAG,EAAI,CACxC,GACLqE,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKC,WAAU;AAAA,MAAqB,eAAY;AAAA,IAAA,GAC9CF,gBAAAA,EAAAC,cAACqC,GAAI;AAAA,MACH7B,MAAM;AAAA,MACN+D,UAAU9I,IAAiB,QAAQ;AAAA,MACnCwE,WAAW;AAAA,MACXqC,QAAQjG;AAAAA,IAAAA,CACT,CACE,CACF;AAAA,EAET,GAEMmI,KAAuBA,MACpBxH,MAAaZ,KAAe,iBAK/BqI,IAAoB7H,IAAmB,WAAW,YAGlD8H,KAAuBD,MAAsB,cAAc,CAAC7G,KAAiBmB,IAAqB;AAAA,IACtG,yBAAyBA,EAAmB,uBAAuB;AAAA,IACnE,iBAAiBA,EAAmB,eAAe;AAAA,IACnD,iBAAiBA,EAAmB,eAAe;AAAA,EAAA,IACjD,CAAA;AAEJ,SACEgB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEC,WAAW,+BAA+BjG,GAAOiG,YAAY,IAAIjG,GAAOiG,SAAS,KAAK,EAAE;AAAA,IACxFS,OAAO1G,GAAO0G;AAAAA,EAAAA,GAEb1G,GAAO0J,SACN3D,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKgC,IAAI1G;AAAAA,IAAS2E,WAAU;AAAA,EAAA,GACzBjG,GAAO0J,KACL,GAEP3D,gBAAAA,EAAAC,cAAA,OAAA8B,EAAA;AAAA,IACEpB,OAAO1G,GAAO0G;AAAAA,IACdT,WAAW,GAAG3D,IAAW,4DAA4D,EAAE;AAAA,EAAA,GACjFsB,IAMF,CAAA,IANkB;AAAA,IACpB,GAAGiB;AAAAA;AAAAA;AAAAA;AAAAA,IAIH,GAAI3B,IAAe;AAAA,MAAEyH,eAAexK;AAAAA,IAAAA,IAAc,CAAA;AAAA,EAAC,CAC/C,GAEN4F,gBAAAA,EAAAC,cAAC4E,IAAO9C,EAAA;AAAA,IACN+B,KAAK3I;AAAAA,IACL2J,eAAepJ;AAAAA,IACfyB,cAAAA;AAAAA,IACA4H,uBACEpI,MAEIkB,IACA+F,KACApB;AAAAA,IAENwC,cAAc;AAAA,IACdC,yBACEhL,EAAMiL,mBACF,MAAMjL,EAAMiL,iBAAkB;AAAA,MAAE5K,QAAQoB;AAAAA,MAAgBvB,eAAewB;AAAAA,IAAAA,CAAwB,IAC/FwI;AAAAA,IAENgB,iBAAkBtJ,CAAAA,MAAU;AAC1BD,MAAAA,EAAkBC,CAAK,GACnBA,KAASgC,KACXuH,WAAW,MAAM/J,EAAWqC,SAASE,MAAAA,GAAS,EAAE;AAAA,IAEpD;AAAA,IACArB,UAAAA;AAAAA,IACA8E,cAAcpH,GAAOoL;AAAAA,IACrBC,4BAA4BrL,GAAOsL;AAAAA,IACnCC,gBAAgBvL,GAAO0J,QAAQpI,IAAUtB,GAAOuL;AAAAA,IAChDvI,WAAWhD,GAAO0J,SAAS1J,GAAOuL,iBAAiBpL,SAAYqK,GAAAA;AAAAA,IAC/DgB,YAAYf;AAAAA,EAAAA,GACRC,IACC9G,IAAgB;AAAA,IAAE,iBAAiBpC;AAAAA,EAAAA,IAAc,CAAA,CAAE,CACzD,CACE,GACJgB,KAAYuD,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKC,WAAU;AAAA,EAAA,GAAuCxD,EAAkB,CAClF;AAET;"}
|
package/dist/index32.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import e from "react";
|
|
2
2
|
import { Button as N } from "./index4.js";
|
|
3
3
|
import { Badge as I } from "./index10.js";
|
|
4
|
-
import { Icon as
|
|
4
|
+
import { Icon as g } from "./index6.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
const t = {
|
|
7
7
|
widgetCtn: "flex flex-col gap-[2px] align-center border border-[var(--color-gray-200)] rounded-[12px] w-[385px]",
|
|
@@ -21,16 +21,16 @@ const t = {
|
|
|
21
21
|
requestFeatureImageCtn: "w-[48px] h-[48px] border border-[var(--color-gray-200)] rounded-[50%] flex items-center flex-shrink-0 bg-[var(--color-red-50)]",
|
|
22
22
|
requestFeatureDescriptionCtn: "flex flex-col"
|
|
23
23
|
}, B = ({
|
|
24
|
-
widgetClassName:
|
|
24
|
+
widgetClassName: d = "",
|
|
25
25
|
widgetType: a = "general",
|
|
26
26
|
widgetTitle: r = "",
|
|
27
27
|
widgetDescription: l = "",
|
|
28
28
|
widgetImage: p,
|
|
29
|
-
hasImage:
|
|
29
|
+
hasImage: x = !1,
|
|
30
30
|
hasButtonCta: n = !1,
|
|
31
31
|
hasLinkCta: i = !1,
|
|
32
32
|
ctaText: o = "",
|
|
33
|
-
hasBadge:
|
|
33
|
+
hasBadge: f = !1,
|
|
34
34
|
badgeText: w = "",
|
|
35
35
|
buttonBgColor: u = "secondary",
|
|
36
36
|
onCtaClick: b,
|
|
@@ -38,7 +38,7 @@ const t = {
|
|
|
38
38
|
webinarDateInfo: c,
|
|
39
39
|
webinarSpeaker: s
|
|
40
40
|
}) => {
|
|
41
|
-
const E =
|
|
41
|
+
const E = f && /* @__PURE__ */ e.createElement(I, {
|
|
42
42
|
label: w,
|
|
43
43
|
className: t.widgetBadge,
|
|
44
44
|
bgColor: "var(--color-yellow-50)",
|
|
@@ -52,14 +52,14 @@ const t = {
|
|
|
52
52
|
label: o,
|
|
53
53
|
className: `${t.widgetButtonCta} mt-[4px]`,
|
|
54
54
|
onClick: b
|
|
55
|
-
})), C =
|
|
55
|
+
})), C = x && /* @__PURE__ */ e.createElement("div", {
|
|
56
56
|
className: `${t.widgetImageCtn} widget-image-ctn`
|
|
57
57
|
}, /* @__PURE__ */ e.createElement("img", {
|
|
58
58
|
src: p,
|
|
59
59
|
alt: "widget-image"
|
|
60
60
|
}));
|
|
61
61
|
return /* @__PURE__ */ e.createElement("div", {
|
|
62
|
-
className: `${t.widgetCtn} ${
|
|
62
|
+
className: `${t.widgetCtn} ${d} widget-ctn`,
|
|
63
63
|
onClick: v
|
|
64
64
|
}, a !== "general" && C, /* @__PURE__ */ e.createElement("div", {
|
|
65
65
|
className: t.descriptionCtn
|
|
@@ -71,14 +71,14 @@ const t = {
|
|
|
71
71
|
className: t.webinarInfoCtn
|
|
72
72
|
}, s && /* @__PURE__ */ e.createElement("div", {
|
|
73
73
|
className: `${t.webinarDescriptionInfo} align-baseline`
|
|
74
|
-
}, /* @__PURE__ */ e.createElement(
|
|
74
|
+
}, /* @__PURE__ */ e.createElement(g, {
|
|
75
75
|
name: "people",
|
|
76
76
|
className: "relative top-[2px]"
|
|
77
77
|
}), /* @__PURE__ */ e.createElement("span", {
|
|
78
78
|
className: t.webinarSpeaker
|
|
79
79
|
}, s)), c && /* @__PURE__ */ e.createElement("div", {
|
|
80
80
|
className: `${t.webinarTimeInfo} align-baseline mb-[4px]`
|
|
81
|
-
}, /* @__PURE__ */ e.createElement(
|
|
81
|
+
}, /* @__PURE__ */ e.createElement(g, {
|
|
82
82
|
name: "clock",
|
|
83
83
|
className: "relative top-[2px]"
|
|
84
84
|
}), /* @__PURE__ */ e.createElement("span", {
|
|
@@ -96,7 +96,6 @@ const t = {
|
|
|
96
96
|
}, l), m)) : m));
|
|
97
97
|
};
|
|
98
98
|
export {
|
|
99
|
-
B as Widget
|
|
100
|
-
B as default
|
|
99
|
+
B as Widget
|
|
101
100
|
};
|
|
102
101
|
//# sourceMappingURL=index32.js.map
|
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
|
|
2
|
-
import { Popover as
|
|
3
|
-
import { Icon as
|
|
4
|
-
import { Checkbox as
|
|
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
|
|
8
|
-
import { useStableId as
|
|
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
|
|
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
|
-
|
|
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,
|
|
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 (
|
|
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,
|
|
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:
|
|
81
|
+
containerProps: te,
|
|
81
82
|
inputProps: U,
|
|
82
|
-
listboxProps:
|
|
83
|
+
listboxProps: ne,
|
|
83
84
|
getOptionProps: O,
|
|
84
85
|
highlightedIndex: T,
|
|
85
86
|
setHighlightedIndex: w
|
|
86
|
-
} =
|
|
87
|
+
} = be({
|
|
87
88
|
items: $,
|
|
88
|
-
isOpen:
|
|
89
|
+
isOpen: f,
|
|
89
90
|
onOpenChange: c,
|
|
90
91
|
onSelect: z,
|
|
91
|
-
listboxId:
|
|
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,
|
|
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
|
-
|
|
103
|
+
Y(t);
|
|
103
104
|
}, [s, h]);
|
|
104
|
-
const
|
|
105
|
+
const ae = (t) => {
|
|
105
106
|
if (l) return;
|
|
106
107
|
const e = r.filter((n, o) => o !== t);
|
|
107
|
-
p(e), (!
|
|
108
|
-
},
|
|
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
|
-
},
|
|
128
|
+
}, re = (t) => {
|
|
128
129
|
if (l) return;
|
|
129
130
|
const e = t.target.value;
|
|
130
|
-
S(e), w(-1), e.trim() && !
|
|
131
|
-
},
|
|
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
|
-
},
|
|
142
|
-
l || c(!
|
|
142
|
+
}, ce = () => {
|
|
143
|
+
l || c(!f);
|
|
143
144
|
};
|
|
144
|
-
|
|
145
|
-
toggleDropdown:
|
|
145
|
+
ve(X, () => ({
|
|
146
|
+
toggleDropdown: ce
|
|
146
147
|
}), []);
|
|
147
|
-
const
|
|
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
|
-
},
|
|
162
|
+
}, pe = () => {
|
|
162
163
|
R.current = !0;
|
|
163
164
|
const t = r.map((e) => e.value);
|
|
164
165
|
i?.(t), c(!1);
|
|
165
|
-
},
|
|
166
|
+
}, me = () => {
|
|
166
167
|
p([]);
|
|
167
|
-
},
|
|
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(
|
|
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
|
-
},
|
|
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:
|
|
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:
|
|
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
|
-
},
|
|
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:
|
|
209
|
-
}, /* @__PURE__ */ a.createElement(
|
|
210
|
-
ref:
|
|
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 &&
|
|
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({},
|
|
222
|
+
}) => /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement("div", g({}, ne, {
|
|
221
223
|
className: "dropdown-with-input-tags-content"
|
|
222
|
-
},
|
|
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,
|
|
228
|
+
const P = T === n, fe = O(n, !1);
|
|
227
229
|
return /* @__PURE__ */ a.createElement("div", g({
|
|
228
230
|
key: e.id
|
|
229
|
-
},
|
|
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 (
|
|
238
|
-
return
|
|
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) :
|
|
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))),
|
|
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:
|
|
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(
|
|
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: () =>
|
|
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:
|
|
272
|
-
onKeyDown:
|
|
273
|
-
onFocus:
|
|
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
|
-
|
|
286
|
+
_e as DropdownWithInputTags
|
|
285
287
|
};
|
|
286
288
|
//# sourceMappingURL=index38.js.map
|