@lax-wp/design-system 0.13.33 → 0.13.34
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/components/button/Button.cjs.js +5 -5
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.es.js +18 -18
- package/dist/components/button/Button.es.js.map +1 -1
- package/dist/components/button/IconButton.cjs.js +1 -1
- package/dist/components/button/IconButton.cjs.js.map +1 -1
- package/dist/components/button/IconButton.es.js +8 -8
- package/dist/components/button/IconButton.es.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.es.js +13 -13
- package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
- package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
- package/dist/components/data-display/infinite-table/constants.es.js +17 -16
- package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +188 -187
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
- package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
- package/dist/components/data-display/tag/Tag.cjs.js +1 -1
- package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
- package/dist/components/data-display/tag/Tag.es.js +11 -9
- package/dist/components/data-display/tag/Tag.es.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.es.js +9 -9
- package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.es.js +40 -42
- package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +14 -15
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.es.js +57 -65
- package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +33 -33
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
- package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js +7 -7
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +17 -19
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/field-options/Item.cjs.js +1 -1
- package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
- package/dist/components/forms/field-options/Item.es.js +5 -5
- package/dist/components/forms/field-options/Item.es.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.es.js +10 -10
- package/dist/components/forms/formula-input/FormulaInput.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/input-field/InputField.cjs.js.map +1 -1
- package/dist/components/forms/input-field/InputField.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +54 -60
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
- package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
- package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +2 -2
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +20 -20
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
- package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
- package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.d.ts +4 -0
- package/dist/components/forms/select-field/SelectField.es.js +202 -203
- package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.es.js +14 -14
- package/dist/components/forms/text-area-field/TextAreaField.es.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.es.js +65 -59
- package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.es.js +5 -5
- package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
- package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
- package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
- package/dist/components/tooltip/Tooltip.es.js +19 -19
- package/dist/components/tooltip/Tooltip.es.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
- package/dist/components/user-avatar/UserAvatar.es.js +40 -38
- package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
- package/dist/components/user-avatar/constants.cjs.js +1 -1
- package/dist/components/user-avatar/constants.cjs.js.map +1 -1
- package/dist/components/user-avatar/constants.d.ts +1 -0
- package/dist/components/user-avatar/constants.es.js +10 -9
- package/dist/components/user-avatar/constants.es.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectField.cjs.js","sources":["../../../../src/components/forms/select-field/SelectField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Select as AntDSelect, Skeleton } from \"antd\";\nimport type { SelectProps } from \"antd\";\nimport \"./SelectField.css\";\nimport classNames from \"classnames\";\nimport debounce from \"lodash/debounce\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { Tag } from \"../../data-display/tag/Tag\";\nimport { BoltOutlined, NoteAddOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\n};\n\n/**\n * Label-value pair for select options\n */\nexport type TLabelValue = { label: string; value: string; icon?: JSX.Element };\n\n/**\n * Select option interface\n */\nexport interface SelectOption {\n label: string | any;\n value: string | number;\n color?: string;\n}\n\ntype TagRender = SelectProps[\"tagRender\"];\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the SelectField component\n */\nexport interface SelectFieldProps extends Omit<SelectProps, \"onChange\"> {\n /** Select mode - multiple or tags */\n mode?: \"multiple\" | \"tags\";\n /** The label text to display above the select */\n label?: string | ReactNode;\n /** Current value of the select */\n value?: string | string[] | SelectOption | SelectOption[] | any;\n /** Array of select options */\n selectOptions?: SelectOption[];\n /** Whether content is loading */\n hasContentLoading?: boolean;\n /** Callback function called when the select value changes */\n onChange?: (value: any) => void;\n /** Callback function for search */\n onSearch?: (searchValue: string) => void;\n /** Callback function for scroll */\n onScroll?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** Callback function for input change */\n onInputChange?: (newValue: string) => void;\n /** Debounce timeout for search */\n debounceTimeout?: number;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether this is a GTN (Global Technical Name) field */\n isGTN?: boolean;\n /** GTN name for the field */\n gtnName?: any;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Whether the field is hovered */\n isHovered?: boolean;\n /** Whether to enable filter option */\n filterOption?: boolean;\n /** Whether the select is loading */\n isLoading?: boolean;\n /** Whether to auto clear search value */\n autoClearSearchValue?: boolean;\n /** Whether to show label with full opacity */\n fullOpacityLabel?: boolean;\n /** Color for the select */\n color?: string;\n /** Whether to show all tags */\n showAllTags?: boolean;\n /** Custom tag render function */\n customTagRender?: TagRender;\n /** Custom inline styles for the select */\n inputStyles?: React.CSSProperties;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether to show select all option */\n showSelectAll?: boolean;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Add to document icon component */\n AddToDocumentIcon?: React.ComponentType<{\n fontSize?: number;\n color?: string;\n }>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n /** User avatar component for option rendering */\n UserAvatar?: React.ComponentType<{\n firstName: string;\n lastName: string;\n profilePic: string;\n size: string;\n enablePopper: boolean;\n userId: string;\n }>;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\n}\n\n/**\n * Parse value type alias for return type\n */\ntype ParsedValue = string | number | string[] | number[] | SelectOption | null;\n\n/**\n * Parse value to the correct format for Ant Design Select\n */\nconst parseValue = (\n value: string | string[] | SelectOption | SelectOption[]\n): ParsedValue => {\n if (Array.isArray(value)) {\n return value.map((item) =>\n typeof item === \"string\" || typeof item === \"number\" ? item : item.value\n ) as string[] | number[];\n }\n\n return value || null;\n};\n\n/**\n * Remove duplicate options\n */\nconst removeDuplicates = (arr: any[]) => {\n return arr.filter(\n (item: { value: any; label: any }, index: any, self: any[]) => {\n return (\n self.findIndex(\n (t: { value: any; label: any }) =>\n t.value === item.value && t.label === item.label\n ) === index\n );\n }\n );\n};\n\n/**\n * Prepare options from various input formats\n */\nconst prepareOptions = ({\n options,\n value,\n defaultValue,\n}: {\n options?: SelectOption[];\n value: string | string[] | SelectOption | SelectOption[];\n defaultValue?: string | string[] | SelectOption | SelectOption[];\n}): SelectOption[] => {\n if (options?.length) {\n return removeDuplicates(\n options.map((opt) => ({ ...opt, color: opt.color }))\n );\n }\n\n if (\n Array.isArray(value) &&\n value.length &&\n typeof value[0] === \"object\" &&\n \"label\" in value[0]\n ) {\n return value.map((item: any) => ({\n label: String(item?.label || \"\"),\n value: String(item?.value || \"\"),\n color: item?.color,\n }));\n }\n\n if (value && typeof value === \"object\" && \"label\" in value) {\n return [\n {\n label: String((value as any).label || \"\"),\n value: String((value as any).value || \"\"),\n color: (value as any)?.color,\n },\n ];\n }\n\n if (\n Array.isArray(defaultValue) &&\n defaultValue.length &&\n typeof defaultValue[0] === \"object\" &&\n \"label\" in defaultValue[0]\n ) {\n return defaultValue.map((item: any) => ({\n label: String(item?.label || \"\"),\n value: String(item?.value || \"\"),\n color: item?.color,\n }));\n }\n\n if (\n defaultValue &&\n typeof defaultValue === \"object\" &&\n \"label\" in defaultValue\n ) {\n return [\n {\n label: String((defaultValue as any).label || \"\"),\n value: String((defaultValue as any).value || \"\"),\n color: (defaultValue as any)?.color,\n },\n ];\n }\n\n return [];\n};\n\n/**\n * Loading indicator component for select dropdown\n */\nconst LoadingIndicator = ({\n hasExistingData,\n}: {\n hasExistingData: boolean;\n}) => (\n <div className=\"!w-full px-3 py-1.5\">\n {hasExistingData ? (\n <Skeleton paragraph={{ rows: 1, width: \"100%\" }} />\n ) : (\n <Skeleton />\n )}\n </div>\n);\n\n/**\n * Props for SelectPopupRender component\n */\ninterface SelectPopupRenderProps {\n showSelectAll: boolean;\n mode?: \"multiple\" | \"tags\";\n options: SelectOption[];\n searchValue: string;\n handleSelectAll: () => void;\n isAllSelected: boolean;\n menu: ReactNode;\n isLoading: boolean;\n hasExistingData: boolean;\n t: (key: string) => string;\n}\n\n/**\n * SelectPopupRender component - Renders the custom popup content for the select dropdown\n */\nconst SelectPopupRender = ({\n showSelectAll,\n mode,\n options,\n searchValue,\n handleSelectAll,\n isAllSelected,\n menu,\n isLoading,\n hasExistingData,\n t,\n}: SelectPopupRenderProps) => (\n <>\n {showSelectAll &&\n mode === \"multiple\" &&\n options.length > 0 &&\n searchValue.trim().length === 0 && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"px-3 py-2 border-b border-gray-200 dark:border-gray-600 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700\"\n onClick={(e) => {\n e.stopPropagation();\n handleSelectAll();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelectAll();\n }\n }}\n >\n <Typography\n size=\"small\"\n variant=\"semibold\"\n className=\"text-primary-600 dark:text-primary-300\"\n appearance=\"custom\"\n >\n {isAllSelected ? t(\"Deselect all\") : t(\"Select all\")}\n </Typography>\n </div>\n )}\n {menu}\n {isLoading && <LoadingIndicator hasExistingData={hasExistingData} />}\n </>\n);\n\n/**\n * SelectField component - A feature-rich select dropdown with multi-select, tags, search, and more\n *\n * @example\n * ```tsx\n * <SelectField\n * label=\"Country\"\n * value=\"us\"\n * selectOptions={[\n * { label: 'United States', value: 'us' },\n * { label: 'Canada', value: 'ca' }\n * ]}\n * onChange={(value) => console.log(value)}\n * />\n *\n * <SelectField\n * label=\"Tags\"\n * mode=\"multiple\"\n * value={['tag1', 'tag2']}\n * selectOptions={tagOptions}\n * onChange={(values) => console.log(values)}\n * />\n * ```\n */\nexport const SelectField = forwardRef<HTMLDivElement, SelectFieldProps>(\n (\n {\n label,\n value: valueProp,\n mode,\n errorMessage,\n selectOptions = [],\n required = false,\n tags,\n className,\n onInputChange,\n tooltip,\n originalCase = false,\n isAiExtracted = false,\n confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\n isGTN = false,\n gtnName: _gtnName = null,\n onChange,\n onSearch,\n debounceTimeout = 500,\n filterOption = true,\n onScroll,\n isLoading = false,\n allowClear = true,\n autoClearSearchValue = true,\n fullOpacityLabel: _fullOpacityLabel = false,\n showAllTags = false,\n customTagRender,\n inputStyles: _inputStyles,\n disabled = false,\n showSelectAll = false,\n labelClassName,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n AddToDocumentIcon: _AddToDocumentIcon,\n primaryColorShades: _primaryColorShades,\n UserAvatar,\n onAddGTNToDocument,\n isRequiredConditional,\n isLiveField = false,\n labelExtra,\n inputEmphasis = \"default\",\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHoveredState, setIsHoveredState] = useState(false);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const selectRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n\n useEffect(() => {\n const styleId = \"select-field-scrollbar-styles\";\n if (document.getElementById(styleId)) return;\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = `\n [class*=\"virtual-list-scrollbar\"]:not([class*=\"thumb\"]) {\n width: 8px !important;\n background: transparent !important;\n }\n [class*=\"virtual-list-scrollbar-thumb\"] {\n background: rgba(0, 0, 0, 0.2) !important;\n border-radius: 6px !important;\n }\n .dark [class*=\"virtual-list-scrollbar-thumb\"] {\n background: #454545 !important;\n }\n `;\n document.head.appendChild(style);\n }, []);\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n let _value: string = \"\";\n\n if (value == null) {\n _value = \"\";\n } else if (typeof value === \"string\" || typeof value === \"number\") {\n _value = String(value);\n } else if (Array.isArray(value)) {\n // If array of SelectOption, string, or number\n _value = value\n .map((item) =>\n typeof item === \"object\" && item !== null && \"value\" in item\n ? (item as { value: string | number }).value\n : item\n )\n .join(\", \");\n } else if (typeof value === \"object\" && \"value\" in value) {\n _value = String(value.value);\n }\n\n const keyValuePair = {\n key: _gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const value = parseValue(valueProp);\n const debounceFetcher = useMemo(\n () => (onSearch ? debounce(onSearch, debounceTimeout) : null),\n [onSearch, debounceTimeout]\n );\n\n const handleChange = (\n _newValue: string | string[],\n selectedOptions: any\n ) => {\n if (selectRef.current && props.id) {\n const containerElement = document.getElementById(props.id);\n if (containerElement) {\n const valueToStore = Array.isArray(selectedOptions)\n ? selectedOptions.map((opt: any) => opt.value)\n : selectedOptions?.value;\n\n containerElement.dataset.selectedValue = JSON.stringify(valueToStore);\n const changeEvent = new Event(\"change\", { bubbles: true });\n\n Object.defineProperty(changeEvent, \"target\", {\n writable: false,\n value: containerElement,\n });\n\n containerElement.dispatchEvent(changeEvent);\n\n const pilotEvent = new CustomEvent(\"pilot-change\", {\n bubbles: true,\n detail: {\n selector: `#${props.id}`,\n value: valueToStore,\n type: \"change\",\n },\n });\n containerElement.dispatchEvent(pilotEvent);\n }\n }\n\n if (mode === \"tags\") {\n const _values = Array.isArray(_newValue) ? _newValue : [_newValue];\n onChange?.(_values?.map((item) => ({ label: item, value: item })));\n } else {\n onChange?.(selectedOptions);\n }\n };\n\n const options = prepareOptions({\n options: selectOptions,\n value: valueProp,\n defaultValue: props?.defaultValue,\n });\n\n const hasExistingData = useMemo(() => {\n return options.length > 0 || (value !== null && value !== undefined);\n }, [options, value]);\n\n const isAllSelected = useMemo(() => {\n if (!mode || mode !== \"multiple\" || options.length === 0) return false;\n\n const currentValues = Array.isArray(value) ? value : [];\n const allOptionValues = options.map((option) => option.value);\n\n return allOptionValues.every((optionValue) =>\n currentValues.some((currentValue: any) =>\n typeof currentValue === \"object\" &&\n currentValue !== null &&\n \"value\" in currentValue\n ? String(currentValue.value) === String(optionValue)\n : String(currentValue) === String(optionValue)\n )\n );\n }, [value, options, mode]);\n\n const handleSelectAll = () => {\n if (!mode || mode !== \"multiple\" || !onChange) return;\n\n onChange(isAllSelected ? [] : options);\n };\n\n const triggerSubmit = useCallback((formEl: HTMLFormElement | null) => {\n if (!formEl) return;\n\n const submitEvent = new Event(\"submit\", {\n bubbles: true,\n cancelable: true,\n });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>(\n 'button[type=\"submit\"]'\n );\n if (submitBtn) {\n submitBtn.click();\n }\n }, []);\n\n const handleKeyDownCapture = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !isDropdownOpen) {\n e.preventDefault();\n e.stopPropagation();\n\n if (value) {\n const form = e.currentTarget.closest(\"form\") as HTMLFormElement;\n triggerSubmit(form);\n }\n }\n },\n [isDropdownOpen, value, triggerSubmit]\n );\n\n const tagRender: TagRender = useCallback(\n (renderProps: any) => {\n const { label: tagLabel, value: tagValue, onClose } = renderProps;\n\n const option = options.find(\n (opt) => String(opt.value) === String(tagValue)\n );\n const tagColor = option?.color || \"primary\";\n\n const onPreventMouseDown = (\n event: React.MouseEvent<HTMLSpanElement>\n ) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n <div className=\"cursor-pointer me-1 inline-flex\">\n <Tag\n label={tagLabel as string}\n color={tagColor}\n className=\"!px-0.5 !py-0 !rounded\"\n size=\"md\"\n onMouseDown={onPreventMouseDown}\n onClick={disabled ? undefined : onClose}\n isHashColor\n removable\n onRemove={onClose}\n />\n </div>\n );\n },\n [options, disabled]\n );\n\n const handleOnInputChange = useCallback(\n (value: string) => {\n setSearchValue(value);\n (onInputChange || debounceFetcher)?.(value);\n },\n [onInputChange, debounceFetcher]\n );\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"flex gap-0.5 w-full relative\",\n isHoveredState && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHoveredState(true)}\n onMouseLeave={() => setIsHoveredState(false)}\n id={props.id}\n >\n {isGTN && !isHoveredState ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div\n className={classNames(\n \"w-full flex flex-col gap-1 risk-analysis-select-field\",\n className\n )}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDownCapture={handleKeyDownCapture}\n role=\"group\"\n aria-labelledby={label ? \"select-field-label\" : undefined}\n >\n {label ? (\n <label\n id=\"select-field-label\"\n htmlFor=\"label\"\n className={`text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"} ${\n labelClassName || \"\"\n }`}\n >\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel\n label={label || \"\"}\n required={required || false}\n isRequiredConditional={isRequiredConditional || false}\n />\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div\n className=\"cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n // Tooltip will show on focus\n }\n }}\n >\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={classNames(\n \"inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={classNames(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\n {isGTN && isHoveredState ? (\n <button\n id=\"btn-select-field-base-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <Tooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{ fontSize: 16 }}\n />\n </Tooltip>\n </button>\n ) : null}\n </div>\n </div>\n </label>\n ) : null}\n <AntDSelect\n onOpenChange={setIsDropdownOpen}\n disabled={disabled}\n className={`w-full text-black-900 dark:text-black-200 ${errorMessage && required ? \"ant-select-status-error\" : \"#e2e8f0\"} ${\n isRiskAnalysisOpen && riskDetails?.color\n ? \"risk-select-field\"\n : \"\"\n } ${\n emphasisModifiedSkin ? \"select-field-emphasis-modified\" :\n emphasisDeletedSkin ? \"select-field-emphasis-deleted\" :\n emphasisSuccessSkin ? \"select-field-emphasis-success\" : \"\"\n }`}\n classNames={{\n popup: {\n root: \"!z-[5001]\",\n },\n }}\n style={\n {\n width: \"100%\",\n \"--risk-color\":\n isRiskAnalysisOpen && riskDetails?.hexBgColor\n ? riskDetails?.hexBgColor\n : \"\",\n \"--risk-border-color\":\n isRiskAnalysisOpen && riskDetails?.hexBorderColor\n ? riskDetails?.hexBorderColor\n : \"\",\n } as React.CSSProperties\n }\n aria-required={required}\n mode={mode}\n value={value as string | string[] | null | undefined}\n onChange={handleChange}\n filterOption={\n onSearch\n ? filterOption\n : (input, option) =>\n ((option?.label as string) || \"\")\n ?.toLowerCase()\n ?.includes(input?.toLowerCase())\n }\n showSearch\n onSearch={handleOnInputChange || undefined}\n onPopupScroll={onScroll}\n popupClassName=\"select-field-dropdown-popup\"\n popupRender={(menu) => (\n <SelectPopupRender\n showSelectAll={showSelectAll}\n mode={mode}\n options={options}\n searchValue={searchValue}\n handleSelectAll={handleSelectAll}\n isAllSelected={isAllSelected}\n menu={menu}\n isLoading={isLoading}\n hasExistingData={hasExistingData}\n t={t}\n />\n )}\n options={options.map(\n ({\n label: optionLabel,\n value: optionValue,\n color: optionColor,\n ...rest\n }) => ({\n label: String(optionLabel),\n value: String(optionValue),\n key: String(optionValue),\n id: String(optionValue),\n color: optionColor,\n ...rest,\n })\n )}\n optionRender={(option) => {\n const fullname = option?.data?.fullname;\n\n if (fullname && UserAvatar) {\n const [firstName, lastName] = fullname.split(\" \");\n\n return (\n <div className=\"flex items-center justify-start gap-1\">\n <UserAvatar\n firstName={firstName}\n lastName={lastName}\n profilePic={option?.data?.url || \"\"}\n size=\"xs\"\n enablePopper={true}\n userId={option?.data?.value as string}\n />\n <span className=\"ml-2\">{option.label}</span>\n </div>\n );\n }\n return <span>{option.label}</span>;\n }}\n autoClearSearchValue={autoClearSearchValue}\n onClear={() =>\n onChange &&\n onChange(mode === \"tags\" || mode === \"multiple\" ? [] : null)\n }\n maxTagCount={\n mode === \"tags\" && showAllTags ? undefined : \"responsive\"\n }\n maxTagPlaceholder={(omittedValues) => (\n <Tooltip\n placement=\"top\"\n title={\n omittedValues.length > 3\n ? omittedValues\n .slice(0, 3)\n .map(({ label: l }) => l)\n .join(\", \") + \"...\"\n : omittedValues.map(({ label: l }) => l).join(\", \")\n }\n >\n <span>+{omittedValues.length} more</span>\n </Tooltip>\n )}\n tagRender={customTagRender || tagRender}\n allowClear={allowClear}\n {...props}\n />\n {errorMessage && (\n <Typography\n className=\"text-error-500\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHoveredState &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHoveredState(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nSelectField.displayName = \"SelectField\";\n"],"names":["parseValue","value","item","removeDuplicates","arr","index","self","t","prepareOptions","options","defaultValue","opt","LoadingIndicator","hasExistingData","Skeleton","jsx","SelectPopupRender","showSelectAll","mode","searchValue","handleSelectAll","isAllSelected","menu","isLoading","jsxs","Fragment","e","Typography","SelectField","forwardRef","label","valueProp","errorMessage","selectOptions","required","tags","className","onInputChange","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","_gtnName","onChange","onSearch","debounceTimeout","filterOption","onScroll","allowClear","autoClearSearchValue","_fullOpacityLabel","showAllTags","customTagRender","_inputStyles","disabled","labelClassName","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","_AddToDocumentIcon","_primaryColorShades","UserAvatar","onAddGTNToDocument","isRequiredConditional","isLiveField","labelExtra","inputEmphasis","props","ref","useTranslation","isHoveredState","setIsHoveredState","useState","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","selectRef","useRef","isDropdownOpen","setIsDropdownOpen","setSearchValue","useEffect","styleId","style","handleAddGTNToDocument","_value","debounceFetcher","useMemo","debounce","handleChange","_newValue","selectedOptions","containerElement","valueToStore","changeEvent","pilotEvent","_values","currentValues","option","optionValue","currentValue","triggerSubmit","useCallback","formEl","submitEvent","submitBtn","handleKeyDownCapture","form","tagRender","renderProps","tagLabel","tagValue","onClose","tagColor","onPreventMouseDown","event","Tag","handleOnInputChange","classNames","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","Tooltip","HelpIcon","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","AntDSelect","input","optionLabel","optionColor","rest","fullname","firstName","lastName","omittedValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectField.cjs.js","sources":["../../../../src/components/forms/select-field/SelectField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Select as AntDSelect, Skeleton } from \"antd\";\nimport type { SelectProps } from \"antd\";\nimport \"./SelectField.css\";\nimport classNames from \"classnames\";\nimport debounce from \"lodash/debounce\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { Tag } from \"../../data-display/tag/Tag\";\nimport { BoltOutlined, NoteAddOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\n/** Height size variant for the select trigger. Maps to a Tailwind min-height class. */\nexport type SelectFieldInputSize = \"sm\" | \"md\" | \"lg\";\n\nconst INPUT_SIZE_CLASS: Record<SelectFieldInputSize, string> = {\n sm: \"[&_.ant-select-selector]:!min-h-6\", // 24px\n md: \"[&_.ant-select-selector]:!min-h-8\", // 32px\n lg: \"[&_.ant-select-selector]:!min-h-10\", // 40px\n};\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\n};\n\n/**\n * Label-value pair for select options\n */\nexport type TLabelValue = { label: string; value: string; icon?: JSX.Element };\n\n/**\n * Select option interface\n */\nexport interface SelectOption {\n label: string | any;\n value: string | number;\n color?: string;\n}\n\ntype TagRender = SelectProps[\"tagRender\"];\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the SelectField component\n */\nexport interface SelectFieldProps extends Omit<SelectProps, \"onChange\"> {\n /** Select mode - multiple or tags */\n mode?: \"multiple\" | \"tags\";\n /** The label text to display above the select */\n label?: string | ReactNode;\n /** Current value of the select */\n value?: string | string[] | SelectOption | SelectOption[] | any;\n /** Array of select options */\n selectOptions?: SelectOption[];\n /** Whether content is loading */\n hasContentLoading?: boolean;\n /** Callback function called when the select value changes */\n onChange?: (value: any) => void;\n /** Callback function for search */\n onSearch?: (searchValue: string) => void;\n /** Callback function for scroll */\n onScroll?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** Callback function for input change */\n onInputChange?: (newValue: string) => void;\n /** Debounce timeout for search */\n debounceTimeout?: number;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether this is a GTN (Global Technical Name) field */\n isGTN?: boolean;\n /** GTN name for the field */\n gtnName?: any;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Whether the field is hovered */\n isHovered?: boolean;\n /** Whether to enable filter option */\n filterOption?: boolean;\n /** Whether the select is loading */\n isLoading?: boolean;\n /** Whether to auto clear search value */\n autoClearSearchValue?: boolean;\n /** Whether to show label with full opacity */\n fullOpacityLabel?: boolean;\n /** Color for the select */\n color?: string;\n /** Whether to show all tags */\n showAllTags?: boolean;\n /** Custom tag render function */\n customTagRender?: TagRender;\n /** Custom inline styles for the select */\n inputStyles?: React.CSSProperties;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether to show select all option */\n showSelectAll?: boolean;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Add to document icon component */\n AddToDocumentIcon?: React.ComponentType<{\n fontSize?: number;\n color?: string;\n }>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n /** User avatar component for option rendering */\n UserAvatar?: React.ComponentType<{\n firstName: string;\n lastName: string;\n profilePic: string;\n size: string;\n enablePopper: boolean;\n userId: string;\n }>;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\n /** Height size of the select trigger. `'sm'` = 24px, `'md'` = 32px (default), `'lg'` = 40px. */\n inputSize?: SelectFieldInputSize;\n}\n\n/**\n * Parse value type alias for return type\n */\ntype ParsedValue = string | number | string[] | number[] | SelectOption | null;\n\n/**\n * Parse value to the correct format for Ant Design Select\n */\nconst parseValue = (\n value: string | string[] | SelectOption | SelectOption[]\n): ParsedValue => {\n if (Array.isArray(value)) {\n return value.map((item) =>\n typeof item === \"string\" || typeof item === \"number\" ? item : item.value\n ) as string[] | number[];\n }\n\n return value || null;\n};\n\n/**\n * Remove duplicate options\n */\nconst removeDuplicates = (arr: any[]) => {\n return arr.filter(\n (item: { value: any; label: any }, index: any, self: any[]) => {\n return (\n self.findIndex(\n (t: { value: any; label: any }) =>\n t.value === item.value && t.label === item.label\n ) === index\n );\n }\n );\n};\n\n/**\n * Prepare options from various input formats\n */\nconst prepareOptions = ({\n options,\n value,\n defaultValue,\n}: {\n options?: SelectOption[];\n value: string | string[] | SelectOption | SelectOption[];\n defaultValue?: string | string[] | SelectOption | SelectOption[];\n}): SelectOption[] => {\n if (options?.length) {\n return removeDuplicates(\n options.map((opt) => ({ ...opt, color: opt.color }))\n );\n }\n\n if (\n Array.isArray(value) &&\n value.length &&\n typeof value[0] === \"object\" &&\n \"label\" in value[0]\n ) {\n return value.map((item: any) => ({\n label: String(item?.label || \"\"),\n value: String(item?.value || \"\"),\n color: item?.color,\n }));\n }\n\n if (value && typeof value === \"object\" && \"label\" in value) {\n return [\n {\n label: String((value as any).label || \"\"),\n value: String((value as any).value || \"\"),\n color: (value as any)?.color,\n },\n ];\n }\n\n if (\n Array.isArray(defaultValue) &&\n defaultValue.length &&\n typeof defaultValue[0] === \"object\" &&\n \"label\" in defaultValue[0]\n ) {\n return defaultValue.map((item: any) => ({\n label: String(item?.label || \"\"),\n value: String(item?.value || \"\"),\n color: item?.color,\n }));\n }\n\n if (\n defaultValue &&\n typeof defaultValue === \"object\" &&\n \"label\" in defaultValue\n ) {\n return [\n {\n label: String((defaultValue as any).label || \"\"),\n value: String((defaultValue as any).value || \"\"),\n color: (defaultValue as any)?.color,\n },\n ];\n }\n\n return [];\n};\n\n/**\n * Loading indicator component for select dropdown\n */\nconst LoadingIndicator = ({\n hasExistingData,\n}: {\n hasExistingData: boolean;\n}) => (\n <div className=\"!w-full px-3 py-1.5\">\n {hasExistingData ? (\n <Skeleton paragraph={{ rows: 1, width: \"100%\" }} />\n ) : (\n <Skeleton />\n )}\n </div>\n);\n\n/**\n * Props for SelectPopupRender component\n */\ninterface SelectPopupRenderProps {\n showSelectAll: boolean;\n mode?: \"multiple\" | \"tags\";\n options: SelectOption[];\n searchValue: string;\n handleSelectAll: () => void;\n isAllSelected: boolean;\n menu: ReactNode;\n isLoading: boolean;\n hasExistingData: boolean;\n t: (key: string) => string;\n}\n\n/**\n * SelectPopupRender component - Renders the custom popup content for the select dropdown\n */\nconst SelectPopupRender = ({\n showSelectAll,\n mode,\n options,\n searchValue,\n handleSelectAll,\n isAllSelected,\n menu,\n isLoading,\n hasExistingData,\n t,\n}: SelectPopupRenderProps) => (\n <>\n {showSelectAll &&\n mode === \"multiple\" &&\n options.length > 0 &&\n searchValue.trim().length === 0 && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"px-3 py-2 border-b border-gray-200 dark:border-gray-600 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700\"\n onClick={(e) => {\n e.stopPropagation();\n handleSelectAll();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelectAll();\n }\n }}\n >\n <Typography\n size=\"small\"\n variant=\"semibold\"\n className=\"text-primary-600 dark:text-primary-300\"\n appearance=\"custom\"\n >\n {isAllSelected ? t(\"Deselect all\") : t(\"Select all\")}\n </Typography>\n </div>\n )}\n {menu}\n {isLoading && <LoadingIndicator hasExistingData={hasExistingData} />}\n </>\n);\n\n/**\n * SelectField component - A feature-rich select dropdown with multi-select, tags, search, and more\n *\n * @example\n * ```tsx\n * <SelectField\n * label=\"Country\"\n * value=\"us\"\n * selectOptions={[\n * { label: 'United States', value: 'us' },\n * { label: 'Canada', value: 'ca' }\n * ]}\n * onChange={(value) => console.log(value)}\n * />\n *\n * <SelectField\n * label=\"Tags\"\n * mode=\"multiple\"\n * value={['tag1', 'tag2']}\n * selectOptions={tagOptions}\n * onChange={(values) => console.log(values)}\n * />\n * ```\n */\nexport const SelectField = forwardRef<HTMLDivElement, SelectFieldProps>(\n (\n {\n label,\n value: valueProp,\n mode,\n errorMessage,\n selectOptions = [],\n required = false,\n tags,\n className,\n onInputChange,\n tooltip,\n originalCase = false,\n isAiExtracted = false,\n confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\n isGTN = false,\n gtnName: _gtnName = null,\n onChange,\n onSearch,\n debounceTimeout = 500,\n filterOption = true,\n onScroll,\n isLoading = false,\n allowClear = true,\n autoClearSearchValue = true,\n fullOpacityLabel: _fullOpacityLabel = false,\n showAllTags = false,\n customTagRender,\n inputStyles: _inputStyles,\n disabled = false,\n showSelectAll = false,\n labelClassName,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n AddToDocumentIcon: _AddToDocumentIcon,\n primaryColorShades: _primaryColorShades,\n UserAvatar,\n onAddGTNToDocument,\n isRequiredConditional,\n isLiveField = false,\n labelExtra,\n inputEmphasis = \"default\",\n inputSize = \"md\",\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHoveredState, setIsHoveredState] = useState(false);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !(isRiskAnalysisOpen && riskDetails?.color);\n const selectRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n\n useEffect(() => {\n const styleId = \"select-field-scrollbar-styles\";\n if (document.getElementById(styleId)) return;\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = `\n [class*=\"virtual-list-scrollbar\"]:not([class*=\"thumb\"]) {\n width: 8px !important;\n background: transparent !important;\n }\n [class*=\"virtual-list-scrollbar-thumb\"] {\n background: rgba(0, 0, 0, 0.2) !important;\n border-radius: 6px !important;\n }\n .dark [class*=\"virtual-list-scrollbar-thumb\"] {\n background: #454545 !important;\n }\n `;\n document.head.appendChild(style);\n }, []);\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n let _value: string = \"\";\n\n if (value == null) {\n _value = \"\";\n } else if (typeof value === \"string\" || typeof value === \"number\") {\n _value = String(value);\n } else if (Array.isArray(value)) {\n // If array of SelectOption, string, or number\n _value = value\n .map((item) =>\n typeof item === \"object\" && item !== null && \"value\" in item\n ? (item as { value: string | number }).value\n : item\n )\n .join(\", \");\n } else if (typeof value === \"object\" && \"value\" in value) {\n _value = String(value.value);\n }\n\n const keyValuePair = {\n key: _gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const value = parseValue(valueProp);\n const debounceFetcher = useMemo(\n () => (onSearch ? debounce(onSearch, debounceTimeout) : null),\n [onSearch, debounceTimeout]\n );\n\n const handleChange = (\n _newValue: string | string[],\n selectedOptions: any\n ) => {\n if (selectRef.current && props.id) {\n const containerElement = document.getElementById(props.id);\n if (containerElement) {\n const valueToStore = Array.isArray(selectedOptions)\n ? selectedOptions.map((opt: any) => opt.value)\n : selectedOptions?.value;\n\n containerElement.dataset.selectedValue = JSON.stringify(valueToStore);\n const changeEvent = new Event(\"change\", { bubbles: true });\n\n Object.defineProperty(changeEvent, \"target\", {\n writable: false,\n value: containerElement,\n });\n\n containerElement.dispatchEvent(changeEvent);\n\n const pilotEvent = new CustomEvent(\"pilot-change\", {\n bubbles: true,\n detail: {\n selector: `#${props.id}`,\n value: valueToStore,\n type: \"change\",\n },\n });\n containerElement.dispatchEvent(pilotEvent);\n }\n }\n\n if (mode === \"tags\") {\n const _values = Array.isArray(_newValue) ? _newValue : [_newValue];\n onChange?.(_values?.map((item) => ({ label: item, value: item })));\n } else {\n onChange?.(selectedOptions);\n }\n };\n\n const options = prepareOptions({\n options: selectOptions,\n value: valueProp,\n defaultValue: props?.defaultValue,\n });\n\n const hasExistingData = useMemo(() => {\n return options.length > 0 || (value !== null && value !== undefined);\n }, [options, value]);\n\n const isAllSelected = useMemo(() => {\n if (!mode || mode !== \"multiple\" || options.length === 0) return false;\n\n const currentValues = Array.isArray(value) ? value : [];\n const allOptionValues = options.map((option) => option.value);\n\n return allOptionValues.every((optionValue) =>\n currentValues.some((currentValue: any) =>\n typeof currentValue === \"object\" &&\n currentValue !== null &&\n \"value\" in currentValue\n ? String(currentValue.value) === String(optionValue)\n : String(currentValue) === String(optionValue)\n )\n );\n }, [value, options, mode]);\n\n const handleSelectAll = () => {\n if (!mode || mode !== \"multiple\" || !onChange) return;\n\n onChange(isAllSelected ? [] : options);\n };\n\n const triggerSubmit = useCallback((formEl: HTMLFormElement | null) => {\n if (!formEl) return;\n\n const submitEvent = new Event(\"submit\", {\n bubbles: true,\n cancelable: true,\n });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>(\n 'button[type=\"submit\"]'\n );\n if (submitBtn) {\n submitBtn.click();\n }\n }, []);\n\n const handleKeyDownCapture = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !isDropdownOpen) {\n e.preventDefault();\n e.stopPropagation();\n\n if (value) {\n const form = e.currentTarget.closest(\"form\") as HTMLFormElement;\n triggerSubmit(form);\n }\n }\n },\n [isDropdownOpen, value, triggerSubmit]\n );\n\n const tagRender: TagRender = useCallback(\n (renderProps: any) => {\n const { label: tagLabel, value: tagValue, onClose } = renderProps;\n\n const option = options.find(\n (opt) => String(opt.value) === String(tagValue)\n );\n const tagColor = option?.color || \"primary\";\n\n const onPreventMouseDown = (\n event: React.MouseEvent<HTMLSpanElement>\n ) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n <div className=\"cursor-pointer me-1 inline-flex\">\n <Tag\n label={tagLabel as string}\n color={tagColor}\n className=\"!px-0.5 !py-0 !rounded\"\n size=\"md\"\n onMouseDown={onPreventMouseDown}\n onClick={disabled ? undefined : onClose}\n isHashColor\n removable\n onRemove={onClose}\n />\n </div>\n );\n },\n [options, disabled]\n );\n\n const handleOnInputChange = useCallback(\n (value: string) => {\n setSearchValue(value);\n (onInputChange || debounceFetcher)?.(value);\n },\n [onInputChange, debounceFetcher]\n );\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"flex gap-0.5 w-full relative\",\n isHoveredState && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHoveredState(true)}\n onMouseLeave={() => setIsHoveredState(false)}\n id={props.id}\n >\n {isGTN && !isHoveredState ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div\n className={classNames(\n \"w-full flex flex-col gap-1 risk-analysis-select-field\",\n className\n )}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDownCapture={handleKeyDownCapture}\n role=\"group\"\n aria-labelledby={label ? \"select-field-label\" : undefined}\n >\n {label ? (\n <label\n id=\"select-field-label\"\n htmlFor=\"label\"\n className={`text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"} ${\n labelClassName || \"\"\n }`}\n >\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel\n label={label || \"\"}\n required={required || false}\n isRequiredConditional={isRequiredConditional || false}\n />\n {isLiveField && (\n <BoltOutlined className=\"!text-base text-primary-600 rotate-[15deg]\" />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div\n className=\"cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n // Tooltip will show on focus\n }\n }}\n >\n <HelpIcon className=\"w-icon-sm h-icon-sm\" />\n </div>\n </Tooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={classNames(\n \"inline-flex min-w-12 items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={classNames(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\n {isGTN && isHoveredState ? (\n <button\n id=\"btn-select-field-base-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <Tooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined className=\"!text-base text-primary-600\" />\n </Tooltip>\n </button>\n ) : null}\n </div>\n </div>\n </label>\n ) : null}\n <AntDSelect\n onOpenChange={setIsDropdownOpen}\n disabled={disabled}\n className={classNames(\n \"w-full h-8 flex items-center justify-center text-black-900 dark:text-black-200 text-sm\",\n INPUT_SIZE_CLASS[inputSize],\n errorMessage && required ? \"ant-select-status-error\" : \"\",\n isRiskAnalysisOpen && riskDetails?.color ? \"risk-select-field\" : \"\",\n emphasisModifiedSkin ? \"select-field-emphasis-modified\" :\n emphasisDeletedSkin ? \"select-field-emphasis-deleted\" :\n emphasisSuccessSkin ? \"select-field-emphasis-success\" : \"\"\n )}\n classNames={{\n popup: {\n root: \"!z-[5001]\",\n },\n }}\n style={\n {\n width: \"100%\",\n \"--risk-color\":\n isRiskAnalysisOpen && riskDetails?.hexBgColor\n ? riskDetails?.hexBgColor\n : \"\",\n \"--risk-border-color\":\n isRiskAnalysisOpen && riskDetails?.hexBorderColor\n ? riskDetails?.hexBorderColor\n : \"\",\n } as React.CSSProperties\n }\n aria-required={required}\n mode={mode}\n value={value as string | string[] | null | undefined}\n onChange={handleChange}\n filterOption={\n onSearch\n ? filterOption\n : (input, option) =>\n ((option?.label as string) || \"\")\n ?.toLowerCase()\n ?.includes(input?.toLowerCase())\n }\n showSearch\n onSearch={handleOnInputChange || undefined}\n onPopupScroll={onScroll}\n popupClassName=\"select-field-dropdown-popup\"\n popupRender={(menu) => (\n <SelectPopupRender\n showSelectAll={showSelectAll}\n mode={mode}\n options={options}\n searchValue={searchValue}\n handleSelectAll={handleSelectAll}\n isAllSelected={isAllSelected}\n menu={menu}\n isLoading={isLoading}\n hasExistingData={hasExistingData}\n t={t}\n />\n )}\n options={options.map(\n ({\n label: optionLabel,\n value: optionValue,\n color: optionColor,\n ...rest\n }) => ({\n label: String(optionLabel),\n value: String(optionValue),\n key: String(optionValue),\n id: String(optionValue),\n color: optionColor,\n ...rest,\n })\n )}\n optionRender={(option) => {\n const fullname = option?.data?.fullname;\n\n if (fullname && UserAvatar) {\n const [firstName, lastName] = fullname.split(\" \");\n\n return (\n <div className=\"flex items-center justify-start gap-1\">\n <UserAvatar\n firstName={firstName}\n lastName={lastName}\n profilePic={option?.data?.url || \"\"}\n size=\"xs\"\n enablePopper={true}\n userId={option?.data?.value as string}\n />\n <span className=\"ml-2\">{option.label}</span>\n </div>\n );\n }\n return <span>{option.label}</span>;\n }}\n autoClearSearchValue={autoClearSearchValue}\n onClear={() =>\n onChange &&\n onChange(mode === \"tags\" || mode === \"multiple\" ? [] : null)\n }\n maxTagCount={\n mode === \"tags\" && showAllTags ? undefined : \"responsive\"\n }\n maxTagPlaceholder={(omittedValues) => (\n <Tooltip\n placement=\"top\"\n title={\n omittedValues.length > 3\n ? omittedValues\n .slice(0, 3)\n .map(({ label: l }) => l)\n .join(\", \") + \"...\"\n : omittedValues.map(({ label: l }) => l).join(\", \")\n }\n >\n <span>+{omittedValues.length} more</span>\n </Tooltip>\n )}\n tagRender={customTagRender || tagRender}\n allowClear={allowClear}\n {...props}\n />\n {errorMessage && (\n <Typography\n className=\"text-error-500\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHoveredState &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHoveredState(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nSelectField.displayName = \"SelectField\";\n"],"names":["INPUT_SIZE_CLASS","parseValue","value","item","removeDuplicates","arr","index","self","t","prepareOptions","options","defaultValue","opt","LoadingIndicator","hasExistingData","Skeleton","jsx","SelectPopupRender","showSelectAll","mode","searchValue","handleSelectAll","isAllSelected","menu","isLoading","jsxs","Fragment","e","Typography","SelectField","forwardRef","label","valueProp","errorMessage","selectOptions","required","tags","className","onInputChange","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","_gtnName","onChange","onSearch","debounceTimeout","filterOption","onScroll","allowClear","autoClearSearchValue","_fullOpacityLabel","showAllTags","customTagRender","_inputStyles","disabled","labelClassName","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","_AddToDocumentIcon","_primaryColorShades","UserAvatar","onAddGTNToDocument","isRequiredConditional","isLiveField","labelExtra","inputEmphasis","inputSize","props","ref","useTranslation","isHoveredState","setIsHoveredState","useState","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","selectRef","useRef","isDropdownOpen","setIsDropdownOpen","setSearchValue","useEffect","styleId","style","handleAddGTNToDocument","_value","debounceFetcher","useMemo","debounce","handleChange","_newValue","selectedOptions","containerElement","valueToStore","changeEvent","pilotEvent","_values","currentValues","option","optionValue","currentValue","triggerSubmit","useCallback","formEl","submitEvent","submitBtn","handleKeyDownCapture","form","tagRender","renderProps","tagLabel","tagValue","onClose","tagColor","onPreventMouseDown","event","Tag","handleOnInputChange","classNames","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","Tooltip","HelpIcon","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","AntDSelect","input","optionLabel","optionColor","rest","fullname","firstName","lastName","omittedValues"],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import type { LabelType } from "../../data-display/label/Label";
|
|
|
6
6
|
* Confidence score type
|
|
7
7
|
*/
|
|
8
8
|
export type ConfidenceScoreType = "low" | "medium" | "high";
|
|
9
|
+
/** Height size variant for the select trigger. Maps to a Tailwind min-height class. */
|
|
10
|
+
export type SelectFieldInputSize = "sm" | "md" | "lg";
|
|
9
11
|
export type SourceMetaBBox = {
|
|
10
12
|
b: number;
|
|
11
13
|
l: number;
|
|
@@ -169,6 +171,8 @@ export interface SelectFieldProps extends Omit<SelectProps, "onChange"> {
|
|
|
169
171
|
labelExtra?: React.ReactNode;
|
|
170
172
|
/** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */
|
|
171
173
|
inputEmphasis?: "default" | "modified" | "deleted" | "success";
|
|
174
|
+
/** Height size of the select trigger. `'sm'` = 24px, `'md'` = 32px (default), `'lg'` = 40px. */
|
|
175
|
+
inputSize?: SelectFieldInputSize;
|
|
172
176
|
}
|
|
173
177
|
/**
|
|
174
178
|
* SelectField component - A feature-rich select dropdown with multi-select, tags, search, and more
|