@yahoo/uds 3.156.2 → 3.157.1
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/automated-config/dist/generated/autoVariants.cjs +9 -4
- package/dist/automated-config/dist/generated/autoVariants.d.cts +2 -1
- package/dist/automated-config/dist/generated/autoVariants.d.ts +2 -1
- package/dist/automated-config/dist/generated/autoVariants.js +9 -4
- package/dist/automated-config/dist/generated/generatedConfigs.cjs +3078 -3089
- package/dist/automated-config/dist/generated/generatedConfigs.d.cts +158 -141
- package/dist/automated-config/dist/generated/generatedConfigs.d.ts +158 -141
- package/dist/automated-config/dist/generated/generatedConfigs.js +3078 -3089
- package/dist/automated-config/dist/generated/universalTokensConfigAuto.cjs +1217 -491
- package/dist/automated-config/dist/generated/universalTokensConfigAuto.d.cts +4 -1
- package/dist/automated-config/dist/generated/universalTokensConfigAuto.d.ts +4 -1
- package/dist/automated-config/dist/generated/universalTokensConfigAuto.js +1217 -491
- package/dist/automated-config/dist/properties.cjs +9 -2
- package/dist/automated-config/dist/properties.d.cts +23 -0
- package/dist/automated-config/dist/properties.d.ts +23 -0
- package/dist/automated-config/dist/properties.js +9 -2
- package/dist/automated-config/dist/types/ComponentConfig.d.cts +77 -4
- package/dist/automated-config/dist/types/ComponentConfig.d.ts +77 -4
- package/dist/automated-config/dist/types/ConfigSchema.d.cts +14 -2
- package/dist/automated-config/dist/types/ConfigSchema.d.ts +14 -2
- package/dist/automated-config/dist/types/StateAxis.cjs +90 -0
- package/dist/automated-config/dist/types/StateAxis.d.cts +70 -0
- package/dist/automated-config/dist/types/StateAxis.d.ts +70 -0
- package/dist/automated-config/dist/types/StateAxis.js +84 -0
- package/dist/automated-config/dist/utils/buildConfigSchema.cjs +105 -82
- package/dist/automated-config/dist/utils/buildConfigSchema.d.cts +41 -12
- package/dist/automated-config/dist/utils/buildConfigSchema.d.ts +41 -12
- package/dist/automated-config/dist/utils/buildConfigSchema.js +106 -83
- package/dist/automated-config/dist/utils/canonicalizeStateKey.cjs +32 -0
- package/dist/automated-config/dist/utils/canonicalizeStateKey.d.cts +48 -0
- package/dist/automated-config/dist/utils/canonicalizeStateKey.d.ts +48 -0
- package/dist/automated-config/dist/utils/canonicalizeStateKey.js +31 -0
- package/dist/automated-config/dist/utils/getButtonControlHeight.cjs +129 -0
- package/dist/automated-config/dist/utils/getButtonControlHeight.d.cts +133 -0
- package/dist/automated-config/dist/utils/getButtonControlHeight.d.ts +133 -0
- package/dist/automated-config/dist/utils/getButtonControlHeight.js +122 -0
- package/dist/automated-config/dist/utils/getButtonControlHeightPx.cjs +114 -0
- package/dist/automated-config/dist/utils/getButtonControlHeightPx.d.cts +78 -0
- package/dist/automated-config/dist/utils/getButtonControlHeightPx.d.ts +78 -0
- package/dist/automated-config/dist/utils/getButtonControlHeightPx.js +108 -0
- package/dist/automated-config/dist/utils/getConfigComponentVariant.d.cts +8 -0
- package/dist/automated-config/dist/utils/getConfigComponentVariant.d.ts +8 -0
- package/dist/automated-config/dist/utils/getConfigVariantProperties.d.cts +3 -3
- package/dist/automated-config/dist/utils/getConfigVariantProperties.d.ts +3 -3
- package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.cjs +12 -5
- package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.d.cts +8 -1
- package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.d.ts +8 -1
- package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.js +12 -5
- package/dist/automated-config/dist/utils/iconButtonMatchButtonHeight.cjs +110 -0
- package/dist/automated-config/dist/utils/iconButtonMatchButtonHeight.d.cts +19 -0
- package/dist/automated-config/dist/utils/iconButtonMatchButtonHeight.d.ts +19 -0
- package/dist/automated-config/dist/utils/iconButtonMatchButtonHeight.js +108 -0
- package/dist/automated-config/dist/utils/index.cjs +478 -111
- package/dist/automated-config/dist/utils/index.d.cts +76 -15
- package/dist/automated-config/dist/utils/index.d.ts +76 -15
- package/dist/automated-config/dist/utils/index.js +479 -113
- package/dist/automated-config/dist/utils/isConfiguratorPropertyVisible.cjs +15 -0
- package/dist/automated-config/dist/utils/isConfiguratorPropertyVisible.d.cts +20 -0
- package/dist/automated-config/dist/utils/isConfiguratorPropertyVisible.d.ts +20 -0
- package/dist/automated-config/dist/utils/isConfiguratorPropertyVisible.js +15 -0
- package/dist/automated-config/dist/utils/pseudoStateSelectors.cjs +122 -0
- package/dist/automated-config/dist/utils/pseudoStateSelectors.d.cts +80 -0
- package/dist/automated-config/dist/utils/pseudoStateSelectors.d.ts +80 -0
- package/dist/automated-config/dist/utils/pseudoStateSelectors.js +120 -0
- package/dist/automated-config/dist/utils/resolvePropertyStates.cjs +131 -0
- package/dist/automated-config/dist/utils/resolvePropertyStates.d.cts +49 -0
- package/dist/automated-config/dist/utils/resolvePropertyStates.d.ts +49 -0
- package/dist/automated-config/dist/utils/resolvePropertyStates.js +130 -0
- package/dist/automated-config/dist/utils/resolveSlotByCascade.cjs +118 -0
- package/dist/automated-config/dist/utils/resolveSlotByCascade.d.cts +68 -0
- package/dist/automated-config/dist/utils/resolveSlotByCascade.d.ts +68 -0
- package/dist/automated-config/dist/utils/resolveSlotByCascade.js +117 -0
- package/dist/automated-config/dist/utils/variantConfigGuards.d.cts +13 -0
- package/dist/automated-config/dist/utils/variantConfigGuards.d.ts +13 -0
- package/dist/components/client/Button.cjs +3 -3
- package/dist/components/client/Button.js +3 -3
- package/dist/components/client/Input/Input.cjs +42 -6
- package/dist/components/client/Input/Input.d.cts +13 -0
- package/dist/components/client/Input/Input.d.ts +13 -0
- package/dist/components/client/Input/Input.js +42 -6
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +1 -1
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +1 -1
- package/dist/config/dist/index.cjs +224 -553
- package/dist/config/dist/index.js +224 -553
- package/dist/css/dist/commands/css.cjs +1 -0
- package/dist/css/dist/commands/css.helpers.cjs +6 -0
- package/dist/css/dist/commands/css.helpers.js +6 -0
- package/dist/css/dist/commands/css.js +1 -0
- package/dist/css/dist/css/generate.cjs +4 -2
- package/dist/css/dist/css/generate.d.cts +28 -0
- package/dist/css/dist/css/generate.d.ts +28 -0
- package/dist/css/dist/css/generate.helpers.cjs +5 -1
- package/dist/css/dist/css/generate.helpers.js +6 -2
- package/dist/css/dist/css/generate.js +4 -2
- package/dist/css/dist/css/postcss.cjs +81 -0
- package/dist/css/dist/css/postcss.helpers.cjs +60 -0
- package/dist/css/dist/css/postcss.helpers.js +59 -1
- package/dist/css/dist/css/postcss.js +82 -2
- package/dist/css/dist/css/runner.cjs +12 -2
- package/dist/css/dist/css/runner.js +12 -2
- package/dist/css/dist/css/theme.d.cts +6 -0
- package/dist/css/dist/css/theme.d.ts +6 -0
- package/dist/css/dist/packages/automated-config/dist/properties.cjs +9 -2
- package/dist/css/dist/packages/automated-config/dist/properties.js +9 -2
- package/dist/css/dist/packages/automated-config/dist/utils/index.d.cts +6 -0
- package/dist/css/dist/packages/automated-config/dist/utils/index.d.ts +6 -0
- package/dist/css/dist/packages/config/dist/index.cjs +224 -553
- package/dist/css/dist/packages/config/dist/index.js +224 -553
- package/dist/css/dist/utils/optimizeCSS.cjs +59 -0
- package/dist/css/dist/utils/optimizeCSS.js +59 -0
- package/dist/css-tokens/dist/index.cjs +2 -0
- package/dist/css-tokens/dist/index.d.cts +2 -1
- package/dist/css-tokens/dist/index.d.ts +2 -1
- package/dist/css-tokens/dist/index.js +2 -1
- package/dist/index.cjs +48 -0
- package/dist/index.d.cts +15 -4
- package/dist/index.d.ts +15 -4
- package/dist/index.js +14 -3
- package/dist/styles/styler.d.cts +8 -7
- package/dist/styles/styler.d.ts +8 -7
- package/dist/styles/variants.d.cts +9 -4
- package/dist/styles/variants.d.ts +9 -4
- package/dist/tailwind-internal/dist/packages/automated-config/dist/generated/generatedConfigs.cjs +3078 -3089
- package/dist/tailwind-internal/dist/packages/automated-config/dist/generated/generatedConfigs.js +3078 -3089
- package/dist/tailwind-internal/dist/packages/automated-config/dist/properties.cjs +9 -2
- package/dist/tailwind-internal/dist/packages/automated-config/dist/properties.js +9 -2
- package/dist/tailwind-internal/dist/packages/automated-config/dist/types/StateAxis.cjs +81 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/types/StateAxis.js +76 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/canonicalizeStateKey.cjs +33 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/canonicalizeStateKey.js +32 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/componentStatePseudoStates.cjs +0 -7
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/componentStatePseudoStates.js +1 -7
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/getButtonControlHeight.cjs +126 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/getButtonControlHeight.js +123 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/iconButtonMatchButtonHeight.cjs +20 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/iconButtonMatchButtonHeight.js +20 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/index.cjs +422 -111
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/index.d.cts +6 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/index.d.ts +6 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/index.js +423 -112
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/pseudoStateSelectors.cjs +122 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/pseudoStateSelectors.js +121 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/resolvePropertyStates.cjs +132 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/resolvePropertyStates.js +131 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/resolveSlotByCascade.cjs +95 -0
- package/dist/tailwind-internal/dist/packages/automated-config/dist/utils/resolveSlotByCascade.js +95 -0
- package/dist/tailwind-internal/dist/packages/config/dist/index.cjs +224 -553
- package/dist/tailwind-internal/dist/packages/config/dist/index.js +224 -553
- package/dist/tailwind-internal/dist/packages/css-tokens/dist/index.cjs +2 -0
- package/dist/tailwind-internal/dist/packages/css-tokens/dist/index.js +2 -1
- package/dist/tailwind-internal/dist/plugins/components.cjs +28 -24
- package/dist/tailwind-internal/dist/plugins/components.js +28 -24
- package/dist/tailwind-internal/dist/utils/composeTailwindPlugins.d.cts +3 -0
- package/dist/tailwind-internal/dist/utils/composeTailwindPlugins.d.ts +3 -0
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.cts +2 -2
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.ts +2 -2
- package/dist/tokens/automation/index.cjs +47 -0
- package/dist/tokens/automation/index.d.cts +13 -2
- package/dist/tokens/automation/index.d.ts +13 -2
- package/dist/tokens/automation/index.js +13 -2
- package/dist/tokens/consts/cssTokens.cjs +1 -0
- package/dist/tokens/consts/cssTokens.d.cts +2 -2
- package/dist/tokens/consts/cssTokens.d.ts +2 -2
- package/dist/tokens/consts/cssTokens.js +2 -2
- package/dist/tokens/index.cjs +48 -0
- package/dist/tokens/index.d.cts +15 -4
- package/dist/tokens/index.d.ts +15 -4
- package/dist/tokens/index.js +14 -3
- package/dist/tokens/types.d.cts +1 -1
- package/dist/tokens/types.d.ts +1 -1
- package/dist/uds/generated/componentData.cjs +2177 -2172
- package/dist/uds/generated/componentData.js +2177 -2172
- package/dist/uds/generated/migrationSchemaVersion.cjs +1 -1
- package/dist/uds/generated/migrationSchemaVersion.js +1 -1
- package/dist/uds/generated/tailwindPurge.cjs +79 -78
- package/dist/uds/generated/tailwindPurge.js +79 -78
- package/generated/componentData.json +2718 -2713
- package/generated/migrationSchemaVersion.ts +1 -1
- package/generated/tailwindPurge.ts +2 -2
- package/package.json +1 -1
|
@@ -15,6 +15,10 @@ let lodash_isFunction_js = require("lodash/isFunction.js");
|
|
|
15
15
|
lodash_isFunction_js = require_runtime.__toESM(lodash_isFunction_js);
|
|
16
16
|
let motion_react = require("motion/react");
|
|
17
17
|
//#region src/components/client/Input/Input.tsx
|
|
18
|
+
function setNativeInputValue(input, next) {
|
|
19
|
+
(Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set)?.call(input, next);
|
|
20
|
+
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
21
|
+
}
|
|
18
22
|
const HelpTextContent = (0, react.memo)(function HelpTextContentOriginal({ helpText, helperTextIcon, spacingStart, spacingTop, size, isFilled, helperTextSlotProps, ...rest }) {
|
|
19
23
|
if (!helpText) return null;
|
|
20
24
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Box.Box, {
|
|
@@ -82,7 +86,7 @@ const EndIcon = (0, react.memo)(function EndIcon({ icon, className, iconProps })
|
|
|
82
86
|
*
|
|
83
87
|
* @related [Checkbox](https://uds.build/docs/components/checkbox), [Radio](https://uds.build/docs/components/radio).
|
|
84
88
|
**/
|
|
85
|
-
const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", size = "md", startIcon, endIcon, helpText, helperTextIcon, hasError, width: containerWidth = "full", defaultValue, value: valueProp, required, readOnly, disabled, reduceMotion: forceReduceMotion, onChange, slotProps, style, className, ...otherProps }, forwardedRef) {
|
|
89
|
+
const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", size = "md", startIcon, endIcon, helpText, helperTextIcon, hasError, width: containerWidth = "full", defaultValue, value: valueProp, required, readOnly, disabled, reduceMotion: forceReduceMotion, onChange, onBlur, onFocus, formatOnBlur, parseOnFocus, slotProps, style, className, ...otherProps }, forwardedRef) {
|
|
86
90
|
const generatedId = (0, react.useId)();
|
|
87
91
|
const uid = id ?? `uds-input-${generatedId}`;
|
|
88
92
|
const helpTextId = `uds-input-${uid}-help-text`;
|
|
@@ -98,7 +102,36 @@ const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", s
|
|
|
98
102
|
const handleChange = (0, react.useCallback)((e) => {
|
|
99
103
|
if (!isControlled) setValue(e.target.value);
|
|
100
104
|
onChange?.(e);
|
|
101
|
-
|
|
105
|
+
slotProps?.input?.onChange?.(e);
|
|
106
|
+
}, [
|
|
107
|
+
isControlled,
|
|
108
|
+
onChange,
|
|
109
|
+
slotProps
|
|
110
|
+
]);
|
|
111
|
+
const handleBlur = (0, react.useCallback)((e) => {
|
|
112
|
+
if (formatOnBlur && ref.current) {
|
|
113
|
+
const next = formatOnBlur(e.target.value);
|
|
114
|
+
if (next !== e.target.value) setNativeInputValue(ref.current, next);
|
|
115
|
+
}
|
|
116
|
+
onBlur?.(e);
|
|
117
|
+
slotProps?.input?.onBlur?.(e);
|
|
118
|
+
}, [
|
|
119
|
+
formatOnBlur,
|
|
120
|
+
onBlur,
|
|
121
|
+
slotProps
|
|
122
|
+
]);
|
|
123
|
+
const handleFocus = (0, react.useCallback)((e) => {
|
|
124
|
+
if (parseOnFocus && ref.current) {
|
|
125
|
+
const next = parseOnFocus(e.target.value);
|
|
126
|
+
if (next !== e.target.value) setNativeInputValue(ref.current, next);
|
|
127
|
+
}
|
|
128
|
+
onFocus?.(e);
|
|
129
|
+
slotProps?.input?.onFocus?.(e);
|
|
130
|
+
}, [
|
|
131
|
+
parseOnFocus,
|
|
132
|
+
onFocus,
|
|
133
|
+
slotProps
|
|
134
|
+
]);
|
|
102
135
|
const layoutVariant = (0, motion_react.useReducedMotion)() ? "smooth" : "bouncy";
|
|
103
136
|
const reduceMotion = forceReduceMotion ? "always" : "user";
|
|
104
137
|
const isInteractive = !readOnly && !disabled;
|
|
@@ -110,7 +143,8 @@ const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", s
|
|
|
110
143
|
className: require_styles_styler.cx([className, disabled ? "opacity-50" : ""])
|
|
111
144
|
}),
|
|
112
145
|
inputWrapper: require_styles_styler.cx(require_styles_styler.getStyles({
|
|
113
|
-
|
|
146
|
+
inputSizeInputWrapperStatic: size,
|
|
147
|
+
inputSizeInputWrapperDynamic: size,
|
|
114
148
|
inputVariantInputWrapper: "default",
|
|
115
149
|
inputVariantValueInputWrapper: !value ? "empty" : "filled"
|
|
116
150
|
}), "min-w-[200px]", inputWrapperClassName),
|
|
@@ -120,7 +154,7 @@ const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", s
|
|
|
120
154
|
inputVariantValueInput: !value ? "empty" : "filled",
|
|
121
155
|
inputVariantInputPlaceholder: "default",
|
|
122
156
|
inputVariantValueInputPlaceholder: !value ? "empty" : "filled",
|
|
123
|
-
className: require_styles_styler.cx("grow", "uds-hit-target", "bg-clip-text", "focus:outline-none", isInteractive ? "cursor-text" : "cursor-not-allowed", inputClassName)
|
|
157
|
+
className: require_styles_styler.cx("grow", "uds-hit-target", "bg-transparent", "bg-clip-text", "focus-visible:outline-none", isInteractive ? "cursor-text" : "cursor-not-allowed", inputClassName)
|
|
124
158
|
}),
|
|
125
159
|
label: require_styles_styler.cx(require_styles_styler.getStyles({
|
|
126
160
|
inputSizeLabel: size,
|
|
@@ -182,10 +216,12 @@ const Input = (0, react.forwardRef)(function Input({ id, label, type = "text", s
|
|
|
182
216
|
disabled,
|
|
183
217
|
"aria-describedby": helpTextId,
|
|
184
218
|
"aria-invalid": hasError,
|
|
185
|
-
onChange: handleChange,
|
|
186
219
|
className: classNames.input,
|
|
187
220
|
...otherProps,
|
|
188
|
-
...inputProps
|
|
221
|
+
...inputProps,
|
|
222
|
+
onChange: handleChange,
|
|
223
|
+
onBlur: handleBlur,
|
|
224
|
+
onFocus: handleFocus
|
|
189
225
|
}),
|
|
190
226
|
endIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_HStack.HStack, {
|
|
191
227
|
alignItems: "center",
|
|
@@ -27,6 +27,19 @@ interface InputProps extends NativeInputProps, UniversalInputProps {
|
|
|
27
27
|
helperText?: Partial<React.HTMLAttributes<HTMLSpanElement> & DataAttributes>;
|
|
28
28
|
helperTextIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
|
|
29
29
|
};
|
|
30
|
+
/** Called on user-initiated blur. Return the formatted display value.
|
|
31
|
+
* The result flows through `onChange`. Programmatic value changes (autofill,
|
|
32
|
+
* password managers, parent state updates) do NOT trigger this.
|
|
33
|
+
*
|
|
34
|
+
* In controlled mode (`value` prop supplied) the formatted value is surfaced
|
|
35
|
+
* only through `onChange` — the parent MUST fold it back into `value`, or it
|
|
36
|
+
* reverts on the next render. Uncontrolled usage handles this internally. */
|
|
37
|
+
formatOnBlur?: (value: string) => string;
|
|
38
|
+
/** Called on focus. Return the value to display while editing (typically the
|
|
39
|
+
* raw, unformatted form). Omit to leave the value as-is on focus.
|
|
40
|
+
* The result flows through `onChange` (same controlled-mode caveat as
|
|
41
|
+
* `formatOnBlur`: the parent must propagate the value when `value` is set). */
|
|
42
|
+
parseOnFocus?: (value: string) => string;
|
|
30
43
|
}
|
|
31
44
|
/**
|
|
32
45
|
* **📦 An input that allows users to enter text and collect data.**
|
|
@@ -28,6 +28,19 @@ interface InputProps extends NativeInputProps, UniversalInputProps {
|
|
|
28
28
|
helperText?: Partial<React.HTMLAttributes<HTMLSpanElement> & DataAttributes>;
|
|
29
29
|
helperTextIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
|
|
30
30
|
};
|
|
31
|
+
/** Called on user-initiated blur. Return the formatted display value.
|
|
32
|
+
* The result flows through `onChange`. Programmatic value changes (autofill,
|
|
33
|
+
* password managers, parent state updates) do NOT trigger this.
|
|
34
|
+
*
|
|
35
|
+
* In controlled mode (`value` prop supplied) the formatted value is surfaced
|
|
36
|
+
* only through `onChange` — the parent MUST fold it back into `value`, or it
|
|
37
|
+
* reverts on the next render. Uncontrolled usage handles this internally. */
|
|
38
|
+
formatOnBlur?: (value: string) => string;
|
|
39
|
+
/** Called on focus. Return the value to display while editing (typically the
|
|
40
|
+
* raw, unformatted form). Omit to leave the value as-is on focus.
|
|
41
|
+
* The result flows through `onChange` (same controlled-mode caveat as
|
|
42
|
+
* `formatOnBlur`: the parent must propagate the value when `value` is set). */
|
|
43
|
+
parseOnFocus?: (value: string) => string;
|
|
31
44
|
}
|
|
32
45
|
/**
|
|
33
46
|
* **📦 An input that allows users to enter text and collect data.**
|
|
@@ -12,6 +12,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
12
12
|
import { isFunction } from "lodash-es";
|
|
13
13
|
import { useReducedMotion } from "motion/react";
|
|
14
14
|
//#region src/components/client/Input/Input.tsx
|
|
15
|
+
function setNativeInputValue(input, next) {
|
|
16
|
+
(Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set)?.call(input, next);
|
|
17
|
+
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
18
|
+
}
|
|
15
19
|
const HelpTextContent = memo(function HelpTextContentOriginal({ helpText, helperTextIcon, spacingStart, spacingTop, size, isFilled, helperTextSlotProps, ...rest }) {
|
|
16
20
|
if (!helpText) return null;
|
|
17
21
|
return /* @__PURE__ */ jsx(Box, {
|
|
@@ -79,7 +83,7 @@ const EndIcon = memo(function EndIcon({ icon, className, iconProps }) {
|
|
|
79
83
|
*
|
|
80
84
|
* @related [Checkbox](https://uds.build/docs/components/checkbox), [Radio](https://uds.build/docs/components/radio).
|
|
81
85
|
**/
|
|
82
|
-
const Input = forwardRef(function Input({ id, label, type = "text", size = "md", startIcon, endIcon, helpText, helperTextIcon, hasError, width: containerWidth = "full", defaultValue, value: valueProp, required, readOnly, disabled, reduceMotion: forceReduceMotion, onChange, slotProps, style, className, ...otherProps }, forwardedRef) {
|
|
86
|
+
const Input = forwardRef(function Input({ id, label, type = "text", size = "md", startIcon, endIcon, helpText, helperTextIcon, hasError, width: containerWidth = "full", defaultValue, value: valueProp, required, readOnly, disabled, reduceMotion: forceReduceMotion, onChange, onBlur, onFocus, formatOnBlur, parseOnFocus, slotProps, style, className, ...otherProps }, forwardedRef) {
|
|
83
87
|
const generatedId = useId();
|
|
84
88
|
const uid = id ?? `uds-input-${generatedId}`;
|
|
85
89
|
const helpTextId = `uds-input-${uid}-help-text`;
|
|
@@ -95,7 +99,36 @@ const Input = forwardRef(function Input({ id, label, type = "text", size = "md",
|
|
|
95
99
|
const handleChange = useCallback((e) => {
|
|
96
100
|
if (!isControlled) setValue(e.target.value);
|
|
97
101
|
onChange?.(e);
|
|
98
|
-
|
|
102
|
+
slotProps?.input?.onChange?.(e);
|
|
103
|
+
}, [
|
|
104
|
+
isControlled,
|
|
105
|
+
onChange,
|
|
106
|
+
slotProps
|
|
107
|
+
]);
|
|
108
|
+
const handleBlur = useCallback((e) => {
|
|
109
|
+
if (formatOnBlur && ref.current) {
|
|
110
|
+
const next = formatOnBlur(e.target.value);
|
|
111
|
+
if (next !== e.target.value) setNativeInputValue(ref.current, next);
|
|
112
|
+
}
|
|
113
|
+
onBlur?.(e);
|
|
114
|
+
slotProps?.input?.onBlur?.(e);
|
|
115
|
+
}, [
|
|
116
|
+
formatOnBlur,
|
|
117
|
+
onBlur,
|
|
118
|
+
slotProps
|
|
119
|
+
]);
|
|
120
|
+
const handleFocus = useCallback((e) => {
|
|
121
|
+
if (parseOnFocus && ref.current) {
|
|
122
|
+
const next = parseOnFocus(e.target.value);
|
|
123
|
+
if (next !== e.target.value) setNativeInputValue(ref.current, next);
|
|
124
|
+
}
|
|
125
|
+
onFocus?.(e);
|
|
126
|
+
slotProps?.input?.onFocus?.(e);
|
|
127
|
+
}, [
|
|
128
|
+
parseOnFocus,
|
|
129
|
+
onFocus,
|
|
130
|
+
slotProps
|
|
131
|
+
]);
|
|
99
132
|
const layoutVariant = useReducedMotion() ? "smooth" : "bouncy";
|
|
100
133
|
const reduceMotion = forceReduceMotion ? "always" : "user";
|
|
101
134
|
const isInteractive = !readOnly && !disabled;
|
|
@@ -107,7 +140,8 @@ const Input = forwardRef(function Input({ id, label, type = "text", size = "md",
|
|
|
107
140
|
className: cx([className, disabled ? "opacity-50" : ""])
|
|
108
141
|
}),
|
|
109
142
|
inputWrapper: cx(getStyles({
|
|
110
|
-
|
|
143
|
+
inputSizeInputWrapperStatic: size,
|
|
144
|
+
inputSizeInputWrapperDynamic: size,
|
|
111
145
|
inputVariantInputWrapper: "default",
|
|
112
146
|
inputVariantValueInputWrapper: !value ? "empty" : "filled"
|
|
113
147
|
}), "min-w-[200px]", inputWrapperClassName),
|
|
@@ -117,7 +151,7 @@ const Input = forwardRef(function Input({ id, label, type = "text", size = "md",
|
|
|
117
151
|
inputVariantValueInput: !value ? "empty" : "filled",
|
|
118
152
|
inputVariantInputPlaceholder: "default",
|
|
119
153
|
inputVariantValueInputPlaceholder: !value ? "empty" : "filled",
|
|
120
|
-
className: cx("grow", "uds-hit-target", "bg-clip-text", "focus:outline-none", isInteractive ? "cursor-text" : "cursor-not-allowed", inputClassName)
|
|
154
|
+
className: cx("grow", "uds-hit-target", "bg-transparent", "bg-clip-text", "focus-visible:outline-none", isInteractive ? "cursor-text" : "cursor-not-allowed", inputClassName)
|
|
121
155
|
}),
|
|
122
156
|
label: cx(getStyles({
|
|
123
157
|
inputSizeLabel: size,
|
|
@@ -179,10 +213,12 @@ const Input = forwardRef(function Input({ id, label, type = "text", size = "md",
|
|
|
179
213
|
disabled,
|
|
180
214
|
"aria-describedby": helpTextId,
|
|
181
215
|
"aria-invalid": hasError,
|
|
182
|
-
onChange: handleChange,
|
|
183
216
|
className: classNames.input,
|
|
184
217
|
...otherProps,
|
|
185
|
-
...inputProps
|
|
218
|
+
...inputProps,
|
|
219
|
+
onChange: handleChange,
|
|
220
|
+
onBlur: handleBlur,
|
|
221
|
+
onFocus: handleFocus
|
|
186
222
|
}),
|
|
187
223
|
endIcon && /* @__PURE__ */ jsx(HStack, {
|
|
188
224
|
alignItems: "center",
|
|
@@ -87,6 +87,6 @@ interface MenuItemCheckboxProps extends Omit<PressableProps, 'asChild'>, HtmlBut
|
|
|
87
87
|
*
|
|
88
88
|
* @related [Menu](https://uds.build/docs/components/menu), [Menu.Item](https://uds.build/docs/components/menu-item)
|
|
89
89
|
**/
|
|
90
|
-
declare const MenuItemCheckbox: _$react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "
|
|
90
|
+
declare const MenuItemCheckbox: _$react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "rootProps" | "hideEndIcon" | "active"> & _$react.RefAttributes<HTMLDivElement>>;
|
|
91
91
|
//#endregion
|
|
92
92
|
export { MenuItemCheckbox, type MenuItemCheckboxProps };
|
|
@@ -88,6 +88,6 @@ interface MenuItemCheckboxProps extends Omit<PressableProps, 'asChild'>, HtmlBut
|
|
|
88
88
|
*
|
|
89
89
|
* @related [Menu](https://uds.build/docs/components/menu), [Menu.Item](https://uds.build/docs/components/menu-item)
|
|
90
90
|
**/
|
|
91
|
-
declare const MenuItemCheckbox: _$react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "
|
|
91
|
+
declare const MenuItemCheckbox: _$react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "rootProps" | "hideEndIcon" | "active"> & _$react.RefAttributes<HTMLDivElement>>;
|
|
92
92
|
//#endregion
|
|
93
93
|
export { MenuItemCheckbox, type MenuItemCheckboxProps };
|