@fuf-stack/uniform 1.2.1 → 1.2.3
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/Input/index.cjs +2 -2
- package/dist/Input/index.d.cts +4 -2
- package/dist/Input/index.d.ts +4 -2
- package/dist/Input/index.js +1 -1
- package/dist/Input-BQkZtJx8.d.cts +99 -0
- package/dist/Input-C6ujfEkn.d.ts +99 -0
- package/dist/SubmitButton/index.cjs +2 -2
- package/dist/SubmitButton/index.d.cts +2 -2
- package/dist/SubmitButton/index.d.ts +2 -2
- package/dist/SubmitButton/index.js +1 -1
- package/dist/{SubmitButton-dyil1SRk.d.cts → SubmitButton-DqaxyVpp.d.cts} +3 -1
- package/dist/{SubmitButton-dyil1SRk.d.ts → SubmitButton-DqaxyVpp.d.ts} +3 -1
- package/dist/{chunk-TIN5YJ4B.js → chunk-DR7PZZFE.js} +3 -1
- package/dist/chunk-DR7PZZFE.js.map +1 -0
- package/dist/{chunk-FVCKQZVK.js → chunk-G3Y7AH3F.js} +25 -5
- package/dist/chunk-G3Y7AH3F.js.map +1 -0
- package/dist/{chunk-ZPCFZYUF.cjs → chunk-HHRR2SHB.cjs} +3 -1
- package/dist/chunk-HHRR2SHB.cjs.map +1 -0
- package/dist/{chunk-YRHXQT6E.cjs → chunk-ZM72W2XV.cjs} +24 -4
- package/dist/chunk-ZM72W2XV.cjs.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/package.json +4 -4
- package/dist/Input-DeQoIu96.d.cts +0 -38
- package/dist/Input-ymA_W82l.d.ts +0 -38
- package/dist/chunk-FVCKQZVK.js.map +0 -1
- package/dist/chunk-TIN5YJ4B.js.map +0 -1
- package/dist/chunk-YRHXQT6E.cjs.map +0 -1
- package/dist/chunk-ZPCFZYUF.cjs.map +0 -1
package/dist/Input/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkZM72W2XVcjs = require('../chunk-ZM72W2XV.cjs');
|
|
5
5
|
require('../chunk-OE5BOGGX.cjs');
|
|
6
6
|
require('../chunk-Y3AB4GV6.cjs');
|
|
7
7
|
require('../chunk-MAABMY3P.cjs');
|
|
@@ -12,5 +12,5 @@ require('../chunk-555JRYCS.cjs');
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
exports.Input =
|
|
15
|
+
exports.Input = _chunkZM72W2XVcjs.Input_default; exports.default = _chunkZM72W2XVcjs.Input_default2;
|
|
16
16
|
//# sourceMappingURL=index.cjs.map
|
package/dist/Input/index.d.cts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { I as Input } from '../Input-
|
|
2
|
-
export { a as InputProps } from '../Input-
|
|
1
|
+
import { I as Input } from '../Input-BQkZtJx8.cjs';
|
|
2
|
+
export { a as InputProps } from '../Input-BQkZtJx8.cjs';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
|
+
import 'tailwind-variants';
|
|
5
|
+
import '@fuf-stack/pixel-utils';
|
|
4
6
|
import 'react';
|
|
5
7
|
import '../hooks/useInputValueTransform/index.cjs';
|
|
6
8
|
|
package/dist/Input/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { I as Input } from '../Input-
|
|
2
|
-
export { a as InputProps } from '../Input-
|
|
1
|
+
import { I as Input } from '../Input-C6ujfEkn.js';
|
|
2
|
+
export { a as InputProps } from '../Input-C6ujfEkn.js';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
|
+
import 'tailwind-variants';
|
|
5
|
+
import '@fuf-stack/pixel-utils';
|
|
4
6
|
import 'react';
|
|
5
7
|
import '../hooks/useInputValueTransform/index.js';
|
|
6
8
|
|
package/dist/Input/index.js
CHANGED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
3
|
+
import { TVProps, TVClassName } from '@fuf-stack/pixel-utils';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
import { InputValueTransform } from './hooks/useInputValueTransform/index.cjs';
|
|
6
|
+
|
|
7
|
+
declare const inputVariants: tailwind_variants.TVReturnType<{
|
|
8
|
+
[key: string]: {
|
|
9
|
+
[key: string]: tailwind_variants.ClassValue | {
|
|
10
|
+
base?: tailwind_variants.ClassValue;
|
|
11
|
+
input?: tailwind_variants.ClassValue;
|
|
12
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
13
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
[x: string]: {
|
|
18
|
+
[x: string]: tailwind_variants.ClassValue | {
|
|
19
|
+
base?: tailwind_variants.ClassValue;
|
|
20
|
+
input?: tailwind_variants.ClassValue;
|
|
21
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
22
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
} | {}, {
|
|
26
|
+
/** wrapper around the whole input */
|
|
27
|
+
base: string;
|
|
28
|
+
/** clear button */
|
|
29
|
+
clearButton: string;
|
|
30
|
+
/** actual input element */
|
|
31
|
+
input: string;
|
|
32
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
33
|
+
inputWrapper: string;
|
|
34
|
+
}, undefined, {
|
|
35
|
+
[key: string]: {
|
|
36
|
+
[key: string]: tailwind_variants.ClassValue | {
|
|
37
|
+
base?: tailwind_variants.ClassValue;
|
|
38
|
+
input?: tailwind_variants.ClassValue;
|
|
39
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
40
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
} | {}, {
|
|
44
|
+
/** wrapper around the whole input */
|
|
45
|
+
base: string;
|
|
46
|
+
/** clear button */
|
|
47
|
+
clearButton: string;
|
|
48
|
+
/** actual input element */
|
|
49
|
+
input: string;
|
|
50
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
51
|
+
inputWrapper: string;
|
|
52
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
|
53
|
+
/** wrapper around the whole input */
|
|
54
|
+
base: string;
|
|
55
|
+
/** clear button */
|
|
56
|
+
clearButton: string;
|
|
57
|
+
/** actual input element */
|
|
58
|
+
input: string;
|
|
59
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
60
|
+
inputWrapper: string;
|
|
61
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
62
|
+
type VariantProps = TVProps<typeof inputVariants>;
|
|
63
|
+
type ClassName = TVClassName<typeof inputVariants>;
|
|
64
|
+
interface InputProps extends VariantProps {
|
|
65
|
+
/** CSS class name */
|
|
66
|
+
className?: ClassName;
|
|
67
|
+
/** shows clear button when input has value */
|
|
68
|
+
clearable?: boolean;
|
|
69
|
+
/** debounce delay in milliseconds for form state updates (default: 300ms) */
|
|
70
|
+
debounceDelay?: number;
|
|
71
|
+
/** input field is disabled */
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
/** added content to the end of the input Field. */
|
|
74
|
+
endContent?: ReactNode;
|
|
75
|
+
/** form field label (set to false to disable label) */
|
|
76
|
+
label?: string | false;
|
|
77
|
+
/** form field name */
|
|
78
|
+
name: string;
|
|
79
|
+
/** callback that is fired when the value is cleared */
|
|
80
|
+
onClear?: () => void;
|
|
81
|
+
/** form field placeholder */
|
|
82
|
+
placeholder?: string;
|
|
83
|
+
/** size of the input */
|
|
84
|
+
size?: 'sm' | 'md' | 'lg';
|
|
85
|
+
/** content added to the start of the input field */
|
|
86
|
+
startContent?: ReactNode;
|
|
87
|
+
/** HTML data-testid attribute used in e2e tests */
|
|
88
|
+
testId?: string;
|
|
89
|
+
/** allows disentangled display and form values for a field */
|
|
90
|
+
transform?: InputValueTransform;
|
|
91
|
+
/** input type */
|
|
92
|
+
type?: 'number' | 'password';
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)
|
|
96
|
+
*/
|
|
97
|
+
declare const Input: ({ className: _className, clearable, debounceDelay, disabled, endContent, label, name, onClear, placeholder, size, startContent, testId: _testId, transform, type, }: InputProps) => react_jsx_runtime.JSX.Element;
|
|
98
|
+
|
|
99
|
+
export { Input as I, type InputProps as a };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
3
|
+
import { TVProps, TVClassName } from '@fuf-stack/pixel-utils';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
import { InputValueTransform } from './hooks/useInputValueTransform/index.js';
|
|
6
|
+
|
|
7
|
+
declare const inputVariants: tailwind_variants.TVReturnType<{
|
|
8
|
+
[key: string]: {
|
|
9
|
+
[key: string]: tailwind_variants.ClassValue | {
|
|
10
|
+
base?: tailwind_variants.ClassValue;
|
|
11
|
+
input?: tailwind_variants.ClassValue;
|
|
12
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
13
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
[x: string]: {
|
|
18
|
+
[x: string]: tailwind_variants.ClassValue | {
|
|
19
|
+
base?: tailwind_variants.ClassValue;
|
|
20
|
+
input?: tailwind_variants.ClassValue;
|
|
21
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
22
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
} | {}, {
|
|
26
|
+
/** wrapper around the whole input */
|
|
27
|
+
base: string;
|
|
28
|
+
/** clear button */
|
|
29
|
+
clearButton: string;
|
|
30
|
+
/** actual input element */
|
|
31
|
+
input: string;
|
|
32
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
33
|
+
inputWrapper: string;
|
|
34
|
+
}, undefined, {
|
|
35
|
+
[key: string]: {
|
|
36
|
+
[key: string]: tailwind_variants.ClassValue | {
|
|
37
|
+
base?: tailwind_variants.ClassValue;
|
|
38
|
+
input?: tailwind_variants.ClassValue;
|
|
39
|
+
inputWrapper?: tailwind_variants.ClassValue;
|
|
40
|
+
clearButton?: tailwind_variants.ClassValue;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
} | {}, {
|
|
44
|
+
/** wrapper around the whole input */
|
|
45
|
+
base: string;
|
|
46
|
+
/** clear button */
|
|
47
|
+
clearButton: string;
|
|
48
|
+
/** actual input element */
|
|
49
|
+
input: string;
|
|
50
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
51
|
+
inputWrapper: string;
|
|
52
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
|
53
|
+
/** wrapper around the whole input */
|
|
54
|
+
base: string;
|
|
55
|
+
/** clear button */
|
|
56
|
+
clearButton: string;
|
|
57
|
+
/** actual input element */
|
|
58
|
+
input: string;
|
|
59
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
60
|
+
inputWrapper: string;
|
|
61
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
62
|
+
type VariantProps = TVProps<typeof inputVariants>;
|
|
63
|
+
type ClassName = TVClassName<typeof inputVariants>;
|
|
64
|
+
interface InputProps extends VariantProps {
|
|
65
|
+
/** CSS class name */
|
|
66
|
+
className?: ClassName;
|
|
67
|
+
/** shows clear button when input has value */
|
|
68
|
+
clearable?: boolean;
|
|
69
|
+
/** debounce delay in milliseconds for form state updates (default: 300ms) */
|
|
70
|
+
debounceDelay?: number;
|
|
71
|
+
/** input field is disabled */
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
/** added content to the end of the input Field. */
|
|
74
|
+
endContent?: ReactNode;
|
|
75
|
+
/** form field label (set to false to disable label) */
|
|
76
|
+
label?: string | false;
|
|
77
|
+
/** form field name */
|
|
78
|
+
name: string;
|
|
79
|
+
/** callback that is fired when the value is cleared */
|
|
80
|
+
onClear?: () => void;
|
|
81
|
+
/** form field placeholder */
|
|
82
|
+
placeholder?: string;
|
|
83
|
+
/** size of the input */
|
|
84
|
+
size?: 'sm' | 'md' | 'lg';
|
|
85
|
+
/** content added to the start of the input field */
|
|
86
|
+
startContent?: ReactNode;
|
|
87
|
+
/** HTML data-testid attribute used in e2e tests */
|
|
88
|
+
testId?: string;
|
|
89
|
+
/** allows disentangled display and form values for a field */
|
|
90
|
+
transform?: InputValueTransform;
|
|
91
|
+
/** input type */
|
|
92
|
+
type?: 'number' | 'password';
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)
|
|
96
|
+
*/
|
|
97
|
+
declare const Input: ({ className: _className, clearable, debounceDelay, disabled, endContent, label, name, onClear, placeholder, size, startContent, testId: _testId, transform, type, }: InputProps) => react_jsx_runtime.JSX.Element;
|
|
98
|
+
|
|
99
|
+
export { Input as I, type InputProps as a };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkHHRR2SHBcjs = require('../chunk-HHRR2SHB.cjs');
|
|
5
5
|
require('../chunk-MAABMY3P.cjs');
|
|
6
6
|
require('../chunk-YGNY6CKU.cjs');
|
|
7
7
|
require('../chunk-FLK6OPFY.cjs');
|
|
@@ -10,5 +10,5 @@ require('../chunk-555JRYCS.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
exports.SubmitButton =
|
|
13
|
+
exports.SubmitButton = _chunkHHRR2SHBcjs.SubmitButton_default; exports.default = _chunkHHRR2SHBcjs.SubmitButton_default2;
|
|
14
14
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as SubmitButton } from '../SubmitButton-
|
|
2
|
-
export { a as SubmitButtonProps } from '../SubmitButton-
|
|
1
|
+
import { S as SubmitButton } from '../SubmitButton-DqaxyVpp.cjs';
|
|
2
|
+
export { a as SubmitButtonProps } from '../SubmitButton-DqaxyVpp.cjs';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import '@fuf-stack/pixels';
|
|
5
5
|
import 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as SubmitButton } from '../SubmitButton-
|
|
2
|
-
export { a as SubmitButtonProps } from '../SubmitButton-
|
|
1
|
+
import { S as SubmitButton } from '../SubmitButton-DqaxyVpp.js';
|
|
2
|
+
export { a as SubmitButtonProps } from '../SubmitButton-DqaxyVpp.js';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import '@fuf-stack/pixels';
|
|
5
5
|
import 'react';
|
|
@@ -3,6 +3,8 @@ import { ButtonProps } from '@fuf-stack/pixels';
|
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
|
|
5
5
|
interface SubmitButtonProps {
|
|
6
|
+
/** sets HTML aria-label attribute */
|
|
7
|
+
ariaLabel?: string;
|
|
6
8
|
/** child components */
|
|
7
9
|
children?: ReactNode;
|
|
8
10
|
/** CSS class name */
|
|
@@ -21,6 +23,6 @@ interface SubmitButtonProps {
|
|
|
21
23
|
/**
|
|
22
24
|
* From SubmitButton
|
|
23
25
|
*/
|
|
24
|
-
declare const SubmitButton: ({ children, className, color, icon, loading, size, testId, }: SubmitButtonProps) => react_jsx_runtime.JSX.Element;
|
|
26
|
+
declare const SubmitButton: ({ ariaLabel, children, className, color, icon, loading, size, testId, }: SubmitButtonProps) => react_jsx_runtime.JSX.Element;
|
|
25
27
|
|
|
26
28
|
export { SubmitButton as S, type SubmitButtonProps as a };
|
|
@@ -3,6 +3,8 @@ import { ButtonProps } from '@fuf-stack/pixels';
|
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
|
|
5
5
|
interface SubmitButtonProps {
|
|
6
|
+
/** sets HTML aria-label attribute */
|
|
7
|
+
ariaLabel?: string;
|
|
6
8
|
/** child components */
|
|
7
9
|
children?: ReactNode;
|
|
8
10
|
/** CSS class name */
|
|
@@ -21,6 +23,6 @@ interface SubmitButtonProps {
|
|
|
21
23
|
/**
|
|
22
24
|
* From SubmitButton
|
|
23
25
|
*/
|
|
24
|
-
declare const SubmitButton: ({ children, className, color, icon, loading, size, testId, }: SubmitButtonProps) => react_jsx_runtime.JSX.Element;
|
|
26
|
+
declare const SubmitButton: ({ ariaLabel, children, className, color, icon, loading, size, testId, }: SubmitButtonProps) => react_jsx_runtime.JSX.Element;
|
|
25
27
|
|
|
26
28
|
export { SubmitButton as S, type SubmitButtonProps as a };
|
|
@@ -7,6 +7,7 @@ import { cn, slugify } from "@fuf-stack/pixel-utils";
|
|
|
7
7
|
import { Button } from "@fuf-stack/pixels";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
9
|
var SubmitButton = ({
|
|
10
|
+
ariaLabel = "Submit form",
|
|
10
11
|
children = "Submit",
|
|
11
12
|
className = void 0,
|
|
12
13
|
color = "success",
|
|
@@ -22,6 +23,7 @@ var SubmitButton = ({
|
|
|
22
23
|
return /* @__PURE__ */ jsx(
|
|
23
24
|
Button,
|
|
24
25
|
{
|
|
26
|
+
ariaLabel,
|
|
25
27
|
className: cn(className),
|
|
26
28
|
color,
|
|
27
29
|
disabled: isSubmitting,
|
|
@@ -44,4 +46,4 @@ export {
|
|
|
44
46
|
SubmitButton_default,
|
|
45
47
|
SubmitButton_default2
|
|
46
48
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-DR7PZZFE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"sourcesContent":["import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the submit button */\n color?: ButtonProps['color'];\n /** icon of the submit button */\n icon?: ButtonProps['icon'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the submit button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n ariaLabel = 'Submit form',\n children = 'Submit',\n className = undefined,\n color = 'success',\n icon = undefined,\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n ariaLabel={ariaLabel}\n className={cn(className)}\n color={color}\n disabled={isSubmitting}\n icon={icon}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n testId={slugify(testId, { replaceDots: true })}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"],"mappings":";;;;;AAGA,SAAS,IAAI,eAAe;AAC5B,SAAS,cAAc;AA0CnB;AAhBJ,IAAM,eAAe,CAAC;AAAA,EACpB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AACX,MAAyB;AACvB,QAAM;AAAA,IACJ,WAAW,EAAE,aAAa;AAAA,IAC1B;AAAA,EACF,IAAI,eAAe;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS,WAAW;AAAA,MAIpB,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,QAAQ,QAAQ,EAAE,aAAa,KAAK,CAAC;AAAA,MAC7C,MAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;AC5Df,IAAOA,wBAAQ;","names":["SubmitButton_default"]}
|
|
@@ -17,16 +17,29 @@ import {
|
|
|
17
17
|
|
|
18
18
|
// src/Input/Input.tsx
|
|
19
19
|
import { Input as HeroInput } from "@heroui/input";
|
|
20
|
-
import {
|
|
20
|
+
import { tv, variantsToClassNames } from "@fuf-stack/pixel-utils";
|
|
21
21
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
var inputVariants = tv({
|
|
23
|
+
slots: {
|
|
24
|
+
/** wrapper around the whole input */
|
|
25
|
+
base: "",
|
|
26
|
+
/** clear button */
|
|
27
|
+
clearButton: "",
|
|
28
|
+
/** actual input element */
|
|
29
|
+
input: "",
|
|
30
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
31
|
+
inputWrapper: "bg-content1 group-data-[focus=true]:border-focus"
|
|
32
|
+
}
|
|
33
|
+
});
|
|
22
34
|
var Input = ({
|
|
23
|
-
className = void 0,
|
|
35
|
+
className: _className = void 0,
|
|
24
36
|
clearable = false,
|
|
25
37
|
debounceDelay = 300,
|
|
26
38
|
disabled = false,
|
|
27
39
|
endContent = void 0,
|
|
28
40
|
label = void 0,
|
|
29
41
|
name,
|
|
42
|
+
onClear = void 0,
|
|
30
43
|
placeholder = " ",
|
|
31
44
|
size = void 0,
|
|
32
45
|
startContent = void 0,
|
|
@@ -60,15 +73,19 @@ var Input = ({
|
|
|
60
73
|
isClearable: true,
|
|
61
74
|
onClear: () => {
|
|
62
75
|
resetField(name, { defaultValue: null });
|
|
76
|
+
if (onClear) {
|
|
77
|
+
onClear();
|
|
78
|
+
}
|
|
63
79
|
}
|
|
64
80
|
} : {};
|
|
65
81
|
const showTestIdCopyButton = debugMode === "debug-testids";
|
|
66
82
|
const showLabel = label != null ? label : showTestIdCopyButton;
|
|
83
|
+
const variants = inputVariants();
|
|
84
|
+
const classNames = variantsToClassNames(variants, _className, "base");
|
|
67
85
|
return /* @__PURE__ */ jsx(
|
|
68
86
|
HeroInput,
|
|
69
87
|
__spreadValues({
|
|
70
88
|
ref,
|
|
71
|
-
className: cn(className),
|
|
72
89
|
"data-testid": testId,
|
|
73
90
|
endContent,
|
|
74
91
|
isDisabled,
|
|
@@ -86,7 +103,10 @@ var Input = ({
|
|
|
86
103
|
value,
|
|
87
104
|
variant: "bordered",
|
|
88
105
|
classNames: {
|
|
89
|
-
|
|
106
|
+
base: classNames.base,
|
|
107
|
+
clearButton: classNames.clearButton,
|
|
108
|
+
input: classNames.input,
|
|
109
|
+
inputWrapper: classNames.inputWrapper
|
|
90
110
|
},
|
|
91
111
|
errorMessage: error ? /* @__PURE__ */ jsx(FieldValidationError_default, { error, testId }) : null,
|
|
92
112
|
label: showLabel ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -105,4 +125,4 @@ export {
|
|
|
105
125
|
Input_default,
|
|
106
126
|
Input_default2
|
|
107
127
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
128
|
+
//# sourceMappingURL=chunk-G3Y7AH3F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Input/Input.tsx","../src/Input/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { InputProps as HeroInputProps } from '@heroui/input';\nimport type { ReactNode } from 'react';\nimport type { InputValueTransform } from '../hooks';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInputValueDebounce } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\n// input variants\nexport const inputVariants = tv({\n slots: {\n /** wrapper around the whole input */\n base: '',\n /** clear button */\n clearButton: '',\n /** actual input element */\n input: '',\n /** inner wrapper (HeroUI inputWrapper slot) */\n inputWrapper: 'bg-content1 group-data-[focus=true]:border-focus',\n },\n});\n\ntype VariantProps = TVProps<typeof inputVariants>;\ntype ClassName = TVClassName<typeof inputVariants>;\n\nexport interface InputProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** shows clear button when input has value */\n clearable?: boolean;\n /** debounce delay in milliseconds for form state updates (default: 300ms) */\n debounceDelay?: number;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** callback that is fired when the value is cleared */\n onClear?: () => void;\n /** form field placeholder */\n placeholder?: string;\n /** size of the input */\n size?: 'sm' | 'md' | 'lg';\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform;\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className: _className = undefined,\n clearable = false,\n debounceDelay = 300,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n onClear = undefined,\n placeholder = ' ',\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n transform = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState, resetField } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const {\n disabled: isDisabled,\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n } = field;\n\n // Use hook that provides debounced onChange and enhanced blur handling\n const { onChange, onBlur, value } = useInputValueDebounce({\n debounceDelay,\n onBlur: fieldOnBlur,\n onChange: fieldOnChange,\n transform,\n type,\n value: fieldValue,\n });\n\n // If input is clearable add props for clearing input value\n const clearableProps: Pick<HeroInputProps, 'isClearable' | 'onClear'> =\n clearable\n ? {\n isClearable: true,\n onClear: () => {\n // if field had initial value we do not reset it\n // to that value, but clear it instead\n resetField(name, { defaultValue: null });\n // if onClear cb provided we call it\n if (onClear) {\n onClear();\n }\n },\n }\n : {};\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label ?? showTestIdCopyButton;\n\n // classNames from slots\n const variants = inputVariants();\n const classNames = variantsToClassNames(variants, _className, 'base');\n\n return (\n <HeroInput\n ref={ref}\n data-testid={testId}\n endContent={endContent}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n radius=\"sm\"\n size={size}\n startContent={startContent}\n type={type}\n // @ts-expect-error can be number for input type number\n value={value}\n variant=\"bordered\"\n classNames={{\n base: classNames.base,\n clearButton: classNames.clearButton,\n input: classNames.input,\n inputWrapper: classNames.inputWrapper,\n }}\n errorMessage={\n error ? <FieldValidationError error={error} testId={testId} /> : null\n }\n label={\n showLabel ? (\n <>\n {label}\n {showTestIdCopyButton ?? <FieldCopyTestIdButton testId={testId} />}\n </>\n ) : null\n }\n {...clearableProps}\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,SAAS,SAAS,iBAAiB;AAEnC,SAAS,IAAI,4BAA4B;AAuJzB,SAIN,UAJM,KAIN,YAJM;AAhJT,IAAM,gBAAgB,GAAG;AAAA,EAC9B,OAAO;AAAA;AAAA,IAEL,MAAM;AAAA;AAAA,IAEN,aAAa;AAAA;AAAA,IAEb,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA,EAChB;AACF,CAAC;AAuCD,IAAM,QAAQ,CAAC;AAAA,EACb,WAAW,aAAa;AAAA,EACxB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,EACR;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd,OAAO;AAAA,EACP,eAAe;AAAA,EACf,QAAQ,UAAU;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AACT,MAAkB;AAChB,QAAM,EAAE,SAAS,WAAW,eAAe,WAAW,IAAI,eAAe;AACzE,QAAM,EAAE,OAAO,SAAS,UAAU,OAAO,IAAI,cAAc,MAAM,OAAO;AAExE,QAAM,EAAE,MAAM,IAAI,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP;AAAA,EACF,IAAI;AAGJ,QAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,sBAAsB;AAAA,IACxD;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AAGD,QAAM,iBACJ,YACI;AAAA,IACE,aAAa;AAAA,IACb,SAAS,MAAM;AAGb,iBAAW,MAAM,EAAE,cAAc,KAAK,CAAC;AAEvC,UAAI,SAAS;AACX,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEP,QAAM,uBAAuB,cAAc;AAC3C,QAAM,YAAY,wBAAS;AAG3B,QAAM,WAAW,cAAc;AAC/B,QAAM,aAAa,qBAAqB,UAAU,YAAY,MAAM;AAEpE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,gBAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA,SAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,OAAO,WAAW;AAAA,QAClB,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,cACE,QAAQ,oBAAC,gCAAqB,OAAc,QAAgB,IAAK;AAAA,MAEnE,OACE,YACE,iCACG;AAAA;AAAA,QACA,sDAAwB,oBAAC,iCAAsB,QAAgB;AAAA,SAClE,IACE;AAAA,OAEF;AAAA,EACN;AAEJ;AAEA,IAAO,gBAAQ;;;ACvKf,IAAOA,iBAAQ;","names":["Input_default"]}
|
|
@@ -7,6 +7,7 @@ var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
|
7
7
|
var _pixels = require('@fuf-stack/pixels');
|
|
8
8
|
var _jsxruntime = require('react/jsx-runtime');
|
|
9
9
|
var SubmitButton = ({
|
|
10
|
+
ariaLabel = "Submit form",
|
|
10
11
|
children = "Submit",
|
|
11
12
|
className = void 0,
|
|
12
13
|
color = "success",
|
|
@@ -22,6 +23,7 @@ var SubmitButton = ({
|
|
|
22
23
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23
24
|
_pixels.Button,
|
|
24
25
|
{
|
|
26
|
+
ariaLabel,
|
|
25
27
|
className: _pixelutils.cn.call(void 0, className),
|
|
26
28
|
color,
|
|
27
29
|
disabled: isSubmitting,
|
|
@@ -44,4 +46,4 @@ var SubmitButton_default2 = SubmitButton_default;
|
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
exports.SubmitButton_default = SubmitButton_default; exports.SubmitButton_default2 = SubmitButton_default2;
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-HHRR2SHB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-HHRR2SHB.cjs","../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACDA,oDAA4B;AAC5B,2CAAuB;AA0CnB,+CAAA;AAhBJ,IAAM,aAAA,EAAe,CAAC;AAAA,EACpB,UAAA,EAAY,aAAA;AAAA,EACZ,SAAA,EAAW,QAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,KAAA,CAAA;AAAA,EACP,QAAA,EAAU,KAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA,EAAA,GAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,aAAa,CAAA;AAAA,IAC1B;AAAA,EACF,EAAA,EAAI,8CAAA,CAAe;AAEnB,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,KAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,IAAA;AAAA,MACA,OAAA,EAAS,QAAA,GAAW,YAAA;AAAA,MAIpB,OAAA,EAAS,aAAA;AAAA,MACT,IAAA;AAAA,MACA,MAAA,EAAQ,iCAAA,MAAQ,EAAQ,EAAE,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,MAC7C,IAAA,EAAK,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,qBAAA,EAAQ,YAAA;AD1Bf;AACA;AEnCA,IAAOA,sBAAAA,EAAQ,oBAAA;AFqCf;AACA;AACE;AACA;AACF,2GAAC","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-HHRR2SHB.cjs","sourcesContent":[null,"import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the submit button */\n color?: ButtonProps['color'];\n /** icon of the submit button */\n icon?: ButtonProps['icon'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the submit button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n ariaLabel = 'Submit form',\n children = 'Submit',\n className = undefined,\n color = 'success',\n icon = undefined,\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n ariaLabel={ariaLabel}\n className={cn(className)}\n color={color}\n disabled={isSubmitting}\n icon={icon}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n testId={slugify(testId, { replaceDots: true })}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"]}
|
|
@@ -19,14 +19,27 @@ var _chunk555JRYCScjs = require('./chunk-555JRYCS.cjs');
|
|
|
19
19
|
var _input = require('@heroui/input');
|
|
20
20
|
var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
21
21
|
var _jsxruntime = require('react/jsx-runtime');
|
|
22
|
+
var inputVariants = _pixelutils.tv.call(void 0, {
|
|
23
|
+
slots: {
|
|
24
|
+
/** wrapper around the whole input */
|
|
25
|
+
base: "",
|
|
26
|
+
/** clear button */
|
|
27
|
+
clearButton: "",
|
|
28
|
+
/** actual input element */
|
|
29
|
+
input: "",
|
|
30
|
+
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
31
|
+
inputWrapper: "bg-content1 group-data-[focus=true]:border-focus"
|
|
32
|
+
}
|
|
33
|
+
});
|
|
22
34
|
var Input = ({
|
|
23
|
-
className = void 0,
|
|
35
|
+
className: _className = void 0,
|
|
24
36
|
clearable = false,
|
|
25
37
|
debounceDelay = 300,
|
|
26
38
|
disabled = false,
|
|
27
39
|
endContent = void 0,
|
|
28
40
|
label = void 0,
|
|
29
41
|
name,
|
|
42
|
+
onClear = void 0,
|
|
30
43
|
placeholder = " ",
|
|
31
44
|
size = void 0,
|
|
32
45
|
startContent = void 0,
|
|
@@ -60,15 +73,19 @@ var Input = ({
|
|
|
60
73
|
isClearable: true,
|
|
61
74
|
onClear: () => {
|
|
62
75
|
resetField(name, { defaultValue: null });
|
|
76
|
+
if (onClear) {
|
|
77
|
+
onClear();
|
|
78
|
+
}
|
|
63
79
|
}
|
|
64
80
|
} : {};
|
|
65
81
|
const showTestIdCopyButton = debugMode === "debug-testids";
|
|
66
82
|
const showLabel = label != null ? label : showTestIdCopyButton;
|
|
83
|
+
const variants = inputVariants();
|
|
84
|
+
const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, _className, "base");
|
|
67
85
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
68
86
|
_input.Input,
|
|
69
87
|
_chunk555JRYCScjs.__spreadValues.call(void 0, {
|
|
70
88
|
ref,
|
|
71
|
-
className: _pixelutils.cn.call(void 0, className),
|
|
72
89
|
"data-testid": testId,
|
|
73
90
|
endContent,
|
|
74
91
|
isDisabled,
|
|
@@ -86,7 +103,10 @@ var Input = ({
|
|
|
86
103
|
value,
|
|
87
104
|
variant: "bordered",
|
|
88
105
|
classNames: {
|
|
89
|
-
|
|
106
|
+
base: classNames.base,
|
|
107
|
+
clearButton: classNames.clearButton,
|
|
108
|
+
input: classNames.input,
|
|
109
|
+
inputWrapper: classNames.inputWrapper
|
|
90
110
|
},
|
|
91
111
|
errorMessage: error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }) : null,
|
|
92
112
|
label: showLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -105,4 +125,4 @@ var Input_default2 = Input_default;
|
|
|
105
125
|
|
|
106
126
|
|
|
107
127
|
exports.Input_default = Input_default; exports.Input_default2 = Input_default2;
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
128
|
+
//# sourceMappingURL=chunk-ZM72W2XV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-ZM72W2XV.cjs","../src/Input/Input.tsx","../src/Input/index.ts"],"names":["Input_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-ZM72W2XV.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { InputProps as HeroInputProps } from '@heroui/input';\nimport type { ReactNode } from 'react';\nimport type { InputValueTransform } from '../hooks';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInputValueDebounce } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\n// input variants\nexport const inputVariants = tv({\n slots: {\n /** wrapper around the whole input */\n base: '',\n /** clear button */\n clearButton: '',\n /** actual input element */\n input: '',\n /** inner wrapper (HeroUI inputWrapper slot) */\n inputWrapper: 'bg-content1 group-data-[focus=true]:border-focus',\n },\n});\n\ntype VariantProps = TVProps<typeof inputVariants>;\ntype ClassName = TVClassName<typeof inputVariants>;\n\nexport interface InputProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** shows clear button when input has value */\n clearable?: boolean;\n /** debounce delay in milliseconds for form state updates (default: 300ms) */\n debounceDelay?: number;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** callback that is fired when the value is cleared */\n onClear?: () => void;\n /** form field placeholder */\n placeholder?: string;\n /** size of the input */\n size?: 'sm' | 'md' | 'lg';\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform;\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className: _className = undefined,\n clearable = false,\n debounceDelay = 300,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n onClear = undefined,\n placeholder = ' ',\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n transform = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState, resetField } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const {\n disabled: isDisabled,\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n } = field;\n\n // Use hook that provides debounced onChange and enhanced blur handling\n const { onChange, onBlur, value } = useInputValueDebounce({\n debounceDelay,\n onBlur: fieldOnBlur,\n onChange: fieldOnChange,\n transform,\n type,\n value: fieldValue,\n });\n\n // If input is clearable add props for clearing input value\n const clearableProps: Pick<HeroInputProps, 'isClearable' | 'onClear'> =\n clearable\n ? {\n isClearable: true,\n onClear: () => {\n // if field had initial value we do not reset it\n // to that value, but clear it instead\n resetField(name, { defaultValue: null });\n // if onClear cb provided we call it\n if (onClear) {\n onClear();\n }\n },\n }\n : {};\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label ?? showTestIdCopyButton;\n\n // classNames from slots\n const variants = inputVariants();\n const classNames = variantsToClassNames(variants, _className, 'base');\n\n return (\n <HeroInput\n ref={ref}\n data-testid={testId}\n endContent={endContent}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n radius=\"sm\"\n size={size}\n startContent={startContent}\n type={type}\n // @ts-expect-error can be number for input type number\n value={value}\n variant=\"bordered\"\n classNames={{\n base: classNames.base,\n clearButton: classNames.clearButton,\n input: classNames.input,\n inputWrapper: classNames.inputWrapper,\n }}\n errorMessage={\n error ? <FieldValidationError error={error} testId={testId} /> : null\n }\n label={\n showLabel ? (\n <>\n {label}\n {showTestIdCopyButton ?? <FieldCopyTestIdButton testId={testId} />}\n </>\n ) : null\n }\n {...clearableProps}\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -6,7 +6,7 @@ var _chunkN7BZIGW7cjs = require('./chunk-N7BZIGW7.cjs');
|
|
|
6
6
|
var _chunkUQFNR2ZIcjs = require('./chunk-UQFNR2ZI.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkHHRR2SHBcjs = require('./chunk-HHRR2SHB.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _chunkNSYD7L53cjs = require('./chunk-NSYD7L53.cjs');
|
|
@@ -27,7 +27,7 @@ var _chunkV64TRQMVcjs = require('./chunk-V64TRQMV.cjs');
|
|
|
27
27
|
var _chunkTTD3KL6Ecjs = require('./chunk-TTD3KL6E.cjs');
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _chunkZM72W2XVcjs = require('./chunk-ZM72W2XV.cjs');
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
var _chunkXHWBXZO5cjs = require('./chunk-XHWBXZO5.cjs');
|
|
@@ -88,5 +88,5 @@ require('./chunk-555JRYCS.cjs');
|
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
exports.CheckboxGroup = _chunkX4O53MIJcjs.CheckboxGroup_default; exports.FieldArray = _chunkEO7TACW2cjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkY3AB4GV6cjs.FieldValidationError_default; exports.Form = _chunkV64TRQMVcjs.Form_default; exports.Grid = _chunkTTD3KL6Ecjs.Grid_default; exports.Input =
|
|
91
|
+
exports.CheckboxGroup = _chunkX4O53MIJcjs.CheckboxGroup_default; exports.FieldArray = _chunkEO7TACW2cjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkY3AB4GV6cjs.FieldValidationError_default; exports.Form = _chunkV64TRQMVcjs.Form_default; exports.Grid = _chunkTTD3KL6Ecjs.Grid_default; exports.Input = _chunkZM72W2XVcjs.Input_default; exports.RadioBoxes = _chunkXHWBXZO5cjs.RadioBoxes_default; exports.RadioGroup = _chunkKC26PALYcjs.RadioGroup_default; exports.RadioTabs = _chunkN7BZIGW7cjs.RadioTabs_default; exports.Select = _chunkUQFNR2ZIcjs.Select_default; exports.SubmitButton = _chunkHHRR2SHBcjs.SubmitButton_default; exports.Switch = _chunkNSYD7L53cjs.Switch_default; exports.TextArea = _chunkO3H3KD5Hcjs.TextArea_default; exports.checkFieldIsRequired = _chunkMAABMY3Pcjs.checkFieldIsRequired; exports.fromNullishString = _chunkYGNY6CKUcjs.fromNullishString; exports.toFormFormat = _chunkYGNY6CKUcjs.toFormFormat; exports.toNullishString = _chunkYGNY6CKUcjs.toNullishString; exports.toValidationFormat = _chunkYGNY6CKUcjs.toValidationFormat; exports.useClientValidation = _chunkMAABMY3Pcjs.useClientValidation; exports.useController = _chunkMAABMY3Pcjs.useController; exports.useFieldArray = _chunkMAABMY3Pcjs.useFieldArray; exports.useFormContext = _chunkMAABMY3Pcjs.useFormContext; exports.useInput = _chunkMAABMY3Pcjs.useInput; exports.useInputValueDebounce = _chunkFLK6OPFYcjs.useInputValueDebounce; exports.useInputValueTransform = _chunkP6HJOG7Dcjs.useInputValueTransform;
|
|
92
92
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.cts
CHANGED
|
@@ -8,14 +8,14 @@ export { useFieldArray } from 'react-hook-form';
|
|
|
8
8
|
export { useInput } from '@heroui/input';
|
|
9
9
|
export { UseInputValueDebounceOptions, UseInputValueDebounceReturn, useInputValueDebounce } from './hooks/useInputValueDebounce/index.cjs';
|
|
10
10
|
export { InputValueTransform, UseInputValueTransformOptions, UseInputValueTransformReturn, useInputValueTransform } from './hooks/useInputValueTransform/index.cjs';
|
|
11
|
-
export { I as Input, a as InputProps } from './Input-
|
|
11
|
+
export { I as Input, a as InputProps } from './Input-BQkZtJx8.cjs';
|
|
12
12
|
export { F as FieldCopyTestIdButton, a as FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton-_TDlmw0L.cjs';
|
|
13
13
|
export { F as FieldValidationError, a as FieldValidationErrorProps } from './FieldValidationError-CU_xw0BL.cjs';
|
|
14
14
|
export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-CE3mYoFk.cjs';
|
|
15
15
|
export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-CAOX80Xx.cjs';
|
|
16
16
|
export { R as RadioTabs, a as RadioTabsProps } from './RadioTabs-8Gn71LRW.cjs';
|
|
17
17
|
export { S as Select, a as SelectProps } from './Select-CTRWinmO.cjs';
|
|
18
|
-
export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-
|
|
18
|
+
export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-DqaxyVpp.cjs';
|
|
19
19
|
export { S as Switch, a as SwitchProps } from './Switch-Hr6PnK98.cjs';
|
|
20
20
|
export { T as TextArea, a as TextAreaProps } from './TextArea-DnFGyl4a.cjs';
|
|
21
21
|
import 'react/jsx-runtime';
|
package/dist/index.d.ts
CHANGED
|
@@ -8,14 +8,14 @@ export { useFieldArray } from 'react-hook-form';
|
|
|
8
8
|
export { useInput } from '@heroui/input';
|
|
9
9
|
export { UseInputValueDebounceOptions, UseInputValueDebounceReturn, useInputValueDebounce } from './hooks/useInputValueDebounce/index.js';
|
|
10
10
|
export { InputValueTransform, UseInputValueTransformOptions, UseInputValueTransformReturn, useInputValueTransform } from './hooks/useInputValueTransform/index.js';
|
|
11
|
-
export { I as Input, a as InputProps } from './Input-
|
|
11
|
+
export { I as Input, a as InputProps } from './Input-C6ujfEkn.js';
|
|
12
12
|
export { F as FieldCopyTestIdButton, a as FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton-_TDlmw0L.js';
|
|
13
13
|
export { F as FieldValidationError, a as FieldValidationErrorProps } from './FieldValidationError-CU_xw0BL.js';
|
|
14
14
|
export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-CE3mYoFk.js';
|
|
15
15
|
export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-CAOX80Xx.js';
|
|
16
16
|
export { R as RadioTabs, a as RadioTabsProps } from './RadioTabs-8Gn71LRW.js';
|
|
17
17
|
export { S as Select, a as SelectProps } from './Select-CTRWinmO.js';
|
|
18
|
-
export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-
|
|
18
|
+
export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-DqaxyVpp.js';
|
|
19
19
|
export { S as Switch, a as SwitchProps } from './Switch-Hr6PnK98.js';
|
|
20
20
|
export { T as TextArea, a as TextAreaProps } from './TextArea-DnFGyl4a.js';
|
|
21
21
|
import 'react/jsx-runtime';
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-C5E3263F.js";
|
|
7
7
|
import {
|
|
8
8
|
SubmitButton_default
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DR7PZZFE.js";
|
|
10
10
|
import {
|
|
11
11
|
Switch_default
|
|
12
12
|
} from "./chunk-GZKDPAUC.js";
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
} from "./chunk-B62HKKMS.js";
|
|
28
28
|
import {
|
|
29
29
|
Input_default
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-G3Y7AH3F.js";
|
|
31
31
|
import {
|
|
32
32
|
RadioBoxes_default
|
|
33
33
|
} from "./chunk-CVZSGNBJ.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fuf-stack/uniform",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "fuf react form library",
|
|
5
5
|
"author": "Fröhlich ∧ Frei",
|
|
6
6
|
"homepage": "https://github.com/fuf-stack/pixels#readme",
|
|
@@ -139,13 +139,13 @@
|
|
|
139
139
|
"@heroui/system": "2.4.20",
|
|
140
140
|
"@heroui/theme": "2.4.20",
|
|
141
141
|
"@react-aria/visually-hidden": "3.8.27",
|
|
142
|
-
"framer-motion": "12.23.
|
|
142
|
+
"framer-motion": "12.23.16",
|
|
143
143
|
"react-icons": "5.5.0",
|
|
144
144
|
"react-hook-form": "7.55.0",
|
|
145
145
|
"react-select": "5.10.2",
|
|
146
|
+
"@fuf-stack/pixels": "1.2.5",
|
|
146
147
|
"@fuf-stack/pixel-utils": "1.0.5",
|
|
147
|
-
"@fuf-stack/
|
|
148
|
-
"@fuf-stack/veto": "0.12.1"
|
|
148
|
+
"@fuf-stack/veto": "0.12.6"
|
|
149
149
|
},
|
|
150
150
|
"devDependencies": {
|
|
151
151
|
"@types/debug": "4.1.12",
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
3
|
-
import { InputValueTransform } from './hooks/useInputValueTransform/index.cjs';
|
|
4
|
-
|
|
5
|
-
interface InputProps {
|
|
6
|
-
/** CSS class name */
|
|
7
|
-
className?: string;
|
|
8
|
-
/** shows clear button when input has value */
|
|
9
|
-
clearable?: boolean;
|
|
10
|
-
/** debounce delay in milliseconds for form state updates (default: 300ms) */
|
|
11
|
-
debounceDelay?: number;
|
|
12
|
-
/** input field is disabled */
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
/** added content to the end of the input Field. */
|
|
15
|
-
endContent?: ReactNode;
|
|
16
|
-
/** form field label (set to false to disable label) */
|
|
17
|
-
label?: string | false;
|
|
18
|
-
/** form field name */
|
|
19
|
-
name: string;
|
|
20
|
-
/** form field placeholder */
|
|
21
|
-
placeholder?: string;
|
|
22
|
-
/** size of the input */
|
|
23
|
-
size?: 'sm' | 'md' | 'lg';
|
|
24
|
-
/** content added to the start of the input field */
|
|
25
|
-
startContent?: ReactNode;
|
|
26
|
-
/** HTML data-testid attribute used in e2e tests */
|
|
27
|
-
testId?: string;
|
|
28
|
-
/** allows disentangled display and form values for a field */
|
|
29
|
-
transform?: InputValueTransform;
|
|
30
|
-
/** input type */
|
|
31
|
-
type?: 'number' | 'password';
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)
|
|
35
|
-
*/
|
|
36
|
-
declare const Input: ({ className, clearable, debounceDelay, disabled, endContent, label, name, placeholder, size, startContent, testId: _testId, transform, type, }: InputProps) => react_jsx_runtime.JSX.Element;
|
|
37
|
-
|
|
38
|
-
export { Input as I, type InputProps as a };
|
package/dist/Input-ymA_W82l.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
3
|
-
import { InputValueTransform } from './hooks/useInputValueTransform/index.js';
|
|
4
|
-
|
|
5
|
-
interface InputProps {
|
|
6
|
-
/** CSS class name */
|
|
7
|
-
className?: string;
|
|
8
|
-
/** shows clear button when input has value */
|
|
9
|
-
clearable?: boolean;
|
|
10
|
-
/** debounce delay in milliseconds for form state updates (default: 300ms) */
|
|
11
|
-
debounceDelay?: number;
|
|
12
|
-
/** input field is disabled */
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
/** added content to the end of the input Field. */
|
|
15
|
-
endContent?: ReactNode;
|
|
16
|
-
/** form field label (set to false to disable label) */
|
|
17
|
-
label?: string | false;
|
|
18
|
-
/** form field name */
|
|
19
|
-
name: string;
|
|
20
|
-
/** form field placeholder */
|
|
21
|
-
placeholder?: string;
|
|
22
|
-
/** size of the input */
|
|
23
|
-
size?: 'sm' | 'md' | 'lg';
|
|
24
|
-
/** content added to the start of the input field */
|
|
25
|
-
startContent?: ReactNode;
|
|
26
|
-
/** HTML data-testid attribute used in e2e tests */
|
|
27
|
-
testId?: string;
|
|
28
|
-
/** allows disentangled display and form values for a field */
|
|
29
|
-
transform?: InputValueTransform;
|
|
30
|
-
/** input type */
|
|
31
|
-
type?: 'number' | 'password';
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)
|
|
35
|
-
*/
|
|
36
|
-
declare const Input: ({ className, clearable, debounceDelay, disabled, endContent, label, name, placeholder, size, startContent, testId: _testId, transform, type, }: InputProps) => react_jsx_runtime.JSX.Element;
|
|
37
|
-
|
|
38
|
-
export { Input as I, type InputProps as a };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Input/Input.tsx","../src/Input/index.ts"],"sourcesContent":["import type { InputProps as HeroInputProps } from '@heroui/input';\nimport type { ReactNode } from 'react';\nimport type { InputValueTransform } from '../hooks';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInputValueDebounce } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface InputProps {\n /** CSS class name */\n className?: string;\n /** shows clear button when input has value */\n clearable?: boolean;\n /** debounce delay in milliseconds for form state updates (default: 300ms) */\n debounceDelay?: number;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** form field placeholder */\n placeholder?: string;\n /** size of the input */\n size?: 'sm' | 'md' | 'lg';\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform;\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className = undefined,\n clearable = false,\n debounceDelay = 300,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n placeholder = ' ',\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n transform = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState, resetField } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const {\n disabled: isDisabled,\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n } = field;\n\n // Use hook that provides debounced onChange and enhanced blur handling\n const { onChange, onBlur, value } = useInputValueDebounce({\n debounceDelay,\n onBlur: fieldOnBlur,\n onChange: fieldOnChange,\n transform,\n type,\n value: fieldValue,\n });\n\n // If input is clearable add props for clearing input value\n const clearableProps: Pick<HeroInputProps, 'isClearable' | 'onClear'> =\n clearable\n ? {\n isClearable: true,\n onClear: () => {\n // if field had initial value we do not reset it\n // to that value, but clear it instead\n resetField(name, { defaultValue: null });\n },\n }\n : {};\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label ?? showTestIdCopyButton;\n\n return (\n <HeroInput\n ref={ref}\n className={cn(className)}\n data-testid={testId}\n endContent={endContent}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n radius=\"sm\"\n size={size}\n startContent={startContent}\n type={type}\n // @ts-expect-error can be number for input type number\n value={value}\n variant=\"bordered\"\n classNames={{\n inputWrapper: 'bg-content1 group-data-[focus=true]:border-focus',\n }}\n errorMessage={\n error ? <FieldValidationError error={error} testId={testId} /> : null\n }\n label={\n showLabel ? (\n <>\n {label}\n {showTestIdCopyButton ?? <FieldCopyTestIdButton testId={testId} />}\n </>\n ) : null\n }\n {...clearableProps}\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAIA,SAAS,SAAS,iBAAiB;AAEnC,SAAS,UAAU;AAyHH,SAIN,UAJM,KAIN,YAJM;AAnFhB,IAAM,QAAQ,CAAC;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,EACR;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,eAAe;AAAA,EACf,QAAQ,UAAU;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AACT,MAAkB;AAChB,QAAM,EAAE,SAAS,WAAW,eAAe,WAAW,IAAI,eAAe;AACzE,QAAM,EAAE,OAAO,SAAS,UAAU,OAAO,IAAI,cAAc,MAAM,OAAO;AAExE,QAAM,EAAE,MAAM,IAAI,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP;AAAA,EACF,IAAI;AAGJ,QAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,sBAAsB;AAAA,IACxD;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AAGD,QAAM,iBACJ,YACI;AAAA,IACE,aAAa;AAAA,IACb,SAAS,MAAM;AAGb,iBAAW,MAAM,EAAE,cAAc,KAAK,CAAC;AAAA,IACzC;AAAA,EACF,IACA,CAAC;AAEP,QAAM,uBAAuB,cAAc;AAC3C,QAAM,YAAY,wBAAS;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,SAAS;AAAA,MACvB,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,gBAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA,SAAQ;AAAA,MACR,YAAY;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,MACA,cACE,QAAQ,oBAAC,gCAAqB,OAAc,QAAgB,IAAK;AAAA,MAEnE,OACE,YACE,iCACG;AAAA;AAAA,QACA,sDAAwB,oBAAC,iCAAsB,QAAgB;AAAA,SAClE,IACE;AAAA,OAEF;AAAA,EACN;AAEJ;AAEA,IAAO,gBAAQ;;;ACxIf,IAAOA,iBAAQ;","names":["Input_default"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"sourcesContent":["import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the submit button */\n color?: ButtonProps['color'];\n /** icon of the submit button */\n icon?: ButtonProps['icon'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the submit button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n icon = undefined,\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n disabled={isSubmitting}\n icon={icon}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n testId={slugify(testId, { replaceDots: true })}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"],"mappings":";;;;;AAGA,SAAS,IAAI,eAAe;AAC5B,SAAS,cAAc;AAuCnB;AAfJ,IAAM,eAAe,CAAC;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AACX,MAAyB;AACvB,QAAM;AAAA,IACJ,WAAW,EAAE,aAAa;AAAA,IAC1B;AAAA,EACF,IAAI,eAAe;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS,WAAW;AAAA,MAIpB,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,QAAQ,QAAQ,EAAE,aAAa,KAAK,CAAC;AAAA,MAC7C,MAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;ACxDf,IAAOA,wBAAQ;","names":["SubmitButton_default"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-YRHXQT6E.cjs","../src/Input/Input.tsx","../src/Input/index.ts"],"names":["Input_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-YRHXQT6E.cjs","sourcesContent":[null,"import type { InputProps as HeroInputProps } from '@heroui/input';\nimport type { ReactNode } from 'react';\nimport type { InputValueTransform } from '../hooks';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInputValueDebounce } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface InputProps {\n /** CSS class name */\n className?: string;\n /** shows clear button when input has value */\n clearable?: boolean;\n /** debounce delay in milliseconds for form state updates (default: 300ms) */\n debounceDelay?: number;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** form field placeholder */\n placeholder?: string;\n /** size of the input */\n size?: 'sm' | 'md' | 'lg';\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform;\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className = undefined,\n clearable = false,\n debounceDelay = 300,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n placeholder = ' ',\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n transform = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState, resetField } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const {\n disabled: isDisabled,\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n } = field;\n\n // Use hook that provides debounced onChange and enhanced blur handling\n const { onChange, onBlur, value } = useInputValueDebounce({\n debounceDelay,\n onBlur: fieldOnBlur,\n onChange: fieldOnChange,\n transform,\n type,\n value: fieldValue,\n });\n\n // If input is clearable add props for clearing input value\n const clearableProps: Pick<HeroInputProps, 'isClearable' | 'onClear'> =\n clearable\n ? {\n isClearable: true,\n onClear: () => {\n // if field had initial value we do not reset it\n // to that value, but clear it instead\n resetField(name, { defaultValue: null });\n },\n }\n : {};\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label ?? showTestIdCopyButton;\n\n return (\n <HeroInput\n ref={ref}\n className={cn(className)}\n data-testid={testId}\n endContent={endContent}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n radius=\"sm\"\n size={size}\n startContent={startContent}\n type={type}\n // @ts-expect-error can be number for input type number\n value={value}\n variant=\"bordered\"\n classNames={{\n inputWrapper: 'bg-content1 group-data-[focus=true]:border-focus',\n }}\n errorMessage={\n error ? <FieldValidationError error={error} testId={testId} /> : null\n }\n label={\n showLabel ? (\n <>\n {label}\n {showTestIdCopyButton ?? <FieldCopyTestIdButton testId={testId} />}\n </>\n ) : null\n }\n {...clearableProps}\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-ZPCFZYUF.cjs","../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACDA,oDAA4B;AAC5B,2CAAuB;AAuCnB,+CAAA;AAfJ,IAAM,aAAA,EAAe,CAAC;AAAA,EACpB,SAAA,EAAW,QAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,KAAA,CAAA;AAAA,EACP,QAAA,EAAU,KAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA,EAAA,GAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,aAAa,CAAA;AAAA,IAC1B;AAAA,EACF,EAAA,EAAI,8CAAA,CAAe;AAEnB,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,KAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,IAAA;AAAA,MACA,OAAA,EAAS,QAAA,GAAW,YAAA;AAAA,MAIpB,OAAA,EAAS,aAAA;AAAA,MACT,IAAA;AAAA,MACA,MAAA,EAAQ,iCAAA,MAAQ,EAAQ,EAAE,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,MAC7C,IAAA,EAAK,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,qBAAA,EAAQ,YAAA;ADxBf;AACA;AEjCA,IAAOA,sBAAAA,EAAQ,oBAAA;AFmCf;AACA;AACE;AACA;AACF,2GAAC","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-ZPCFZYUF.cjs","sourcesContent":[null,"import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the submit button */\n color?: ButtonProps['color'];\n /** icon of the submit button */\n icon?: ButtonProps['icon'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the submit button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n icon = undefined,\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n disabled={isSubmitting}\n icon={icon}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n testId={slugify(testId, { replaceDots: true })}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"]}
|