@fuf-stack/uniform 1.4.2 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Checkboxes/index.cjs +16 -0
- package/dist/{RadioGroup → Checkboxes}/index.cjs.map +1 -1
- package/dist/Checkboxes/index.d.cts +10 -0
- package/dist/Checkboxes/index.d.ts +10 -0
- package/dist/Checkboxes/index.js +16 -0
- package/dist/{CheckboxGroup-B1g42iP0.d.cts → Checkboxes-CR0Uu2g9.d.cts} +9 -9
- package/dist/{CheckboxGroup-B1g42iP0.d.ts → Checkboxes-CR0Uu2g9.d.ts} +9 -9
- package/dist/FieldArray/index.cjs +5 -5
- package/dist/FieldArray/index.d.cts +2 -2
- package/dist/FieldArray/index.d.ts +2 -2
- package/dist/FieldArray/index.js +4 -4
- package/dist/FieldArray-EP4otr2x.d.cts +160 -0
- package/dist/FieldArray-EP4otr2x.d.ts +160 -0
- package/dist/{FieldValidationError-CU_xw0BL.d.ts → FieldValidationError-DwtLkGMo.d.cts} +2 -2
- package/dist/{FieldValidationError-CU_xw0BL.d.cts → FieldValidationError-DwtLkGMo.d.ts} +2 -2
- package/dist/Form/index.cjs +6 -4
- package/dist/Form/index.cjs.map +1 -1
- package/dist/Form/index.js +5 -3
- package/dist/Input/index.cjs +5 -5
- package/dist/Input/index.d.cts +2 -2
- package/dist/Input/index.d.ts +2 -2
- package/dist/Input/index.js +4 -4
- package/dist/{Input-C6ujfEkn.d.ts → Input-CCIEnvIp.d.ts} +1 -1
- package/dist/{Input-BQkZtJx8.d.cts → Input-D7HT_8jf.d.cts} +1 -1
- package/dist/RadioBoxes/index.cjs +5 -5
- package/dist/RadioBoxes/index.d.cts +3 -2
- package/dist/RadioBoxes/index.d.ts +3 -2
- package/dist/RadioBoxes/index.js +4 -4
- package/dist/{RadioBoxes-CE3mYoFk.d.cts → RadioBoxes-DpkI28l0.d.cts} +3 -2
- package/dist/{RadioBoxes-CE3mYoFk.d.ts → RadioBoxes-DpkI28l0.d.ts} +3 -2
- package/dist/RadioTabs/index.cjs +5 -5
- package/dist/RadioTabs/index.d.cts +2 -2
- package/dist/RadioTabs/index.d.ts +2 -2
- package/dist/RadioTabs/index.js +4 -4
- package/dist/{RadioTabs-BCWW3tru.d.cts → RadioTabs-DTDcAZoH.d.cts} +1 -1
- package/dist/{RadioTabs-BCWW3tru.d.ts → RadioTabs-DTDcAZoH.d.ts} +1 -1
- package/dist/Radios/index.cjs +16 -0
- package/dist/Radios/index.cjs.map +1 -0
- package/dist/Radios/index.d.cts +9 -0
- package/dist/Radios/index.d.ts +9 -0
- package/dist/Radios/index.js +16 -0
- package/dist/{RadioGroup-CAOX80Xx.d.cts → Radios-DprlJhoq.d.cts} +9 -9
- package/dist/{RadioGroup-CAOX80Xx.d.ts → Radios-DprlJhoq.d.ts} +9 -9
- package/dist/Select/index.cjs +5 -5
- package/dist/Select/index.d.cts +2 -2
- package/dist/Select/index.d.ts +2 -2
- package/dist/Select/index.js +4 -4
- package/dist/{Select-CTRWinmO.d.cts → Select-CDkZmZp2.d.cts} +1 -1
- package/dist/{Select-CTRWinmO.d.ts → Select-CDkZmZp2.d.ts} +1 -1
- package/dist/SubmitButton/index.cjs +6 -4
- package/dist/SubmitButton/index.cjs.map +1 -1
- package/dist/SubmitButton/index.js +5 -3
- package/dist/Switch/index.cjs +5 -5
- package/dist/Switch/index.js +4 -4
- package/dist/TextArea/index.cjs +5 -5
- package/dist/TextArea/index.d.cts +4 -2
- package/dist/TextArea/index.d.ts +4 -2
- package/dist/TextArea/index.js +4 -4
- package/dist/TextArea-DhxNWYNg.d.cts +86 -0
- package/dist/TextArea-DhxNWYNg.d.ts +86 -0
- package/dist/{chunk-Y3GELCDP.js → chunk-2QLCCB3L.js} +62 -67
- package/dist/chunk-2QLCCB3L.js.map +1 -0
- package/dist/chunk-3YDAYNNB.cjs +683 -0
- package/dist/chunk-3YDAYNNB.cjs.map +1 -0
- package/dist/chunk-4GBNXNCZ.js +683 -0
- package/dist/chunk-4GBNXNCZ.js.map +1 -0
- package/dist/{chunk-ULR4573W.cjs → chunk-4MMOSRT3.cjs} +40 -38
- package/dist/chunk-4MMOSRT3.cjs.map +1 -0
- package/dist/{chunk-FHRMVL6B.js → chunk-62BVHALF.js} +134 -89
- package/dist/chunk-62BVHALF.js.map +1 -0
- package/dist/{chunk-UGCZORU3.cjs → chunk-65BN4MRG.cjs} +9 -9
- package/dist/chunk-65BN4MRG.cjs.map +1 -0
- package/dist/{chunk-2B6CDMOZ.js → chunk-74NPRJVH.js} +16 -25
- package/dist/chunk-74NPRJVH.js.map +1 -0
- package/dist/chunk-76KOVUDN.js +138 -0
- package/dist/chunk-76KOVUDN.js.map +1 -0
- package/dist/{chunk-AYNTZPKL.cjs → chunk-7NWHDCME.cjs} +132 -87
- package/dist/chunk-7NWHDCME.cjs.map +1 -0
- package/dist/{chunk-IYDCKENI.js → chunk-CFH4VPJ4.js} +166 -26
- package/dist/chunk-CFH4VPJ4.js.map +1 -0
- package/dist/{chunk-KG4XCEPW.js → chunk-COLAXULB.js} +42 -40
- package/dist/chunk-COLAXULB.js.map +1 -0
- package/dist/{chunk-N2EEOWEP.cjs → chunk-DHO4HSO7.cjs} +59 -64
- package/dist/chunk-DHO4HSO7.cjs.map +1 -0
- package/dist/{chunk-77C6VN4L.cjs → chunk-EAJFV3AD.cjs} +50 -47
- package/dist/chunk-EAJFV3AD.cjs.map +1 -0
- package/dist/chunk-ELYGQTXB.js +47 -0
- package/dist/chunk-ELYGQTXB.js.map +1 -0
- package/dist/{chunk-FOVP54XP.cjs → chunk-EO4A7QGM.cjs} +18 -27
- package/dist/chunk-EO4A7QGM.cjs.map +1 -0
- package/dist/chunk-GVMEDVT5.cjs +117 -0
- package/dist/chunk-GVMEDVT5.cjs.map +1 -0
- package/dist/chunk-HSKFVCTS.js +103 -0
- package/dist/chunk-HSKFVCTS.js.map +1 -0
- package/dist/{chunk-2GYFDVXX.cjs → chunk-J5FFM7WG.cjs} +173 -33
- package/dist/chunk-J5FFM7WG.cjs.map +1 -0
- package/dist/{chunk-M2DNMSQZ.js → chunk-JLJB4A4K.js} +52 -49
- package/dist/chunk-JLJB4A4K.js.map +1 -0
- package/dist/{chunk-C64RKQEW.cjs → chunk-KBUECB4B.cjs} +3 -3
- package/dist/{chunk-C64RKQEW.cjs.map → chunk-KBUECB4B.cjs.map} +1 -1
- package/dist/chunk-NHEZXA4H.cjs +47 -0
- package/dist/chunk-NHEZXA4H.cjs.map +1 -0
- package/dist/chunk-RTFM4VRY.cjs +103 -0
- package/dist/chunk-RTFM4VRY.cjs.map +1 -0
- package/dist/{chunk-LJQ35BUK.js → chunk-RW35BB4P.js} +2 -2
- package/dist/{chunk-M7VM7XBE.js → chunk-SLTUNYTD.js} +8 -8
- package/dist/chunk-SLTUNYTD.js.map +1 -0
- package/dist/{chunk-YEKHVKS3.cjs → chunk-TFMVYQGN.cjs} +44 -42
- package/dist/chunk-TFMVYQGN.cjs.map +1 -0
- package/dist/chunk-TVMCTUQ4.js +117 -0
- package/dist/chunk-TVMCTUQ4.js.map +1 -0
- package/dist/chunk-Z353BLWI.cjs +138 -0
- package/dist/chunk-Z353BLWI.cjs.map +1 -0
- package/dist/{chunk-C52NGPIF.js → chunk-ZQ64MG7T.js} +48 -46
- package/dist/chunk-ZQ64MG7T.js.map +1 -0
- package/dist/helpers/index.cjs +4 -2
- package/dist/helpers/index.cjs.map +1 -1
- package/dist/helpers/index.d.cts +54 -10
- package/dist/helpers/index.d.ts +54 -10
- package/dist/helpers/index.js +3 -1
- package/dist/hooks/index.cjs +7 -3
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +86 -4
- package/dist/hooks/index.d.ts +86 -4
- package/dist/hooks/index.js +8 -4
- package/dist/index.cjs +20 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +30 -26
- package/dist/partials/FieldValidationError/index.cjs +2 -2
- package/dist/partials/FieldValidationError/index.d.cts +2 -2
- package/dist/partials/FieldValidationError/index.d.ts +2 -2
- package/dist/partials/FieldValidationError/index.js +1 -1
- package/package.json +12 -11
- package/dist/CheckboxGroup/index.cjs +0 -16
- package/dist/CheckboxGroup/index.cjs.map +0 -1
- package/dist/CheckboxGroup/index.d.cts +0 -10
- package/dist/CheckboxGroup/index.d.ts +0 -10
- package/dist/CheckboxGroup/index.js +0 -16
- package/dist/FieldArray-DVQka7Bh.d.cts +0 -130
- package/dist/FieldArray-DVQka7Bh.d.ts +0 -130
- package/dist/RadioGroup/index.cjs +0 -16
- package/dist/RadioGroup/index.d.cts +0 -9
- package/dist/RadioGroup/index.d.ts +0 -9
- package/dist/RadioGroup/index.js +0 -16
- package/dist/TextArea-DnFGyl4a.d.cts +0 -27
- package/dist/TextArea-DnFGyl4a.d.ts +0 -27
- package/dist/chunk-2B6CDMOZ.js.map +0 -1
- package/dist/chunk-2GYFDVXX.cjs.map +0 -1
- package/dist/chunk-77C6VN4L.cjs.map +0 -1
- package/dist/chunk-AYNTZPKL.cjs.map +0 -1
- package/dist/chunk-C52NGPIF.js.map +0 -1
- package/dist/chunk-CQWA2DFV.js +0 -37
- package/dist/chunk-CQWA2DFV.js.map +0 -1
- package/dist/chunk-EEBHFSBY.cjs +0 -112
- package/dist/chunk-EEBHFSBY.cjs.map +0 -1
- package/dist/chunk-FHRMVL6B.js.map +0 -1
- package/dist/chunk-FOVP54XP.cjs.map +0 -1
- package/dist/chunk-IYDCKENI.js.map +0 -1
- package/dist/chunk-JZF4HUYO.cjs +0 -409
- package/dist/chunk-JZF4HUYO.cjs.map +0 -1
- package/dist/chunk-KG4XCEPW.js.map +0 -1
- package/dist/chunk-KQN55PEW.js +0 -76
- package/dist/chunk-KQN55PEW.js.map +0 -1
- package/dist/chunk-M2DNMSQZ.js.map +0 -1
- package/dist/chunk-M7VM7XBE.js.map +0 -1
- package/dist/chunk-N2EEOWEP.cjs.map +0 -1
- package/dist/chunk-NAZIH6HV.js +0 -409
- package/dist/chunk-NAZIH6HV.js.map +0 -1
- package/dist/chunk-RDBCJJI7.cjs +0 -88
- package/dist/chunk-RDBCJJI7.cjs.map +0 -1
- package/dist/chunk-RF7KNUCI.js +0 -88
- package/dist/chunk-RF7KNUCI.js.map +0 -1
- package/dist/chunk-UGCZORU3.cjs.map +0 -1
- package/dist/chunk-ULR4573W.cjs.map +0 -1
- package/dist/chunk-XKMLCM5K.js +0 -112
- package/dist/chunk-XKMLCM5K.js.map +0 -1
- package/dist/chunk-Y3AB4GV6.cjs +0 -37
- package/dist/chunk-Y3AB4GV6.cjs.map +0 -1
- package/dist/chunk-Y3GELCDP.js.map +0 -1
- package/dist/chunk-YEKHVKS3.cjs.map +0 -1
- package/dist/chunk-YGNY6CKU.cjs +0 -76
- package/dist/chunk-YGNY6CKU.cjs.map +0 -1
- /package/dist/{CheckboxGroup → Checkboxes}/index.js.map +0 -0
- /package/dist/{RadioGroup → Radios}/index.js.map +0 -0
- /package/dist/{chunk-LJQ35BUK.js.map → chunk-RW35BB4P.js.map} +0 -0
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkJ5FFM7WGcjs = require('./chunk-J5FFM7WG.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkNHEZXA4Hcjs = require('./chunk-NHEZXA4H.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var _chunk2GYFDVXXcjs = require('./chunk-2GYFDVXX.cjs');
|
|
11
|
-
|
|
12
|
-
|
|
13
10
|
|
|
14
11
|
var _chunk555JRYCScjs = require('./chunk-555JRYCS.cjs');
|
|
15
12
|
|
|
16
|
-
// src/
|
|
13
|
+
// src/Checkboxes/Checkboxes.tsx
|
|
17
14
|
|
|
18
15
|
|
|
19
16
|
|
|
@@ -21,14 +18,14 @@ var _checkbox = require('@heroui/checkbox');
|
|
|
21
18
|
var _theme = require('@heroui/theme');
|
|
22
19
|
var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
23
20
|
var _jsxruntime = require('react/jsx-runtime');
|
|
24
|
-
var
|
|
21
|
+
var checkboxesVariants = _pixelutils.tv.call(void 0, {
|
|
25
22
|
slots: {
|
|
26
23
|
base: "group",
|
|
27
24
|
// Needs group for group-data condition
|
|
28
25
|
errorMessage: "text-tiny",
|
|
29
26
|
// see HeroUI styles for group-data condition,
|
|
30
27
|
// e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts
|
|
31
|
-
label: "text-foreground group-data-[invalid=true]:!text-danger text-sm subpixel-antialiased",
|
|
28
|
+
label: "text-foreground group-data-[invalid=true]:!text-danger inline-flex text-sm subpixel-antialiased",
|
|
32
29
|
optionBase: "",
|
|
33
30
|
optionIcon: "",
|
|
34
31
|
optionLabel: "",
|
|
@@ -55,44 +52,39 @@ var checkboxGroupVariants = _pixelutils.tv.call(void 0, {
|
|
|
55
52
|
}
|
|
56
53
|
}
|
|
57
54
|
});
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
var Checkboxes = (_a) => {
|
|
56
|
+
var _b = _a, {
|
|
57
|
+
className = void 0,
|
|
58
|
+
color = "primary",
|
|
59
|
+
inline = false,
|
|
60
|
+
lineThrough = false,
|
|
61
|
+
options,
|
|
62
|
+
name
|
|
63
|
+
} = _b, uniformFieldProps = _chunk555JRYCScjs.__objRest.call(void 0, _b, [
|
|
64
|
+
"className",
|
|
65
|
+
"color",
|
|
66
|
+
"inline",
|
|
67
|
+
"lineThrough",
|
|
68
|
+
"options",
|
|
69
|
+
"name"
|
|
70
|
+
]);
|
|
71
|
+
var _a2;
|
|
70
72
|
const {
|
|
73
|
+
disabled,
|
|
71
74
|
error: _error,
|
|
75
|
+
field: { onChange, value = [], ref, onBlur },
|
|
72
76
|
invalid,
|
|
77
|
+
label,
|
|
73
78
|
required,
|
|
74
79
|
testId
|
|
75
|
-
} =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
const variants = checkboxGroupVariants({ lineThrough });
|
|
81
|
-
const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
|
|
82
|
-
const heroCheckboxGroupClassNames = {
|
|
83
|
-
base: classNames.base,
|
|
84
|
-
label: classNames.label,
|
|
85
|
-
wrapper: classNames.wrapper
|
|
86
|
-
};
|
|
87
|
-
const heroCheckboxClassNames = {
|
|
88
|
-
base: classNames.optionBase,
|
|
89
|
-
icon: classNames.optionIcon,
|
|
90
|
-
label: classNames.optionLabel,
|
|
91
|
-
wrapper: classNames.optionWrapper
|
|
92
|
-
};
|
|
93
|
-
const errorFlat = _error && Object.values(
|
|
80
|
+
} = _chunkJ5FFM7WGcjs.useUniformField.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {
|
|
81
|
+
name,
|
|
82
|
+
showInvalidWhen: "immediate"
|
|
83
|
+
}, uniformFieldProps));
|
|
84
|
+
const errorFlat = (_a2 = _error && Object.values(
|
|
94
85
|
_error
|
|
95
|
-
).flat()
|
|
86
|
+
).flat()) != null ? _a2 : [];
|
|
87
|
+
const errorMessage = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNHEZXA4Hcjs.FieldValidationError_default, { error: errorFlat, testId });
|
|
96
88
|
const getCheckboxValue = (inputValue) => {
|
|
97
89
|
if (Array.isArray(inputValue)) {
|
|
98
90
|
return inputValue;
|
|
@@ -112,38 +104,41 @@ var CheckboxGroup = ({
|
|
|
112
104
|
onChange,
|
|
113
105
|
value: getCheckboxValue(value)
|
|
114
106
|
};
|
|
115
|
-
const
|
|
107
|
+
const checkboxesProps = options.length === 1 ? singleCheckboxProps : multipleCheckboxProps;
|
|
108
|
+
const variants = checkboxesVariants({ lineThrough });
|
|
109
|
+
const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
|
|
110
|
+
const heroCheckboxGroupClassNames = {
|
|
111
|
+
base: classNames.base,
|
|
112
|
+
label: classNames.label,
|
|
113
|
+
wrapper: classNames.wrapper
|
|
114
|
+
};
|
|
115
|
+
const heroCheckboxClassNames = {
|
|
116
|
+
base: classNames.optionBase,
|
|
117
|
+
icon: classNames.optionIcon,
|
|
118
|
+
label: classNames.optionLabel,
|
|
119
|
+
wrapper: classNames.optionWrapper
|
|
120
|
+
};
|
|
116
121
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
117
122
|
_checkbox.CheckboxGroup,
|
|
118
123
|
_chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {
|
|
124
|
+
ref,
|
|
119
125
|
classNames: heroCheckboxGroupClassNames,
|
|
120
126
|
color: color === "info" ? "primary" : color,
|
|
121
127
|
"data-invalid": invalid,
|
|
122
128
|
"data-testid": testId,
|
|
129
|
+
errorMessage,
|
|
123
130
|
isDisabled: disabled,
|
|
124
131
|
isInvalid: invalid,
|
|
125
132
|
isRequired: required,
|
|
133
|
+
label: label ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "legend", { children: label }) : null,
|
|
126
134
|
name,
|
|
127
135
|
onBlur,
|
|
128
|
-
orientation: inline ? "horizontal" : "vertical"
|
|
129
|
-
|
|
130
|
-
_chunkY3AB4GV6cjs.FieldValidationError_default,
|
|
131
|
-
{
|
|
132
|
-
className: classNames.errorMessage,
|
|
133
|
-
error: errorFlat,
|
|
134
|
-
testId
|
|
135
|
-
}
|
|
136
|
-
),
|
|
137
|
-
label: showLabel && // eslint-disable-next-line jsx-a11y/label-has-associated-control
|
|
138
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { children: [
|
|
139
|
-
label,
|
|
140
|
-
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId })
|
|
141
|
-
] }),
|
|
142
|
-
ref
|
|
143
|
-
}, checkboxGroupProps), {
|
|
136
|
+
orientation: inline ? "horizontal" : "vertical"
|
|
137
|
+
}, checkboxesProps), {
|
|
144
138
|
children: options == null ? void 0 : options.map((option) => {
|
|
139
|
+
var _a3;
|
|
145
140
|
const optionTestId = _pixelutils.slugify.call(void 0,
|
|
146
|
-
`${testId}_option_${(option == null ? void 0 : option.testId)
|
|
141
|
+
`${testId}_option_${(_a3 = option == null ? void 0 : option.testId) != null ? _a3 : option == null ? void 0 : option.value}`,
|
|
147
142
|
{ replaceDots: true }
|
|
148
143
|
);
|
|
149
144
|
const hasSubline = !!option.labelSubline;
|
|
@@ -164,7 +159,7 @@ var CheckboxGroup = ({
|
|
|
164
159
|
classNames: optionClassNames,
|
|
165
160
|
"data-invalid": invalid,
|
|
166
161
|
"data-testid": optionTestId,
|
|
167
|
-
isDisabled: disabled || option.disabled,
|
|
162
|
+
isDisabled: !!disabled || option.disabled,
|
|
168
163
|
value: option == null ? void 0 : option.value,
|
|
169
164
|
"aria-label": typeof option.label === "string" ? option.label : option.value,
|
|
170
165
|
children: labelContent
|
|
@@ -175,13 +170,13 @@ var CheckboxGroup = ({
|
|
|
175
170
|
})
|
|
176
171
|
);
|
|
177
172
|
};
|
|
178
|
-
var
|
|
173
|
+
var Checkboxes_default = Checkboxes;
|
|
179
174
|
|
|
180
|
-
// src/
|
|
181
|
-
var
|
|
175
|
+
// src/Checkboxes/index.ts
|
|
176
|
+
var Checkboxes_default2 = Checkboxes_default;
|
|
182
177
|
|
|
183
178
|
|
|
184
179
|
|
|
185
180
|
|
|
186
|
-
exports.
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
exports.Checkboxes_default = Checkboxes_default; exports.Checkboxes_default2 = Checkboxes_default2;
|
|
182
|
+
//# sourceMappingURL=chunk-DHO4HSO7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-DHO4HSO7.cjs","../src/Checkboxes/Checkboxes.tsx","../src/Checkboxes/index.ts"],"names":["_a","Checkboxes_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-DHO4HSO7.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type {\n CheckboxGroupProps as HeroCheckboxGroupProps,\n CheckboxProps as HeroCheckboxProps,\n} from '@heroui/checkbox';\nimport type { ReactNode } from 'react';\nimport type { FieldError } from 'react-hook-form';\n\nimport {\n Checkbox as HeroCheckbox,\n CheckboxGroup as HeroCheckboxGroup,\n} from '@heroui/checkbox';\nimport { checkbox as heroCheckboxVariants } from '@heroui/theme';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../hooks';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const checkboxesVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n errorMessage: 'text-tiny',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-foreground group-data-[invalid=true]:!text-danger inline-flex text-sm subpixel-antialiased',\n optionBase: '',\n optionIcon: '',\n optionLabel: '',\n optionLabelSubline: '!text-small text-foreground-400',\n optionWrapper: '',\n wrapper: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/checkbox.ts\n color: {\n info: {\n wrapper:\n 'text-info-foreground after:bg-info after:text-info-foreground',\n },\n ...heroCheckboxVariants.variants.color,\n } as const,\n lineThrough: {\n true: {\n optionLabel: [\n ...heroCheckboxVariants.variants.lineThrough.true.label,\n // fix stroke position when used with subline and enable animation\n 'relative before:transition-all before:duration-200',\n ],\n optionLabelSubline: 'group-data-[selected=true]:opacity-60',\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof checkboxesVariants>;\ntype ClassName = TVClassName<typeof checkboxesVariants>;\n\nexport interface CheckboxOption {\n /** option label */\n label?: ReactNode;\n /** subline displayed below the label */\n labelSubline?: ReactNode;\n /** option value */\n value: string;\n /** disables the option */\n disabled?: boolean;\n /** HTML data-testid attribute of the option */\n testId?: string;\n}\n\nexport interface CheckboxesProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Color scheme of the checkboxes */\n color?: VariantProps['color'];\n /** Sets all checkboxes disabled */\n disabled?: boolean;\n /** Orientation of the checkboxes */\n inline?: boolean;\n /** Label displayed above the checkboxes */\n label?: ReactNode;\n /** Whether the checkboxes label should be crossed out */\n lineThrough?: boolean;\n /** Name the Field is registered on the form */\n name: string;\n /** Checkboxes that should be displayed. */\n options: CheckboxOption[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Checkboxes component based on [HeroUI CheckboxGroup](https://www.heroui.com//docs/components/checkbox-group)\n */\nconst Checkboxes = ({\n className = undefined,\n color = 'primary',\n inline = false,\n lineThrough = false,\n options,\n name,\n ...uniformFieldProps\n}: CheckboxesProps) => {\n const {\n disabled,\n error: _error,\n field: { onChange, value = [], ref, onBlur },\n invalid,\n label,\n required,\n testId,\n } = useUniformField({\n name,\n showInvalidWhen: 'immediate',\n ...uniformFieldProps,\n });\n\n // Convert React Hook Form's nested error object structure to a flat array\n // RHF errors can be nested like: checkboxField.0 (individual checkbox errors)\n // and checkboxField._error (global field errors) - this flattens all\n // error values into a single array for rendering with FieldValidationError\n const errorFlat: FieldError[] =\n (_error &&\n Object.values(\n _error as unknown as Record<string, FieldError[]>,\n ).flat()) ??\n [];\n const errorMessage = (\n <FieldValidationError error={errorFlat} testId={testId} />\n );\n\n /**\n * Handles the checkboxes value changes based on the number of options:\n * 1. For single checkbox (options.length === 1):\n * - Converts undefined/empty array to [] for consistent controlled behavior\n * - Extracts single value from array for onChange\n *\n * Example: undefined → []\n * [value] → value\n *\n * 2. For multiple checkboxes:\n * - Uses raw value array with fallback to empty array\n * - Passes through onChange directly\n *\n * Example: undefined → []\n * ['value1', 'value2'] → ['value1', 'value2']\n */\n const getCheckboxValue = (inputValue: unknown): string[] => {\n if (Array.isArray(inputValue)) {\n return inputValue as string[];\n }\n if (inputValue) {\n return [inputValue as string];\n }\n return [];\n };\n\n const singleCheckboxProps = {\n value: getCheckboxValue(value),\n onChange: (newValue: string[]) => {\n onChange(newValue?.[0]);\n },\n };\n\n const multipleCheckboxProps = {\n onChange,\n value: getCheckboxValue(value),\n };\n\n const checkboxesProps =\n options.length === 1 ? singleCheckboxProps : multipleCheckboxProps;\n\n // classNames from slots\n const variants = checkboxesVariants({ lineThrough });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // map slots to HeroUI class names\n const heroCheckboxGroupClassNames: HeroCheckboxGroupProps['classNames'] = {\n base: classNames.base,\n label: classNames.label,\n wrapper: classNames.wrapper,\n };\n const heroCheckboxClassNames: HeroCheckboxProps['classNames'] = {\n base: classNames.optionBase,\n icon: classNames.optionIcon,\n label: classNames.optionLabel,\n wrapper: classNames.optionWrapper,\n };\n\n return (\n <HeroCheckboxGroup\n ref={ref}\n classNames={heroCheckboxGroupClassNames}\n color={color === 'info' ? 'primary' : color}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-testid={testId}\n errorMessage={errorMessage}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label ? <legend>{label}</legend> : null}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n {...checkboxesProps}\n >\n {options?.map((option) => {\n const optionTestId = slugify(\n `${testId}_option_${option?.testId ?? option?.value}`,\n { replaceDots: true },\n );\n\n // set content and classes depending option has subline\n const hasSubline = !!option.labelSubline;\n let labelContent: ReactNode;\n let optionClassNames = heroCheckboxClassNames;\n if (hasSubline) {\n labelContent = (\n <div className=\"flex grow flex-col items-start\">\n <span className={classNames.optionLabel}>{option.label}</span>\n <span className={classNames.optionLabelSubline}>\n {option.labelSubline}\n </span>\n </div>\n );\n // remove label classes from outer label when subline is used\n optionClassNames = { ...optionClassNames, label: '' };\n } else {\n labelContent = option.label;\n }\n\n return (\n <HeroCheckbox\n key={`index_${option.value}`}\n classNames={optionClassNames}\n data-invalid={invalid}\n data-testid={optionTestId}\n isDisabled={!!disabled || option.disabled}\n value={option?.value}\n aria-label={\n typeof option.label === 'string' ? option.label : option.value\n }\n >\n {labelContent}\n </HeroCheckbox>\n );\n })}\n </HeroCheckboxGroup>\n );\n};\n\nexport default Checkboxes;\n","import Checkboxes from './Checkboxes';\n\nexport type { CheckboxesProps, CheckboxOption } from './Checkboxes';\n\nexport { Checkboxes };\n\nexport default Checkboxes;\n"]}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _chunk2GYFDVXXcjs = require('./chunk-2GYFDVXX.cjs');
|
|
3
|
+
var _chunkJ5FFM7WGcjs = require('./chunk-J5FFM7WG.cjs');
|
|
11
4
|
|
|
12
5
|
|
|
13
6
|
var _chunkFLK6OPFYcjs = require('./chunk-FLK6OPFY.cjs');
|
|
14
7
|
|
|
15
8
|
|
|
9
|
+
|
|
16
10
|
var _chunk555JRYCScjs = require('./chunk-555JRYCS.cjs');
|
|
17
11
|
|
|
18
12
|
// src/Input/Input.tsx
|
|
@@ -31,36 +25,47 @@ var inputVariants = _pixelutils.tv.call(void 0, {
|
|
|
31
25
|
inputWrapper: "bg-content1 group-data-[focus=true]:border-focus"
|
|
32
26
|
}
|
|
33
27
|
});
|
|
34
|
-
var Input = ({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
28
|
+
var Input = (_a) => {
|
|
29
|
+
var _b = _a, {
|
|
30
|
+
className: _className = void 0,
|
|
31
|
+
clearable = false,
|
|
32
|
+
debounceDelay = 300,
|
|
33
|
+
endContent = void 0,
|
|
34
|
+
name,
|
|
35
|
+
onClear = void 0,
|
|
36
|
+
placeholder = " ",
|
|
37
|
+
size = void 0,
|
|
38
|
+
startContent = void 0,
|
|
39
|
+
transform = void 0,
|
|
40
|
+
type = void 0
|
|
41
|
+
} = _b, uniformFieldProps = _chunk555JRYCScjs.__objRest.call(void 0, _b, [
|
|
42
|
+
"className",
|
|
43
|
+
"clearable",
|
|
44
|
+
"debounceDelay",
|
|
45
|
+
"endContent",
|
|
46
|
+
"name",
|
|
47
|
+
"onClear",
|
|
48
|
+
"placeholder",
|
|
49
|
+
"size",
|
|
50
|
+
"startContent",
|
|
51
|
+
"transform",
|
|
52
|
+
"type"
|
|
53
|
+
]);
|
|
57
54
|
const {
|
|
58
|
-
disabled
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
disabled,
|
|
56
|
+
field: {
|
|
57
|
+
onChange: fieldOnChange,
|
|
58
|
+
onBlur: fieldOnBlur,
|
|
59
|
+
value: fieldValue,
|
|
60
|
+
ref
|
|
61
|
+
},
|
|
62
|
+
errorMessage,
|
|
63
|
+
invalid,
|
|
64
|
+
label,
|
|
65
|
+
required,
|
|
66
|
+
testId,
|
|
67
|
+
resetField
|
|
68
|
+
} = _chunkJ5FFM7WGcjs.useUniformField.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, { name }, uniformFieldProps));
|
|
64
69
|
const { onChange, onBlur, value } = _chunkFLK6OPFYcjs.useInputValueDebounce.call(void 0, {
|
|
65
70
|
debounceDelay,
|
|
66
71
|
onBlur: fieldOnBlur,
|
|
@@ -78,8 +83,6 @@ var Input = ({
|
|
|
78
83
|
}
|
|
79
84
|
}
|
|
80
85
|
} : {};
|
|
81
|
-
const showTestIdCopyButton = debugMode === "debug-testids";
|
|
82
|
-
const showLabel = label != null ? label : showTestIdCopyButton;
|
|
83
86
|
const variants = inputVariants();
|
|
84
87
|
const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, _className, "base");
|
|
85
88
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -88,9 +91,12 @@ var Input = ({
|
|
|
88
91
|
ref,
|
|
89
92
|
"data-testid": testId,
|
|
90
93
|
endContent,
|
|
91
|
-
|
|
94
|
+
errorMessage,
|
|
95
|
+
id: testId,
|
|
96
|
+
isDisabled: disabled,
|
|
92
97
|
isInvalid: invalid,
|
|
93
98
|
isRequired: required,
|
|
99
|
+
label,
|
|
94
100
|
labelPlacement: "outside",
|
|
95
101
|
name,
|
|
96
102
|
onBlur,
|
|
@@ -105,14 +111,11 @@ var Input = ({
|
|
|
105
111
|
classNames: {
|
|
106
112
|
base: classNames.base,
|
|
107
113
|
clearButton: classNames.clearButton,
|
|
114
|
+
// set padding to 0 for error message exit animation
|
|
115
|
+
helperWrapper: "p-0",
|
|
108
116
|
input: classNames.input,
|
|
109
117
|
inputWrapper: classNames.inputWrapper
|
|
110
|
-
}
|
|
111
|
-
errorMessage: error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }) : null,
|
|
112
|
-
label: showLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
113
|
-
label,
|
|
114
|
-
showTestIdCopyButton != null ? showTestIdCopyButton : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId })
|
|
115
|
-
] }) : null
|
|
118
|
+
}
|
|
116
119
|
}, clearableProps)
|
|
117
120
|
);
|
|
118
121
|
};
|
|
@@ -125,4 +128,4 @@ var Input_default2 = Input_default;
|
|
|
125
128
|
|
|
126
129
|
|
|
127
130
|
exports.Input_default = Input_default; exports.Input_default2 = Input_default2;
|
|
128
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-EAJFV3AD.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-EAJFV3AD.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-EAJFV3AD.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 { useInputValueDebounce, useUniformField } from '../hooks';\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 endContent = undefined,\n name,\n onClear = undefined,\n placeholder = ' ',\n size = undefined,\n startContent = undefined,\n transform = undefined,\n type = undefined,\n ...uniformFieldProps\n}: InputProps) => {\n const {\n disabled,\n field: {\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n },\n errorMessage,\n invalid,\n label,\n required,\n testId,\n resetField,\n } = useUniformField({ name, ...uniformFieldProps });\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 // 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 errorMessage={errorMessage}\n id={testId}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label}\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 // set padding to 0 for error message exit animation\n helperWrapper: 'p-0',\n input: classNames.input,\n inputWrapper: classNames.inputWrapper,\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"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// src/partials/FieldValidationError/FieldValidationError.tsx
|
|
2
|
+
import {
|
|
3
|
+
AnimatePresence,
|
|
4
|
+
motion,
|
|
5
|
+
useReducedMotion
|
|
6
|
+
} from "@fuf-stack/pixel-motion";
|
|
7
|
+
import { slugify } from "@fuf-stack/pixel-utils";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var FieldValidationError = ({
|
|
10
|
+
className = void 0,
|
|
11
|
+
error = void 0,
|
|
12
|
+
testId
|
|
13
|
+
}) => {
|
|
14
|
+
const disableAnimation = useReducedMotion();
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
"ul",
|
|
17
|
+
{
|
|
18
|
+
"aria-label": `Validation errors of field ${testId}`,
|
|
19
|
+
className,
|
|
20
|
+
"data-testid": slugify(`${testId}_error`),
|
|
21
|
+
children: /* @__PURE__ */ jsx(AnimatePresence, { initial: !disableAnimation, children: error == null ? void 0 : error.map(({ message }, i) => {
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
23
|
+
motion.li,
|
|
24
|
+
{
|
|
25
|
+
exit: disableAnimation ? void 0 : { opacity: 0, height: 0 },
|
|
26
|
+
initial: disableAnimation ? false : { height: 0, opacity: 0 },
|
|
27
|
+
style: { overflow: "hidden" },
|
|
28
|
+
transition: { duration: 0.2, ease: "circOut" },
|
|
29
|
+
animate: disableAnimation ? void 0 : { opacity: 1, height: "auto" },
|
|
30
|
+
children: /* @__PURE__ */ jsx("div", { className: "px-1 pt-1", children: message })
|
|
31
|
+
},
|
|
32
|
+
slugify(`${testId}_error_${i}`)
|
|
33
|
+
);
|
|
34
|
+
}) })
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
var FieldValidationError_default = FieldValidationError;
|
|
39
|
+
|
|
40
|
+
// src/partials/FieldValidationError/index.ts
|
|
41
|
+
var FieldValidationError_default2 = FieldValidationError_default;
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
FieldValidationError_default,
|
|
45
|
+
FieldValidationError_default2
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=chunk-ELYGQTXB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport {\n AnimatePresence,\n motion,\n useReducedMotion,\n} from '@fuf-stack/pixel-motion';\nimport { slugify } from '@fuf-stack/pixel-utils';\n\nexport interface FieldValidationErrorProps {\n /** CSS class name */\n className?: string;\n /** Field errors */\n error?: FieldError[];\n /** HTML data-testid attribute used in e2e tests */\n testId: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n className = undefined,\n error = undefined,\n testId,\n}: FieldValidationErrorProps) => {\n // disable all animation if user prefers reduced motion\n const disableAnimation = useReducedMotion();\n\n return (\n <ul\n aria-label={`Validation errors of field ${testId}`}\n className={className}\n data-testid={slugify(`${testId}_error`)}\n >\n <AnimatePresence initial={!disableAnimation}>\n {error?.map(({ message }, i) => {\n return (\n <motion.li\n key={slugify(`${testId}_error_${i}`)}\n exit={disableAnimation ? undefined : { opacity: 0, height: 0 }}\n initial={disableAnimation ? false : { height: 0, opacity: 0 }}\n style={{ overflow: 'hidden' }}\n transition={{ duration: 0.2, ease: 'circOut' }}\n animate={\n disableAnimation ? undefined : { opacity: 1, height: 'auto' }\n }\n >\n {/* wrap in div to apply padding and animation does not jump */}\n <div className=\"px-1 pt-1\">{message}</div>\n </motion.li>\n );\n })}\n </AnimatePresence>\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"],"mappings":";AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AA0CV;AA5Bd,IAAM,uBAAuB,CAAC;AAAA,EAC5B,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AACF,MAAiC;AAE/B,QAAM,mBAAmB,iBAAiB;AAE1C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,8BAA8B,MAAM;AAAA,MAChD;AAAA,MACA,eAAa,QAAQ,GAAG,MAAM,QAAQ;AAAA,MAEtC,8BAAC,mBAAgB,SAAS,CAAC,kBACxB,yCAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM;AAC9B,eACE;AAAA,UAAC,OAAO;AAAA,UAAP;AAAA,YAEC,MAAM,mBAAmB,SAAY,EAAE,SAAS,GAAG,QAAQ,EAAE;AAAA,YAC7D,SAAS,mBAAmB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE;AAAA,YAC5D,OAAO,EAAE,UAAU,SAAS;AAAA,YAC5B,YAAY,EAAE,UAAU,KAAK,MAAM,UAAU;AAAA,YAC7C,SACE,mBAAmB,SAAY,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,YAI9D,8BAAC,SAAI,WAAU,aAAa,mBAAQ;AAAA;AAAA,UAV/B,QAAQ,GAAG,MAAM,UAAU,CAAC,EAAE;AAAA,QAWrC;AAAA,MAEJ,IACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,+BAAQ;;;ACpDf,IAAOA,gCAAQ;","names":["FieldValidationError_default"]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkJ5FFM7WGcjs = require('./chunk-J5FFM7WG.cjs');
|
|
5
5
|
|
|
6
6
|
// src/Form/Form.tsx
|
|
7
7
|
var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
8
8
|
|
|
9
9
|
// src/Form/subcomponents/FormDebugViewer.tsx
|
|
10
|
-
var _react = require('react');
|
|
11
10
|
var _fa = require('react-icons/fa');
|
|
12
11
|
var _fa6 = require('react-icons/fa6');
|
|
13
12
|
|
|
@@ -19,28 +18,15 @@ var _jsxruntime = require('react/jsx-runtime');
|
|
|
19
18
|
var FormDebugViewer = ({ className = void 0 }) => {
|
|
20
19
|
const {
|
|
21
20
|
debugMode,
|
|
22
|
-
formState: { isValid, isSubmitting },
|
|
23
|
-
getValues,
|
|
21
|
+
formState: { isValid, isSubmitting, submitCount, isSubmitSuccessful },
|
|
24
22
|
setDebugMode,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} =
|
|
23
|
+
validation: { errors },
|
|
24
|
+
watch
|
|
25
|
+
} = _chunkJ5FFM7WGcjs.useFormContext.call(void 0, );
|
|
28
26
|
const showDebugButton = debugMode === "off";
|
|
29
27
|
const showDebugCard = debugMode === "debug" || debugMode === "debug-testids";
|
|
30
28
|
const showDebugTestIds = debugMode === "debug-testids";
|
|
31
|
-
const
|
|
32
|
-
_react.useEffect.call(void 0, () => {
|
|
33
|
-
if (!showDebugCard) {
|
|
34
|
-
return void 0;
|
|
35
|
-
}
|
|
36
|
-
const unsubscribe = subscribe({
|
|
37
|
-
formState: { values: true },
|
|
38
|
-
callback: ({ values }) => {
|
|
39
|
-
setValidationValues(values);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
return unsubscribe;
|
|
43
|
-
}, [showDebugCard, subscribe]);
|
|
29
|
+
const values = watch();
|
|
44
30
|
if (showDebugButton) {
|
|
45
31
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
46
32
|
_Button.Button,
|
|
@@ -94,10 +80,14 @@ var FormDebugViewer = ({ className = void 0 }) => {
|
|
|
94
80
|
_Json.Json,
|
|
95
81
|
{
|
|
96
82
|
value: {
|
|
97
|
-
values
|
|
98
|
-
errors: errors
|
|
99
|
-
|
|
100
|
-
|
|
83
|
+
values,
|
|
84
|
+
errors: errors != null ? errors : null,
|
|
85
|
+
submit: {
|
|
86
|
+
isValid,
|
|
87
|
+
isSubmitting,
|
|
88
|
+
isSubmitSuccessful,
|
|
89
|
+
submitCount
|
|
90
|
+
}
|
|
101
91
|
}
|
|
102
92
|
}
|
|
103
93
|
)
|
|
@@ -122,7 +112,7 @@ var Form = ({
|
|
|
122
112
|
validationTrigger = "all"
|
|
123
113
|
}) => {
|
|
124
114
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
125
|
-
|
|
115
|
+
_chunkJ5FFM7WGcjs.FormContext_default,
|
|
126
116
|
{
|
|
127
117
|
debugModeSettings: debug,
|
|
128
118
|
initialValues,
|
|
@@ -130,13 +120,14 @@ var Form = ({
|
|
|
130
120
|
validation,
|
|
131
121
|
validationTrigger,
|
|
132
122
|
children: ({ handleSubmit, isValid }) => {
|
|
123
|
+
var _a;
|
|
133
124
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-row justify-between gap-6", children: [
|
|
134
125
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
135
126
|
"form",
|
|
136
127
|
{
|
|
137
128
|
className: _pixelutils.cn.call(void 0, "grow", className),
|
|
138
129
|
"data-form-is-valid": isValid,
|
|
139
|
-
"data-testid": _pixelutils.slugify.call(void 0, testId
|
|
130
|
+
"data-testid": _pixelutils.slugify.call(void 0, (_a = testId != null ? testId : name) != null ? _a : ""),
|
|
140
131
|
name,
|
|
141
132
|
onSubmit: handleSubmit,
|
|
142
133
|
children
|
|
@@ -157,4 +148,4 @@ var Form_default2 = Form_default;
|
|
|
157
148
|
|
|
158
149
|
|
|
159
150
|
exports.Form_default = Form_default; exports.Form_default2 = Form_default2;
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-EO4A7QGM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-EO4A7QGM.cjs","../src/Form/Form.tsx","../src/Form/subcomponents/FormDebugViewer.tsx","../src/Form/index.ts"],"names":["jsx","jsxs","cn","Form_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-EO4A7QGM.cjs","sourcesContent":[null,"import type { VetoInstance } from '@fuf-stack/veto';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, SubmitHandler } from 'react-hook-form';\nimport type { DebugModeSettings } from './subcomponents/FormContext';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\n\nimport FormProvider from './subcomponents/FormContext';\nimport FormDebugViewer from './subcomponents/FormDebugViewer';\n\nconst IS_TEST = process.env.NODE_ENV === 'test';\n\nexport interface FormProps {\n /** form children */\n children: ReactNode | ReactNode[];\n /** CSS class name */\n className?: string | string[];\n /** settings for from debug mode */\n debug?: DebugModeSettings;\n /** initial form values */\n initialValues?: FieldValues;\n /** name of the form */\n name?: string;\n /** form submit handler */\n onSubmit: SubmitHandler<FieldValues>;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** veto validation schema */\n validation?: VetoInstance;\n /** when the validation should be triggered */\n validationTrigger?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n}\n\n/**\n * Form component that has to wrap every uniform\n */\nconst Form = ({\n children,\n className = undefined,\n debug = undefined,\n initialValues = undefined,\n name = undefined,\n onSubmit,\n testId = undefined,\n validation = undefined,\n validationTrigger = 'all',\n}: FormProps) => {\n return (\n <FormProvider\n debugModeSettings={debug}\n initialValues={initialValues}\n onSubmit={onSubmit}\n validation={validation}\n validationTrigger={validationTrigger}\n >\n {({ handleSubmit, isValid }) => {\n return (\n <div className=\"flex w-full flex-row justify-between gap-6\">\n <form\n className={cn('grow', className)}\n data-form-is-valid={isValid}\n data-testid={slugify(testId ?? name ?? '')}\n name={name}\n onSubmit={handleSubmit}\n >\n {children}\n </form>\n {/* render debug viewer when not in test environment and debug not disabled */}\n {!IS_TEST && !debug?.disable && (\n <FormDebugViewer className=\"w-96 shrink\" />\n )}\n </div>\n );\n }}\n </FormProvider>\n );\n};\n\nexport default Form;\n","import { FaTimes } from 'react-icons/fa';\nimport { FaBug, FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels/Button';\nimport { Card } from '@fuf-stack/pixels/Card';\nimport { Json } from '@fuf-stack/pixels/Json';\n\nimport { useFormContext } from '../../hooks';\n\n// import Json css (theme)\nimport '@fuf-stack/pixels/Json.css';\n\ninterface FormDebugViewerProps {\n /** CSS class name */\n className?: string;\n}\n\n/** Renders a form debug panel with information about the current form state */\nconst FormDebugViewer = ({ className = undefined }: FormDebugViewerProps) => {\n const {\n debugMode,\n formState: { isValid, isSubmitting, submitCount, isSubmitSuccessful },\n setDebugMode,\n validation: { errors },\n watch,\n } = useFormContext();\n\n const showDebugButton = debugMode === 'off';\n const showDebugCard = debugMode === 'debug' || debugMode === 'debug-testids';\n const showDebugTestIds = debugMode === 'debug-testids';\n\n // TODO: maybe use new Watch component?\n // see: https://github.com/react-hook-form/react-hook-form/pull/12986\n const values = watch();\n\n if (showDebugButton) {\n return (\n <Button\n ariaLabel=\"Enable form debug mode\"\n className=\"text-default-400 fixed right-2.5 bottom-2.5 w-5\"\n icon={<FaBug />}\n variant=\"light\"\n onClick={() => {\n setDebugMode('debug');\n }}\n />\n );\n }\n\n // do not show card\n if (!showDebugCard) {\n return null;\n }\n\n return (\n <Card\n className={cn(className)}\n header={\n <div className=\"flex w-full flex-row justify-between\">\n <span className=\"text-lg\">Debug Mode</span>\n <Button\n color=\"danger\"\n icon={<FaTimes />}\n size=\"sm\"\n variant=\"light\"\n onClick={() => {\n setDebugMode('off');\n }}\n />\n </div>\n }\n >\n <Button\n className=\"mr-auto mb-4 ml-auto\"\n icon={<FaBullseye />}\n variant={showDebugTestIds ? 'solid' : 'light'}\n onClick={() => {\n setDebugMode(debugMode === 'debug' ? 'debug-testids' : 'debug');\n }}\n >\n {showDebugTestIds ? 'Hide CopyButton' : 'Show CopyButton'}\n </Button>\n <Json\n value={{\n values,\n errors: errors ?? null,\n submit: {\n isValid,\n isSubmitting,\n isSubmitSuccessful,\n submitCount,\n },\n }}\n />\n </Card>\n );\n};\n\nexport default FormDebugViewer;\n","import Form from './Form';\n\nexport type { FormProps } from './Form';\n\nexport { Form };\n\nexport default Form;\n"]}
|