@salt-ds/lab 1.0.0-alpha.77 → 1.0.0-alpha.79

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/css/salt-lab.css +17 -13
  3. package/dist-cjs/calendar/useCalendarDay.js +3 -2
  4. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  5. package/dist-cjs/form-field-legacy/FormHelperText.css.js +1 -1
  6. package/dist-cjs/form-field-legacy/FormLabel.css.js +1 -1
  7. package/dist-cjs/index.js +1 -2
  8. package/dist-cjs/index.js.map +1 -1
  9. package/dist-cjs/number-input/NumberInput.css.js +1 -1
  10. package/dist-cjs/number-input/NumberInput.js +201 -131
  11. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  12. package/dist-cjs/tabs-next/TabNextTrigger.css.js +1 -1
  13. package/dist-es/calendar/useCalendarDay.js +3 -2
  14. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  15. package/dist-es/form-field-legacy/FormHelperText.css.js +1 -1
  16. package/dist-es/form-field-legacy/FormLabel.css.js +1 -1
  17. package/dist-es/index.js +1 -2
  18. package/dist-es/index.js.map +1 -1
  19. package/dist-es/number-input/NumberInput.css.js +1 -1
  20. package/dist-es/number-input/NumberInput.js +201 -132
  21. package/dist-es/number-input/NumberInput.js.map +1 -1
  22. package/dist-es/tabs-next/TabNextTrigger.css.js +1 -1
  23. package/dist-types/number-input/NumberInput.d.ts +28 -15
  24. package/dist-types/number-input/index.d.ts +0 -1
  25. package/package.json +4 -4
  26. package/dist-cjs/number-input/internal/useCaret.js +0 -34
  27. package/dist-cjs/number-input/internal/useCaret.js.map +0 -1
  28. package/dist-cjs/number-input/internal/utils.js +0 -78
  29. package/dist-cjs/number-input/internal/utils.js.map +0 -1
  30. package/dist-cjs/number-input/useNumberInput.js +0 -107
  31. package/dist-cjs/number-input/useNumberInput.js.map +0 -1
  32. package/dist-es/number-input/internal/useCaret.js +0 -32
  33. package/dist-es/number-input/internal/useCaret.js.map +0 -1
  34. package/dist-es/number-input/internal/utils.js +0 -69
  35. package/dist-es/number-input/internal/utils.js.map +0 -1
  36. package/dist-es/number-input/useNumberInput.js +0 -105
  37. package/dist-es/number-input/useNumberInput.js.map +0 -1
  38. package/dist-types/number-input/internal/useCaret.d.ts +0 -5
  39. package/dist-types/number-input/internal/utils.d.ts +0 -8
  40. package/dist-types/number-input/useNumberInput.d.ts +0 -33
@@ -1,69 +0,0 @@
1
- const isAllowedNonNumeric = (inputCharacter) => {
2
- if (typeof inputCharacter === "number") return;
3
- return "-+".includes(inputCharacter) && inputCharacter.length === 1 || inputCharacter === "";
4
- };
5
- const toFloat = (inputValue) => {
6
- if (isAllowedNonNumeric(inputValue)) return 0;
7
- return Number.parseFloat(inputValue.toString());
8
- };
9
- const isValidNumber = (num) => {
10
- if (typeof num === "number") {
11
- return !Number.isNaN(num);
12
- }
13
- if (!num) {
14
- return false;
15
- }
16
- return (
17
- // Normal type: 11.28
18
- /^\s*-?\d+(\.\d+)?\s*$/.test(num) || // Pre-number: 1.
19
- /^\s*-?\d+\.\s*$/.test(num) || // Post-number: .1
20
- /^\s*-?\.\d+\s*$/.test(num)
21
- );
22
- };
23
- const sanitizeInput = (value) => {
24
- if (typeof value === "number") return value;
25
- let sanitizedInput = value.replace(/[^0-9.+-]/g, "");
26
- sanitizedInput = sanitizedInput.replace(
27
- /^([+-]?)(.*)$/,
28
- (_match, sign, rest) => {
29
- return sign + rest.replace(/[+-]/g, "");
30
- }
31
- );
32
- const parts = sanitizedInput.split(".");
33
- if (parts.length > 2) {
34
- sanitizedInput = `${parts[0]}.${parts.slice(1).join("")}`;
35
- }
36
- return sanitizedInput;
37
- };
38
- const isOutOfRange = (value, min, max) => {
39
- if (value === void 0) return true;
40
- const floatValue = toFloat(value);
41
- return floatValue > max || floatValue < min;
42
- };
43
- const clampToRange = (min, max, value) => {
44
- if (value < min) return min;
45
- if (value > max) return max;
46
- return value;
47
- };
48
- const isExponential = (number) => {
49
- const str = String(number);
50
- return !Number.isNaN(Number(str)) && str.includes("e");
51
- };
52
- const getNumberPrecision = (number) => {
53
- const numStr = String(sanitizeInput(number));
54
- if (isExponential(number)) {
55
- let precision = Number(numStr.slice(numStr.indexOf("e-") + 2));
56
- const decimalMatch = numStr.match(/\.(\d+)/);
57
- if (decimalMatch == null ? void 0 : decimalMatch[1]) {
58
- precision += decimalMatch[1].length;
59
- }
60
- return precision;
61
- }
62
- return numStr.includes(".") && isValidNumber(numStr) ? numStr.length - numStr.indexOf(".") - 1 : 0;
63
- };
64
- const isEmpty = (value) => {
65
- return value === "";
66
- };
67
-
68
- export { clampToRange, getNumberPrecision, isAllowedNonNumeric, isEmpty, isOutOfRange, isValidNumber, sanitizeInput, toFloat };
69
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../src/number-input/internal/utils.ts"],"sourcesContent":["// The input should only accept numbers, decimal points, and plus/minus symbols\nexport const isAllowedNonNumeric = (inputCharacter: number | string) => {\n if (typeof inputCharacter === \"number\") return;\n return (\n (\"-+\".includes(inputCharacter) && inputCharacter.length === 1) ||\n inputCharacter === \"\"\n );\n};\n\nexport const toFloat = (inputValue: number | string) => {\n // Plus, minus, and empty characters are treated as 0\n if (isAllowedNonNumeric(inputValue)) return 0;\n return Number.parseFloat(inputValue.toString());\n};\n\nexport const isValidNumber = (num: string | number) => {\n if (typeof num === \"number\") {\n return !Number.isNaN(num);\n }\n\n // Empty\n if (!num) {\n return false;\n }\n\n return (\n // Normal type: 11.28\n /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num) ||\n // Pre-number: 1.\n /^\\s*-?\\d+\\.\\s*$/.test(num) ||\n // Post-number: .1\n /^\\s*-?\\.\\d+\\s*$/.test(num)\n );\n};\n\nexport const sanitizeInput = (value: string | number) => {\n if (typeof value === \"number\") return value;\n let sanitizedInput = value.replace(/[^0-9.+-]/g, \"\");\n sanitizedInput = sanitizedInput.replace(\n /^([+-]?)(.*)$/,\n (_match, sign, rest) => {\n return sign + rest.replace(/[+-]/g, \"\");\n },\n );\n const parts = sanitizedInput.split(\".\");\n if (parts.length > 2) {\n sanitizedInput = `${parts[0]}.${parts.slice(1).join(\"\")}`;\n }\n\n return sanitizedInput;\n};\n\nexport const isOutOfRange = (\n value: number | string | undefined,\n min: number,\n max: number,\n) => {\n if (value === undefined) return true;\n const floatValue = toFloat(value);\n return floatValue > max || floatValue < min;\n};\n\nexport const clampToRange = (min: number, max: number, value: number) => {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\nconst isExponential = (number: string | number) => {\n const str = String(number);\n\n return !Number.isNaN(Number(str)) && str.includes(\"e\");\n};\n\nexport const getNumberPrecision = (number: string | number) => {\n const numStr: string = String(sanitizeInput(number));\n\n if (isExponential(number)) {\n let precision = Number(numStr.slice(numStr.indexOf(\"e-\") + 2));\n\n const decimalMatch = numStr.match(/\\.(\\d+)/);\n if (decimalMatch?.[1]) {\n precision += decimalMatch[1].length;\n }\n return precision;\n }\n\n return numStr.includes(\".\") && isValidNumber(numStr)\n ? numStr.length - numStr.indexOf(\".\") - 1\n : 0;\n};\n\nexport const isEmpty = (value: number | string) => {\n return value === \"\";\n};\n"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { useActivateWhileMouseDown } from './internal/useActivateWhileMouseDown.js';
3
- import { toFloat } from './internal/utils.js';
4
-
5
- const useNumberInput = ({
6
- clampAndFix,
7
- decimalScale,
8
- disabled,
9
- format,
10
- inputRef,
11
- isAdjustingRef,
12
- max = Number.MAX_SAFE_INTEGER,
13
- min = Number.MIN_SAFE_INTEGER,
14
- onChange,
15
- parse,
16
- readOnly,
17
- setIsEditing,
18
- setValue,
19
- step = 1,
20
- stepMultiplier = 2,
21
- value
22
- }) => {
23
- const updateValue = useCallback(
24
- (event, nextValue) => {
25
- if (readOnly) return;
26
- isAdjustingRef.current = true;
27
- const updatedValue = clampAndFix(nextValue);
28
- setValue(toFloat(updatedValue));
29
- onChange == null ? void 0 : onChange(event, toFloat(updatedValue));
30
- },
31
- [onChange, readOnly, setValue, decimalScale, format]
32
- );
33
- const decrementValue = useCallback(
34
- (event, block) => {
35
- const decrementStep = block ? stepMultiplier * step : step;
36
- const parsedValue = (parse == null ? void 0 : parse(value)) || value;
37
- const nextValue = toFloat(parsedValue) - decrementStep;
38
- if (nextValue < min) return;
39
- updateValue(event, nextValue);
40
- },
41
- [value, min, step, stepMultiplier, updateValue, parse]
42
- );
43
- const incrementValue = useCallback(
44
- (event, block) => {
45
- const incrementStep = block ? stepMultiplier * step : step;
46
- const parsedValue = (parse == null ? void 0 : parse(value)) || value;
47
- const nextValue = toFloat(parsedValue) + incrementStep;
48
- if (nextValue > max) return;
49
- updateValue(event, nextValue);
50
- },
51
- [value, max, step, stepMultiplier, updateValue, parse]
52
- );
53
- const { activate: decrementSpinner } = useActivateWhileMouseDown(
54
- (event) => decrementValue(event),
55
- toFloat(value) <= min
56
- );
57
- const { activate: incrementSpinner } = useActivateWhileMouseDown(
58
- (event) => incrementValue(event),
59
- toFloat(value) >= max
60
- );
61
- const handleButtonMouseUp = () => {
62
- var _a;
63
- return (_a = inputRef.current) == null ? void 0 : _a.focus();
64
- };
65
- const commonButtonProps = {
66
- "aria-hidden": true,
67
- tabIndex: -1,
68
- onMouseUp: handleButtonMouseUp
69
- };
70
- const incrementButtonProps = {
71
- ...commonButtonProps,
72
- "aria-label": "increment value",
73
- disabled: disabled || toFloat(value) + step > max,
74
- onMouseDown: (event) => {
75
- event.preventDefault();
76
- setIsEditing(true);
77
- if (event.nativeEvent.button !== 0) {
78
- return;
79
- }
80
- incrementSpinner(event);
81
- }
82
- };
83
- const decrementButtonProps = {
84
- ...commonButtonProps,
85
- "aria-label": "decrement value",
86
- disabled: disabled || toFloat(value) - step < min,
87
- onMouseDown: (event) => {
88
- event.preventDefault();
89
- setIsEditing(true);
90
- if (event.nativeEvent.button !== 0) {
91
- return;
92
- }
93
- decrementSpinner(event);
94
- }
95
- };
96
- return {
97
- incrementButtonProps,
98
- decrementButtonProps,
99
- incrementValue,
100
- decrementValue
101
- };
102
- };
103
-
104
- export { useNumberInput };
105
- //# sourceMappingURL=useNumberInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useNumberInput.js","sources":["../src/number-input/useNumberInput.ts"],"sourcesContent":["import {\n type Dispatch,\n type MouseEvent,\n type MutableRefObject,\n type SetStateAction,\n type SyntheticEvent,\n useCallback,\n} from \"react\";\nimport { useActivateWhileMouseDown } from \"./internal/useActivateWhileMouseDown\";\nimport { toFloat } from \"./internal/utils\";\nimport type { NumberInputProps } from \"./NumberInput\";\n\nexport interface UseNumberInputProps\n extends Pick<\n NumberInputProps,\n | \"decimalScale\"\n | \"disabled\"\n | \"format\"\n | \"inputRef\"\n | \"max\"\n | \"min\"\n | \"onChange\"\n | \"parse\"\n | \"readOnly\"\n | \"step\"\n | \"stepMultiplier\"\n > {\n clampAndFix: (value: number) => string | number;\n inputRef: MutableRefObject<HTMLInputElement | null>;\n isAdjustingRef: MutableRefObject<boolean>;\n setIsEditing: Dispatch<SetStateAction<boolean>>;\n setValue: Dispatch<SetStateAction<string | number>>;\n value: string | number;\n}\n\n/**\n * Manages increment / decrement logic\n */\nexport const useNumberInput = ({\n clampAndFix,\n decimalScale,\n disabled,\n format,\n inputRef,\n isAdjustingRef,\n max = Number.MAX_SAFE_INTEGER,\n min = Number.MIN_SAFE_INTEGER,\n onChange,\n parse,\n readOnly,\n setIsEditing,\n setValue,\n step = 1,\n stepMultiplier = 2,\n value,\n}: UseNumberInputProps) => {\n // biome-ignore lint/correctness/useExhaustiveDependencies: Refs cannot be added to dependency arrays\n const updateValue = useCallback(\n (event: SyntheticEvent | undefined, nextValue: number) => {\n if (readOnly) return;\n isAdjustingRef.current = true;\n\n const updatedValue = clampAndFix(nextValue);\n setValue(toFloat(updatedValue));\n onChange?.(event, toFloat(updatedValue));\n },\n [onChange, readOnly, setValue, decimalScale, format],\n );\n\n const decrementValue = useCallback(\n (event?: SyntheticEvent, block?: boolean) => {\n const decrementStep = block ? stepMultiplier * step : step;\n const parsedValue = parse?.(value) || value;\n const nextValue = toFloat(parsedValue) - decrementStep;\n if (nextValue < min) return;\n updateValue(event, nextValue);\n },\n [value, min, step, stepMultiplier, updateValue, parse],\n );\n\n const incrementValue = useCallback(\n (event?: SyntheticEvent, block?: boolean) => {\n const incrementStep = block ? stepMultiplier * step : step;\n const parsedValue = parse?.(value) || value;\n const nextValue = toFloat(parsedValue) + incrementStep;\n if (nextValue > max) return;\n updateValue(event, nextValue);\n },\n [value, max, step, stepMultiplier, updateValue, parse],\n );\n\n const { activate: decrementSpinner } = useActivateWhileMouseDown(\n (event?: SyntheticEvent) => decrementValue(event),\n toFloat(value) <= min,\n );\n\n const { activate: incrementSpinner } = useActivateWhileMouseDown(\n (event?: SyntheticEvent) => incrementValue(event),\n toFloat(value) >= max,\n );\n\n const handleButtonMouseUp = () => inputRef.current?.focus();\n\n const commonButtonProps = {\n \"aria-hidden\": true,\n tabIndex: -1,\n onMouseUp: handleButtonMouseUp,\n };\n\n const incrementButtonProps = {\n ...commonButtonProps,\n \"aria-label\": \"increment value\",\n disabled: disabled || toFloat(value) + step > max,\n onMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setIsEditing(true);\n if (event.nativeEvent.button !== 0) {\n // To match closely with <input type='input'>\n return;\n }\n incrementSpinner(event);\n },\n };\n\n const decrementButtonProps = {\n ...commonButtonProps,\n \"aria-label\": \"decrement value\",\n disabled: disabled || toFloat(value) - step < min,\n onMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setIsEditing(true);\n if (event.nativeEvent.button !== 0) {\n // To match closely with <input type='input'>\n return;\n }\n decrementSpinner(event);\n },\n };\n\n return {\n incrementButtonProps,\n decrementButtonProps,\n incrementValue,\n decrementValue,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { type MutableRefObject } from "react";
2
- declare const useCaret: ({ inputRef, }: {
3
- inputRef: MutableRefObject<HTMLInputElement | null>;
4
- }) => (() => void)[];
5
- export default useCaret;
@@ -1,8 +0,0 @@
1
- export declare const isAllowedNonNumeric: (inputCharacter: number | string) => boolean | undefined;
2
- export declare const toFloat: (inputValue: number | string) => number;
3
- export declare const isValidNumber: (num: string | number) => boolean;
4
- export declare const sanitizeInput: (value: string | number) => string | number;
5
- export declare const isOutOfRange: (value: number | string | undefined, min: number, max: number) => boolean;
6
- export declare const clampToRange: (min: number, max: number, value: number) => number;
7
- export declare const getNumberPrecision: (number: string | number) => number;
8
- export declare const isEmpty: (value: number | string) => value is "";
@@ -1,33 +0,0 @@
1
- import { type Dispatch, type MouseEvent, type MutableRefObject, type SetStateAction, type SyntheticEvent } from "react";
2
- import type { NumberInputProps } from "./NumberInput";
3
- export interface UseNumberInputProps extends Pick<NumberInputProps, "decimalScale" | "disabled" | "format" | "inputRef" | "max" | "min" | "onChange" | "parse" | "readOnly" | "step" | "stepMultiplier"> {
4
- clampAndFix: (value: number) => string | number;
5
- inputRef: MutableRefObject<HTMLInputElement | null>;
6
- isAdjustingRef: MutableRefObject<boolean>;
7
- setIsEditing: Dispatch<SetStateAction<boolean>>;
8
- setValue: Dispatch<SetStateAction<string | number>>;
9
- value: string | number;
10
- }
11
- /**
12
- * Manages increment / decrement logic
13
- */
14
- export declare const useNumberInput: ({ clampAndFix, decimalScale, disabled, format, inputRef, isAdjustingRef, max, min, onChange, parse, readOnly, setIsEditing, setValue, step, stepMultiplier, value, }: UseNumberInputProps) => {
15
- incrementButtonProps: {
16
- "aria-label": string;
17
- disabled: boolean;
18
- onMouseDown: (event: MouseEvent<HTMLButtonElement>) => void;
19
- "aria-hidden": boolean;
20
- tabIndex: number;
21
- onMouseUp: () => void | undefined;
22
- };
23
- decrementButtonProps: {
24
- "aria-label": string;
25
- disabled: boolean;
26
- onMouseDown: (event: MouseEvent<HTMLButtonElement>) => void;
27
- "aria-hidden": boolean;
28
- tabIndex: number;
29
- onMouseUp: () => void | undefined;
30
- };
31
- incrementValue: (event?: SyntheticEvent, block?: boolean) => void;
32
- decrementValue: (event?: SyntheticEvent, block?: boolean) => void;
33
- };