@pixpilot/formily-shadcn 0.6.0 → 0.8.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/_virtual/rolldown_runtime.cjs +25 -1
- package/dist/_virtual/rolldown_runtime.js +24 -1
- package/dist/components/array-base/array-base.cjs +59 -1
- package/dist/components/array-base/array-base.js +55 -1
- package/dist/components/array-base/array-context.cjs +28 -1
- package/dist/components/array-base/array-context.js +22 -1
- package/dist/components/array-base/component-context.cjs +28 -1
- package/dist/components/array-base/component-context.js +22 -1
- package/dist/components/array-base/components/addition.cjs +51 -1
- package/dist/components/array-base/components/addition.d.cts +1 -1
- package/dist/components/array-base/components/addition.d.ts +1 -1
- package/dist/components/array-base/components/addition.js +45 -1
- package/dist/components/array-base/components/array-copy.cjs +49 -1
- package/dist/components/array-base/components/array-copy.js +42 -1
- package/dist/components/array-base/components/array-index.cjs +15 -1
- package/dist/components/array-base/components/array-index.js +13 -1
- package/dist/components/array-base/components/array-item-label.cjs +22 -1
- package/dist/components/array-base/components/array-item-label.js +19 -1
- package/dist/components/array-base/components/components.cjs +30 -1
- package/dist/components/array-base/components/components.js +29 -1
- package/dist/components/array-base/components/edit.cjs +42 -1
- package/dist/components/array-base/components/edit.js +36 -1
- package/dist/components/array-base/components/empty.cjs +19 -1
- package/dist/components/array-base/components/empty.js +16 -1
- package/dist/components/array-base/components/get-array-components.cjs +88 -1
- package/dist/components/array-base/components/get-array-components.js +84 -1
- package/dist/components/array-base/components/move-down.cjs +47 -1
- package/dist/components/array-base/components/move-down.js +41 -1
- package/dist/components/array-base/components/move-up.cjs +47 -1
- package/dist/components/array-base/components/move-up.js +41 -1
- package/dist/components/array-base/components/remove.cjs +46 -1
- package/dist/components/array-base/components/remove.js +40 -1
- package/dist/components/array-base/components/title.cjs +17 -1
- package/dist/components/array-base/components/title.js +14 -1
- package/dist/components/array-base/components/use-array-components-registry.cjs +56 -1
- package/dist/components/array-base/components/use-array-components-registry.js +52 -1
- package/dist/components/array-base/constants/index.cjs +17 -1
- package/dist/components/array-base/constants/index.js +15 -1
- package/dist/components/array-base/index.cjs +2 -1
- package/dist/components/array-base/index.js +2 -1
- package/dist/components/array-base/utils/filter-and-sort-components.cjs +34 -1
- package/dist/components/array-base/utils/filter-and-sort-components.js +34 -1
- package/dist/components/array-base/utils/is-array-component.cjs +65 -1
- package/dist/components/array-base/utils/is-array-component.js +56 -1
- package/dist/components/array-cards/array-cards.cjs +64 -1
- package/dist/components/array-cards/array-cards.js +60 -1
- package/dist/components/array-cards/index.cjs +1 -1
- package/dist/components/array-cards/index.js +1 -1
- package/dist/components/array-cards/item.cjs +64 -1
- package/dist/components/array-cards/item.js +60 -1
- package/dist/components/array-collapse/array-collapse.cjs +96 -1
- package/dist/components/array-collapse/array-collapse.js +92 -1
- package/dist/components/array-collapse/index.cjs +1 -1
- package/dist/components/array-collapse/index.js +1 -1
- package/dist/components/array-collapse/item.cjs +84 -1
- package/dist/components/array-collapse/item.js +78 -1
- package/dist/components/array-common/array-items-list.cjs +43 -1
- package/dist/components/array-common/array-items-list.js +39 -1
- package/dist/components/array-common/create-active-item-manager.cjs +29 -1
- package/dist/components/array-common/create-active-item-manager.js +27 -1
- package/dist/components/array-common/index.cjs +5 -1
- package/dist/components/array-common/index.js +5 -1
- package/dist/components/array-common/item-wrapper.cjs +26 -1
- package/dist/components/array-common/item-wrapper.js +21 -1
- package/dist/components/array-common/list-item.cjs +53 -1
- package/dist/components/array-common/list-item.js +48 -1
- package/dist/components/array-common/use-array-editor.cjs +47 -1
- package/dist/components/array-common/use-array-editor.js +44 -1
- package/dist/components/array-dialog/array-dialog.cjs +66 -1
- package/dist/components/array-dialog/array-dialog.js +62 -1
- package/dist/components/array-dialog/edit-dialog.cjs +61 -1
- package/dist/components/array-dialog/edit-dialog.js +57 -1
- package/dist/components/array-dialog/index.cjs +1 -1
- package/dist/components/array-dialog/index.js +1 -1
- package/dist/components/array-popover/array-popover.cjs +58 -1
- package/dist/components/array-popover/array-popover.js +53 -1
- package/dist/components/array-popover/index.cjs +1 -1
- package/dist/components/array-popover/index.js +1 -1
- package/dist/components/array-popover/popover.cjs +75 -1
- package/dist/components/array-popover/popover.js +71 -1
- package/dist/components/checkbox.cjs +26 -1
- package/dist/components/checkbox.js +23 -1
- package/dist/components/column.cjs +39 -1
- package/dist/components/column.js +35 -1
- package/dist/components/combobox.cjs +14 -1
- package/dist/components/combobox.js +11 -1
- package/dist/components/context/context.cjs +7 -1
- package/dist/components/context/context.js +7 -1
- package/dist/components/context/form-context.cjs +9 -1
- package/dist/components/context/form-context.d.cts +12 -6
- package/dist/components/context/form-context.d.ts +12 -6
- package/dist/components/context/form-context.js +7 -1
- package/dist/components/context/index.cjs +2 -1
- package/dist/components/context/index.d.cts +1 -1
- package/dist/components/context/index.d.ts +1 -1
- package/dist/components/context/index.js +2 -1
- package/dist/components/date-picker.cjs +23 -1
- package/dist/components/date-picker.js +19 -1
- package/dist/components/file-upload/file-upload-inline.cjs +35 -0
- package/dist/components/file-upload/file-upload-inline.d.cts +20 -0
- package/dist/components/file-upload/file-upload-inline.d.ts +20 -0
- package/dist/components/file-upload/file-upload-inline.js +30 -0
- package/dist/components/file-upload/file-upload.cjs +35 -0
- package/dist/components/file-upload/file-upload.d.cts +20 -0
- package/dist/components/file-upload/file-upload.d.ts +20 -0
- package/dist/components/file-upload/file-upload.js +30 -0
- package/dist/components/file-upload/index.cjs +2 -0
- package/dist/components/file-upload/index.d.cts +2 -0
- package/dist/components/file-upload/index.d.ts +2 -0
- package/dist/components/file-upload/index.js +2 -0
- package/dist/components/file-upload/use-file-upload-feedback.cjs +59 -0
- package/dist/components/file-upload/use-file-upload-feedback.js +53 -0
- package/dist/components/form-grid.cjs +19 -1
- package/dist/components/form-grid.js +15 -1
- package/dist/components/form-item.cjs +118 -3
- package/dist/components/form-item.js +112 -3
- package/dist/components/form-items-container.cjs +28 -1
- package/dist/components/form-items-container.js +24 -1
- package/dist/components/form.cjs +56 -1
- package/dist/components/form.d.cts +1 -1
- package/dist/components/form.d.ts +1 -1
- package/dist/components/form.js +51 -1
- package/dist/components/hidden.cjs +26 -1
- package/dist/components/hidden.js +23 -1
- package/dist/components/icon-picker.cjs +37 -1
- package/dist/components/icon-picker.d.cts +2 -2
- package/dist/components/icon-picker.d.ts +2 -2
- package/dist/components/icon-picker.js +33 -1
- package/dist/components/input.cjs +20 -1
- package/dist/components/input.js +17 -1
- package/dist/components/json-schema-form-renderer.cjs +30 -1
- package/dist/components/json-schema-form-renderer.d.cts +3 -0
- package/dist/components/json-schema-form-renderer.d.ts +3 -0
- package/dist/components/json-schema-form-renderer.js +26 -1
- package/dist/components/number-input.cjs +19 -1
- package/dist/components/number-input.d.cts +2 -2
- package/dist/components/number-input.js +16 -1
- package/dist/components/object-container.cjs +35 -1
- package/dist/components/object-container.js +32 -1
- package/dist/components/radio.cjs +40 -1
- package/dist/components/radio.js +35 -1
- package/dist/components/rich-text-editor.cjs +27 -0
- package/dist/components/rich-text-editor.d.cts +6 -0
- package/dist/components/rich-text-editor.d.ts +6 -0
- package/dist/components/rich-text-editor.js +23 -0
- package/dist/components/row.cjs +39 -1
- package/dist/components/row.js +35 -1
- package/dist/components/schema-field-extended.cjs +25 -0
- package/dist/components/schema-field-extended.d.cts +630 -0
- package/dist/components/schema-field-extended.d.ts +630 -0
- package/dist/components/schema-field-extended.js +23 -0
- package/dist/components/schema-field.cjs +61 -1
- package/dist/components/schema-field.d.cts +290 -288
- package/dist/components/schema-field.d.ts +136 -134
- package/dist/components/schema-field.js +57 -1
- package/dist/components/select.cjs +11 -1
- package/dist/components/select.js +8 -1
- package/dist/components/separator.cjs +15 -1
- package/dist/components/separator.d.cts +3 -3
- package/dist/components/separator.d.ts +3 -3
- package/dist/components/separator.js +12 -1
- package/dist/components/slider.cjs +33 -1
- package/dist/components/slider.d.cts +2 -2
- package/dist/components/slider.d.ts +2 -2
- package/dist/components/slider.js +29 -1
- package/dist/components/switch.cjs +21 -1
- package/dist/components/switch.d.cts +3 -3
- package/dist/components/switch.d.ts +3 -3
- package/dist/components/switch.js +18 -1
- package/dist/components/tags-input-inline.cjs +26 -1
- package/dist/components/tags-input-inline.d.cts +3 -3
- package/dist/components/tags-input-inline.d.ts +3 -3
- package/dist/components/tags-input-inline.js +23 -1
- package/dist/components/textarea.cjs +19 -1
- package/dist/components/textarea.d.cts +2 -2
- package/dist/components/textarea.js +16 -1
- package/dist/hooks/index.cjs +3 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/use-description.cjs +14 -1
- package/dist/hooks/use-description.js +12 -1
- package/dist/hooks/use-form-context.cjs +13 -1
- package/dist/hooks/use-form-context.js +11 -1
- package/dist/hooks/use-label.cjs +19 -1
- package/dist/hooks/use-label.js +16 -1
- package/dist/index.cjs +102 -1
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +35 -1
- package/dist/types/form.d.cts +1 -9
- package/dist/types/form.d.ts +1 -9
- package/dist/utils/create-panel-state-manager.cjs +40 -1
- package/dist/utils/create-panel-state-manager.js +38 -1
- package/dist/utils/for-each-schema.cjs +27 -1
- package/dist/utils/for-each-schema.js +26 -1
- package/dist/utils/get-array-item-info.cjs +20 -1
- package/dist/utils/get-array-item-info.js +19 -1
- package/dist/utils/get-default-value.cjs +22 -1
- package/dist/utils/get-default-value.js +20 -1
- package/dist/utils/has-array-item-errors.cjs +15 -1
- package/dist/utils/has-array-item-errors.js +14 -1
- package/dist/utils/has-error.cjs +12 -1
- package/dist/utils/has-error.js +10 -1
- package/dist/utils/index.cjs +10 -1
- package/dist/utils/index.js +10 -1
- package/dist/utils/resolve-responsive-space.cjs +131 -1
- package/dist/utils/resolve-responsive-space.js +123 -1
- package/dist/utils/transform-schema.cjs +45 -1
- package/dist/utils/transform-schema.js +43 -1
- package/dist/utils/use-array-item-editor.cjs +3 -1
- package/dist/utils/use-array-item-editor.js +1 -1
- package/dist/utils/validate-array-item-fields.cjs +22 -1
- package/dist/utils/validate-array-item-fields.js +22 -1
- package/package.json +5 -5
- package/dist/components/file-upload-inline.cjs +0 -3
- package/dist/components/file-upload-inline.d.cts +0 -12
- package/dist/components/file-upload-inline.d.ts +0 -12
- package/dist/components/file-upload-inline.js +0 -3
|
@@ -1 +1,131 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
//#region src/utils/resolve-responsive-space.ts
|
|
3
|
+
/**
|
|
4
|
+
* Density-based space mapping
|
|
5
|
+
* Maps density levels to Tailwind space utilities
|
|
6
|
+
*/
|
|
7
|
+
const densitySpaceMap = {
|
|
8
|
+
compact: "sm",
|
|
9
|
+
normal: "md",
|
|
10
|
+
comfortable: "lg"
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Space to Tailwind space-y class mapping
|
|
14
|
+
* Converts space values to actual Tailwind utilities
|
|
15
|
+
*/
|
|
16
|
+
const spaceClassMap = {
|
|
17
|
+
sm: "space-y-3",
|
|
18
|
+
md: "space-y-4",
|
|
19
|
+
lg: "space-y-6"
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Space to Tailwind gap class mapping
|
|
23
|
+
* Converts space values to gap utilities for grid/flex containers
|
|
24
|
+
*/
|
|
25
|
+
const gapClassMap = {
|
|
26
|
+
sm: "gap-y-3",
|
|
27
|
+
md: "gap-y-4",
|
|
28
|
+
lg: "gap-y-6"
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Responsive breakpoint classes for responsive density mode
|
|
32
|
+
* - Mobile (default): compact (space-y-3)
|
|
33
|
+
* - Tablet (md:): normal (space-y-4)
|
|
34
|
+
* - Desktop (lg:): comfortable (space-y-6)
|
|
35
|
+
*/
|
|
36
|
+
const autoResponsiveSpaceClasses = "space-y-3 md:space-y-4 lg:space-y-6";
|
|
37
|
+
/**
|
|
38
|
+
* Responsive breakpoint classes for responsive density mode using gap
|
|
39
|
+
* - Mobile (default): compact (gap-y-3)
|
|
40
|
+
* - Tablet (md:): normal (gap-y-4)
|
|
41
|
+
* - Desktop (lg:): comfortable (gap-y-6)
|
|
42
|
+
*/
|
|
43
|
+
const autoResponsiveGapClasses = "gap-y-3 md:gap-y-4 lg:gap-y-6";
|
|
44
|
+
/**
|
|
45
|
+
* Checks if density is responsive mode
|
|
46
|
+
*
|
|
47
|
+
* @param density - Density value
|
|
48
|
+
* @returns true if density is 'responsive'
|
|
49
|
+
*/
|
|
50
|
+
function isResponsiveDensity(density) {
|
|
51
|
+
return density === "responsive";
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolves responsive space value from FormSpace configuration
|
|
55
|
+
* Priority:
|
|
56
|
+
* 1. If responsive is set → use it (ignore density)
|
|
57
|
+
* 2. If density is 'responsive' → return undefined (handled separately with responsive classes)
|
|
58
|
+
* 3. If only other density is set → use density-based mapping
|
|
59
|
+
* 4. Default to undefined (responsive mode)
|
|
60
|
+
*
|
|
61
|
+
* @param formSpace - FormSpace configuration
|
|
62
|
+
* @returns Space value ('sm' | 'md' | 'lg') or undefined for responsive mode
|
|
63
|
+
*/
|
|
64
|
+
function resolveResponsiveSpace(formSpace) {
|
|
65
|
+
if (!formSpace) return;
|
|
66
|
+
if (formSpace.responsive) return formSpace.responsive.desktop || formSpace.responsive.tablet || formSpace.responsive.mobile || "lg";
|
|
67
|
+
if (isResponsiveDensity(formSpace.density)) return;
|
|
68
|
+
if (formSpace.density && !isResponsiveDensity(formSpace.density)) return densitySpaceMap[formSpace.density];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gets the Tailwind class for a given space value
|
|
72
|
+
*
|
|
73
|
+
* @param space - Space value
|
|
74
|
+
* @returns Tailwind utility class
|
|
75
|
+
*/
|
|
76
|
+
function getSpaceClass(space) {
|
|
77
|
+
return spaceClassMap[space];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolves responsive space and returns the Tailwind class(es)
|
|
81
|
+
* For responsive density, returns responsive breakpoint classes
|
|
82
|
+
* For fixed density, returns single space class
|
|
83
|
+
*
|
|
84
|
+
* @param formSpace - FormSpace configuration
|
|
85
|
+
* @returns Tailwind utility class(es)
|
|
86
|
+
*/
|
|
87
|
+
function resolveResponsiveSpaceClass(formSpace) {
|
|
88
|
+
if (!formSpace || isResponsiveDensity(formSpace.density)) return autoResponsiveSpaceClasses;
|
|
89
|
+
if (formSpace.responsive && !isResponsiveDensity(formSpace.density)) {
|
|
90
|
+
const space$1 = resolveResponsiveSpace(formSpace);
|
|
91
|
+
return space$1 ? getSpaceClass(space$1) : autoResponsiveSpaceClasses;
|
|
92
|
+
}
|
|
93
|
+
const space = resolveResponsiveSpace(formSpace);
|
|
94
|
+
return space ? getSpaceClass(space) : autoResponsiveSpaceClasses;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Gets the Tailwind gap class for a given space value
|
|
98
|
+
*
|
|
99
|
+
* @param space - Space value
|
|
100
|
+
* @returns Tailwind utility gap class
|
|
101
|
+
*/
|
|
102
|
+
function getGapClass(space) {
|
|
103
|
+
return gapClassMap[space];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Resolves responsive space and returns the Tailwind gap class(es)
|
|
107
|
+
* For responsive density, returns responsive breakpoint classes
|
|
108
|
+
* For fixed density, returns single gap class
|
|
109
|
+
*
|
|
110
|
+
* @param formSpace - FormSpace configuration
|
|
111
|
+
* @returns Tailwind utility gap class(es)
|
|
112
|
+
*/
|
|
113
|
+
function resolveResponsiveGapClass(formSpace) {
|
|
114
|
+
if (!formSpace || isResponsiveDensity(formSpace.density)) return autoResponsiveGapClasses;
|
|
115
|
+
if (formSpace.responsive && !isResponsiveDensity(formSpace.density)) {
|
|
116
|
+
const space$1 = resolveResponsiveSpace(formSpace);
|
|
117
|
+
return space$1 ? getGapClass(space$1) : autoResponsiveGapClasses;
|
|
118
|
+
}
|
|
119
|
+
const space = resolveResponsiveSpace(formSpace);
|
|
120
|
+
return space ? getGapClass(space) : autoResponsiveGapClasses;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
//#endregion
|
|
124
|
+
exports.autoResponsiveGapClasses = autoResponsiveGapClasses;
|
|
125
|
+
exports.autoResponsiveSpaceClasses = autoResponsiveSpaceClasses;
|
|
126
|
+
exports.getGapClass = getGapClass;
|
|
127
|
+
exports.getSpaceClass = getSpaceClass;
|
|
128
|
+
exports.isResponsiveDensity = isResponsiveDensity;
|
|
129
|
+
exports.resolveResponsiveGapClass = resolveResponsiveGapClass;
|
|
130
|
+
exports.resolveResponsiveSpace = resolveResponsiveSpace;
|
|
131
|
+
exports.resolveResponsiveSpaceClass = resolveResponsiveSpaceClass;
|
|
@@ -1 +1,123 @@
|
|
|
1
|
-
|
|
1
|
+
//#region src/utils/resolve-responsive-space.ts
|
|
2
|
+
/**
|
|
3
|
+
* Density-based space mapping
|
|
4
|
+
* Maps density levels to Tailwind space utilities
|
|
5
|
+
*/
|
|
6
|
+
const densitySpaceMap = {
|
|
7
|
+
compact: "sm",
|
|
8
|
+
normal: "md",
|
|
9
|
+
comfortable: "lg"
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Space to Tailwind space-y class mapping
|
|
13
|
+
* Converts space values to actual Tailwind utilities
|
|
14
|
+
*/
|
|
15
|
+
const spaceClassMap = {
|
|
16
|
+
sm: "space-y-3",
|
|
17
|
+
md: "space-y-4",
|
|
18
|
+
lg: "space-y-6"
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Space to Tailwind gap class mapping
|
|
22
|
+
* Converts space values to gap utilities for grid/flex containers
|
|
23
|
+
*/
|
|
24
|
+
const gapClassMap = {
|
|
25
|
+
sm: "gap-y-3",
|
|
26
|
+
md: "gap-y-4",
|
|
27
|
+
lg: "gap-y-6"
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Responsive breakpoint classes for responsive density mode
|
|
31
|
+
* - Mobile (default): compact (space-y-3)
|
|
32
|
+
* - Tablet (md:): normal (space-y-4)
|
|
33
|
+
* - Desktop (lg:): comfortable (space-y-6)
|
|
34
|
+
*/
|
|
35
|
+
const autoResponsiveSpaceClasses = "space-y-3 md:space-y-4 lg:space-y-6";
|
|
36
|
+
/**
|
|
37
|
+
* Responsive breakpoint classes for responsive density mode using gap
|
|
38
|
+
* - Mobile (default): compact (gap-y-3)
|
|
39
|
+
* - Tablet (md:): normal (gap-y-4)
|
|
40
|
+
* - Desktop (lg:): comfortable (gap-y-6)
|
|
41
|
+
*/
|
|
42
|
+
const autoResponsiveGapClasses = "gap-y-3 md:gap-y-4 lg:gap-y-6";
|
|
43
|
+
/**
|
|
44
|
+
* Checks if density is responsive mode
|
|
45
|
+
*
|
|
46
|
+
* @param density - Density value
|
|
47
|
+
* @returns true if density is 'responsive'
|
|
48
|
+
*/
|
|
49
|
+
function isResponsiveDensity(density) {
|
|
50
|
+
return density === "responsive";
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolves responsive space value from FormSpace configuration
|
|
54
|
+
* Priority:
|
|
55
|
+
* 1. If responsive is set → use it (ignore density)
|
|
56
|
+
* 2. If density is 'responsive' → return undefined (handled separately with responsive classes)
|
|
57
|
+
* 3. If only other density is set → use density-based mapping
|
|
58
|
+
* 4. Default to undefined (responsive mode)
|
|
59
|
+
*
|
|
60
|
+
* @param formSpace - FormSpace configuration
|
|
61
|
+
* @returns Space value ('sm' | 'md' | 'lg') or undefined for responsive mode
|
|
62
|
+
*/
|
|
63
|
+
function resolveResponsiveSpace(formSpace) {
|
|
64
|
+
if (!formSpace) return;
|
|
65
|
+
if (formSpace.responsive) return formSpace.responsive.desktop || formSpace.responsive.tablet || formSpace.responsive.mobile || "lg";
|
|
66
|
+
if (isResponsiveDensity(formSpace.density)) return;
|
|
67
|
+
if (formSpace.density && !isResponsiveDensity(formSpace.density)) return densitySpaceMap[formSpace.density];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Gets the Tailwind class for a given space value
|
|
71
|
+
*
|
|
72
|
+
* @param space - Space value
|
|
73
|
+
* @returns Tailwind utility class
|
|
74
|
+
*/
|
|
75
|
+
function getSpaceClass(space) {
|
|
76
|
+
return spaceClassMap[space];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolves responsive space and returns the Tailwind class(es)
|
|
80
|
+
* For responsive density, returns responsive breakpoint classes
|
|
81
|
+
* For fixed density, returns single space class
|
|
82
|
+
*
|
|
83
|
+
* @param formSpace - FormSpace configuration
|
|
84
|
+
* @returns Tailwind utility class(es)
|
|
85
|
+
*/
|
|
86
|
+
function resolveResponsiveSpaceClass(formSpace) {
|
|
87
|
+
if (!formSpace || isResponsiveDensity(formSpace.density)) return autoResponsiveSpaceClasses;
|
|
88
|
+
if (formSpace.responsive && !isResponsiveDensity(formSpace.density)) {
|
|
89
|
+
const space$1 = resolveResponsiveSpace(formSpace);
|
|
90
|
+
return space$1 ? getSpaceClass(space$1) : autoResponsiveSpaceClasses;
|
|
91
|
+
}
|
|
92
|
+
const space = resolveResponsiveSpace(formSpace);
|
|
93
|
+
return space ? getSpaceClass(space) : autoResponsiveSpaceClasses;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets the Tailwind gap class for a given space value
|
|
97
|
+
*
|
|
98
|
+
* @param space - Space value
|
|
99
|
+
* @returns Tailwind utility gap class
|
|
100
|
+
*/
|
|
101
|
+
function getGapClass(space) {
|
|
102
|
+
return gapClassMap[space];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolves responsive space and returns the Tailwind gap class(es)
|
|
106
|
+
* For responsive density, returns responsive breakpoint classes
|
|
107
|
+
* For fixed density, returns single gap class
|
|
108
|
+
*
|
|
109
|
+
* @param formSpace - FormSpace configuration
|
|
110
|
+
* @returns Tailwind utility gap class(es)
|
|
111
|
+
*/
|
|
112
|
+
function resolveResponsiveGapClass(formSpace) {
|
|
113
|
+
if (!formSpace || isResponsiveDensity(formSpace.density)) return autoResponsiveGapClasses;
|
|
114
|
+
if (formSpace.responsive && !isResponsiveDensity(formSpace.density)) {
|
|
115
|
+
const space$1 = resolveResponsiveSpace(formSpace);
|
|
116
|
+
return space$1 ? getGapClass(space$1) : autoResponsiveGapClasses;
|
|
117
|
+
}
|
|
118
|
+
const space = resolveResponsiveSpace(formSpace);
|
|
119
|
+
return space ? getGapClass(space) : autoResponsiveGapClasses;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
//#endregion
|
|
123
|
+
export { autoResponsiveGapClasses, autoResponsiveSpaceClasses, getGapClass, getSpaceClass, isResponsiveDensity, resolveResponsiveGapClass, resolveResponsiveSpace, resolveResponsiveSpaceClass };
|
|
@@ -1 +1,45 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let json_schema_traverse = require("json-schema-traverse");
|
|
3
|
+
json_schema_traverse = require_rolldown_runtime.__toESM(json_schema_traverse);
|
|
4
|
+
|
|
5
|
+
//#region src/utils/transform-schema.ts
|
|
6
|
+
const inputSchemaMap = {
|
|
7
|
+
string: {
|
|
8
|
+
"x-component": "Input",
|
|
9
|
+
"x-decorator": "FormItem"
|
|
10
|
+
},
|
|
11
|
+
number: {
|
|
12
|
+
"x-component": "NumberInput",
|
|
13
|
+
"x-decorator": "FormItem"
|
|
14
|
+
},
|
|
15
|
+
integer: {
|
|
16
|
+
"x-component": "NumberInput",
|
|
17
|
+
"x-decorator": "FormItem"
|
|
18
|
+
},
|
|
19
|
+
boolean: {
|
|
20
|
+
"x-component": "Checkbox",
|
|
21
|
+
"x-decorator": "FormItem"
|
|
22
|
+
},
|
|
23
|
+
array: {
|
|
24
|
+
"x-component": "ArrayCards",
|
|
25
|
+
"x-decorator": "FormItem"
|
|
26
|
+
},
|
|
27
|
+
object: { "x-component": "ObjectContainer" }
|
|
28
|
+
};
|
|
29
|
+
function transformSchema(schema) {
|
|
30
|
+
(0, json_schema_traverse.default)(schema, {
|
|
31
|
+
allKeys: true,
|
|
32
|
+
cb: (currentSchema) => {
|
|
33
|
+
const { type } = currentSchema;
|
|
34
|
+
if (typeof type === "string" && type in inputSchemaMap) {
|
|
35
|
+
const mapping = inputSchemaMap[type];
|
|
36
|
+
if (currentSchema["x-component"] == null) currentSchema["x-component"] = mapping["x-component"];
|
|
37
|
+
if (!["Hidden"].includes(currentSchema["x-component"])) currentSchema["x-decorator"] = mapping["x-decorator"];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return schema;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
exports.transformSchema = transformSchema;
|
|
@@ -1 +1,43 @@
|
|
|
1
|
-
import
|
|
1
|
+
import traverse from "json-schema-traverse";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/transform-schema.ts
|
|
4
|
+
const inputSchemaMap = {
|
|
5
|
+
string: {
|
|
6
|
+
"x-component": "Input",
|
|
7
|
+
"x-decorator": "FormItem"
|
|
8
|
+
},
|
|
9
|
+
number: {
|
|
10
|
+
"x-component": "NumberInput",
|
|
11
|
+
"x-decorator": "FormItem"
|
|
12
|
+
},
|
|
13
|
+
integer: {
|
|
14
|
+
"x-component": "NumberInput",
|
|
15
|
+
"x-decorator": "FormItem"
|
|
16
|
+
},
|
|
17
|
+
boolean: {
|
|
18
|
+
"x-component": "Checkbox",
|
|
19
|
+
"x-decorator": "FormItem"
|
|
20
|
+
},
|
|
21
|
+
array: {
|
|
22
|
+
"x-component": "ArrayCards",
|
|
23
|
+
"x-decorator": "FormItem"
|
|
24
|
+
},
|
|
25
|
+
object: { "x-component": "ObjectContainer" }
|
|
26
|
+
};
|
|
27
|
+
function transformSchema(schema) {
|
|
28
|
+
traverse(schema, {
|
|
29
|
+
allKeys: true,
|
|
30
|
+
cb: (currentSchema) => {
|
|
31
|
+
const { type } = currentSchema;
|
|
32
|
+
if (typeof type === "string" && type in inputSchemaMap) {
|
|
33
|
+
const mapping = inputSchemaMap[type];
|
|
34
|
+
if (currentSchema["x-component"] == null) currentSchema["x-component"] = mapping["x-component"];
|
|
35
|
+
if (!["Hidden"].includes(currentSchema["x-component"])) currentSchema["x-decorator"] = mapping["x-decorator"];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return schema;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
export { transformSchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"react";
|
|
1
|
+
import "react";
|
|
@@ -1 +1,22 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_has_error = require('./has-error.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/utils/validate-array-item-fields.ts
|
|
4
|
+
/**
|
|
5
|
+
* Validates all child fields of a specific array item asynchronously.
|
|
6
|
+
* @param form - The Formily form instance
|
|
7
|
+
* @param arrayField - The array field containing the item
|
|
8
|
+
* @param index - The index of the array item to validate
|
|
9
|
+
* @throws Error if any field has validation errors
|
|
10
|
+
*/
|
|
11
|
+
async function validateArrayItemFields(arrayField, index) {
|
|
12
|
+
const { form } = arrayField;
|
|
13
|
+
const itemPathPattern = `${arrayField.address.toString()}.${index}.*`;
|
|
14
|
+
const childFields = form.query(itemPathPattern).map((field) => field);
|
|
15
|
+
const validations = [];
|
|
16
|
+
for (const field of childFields) if ("validate" in field) validations.push(field.validate());
|
|
17
|
+
await Promise.all(validations);
|
|
18
|
+
if (require_has_error.fieldsHasError(childFields)) throw new Error("Validation failed for array item fields");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.validateArrayItemFields = validateArrayItemFields;
|
|
@@ -1 +1,22 @@
|
|
|
1
|
-
import{fieldsHasError
|
|
1
|
+
import { fieldsHasError } from "./has-error.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/validate-array-item-fields.ts
|
|
4
|
+
/**
|
|
5
|
+
* Validates all child fields of a specific array item asynchronously.
|
|
6
|
+
* @param form - The Formily form instance
|
|
7
|
+
* @param arrayField - The array field containing the item
|
|
8
|
+
* @param index - The index of the array item to validate
|
|
9
|
+
* @throws Error if any field has validation errors
|
|
10
|
+
*/
|
|
11
|
+
async function validateArrayItemFields(arrayField, index) {
|
|
12
|
+
const { form } = arrayField;
|
|
13
|
+
const itemPathPattern = `${arrayField.address.toString()}.${index}.*`;
|
|
14
|
+
const childFields = form.query(itemPathPattern).map((field) => field);
|
|
15
|
+
const validations = [];
|
|
16
|
+
for (const field of childFields) if ("validate" in field) validations.push(field.validate());
|
|
17
|
+
await Promise.all(validations);
|
|
18
|
+
if (fieldsHasError(childFields)) throw new Error("Validation failed for array item fields");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { validateArrayItemFields };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixpilot/formily-shadcn",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.8.1",
|
|
5
5
|
"description": "Formily integration for shadcn/ui components",
|
|
6
6
|
"author": "m.doaie <m.doaie@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"json-schema-traverse": "^1.0.0",
|
|
40
40
|
"lucide-react": "^0.554.0",
|
|
41
41
|
"pretty-bytes": "^7.1.0",
|
|
42
|
-
"@pixpilot/shadcn": "0.1
|
|
43
|
-
"@pixpilot/shadcn
|
|
42
|
+
"@pixpilot/shadcn-ui": "0.4.1",
|
|
43
|
+
"@pixpilot/shadcn": "0.3.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@storybook/react": "^10.0.8",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"@internal/eslint-config": "0.3.0",
|
|
57
57
|
"@internal/prettier-config": "0.0.1",
|
|
58
58
|
"@internal/tsconfig": "0.1.0",
|
|
59
|
-
"@internal/
|
|
60
|
-
"@internal/
|
|
59
|
+
"@internal/vitest-config": "0.1.0",
|
|
60
|
+
"@internal/tsdown-config": "0.1.0"
|
|
61
61
|
},
|
|
62
62
|
"prettier": "@internal/prettier-config",
|
|
63
63
|
"scripts": {
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`@pixpilot/shadcn-ui`);t=e.__toESM(t);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`);i=e.__toESM(i);let a=require(`pretty-bytes`);a=e.__toESM(a);const o=2097152,s=e=>{let{onFilesReject:o,maxSize:s=2097152,onFileValidate:c}=e,l=(0,n.useField)(),u=r.default.useCallback(e=>{o?.(e);let t=e.filter(e=>e.message.startsWith(`Maximum`)),n=e.filter(e=>e.message.startsWith(`File too large`)),r=e.filter(e=>!n.includes(e)&&!t.includes(e)),i=[];if(t.length>0&&i.push(t[0].message),n.length>0){let e=n.map(e=>`${e.file.name} (${(0,a.default)(e.file.size)})`).join(`
|
|
2
|
-
`);i.push(`Files exceed ${(0,a.default)(s)} limit:\n${e}`)}r.length>0&&r.forEach(e=>{i.push(`${e.message}: ${e.file.name}`)}),l.setFeedback({type:`warning`,messages:[i.join(`
|
|
3
|
-
`)]})},[l,s,o]),d=r.default.useCallback(e=>(l.setFeedback({type:`warning`,messages:[]}),c?.(e)),[l,c]);return(0,i.jsx)(t.FileUploadInline,{...e,maxSize:s,onFilesReject:u,onFileValidate:d})},c=(0,n.connect)(s,(0,n.mapProps)((e,t)=>({...e,value:t.value??null})));exports.FileUploadInline=c;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FileUploadInlineProps } from "@pixpilot/shadcn-ui";
|
|
2
|
-
import React from "react";
|
|
3
|
-
|
|
4
|
-
//#region src/components/file-upload-inline.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Formily-connected FileUploadInline component
|
|
8
|
-
* Automatically connects shadcn FileUploadInline to Formily field state
|
|
9
|
-
*/
|
|
10
|
-
declare const FileUploadInline: React.ForwardRefExoticComponent<Omit<Partial<FileUploadInlineProps>, "ref"> & React.RefAttributes<unknown>>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { FileUploadInline };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FileUploadInlineProps } from "@pixpilot/shadcn-ui";
|
|
2
|
-
import React from "react";
|
|
3
|
-
|
|
4
|
-
//#region src/components/file-upload-inline.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Formily-connected FileUploadInline component
|
|
8
|
-
* Automatically connects shadcn FileUploadInline to Formily field state
|
|
9
|
-
*/
|
|
10
|
-
declare const FileUploadInline$1: React.ForwardRefExoticComponent<Omit<Partial<FileUploadInlineProps>, "ref"> & React.RefAttributes<unknown>>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { FileUploadInline$1 as FileUploadInline };
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{FileUploadInline as e}from"@pixpilot/shadcn-ui";import{connect as t,mapProps as n,useField as r}from"@formily/react";import i from"react";import{jsx as a}from"react/jsx-runtime";import o from"pretty-bytes";const s=t(t=>{let{onFilesReject:n,maxSize:s=2097152,onFileValidate:c}=t,l=r(),u=i.useCallback(e=>{n?.(e);let t=e.filter(e=>e.message.startsWith(`Maximum`)),r=e.filter(e=>e.message.startsWith(`File too large`)),i=e.filter(e=>!r.includes(e)&&!t.includes(e)),a=[];if(t.length>0&&a.push(t[0].message),r.length>0){let e=r.map(e=>`${e.file.name} (${o(e.file.size)})`).join(`
|
|
2
|
-
`);a.push(`Files exceed ${o(s)} limit:\n${e}`)}i.length>0&&i.forEach(e=>{a.push(`${e.message}: ${e.file.name}`)}),l.setFeedback({type:`warning`,messages:[a.join(`
|
|
3
|
-
`)]})},[l,s,n]),d=i.useCallback(e=>(l.setFeedback({type:`warning`,messages:[]}),c?.(e)),[l,c]);return a(e,{...t,maxSize:s,onFilesReject:u,onFileValidate:d})},n((e,t)=>({...e,value:t.value??null})));export{s as FileUploadInline};
|