@acusti/css-value-input 2.1.1 → 2.2.0
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/README.md +916 -17
- package/dist/CSSValueInput.d.ts +3 -3
- package/dist/CSSValueInput.js +86 -96
- package/dist/CSSValueInput.js.map +1 -1
- package/package.json +12 -12
package/dist/CSSValueInput.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSValueType } from '../../css-values/src';
|
|
2
|
-
import { ChangeEvent, FocusEvent, KeyboardEvent, ReactNode } from 'react';
|
|
2
|
+
import { ChangeEvent, FocusEvent, KeyboardEvent, ReactNode, Ref } from 'react';
|
|
3
3
|
export type Props = {
|
|
4
4
|
/**
|
|
5
5
|
* Boolean indicating if the user can submit an empty value (i.e. clear
|
|
@@ -31,6 +31,7 @@ export type Props = {
|
|
|
31
31
|
*/
|
|
32
32
|
onSubmitValue: (value: string) => unknown;
|
|
33
33
|
placeholder?: string;
|
|
34
|
+
ref?: Ref<HTMLInputElement>;
|
|
34
35
|
step?: number;
|
|
35
36
|
tabIndex?: number;
|
|
36
37
|
title?: string;
|
|
@@ -39,5 +40,4 @@ export type Props = {
|
|
|
39
40
|
validator?: ((value: string) => boolean) | RegExp;
|
|
40
41
|
value?: string;
|
|
41
42
|
};
|
|
42
|
-
|
|
43
|
-
export default _default;
|
|
43
|
+
export default function CSSValueInput({ allowEmpty, className, cssValueType, disabled, getValueAsNumber, icon, label, max, min, name, onBlur, onChange, onFocus, onKeyDown, onKeyUp, onSubmitValue, placeholder, ref, step, tabIndex, title, unit, validator, value: valueFromProps, }: Props): import("react/jsx-runtime").JSX.Element;
|
package/dist/CSSValueInput.js
CHANGED
|
@@ -3,10 +3,10 @@ import { c } from "react/compiler-runtime";
|
|
|
3
3
|
import { DEFAULT_UNIT_BY_CSS_VALUE_TYPE, DEFAULT_CSS_VALUE_TYPE, getCSSValueAsNumber, getUnitFromCSSValue, getCSSValueWithUnit, roundToPrecision } from "@acusti/css-values";
|
|
4
4
|
import InputText from "@acusti/input-text";
|
|
5
5
|
import clsx from "clsx";
|
|
6
|
-
import {
|
|
6
|
+
import { useRef, useImperativeHandle, useState, useEffect } from "react";
|
|
7
7
|
const ROOT_CLASS_NAME = "cssvalueinput";
|
|
8
|
-
|
|
9
|
-
const $ = c(
|
|
8
|
+
function CSSValueInput(t0) {
|
|
9
|
+
const $ = c(57);
|
|
10
10
|
const {
|
|
11
11
|
allowEmpty: t1,
|
|
12
12
|
className,
|
|
@@ -25,6 +25,7 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
25
25
|
onKeyUp,
|
|
26
26
|
onSubmitValue,
|
|
27
27
|
placeholder,
|
|
28
|
+
ref,
|
|
28
29
|
step: t4,
|
|
29
30
|
tabIndex,
|
|
30
31
|
title,
|
|
@@ -47,12 +48,12 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
47
48
|
}
|
|
48
49
|
useImperativeHandle(ref, t6);
|
|
49
50
|
const value = typeof valueFromProps === "number" && !Number.isNaN(valueFromProps) ? `${valueFromProps}` : valueFromProps;
|
|
50
|
-
const
|
|
51
|
+
const [submittedValue, setSubmittedValue] = useState(value ?? "");
|
|
51
52
|
let t7;
|
|
52
53
|
let t8;
|
|
53
54
|
if ($[1] !== value) {
|
|
54
55
|
t7 = () => {
|
|
55
|
-
|
|
56
|
+
setSubmittedValue(value ?? "");
|
|
56
57
|
};
|
|
57
58
|
t8 = [value];
|
|
58
59
|
$[1] = value;
|
|
@@ -67,7 +68,7 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
67
68
|
if ($[4] !== onSubmitValue) {
|
|
68
69
|
t9 = (event) => {
|
|
69
70
|
const currentValue = event.currentTarget.value;
|
|
70
|
-
|
|
71
|
+
setSubmittedValue(currentValue);
|
|
71
72
|
onSubmitValue(currentValue);
|
|
72
73
|
};
|
|
73
74
|
$[4] = onSubmitValue;
|
|
@@ -77,7 +78,7 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
77
78
|
}
|
|
78
79
|
const handleSubmitValue = t9;
|
|
79
80
|
let t10;
|
|
80
|
-
if ($[6] !== allowEmpty || $[7] !== cssValueType || $[8] !== getValueAsNumber || $[9] !== handleSubmitValue || $[10] !== max || $[11] !== min || $[12] !== onBlur || $[13] !==
|
|
81
|
+
if ($[6] !== allowEmpty || $[7] !== cssValueType || $[8] !== getValueAsNumber || $[9] !== handleSubmitValue || $[10] !== max || $[11] !== min || $[12] !== onBlur || $[13] !== submittedValue || $[14] !== unit || $[15] !== validator) {
|
|
81
82
|
t10 = (event_0) => {
|
|
82
83
|
const input = event_0.currentTarget;
|
|
83
84
|
inputRef.current = input;
|
|
@@ -94,7 +95,7 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
94
95
|
const defaultUnit = unit ? getUnitFromCSSValue({
|
|
95
96
|
cssValueType,
|
|
96
97
|
defaultUnit: unit,
|
|
97
|
-
value:
|
|
98
|
+
value: submittedValue
|
|
98
99
|
}) : "";
|
|
99
100
|
if (!isCurrentValueFinite) {
|
|
100
101
|
let isValid = false;
|
|
@@ -108,7 +109,7 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
108
109
|
if (isValid) {
|
|
109
110
|
handleSubmitValue(event_0);
|
|
110
111
|
} else {
|
|
111
|
-
input.value =
|
|
112
|
+
input.value = submittedValue;
|
|
112
113
|
}
|
|
113
114
|
return;
|
|
114
115
|
}
|
|
@@ -149,15 +150,16 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
149
150
|
$[10] = max;
|
|
150
151
|
$[11] = min;
|
|
151
152
|
$[12] = onBlur;
|
|
152
|
-
$[13] =
|
|
153
|
-
$[14] =
|
|
154
|
-
$[15] =
|
|
153
|
+
$[13] = submittedValue;
|
|
154
|
+
$[14] = unit;
|
|
155
|
+
$[15] = validator;
|
|
156
|
+
$[16] = t10;
|
|
155
157
|
} else {
|
|
156
|
-
t10 = $[
|
|
158
|
+
t10 = $[16];
|
|
157
159
|
}
|
|
158
160
|
const handleBlur = t10;
|
|
159
161
|
let t11;
|
|
160
|
-
if ($[
|
|
162
|
+
if ($[17] !== cssValueType || $[18] !== getValueAsNumber || $[19] !== max || $[20] !== min || $[21] !== step || $[22] !== unit) {
|
|
161
163
|
t11 = (t122) => {
|
|
162
164
|
const {
|
|
163
165
|
currentValue: currentValue_1,
|
|
@@ -190,64 +192,52 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
190
192
|
});
|
|
191
193
|
return `${nextValue}${nextUnit}`;
|
|
192
194
|
};
|
|
193
|
-
$[
|
|
194
|
-
$[
|
|
195
|
-
$[
|
|
196
|
-
$[
|
|
197
|
-
$[
|
|
198
|
-
$[
|
|
199
|
-
$[
|
|
195
|
+
$[17] = cssValueType;
|
|
196
|
+
$[18] = getValueAsNumber;
|
|
197
|
+
$[19] = max;
|
|
198
|
+
$[20] = min;
|
|
199
|
+
$[21] = step;
|
|
200
|
+
$[22] = unit;
|
|
201
|
+
$[23] = t11;
|
|
200
202
|
} else {
|
|
201
|
-
t11 = $[
|
|
203
|
+
t11 = $[23];
|
|
202
204
|
}
|
|
203
205
|
const getNextValue = t11;
|
|
204
206
|
let t12;
|
|
205
|
-
if ($[
|
|
207
|
+
if ($[24] !== getNextValue || $[25] !== onKeyDown || $[26] !== placeholder || $[27] !== unit) {
|
|
206
208
|
t12 = (event_1) => {
|
|
207
209
|
const input_0 = event_1.currentTarget;
|
|
208
210
|
inputRef.current = input_0;
|
|
209
211
|
if (onKeyDown) {
|
|
210
212
|
onKeyDown(event_1);
|
|
211
213
|
}
|
|
214
|
+
if (event_1.key !== "ArrowDown" && event_1.key !== "ArrowUp") {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
212
217
|
const currentValue_2 = input_0.value ?? placeholder ?? `0${unit}`;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
signum: event_1.key === "ArrowUp" ? 1 : -1
|
|
221
|
-
});
|
|
222
|
-
if (nextValue_0 === currentValue_2) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
event_1.stopPropagation();
|
|
226
|
-
event_1.preventDefault();
|
|
227
|
-
input_0.value = nextValue_0;
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
case "Enter":
|
|
231
|
-
case "Escape": {
|
|
232
|
-
if (event_1.key === "Escape") {
|
|
233
|
-
input_0.value = submittedValueRef.current;
|
|
234
|
-
}
|
|
235
|
-
input_0.blur();
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
218
|
+
const nextValue_0 = getNextValue({
|
|
219
|
+
currentValue: currentValue_2,
|
|
220
|
+
multiplier: event_1.shiftKey ? 10 : 1,
|
|
221
|
+
signum: event_1.key === "ArrowUp" ? 1 : -1
|
|
222
|
+
});
|
|
223
|
+
if (nextValue_0 === currentValue_2) {
|
|
224
|
+
return;
|
|
238
225
|
}
|
|
226
|
+
event_1.stopPropagation();
|
|
227
|
+
event_1.preventDefault();
|
|
228
|
+
input_0.value = nextValue_0;
|
|
239
229
|
};
|
|
240
|
-
$[
|
|
241
|
-
$[
|
|
242
|
-
$[
|
|
243
|
-
$[
|
|
244
|
-
$[
|
|
230
|
+
$[24] = getNextValue;
|
|
231
|
+
$[25] = onKeyDown;
|
|
232
|
+
$[26] = placeholder;
|
|
233
|
+
$[27] = unit;
|
|
234
|
+
$[28] = t12;
|
|
245
235
|
} else {
|
|
246
|
-
t12 = $[
|
|
236
|
+
t12 = $[28];
|
|
247
237
|
}
|
|
248
238
|
const handleKeyDown = t12;
|
|
249
239
|
let t13;
|
|
250
|
-
if ($[
|
|
240
|
+
if ($[29] !== handleSubmitValue || $[30] !== onKeyUp) {
|
|
251
241
|
t13 = (event_2) => {
|
|
252
242
|
if (onKeyUp) {
|
|
253
243
|
onKeyUp(event_2);
|
|
@@ -256,77 +246,77 @@ const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
|
256
246
|
handleSubmitValue(event_2);
|
|
257
247
|
}
|
|
258
248
|
};
|
|
259
|
-
$[
|
|
260
|
-
$[
|
|
261
|
-
$[
|
|
249
|
+
$[29] = handleSubmitValue;
|
|
250
|
+
$[30] = onKeyUp;
|
|
251
|
+
$[31] = t13;
|
|
262
252
|
} else {
|
|
263
|
-
t13 = $[
|
|
253
|
+
t13 = $[31];
|
|
264
254
|
}
|
|
265
255
|
const handleKeyUp = t13;
|
|
266
256
|
const t14 = label ? void 0 : title;
|
|
267
257
|
let t15;
|
|
268
|
-
if ($[
|
|
258
|
+
if ($[32] !== className || $[33] !== disabled) {
|
|
269
259
|
t15 = clsx(ROOT_CLASS_NAME, className, {
|
|
270
260
|
disabled
|
|
271
261
|
});
|
|
272
|
-
$[
|
|
273
|
-
$[
|
|
274
|
-
$[
|
|
262
|
+
$[32] = className;
|
|
263
|
+
$[33] = disabled;
|
|
264
|
+
$[34] = t15;
|
|
275
265
|
} else {
|
|
276
|
-
t15 = $[
|
|
266
|
+
t15 = $[34];
|
|
277
267
|
}
|
|
278
268
|
let t16;
|
|
279
|
-
if ($[
|
|
269
|
+
if ($[35] !== icon) {
|
|
280
270
|
t16 = icon == null ? null : /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-icon`, children: icon });
|
|
281
|
-
$[
|
|
282
|
-
$[
|
|
271
|
+
$[35] = icon;
|
|
272
|
+
$[36] = t16;
|
|
283
273
|
} else {
|
|
284
|
-
t16 = $[
|
|
274
|
+
t16 = $[36];
|
|
285
275
|
}
|
|
286
276
|
let t17;
|
|
287
|
-
if ($[
|
|
277
|
+
if ($[37] !== label) {
|
|
288
278
|
t17 = label ? /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-label`, children: /* @__PURE__ */ jsx("p", { className: `${ROOT_CLASS_NAME}-label-text`, children: label }) }) : null;
|
|
289
|
-
$[
|
|
290
|
-
$[
|
|
279
|
+
$[37] = label;
|
|
280
|
+
$[38] = t17;
|
|
291
281
|
} else {
|
|
292
|
-
t17 = $[
|
|
282
|
+
t17 = $[38];
|
|
293
283
|
}
|
|
294
284
|
let t18;
|
|
295
|
-
if ($[
|
|
296
|
-
t18 = /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-value`, children: /* @__PURE__ */ jsx(InputText, { disabled, initialValue:
|
|
297
|
-
$[
|
|
298
|
-
$[
|
|
299
|
-
$[
|
|
300
|
-
$[
|
|
301
|
-
$[
|
|
302
|
-
$[
|
|
303
|
-
$[
|
|
304
|
-
$[
|
|
305
|
-
$[
|
|
306
|
-
$[
|
|
307
|
-
$[
|
|
285
|
+
if ($[39] !== disabled || $[40] !== handleBlur || $[41] !== handleKeyDown || $[42] !== handleKeyUp || $[43] !== name || $[44] !== onChange || $[45] !== onFocus || $[46] !== placeholder || $[47] !== submittedValue || $[48] !== tabIndex) {
|
|
286
|
+
t18 = /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-value`, children: /* @__PURE__ */ jsx(InputText, { disabled, discardOnEscape: true, initialValue: submittedValue, name, onBlur: handleBlur, onChange, onFocus, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, placeholder, ref: inputRef, selectTextOnFocus: true, tabIndex }) });
|
|
287
|
+
$[39] = disabled;
|
|
288
|
+
$[40] = handleBlur;
|
|
289
|
+
$[41] = handleKeyDown;
|
|
290
|
+
$[42] = handleKeyUp;
|
|
291
|
+
$[43] = name;
|
|
292
|
+
$[44] = onChange;
|
|
293
|
+
$[45] = onFocus;
|
|
294
|
+
$[46] = placeholder;
|
|
295
|
+
$[47] = submittedValue;
|
|
296
|
+
$[48] = tabIndex;
|
|
297
|
+
$[49] = t18;
|
|
308
298
|
} else {
|
|
309
|
-
t18 = $[
|
|
299
|
+
t18 = $[49];
|
|
310
300
|
}
|
|
311
301
|
let t19;
|
|
312
|
-
if ($[
|
|
302
|
+
if ($[50] !== t14 || $[51] !== t15 || $[52] !== t16 || $[53] !== t17 || $[54] !== t18 || $[55] !== title) {
|
|
313
303
|
t19 = /* @__PURE__ */ jsxs("label", { "aria-label": t14, className: t15, title, children: [
|
|
314
304
|
t16,
|
|
315
305
|
t17,
|
|
316
306
|
t18
|
|
317
307
|
] });
|
|
318
|
-
$[
|
|
319
|
-
$[
|
|
320
|
-
$[
|
|
321
|
-
$[
|
|
322
|
-
$[
|
|
323
|
-
$[
|
|
324
|
-
$[
|
|
308
|
+
$[50] = t14;
|
|
309
|
+
$[51] = t15;
|
|
310
|
+
$[52] = t16;
|
|
311
|
+
$[53] = t17;
|
|
312
|
+
$[54] = t18;
|
|
313
|
+
$[55] = title;
|
|
314
|
+
$[56] = t19;
|
|
325
315
|
} else {
|
|
326
|
-
t19 = $[
|
|
316
|
+
t19 = $[56];
|
|
327
317
|
}
|
|
328
318
|
return t19;
|
|
329
|
-
}
|
|
319
|
+
}
|
|
330
320
|
export {
|
|
331
321
|
CSSValueInput as default
|
|
332
322
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CSSValueInput.js","sources":["../src/CSSValueInput.tsx"],"sourcesContent":["import {\n type CSSValueType,\n DEFAULT_CSS_VALUE_TYPE,\n DEFAULT_UNIT_BY_CSS_VALUE_TYPE,\n getCSSValueAsNumber,\n getCSSValueWithUnit,\n getUnitFromCSSValue,\n roundToPrecision,\n} from '@acusti/css-values';\nimport InputText from '@acusti/input-text';\nimport clsx from 'clsx';\nimport {\n type ChangeEvent,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type SyntheticEvent,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n className?: string;\n cssValueType?: CSSValueType;\n disabled?: boolean;\n /**\n * Function that receives a value and converts it to its numerical equivalent\n * (i.e. '12px' → 12). Defaults to parseFloat().\n */\n getValueAsNumber?: (value: number | string) => number;\n icon?: ReactNode;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => unknown;\n onFocus?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n /**\n * Custom event handler triggered when the user presses enter/return\n * or blurs the input after making a change. Hitting esc will restore\n * the previous submitted value or original value.\n */\n onSubmitValue: (value: string) => unknown;\n placeholder?: string;\n step?: number;\n tabIndex?: number;\n title?: string;\n unit?: string;\n /** Regex or validator function to validate non-numeric values */\n validator?: ((value: string) => boolean) | RegExp;\n value?: string;\n};\n\ntype InputRef = HTMLInputElement | null;\n\nconst ROOT_CLASS_NAME = 'cssvalueinput';\n\nexport default forwardRef<HTMLInputElement, Props>(function CSSValueInput(\n {\n allowEmpty = true,\n className,\n cssValueType = DEFAULT_CSS_VALUE_TYPE,\n disabled,\n getValueAsNumber = getCSSValueAsNumber,\n icon,\n label,\n max,\n min,\n name,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n onSubmitValue,\n placeholder,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n }: Props,\n ref,\n) {\n const inputRef = useRef<InputRef>(null);\n useImperativeHandle<InputRef, InputRef>(ref, () => inputRef.current);\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && !Number.isNaN(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const submittedValueRef = useRef<string>(value ?? '');\n\n useEffect(() => {\n submittedValueRef.current = value ?? '';\n }, [value]);\n\n const handleSubmitValue = (event: SyntheticEvent<HTMLInputElement>) => {\n const currentValue = event.currentTarget.value;\n // Store last submittedValue (used to reset value on invalid input)\n submittedValueRef.current = currentValue;\n onSubmitValue(currentValue);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onBlur) onBlur(event);\n\n const currentValue = input.value.trim();\n\n // If allowEmpty and value is empty, skip all validation + normalization\n if (allowEmpty && !currentValue) {\n handleSubmitValue(event);\n return;\n }\n\n const currentValueAsNumber = getValueAsNumber(currentValue);\n const isCurrentValueFinite = Number.isFinite(currentValueAsNumber);\n // Inherit unit from last submitted value unless default is unitless;\n // ensures that submitting a new value with no unit doesn’t add a unit\n const defaultUnit = unit\n ? getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: submittedValueRef.current,\n })\n : '';\n\n if (!isCurrentValueFinite) {\n let isValid = false;\n if (validator instanceof RegExp) {\n isValid = validator.test(currentValue);\n } else if (validator) {\n isValid = validator(currentValue);\n }\n\n if (isValid) {\n handleSubmitValue(event);\n } else {\n // If current value isn’t valid, revert to last submitted value\n input.value = submittedValueRef.current;\n }\n\n return;\n }\n\n // Normalize value by applying min/max and integer constraints\n let normalizedValueAsNumber = currentValueAsNumber;\n\n if (isCurrentValueFinite) {\n if (min != null && currentValueAsNumber < min) {\n normalizedValueAsNumber = min;\n } else if (max != null && currentValueAsNumber > max) {\n normalizedValueAsNumber = max;\n } else if (cssValueType === 'integer') {\n normalizedValueAsNumber = Math.floor(currentValueAsNumber);\n }\n }\n\n if (normalizedValueAsNumber !== currentValueAsNumber) {\n const currentUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n input.value = normalizedValueAsNumber + currentUnit;\n } else {\n input.value = getCSSValueWithUnit({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n }\n\n handleSubmitValue(event);\n };\n\n const getNextValue = ({\n currentValue,\n multiplier = 1,\n signum = 1,\n }: {\n currentValue: number | string;\n multiplier?: number;\n signum?: number;\n }) => {\n const modifier = multiplier * step * signum;\n const currentValueAsNumber = getValueAsNumber(currentValue);\n // If currentValue isn’t numeric, don’t try to increment/decrement it\n if (typeof currentValue === 'string' && Number.isNaN(currentValueAsNumber)) {\n return currentValue;\n }\n\n let nextValue = currentValueAsNumber + modifier;\n if (cssValueType === 'integer') {\n nextValue = Math.floor(nextValue);\n } else {\n nextValue = roundToPrecision(nextValue, 5);\n }\n\n if (typeof max === 'number' && Number.isFinite(max)) {\n nextValue = Math.min(max, nextValue);\n }\n\n if (typeof min === 'number' && Number.isFinite(min)) {\n nextValue = Math.max(min, nextValue);\n }\n\n const nextUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: currentValue,\n });\n return `${nextValue}${nextUnit}`;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onKeyDown) onKeyDown(event);\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n let nextValue = '';\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n nextValue = getNextValue({\n currentValue,\n multiplier: event.shiftKey ? 10 : 1,\n signum: event.key === 'ArrowUp' ? 1 : -1,\n });\n\n if (nextValue === currentValue) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n input.value = nextValue;\n return;\n case 'Enter':\n case 'Escape':\n if (event.key === 'Escape') {\n input.value = submittedValueRef.current;\n }\n input.blur();\n return;\n default:\n // No default key handling\n }\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLInputElement>) => {\n if (onKeyUp) onKeyUp(event);\n // If this is the key up from ↑ or ↓ keys, time to handleSubmitValue\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n handleSubmitValue(event);\n }\n };\n\n return (\n <label\n aria-label={label ? undefined : title}\n className={clsx(ROOT_CLASS_NAME, className, { disabled })}\n title={title}\n >\n {icon == null ? null : (\n <div className={`${ROOT_CLASS_NAME}-icon`}>{icon}</div>\n )}\n {label ? (\n <div className={`${ROOT_CLASS_NAME}-label`}>\n <p className={`${ROOT_CLASS_NAME}-label-text`}>{label}</p>\n </div>\n ) : null}\n <div className={`${ROOT_CLASS_NAME}-value`}>\n <InputText\n disabled={disabled}\n initialValue={value}\n name={name}\n onBlur={handleBlur}\n onChange={onChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n ref={inputRef}\n selectTextOnFocus\n tabIndex={tabIndex}\n />\n </div>\n </label>\n );\n});\n"],"names":["ROOT_CLASS_NAME","forwardRef","CSSValueInput","t0","ref","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","step","t4","tabIndex","title","unit","t5","validator","value","valueFromProps","undefined","DEFAULT_CSS_VALUE_TYPE","getCSSValueAsNumber","DEFAULT_UNIT_BY_CSS_VALUE_TYPE","inputRef","useRef","t6","Symbol","for","current","useImperativeHandle","Number","isNaN","submittedValueRef","t7","t8","useEffect","t9","event","currentValue","currentTarget","handleSubmitValue","t10","event_0","input","currentValue_0","trim","currentValueAsNumber","isCurrentValueFinite","isFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","currentUnit","getCSSValueWithUnit","handleBlur","t11","t12","currentValue_1","multiplier","t13","signum","t14","modifier","currentValueAsNumber_0","nextValue","nextUnit","getNextValue","event_1","input_0","currentValue_2","nextValue_0","key","shiftKey","stopPropagation","preventDefault","blur","handleKeyDown","event_2","handleKeyUp","t15","clsx","t16","t17","t18","t19"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CSSValueInput.js","sources":["../src/CSSValueInput.tsx"],"sourcesContent":["import {\n type CSSValueType,\n DEFAULT_CSS_VALUE_TYPE,\n DEFAULT_UNIT_BY_CSS_VALUE_TYPE,\n getCSSValueAsNumber,\n getCSSValueWithUnit,\n getUnitFromCSSValue,\n roundToPrecision,\n} from '@acusti/css-values';\nimport InputText from '@acusti/input-text';\nimport clsx from 'clsx';\nimport {\n type ChangeEvent,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type SyntheticEvent,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n className?: string;\n cssValueType?: CSSValueType;\n disabled?: boolean;\n /**\n * Function that receives a value and converts it to its numerical equivalent\n * (i.e. '12px' → 12). Defaults to parseFloat().\n */\n getValueAsNumber?: (value: number | string) => number;\n icon?: ReactNode;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => unknown;\n onFocus?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n /**\n * Custom event handler triggered when the user presses enter/return\n * or blurs the input after making a change. Hitting esc will restore\n * the previous submitted value or original value.\n */\n onSubmitValue: (value: string) => unknown;\n placeholder?: string;\n ref?: Ref<HTMLInputElement>;\n step?: number;\n tabIndex?: number;\n title?: string;\n unit?: string;\n /** Regex or validator function to validate non-numeric values */\n validator?: ((value: string) => boolean) | RegExp;\n value?: string;\n};\n\ntype InputRef = HTMLInputElement | null;\n\nconst ROOT_CLASS_NAME = 'cssvalueinput';\n\nexport default function CSSValueInput({\n allowEmpty = true,\n className,\n cssValueType = DEFAULT_CSS_VALUE_TYPE,\n disabled,\n getValueAsNumber = getCSSValueAsNumber,\n icon,\n label,\n max,\n min,\n name,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n onSubmitValue,\n placeholder,\n ref,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n}: Props) {\n const inputRef = useRef<InputRef>(null);\n\n useImperativeHandle<InputRef, InputRef>(ref, () => inputRef.current);\n\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && !Number.isNaN(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const [submittedValue, setSubmittedValue] = useState(value ?? '');\n\n useEffect(() => {\n setSubmittedValue(value ?? '');\n }, [value]);\n\n const handleSubmitValue = (event: SyntheticEvent<HTMLInputElement>) => {\n const currentValue = event.currentTarget.value;\n // Store last submittedValue (used to reset value on invalid input)\n setSubmittedValue(currentValue);\n onSubmitValue(currentValue);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onBlur) onBlur(event);\n\n const currentValue = input.value.trim();\n\n // If allowEmpty and value is empty, skip all validation + normalization\n if (allowEmpty && !currentValue) {\n handleSubmitValue(event);\n return;\n }\n\n const currentValueAsNumber = getValueAsNumber(currentValue);\n const isCurrentValueFinite = Number.isFinite(currentValueAsNumber);\n // Inherit unit from last submitted value unless default is unitless;\n // ensures that submitting a new value with no unit doesn’t add a unit\n const defaultUnit = unit\n ? getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: submittedValue,\n })\n : '';\n\n if (!isCurrentValueFinite) {\n let isValid = false;\n if (validator instanceof RegExp) {\n isValid = validator.test(currentValue);\n } else if (validator) {\n isValid = validator(currentValue);\n }\n\n if (isValid) {\n handleSubmitValue(event);\n } else {\n // If current value isn’t valid, revert to last submitted value\n input.value = submittedValue;\n }\n\n return;\n }\n\n // Normalize value by applying min/max and integer constraints\n let normalizedValueAsNumber = currentValueAsNumber;\n\n if (isCurrentValueFinite) {\n if (min != null && currentValueAsNumber < min) {\n normalizedValueAsNumber = min;\n } else if (max != null && currentValueAsNumber > max) {\n normalizedValueAsNumber = max;\n } else if (cssValueType === 'integer') {\n normalizedValueAsNumber = Math.floor(currentValueAsNumber);\n }\n }\n\n if (normalizedValueAsNumber !== currentValueAsNumber) {\n const currentUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n input.value = normalizedValueAsNumber + currentUnit;\n } else {\n input.value = getCSSValueWithUnit({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n }\n\n handleSubmitValue(event);\n };\n\n const getNextValue = ({\n currentValue,\n multiplier = 1,\n signum = 1,\n }: {\n currentValue: number | string;\n multiplier?: number;\n signum?: number;\n }) => {\n const modifier = multiplier * step * signum;\n const currentValueAsNumber = getValueAsNumber(currentValue);\n // If currentValue isn’t numeric, don’t try to increment/decrement it\n if (typeof currentValue === 'string' && Number.isNaN(currentValueAsNumber)) {\n return currentValue;\n }\n\n let nextValue = currentValueAsNumber + modifier;\n if (cssValueType === 'integer') {\n nextValue = Math.floor(nextValue);\n } else {\n nextValue = roundToPrecision(nextValue, 5);\n }\n\n if (typeof max === 'number' && Number.isFinite(max)) {\n nextValue = Math.min(max, nextValue);\n }\n\n if (typeof min === 'number' && Number.isFinite(min)) {\n nextValue = Math.max(min, nextValue);\n }\n\n const nextUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: currentValue,\n });\n return `${nextValue}${nextUnit}`;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onKeyDown) onKeyDown(event);\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n const nextValue = getNextValue({\n currentValue,\n multiplier: event.shiftKey ? 10 : 1,\n signum: event.key === 'ArrowUp' ? 1 : -1,\n });\n\n if (nextValue === currentValue) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n input.value = nextValue;\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLInputElement>) => {\n if (onKeyUp) onKeyUp(event);\n // If this is the key up from ↑ or ↓ keys, time to handleSubmitValue\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n handleSubmitValue(event);\n }\n };\n\n return (\n <label\n aria-label={label ? undefined : title}\n className={clsx(ROOT_CLASS_NAME, className, { disabled })}\n title={title}\n >\n {icon == null ? null : (\n <div className={`${ROOT_CLASS_NAME}-icon`}>{icon}</div>\n )}\n {label ? (\n <div className={`${ROOT_CLASS_NAME}-label`}>\n <p className={`${ROOT_CLASS_NAME}-label-text`}>{label}</p>\n </div>\n ) : null}\n <div className={`${ROOT_CLASS_NAME}-value`}>\n <InputText\n disabled={disabled}\n discardOnEscape\n initialValue={submittedValue}\n name={name}\n onBlur={handleBlur}\n onChange={onChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n ref={inputRef}\n selectTextOnFocus\n tabIndex={tabIndex}\n />\n </div>\n </label>\n );\n}\n"],"names":["ROOT_CLASS_NAME","CSSValueInput","t0","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","ref","step","t4","tabIndex","title","unit","t5","validator","value","valueFromProps","undefined","DEFAULT_CSS_VALUE_TYPE","getCSSValueAsNumber","DEFAULT_UNIT_BY_CSS_VALUE_TYPE","inputRef","useRef","t6","Symbol","for","current","useImperativeHandle","Number","isNaN","submittedValue","setSubmittedValue","useState","t7","t8","useEffect","t9","event","currentValue","currentTarget","handleSubmitValue","t10","event_0","input","currentValue_0","trim","currentValueAsNumber","isCurrentValueFinite","isFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","Math","floor","currentUnit","getCSSValueWithUnit","handleBlur","t11","t12","currentValue_1","multiplier","t13","signum","t14","modifier","currentValueAsNumber_0","nextValue","roundToPrecision","nextUnit","getNextValue","event_1","input_0","key","currentValue_2","nextValue_0","shiftKey","stopPropagation","preventDefault","handleKeyDown","event_2","handleKeyUp","t15","clsx","t16","t17","t18","t19"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acusti/css-value-input",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": "./dist/CSSValueInput.js",
|
|
@@ -38,23 +38,23 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/acusti/uikit/tree/main/packages/css-value-input#readme",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@testing-library/dom": "^10.4.
|
|
41
|
+
"@testing-library/dom": "^10.4.1",
|
|
42
42
|
"@testing-library/react": "^16.3.0",
|
|
43
43
|
"@testing-library/user-event": "^14.6.1",
|
|
44
|
-
"@types/react": "^19.
|
|
45
|
-
"@vitejs/plugin-react": "^
|
|
46
|
-
"babel-plugin-react-compiler": "
|
|
47
|
-
"happy-dom": "^
|
|
48
|
-
"react": "^19.
|
|
49
|
-
"react-dom": "^19.
|
|
50
|
-
"typescript": "5.
|
|
51
|
-
"unplugin-dts": "^1.0.0-beta.
|
|
52
|
-
"vite": "^7.
|
|
44
|
+
"@types/react": "^19.2.0",
|
|
45
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
46
|
+
"babel-plugin-react-compiler": "^1",
|
|
47
|
+
"happy-dom": "^20.0.0",
|
|
48
|
+
"react": "^19.2.0",
|
|
49
|
+
"react-dom": "^19.2.0",
|
|
50
|
+
"typescript": "5.9.2",
|
|
51
|
+
"unplugin-dts": "^1.0.0-beta.6",
|
|
52
|
+
"vite": "^7.1.8",
|
|
53
53
|
"vitest": "^3.2.4"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@acusti/css-values": "^1.2.0",
|
|
57
|
-
"@acusti/input-text": "^2.
|
|
57
|
+
"@acusti/input-text": "^2.2.0",
|
|
58
58
|
"clsx": "^2"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|