asterui 0.12.69 → 0.12.70
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/Form.d.ts +5 -2
- package/dist/components/Form.js +184 -175
- package/dist/components/Form.js.map +1 -1
- package/dist/components/Input.js +128 -123
- package/dist/components/Input.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +180 -177
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import React, { forwardRef, useState, useCallback, useRef, useEffect } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'input'\nconst dInputXs = 'input-xs'\nconst dInputSm = 'input-sm'\nconst dInputMd = 'input-md'\nconst dInputLg = 'input-lg'\nconst dInputXl = 'input-xl'\nconst dInputNeutral = 'input-neutral'\nconst dInputPrimary = 'input-primary'\nconst dInputSecondary = 'input-secondary'\nconst dInputAccent = 'input-accent'\nconst dInputInfo = 'input-info'\nconst dInputSuccess = 'input-success'\nconst dInputWarning = 'input-warning'\nconst dInputError = 'input-error'\nconst dInputGhost = 'input-ghost'\nconst dFloatingLabel = 'floating-label'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n type?: 'text' | 'password' | 'email' | 'number' | 'date' | 'datetime-local' | 'week' | 'month' | 'tel' | 'url' | 'search' | 'time'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n className?: string\n /** Input mask pattern. Use # for digits, A for letters, * for alphanumeric */\n mask?: string\n /** Placeholder character shown in mask (default: _) */\n maskPlaceholder?: string\n /** Show clear button when input has value */\n allowClear?: boolean | { clearIcon?: React.ReactNode }\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Prefix icon or element (inside input) */\n prefix?: React.ReactNode\n /** Suffix icon or element (inside input) */\n suffix?: React.ReactNode\n /** Text/element before input (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after input (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** ID for error message element (for aria-describedby) */\n errorId?: string\n /** Render as unstyled input (for use inside styled wrappers) */\n unstyled?: boolean\n 'data-testid'?: string\n}\n\n// Helper to apply mask to raw value\nfunction applyMask(raw: string, mask: string, placeholder: string): string {\n let result = ''\n let rawIndex = 0\n\n for (let i = 0; i < mask.length && rawIndex <= raw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (rawIndex < raw.length) {\n result += raw[rawIndex]\n rawIndex++\n } else {\n result += placeholder\n }\n } else {\n result += maskChar\n }\n }\n\n return result\n}\n\n// Extract raw value from masked input\nfunction extractRaw(value: string, mask: string, placeholder: string): string {\n let raw = ''\n for (let i = 0; i < value.length && i < mask.length; i++) {\n const maskChar = mask[i]\n if ((maskChar === '#' || maskChar === 'A' || maskChar === '*') && value[i] !== placeholder) {\n raw += value[i]\n }\n }\n return raw\n}\n\n// Check if character is valid for mask position\nfunction isValidChar(char: string, maskChar: string): boolean {\n if (maskChar === '#') return /\\d/.test(char)\n if (maskChar === 'A') return /[a-zA-Z]/.test(char)\n if (maskChar === '*') return /[a-zA-Z0-9]/.test(char)\n return false\n}\n\n// Find next input position in mask\nfunction findNextInputPosition(mask: string, fromIndex: number): number {\n for (let i = fromIndex; i < mask.length; i++) {\n if (mask[i] === '#' || mask[i] === 'A' || mask[i] === '*') {\n return i\n }\n }\n return mask.length\n}\n\n// Clear icon component\nconst ClearIcon: React.FC<{ onClick: () => void; className?: string }> = ({ onClick, className }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={`flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity ${className || ''}`}\n aria-label=\"Clear input\"\n tabIndex={-1}\n >\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n)\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n className = '',\n mask,\n maskPlaceholder = '_',\n allowClear,\n onClear,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n floatingLabel,\n errorId,\n unstyled = false,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n disabled,\n required,\n 'data-testid': testId,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n const colorClasses = {\n neutral: dInputNeutral,\n primary: dInputPrimary,\n secondary: dInputSecondary,\n accent: dInputAccent,\n info: dInputInfo,\n success: dInputSuccess,\n warning: dInputWarning,\n error: dInputError,\n }\n\n const statusClasses = {\n error: dInputError,\n warning: dInputWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons OR unstyled prop, the wrapper has the input styling\n // Inner input should be unstyled (grow to fill space)\n const hasExternalAddons = addonBefore || addonAfter\n const shouldBeUnstyled = hasExternalAddons || unstyled\n\n const inputClasses = shouldBeUnstyled\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dInput,\n !bordered && 'border-0',\n ghost && dInputGhost,\n sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Mask handling\n const innerRef = useRef<HTMLInputElement>(null)\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || innerRef\n\n const getInitialRaw = useCallback(() => {\n if (!mask) return ''\n const initial = (value ?? defaultValue ?? '') as string\n return extractRaw(initial, mask, maskPlaceholder)\n }, [mask, value, defaultValue, maskPlaceholder])\n\n const [rawValue, setRawValue] = useState(getInitialRaw)\n const [cursorPos, setCursorPos] = useState<number | null>(null)\n\n // Sync with controlled value\n useEffect(() => {\n if (mask && value !== undefined) {\n setRawValue(extractRaw(value as string, mask, maskPlaceholder))\n }\n }, [mask, value, maskPlaceholder])\n\n // Set cursor position after render\n useEffect(() => {\n if (cursorPos !== null && inputRef.current) {\n inputRef.current.setSelectionRange(cursorPos, cursorPos)\n setCursorPos(null)\n }\n }, [cursorPos, inputRef])\n\n const handleMaskedChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!mask) {\n onChange?.(e)\n return\n }\n\n const input = e.target\n const inputValue = input.value\n\n // Extract what the user is trying to type\n const newRaw = extractRaw(inputValue, mask, maskPlaceholder)\n\n // Filter to only valid characters\n let filteredRaw = ''\n let rawIdx = 0\n for (let i = 0; i < mask.length && rawIdx < newRaw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (isValidChar(newRaw[rawIdx], maskChar)) {\n filteredRaw += newRaw[rawIdx]\n }\n rawIdx++\n }\n }\n\n setRawValue(filteredRaw)\n\n // Calculate new cursor position\n const maskedValue = applyMask(filteredRaw, mask, maskPlaceholder)\n let newCursor = findNextInputPosition(mask, 0)\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < filteredRaw.length) {\n charsPlaced++\n newCursor = i + 1\n }\n }\n }\n // Skip to next input position if we're on a literal\n newCursor = findNextInputPosition(mask, newCursor)\n if (newCursor > mask.length) newCursor = mask.length\n\n setCursorPos(newCursor)\n\n // Create synthetic event with masked value\n const syntheticEvent = {\n ...e,\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n },\n [mask, maskPlaceholder, onChange]\n )\n\n const handleMaskedKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!mask) {\n onKeyDown?.(e)\n return\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newRaw = rawValue.slice(0, -1)\n setRawValue(newRaw)\n\n // Calculate cursor position\n let newCursor = 0\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < newRaw.length) {\n charsPlaced++\n newCursor = i + 1\n } else {\n newCursor = i\n break\n }\n }\n }\n setCursorPos(newCursor)\n\n const maskedValue = applyMask(newRaw, mask, maskPlaceholder)\n const input = e.currentTarget\n const syntheticEvent = {\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as unknown as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n }\n\n onKeyDown?.(e)\n },\n [mask, maskPlaceholder, rawValue, onChange, onKeyDown]\n )\n\n // Track internal value for allowClear visibility\n const [internalValue, setInternalValue] = useState((value ?? defaultValue ?? '') as string)\n\n // Sync internal value with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value as string)\n }\n }, [value])\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }, [onChange])\n\n const handleClear = useCallback(() => {\n setInternalValue('')\n setRawValue('')\n onClear?.()\n // Create synthetic event for onChange\n if (onChange && inputRef.current) {\n const syntheticEvent = {\n target: { ...inputRef.current, value: '' },\n currentTarget: { ...inputRef.current, value: '' },\n } as React.ChangeEvent<HTMLInputElement>\n onChange(syntheticEvent)\n }\n }, [onClear, onChange, inputRef])\n\n // Determine if we should show clear button\n const currentValue = mask ? rawValue : internalValue\n const showClear = allowClear && currentValue && !disabled\n\n // Get custom clear icon if provided\n const clearIcon = typeof allowClear === 'object' && allowClear.clearIcon\n ? allowClear.clearIcon\n : null\n\n // Accessibility attributes\n const ariaProps: Record<string, string | boolean | undefined> = {}\n if (status === 'error') {\n ariaProps['aria-invalid'] = true\n }\n if (errorId) {\n ariaProps['aria-describedby'] = errorId\n }\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n // If we have prefix, suffix, or allowClear, wrap in a container\n const hasInternalAddons = prefix || suffix || allowClear\n const hasWrapper = hasInternalAddons || hasExternalAddons || !!floatingLabel\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const inputTestId = testId ? (hasWrapper ? getTestId('input') : testId) : undefined\n\n // Size class for floating label\n const floatingSizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n // Build the masked value if needed\n const maskedValue = mask ? applyMask(rawValue, mask, maskPlaceholder) : undefined\n\n // Build the core input element\n const buildInput = (extraClasses?: string) => (\n <input\n ref={inputRef}\n type={mask ? 'text' : type}\n className={[\n inputClasses,\n hasInternalAddons && 'w-full',\n prefix && 'pl-10',\n (suffix || showClear) && 'pr-10',\n extraClasses,\n ].filter(Boolean).join(' ')}\n value={maskedValue ?? (value !== undefined ? value : (hasInternalAddons ? internalValue : value))}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : (hasInternalAddons ? handleChange : onChange)}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n )\n\n // Build input with internal addons (prefix icon, suffix icon, clear button)\n const buildInputWithInternalAddons = (extraClasses?: string) => {\n if (!hasInternalAddons) {\n return buildInput(extraClasses)\n }\n\n return (\n <div\n className={`relative flex items-center ${extraClasses || ''}`}\n data-testid={!hasExternalAddons && !floatingLabel ? testId : getTestId('input-wrapper')}\n >\n {prefix && (\n <span\n className=\"absolute left-3 flex items-center text-base-content/70 pointer-events-none z-10\"\n data-testid={getTestId('prefix')}\n >\n {prefix}\n </span>\n )}\n {buildInput()}\n {(suffix || showClear) && (\n <span className=\"absolute right-3 flex items-center gap-1 z-10\" data-testid={getTestId('suffix')}>\n {showClear && (\n <span data-testid={getTestId('clear')}>\n {clearIcon || <ClearIcon onClick={handleClear} />}\n </span>\n )}\n {suffix && <span className=\"text-base-content/70\">{suffix}</span>}\n </span>\n )}\n </div>\n )\n }\n\n // Wrap with floating label if specified\n const wrapWithFloatingLabel = (input: React.ReactNode) => {\n if (!floatingLabel) return input\n\n const floatingClasses = [\n dFloatingLabel,\n floatingSizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses} data-testid={testId}>\n {input}\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons (addonBefore/addonAfter) using DaisyUI input wrapper pattern\n const wrapWithExternalAddons = (input: React.ReactNode) => {\n if (!hasExternalAddons) return input\n\n const addonClasses = [\n dInput,\n 'flex',\n 'items-center',\n 'gap-2',\n sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses} data-testid={testId}>\n {addonBefore && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-before')}>\n {addonBefore}\n </span>\n )}\n {input}\n {addonAfter && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-after')}>\n {addonAfter}\n </span>\n )}\n </label>\n )\n }\n\n // Build the final element\n const inputElement = buildInputWithInternalAddons(\n floatingLabel ? `${dInput} w-full` : undefined\n )\n\n // Apply wrappers\n return wrapWithExternalAddons(wrapWithFloatingLabel(\n floatingLabel ? (\n // For floating label, use raw input (label wrapper provides styling)\n <input\n ref={inputRef}\n type={mask ? 'text' : type}\n className={`${dInput} w-full`}\n value={maskedValue ?? (value !== undefined ? value : internalValue)}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : handleChange}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n ) : inputElement\n ))\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["dInput","dInputXs","dInputSm","dInputMd","dInputLg","dInputXl","dInputNeutral","dInputPrimary","dInputSecondary","dInputAccent","dInputInfo","dInputSuccess","dInputWarning","dInputError","dInputGhost","dFloatingLabel","applyMask","raw","mask","placeholder","result","rawIndex","i","maskChar","extractRaw","value","isValidChar","char","findNextInputPosition","fromIndex","ClearIcon","onClick","className","jsx","Input","forwardRef","type","size","color","status","ghost","bordered","maskPlaceholder","allowClear","onClear","prefix","suffix","addonBefore","addonAfter","floatingLabel","errorId","unstyled","defaultValue","onChange","onKeyDown","disabled","required","testId","props","ref","componentSize","useConfig","effectiveSize","sizeClasses","effectiveColorClass","hasExternalAddons","inputClasses","innerRef","useRef","inputRef","getInitialRaw","useCallback","rawValue","setRawValue","useState","cursorPos","setCursorPos","useEffect","handleMaskedChange","e","input","inputValue","newRaw","filteredRaw","rawIdx","maskedValue","newCursor","charsPlaced","syntheticEvent","handleMaskedKeyDown","internalValue","setInternalValue","handleChange","handleClear","showClear","clearIcon","ariaProps","hasInternalAddons","hasWrapper","getTestId","inputTestId","floatingSizeClasses","buildInput","extraClasses","buildInputWithInternalAddons","jsxs","wrapWithFloatingLabel","floatingClasses","wrapWithExternalAddons","addonClasses","inputElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import React, { forwardRef, useState, useCallback, useRef, useEffect } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'input'\nconst dInputXs = 'input-xs'\nconst dInputSm = 'input-sm'\nconst dInputMd = 'input-md'\nconst dInputLg = 'input-lg'\nconst dInputXl = 'input-xl'\nconst dInputNeutral = 'input-neutral'\nconst dInputPrimary = 'input-primary'\nconst dInputSecondary = 'input-secondary'\nconst dInputAccent = 'input-accent'\nconst dInputInfo = 'input-info'\nconst dInputSuccess = 'input-success'\nconst dInputWarning = 'input-warning'\nconst dInputError = 'input-error'\nconst dInputGhost = 'input-ghost'\nconst dFloatingLabel = 'floating-label'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n type?: 'text' | 'password' | 'email' | 'number' | 'date' | 'datetime-local' | 'week' | 'month' | 'tel' | 'url' | 'search' | 'time'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n className?: string\n /** Input mask pattern. Use # for digits, A for letters, * for alphanumeric */\n mask?: string\n /** Placeholder character shown in mask (default: _) */\n maskPlaceholder?: string\n /** Show clear button when input has value */\n allowClear?: boolean | { clearIcon?: React.ReactNode }\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Prefix icon or element (inside input) */\n prefix?: React.ReactNode\n /** Suffix icon or element (inside input) */\n suffix?: React.ReactNode\n /** Text/element before input (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after input (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** ID for error message element (for aria-describedby) */\n errorId?: string\n /** Render as unstyled input (for use inside styled wrappers) */\n unstyled?: boolean\n 'data-testid'?: string\n}\n\n// Helper to apply mask to raw value\nfunction applyMask(raw: string, mask: string, placeholder: string): string {\n let result = ''\n let rawIndex = 0\n\n for (let i = 0; i < mask.length && rawIndex <= raw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (rawIndex < raw.length) {\n result += raw[rawIndex]\n rawIndex++\n } else {\n result += placeholder\n }\n } else {\n result += maskChar\n }\n }\n\n return result\n}\n\n// Extract raw value from masked input\nfunction extractRaw(value: string, mask: string, placeholder: string): string {\n let raw = ''\n for (let i = 0; i < value.length && i < mask.length; i++) {\n const maskChar = mask[i]\n if ((maskChar === '#' || maskChar === 'A' || maskChar === '*') && value[i] !== placeholder) {\n raw += value[i]\n }\n }\n return raw\n}\n\n// Check if character is valid for mask position\nfunction isValidChar(char: string, maskChar: string): boolean {\n if (maskChar === '#') return /\\d/.test(char)\n if (maskChar === 'A') return /[a-zA-Z]/.test(char)\n if (maskChar === '*') return /[a-zA-Z0-9]/.test(char)\n return false\n}\n\n// Find next input position in mask\nfunction findNextInputPosition(mask: string, fromIndex: number): number {\n for (let i = fromIndex; i < mask.length; i++) {\n if (mask[i] === '#' || mask[i] === 'A' || mask[i] === '*') {\n return i\n }\n }\n return mask.length\n}\n\n// Clear icon component\nconst ClearIcon: React.FC<{ onClick: () => void; className?: string }> = ({ onClick, className }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={`flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity ${className || ''}`}\n aria-label=\"Clear input\"\n tabIndex={-1}\n >\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n)\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n className = '',\n mask,\n maskPlaceholder = '_',\n allowClear,\n onClear,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n floatingLabel,\n errorId,\n unstyled = false,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n disabled,\n required,\n 'data-testid': testId,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n const colorClasses = {\n neutral: dInputNeutral,\n primary: dInputPrimary,\n secondary: dInputSecondary,\n accent: dInputAccent,\n info: dInputInfo,\n success: dInputSuccess,\n warning: dInputWarning,\n error: dInputError,\n }\n\n const statusClasses = {\n error: dInputError,\n warning: dInputWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons OR unstyled prop, the wrapper has the input styling\n // Inner input should be unstyled (grow to fill space)\n const hasExternalAddons = addonBefore || addonAfter\n const shouldBeUnstyled = hasExternalAddons || unstyled\n\n const inputClasses = shouldBeUnstyled\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dInput,\n !bordered && 'border-0',\n ghost && dInputGhost,\n sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Mask handling\n const inputRef = useRef<HTMLInputElement>(null)\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (!ref) return\n if (typeof ref === 'function') {\n ref(node)\n } else {\n ;(ref as React.MutableRefObject<HTMLInputElement | null>).current = node\n }\n },\n [ref]\n )\n\n const getInitialRaw = useCallback(() => {\n if (!mask) return ''\n const initial = (value ?? defaultValue ?? '') as string\n return extractRaw(initial, mask, maskPlaceholder)\n }, [mask, value, defaultValue, maskPlaceholder])\n\n const [rawValue, setRawValue] = useState(getInitialRaw)\n const [cursorPos, setCursorPos] = useState<number | null>(null)\n\n // Sync with controlled value\n useEffect(() => {\n if (mask && value !== undefined) {\n setRawValue(extractRaw(value as string, mask, maskPlaceholder))\n }\n }, [mask, value, maskPlaceholder])\n\n // Set cursor position after render\n useEffect(() => {\n if (cursorPos !== null && inputRef.current) {\n inputRef.current.setSelectionRange(cursorPos, cursorPos)\n setCursorPos(null)\n }\n }, [cursorPos, inputRef])\n\n const handleMaskedChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!mask) {\n onChange?.(e)\n return\n }\n\n const input = e.target\n const inputValue = input.value\n\n // Extract what the user is trying to type\n const newRaw = extractRaw(inputValue, mask, maskPlaceholder)\n\n // Filter to only valid characters\n let filteredRaw = ''\n let rawIdx = 0\n for (let i = 0; i < mask.length && rawIdx < newRaw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (isValidChar(newRaw[rawIdx], maskChar)) {\n filteredRaw += newRaw[rawIdx]\n }\n rawIdx++\n }\n }\n\n setRawValue(filteredRaw)\n\n // Calculate new cursor position\n const maskedValue = applyMask(filteredRaw, mask, maskPlaceholder)\n let newCursor = findNextInputPosition(mask, 0)\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < filteredRaw.length) {\n charsPlaced++\n newCursor = i + 1\n }\n }\n }\n // Skip to next input position if we're on a literal\n newCursor = findNextInputPosition(mask, newCursor)\n if (newCursor > mask.length) newCursor = mask.length\n\n setCursorPos(newCursor)\n\n // Create synthetic event with masked value\n const syntheticEvent = {\n ...e,\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n },\n [mask, maskPlaceholder, onChange]\n )\n\n const handleMaskedKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!mask) {\n onKeyDown?.(e)\n return\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newRaw = rawValue.slice(0, -1)\n setRawValue(newRaw)\n\n // Calculate cursor position\n let newCursor = 0\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < newRaw.length) {\n charsPlaced++\n newCursor = i + 1\n } else {\n newCursor = i\n break\n }\n }\n }\n setCursorPos(newCursor)\n\n const maskedValue = applyMask(newRaw, mask, maskPlaceholder)\n const input = e.currentTarget\n const syntheticEvent = {\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as unknown as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n }\n\n onKeyDown?.(e)\n },\n [mask, maskPlaceholder, rawValue, onChange, onKeyDown]\n )\n\n // Track internal value for allowClear visibility\n const [internalValue, setInternalValue] = useState((value ?? defaultValue ?? '') as string)\n\n // Sync internal value with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value as string)\n }\n }, [value])\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }, [onChange])\n\n const handleClear = useCallback(() => {\n setInternalValue('')\n setRawValue('')\n onClear?.()\n // Create synthetic event for onChange\n if (onChange && inputRef.current) {\n const syntheticEvent = {\n target: { ...inputRef.current, value: '' },\n currentTarget: { ...inputRef.current, value: '' },\n } as React.ChangeEvent<HTMLInputElement>\n onChange(syntheticEvent)\n }\n }, [onClear, onChange, inputRef])\n\n // Determine if we should show clear button\n const currentValue = mask ? rawValue : internalValue\n const showClear = allowClear && currentValue && !disabled\n\n // Get custom clear icon if provided\n const clearIcon = typeof allowClear === 'object' && allowClear.clearIcon\n ? allowClear.clearIcon\n : null\n\n // Accessibility attributes\n const ariaProps: Record<string, string | boolean | undefined> = {}\n if (status === 'error') {\n ariaProps['aria-invalid'] = true\n }\n if (errorId) {\n ariaProps['aria-describedby'] = errorId\n }\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n // If we have prefix, suffix, or allowClear, wrap in a container\n const hasInternalAddons = prefix || suffix || allowClear\n const hasWrapper = hasInternalAddons || hasExternalAddons || !!floatingLabel\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const inputTestId = testId ? (hasWrapper ? getTestId('input') : testId) : undefined\n\n // Size class for floating label\n const floatingSizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n // Build the masked value if needed\n const maskedValue = mask ? applyMask(rawValue, mask, maskPlaceholder) : undefined\n\n // Build the core input element\n const buildInput = (extraClasses?: string) => (\n <input\n ref={setInputRef}\n type={mask ? 'text' : type}\n className={[\n inputClasses,\n hasInternalAddons && 'w-full',\n prefix && 'pl-10',\n (suffix || showClear) && 'pr-10',\n extraClasses,\n ].filter(Boolean).join(' ')}\n value={maskedValue ?? (value !== undefined ? value : (hasInternalAddons ? internalValue : value))}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : (hasInternalAddons ? handleChange : onChange)}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n )\n\n // Build input with internal addons (prefix icon, suffix icon, clear button)\n const buildInputWithInternalAddons = (extraClasses?: string) => {\n if (!hasInternalAddons) {\n return buildInput(extraClasses)\n }\n\n return (\n <div\n className={`relative flex items-center ${extraClasses || ''}`}\n data-testid={!hasExternalAddons && !floatingLabel ? testId : getTestId('input-wrapper')}\n >\n {prefix && (\n <span\n className=\"absolute left-3 flex items-center text-base-content/70 pointer-events-none z-10\"\n data-testid={getTestId('prefix')}\n >\n {prefix}\n </span>\n )}\n {buildInput()}\n {(suffix || showClear) && (\n <span className=\"absolute right-3 flex items-center gap-1 z-10\" data-testid={getTestId('suffix')}>\n {showClear && (\n <span data-testid={getTestId('clear')}>\n {clearIcon || <ClearIcon onClick={handleClear} />}\n </span>\n )}\n {suffix && <span className=\"text-base-content/70\">{suffix}</span>}\n </span>\n )}\n </div>\n )\n }\n\n // Wrap with floating label if specified\n const wrapWithFloatingLabel = (input: React.ReactNode) => {\n if (!floatingLabel) return input\n\n const floatingClasses = [\n dFloatingLabel,\n floatingSizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses} data-testid={testId}>\n {input}\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons (addonBefore/addonAfter) using DaisyUI input wrapper pattern\n const wrapWithExternalAddons = (input: React.ReactNode) => {\n if (!hasExternalAddons) return input\n\n const addonClasses = [\n dInput,\n 'flex',\n 'items-center',\n 'gap-2',\n sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses} data-testid={testId}>\n {addonBefore && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-before')}>\n {addonBefore}\n </span>\n )}\n {input}\n {addonAfter && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-after')}>\n {addonAfter}\n </span>\n )}\n </label>\n )\n }\n\n // Build the final element\n const inputElement = buildInputWithInternalAddons(\n floatingLabel ? `${dInput} w-full` : undefined\n )\n\n // Apply wrappers\n return wrapWithExternalAddons(wrapWithFloatingLabel(\n floatingLabel ? (\n // For floating label, use raw input (label wrapper provides styling)\n <input\n ref={setInputRef}\n type={mask ? 'text' : type}\n className={`${dInput} w-full`}\n value={maskedValue ?? (value !== undefined ? value : internalValue)}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : handleChange}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n ) : inputElement\n ))\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["dInput","dInputXs","dInputSm","dInputMd","dInputLg","dInputXl","dInputNeutral","dInputPrimary","dInputSecondary","dInputAccent","dInputInfo","dInputSuccess","dInputWarning","dInputError","dInputGhost","dFloatingLabel","applyMask","raw","mask","placeholder","result","rawIndex","i","maskChar","extractRaw","value","isValidChar","char","findNextInputPosition","fromIndex","ClearIcon","onClick","className","jsx","Input","forwardRef","type","size","color","status","ghost","bordered","maskPlaceholder","allowClear","onClear","prefix","suffix","addonBefore","addonAfter","floatingLabel","errorId","unstyled","defaultValue","onChange","onKeyDown","disabled","required","testId","props","ref","componentSize","useConfig","effectiveSize","sizeClasses","effectiveColorClass","hasExternalAddons","inputClasses","inputRef","useRef","setInputRef","useCallback","node","getInitialRaw","rawValue","setRawValue","useState","cursorPos","setCursorPos","useEffect","handleMaskedChange","e","input","inputValue","newRaw","filteredRaw","rawIdx","maskedValue","newCursor","charsPlaced","syntheticEvent","handleMaskedKeyDown","internalValue","setInternalValue","handleChange","handleClear","showClear","clearIcon","ariaProps","hasInternalAddons","hasWrapper","getTestId","inputTestId","floatingSizeClasses","buildInput","extraClasses","buildInputWithInternalAddons","jsxs","wrapWithFloatingLabel","floatingClasses","wrapWithExternalAddons","addonClasses","inputElement"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export { FloatButton } from './components/FloatButton';
|
|
|
76
76
|
export type { FloatButtonProps, BackTopProps } from './components/FloatButton';
|
|
77
77
|
export { Footer } from './components/Footer';
|
|
78
78
|
export type { FooterProps, FooterTitleProps } from './components/Footer';
|
|
79
|
-
export { Form, useFormInstance } from './components/Form';
|
|
79
|
+
export { Form, useForm, useFormInstance, useWatch } from './components/Form';
|
|
80
80
|
export type { FormProps, FormItemProps, FormRule, FormInstance, FormErrorListProps, ValidateTrigger } from './components/Form';
|
|
81
81
|
export { Grid, Row, Col } from './components/Grid';
|
|
82
82
|
export type { RowProps, ColProps } from './components/Grid';
|
package/dist/index.js
CHANGED
|
@@ -9,13 +9,13 @@ import { Breadcrumb as g } from "./components/Breadcrumb.js";
|
|
|
9
9
|
import { Button as S } from "./components/Button.js";
|
|
10
10
|
import { SizeContext as h, SizeProvider as k, useSize as v } from "./contexts/SizeContext.js";
|
|
11
11
|
import { CopyButton as b } from "./components/CopyButton.js";
|
|
12
|
-
import { Checkbox as
|
|
13
|
-
import { Chat as
|
|
12
|
+
import { Checkbox as F } from "./components/Checkbox.js";
|
|
13
|
+
import { Chat as y } from "./components/Chat.js";
|
|
14
14
|
import { ColorPicker as M } from "./components/ColorPicker.js";
|
|
15
15
|
import { Card as L } from "./components/Card.js";
|
|
16
16
|
import { Carousel as z } from "./components/Carousel.js";
|
|
17
|
-
import { Cascader as
|
|
18
|
-
import { ConfigContext as
|
|
17
|
+
import { Cascader as W } from "./components/Cascader.js";
|
|
18
|
+
import { ConfigContext as K, ConfigProvider as E, useComponentLocale as N, useConfig as J, useLocale as O } from "./providers/ConfigProvider.js";
|
|
19
19
|
import { Collapse as j } from "./components/Collapse.js";
|
|
20
20
|
import { Command as Q } from "./components/Command.js";
|
|
21
21
|
import { Container as X } from "./components/Container.js";
|
|
@@ -34,92 +34,93 @@ import { Fieldset as Po } from "./components/Fieldset.js";
|
|
|
34
34
|
import { FileInput as ko } from "./components/FileInput.js";
|
|
35
35
|
import { Filter as Ro } from "./components/Filter.js";
|
|
36
36
|
import { Flex as Do } from "./components/Flex.js";
|
|
37
|
-
import { FloatButton as
|
|
38
|
-
import { Footer as
|
|
39
|
-
import { Form as Ao,
|
|
40
|
-
import { Col as
|
|
41
|
-
import { Hero as
|
|
42
|
-
import { HoverGallery as
|
|
43
|
-
import { Image as
|
|
44
|
-
import { Dropdown as
|
|
45
|
-
import { Empty as
|
|
46
|
-
import { Input as
|
|
47
|
-
import { InputNumber as
|
|
48
|
-
import { Join as
|
|
49
|
-
import { Kbd as
|
|
50
|
-
import { Layout as
|
|
51
|
-
import { List as
|
|
52
|
-
import { Loading as
|
|
53
|
-
import { Mask as
|
|
54
|
-
import { Masonry as
|
|
55
|
-
import { Mention as
|
|
56
|
-
import { Menu as
|
|
57
|
-
import { Browser as
|
|
58
|
-
import { Code as
|
|
59
|
-
import { Phone as
|
|
60
|
-
import { Window as
|
|
61
|
-
import { Modal as
|
|
37
|
+
import { FloatButton as wo } from "./components/FloatButton.js";
|
|
38
|
+
import { Footer as Bo } from "./components/Footer.js";
|
|
39
|
+
import { Form as Ao, useForm as Lo, useFormInstance as Io } from "./components/Form.js";
|
|
40
|
+
import { Col as Ho, Grid as Wo, Row as Go } from "./components/Grid.js";
|
|
41
|
+
import { Hero as Eo } from "./components/Hero.js";
|
|
42
|
+
import { HoverGallery as Jo } from "./components/HoverGallery.js";
|
|
43
|
+
import { Image as Uo } from "./components/Image.js";
|
|
44
|
+
import { Dropdown as qo } from "./components/Dropdown.js";
|
|
45
|
+
import { Empty as Vo } from "./components/Empty.js";
|
|
46
|
+
import { Input as Yo } from "./components/Input.js";
|
|
47
|
+
import { InputNumber as _o } from "./components/InputNumber.js";
|
|
48
|
+
import { Join as or } from "./components/Join.js";
|
|
49
|
+
import { Kbd as er } from "./components/Kbd.js";
|
|
50
|
+
import { Layout as pr, useSiderContext as mr } from "./components/Layout.js";
|
|
51
|
+
import { List as xr } from "./components/List.js";
|
|
52
|
+
import { Loading as sr } from "./components/Loading.js";
|
|
53
|
+
import { Mask as ir } from "./components/Mask.js";
|
|
54
|
+
import { Masonry as lr } from "./components/Masonry.js";
|
|
55
|
+
import { Mention as Cr } from "./components/Mention.js";
|
|
56
|
+
import { Menu as gr } from "./components/Menu.js";
|
|
57
|
+
import { Browser as Sr } from "./components/Browser.js";
|
|
58
|
+
import { Code as hr } from "./components/Code.js";
|
|
59
|
+
import { Phone as vr } from "./components/Phone.js";
|
|
60
|
+
import { Window as br } from "./components/Window.js";
|
|
61
|
+
import { Modal as Fr } from "./components/Modal.js";
|
|
62
62
|
import { Navbar as yr } from "./components/Navbar.js";
|
|
63
|
-
import { notification as
|
|
64
|
-
import { MessageManager as
|
|
65
|
-
import { OTPInput as
|
|
63
|
+
import { notification as Mr } from "./components/Notification.js";
|
|
64
|
+
import { MessageManager as Lr, message as Ir } from "./components/Message.js";
|
|
65
|
+
import { OTPInput as Hr } from "./components/OTPInput.js";
|
|
66
66
|
import { Pagination as Gr } from "./components/Pagination.js";
|
|
67
|
-
import { Popconfirm as
|
|
68
|
-
import { Popover as
|
|
69
|
-
import { Progress as
|
|
70
|
-
import { Radio as
|
|
71
|
-
import { RadialProgress as
|
|
72
|
-
import { Range as
|
|
73
|
-
import { Rating as
|
|
74
|
-
import { Result as
|
|
75
|
-
import { Select as
|
|
76
|
-
import { Segmented as
|
|
77
|
-
import { Skeleton as
|
|
78
|
-
import { Space as
|
|
79
|
-
import { Splitter as
|
|
80
|
-
import { Stats as
|
|
81
|
-
import { Status as
|
|
82
|
-
import { Steps as
|
|
83
|
-
import { Table as
|
|
84
|
-
import { Tabs as
|
|
85
|
-
import { Textarea as
|
|
86
|
-
import { TextRotate as
|
|
87
|
-
import { CheckableTag as
|
|
67
|
+
import { Popconfirm as Er } from "./components/Popconfirm.js";
|
|
68
|
+
import { Popover as Jr } from "./components/Popover.js";
|
|
69
|
+
import { Progress as Ur } from "./components/Progress.js";
|
|
70
|
+
import { Radio as qr } from "./components/Radio.js";
|
|
71
|
+
import { RadialProgress as Vr } from "./components/RadialProgress.js";
|
|
72
|
+
import { Range as Yr } from "./components/Range.js";
|
|
73
|
+
import { Rating as _r } from "./components/Rating.js";
|
|
74
|
+
import { Result as oe } from "./components/Result.js";
|
|
75
|
+
import { Select as ee } from "./components/Select.js";
|
|
76
|
+
import { Segmented as pe } from "./components/Segmented.js";
|
|
77
|
+
import { Skeleton as fe } from "./components/Skeleton.js";
|
|
78
|
+
import { Space as ae } from "./components/Space.js";
|
|
79
|
+
import { Splitter as ne } from "./components/Splitter.js";
|
|
80
|
+
import { Stats as ue } from "./components/Stat.js";
|
|
81
|
+
import { Status as de } from "./components/Status.js";
|
|
82
|
+
import { Steps as ce } from "./components/Steps.js";
|
|
83
|
+
import { Table as Te } from "./components/Table.js";
|
|
84
|
+
import { Tabs as Pe } from "./components/Tabs.js";
|
|
85
|
+
import { Textarea as ke } from "./components/Textarea.js";
|
|
86
|
+
import { TextRotate as Re } from "./components/TextRotate.js";
|
|
87
|
+
import { CheckableTag as De, Tag as Fe, TagLiveRegion as we } from "./components/Tag.js";
|
|
88
88
|
import { ThemeController as Be } from "./components/ThemeController.js";
|
|
89
|
-
import { ThemeProvider as
|
|
90
|
-
import { TimePicker as
|
|
89
|
+
import { ThemeProvider as Ae, useHasThemeProvider as Le, useThemeContext as Ie } from "./providers/ThemeProvider.js";
|
|
90
|
+
import { TimePicker as He } from "./components/TimePicker.js";
|
|
91
91
|
import { Timeline as Ge } from "./components/Timeline.js";
|
|
92
|
-
import { Toggle as
|
|
93
|
-
import { Tour as
|
|
94
|
-
import { Tooltip as
|
|
95
|
-
import { Transfer as
|
|
96
|
-
import { Tree as
|
|
97
|
-
import { TreeSelect as
|
|
98
|
-
import { Typography as
|
|
99
|
-
import { Upload as
|
|
100
|
-
import { Watermark as
|
|
101
|
-
import { Hide as
|
|
102
|
-
import { useBreakpoint as
|
|
103
|
-
import { useDisclosure as
|
|
104
|
-
import { useClipboard as
|
|
105
|
-
import { useLocalStorage as
|
|
106
|
-
import { useDebounce as
|
|
107
|
-
import { useClickOutside as
|
|
108
|
-
import { usePrevious as
|
|
109
|
-
import { useHover as
|
|
110
|
-
import { useKeyPress as
|
|
111
|
-
import { useWindowSize as
|
|
92
|
+
import { Toggle as Ee } from "./components/Toggle.js";
|
|
93
|
+
import { Tour as Je } from "./components/Tour.js";
|
|
94
|
+
import { Tooltip as Ue } from "./components/Tooltip.js";
|
|
95
|
+
import { Transfer as qe } from "./components/Transfer.js";
|
|
96
|
+
import { Tree as Ve } from "./components/Tree.js";
|
|
97
|
+
import { TreeSelect as Ye, TreeSelectComponent as Ze } from "./components/TreeSelect.js";
|
|
98
|
+
import { Typography as $e } from "./components/Typography.js";
|
|
99
|
+
import { Upload as rt } from "./components/Upload.js";
|
|
100
|
+
import { Watermark as tt } from "./components/Watermark.js";
|
|
101
|
+
import { Hide as mt, Show as ft } from "./components/Responsive.js";
|
|
102
|
+
import { useBreakpoint as at } from "./hooks/useBreakpoint.js";
|
|
103
|
+
import { useDisclosure as nt } from "./hooks/useDisclosure.js";
|
|
104
|
+
import { useClipboard as ut } from "./hooks/useClipboard.js";
|
|
105
|
+
import { useLocalStorage as dt } from "./hooks/useLocalStorage.js";
|
|
106
|
+
import { useDebounce as ct } from "./hooks/useDebounce.js";
|
|
107
|
+
import { useClickOutside as Tt } from "./hooks/useClickOutside.js";
|
|
108
|
+
import { usePrevious as Pt } from "./hooks/usePrevious.js";
|
|
109
|
+
import { useHover as kt } from "./hooks/useHover.js";
|
|
110
|
+
import { useKeyPress as Rt, useKeyPressCallback as bt } from "./hooks/useKeyPress.js";
|
|
111
|
+
import { useWindowSize as Ft } from "./hooks/useWindowSize.js";
|
|
112
112
|
import { useTheme as yt } from "./hooks/useTheme.js";
|
|
113
|
-
import { default as
|
|
114
|
-
import { default as
|
|
115
|
-
import { default as
|
|
116
|
-
import { default as
|
|
113
|
+
import { default as Mt } from "./locale/en-US.js";
|
|
114
|
+
import { default as Lt } from "./locale/en-GB.js";
|
|
115
|
+
import { default as zt } from "./locale/en-CA.js";
|
|
116
|
+
import { default as Wt } from "./locale/zh-CN.js";
|
|
117
117
|
import { default as Kt } from "./locale/es-ES.js";
|
|
118
|
-
import { default as
|
|
119
|
-
import { default as
|
|
120
|
-
import { default as
|
|
121
|
-
import { default as
|
|
122
|
-
import { default as
|
|
118
|
+
import { default as Nt } from "./locale/ja-JP.js";
|
|
119
|
+
import { default as Ot } from "./locale/pt-BR.js";
|
|
120
|
+
import { default as jt } from "./locale/de-DE.js";
|
|
121
|
+
import { default as Qt } from "./locale/fr-FR.js";
|
|
122
|
+
import { default as Xt } from "./locale/ko-KR.js";
|
|
123
|
+
import { useWatch as Zt } from "react-hook-form";
|
|
123
124
|
export {
|
|
124
125
|
e as Affix,
|
|
125
126
|
a as Alert,
|
|
@@ -130,20 +131,20 @@ export {
|
|
|
130
131
|
l as AvatarGroup,
|
|
131
132
|
C as Badge,
|
|
132
133
|
g as Breadcrumb,
|
|
133
|
-
|
|
134
|
+
Sr as Browser,
|
|
134
135
|
S as Button,
|
|
135
136
|
L as Card,
|
|
136
137
|
z as Carousel,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
W as Cascader,
|
|
139
|
+
y as Chat,
|
|
140
|
+
De as CheckableTag,
|
|
141
|
+
F as Checkbox,
|
|
142
|
+
hr as Code,
|
|
143
|
+
Ho as Col,
|
|
143
144
|
j as Collapse,
|
|
144
145
|
M as ColorPicker,
|
|
145
146
|
Q as Command,
|
|
146
|
-
|
|
147
|
+
K as ConfigContext,
|
|
147
148
|
E as ConfigProvider,
|
|
148
149
|
X as Container,
|
|
149
150
|
Z as ContextMenu,
|
|
@@ -155,112 +156,114 @@ export {
|
|
|
155
156
|
lo as Divider,
|
|
156
157
|
io as Dock,
|
|
157
158
|
co as Drawer,
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
qo as Dropdown,
|
|
160
|
+
Vo as Empty,
|
|
160
161
|
Po as Fieldset,
|
|
161
162
|
ko as FileInput,
|
|
162
163
|
Ro as Filter,
|
|
163
164
|
Do as Flex,
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
wo as FloatButton,
|
|
166
|
+
Bo as Footer,
|
|
166
167
|
Ao as Form,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
168
|
+
Wo as Grid,
|
|
169
|
+
Eo as Hero,
|
|
170
|
+
mt as Hide,
|
|
171
|
+
Jo as HoverGallery,
|
|
172
|
+
Uo as Image,
|
|
173
|
+
Yo as Input,
|
|
174
|
+
_o as InputNumber,
|
|
175
|
+
or as Join,
|
|
176
|
+
er as Kbd,
|
|
177
|
+
pr as Layout,
|
|
178
|
+
xr as List,
|
|
179
|
+
sr as Loading,
|
|
180
|
+
ir as Mask,
|
|
181
|
+
lr as Masonry,
|
|
182
|
+
Cr as Mention,
|
|
183
|
+
gr as Menu,
|
|
184
|
+
Lr as MessageManager,
|
|
185
|
+
Fr as Modal,
|
|
185
186
|
to as MonthCalendar,
|
|
186
187
|
yr as Navbar,
|
|
187
|
-
|
|
188
|
+
Hr as OTPInput,
|
|
188
189
|
Gr as Pagination,
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
190
|
+
vr as Phone,
|
|
191
|
+
Er as Popconfirm,
|
|
192
|
+
Jr as Popover,
|
|
193
|
+
Ur as Progress,
|
|
194
|
+
Vr as RadialProgress,
|
|
195
|
+
qr as Radio,
|
|
196
|
+
Yr as Range,
|
|
197
|
+
_r as Rating,
|
|
197
198
|
To as ResponsiveDrawer,
|
|
198
|
-
|
|
199
|
+
oe as Result,
|
|
199
200
|
Go as Row,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
201
|
+
pe as Segmented,
|
|
202
|
+
ee as Select,
|
|
203
|
+
ft as Show,
|
|
203
204
|
h as SizeContext,
|
|
204
205
|
k as SizeProvider,
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
206
|
+
fe as Skeleton,
|
|
207
|
+
ae as Space,
|
|
208
|
+
ne as Splitter,
|
|
209
|
+
ue as Stats,
|
|
210
|
+
de as Status,
|
|
211
|
+
ce as Steps,
|
|
212
|
+
Te as Table,
|
|
213
|
+
Pe as Tabs,
|
|
214
|
+
Fe as Tag,
|
|
214
215
|
we as TagLiveRegion,
|
|
215
|
-
|
|
216
|
-
|
|
216
|
+
Re as TextRotate,
|
|
217
|
+
ke as Textarea,
|
|
217
218
|
Be as ThemeController,
|
|
218
|
-
|
|
219
|
-
|
|
219
|
+
Ae as ThemeProvider,
|
|
220
|
+
He as TimePicker,
|
|
220
221
|
Ge as Timeline,
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
222
|
+
Ee as Toggle,
|
|
223
|
+
Ue as Tooltip,
|
|
224
|
+
Je as Tour,
|
|
225
|
+
qe as Transfer,
|
|
226
|
+
Ve as Tree,
|
|
227
|
+
Ye as TreeSelect,
|
|
228
|
+
Ze as TreeSelectComponent,
|
|
229
|
+
$e as Typography,
|
|
230
|
+
rt as Upload,
|
|
231
|
+
tt as Watermark,
|
|
231
232
|
mo as WeekCalendar,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
br as Window,
|
|
234
|
+
jt as deDE,
|
|
235
|
+
zt as enCA,
|
|
236
|
+
Lt as enGB,
|
|
237
|
+
Mt as enUS,
|
|
237
238
|
Kt as esES,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
239
|
+
Qt as frFR,
|
|
240
|
+
Nt as jaJP,
|
|
241
|
+
Xt as koKR,
|
|
242
|
+
Ir as message,
|
|
243
|
+
Mr as notification,
|
|
244
|
+
Ot as ptBR,
|
|
245
|
+
at as useBreakpoint,
|
|
246
|
+
Tt as useClickOutside,
|
|
247
|
+
ut as useClipboard,
|
|
247
248
|
N as useComponentLocale,
|
|
248
249
|
J as useConfig,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
Lo as
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
Rt as
|
|
256
|
-
|
|
250
|
+
ct as useDebounce,
|
|
251
|
+
nt as useDisclosure,
|
|
252
|
+
Lo as useForm,
|
|
253
|
+
Io as useFormInstance,
|
|
254
|
+
Le as useHasThemeProvider,
|
|
255
|
+
kt as useHover,
|
|
256
|
+
Rt as useKeyPress,
|
|
257
|
+
bt as useKeyPressCallback,
|
|
258
|
+
dt as useLocalStorage,
|
|
257
259
|
O as useLocale,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
+
Pt as usePrevious,
|
|
261
|
+
mr as useSiderContext,
|
|
260
262
|
v as useSize,
|
|
261
263
|
yt as useTheme,
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
264
|
+
Ie as useThemeContext,
|
|
265
|
+
Zt as useWatch,
|
|
266
|
+
Ft as useWindowSize,
|
|
267
|
+
Wt as zhCN
|
|
265
268
|
};
|
|
266
269
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|