@k3-universe/react-kit 0.0.2 → 0.0.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/kit/builder/form/components/FormBuilder.d.ts +1 -1
- package/dist/kit/builder/form/components/FormBuilder.d.ts.map +1 -1
- package/dist/kit/builder/form/components/FormBuilderField.d.ts.map +1 -1
- package/dist/kit/builder/form/utils/field-factories.d.ts +1 -0
- package/dist/kit/builder/form/utils/field-factories.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kit/builder/form/components/FormBuilder.tsx +3 -0
- package/src/kit/builder/form/components/FormBuilderField.tsx +53 -2
- package/src/kit/builder/form/utils/field-factories.ts +13 -0
- package/src/stories/kit/builder/Form.Basic.stories.tsx +2 -0
- package/src/stories/kit/builder/Form.Simple.stories.tsx +4 -0
|
@@ -6,7 +6,7 @@ export interface FormBuilderFieldConfig {
|
|
|
6
6
|
id?: string;
|
|
7
7
|
name: string;
|
|
8
8
|
label: string;
|
|
9
|
-
type: 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'autocomplete' | 'checkbox' | 'radio' | 'date' | 'file' | 'object' | 'array';
|
|
9
|
+
type: 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'autocomplete' | 'checkbox' | 'switch' | 'radio' | 'date' | 'file' | 'object' | 'array';
|
|
10
10
|
placeholder?: string;
|
|
11
11
|
description?: string;
|
|
12
12
|
required?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilder.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAC;AAYxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAIvD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,qBAAqB,kDAye9G;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -10,6 +10,7 @@ export declare const createField: {
|
|
|
10
10
|
value: string | number | null;
|
|
11
11
|
}[], fieldOptions?: Partial<FormBuilderFieldConfig>) => FormBuilderFieldConfig;
|
|
12
12
|
checkbox: (name: string, label: string, options?: Partial<FormBuilderFieldConfig>) => FormBuilderFieldConfig;
|
|
13
|
+
switch: (name: string, label: string, options?: Partial<FormBuilderFieldConfig>) => FormBuilderFieldConfig;
|
|
13
14
|
radio: (name: string, label: string, options: {
|
|
14
15
|
label: string;
|
|
15
16
|
value: string | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-factories.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/utils/field-factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInE,eAAO,MAAM,WAAW;iBAEd,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;qBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;qBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBAUjB,MAAM,SACL,MAAM,WACJ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,iBAC7C,OAAO,CAAC,sBAAsB,CAAC,KAC5C,sBAAsB;qBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBAUjB,MAAM,SACL,MAAM,WACJ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,iBACtC,OAAO,CAAC,sBAAsB,CAAC,KAC5C,sBAAsB;iBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;iBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBASjB,MAAM,SACL,MAAM,UACL,sBAAsB,EAAE,YACvB,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBAWjB,MAAM,SACL,MAAM,UACL,sBAAsB,EAAE,YACvB,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;CAU1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-factories.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/utils/field-factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInE,eAAO,MAAM,WAAW;iBAEd,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;qBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;qBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBAUjB,MAAM,SACL,MAAM,WACJ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,iBAC7C,OAAO,CAAC,sBAAsB,CAAC,KAC5C,sBAAsB;qBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBAUjB,MAAM,SACL,MAAM,WACJ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,iBACtC,OAAO,CAAC,sBAAsB,CAAC,KAC5C,sBAAsB;iBAUjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;iBASjB,MAAM,SACL,MAAM,YACJ,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;mBASjB,MAAM,SACL,MAAM,UACL,sBAAsB,EAAE,YACvB,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;kBAWjB,MAAM,SACL,MAAM,UACL,sBAAsB,EAAE,YACvB,OAAO,CAAC,sBAAsB,CAAC,KACvC,sBAAsB;CAU1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ export interface FormBuilderFieldConfig {
|
|
|
22
22
|
| 'select'
|
|
23
23
|
| 'autocomplete'
|
|
24
24
|
| 'checkbox'
|
|
25
|
+
| 'switch'
|
|
25
26
|
| 'radio'
|
|
26
27
|
| 'date'
|
|
27
28
|
| 'file'
|
|
@@ -161,6 +162,7 @@ export function FormBuilder({
|
|
|
161
162
|
baseSchema = z.union([z.string(), z.number()]).nullable();
|
|
162
163
|
break;
|
|
163
164
|
case 'checkbox':
|
|
165
|
+
case 'switch':
|
|
164
166
|
baseSchema = z.boolean();
|
|
165
167
|
break;
|
|
166
168
|
case 'date':
|
|
@@ -203,6 +205,7 @@ export function FormBuilder({
|
|
|
203
205
|
fieldSchema = z.union([z.string(), z.number(), z.object()]).nullable();
|
|
204
206
|
break;
|
|
205
207
|
case 'checkbox':
|
|
208
|
+
case 'switch':
|
|
206
209
|
fieldSchema = z.boolean();
|
|
207
210
|
break;
|
|
208
211
|
case 'date':
|
|
@@ -6,6 +6,7 @@ import { Input } from '../../../../shadcn/ui/input';
|
|
|
6
6
|
import { Textarea } from '../../../../shadcn/ui/textarea';
|
|
7
7
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../shadcn/ui/select';
|
|
8
8
|
import { Checkbox } from '../../../../shadcn/ui/checkbox';
|
|
9
|
+
import { Switch } from '../../../../shadcn/ui/switch';
|
|
9
10
|
import { RadioGroup, RadioGroupItem } from '../../../../shadcn/ui/radio-group';
|
|
10
11
|
import { Label } from '../../../../shadcn/ui/label';
|
|
11
12
|
import { Card, CardContent, CardHeader, CardTitle } from '../../../../shadcn/ui/card';
|
|
@@ -180,6 +181,56 @@ export function FormBuilderField({ field, control, onChange, onFieldChange, pare
|
|
|
180
181
|
);
|
|
181
182
|
}
|
|
182
183
|
|
|
184
|
+
case 'switch': {
|
|
185
|
+
const placement = field.labelPlacement ?? 'inline';
|
|
186
|
+
if (placement === 'stacked') {
|
|
187
|
+
const labelId = `${fieldPath}-label`;
|
|
188
|
+
return (
|
|
189
|
+
<div className="space-y-2">
|
|
190
|
+
<Label id={labelId} className="text-sm font-medium">
|
|
191
|
+
{field.label}
|
|
192
|
+
{field.required && <span className="text-destructive ml-1">*</span>}
|
|
193
|
+
</Label>
|
|
194
|
+
<Switch
|
|
195
|
+
aria-labelledby={labelId}
|
|
196
|
+
id={fieldPath}
|
|
197
|
+
checked={controllerField.value || false}
|
|
198
|
+
onCheckedChange={handleChange}
|
|
199
|
+
disabled={field.disabled}
|
|
200
|
+
className={cn(error && 'border-destructive', field.className)}
|
|
201
|
+
/>
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
if (placement === 'hidden') {
|
|
206
|
+
return (
|
|
207
|
+
<Switch
|
|
208
|
+
id={fieldPath}
|
|
209
|
+
checked={controllerField.value || false}
|
|
210
|
+
onCheckedChange={handleChange}
|
|
211
|
+
disabled={field.disabled}
|
|
212
|
+
className={cn(error && 'border-destructive', field.className)}
|
|
213
|
+
/>
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
// inline (default)
|
|
217
|
+
return (
|
|
218
|
+
<div className="flex items-center space-x-2">
|
|
219
|
+
<Switch
|
|
220
|
+
id={fieldPath}
|
|
221
|
+
checked={controllerField.value || false}
|
|
222
|
+
onCheckedChange={handleChange}
|
|
223
|
+
disabled={field.disabled}
|
|
224
|
+
className={cn(error && 'border-destructive', field.className)}
|
|
225
|
+
/>
|
|
226
|
+
<Label htmlFor={fieldPath} className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">
|
|
227
|
+
{field.label}
|
|
228
|
+
{field.required && <span className="text-destructive ml-1">*</span>}
|
|
229
|
+
</Label>
|
|
230
|
+
</div>
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
183
234
|
case 'radio': {
|
|
184
235
|
const toUiValue = (val: unknown) => (val === null || val === undefined ? NULL_SENTINEL : String(val));
|
|
185
236
|
const fromUiValue = (val: string) => {
|
|
@@ -394,8 +445,8 @@ export function FormBuilderField({ field, control, onChange, onFieldChange, pare
|
|
|
394
445
|
return renderArrayField();
|
|
395
446
|
}
|
|
396
447
|
|
|
397
|
-
// For checkbox, label may be inline/stacked/hidden handled inside renderBasicField
|
|
398
|
-
if (field.type === 'checkbox') {
|
|
448
|
+
// For checkbox/switch, label may be inline/stacked/hidden handled inside renderBasicField
|
|
449
|
+
if (field.type === 'checkbox' || field.type === 'switch') {
|
|
399
450
|
return (
|
|
400
451
|
<div className={cn('space-y-2', field.gridCols && `md:col-span-${field.gridCols}`)}>
|
|
401
452
|
{renderBasicField()}
|
|
@@ -93,6 +93,19 @@ export const createField = {
|
|
|
93
93
|
...options,
|
|
94
94
|
}),
|
|
95
95
|
|
|
96
|
+
switch: (
|
|
97
|
+
name: string,
|
|
98
|
+
label: string,
|
|
99
|
+
options: Partial<FormBuilderFieldConfig> = {},
|
|
100
|
+
): FormBuilderFieldConfig => ({
|
|
101
|
+
name,
|
|
102
|
+
label,
|
|
103
|
+
type: 'switch',
|
|
104
|
+
required: false,
|
|
105
|
+
defaultValue: false,
|
|
106
|
+
...options,
|
|
107
|
+
}),
|
|
108
|
+
|
|
96
109
|
radio: (
|
|
97
110
|
name: string,
|
|
98
111
|
label: string,
|
|
@@ -29,6 +29,8 @@ export const BasicUsage: Story = {
|
|
|
29
29
|
{ name: 'lastName', label: 'Last name', type: 'text', required: true },
|
|
30
30
|
{ name: 'email', label: 'Email', type: 'email', required: true },
|
|
31
31
|
{ name: 'newsletter', label: 'Subscribe to newsletter', type: 'checkbox', defaultValue: false, gridCols: 2 },
|
|
32
|
+
{ name: 'darkMode', label: 'Enable dark mode', type: 'switch', defaultValue: false, gridCols: 2 },
|
|
33
|
+
{ name: 'darkModeStacked', label: 'Enable dark mode (stacked)', type: 'switch', defaultValue: true, labelPlacement: 'stacked', gridCols: 2 },
|
|
32
34
|
],
|
|
33
35
|
},
|
|
34
36
|
],
|