@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.
Files changed (217) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +25 -1
  2. package/dist/_virtual/rolldown_runtime.js +24 -1
  3. package/dist/components/array-base/array-base.cjs +59 -1
  4. package/dist/components/array-base/array-base.js +55 -1
  5. package/dist/components/array-base/array-context.cjs +28 -1
  6. package/dist/components/array-base/array-context.js +22 -1
  7. package/dist/components/array-base/component-context.cjs +28 -1
  8. package/dist/components/array-base/component-context.js +22 -1
  9. package/dist/components/array-base/components/addition.cjs +51 -1
  10. package/dist/components/array-base/components/addition.d.cts +1 -1
  11. package/dist/components/array-base/components/addition.d.ts +1 -1
  12. package/dist/components/array-base/components/addition.js +45 -1
  13. package/dist/components/array-base/components/array-copy.cjs +49 -1
  14. package/dist/components/array-base/components/array-copy.js +42 -1
  15. package/dist/components/array-base/components/array-index.cjs +15 -1
  16. package/dist/components/array-base/components/array-index.js +13 -1
  17. package/dist/components/array-base/components/array-item-label.cjs +22 -1
  18. package/dist/components/array-base/components/array-item-label.js +19 -1
  19. package/dist/components/array-base/components/components.cjs +30 -1
  20. package/dist/components/array-base/components/components.js +29 -1
  21. package/dist/components/array-base/components/edit.cjs +42 -1
  22. package/dist/components/array-base/components/edit.js +36 -1
  23. package/dist/components/array-base/components/empty.cjs +19 -1
  24. package/dist/components/array-base/components/empty.js +16 -1
  25. package/dist/components/array-base/components/get-array-components.cjs +88 -1
  26. package/dist/components/array-base/components/get-array-components.js +84 -1
  27. package/dist/components/array-base/components/move-down.cjs +47 -1
  28. package/dist/components/array-base/components/move-down.js +41 -1
  29. package/dist/components/array-base/components/move-up.cjs +47 -1
  30. package/dist/components/array-base/components/move-up.js +41 -1
  31. package/dist/components/array-base/components/remove.cjs +46 -1
  32. package/dist/components/array-base/components/remove.js +40 -1
  33. package/dist/components/array-base/components/title.cjs +17 -1
  34. package/dist/components/array-base/components/title.js +14 -1
  35. package/dist/components/array-base/components/use-array-components-registry.cjs +56 -1
  36. package/dist/components/array-base/components/use-array-components-registry.js +52 -1
  37. package/dist/components/array-base/constants/index.cjs +17 -1
  38. package/dist/components/array-base/constants/index.js +15 -1
  39. package/dist/components/array-base/index.cjs +2 -1
  40. package/dist/components/array-base/index.js +2 -1
  41. package/dist/components/array-base/utils/filter-and-sort-components.cjs +34 -1
  42. package/dist/components/array-base/utils/filter-and-sort-components.js +34 -1
  43. package/dist/components/array-base/utils/is-array-component.cjs +65 -1
  44. package/dist/components/array-base/utils/is-array-component.js +56 -1
  45. package/dist/components/array-cards/array-cards.cjs +64 -1
  46. package/dist/components/array-cards/array-cards.js +60 -1
  47. package/dist/components/array-cards/index.cjs +1 -1
  48. package/dist/components/array-cards/index.js +1 -1
  49. package/dist/components/array-cards/item.cjs +64 -1
  50. package/dist/components/array-cards/item.js +60 -1
  51. package/dist/components/array-collapse/array-collapse.cjs +96 -1
  52. package/dist/components/array-collapse/array-collapse.js +92 -1
  53. package/dist/components/array-collapse/index.cjs +1 -1
  54. package/dist/components/array-collapse/index.js +1 -1
  55. package/dist/components/array-collapse/item.cjs +84 -1
  56. package/dist/components/array-collapse/item.js +78 -1
  57. package/dist/components/array-common/array-items-list.cjs +43 -1
  58. package/dist/components/array-common/array-items-list.js +39 -1
  59. package/dist/components/array-common/create-active-item-manager.cjs +29 -1
  60. package/dist/components/array-common/create-active-item-manager.js +27 -1
  61. package/dist/components/array-common/index.cjs +5 -1
  62. package/dist/components/array-common/index.js +5 -1
  63. package/dist/components/array-common/item-wrapper.cjs +26 -1
  64. package/dist/components/array-common/item-wrapper.js +21 -1
  65. package/dist/components/array-common/list-item.cjs +53 -1
  66. package/dist/components/array-common/list-item.js +48 -1
  67. package/dist/components/array-common/use-array-editor.cjs +47 -1
  68. package/dist/components/array-common/use-array-editor.js +44 -1
  69. package/dist/components/array-dialog/array-dialog.cjs +66 -1
  70. package/dist/components/array-dialog/array-dialog.js +62 -1
  71. package/dist/components/array-dialog/edit-dialog.cjs +61 -1
  72. package/dist/components/array-dialog/edit-dialog.js +57 -1
  73. package/dist/components/array-dialog/index.cjs +1 -1
  74. package/dist/components/array-dialog/index.js +1 -1
  75. package/dist/components/array-popover/array-popover.cjs +58 -1
  76. package/dist/components/array-popover/array-popover.js +53 -1
  77. package/dist/components/array-popover/index.cjs +1 -1
  78. package/dist/components/array-popover/index.js +1 -1
  79. package/dist/components/array-popover/popover.cjs +75 -1
  80. package/dist/components/array-popover/popover.js +71 -1
  81. package/dist/components/checkbox.cjs +26 -1
  82. package/dist/components/checkbox.js +23 -1
  83. package/dist/components/column.cjs +39 -1
  84. package/dist/components/column.js +35 -1
  85. package/dist/components/combobox.cjs +14 -1
  86. package/dist/components/combobox.js +11 -1
  87. package/dist/components/context/context.cjs +7 -1
  88. package/dist/components/context/context.js +7 -1
  89. package/dist/components/context/form-context.cjs +9 -1
  90. package/dist/components/context/form-context.d.cts +12 -6
  91. package/dist/components/context/form-context.d.ts +12 -6
  92. package/dist/components/context/form-context.js +7 -1
  93. package/dist/components/context/index.cjs +2 -1
  94. package/dist/components/context/index.d.cts +1 -1
  95. package/dist/components/context/index.d.ts +1 -1
  96. package/dist/components/context/index.js +2 -1
  97. package/dist/components/date-picker.cjs +23 -1
  98. package/dist/components/date-picker.js +19 -1
  99. package/dist/components/file-upload/file-upload-inline.cjs +35 -0
  100. package/dist/components/file-upload/file-upload-inline.d.cts +20 -0
  101. package/dist/components/file-upload/file-upload-inline.d.ts +20 -0
  102. package/dist/components/file-upload/file-upload-inline.js +30 -0
  103. package/dist/components/file-upload/file-upload.cjs +35 -0
  104. package/dist/components/file-upload/file-upload.d.cts +20 -0
  105. package/dist/components/file-upload/file-upload.d.ts +20 -0
  106. package/dist/components/file-upload/file-upload.js +30 -0
  107. package/dist/components/file-upload/index.cjs +2 -0
  108. package/dist/components/file-upload/index.d.cts +2 -0
  109. package/dist/components/file-upload/index.d.ts +2 -0
  110. package/dist/components/file-upload/index.js +2 -0
  111. package/dist/components/file-upload/use-file-upload-feedback.cjs +59 -0
  112. package/dist/components/file-upload/use-file-upload-feedback.js +53 -0
  113. package/dist/components/form-grid.cjs +19 -1
  114. package/dist/components/form-grid.js +15 -1
  115. package/dist/components/form-item.cjs +118 -3
  116. package/dist/components/form-item.js +112 -3
  117. package/dist/components/form-items-container.cjs +28 -1
  118. package/dist/components/form-items-container.js +24 -1
  119. package/dist/components/form.cjs +56 -1
  120. package/dist/components/form.d.cts +1 -1
  121. package/dist/components/form.d.ts +1 -1
  122. package/dist/components/form.js +51 -1
  123. package/dist/components/hidden.cjs +26 -1
  124. package/dist/components/hidden.js +23 -1
  125. package/dist/components/icon-picker.cjs +37 -1
  126. package/dist/components/icon-picker.d.cts +2 -2
  127. package/dist/components/icon-picker.d.ts +2 -2
  128. package/dist/components/icon-picker.js +33 -1
  129. package/dist/components/input.cjs +20 -1
  130. package/dist/components/input.js +17 -1
  131. package/dist/components/json-schema-form-renderer.cjs +30 -1
  132. package/dist/components/json-schema-form-renderer.d.cts +3 -0
  133. package/dist/components/json-schema-form-renderer.d.ts +3 -0
  134. package/dist/components/json-schema-form-renderer.js +26 -1
  135. package/dist/components/number-input.cjs +19 -1
  136. package/dist/components/number-input.d.cts +2 -2
  137. package/dist/components/number-input.js +16 -1
  138. package/dist/components/object-container.cjs +35 -1
  139. package/dist/components/object-container.js +32 -1
  140. package/dist/components/radio.cjs +40 -1
  141. package/dist/components/radio.js +35 -1
  142. package/dist/components/rich-text-editor.cjs +27 -0
  143. package/dist/components/rich-text-editor.d.cts +6 -0
  144. package/dist/components/rich-text-editor.d.ts +6 -0
  145. package/dist/components/rich-text-editor.js +23 -0
  146. package/dist/components/row.cjs +39 -1
  147. package/dist/components/row.js +35 -1
  148. package/dist/components/schema-field-extended.cjs +25 -0
  149. package/dist/components/schema-field-extended.d.cts +630 -0
  150. package/dist/components/schema-field-extended.d.ts +630 -0
  151. package/dist/components/schema-field-extended.js +23 -0
  152. package/dist/components/schema-field.cjs +61 -1
  153. package/dist/components/schema-field.d.cts +290 -288
  154. package/dist/components/schema-field.d.ts +136 -134
  155. package/dist/components/schema-field.js +57 -1
  156. package/dist/components/select.cjs +11 -1
  157. package/dist/components/select.js +8 -1
  158. package/dist/components/separator.cjs +15 -1
  159. package/dist/components/separator.d.cts +3 -3
  160. package/dist/components/separator.d.ts +3 -3
  161. package/dist/components/separator.js +12 -1
  162. package/dist/components/slider.cjs +33 -1
  163. package/dist/components/slider.d.cts +2 -2
  164. package/dist/components/slider.d.ts +2 -2
  165. package/dist/components/slider.js +29 -1
  166. package/dist/components/switch.cjs +21 -1
  167. package/dist/components/switch.d.cts +3 -3
  168. package/dist/components/switch.d.ts +3 -3
  169. package/dist/components/switch.js +18 -1
  170. package/dist/components/tags-input-inline.cjs +26 -1
  171. package/dist/components/tags-input-inline.d.cts +3 -3
  172. package/dist/components/tags-input-inline.d.ts +3 -3
  173. package/dist/components/tags-input-inline.js +23 -1
  174. package/dist/components/textarea.cjs +19 -1
  175. package/dist/components/textarea.d.cts +2 -2
  176. package/dist/components/textarea.js +16 -1
  177. package/dist/hooks/index.cjs +3 -1
  178. package/dist/hooks/index.js +3 -1
  179. package/dist/hooks/use-description.cjs +14 -1
  180. package/dist/hooks/use-description.js +12 -1
  181. package/dist/hooks/use-form-context.cjs +13 -1
  182. package/dist/hooks/use-form-context.js +11 -1
  183. package/dist/hooks/use-label.cjs +19 -1
  184. package/dist/hooks/use-label.js +16 -1
  185. package/dist/index.cjs +102 -1
  186. package/dist/index.d.cts +7 -4
  187. package/dist/index.d.ts +7 -4
  188. package/dist/index.js +35 -1
  189. package/dist/types/form.d.cts +1 -9
  190. package/dist/types/form.d.ts +1 -9
  191. package/dist/utils/create-panel-state-manager.cjs +40 -1
  192. package/dist/utils/create-panel-state-manager.js +38 -1
  193. package/dist/utils/for-each-schema.cjs +27 -1
  194. package/dist/utils/for-each-schema.js +26 -1
  195. package/dist/utils/get-array-item-info.cjs +20 -1
  196. package/dist/utils/get-array-item-info.js +19 -1
  197. package/dist/utils/get-default-value.cjs +22 -1
  198. package/dist/utils/get-default-value.js +20 -1
  199. package/dist/utils/has-array-item-errors.cjs +15 -1
  200. package/dist/utils/has-array-item-errors.js +14 -1
  201. package/dist/utils/has-error.cjs +12 -1
  202. package/dist/utils/has-error.js +10 -1
  203. package/dist/utils/index.cjs +10 -1
  204. package/dist/utils/index.js +10 -1
  205. package/dist/utils/resolve-responsive-space.cjs +131 -1
  206. package/dist/utils/resolve-responsive-space.js +123 -1
  207. package/dist/utils/transform-schema.cjs +45 -1
  208. package/dist/utils/transform-schema.js +43 -1
  209. package/dist/utils/use-array-item-editor.cjs +3 -1
  210. package/dist/utils/use-array-item-editor.js +1 -1
  211. package/dist/utils/validate-array-item-fields.cjs +22 -1
  212. package/dist/utils/validate-array-item-fields.js +22 -1
  213. package/package.json +5 -5
  214. package/dist/components/file-upload-inline.cjs +0 -3
  215. package/dist/components/file-upload-inline.d.cts +0 -12
  216. package/dist/components/file-upload-inline.d.ts +0 -12
  217. package/dist/components/file-upload-inline.js +0 -3
@@ -1 +1,131 @@
1
- const e={compact:`sm`,normal:`md`,comfortable:`lg`},t={sm:`space-y-3`,md:`space-y-4`,lg:`space-y-6`},n={sm:`gap-y-3`,md:`gap-y-4`,lg:`gap-y-6`},r=`space-y-3 md:space-y-4 lg:space-y-6`,i=`gap-y-3 md:gap-y-4 lg:gap-y-6`;function a(e){return e===`responsive`}function o(t){if(t){if(t.responsive)return t.responsive.desktop||t.responsive.tablet||t.responsive.mobile||`lg`;if(!a(t.density)&&t.density&&!a(t.density))return e[t.density]}}function s(e){return t[e]}function c(e){if(!e||a(e.density))return r;if(e.responsive&&!a(e.density)){let t=o(e);return t?s(t):r}let t=o(e);return t?s(t):r}function l(e){return n[e]}function u(e){if(!e||a(e.density))return i;if(e.responsive&&!a(e.density)){let t=o(e);return t?l(t):i}let t=o(e);return t?l(t):i}exports.autoResponsiveGapClasses=i,exports.autoResponsiveSpaceClasses=r,exports.getGapClass=l,exports.getSpaceClass=s,exports.isResponsiveDensity=a,exports.resolveResponsiveGapClass=u,exports.resolveResponsiveSpace=o,exports.resolveResponsiveSpaceClass=c;
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
- const e={compact:`sm`,normal:`md`,comfortable:`lg`},t={sm:`space-y-3`,md:`space-y-4`,lg:`space-y-6`},n={sm:`gap-y-3`,md:`gap-y-4`,lg:`gap-y-6`},r=`space-y-3 md:space-y-4 lg:space-y-6`,i=`gap-y-3 md:gap-y-4 lg:gap-y-6`;function a(e){return e===`responsive`}function o(t){if(t){if(t.responsive)return t.responsive.desktop||t.responsive.tablet||t.responsive.mobile||`lg`;if(!a(t.density)&&t.density&&!a(t.density))return e[t.density]}}function s(e){return t[e]}function c(e){if(!e||a(e.density))return r;if(e.responsive&&!a(e.density)){let t=o(e);return t?s(t):r}let t=o(e);return t?s(t):r}function l(e){return n[e]}function u(e){if(!e||a(e.density))return i;if(e.responsive&&!a(e.density)){let t=o(e);return t?l(t):i}let t=o(e);return t?l(t):i}export{i as autoResponsiveGapClasses,r as autoResponsiveSpaceClasses,l as getGapClass,s as getSpaceClass,a as isResponsiveDensity,u as resolveResponsiveGapClass,o as resolveResponsiveSpace,c as resolveResponsiveSpaceClass};
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 e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`json-schema-traverse`);t=e.__toESM(t);const n={string:{"x-component":`Input`,"x-decorator":`FormItem`},number:{"x-component":`NumberInput`,"x-decorator":`FormItem`},integer:{"x-component":`NumberInput`,"x-decorator":`FormItem`},boolean:{"x-component":`Checkbox`,"x-decorator":`FormItem`},array:{"x-component":`ArrayCards`,"x-decorator":`FormItem`},object:{"x-component":`ObjectContainer`}};function r(e){return(0,t.default)(e,{allKeys:!0,cb:e=>{let{type:t}=e;if(typeof t==`string`&&t in n){let r=n[t];e[`x-component`]??=r[`x-component`],[`Hidden`].includes(e[`x-component`])||(e[`x-decorator`]=r[`x-decorator`])}}}),e}exports.transformSchema=r;
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 e from"json-schema-traverse";const t={string:{"x-component":`Input`,"x-decorator":`FormItem`},number:{"x-component":`NumberInput`,"x-decorator":`FormItem`},integer:{"x-component":`NumberInput`,"x-decorator":`FormItem`},boolean:{"x-component":`Checkbox`,"x-decorator":`FormItem`},array:{"x-component":`ArrayCards`,"x-decorator":`FormItem`},object:{"x-component":`ObjectContainer`}};function n(n){return e(n,{allKeys:!0,cb:e=>{let{type:n}=e;if(typeof n==`string`&&n in t){let r=t[n];e[`x-component`]??=r[`x-component`],[`Hidden`].includes(e[`x-component`])||(e[`x-decorator`]=r[`x-decorator`])}}}),n}export{n as transformSchema};
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,3 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`react`);t=e.__toESM(t);
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let react = require("react");
3
+ react = require_rolldown_runtime.__toESM(react);
@@ -1 +1 @@
1
- import"react";
1
+ import "react";
@@ -1 +1,22 @@
1
- const e=require(`./has-error.cjs`);async function t(t,n){let{form:r}=t,i=`${t.address.toString()}.${n}.*`,a=r.query(i).map(e=>e),o=[];for(let e of a)`validate`in e&&o.push(e.validate());if(await Promise.all(o),e.fieldsHasError(a))throw Error(`Validation failed for array item fields`)}exports.validateArrayItemFields=t;
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 as e}from"./has-error.js";async function t(t,n){let{form:r}=t,i=`${t.address.toString()}.${n}.*`,a=r.query(i).map(e=>e),o=[];for(let e of a)`validate`in e&&o.push(e.validate());if(await Promise.all(o),e(a))throw Error(`Validation failed for array item fields`)}export{t as validateArrayItemFields};
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.6.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.11",
43
- "@pixpilot/shadcn-ui": "0.1.0"
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/tsdown-config": "0.1.0",
60
- "@internal/vitest-config": "0.1.0"
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};