@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.es.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","Tag","event","handleOnInputChange","classNames","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","Tooltip","HelpIcon","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","AntDSelect","input","optionLabel","optionColor","rest","fullname","firstName","lastName","omittedValues","l"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectField.es.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","Tag","event","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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),x=require("../../../_virtual/index.cjs.js"),q=require("react"),B=require("antd"),oe=require("react-i18next"),I=require("../../data-display/typography/Typography.cjs.js"),le=require("../../icons/HelpIcon.cjs.js"),ne=require("../../data-display/label/Label.cjs.js"),D=require("@mui/icons-material"),se=require("../../icons/AIExtractedIndicator.cjs.js"),de=require("../../icons/AIStarIcon.cjs.js"),ce=require("../shared/InputLabel.cjs.js"),ie=require("../../tooltip/Tooltip.cjs.js"),n=require("../../../utils/confidenceScoreUtils.cjs.js"),z=q.forwardRef(({label:K,placeholder:W,value:s,onChange:T,row:$=4,errorMessage:t,defaultValue:H,required:k,isRequiredConditional:P=!1,tags:R=[],disabled:d,className:O,inputRef:V,maxLength:l=void 0,tooltip:y="",originalCase:L=!1,isAiExtracted:U=!1,confidenceScore:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),x=require("../../../_virtual/index.cjs.js"),q=require("react"),B=require("antd"),oe=require("react-i18next"),I=require("../../data-display/typography/Typography.cjs.js"),le=require("../../icons/HelpIcon.cjs.js"),ne=require("../../data-display/label/Label.cjs.js"),D=require("@mui/icons-material"),se=require("../../icons/AIExtractedIndicator.cjs.js"),de=require("../../icons/AIStarIcon.cjs.js"),ce=require("../shared/InputLabel.cjs.js"),ie=require("../../tooltip/Tooltip.cjs.js"),n=require("../../../utils/confidenceScoreUtils.cjs.js"),z=q.forwardRef(({label:K,placeholder:W,value:s,onChange:T,row:$=4,errorMessage:t,defaultValue:H,required:k,isRequiredConditional:P=!1,tags:R=[],disabled:d,className:O,inputRef:V,maxLength:l=void 0,tooltip:y="",originalCase:L=!1,isAiExtracted:U=!1,confidenceScore:m,confidenceType:c="high",confidenceTooltip:f,sourceMeta:J=[],onConfidenceScoreClick:Q,isGTN:p=!1,gtnName:X="",noBorder:j=!1,id:w,inputStyle:S,labelClassName:Y,isLiveField:Z=!1,onBlur:M,riskDetails:a,isRiskAnalysisOpen:C=!1,RiskDetailsCard:E,onAddGTNToDocument:_,labelExtra:G,inputEmphasis:g="default",...N},ee)=>{const{t:re}=oe.useTranslation(),[b,h]=q.useState(!1),o=!!(C&&a?.color),v=g==="modified"&&!t&&!o,i=g==="deleted"&&!t&&!o,u=g==="success"&&!t&&!o,te=r=>{if(r.key==="Enter"&&!r.shiftKey){r.preventDefault();const F=r.target.closest("form");if(F){const A=F.querySelector('button[type="submit"]');A?A.click():F.requestSubmit()}}N.onKeyDown?.(r)},ae=()=>{_&&_({key:X,value:s||""})};return e.jsxs("div",{ref:ee,id:w,className:x("flex gap-0.5 relative",b&&p?"border rounded-lg border-primary-100 bg-primary-50 p-1":""),onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),children:[p&&!b?e.jsx("div",{className:"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5"}):null,e.jsxs("div",{className:x("w-full flex flex-col"),children:[e.jsx("label",{htmlFor:"text",className:`mb-1 text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${L?"":"capitalize"} ${Y||""}`,children:e.jsxs("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1",children:[e.jsxs("div",{className:"inline-flex min-w-0 items-center gap-1 flex-wrap",children:[e.jsx(ce.InputLabel,{label:K||"",required:k||!1,isRequiredConditional:P||!1}),Z&&e.jsx(D.BoltOutlined,{sx:{fontSize:16,color:"var(--color-primary-600)",rotate:"15deg"}}),U&&!n.shouldShowConfidenceScore(m)&&e.jsx(se.AIExtractedIndicator,{}),e.jsx(ne.Label,{labels:R||[]}),y&&e.jsx(B.Tooltip,{placement:"top",title:y,children:e.jsx("div",{className:"cursor-pointer",role:"button",tabIndex:0,onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&r.preventDefault()},children:e.jsx(le.HelpIcon,{className:"w-icon-sm h-icon-sm"})})}),G]}),e.jsxs("div",{className:"flex items-center gap-1 justify-self-end",children:[n.shouldShowConfidenceScore(m)&&c?e.jsx(ie,{placement:"top-end",title:f??"",hideTooltip:f==null,className:"cursor-pointer",children:e.jsxs("div",{className:x("inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5",n.getConfidenceScoreBadgeClass(c)),onClick:()=>Q?.(J),children:[e.jsx(de.AIStarIcon,{size:12,fill:n.getConfidenceScoreBadgeColor(c),fillSecondary:n.getConfidenceScoreBadgeFill(c)}),e.jsxs("span",{className:x("text-xs font-medium leading-4",n.getConfidenceScoreBadgeTextColor(c)),children:[m,"%"]})]})}):null,p&&b?e.jsx("button",{id:"btn-textarea-field-add-to-document",className:"cursor-pointer",onClick:ae,type:"button",children:e.jsx(B.Tooltip,{placement:"top",title:re("Add to document"),children:e.jsx(D.NoteAddOutlined,{className:"text-primary-600",sx:{fontSize:16}})})}):null]})]})}),e.jsx("textarea",{...N,onKeyDown:te,onBlur:M,onChange:r=>T(r.target.value),defaultValue:H,value:s,required:k,className:x("border rounded-lg focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400",{"border-red-300":t,"border-gray-300 dark:border-black-700":!t&&!v&&!i&&!u&&!o,"text-neutral-400 dark:text-neutral-500":d&&!i&&!u,"text-neutral-900 dark:text-neutral-50":!d&&!i&&!u,"border-none":j,"focus:border-none":j,"placeholder:text-neutral-400 dark:placeholder:text-black-400":d,"placeholder:text-neutral-400 dark:placeholder:text-black-300":!d,"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600":!v&&!i&&!u&&!o&&!t},i&&"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]",v&&"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]",u&&"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]",O,o&&`!bg-${a.color}-50 border-${a.color}-300`),style:o&&a?{backgroundColor:a.hexBgColor||void 0,borderColor:a.hexBorderColor||void 0,...S}:S,rows:$,placeholder:W,disabled:d,maxLength:l||void 0,id:w,ref:V,onClick:r=>r.stopPropagation(),autoComplete:"off"}),l?e.jsxs(I.Typography,{className:"mt-0.5 text-right text-neutral-900 dark:text-white",appearance:"custom",size:"extra-small",children:[e.jsxs("span",{className:`${s?.length>=l?"text-error-500":s?.length>l-Math.min(50,l/5)?"text-warning-500 dark:text-warning-300":""}`,children:[s?.length||0," "]}),"/ ",l]}):null,t&&e.jsx(I.Typography,{className:"text-error-500 mt-1",appearance:"custom",size:"extra-small",variant:"medium",children:t})]}),b&&C&&a&&E&&e.jsx("div",{role:"tooltip",tabIndex:0,className:"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl",onClick:r=>r.stopPropagation(),onMouseDown:r=>r.preventDefault(),onKeyDown:r=>{r.key==="Escape"&&h(!1)},children:e.jsx(E,{riskDetails:a})})]})});z.displayName="TextAreaField";exports.TextAreaField=z;
|
|
2
2
|
//# sourceMappingURL=TextAreaField.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextAreaField.cjs.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\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 { NoteAddOutlined, BoltOutlined } 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 * 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 TextAreaField component\n */\nexport interface TextAreaFieldProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\" | \"maxLength\"> {\n /** The label text to display above the textarea */\n label?: string;\n /** Placeholder text for the textarea */\n placeholder: string;\n /** Current value of the textarea */\n value?: string | any;\n /** Callback function called when the textarea value changes */\n onChange: (value: string) => void;\n /** Number of visible text lines for the textarea (alias for rows) */\n row?: number;\n /** Error message to display below the textarea */\n errorMessage?: string;\n /** Default value for the textarea */\n defaultValue?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the textarea element */\n className?: string;\n /** Ref object for the textarea element */\n inputRef?: RefObject<HTMLTextAreaElement>;\n /** Maximum character length allowed */\n maxLength?: number | null;\n /** Tooltip text to display */\n tooltip?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\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 this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Whether to remove border styling */\n noBorder?: boolean;\n /** Unique identifier for the textarea */\n id?: string;\n /** Custom inline styles for the textarea */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when the textarea loses focus */\n onBlur?: () => void;\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 /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\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 * A customizable textarea field component with label, validation, GTN integration,\n * risk analysis support, and styling support. Features dark mode support,\n * accessibility enhancements, and character count display.\n *\n * @example\n * ```tsx\n * <TextAreaField\n * label=\"Description\"\n * placeholder=\"Enter a description...\"\n * value={description}\n * onChange={(value) => setDescription(value)}\n * required\n * />\n *\n * <TextAreaField\n * label=\"Comments\"\n * placeholder=\"Enter comments...\"\n * value={comments}\n * onChange={(value) => setComments(value)}\n * maxLength={500}\n * isGTN\n * gtnName=\"comments_field\"\n * onAddGTNToDocument={(kv) => handleAddToDocument(kv)}\n * />\n * ```\n */\nexport const TextAreaField = forwardRef<HTMLDivElement, TextAreaFieldProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n row = 4,\n errorMessage,\n defaultValue,\n required,\n isRequiredConditional = false,\n tags = [],\n disabled,\n className,\n inputRef,\n maxLength = undefined,\n tooltip = \"\",\n originalCase = false,\n isAiExtracted = false,\n confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\n isGTN = false,\n gtnName = \"\",\n noBorder = false,\n id,\n inputStyle,\n labelClassName,\n isLiveField = false,\n onBlur,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n onAddGTNToDocument,\n labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value: value || \"\",\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n return (\n <div\n ref={ref}\n id={id}\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"w-full flex flex-col\")}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\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 label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\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 <AntTooltip 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 }\n }}\n >\n <HelpIcon />\n </div>\n </AntTooltip>\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={cn(\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={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\n {isGTN && isHovered ? (\n <button\n id=\"btn-textarea-field-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{ fontSize: 16 }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\n onBlur={onBlur}\n onChange={(e) => onChange(e.target.value)}\n defaultValue={defaultValue}\n value={value}\n required={required}\n className={cn(\n \"border rounded-lg focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400\",\n {\n \"border-red-300\": errorMessage,\n \"border-gray-300 dark:border-black-700\": !errorMessage && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-400\": disabled,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": !disabled,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && riskDetails\n ? {\n backgroundColor: riskDetails.hexBgColor || undefined,\n borderColor: riskDetails.hexBorderColor || undefined,\n ...inputStyle,\n }\n : inputStyle\n }\n rows={row}\n placeholder={placeholder}\n disabled={disabled}\n maxLength={maxLength || undefined}\n id={id}\n ref={inputRef}\n onClick={(e) => e.stopPropagation()}\n autoComplete=\"off\"\n />\n {maxLength ? (\n <Typography\n className=\"mt-0.5 text-right text-neutral-900 dark:text-white\"\n appearance=\"custom\"\n size=\"extra-small\"\n >\n <span\n className={`${\n value?.length >= maxLength\n ? \"text-error-500\"\n : value?.length > maxLength - Math.min(50, maxLength / 5)\n ? \"text-warning-500 dark:text-warning-300\"\n : \"\"\n }`}\n >\n {value?.length || 0}{\" \"}\n </span>\n / {maxLength}\n </Typography>\n ) : null}\n\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHovered && isRiskAnalysisOpen && riskDetails && 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 setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nTextAreaField.displayName = \"TextAreaField\";\n\n"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","e","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextAreaField.cjs.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\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 { NoteAddOutlined, BoltOutlined } 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 * 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 TextAreaField component\n */\nexport interface TextAreaFieldProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\" | \"maxLength\"> {\n /** The label text to display above the textarea */\n label?: string;\n /** Placeholder text for the textarea */\n placeholder: string;\n /** Current value of the textarea */\n value?: string | any;\n /** Callback function called when the textarea value changes */\n onChange: (value: string) => void;\n /** Number of visible text lines for the textarea (alias for rows) */\n row?: number;\n /** Error message to display below the textarea */\n errorMessage?: string;\n /** Default value for the textarea */\n defaultValue?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the textarea element */\n className?: string;\n /** Ref object for the textarea element */\n inputRef?: RefObject<HTMLTextAreaElement>;\n /** Maximum character length allowed */\n maxLength?: number | null;\n /** Tooltip text to display */\n tooltip?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\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 this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Whether to remove border styling */\n noBorder?: boolean;\n /** Unique identifier for the textarea */\n id?: string;\n /** Custom inline styles for the textarea */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when the textarea loses focus */\n onBlur?: () => void;\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 /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\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 * A customizable textarea field component with label, validation, GTN integration,\n * risk analysis support, and styling support. Features dark mode support,\n * accessibility enhancements, and character count display.\n *\n * @example\n * ```tsx\n * <TextAreaField\n * label=\"Description\"\n * placeholder=\"Enter a description...\"\n * value={description}\n * onChange={(value) => setDescription(value)}\n * required\n * />\n *\n * <TextAreaField\n * label=\"Comments\"\n * placeholder=\"Enter comments...\"\n * value={comments}\n * onChange={(value) => setComments(value)}\n * maxLength={500}\n * isGTN\n * gtnName=\"comments_field\"\n * onAddGTNToDocument={(kv) => handleAddToDocument(kv)}\n * />\n * ```\n */\nexport const TextAreaField = forwardRef<HTMLDivElement, TextAreaFieldProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n row = 4,\n errorMessage,\n defaultValue,\n required,\n isRequiredConditional = false,\n tags = [],\n disabled,\n className,\n inputRef,\n maxLength = undefined,\n tooltip = \"\",\n originalCase = false,\n isAiExtracted = false,\n confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\n isGTN = false,\n gtnName = \"\",\n noBorder = false,\n id,\n inputStyle,\n labelClassName,\n isLiveField = false,\n onBlur,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n onAddGTNToDocument,\n labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value: value || \"\",\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n return (\n <div\n ref={ref}\n id={id}\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"w-full flex flex-col\")}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\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 label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\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 <AntTooltip 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 }\n }}\n >\n <HelpIcon className=\"w-icon-sm h-icon-sm\" />\n </div>\n </AntTooltip>\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={cn(\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={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\n {isGTN && isHovered ? (\n <button\n id=\"btn-textarea-field-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{ fontSize: 16 }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\n onBlur={onBlur}\n onChange={(e) => onChange(e.target.value)}\n defaultValue={defaultValue}\n value={value}\n required={required}\n className={cn(\n \"border rounded-lg focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400\",\n {\n \"border-red-300\": errorMessage,\n \"border-gray-300 dark:border-black-700\": !errorMessage && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-400\": disabled,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": !disabled,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && riskDetails\n ? {\n backgroundColor: riskDetails.hexBgColor || undefined,\n borderColor: riskDetails.hexBorderColor || undefined,\n ...inputStyle,\n }\n : inputStyle\n }\n rows={row}\n placeholder={placeholder}\n disabled={disabled}\n maxLength={maxLength || undefined}\n id={id}\n ref={inputRef}\n onClick={(e) => e.stopPropagation()}\n autoComplete=\"off\"\n />\n {maxLength ? (\n <Typography\n className=\"mt-0.5 text-right text-neutral-900 dark:text-white\"\n appearance=\"custom\"\n size=\"extra-small\"\n >\n <span\n className={`${\n value?.length >= maxLength\n ? \"text-error-500\"\n : value?.length > maxLength - Math.min(50, maxLength / 5)\n ? \"text-warning-500 dark:text-warning-300\"\n : \"\"\n }`}\n >\n {value?.length || 0}{\" \"}\n </span>\n / {maxLength}\n </Typography>\n ) : null}\n\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHovered && isRiskAnalysisOpen && riskDetails && 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 setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nTextAreaField.displayName = \"TextAreaField\";\n\n"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","e","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ import { Tooltip as D } from "antd";
|
|
|
5
5
|
import { useTranslation as ae } from "react-i18next";
|
|
6
6
|
import { Typography as I } from "../../data-display/typography/Typography.es.js";
|
|
7
7
|
import { HelpIcon as le } from "../../icons/HelpIcon.es.js";
|
|
8
|
-
import { Label as
|
|
9
|
-
import { BoltOutlined as
|
|
8
|
+
import { Label as ne } from "../../data-display/label/Label.es.js";
|
|
9
|
+
import { BoltOutlined as de, NoteAddOutlined as ie } from "@mui/icons-material";
|
|
10
10
|
import { AIExtractedIndicator as ce } from "../../icons/AIExtractedIndicator.es.js";
|
|
11
11
|
import { AIStarIcon as se } from "../../icons/AIStarIcon.es.js";
|
|
12
12
|
import { InputLabel as me } from "../shared/InputLabel.es.js";
|
|
@@ -16,7 +16,7 @@ const ge = oe(
|
|
|
16
16
|
({
|
|
17
17
|
label: K,
|
|
18
18
|
placeholder: W,
|
|
19
|
-
value:
|
|
19
|
+
value: d,
|
|
20
20
|
onChange: $,
|
|
21
21
|
row: j = 4,
|
|
22
22
|
errorMessage: t,
|
|
@@ -27,7 +27,7 @@ const ge = oe(
|
|
|
27
27
|
disabled: i,
|
|
28
28
|
className: V,
|
|
29
29
|
inputRef: O,
|
|
30
|
-
maxLength:
|
|
30
|
+
maxLength: n = void 0,
|
|
31
31
|
tooltip: y = "",
|
|
32
32
|
originalCase: R = !1,
|
|
33
33
|
isAiExtracted: J = !1,
|
|
@@ -65,7 +65,7 @@ const ge = oe(
|
|
|
65
65
|
}, re = () => {
|
|
66
66
|
N && N({
|
|
67
67
|
key: U,
|
|
68
|
-
value:
|
|
68
|
+
value: d || ""
|
|
69
69
|
});
|
|
70
70
|
};
|
|
71
71
|
return /* @__PURE__ */ o(
|
|
@@ -91,7 +91,7 @@ const ge = oe(
|
|
|
91
91
|
/* @__PURE__ */ o("div", { className: "inline-flex min-w-0 items-center gap-1 flex-wrap", children: [
|
|
92
92
|
/* @__PURE__ */ r(me, { label: K || "", required: F || !1, isRequiredConditional: H || !1 }),
|
|
93
93
|
Y && /* @__PURE__ */ r(
|
|
94
|
-
|
|
94
|
+
de,
|
|
95
95
|
{
|
|
96
96
|
sx: {
|
|
97
97
|
fontSize: 16,
|
|
@@ -101,7 +101,7 @@ const ge = oe(
|
|
|
101
101
|
}
|
|
102
102
|
),
|
|
103
103
|
J && !z(b) && /* @__PURE__ */ r(ce, {}),
|
|
104
|
-
/* @__PURE__ */ r(
|
|
104
|
+
/* @__PURE__ */ r(ne, { labels: P || [] }),
|
|
105
105
|
y && /* @__PURE__ */ r(D, { placement: "top", title: y, children: /* @__PURE__ */ r(
|
|
106
106
|
"div",
|
|
107
107
|
{
|
|
@@ -111,7 +111,7 @@ const ge = oe(
|
|
|
111
111
|
onKeyDown: (e) => {
|
|
112
112
|
(e.key === "Enter" || e.key === " ") && e.preventDefault();
|
|
113
113
|
},
|
|
114
|
-
children: /* @__PURE__ */ r(le, {})
|
|
114
|
+
children: /* @__PURE__ */ r(le, { className: "w-icon-sm h-icon-sm" })
|
|
115
115
|
}
|
|
116
116
|
) }),
|
|
117
117
|
L
|
|
@@ -178,7 +178,7 @@ const ge = oe(
|
|
|
178
178
|
onBlur: Z,
|
|
179
179
|
onChange: (e) => $(e.target.value),
|
|
180
180
|
defaultValue: q,
|
|
181
|
-
value:
|
|
181
|
+
value: d,
|
|
182
182
|
required: F,
|
|
183
183
|
className: u(
|
|
184
184
|
"border rounded-lg focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400",
|
|
@@ -207,14 +207,14 @@ const ge = oe(
|
|
|
207
207
|
rows: j,
|
|
208
208
|
placeholder: W,
|
|
209
209
|
disabled: i,
|
|
210
|
-
maxLength:
|
|
210
|
+
maxLength: n || void 0,
|
|
211
211
|
id: C,
|
|
212
212
|
ref: O,
|
|
213
213
|
onClick: (e) => e.stopPropagation(),
|
|
214
214
|
autoComplete: "off"
|
|
215
215
|
}
|
|
216
216
|
),
|
|
217
|
-
|
|
217
|
+
n ? /* @__PURE__ */ o(
|
|
218
218
|
I,
|
|
219
219
|
{
|
|
220
220
|
className: "mt-0.5 text-right text-neutral-900 dark:text-white",
|
|
@@ -224,15 +224,15 @@ const ge = oe(
|
|
|
224
224
|
/* @__PURE__ */ o(
|
|
225
225
|
"span",
|
|
226
226
|
{
|
|
227
|
-
className: `${
|
|
227
|
+
className: `${d?.length >= n ? "text-error-500" : d?.length > n - Math.min(50, n / 5) ? "text-warning-500 dark:text-warning-300" : ""}`,
|
|
228
228
|
children: [
|
|
229
|
-
|
|
229
|
+
d?.length || 0,
|
|
230
230
|
" "
|
|
231
231
|
]
|
|
232
232
|
}
|
|
233
233
|
),
|
|
234
234
|
"/ ",
|
|
235
|
-
|
|
235
|
+
n
|
|
236
236
|
]
|
|
237
237
|
}
|
|
238
238
|
) : null,
|