inconel 0.1.11 → 0.1.13
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/cjs/components/Badge/Badge.cjs +2 -0
- package/dist/cjs/components/Badge/Badge.cjs.map +1 -0
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/DropDownBox/DropDownBox.cjs +2 -0
- package/dist/cjs/components/DropDownBox/DropDownBox.cjs.map +1 -0
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Select/Select.cjs +1 -1
- package/dist/cjs/components/Select/Select.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/components/Badge/Badge.d.ts +10 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -0
- package/dist/components/Badge/Badge.js +29 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/index.d.ts +3 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +32 -31
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/DropDownBox/DropDownBox.d.ts +40 -0
- package/dist/components/DropDownBox/DropDownBox.d.ts.map +1 -0
- package/dist/components/DropDownBox/DropDownBox.js +157 -0
- package/dist/components/DropDownBox/DropDownBox.js.map +1 -0
- package/dist/components/DropDownBox/index.d.ts +3 -0
- package/dist/components/DropDownBox/index.d.ts.map +1 -0
- package/dist/components/Input/Input.d.ts +1 -0
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.js +29 -28
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +87 -87
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/shared/types.d.ts +1 -1
- package/dist/components/shared/types.d.ts.map +1 -1
- package/dist/index.js +78 -74
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport '../shared/sizes.css'\nimport type { ControlSize } from '../shared/types'\nimport './styles.css'\nimport {\n applyInputMask,\n formatInputValue,\n getInputSeparators,\n isFormattedInputType,\n isLengthValidatedInputType,\n parseInputNumber,\n roundInputNumber,\n validateInputValue,\n} from './utils'\n\nexport type InputType =\n | 'text'\n | 'number'\n | 'currency'\n | 'percent'\n | 'phone'\n | 'email'\n | 'password'\n\nexport type InputRoundMode = 'ceil' | 'floor' | 'round'\nexport type InputValue = string | number | null\nexport type InputEventType =\n | 'change'\n | 'blur'\n | 'focus'\n | 'keydown'\n | 'mouseenter'\n | 'mouseleave'\n | 'clear'\n\nexport interface InputPayload {\n rawValue: InputValue\n formattedValue: string\n error: boolean\n char: string | null\n eventType: InputEventType\n}\n\nexport interface InputValidationMessages {\n required?: string\n invalidNumber?: string\n minNumber?: string\n maxNumber?: string\n minLength?: string\n maxLength?: string\n invalidPhone?: string\n invalidEmail?: string\n}\n\ntype NativeInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | 'type'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'min'\n | 'max'\n | 'size'\n | 'readOnly'\n>\n\nexport interface InputProps extends NativeInputProps, FieldFeedbackContentProps {\n label?: string\n startAdornment?: ReactNode\n endAdornment?: ReactNode\n fullWidth?: boolean\n inputClassName?: string\n labelClassName?: string\n value?: InputValue\n defaultValue?: InputValue\n onChange?: (payload: InputPayload) => void\n onBlur?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onFocus?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onKeyDown?: (\n payload: InputPayload,\n event: KeyboardEvent<HTMLInputElement>,\n ) => void\n onMouseEnter?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n onMouseLeave?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n type?: InputType\n locale?: string\n currency?: string\n decimalScale?: number\n roundMode?: InputRoundMode\n roundOnBlur?: boolean\n min?: number\n max?: number\n allowNegative?: boolean\n debounceMs?: number\n validateOnSubmit?: boolean\n validationMessages?: InputValidationMessages\n mask?: string\n limit?: number\n isClearable?: boolean\n readOnly?: boolean\n clearButtonLabel?: string\n readOnlyEmptyValue?: ReactNode\n size?: ControlSize\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n id,\n label,\n hint,\n errorMessage,\n startAdornment,\n endAdornment,\n fullWidth = false,\n inputClassName,\n labelClassName,\n className,\n required,\n disabled,\n value,\n defaultValue = '',\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n type = 'text',\n locale = 'tr-TR',\n currency = 'TRY',\n decimalScale = 0,\n roundMode = 'floor',\n roundOnBlur = false,\n min,\n max,\n allowNegative = false,\n debounceMs = 0,\n validateOnSubmit = false,\n validationMessages,\n mask,\n limit,\n isClearable = false,\n readOnly = false,\n clearButtonLabel,\n readOnlyEmptyValue = null,\n size = 'md',\n autoComplete = 'off',\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n },\n ref,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-input-${generatedId.replace(/:/g, '')}`\n const hintId = `${inputId}-hint`\n const errorId = `${inputId}-error`\n const controlled = value !== undefined\n const [localValue, setLocalValue] = useState<InputValue>(defaultValue)\n const currentValue = controlled ? value : localValue\n const [editingValue, setEditingValue] = useState('')\n const [focused, setFocused] = useState(false)\n const [validationError, setValidationError] = useState<string | null>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const messages = validationMessages ?? {}\n const visibleError = errorMessage ?? validationError\n\n const validate = (candidate: InputValue) =>\n validateInputValue(candidate, {\n required: Boolean(required),\n type,\n min,\n max,\n mask,\n messages,\n })\n\n const formattedValue = useMemo(\n () =>\n formatInputValue(\n currentValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n [currentValue, currency, decimalScale, locale, mask, type],\n )\n\n const buildPayload = (\n rawValue: InputValue,\n eventType: InputEventType,\n char: string | null = null,\n ): InputPayload => ({\n rawValue,\n formattedValue: formatInputValue(\n rawValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n error: Boolean(validate(rawValue)),\n char,\n eventType,\n })\n\n const emitChange = (payload: InputPayload, immediate = false) => {\n if (!controlled) setLocalValue(payload.rawValue)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n if (!onChange) return\n if (immediate || debounceMs <= 0) onChange(payload)\n else debounceRef.current = setTimeout(() => onChange(payload), debounceMs)\n }\n\n useEffect(() => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current)\n }, [])\n\n useEffect(() => {\n if (validateOnSubmit) setValidationError(validate(currentValue))\n // Validation intentionally runs when submit state changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validateOnSubmit])\n\n const normalize = (text: string): InputValue => {\n if (type === 'phone' && mask) return text.replace(/\\D/g, '')\n if (isFormattedInputType(type)) {\n const parsed = parseInputNumber(text, locale)\n if (parsed === null) return text === '' ? null : text\n return allowNegative ? parsed : Math.abs(parsed)\n }\n return text\n }\n\n const handleChange = (text: string) => {\n const digits = text.replace(/\\D/g, '')\n if (\n limit &&\n (isFormattedInputType(type) || type === 'phone') &&\n digits.length > limit\n ) return\n if (limit && isLengthValidatedInputType(type) && text.length > limit) return\n const rawValue = normalize(text)\n if (typeof rawValue === 'number') {\n if (typeof min === 'number' && rawValue < min) return\n if (typeof max === 'number' && rawValue > max) return\n }\n setEditingValue(\n type === 'phone' && mask ? applyInputMask(rawValue, mask) : text,\n )\n emitChange(buildPayload(rawValue, 'change', text.slice(-1) || null))\n }\n\n const describedBy = [\n ariaDescribedBy,\n hint && !visibleError ? hintId : undefined,\n visibleError ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n if (readOnly) {\n return (\n <div className={['inconel-field', `inconel-size-${size}`, fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && <span className={['inconel-field__label', labelClassName ?? ''].join(' ')}>{label}</span>}\n <div className=\"inconel-input-readonly\" aria-label={label}>\n {formattedValue || readOnlyEmptyValue}\n </div>\n </div>\n )\n }\n\n return (\n <div className={['inconel-field', `inconel-size-${size}`, fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && (\n <label className={['inconel-field__label', labelClassName ?? ''].join(' ')} htmlFor={inputId}>\n {label}{required && <span className=\"inconel-field__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div className={['inconel-input-control', visibleError ? 'inconel-is-invalid' : '', disabled ? 'inconel-is-disabled' : ''].join(' ')}>\n {startAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{startAdornment}</span>}\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type={type === 'password' || type === 'email' ? type : 'text'}\n inputMode={isFormattedInputType(type) ? 'decimal' : type === 'phone' ? 'tel' : undefined}\n value={focused ? editingValue : formattedValue}\n required={required}\n disabled={disabled}\n autoComplete={autoComplete}\n aria-invalid={Boolean(visibleError)}\n aria-describedby={describedBy}\n className={['inconel-input', inputClassName ?? ''].join(' ')}\n onChange={(event) => handleChange(event.target.value)}\n onFocus={(event) => {\n if (disabled) return\n setFocused(true)\n const editValue = type === 'phone' && mask\n ? applyInputMask(currentValue, mask)\n : isFormattedInputType(type)\n ? String(currentValue ?? '').replace('.', getInputSeparators(locale).decimal)\n : String(currentValue ?? '')\n setEditingValue(editValue)\n onFocus?.(buildPayload(currentValue, 'focus'), event)\n }}\n onBlur={(event) => {\n setFocused(false)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n let rawValue = normalize(editingValue)\n if (typeof rawValue === 'number') {\n rawValue = roundInputNumber(rawValue, decimalScale, roundOnBlur ? roundMode : 'floor')\n }\n setValidationError(validate(rawValue))\n const payload = buildPayload(rawValue, 'blur')\n emitChange(payload, true)\n onBlur?.(payload, event)\n }}\n onKeyDown={(event) => {\n if (!allowNegative && (event.key === '-' || event.key === 'Subtract')) event.preventDefault()\n onKeyDown?.(buildPayload(currentValue, 'keydown', event.key), event)\n }}\n onMouseEnter={(event) => onMouseEnter?.(buildPayload(currentValue, 'mouseenter'), event)}\n onMouseLeave={(event) => onMouseLeave?.(buildPayload(currentValue, 'mouseleave'), event)}\n />\n {isClearable && !disabled && formattedValue && clearButtonLabel && (\n <button\n type=\"button\"\n className=\"inconel-input-clear\"\n aria-label={clearButtonLabel}\n onClick={() => {\n setEditingValue('')\n setValidationError(validate(null))\n emitChange(buildPayload(null, 'clear'), true)\n }}\n >\n ×\n </button>\n )}\n {endAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{endAdornment}</span>}\n </div>\n <FieldFeedback\n hint={hint}\n errorMessage={visibleError}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n})\n\nexport default Input\n"],"names":["Input","forwardRef","id","label","hint","errorMessage","startAdornment","endAdornment","fullWidth","inputClassName","labelClassName","className","required","disabled","value","defaultValue","onChange","onBlur","onFocus","onKeyDown","onMouseEnter","onMouseLeave","type","locale","currency","decimalScale","roundMode","roundOnBlur","min","max","allowNegative","debounceMs","validateOnSubmit","validationMessages","mask","limit","isClearable","readOnly","clearButtonLabel","readOnlyEmptyValue","size","autoComplete","ariaDescribedBy","inputProps","ref","generatedId","useId","inputId","hintId","errorId","controlled","localValue","setLocalValue","useState","currentValue","editingValue","setEditingValue","focused","setFocused","validationError","setValidationError","debounceRef","useRef","messages","visibleError","validate","candidate","validateInputValue","formattedValue","useMemo","formatInputValue","buildPayload","rawValue","eventType","char","emitChange","payload","immediate","useEffect","normalize","text","isFormattedInputType","parsed","parseInputNumber","handleChange","digits","isLengthValidatedInputType","applyInputMask","describedBy","jsx","jsxs","event","editValue","getInputSeparators","roundInputNumber","FieldFeedback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport '../shared/sizes.css'\nimport type { ControlSize } from '../shared/types'\nimport './styles.css'\nimport {\n applyInputMask,\n formatInputValue,\n getInputSeparators,\n isFormattedInputType,\n isLengthValidatedInputType,\n parseInputNumber,\n roundInputNumber,\n validateInputValue,\n} from './utils'\n\nexport type InputType =\n | 'text'\n | 'number'\n | 'currency'\n | 'percent'\n | 'phone'\n | 'email'\n | 'password'\n\nexport type InputRoundMode = 'ceil' | 'floor' | 'round'\nexport type InputValue = string | number | null\nexport type InputEventType =\n | 'change'\n | 'blur'\n | 'focus'\n | 'keydown'\n | 'mouseenter'\n | 'mouseleave'\n | 'clear'\n\nexport interface InputPayload {\n rawValue: InputValue\n formattedValue: string\n error: boolean\n char: string | null\n eventType: InputEventType\n}\n\nexport interface InputValidationMessages {\n required?: string\n invalidNumber?: string\n minNumber?: string\n maxNumber?: string\n minLength?: string\n maxLength?: string\n invalidPhone?: string\n invalidEmail?: string\n}\n\ntype NativeInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | 'type'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'min'\n | 'max'\n | 'size'\n | 'readOnly'\n>\n\nexport interface InputProps extends NativeInputProps, FieldFeedbackContentProps {\n label?: string\n startAdornment?: ReactNode\n endAdornment?: ReactNode\n fullWidth?: boolean\n inputClassName?: string\n labelClassName?: string\n value?: InputValue\n defaultValue?: InputValue\n onChange?: (payload: InputPayload) => void\n onBlur?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onFocus?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onKeyDown?: (\n payload: InputPayload,\n event: KeyboardEvent<HTMLInputElement>,\n ) => void\n onMouseEnter?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n onMouseLeave?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n type?: InputType\n locale?: string\n currency?: string\n decimalScale?: number\n roundMode?: InputRoundMode\n roundOnBlur?: boolean\n min?: number\n max?: number\n allowNegative?: boolean\n debounceMs?: number\n validateOnSubmit?: boolean\n validationMessages?: InputValidationMessages\n mask?: string\n limit?: number\n isClearable?: boolean\n readOnly?: boolean\n clearButtonLabel?: string\n readOnlyEmptyValue?: ReactNode\n size?: ControlSize\n variant?: 'outlined' | 'plain'\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n id,\n label,\n hint,\n errorMessage,\n startAdornment,\n endAdornment,\n fullWidth = false,\n inputClassName,\n labelClassName,\n className,\n required,\n disabled,\n value,\n defaultValue = '',\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n type = 'text',\n locale = 'tr-TR',\n currency = 'TRY',\n decimalScale = 0,\n roundMode = 'floor',\n roundOnBlur = false,\n min,\n max,\n allowNegative = false,\n debounceMs = 0,\n validateOnSubmit = false,\n validationMessages,\n mask,\n limit,\n isClearable = false,\n readOnly = false,\n clearButtonLabel,\n readOnlyEmptyValue = null,\n size = 'md',\n variant = 'outlined',\n autoComplete = 'off',\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n },\n ref,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-input-${generatedId.replace(/:/g, '')}`\n const hintId = `${inputId}-hint`\n const errorId = `${inputId}-error`\n const controlled = value !== undefined\n const [localValue, setLocalValue] = useState<InputValue>(defaultValue)\n const currentValue = controlled ? value : localValue\n const [editingValue, setEditingValue] = useState('')\n const [focused, setFocused] = useState(false)\n const [validationError, setValidationError] = useState<string | null>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const messages = validationMessages ?? {}\n const visibleError = errorMessage ?? validationError\n\n const validate = (candidate: InputValue) =>\n validateInputValue(candidate, {\n required: Boolean(required),\n type,\n min,\n max,\n mask,\n messages,\n })\n\n const formattedValue = useMemo(\n () =>\n formatInputValue(\n currentValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n [currentValue, currency, decimalScale, locale, mask, type],\n )\n\n const buildPayload = (\n rawValue: InputValue,\n eventType: InputEventType,\n char: string | null = null,\n ): InputPayload => ({\n rawValue,\n formattedValue: formatInputValue(\n rawValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n error: Boolean(validate(rawValue)),\n char,\n eventType,\n })\n\n const emitChange = (payload: InputPayload, immediate = false) => {\n if (!controlled) setLocalValue(payload.rawValue)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n if (!onChange) return\n if (immediate || debounceMs <= 0) onChange(payload)\n else debounceRef.current = setTimeout(() => onChange(payload), debounceMs)\n }\n\n useEffect(() => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current)\n }, [])\n\n useEffect(() => {\n if (validateOnSubmit) setValidationError(validate(currentValue))\n // Validation intentionally runs when submit state changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validateOnSubmit])\n\n const normalize = (text: string): InputValue => {\n if (type === 'phone' && mask) return text.replace(/\\D/g, '')\n if (isFormattedInputType(type)) {\n const parsed = parseInputNumber(text, locale)\n if (parsed === null) return text === '' ? null : text\n return allowNegative ? parsed : Math.abs(parsed)\n }\n return text\n }\n\n const handleChange = (text: string) => {\n const digits = text.replace(/\\D/g, '')\n if (\n limit &&\n (isFormattedInputType(type) || type === 'phone') &&\n digits.length > limit\n ) return\n if (limit && isLengthValidatedInputType(type) && text.length > limit) return\n const rawValue = normalize(text)\n if (typeof rawValue === 'number') {\n if (typeof min === 'number' && rawValue < min) return\n if (typeof max === 'number' && rawValue > max) return\n }\n setEditingValue(\n type === 'phone' && mask ? applyInputMask(rawValue, mask) : text,\n )\n emitChange(buildPayload(rawValue, 'change', text.slice(-1) || null))\n }\n\n const describedBy = [\n ariaDescribedBy,\n hint && !visibleError ? hintId : undefined,\n visibleError ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n if (readOnly) {\n return (\n <div className={['inconel-field', `inconel-size-${size}`, fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && <span className={['inconel-field__label', labelClassName ?? ''].join(' ')}>{label}</span>}\n <div className=\"inconel-input-readonly\" aria-label={label}>\n {formattedValue || readOnlyEmptyValue}\n </div>\n </div>\n )\n }\n\n return (\n <div className={['inconel-field', `inconel-size-${size}`, fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && (\n <label className={['inconel-field__label', labelClassName ?? ''].join(' ')} htmlFor={inputId}>\n {label}{required && <span className=\"inconel-field__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div className={['inconel-input-control', variant === 'plain' ? 'inconel-input-control--plain' : '', visibleError ? 'inconel-is-invalid' : '', disabled ? 'inconel-is-disabled' : ''].join(' ')}>\n {startAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{startAdornment}</span>}\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type={type === 'password' || type === 'email' ? type : 'text'}\n inputMode={isFormattedInputType(type) ? 'decimal' : type === 'phone' ? 'tel' : undefined}\n value={focused ? editingValue : formattedValue}\n required={required}\n disabled={disabled}\n autoComplete={autoComplete}\n aria-invalid={Boolean(visibleError)}\n aria-describedby={describedBy}\n className={['inconel-input', inputClassName ?? ''].join(' ')}\n onChange={(event) => handleChange(event.target.value)}\n onFocus={(event) => {\n if (disabled) return\n setFocused(true)\n const editValue = type === 'phone' && mask\n ? applyInputMask(currentValue, mask)\n : isFormattedInputType(type)\n ? String(currentValue ?? '').replace('.', getInputSeparators(locale).decimal)\n : String(currentValue ?? '')\n setEditingValue(editValue)\n onFocus?.(buildPayload(currentValue, 'focus'), event)\n }}\n onBlur={(event) => {\n setFocused(false)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n let rawValue = normalize(editingValue)\n if (typeof rawValue === 'number') {\n rawValue = roundInputNumber(rawValue, decimalScale, roundOnBlur ? roundMode : 'floor')\n }\n setValidationError(validate(rawValue))\n const payload = buildPayload(rawValue, 'blur')\n emitChange(payload, true)\n onBlur?.(payload, event)\n }}\n onKeyDown={(event) => {\n if (!allowNegative && (event.key === '-' || event.key === 'Subtract')) event.preventDefault()\n onKeyDown?.(buildPayload(currentValue, 'keydown', event.key), event)\n }}\n onMouseEnter={(event) => onMouseEnter?.(buildPayload(currentValue, 'mouseenter'), event)}\n onMouseLeave={(event) => onMouseLeave?.(buildPayload(currentValue, 'mouseleave'), event)}\n />\n {isClearable && !disabled && formattedValue && clearButtonLabel && (\n <button\n type=\"button\"\n className=\"inconel-input-clear\"\n aria-label={clearButtonLabel}\n onClick={() => {\n setEditingValue('')\n setValidationError(validate(null))\n emitChange(buildPayload(null, 'clear'), true)\n }}\n >\n ×\n </button>\n )}\n {endAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{endAdornment}</span>}\n </div>\n <FieldFeedback\n hint={hint}\n errorMessage={visibleError}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n})\n\nexport default Input\n"],"names":["Input","forwardRef","id","label","hint","errorMessage","startAdornment","endAdornment","fullWidth","inputClassName","labelClassName","className","required","disabled","value","defaultValue","onChange","onBlur","onFocus","onKeyDown","onMouseEnter","onMouseLeave","type","locale","currency","decimalScale","roundMode","roundOnBlur","min","max","allowNegative","debounceMs","validateOnSubmit","validationMessages","mask","limit","isClearable","readOnly","clearButtonLabel","readOnlyEmptyValue","size","variant","autoComplete","ariaDescribedBy","inputProps","ref","generatedId","useId","inputId","hintId","errorId","controlled","localValue","setLocalValue","useState","currentValue","editingValue","setEditingValue","focused","setFocused","validationError","setValidationError","debounceRef","useRef","messages","visibleError","validate","candidate","validateInputValue","formattedValue","useMemo","formatInputValue","buildPayload","rawValue","eventType","char","emitChange","payload","immediate","useEffect","normalize","text","isFormattedInputType","parsed","parseInputNumber","handleChange","digits","isLengthValidatedInputType","applyInputMask","describedBy","jsx","jsxs","event","editValue","getInputSeparators","roundInputNumber","FieldFeedback"],"mappings":";;;;;;;;AAsIA,MAAMA,KAAQC,GAAyC,SACrD;AAAA,EACE,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,WAAAC,KAAY;AAAA,EACZ,aAAAC,KAAc;AAAA,EACd,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,YAAAC,IAAa;AAAA,EACb,kBAAAC,IAAmB;AAAA,EACnB,oBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,KAAc;AAAA,EACd,UAAAC,KAAW;AAAA,EACX,kBAAAC;AAAA,EACA,oBAAAC,KAAqB;AAAA,EACrB,MAAAC,IAAO;AAAA,EACP,SAAAC,KAAU;AAAA,EACV,cAAAC,KAAe;AAAA,EACf,oBAAoBC;AAAA,EACpB,GAAGC;AACL,GACAC,IACA;AACA,QAAMC,KAAcC,GAAA,GACdC,IAAU9C,KAAM,iBAAiB4C,GAAY,QAAQ,MAAM,EAAE,CAAC,IAC9DG,IAAS,GAAGD,CAAO,SACnBE,IAAU,GAAGF,CAAO,UACpBG,IAAarC,MAAU,QACvB,CAACsC,IAAYC,EAAa,IAAIC,EAAqBvC,CAAY,GAC/DwC,IAAeJ,IAAarC,IAAQsC,IACpC,CAACI,GAAcC,CAAe,IAAIH,EAAS,EAAE,GAC7C,CAACI,IAASC,CAAU,IAAIL,EAAS,EAAK,GACtC,CAACM,IAAiBC,CAAkB,IAAIP,EAAwB,IAAI,GACpEQ,IAAcC,GAA6C,IAAI,GAC/DC,KAAW/B,MAAsB,CAAA,GACjCgC,IAAe5D,KAAgBuD,IAE/BM,IAAW,CAACC,MAChBC,GAAmBD,GAAW;AAAA,IAC5B,UAAU,EAAQvD;AAAA,IAClB,MAAAU;AAAA,IACA,KAAAM;AAAA,IACA,KAAAC;AAAA,IACA,MAAAK;AAAA,IACA,UAAA8B;AAAA,EAAA,CACD,GAEGK,IAAiBC;AAAA,IACrB,MACEC;AAAA,MACEhB;AAAA,MACAjC;AAAA,MACAC;AAAA,MACAE;AAAA,MACAD;AAAA,MACAU;AAAA,IAAA;AAAA,IAEJ,CAACqB,GAAc/B,GAAUC,GAAcF,GAAQW,GAAMZ,CAAI;AAAA,EAAA,GAGrDkD,IAAe,CACnBC,GACAC,GACAC,IAAsB,UACJ;AAAA,IAClB,UAAAF;AAAA,IACA,gBAAgBF;AAAA,MACdE;AAAA,MACAnD;AAAA,MACAC;AAAA,MACAE;AAAA,MACAD;AAAA,MACAU;AAAA,IAAA;AAAA,IAEF,OAAO,EAAQgC,EAASO,CAAQ;AAAA,IAChC,MAAAE;AAAA,IACA,WAAAD;AAAA,EAAA,IAGIE,IAAa,CAACC,GAAuBC,IAAY,OAAU;AAG/D,IAFK3B,KAAYE,GAAcwB,EAAQ,QAAQ,GAC3Cf,EAAY,WAAS,aAAaA,EAAY,OAAO,GACpD9C,MACD8D,KAAa/C,KAAc,IAAGf,EAAS6D,CAAO,MACjC,UAAU,WAAW,MAAM7D,EAAS6D,CAAO,GAAG9C,CAAU;AAAA,EAC3E;AAEA,EAAAgD,EAAU,MAAM,MAAM;AACpB,IAAIjB,EAAY,WAAS,aAAaA,EAAY,OAAO;AAAA,EAC3D,GAAG,CAAA,CAAE,GAELiB,EAAU,MAAM;AACd,IAAI/C,KAAkB6B,EAAmBK,EAASX,CAAY,CAAC;AAAA,EAGjE,GAAG,CAACvB,CAAgB,CAAC;AAErB,QAAMgD,IAAY,CAACC,MAA6B;AAC9C,QAAI3D,MAAS,WAAWY,UAAa+C,EAAK,QAAQ,OAAO,EAAE;AAC3D,QAAIC,EAAqB5D,CAAI,GAAG;AAC9B,YAAM6D,IAASC,GAAiBH,GAAM1D,CAAM;AAC5C,aAAI4D,MAAW,OAAaF,MAAS,KAAK,OAAOA,IAC1CnD,IAAgBqD,IAAS,KAAK,IAAIA,CAAM;AAAA,IACjD;AACA,WAAOF;AAAA,EACT,GAEMI,KAAe,CAACJ,MAAiB;AACrC,UAAMK,IAASL,EAAK,QAAQ,OAAO,EAAE;AAMrC,QAJE9C,MACC+C,EAAqB5D,CAAI,KAAKA,MAAS,YACxCgE,EAAO,SAASnD,KAEdA,KAASoD,GAA2BjE,CAAI,KAAK2D,EAAK,SAAS9C,EAAO;AACtE,UAAMsC,IAAWO,EAAUC,CAAI;AAC/B,IAAI,OAAOR,KAAa,aAClB,OAAO7C,KAAQ,YAAY6C,IAAW7C,KACtC,OAAOC,KAAQ,YAAY4C,IAAW5C,OAE5C4B;AAAA,MACEnC,MAAS,WAAWY,IAAOsD,EAAef,GAAUvC,CAAI,IAAI+C;AAAA,IAAA,GAE9DL,EAAWJ,EAAaC,GAAU,UAAUQ,EAAK,MAAM,EAAE,KAAK,IAAI,CAAC;AAAA,EACrE,GAEMQ,KAAc;AAAA,IAClB9C;AAAA,IACAvC,KAAQ,CAAC6D,IAAehB,IAAS;AAAA,IACjCgB,IAAef,IAAU;AAAA,EAAA,EACzB,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAE/B,SAAIb,uBAEC,OAAA,EAAI,WAAW,CAAC,iBAAiB,gBAAgBG,CAAI,IAAIhC,IAAY,8BAA8B,IAAIG,KAAa,EAAE,EAAE,KAAK,GAAG,GAC9H,UAAA;AAAA,IAAAR,KAAS,gBAAAuF,EAAC,QAAA,EAAK,WAAW,CAAC,wBAAwBhF,KAAkB,EAAE,EAAE,KAAK,GAAG,GAAI,UAAAP,EAAA,CAAM;AAAA,sBAC3F,OAAA,EAAI,WAAU,0BAAyB,cAAYA,GACjD,eAAkBoC,GAAA,CACrB;AAAA,EAAA,GACF,sBAKD,OAAA,EAAI,WAAW,CAAC,iBAAiB,gBAAgBC,CAAI,IAAIhC,IAAY,8BAA8B,IAAIG,KAAa,EAAE,EAAE,KAAK,GAAG,GAC9H,UAAA;AAAA,IAAAR,KACC,gBAAAwF,EAAC,SAAA,EAAM,WAAW,CAAC,wBAAwBjF,KAAkB,EAAE,EAAE,KAAK,GAAG,GAAG,SAASsC,GAClF,UAAA;AAAA,MAAA7C;AAAA,MAAOS,KAAY,gBAAA8E,EAAC,QAAA,EAAK,WAAU,2BAA0B,eAAY,QAAO,UAAA,KAAA,CAAE;AAAA,IAAA,GACrF;AAAA,sBAED,OAAA,EAAI,WAAW,CAAC,yBAAyBjD,OAAY,UAAU,iCAAiC,IAAIwB,IAAe,uBAAuB,IAAIpD,IAAW,wBAAwB,EAAE,EAAE,KAAK,GAAG,GAC3L,UAAA;AAAA,MAAAP,uBAAmB,QAAA,EAAK,WAAU,2BAA0B,eAAY,QAAQ,UAAAA,GAAe;AAAA,MAChG,gBAAAoF;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG9C;AAAA,UACJ,KAAAC;AAAA,UACA,IAAIG;AAAA,UACJ,MAAM1B,MAAS,cAAcA,MAAS,UAAUA,IAAO;AAAA,UACvD,WAAW4D,EAAqB5D,CAAI,IAAI,YAAYA,MAAS,UAAU,QAAQ;AAAA,UAC/E,OAAOoC,KAAUF,IAAea;AAAA,UAChC,UAAAzD;AAAA,UACA,UAAAC;AAAA,UACA,cAAA6B;AAAA,UACA,gBAAc,EAAQuB;AAAA,UACtB,oBAAkBwB;AAAA,UAClB,WAAW,CAAC,iBAAiBhF,KAAkB,EAAE,EAAE,KAAK,GAAG;AAAA,UAC3D,UAAU,CAACmF,MAAUP,GAAaO,EAAM,OAAO,KAAK;AAAA,UACpD,SAAS,CAACA,MAAU;AAClB,gBAAI/E,EAAU;AACd,YAAA8C,EAAW,EAAI;AACf,kBAAMkC,IAAYvE,MAAS,WAAWY,IAClCsD,EAAejC,GAAcrB,CAAI,IACjCgD,EAAqB5D,CAAI,IACvB,OAAOiC,KAAgB,EAAE,EAAE,QAAQ,KAAKuC,GAAmBvE,CAAM,EAAE,OAAO,IAC1E,OAAOgC,KAAgB,EAAE;AAC/B,YAAAE,EAAgBoC,CAAS,GACzB3E,KAAUsD,EAAajB,GAAc,OAAO,GAAGqC,CAAK;AAAA,UACtD;AAAA,UACA,QAAQ,CAACA,MAAU;AACjB,YAAAjC,EAAW,EAAK,GACZG,EAAY,WAAS,aAAaA,EAAY,OAAO;AACzD,gBAAIW,IAAWO,EAAUxB,CAAY;AACrC,YAAI,OAAOiB,KAAa,aACtBA,IAAWsB,GAAiBtB,GAAUhD,GAAcE,KAAcD,KAAY,OAAO,IAEvFmC,EAAmBK,EAASO,CAAQ,CAAC;AACrC,kBAAMI,IAAUL,EAAaC,GAAU,MAAM;AAC7C,YAAAG,EAAWC,GAAS,EAAI,GACxB5D,KAAS4D,GAASe,CAAK;AAAA,UACzB;AAAA,UACA,WAAW,CAACA,MAAU;AACpB,YAAI,CAAC9D,MAAkB8D,EAAM,QAAQ,OAAOA,EAAM,QAAQ,eAAaA,EAAM,eAAA,GAC7EzE,KAAYqD,EAAajB,GAAc,WAAWqC,EAAM,GAAG,GAAGA,CAAK;AAAA,UACrE;AAAA,UACA,cAAc,CAACA,MAAUxE,KAAeoD,EAAajB,GAAc,YAAY,GAAGqC,CAAK;AAAA,UACvF,cAAc,CAACA,MAAUvE,KAAemD,EAAajB,GAAc,YAAY,GAAGqC,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAExFxD,MAAe,CAACvB,KAAYwD,KAAkB/B,KAC7C,gBAAAoD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAYpD;AAAA,UACZ,SAAS,MAAM;AACb,YAAAmB,EAAgB,EAAE,GAClBI,EAAmBK,EAAS,IAAI,CAAC,GACjCU,EAAWJ,EAAa,MAAM,OAAO,GAAG,EAAI;AAAA,UAC9C;AAAA,UACD,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAIFjE,KAAgB,gBAAAmF,EAAC,QAAA,EAAK,WAAU,2BAA0B,eAAY,QAAQ,UAAAnF,EAAA,CAAa;AAAA,IAAA,GAC9F;AAAA,IACA,gBAAAmF;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,MAAA5F;AAAA,QACA,cAAc6D;AAAA,QACd,QAAAhB;AAAA,QACA,SAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as vt, useId as kt, useRef as te, useState as S, useEffect as
|
|
1
|
+
import { jsxs as B, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as vt, useId as kt, useRef as te, useState as S, useEffect as D, useCallback as x, useMemo as xe, useImperativeHandle as wt } from "react";
|
|
3
3
|
import { useFloating as St, autoUpdate as xt, offset as It, flip as Lt, shift as At, size as Et } from "@floating-ui/react";
|
|
4
4
|
import { useVirtualizer as zt } from "@tanstack/react-virtual";
|
|
5
5
|
import { createPortal as Bt } from "react-dom";
|
|
@@ -13,24 +13,24 @@ import { useInconelAdapters as Ot } from "../../adapters/context.js";
|
|
|
13
13
|
function Vt({
|
|
14
14
|
id: Ie,
|
|
15
15
|
name: ne,
|
|
16
|
-
label:
|
|
16
|
+
label: I,
|
|
17
17
|
options: M = [],
|
|
18
18
|
value: Le,
|
|
19
|
-
onChange:
|
|
20
|
-
optionLabel:
|
|
21
|
-
optionValue:
|
|
19
|
+
onChange: O,
|
|
20
|
+
optionLabel: V = "label",
|
|
21
|
+
optionValue: C = "value",
|
|
22
22
|
getOptionSearchText: U,
|
|
23
|
-
isOptionDisabled:
|
|
23
|
+
isOptionDisabled: F = () => !1,
|
|
24
24
|
placeholder: Ae,
|
|
25
25
|
isClearable: le = !1,
|
|
26
26
|
isDisabled: Ee = !1,
|
|
27
27
|
isReadOnly: ze = !1,
|
|
28
28
|
isRequired: oe = !1,
|
|
29
29
|
isLoading: Be = !1,
|
|
30
|
-
loadOptions:
|
|
30
|
+
loadOptions: h,
|
|
31
31
|
loadOptionsDebounceMs: re = 250,
|
|
32
32
|
hint: ie,
|
|
33
|
-
errorMessage:
|
|
33
|
+
errorMessage: y,
|
|
34
34
|
asyncErrorMessage: De,
|
|
35
35
|
loadingMessage: Oe,
|
|
36
36
|
noOptionsMessage: Ve,
|
|
@@ -38,14 +38,14 @@ function Vt({
|
|
|
38
38
|
openMenuButtonLabel: Fe,
|
|
39
39
|
closeMenuButtonLabel: Ne,
|
|
40
40
|
searchLocale: $,
|
|
41
|
-
menuPortalTarget:
|
|
41
|
+
menuPortalTarget: N,
|
|
42
42
|
virtualize: je = !1,
|
|
43
43
|
virtualizationThreshold: Re = 100,
|
|
44
44
|
optionHeight: qe = 44,
|
|
45
45
|
className: He,
|
|
46
46
|
classNames: i = {},
|
|
47
47
|
styles: s = {},
|
|
48
|
-
onInputChange:
|
|
48
|
+
onInputChange: L,
|
|
49
49
|
onMenuOpen: Me,
|
|
50
50
|
onMenuClose: se,
|
|
51
51
|
autoFocus: Ue,
|
|
@@ -65,30 +65,30 @@ function Vt({
|
|
|
65
65
|
size: ce = "md",
|
|
66
66
|
required: Pe
|
|
67
67
|
}, et) {
|
|
68
|
-
const f = Ot(), de = Qe !== void 0 || ae !== void 0 || T !== void 0,
|
|
69
|
-
|
|
70
|
-
if (!
|
|
68
|
+
const f = Ot(), de = Qe !== void 0 || ae !== void 0 || T !== void 0, j = Le ?? Ge ?? Ke ?? null, tt = kt(), d = Ie ?? `inconel-select-${tt.replace(/:/g, "")}`, ue = `${d}-label`, fe = `${d}-listbox`, me = `${d}-message`, pe = `${d}-hint`, ge = te(null), A = te(null), Y = te(null), [n, he] = S(!1), [m, K] = S(""), [a, u] = S(0), [nt, lt] = S(null), [ot, ye] = S(!1), [rt, be] = S(!1);
|
|
69
|
+
D(() => {
|
|
70
|
+
if (!h) return;
|
|
71
71
|
const e = new AbortController(), t = window.setTimeout(async () => {
|
|
72
|
-
|
|
72
|
+
ye(!0), be(!1);
|
|
73
73
|
try {
|
|
74
|
-
const r = await
|
|
74
|
+
const r = await h(
|
|
75
75
|
m,
|
|
76
76
|
e.signal
|
|
77
77
|
);
|
|
78
78
|
e.signal.aborted || lt(r);
|
|
79
79
|
} catch {
|
|
80
|
-
e.signal.aborted ||
|
|
80
|
+
e.signal.aborted || be(!0);
|
|
81
81
|
} finally {
|
|
82
|
-
e.signal.aborted ||
|
|
82
|
+
e.signal.aborted || ye(!1);
|
|
83
83
|
}
|
|
84
84
|
}, re);
|
|
85
85
|
return () => {
|
|
86
86
|
window.clearTimeout(t), e.abort();
|
|
87
87
|
};
|
|
88
|
-
}, [m,
|
|
89
|
-
const
|
|
90
|
-
(e) => typeof
|
|
91
|
-
[
|
|
88
|
+
}, [m, h, re]);
|
|
89
|
+
const b = h ? nt ?? M : M, W = Be || ot, p = Ee || !!$e, E = ze || !!Ye, G = oe || !!Pe, it = (T === "in" && y ? String(y) : Ae) ?? String(f.translate?.("select", "Seçim yapın...") ?? "Seçim yapın..."), st = Ve ?? f.translate?.("noData", "Sonuç bulunamadı.") ?? "Sonuç bulunamadı.", at = Oe ?? f.translate?.("loading", "Yükleniyor...") ?? "Yükleniyor...", ct = Ce ?? String(f.translate?.("clearSelection", "Seçimi temizle") ?? "Seçimi temizle"), dt = Fe ?? String(f.translate?.("openOptions", "Seçenekleri aç") ?? "Seçenekleri aç"), ut = Ne ?? String(f.translate?.("closeOptions", "Seçenekleri kapat") ?? "Seçenekleri kapat"), J = x(
|
|
90
|
+
(e) => typeof V == "function" ? V(e) : String(e[V]),
|
|
91
|
+
[V]
|
|
92
92
|
), Q = x(
|
|
93
93
|
(e) => {
|
|
94
94
|
if (U) return U(e);
|
|
@@ -98,38 +98,38 @@ function Vt({
|
|
|
98
98
|
[J, U]
|
|
99
99
|
), v = x(
|
|
100
100
|
(e) => {
|
|
101
|
-
const t = typeof
|
|
101
|
+
const t = typeof C == "function" ? C(e) : e[C];
|
|
102
102
|
if (typeof t != "string" && typeof t != "number")
|
|
103
103
|
throw new TypeError("optionValue must resolve to a string or number.");
|
|
104
104
|
return t;
|
|
105
105
|
},
|
|
106
|
-
[
|
|
107
|
-
), g =
|
|
106
|
+
[C]
|
|
107
|
+
), g = j && typeof j == "object" ? v(j) : j, X = x(
|
|
108
108
|
(e, t) => {
|
|
109
|
-
|
|
109
|
+
O && (de ? O(t) : O(e, t));
|
|
110
110
|
},
|
|
111
|
-
[de,
|
|
111
|
+
[de, O]
|
|
112
112
|
), Z = xe(() => {
|
|
113
113
|
const e = /* @__PURE__ */ new Set();
|
|
114
|
-
return
|
|
115
|
-
}, [
|
|
116
|
-
|
|
114
|
+
return b.map(v).filter((t) => e.has(t) ? !0 : (e.add(t), !1));
|
|
115
|
+
}, [b, v]);
|
|
116
|
+
D(() => {
|
|
117
117
|
Z.length && console.warn(
|
|
118
|
-
`Duplicate optionValue found in Select "${
|
|
118
|
+
`Duplicate optionValue found in Select "${I}":`,
|
|
119
119
|
Z
|
|
120
120
|
);
|
|
121
|
-
}, [Z,
|
|
122
|
-
const _ = [...M, ...
|
|
121
|
+
}, [Z, I]);
|
|
122
|
+
const _ = [...M, ...b].find(
|
|
123
123
|
(e) => v(e) === g
|
|
124
124
|
), ft = _ ? Q(_) : "", l = xe(() => {
|
|
125
125
|
const e = m.trim().toLocaleLowerCase($);
|
|
126
|
-
return !e ||
|
|
126
|
+
return !e || h ? b : b.filter(
|
|
127
127
|
(t) => Q(t).toLocaleLowerCase($).includes(e)
|
|
128
128
|
);
|
|
129
|
-
}, [
|
|
129
|
+
}, [b, Q, m, h, $]), { refs: ve, floatingStyles: mt } = St({
|
|
130
130
|
open: n,
|
|
131
131
|
placement: "bottom-start",
|
|
132
|
-
strategy:
|
|
132
|
+
strategy: N ? "fixed" : "absolute",
|
|
133
133
|
whileElementsMounted: xt,
|
|
134
134
|
middleware: [
|
|
135
135
|
It(8),
|
|
@@ -145,63 +145,63 @@ function Vt({
|
|
|
145
145
|
}
|
|
146
146
|
})
|
|
147
147
|
]
|
|
148
|
-
}),
|
|
148
|
+
}), R = je || l.length >= Re, q = zt({
|
|
149
149
|
count: l.length,
|
|
150
150
|
getScrollElement: () => Y.current,
|
|
151
151
|
estimateSize: () => qe,
|
|
152
152
|
overscan: 5,
|
|
153
|
-
enabled:
|
|
153
|
+
enabled: R && n
|
|
154
154
|
}), k = x(() => {
|
|
155
|
-
|
|
156
|
-
}, [
|
|
157
|
-
p ||
|
|
158
|
-
},
|
|
159
|
-
p ||
|
|
160
|
-
}, [p,
|
|
155
|
+
he(!1), K(""), L?.(""), se?.();
|
|
156
|
+
}, [L, se]), z = () => {
|
|
157
|
+
p || E || (n || Me?.(), he(!0));
|
|
158
|
+
}, H = x(() => {
|
|
159
|
+
p || E || (X(null, null), K(""), u(0), L?.(""), A.current?.focus());
|
|
160
|
+
}, [p, E, X, L]);
|
|
161
161
|
wt(
|
|
162
162
|
et,
|
|
163
163
|
() => ({
|
|
164
|
-
focus: () =>
|
|
165
|
-
blur: () =>
|
|
166
|
-
clear:
|
|
164
|
+
focus: () => A.current?.focus(),
|
|
165
|
+
blur: () => A.current?.blur(),
|
|
166
|
+
clear: H
|
|
167
167
|
}),
|
|
168
|
-
[
|
|
169
|
-
),
|
|
168
|
+
[H]
|
|
169
|
+
), D(() => {
|
|
170
170
|
const e = (t) => {
|
|
171
171
|
const r = t.target;
|
|
172
172
|
!ge.current?.contains(r) && !Y.current?.contains(r) && k();
|
|
173
173
|
};
|
|
174
174
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
175
|
-
}, [k]),
|
|
175
|
+
}, [k]), D(() => {
|
|
176
176
|
a >= l.length && u(0);
|
|
177
|
-
}, [a, l.length]),
|
|
178
|
-
|
|
177
|
+
}, [a, l.length]), D(() => {
|
|
178
|
+
R && n && l[a] && q.scrollToIndex(a, { align: "auto" });
|
|
179
179
|
}, [
|
|
180
180
|
a,
|
|
181
181
|
l,
|
|
182
182
|
n,
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
R,
|
|
184
|
+
q
|
|
185
185
|
]);
|
|
186
186
|
const ke = (e) => {
|
|
187
|
-
|
|
187
|
+
F(e) || (X(v(e), e), k(), A.current?.focus());
|
|
188
188
|
}, pt = (e) => {
|
|
189
189
|
if (!l.length) return;
|
|
190
190
|
let t = a;
|
|
191
191
|
do
|
|
192
192
|
t = (t + e + l.length) % l.length;
|
|
193
|
-
while (
|
|
193
|
+
while (F(l[t]) && t !== a);
|
|
194
194
|
u(t);
|
|
195
195
|
}, P = (e = !1) => {
|
|
196
196
|
const t = l.map((r, w) => ({ option: r, index: w }));
|
|
197
|
-
return e && t.reverse(), t.find(({ option: r }) => !
|
|
197
|
+
return e && t.reverse(), t.find(({ option: r }) => !F(r))?.index ?? 0;
|
|
198
198
|
}, gt = (e) => {
|
|
199
199
|
if (e.key === "Backspace" && !m && g !== null && le) {
|
|
200
|
-
e.preventDefault(),
|
|
200
|
+
e.preventDefault(), H();
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
203
|
if (e.key === "ArrowDown" || e.key === "ArrowUp")
|
|
204
|
-
e.preventDefault(), n ? pt(e.key === "ArrowDown" ? 1 : -1) : (
|
|
204
|
+
e.preventDefault(), n ? pt(e.key === "ArrowDown" ? 1 : -1) : (z(), u(P(e.key === "ArrowUp")));
|
|
205
205
|
else if (e.key === "Home" && n)
|
|
206
206
|
e.preventDefault(), u(P());
|
|
207
207
|
else if (e.key === "End" && n)
|
|
@@ -212,8 +212,8 @@ function Vt({
|
|
|
212
212
|
t && ke(t);
|
|
213
213
|
} else e.key === "Escape" && n ? (e.preventDefault(), k()) : e.key === "Tab" && k();
|
|
214
214
|
}, we = (e, t, r) => {
|
|
215
|
-
const w = v(e), Se =
|
|
216
|
-
return /* @__PURE__ */
|
|
215
|
+
const w = v(e), Se = F(e);
|
|
216
|
+
return /* @__PURE__ */ B(
|
|
217
217
|
"div",
|
|
218
218
|
{
|
|
219
219
|
id: `${d}-option-${t}`,
|
|
@@ -231,7 +231,7 @@ function Vt({
|
|
|
231
231
|
),
|
|
232
232
|
style: { ...r, ...s.option },
|
|
233
233
|
onMouseEnter: () => u(t),
|
|
234
|
-
onMouseDown: (
|
|
234
|
+
onMouseDown: (bt) => bt.preventDefault(),
|
|
235
235
|
onClick: () => ke(e),
|
|
236
236
|
children: [
|
|
237
237
|
/* @__PURE__ */ o("span", { children: J(e) }),
|
|
@@ -240,7 +240,7 @@ function Vt({
|
|
|
240
240
|
},
|
|
241
241
|
w
|
|
242
242
|
);
|
|
243
|
-
},
|
|
243
|
+
}, ht = W ? /* @__PURE__ */ B(
|
|
244
244
|
"div",
|
|
245
245
|
{
|
|
246
246
|
role: "status",
|
|
@@ -266,13 +266,13 @@ function Vt({
|
|
|
266
266
|
style: s.message,
|
|
267
267
|
children: st
|
|
268
268
|
}
|
|
269
|
-
) :
|
|
269
|
+
) : R ? /* @__PURE__ */ o(
|
|
270
270
|
"div",
|
|
271
271
|
{
|
|
272
272
|
role: "presentation",
|
|
273
273
|
className: "inconel-select-virtual-content",
|
|
274
|
-
style: { height:
|
|
275
|
-
children:
|
|
274
|
+
style: { height: q.getTotalSize() },
|
|
275
|
+
children: q.getVirtualItems().map(
|
|
276
276
|
(e) => we(l[e.index], e.index, {
|
|
277
277
|
position: "absolute",
|
|
278
278
|
top: 0,
|
|
@@ -291,17 +291,17 @@ function Vt({
|
|
|
291
291
|
},
|
|
292
292
|
id: fe,
|
|
293
293
|
role: "listbox",
|
|
294
|
-
"aria-labelledby": ue,
|
|
294
|
+
"aria-labelledby": I ? ue : void 0,
|
|
295
295
|
className: c(
|
|
296
296
|
"inconel-select-menu",
|
|
297
|
-
|
|
297
|
+
N && "inconel-select-menu-portal",
|
|
298
298
|
i.menu
|
|
299
299
|
),
|
|
300
300
|
style: { ...mt, ...s.menu },
|
|
301
|
-
children:
|
|
301
|
+
children: ht
|
|
302
302
|
}
|
|
303
|
-
) : null,
|
|
304
|
-
return Je ? /* @__PURE__ */
|
|
303
|
+
) : null, yt = y ? me : ie ? pe : void 0;
|
|
304
|
+
return Je ? /* @__PURE__ */ B(
|
|
305
305
|
"div",
|
|
306
306
|
{
|
|
307
307
|
ref: ge,
|
|
@@ -314,7 +314,7 @@ function Vt({
|
|
|
314
314
|
),
|
|
315
315
|
style: s.root,
|
|
316
316
|
children: [
|
|
317
|
-
/* @__PURE__ */
|
|
317
|
+
I && /* @__PURE__ */ B(
|
|
318
318
|
"label",
|
|
319
319
|
{
|
|
320
320
|
id: ue,
|
|
@@ -322,12 +322,12 @@ function Vt({
|
|
|
322
322
|
className: c(i.label, _e),
|
|
323
323
|
style: s.label,
|
|
324
324
|
children: [
|
|
325
|
-
|
|
325
|
+
I,
|
|
326
326
|
G && /* @__PURE__ */ o("span", { "aria-hidden": "true", children: " *" })
|
|
327
327
|
]
|
|
328
328
|
}
|
|
329
329
|
),
|
|
330
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ B(
|
|
331
331
|
"div",
|
|
332
332
|
{
|
|
333
333
|
ref: ve.setReference,
|
|
@@ -335,7 +335,7 @@ function Vt({
|
|
|
335
335
|
"inconel-select-control",
|
|
336
336
|
n && "inconel-is-open",
|
|
337
337
|
p && "inconel-is-disabled",
|
|
338
|
-
!!
|
|
338
|
+
!!y && "inconel-has-error",
|
|
339
339
|
i.control
|
|
340
340
|
),
|
|
341
341
|
style: s.control,
|
|
@@ -343,20 +343,20 @@ function Vt({
|
|
|
343
343
|
/* @__PURE__ */ o(
|
|
344
344
|
"input",
|
|
345
345
|
{
|
|
346
|
-
ref:
|
|
346
|
+
ref: A,
|
|
347
347
|
id: d,
|
|
348
348
|
role: "combobox",
|
|
349
349
|
"aria-expanded": n,
|
|
350
350
|
"aria-controls": fe,
|
|
351
351
|
"aria-autocomplete": "list",
|
|
352
352
|
"aria-activedescendant": n && l[a] ? `${d}-option-${a}` : void 0,
|
|
353
|
-
"aria-describedby":
|
|
354
|
-
"aria-invalid": !!
|
|
353
|
+
"aria-describedby": yt,
|
|
354
|
+
"aria-invalid": !!y,
|
|
355
355
|
"aria-required": oe,
|
|
356
356
|
"aria-busy": W,
|
|
357
357
|
required: G,
|
|
358
358
|
disabled: p,
|
|
359
|
-
readOnly:
|
|
359
|
+
readOnly: E || !Te,
|
|
360
360
|
autoFocus: Ue,
|
|
361
361
|
autoComplete: "off",
|
|
362
362
|
placeholder: it,
|
|
@@ -367,25 +367,25 @@ function Vt({
|
|
|
367
367
|
const t = Xe ? e.target.value.toLocaleUpperCase(
|
|
368
368
|
f.locale ?? "tr-TR"
|
|
369
369
|
) : e.target.value;
|
|
370
|
-
K(t), u(0),
|
|
370
|
+
K(t), u(0), L?.(t), z();
|
|
371
371
|
},
|
|
372
|
-
onClick:
|
|
372
|
+
onClick: z,
|
|
373
373
|
onFocus: (e) => {
|
|
374
|
-
|
|
374
|
+
z(), _ && !m && e.currentTarget.select();
|
|
375
375
|
},
|
|
376
376
|
onBlur: We,
|
|
377
377
|
onKeyDown: gt
|
|
378
378
|
}
|
|
379
379
|
),
|
|
380
380
|
W && /* @__PURE__ */ o("span", { className: "inconel-select-spinner", "aria-hidden": "true" }),
|
|
381
|
-
le && g !== null && !p && !
|
|
381
|
+
le && g !== null && !p && !E && /* @__PURE__ */ o(
|
|
382
382
|
"button",
|
|
383
383
|
{
|
|
384
384
|
type: "button",
|
|
385
385
|
className: c("inconel-select-clear", i.clearButton),
|
|
386
386
|
style: s.clearButton,
|
|
387
387
|
"aria-label": ct,
|
|
388
|
-
onClick:
|
|
388
|
+
onClick: H,
|
|
389
389
|
children: "×"
|
|
390
390
|
}
|
|
391
391
|
),
|
|
@@ -399,7 +399,7 @@ function Vt({
|
|
|
399
399
|
"aria-expanded": n,
|
|
400
400
|
disabled: p,
|
|
401
401
|
tabIndex: -1,
|
|
402
|
-
onClick: () => n ? k() :
|
|
402
|
+
onClick: () => n ? k() : z(),
|
|
403
403
|
children: /* @__PURE__ */ o(
|
|
404
404
|
"svg",
|
|
405
405
|
{
|
|
@@ -438,12 +438,12 @@ function Vt({
|
|
|
438
438
|
Dt,
|
|
439
439
|
{
|
|
440
440
|
hint: ie,
|
|
441
|
-
errorMessage: T === "in" ? void 0 :
|
|
441
|
+
errorMessage: T === "in" ? void 0 : y,
|
|
442
442
|
hintId: pe,
|
|
443
443
|
errorId: me
|
|
444
444
|
}
|
|
445
445
|
),
|
|
446
|
-
|
|
446
|
+
N && ee ? Bt(ee, N) : ee
|
|
447
447
|
]
|
|
448
448
|
}
|
|
449
449
|
) : null;
|