@pixpilot/formily-shadcn 1.16.0 → 1.17.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 (242) hide show
  1. package/dist/components/array-base/component-context.cjs +0 -1
  2. package/dist/components/array-base/component-context.js +1 -1
  3. package/dist/components/array-base/components/Addition.cjs +0 -1
  4. package/dist/components/array-base/components/Addition.js +0 -1
  5. package/dist/components/array-base/components/ArrayItemLabel.cjs +0 -1
  6. package/dist/components/array-base/components/ArrayItemLabel.js +0 -1
  7. package/dist/components/array-base/components/get-array-components.cjs +0 -1
  8. package/dist/components/array-base/components/get-array-components.js +0 -1
  9. package/dist/components/array-cards/ArrayCards.cjs +0 -4
  10. package/dist/components/array-cards/ArrayCards.js +0 -4
  11. package/dist/components/array-cards/Item.cjs +0 -3
  12. package/dist/components/array-cards/Item.js +0 -3
  13. package/dist/components/array-collapse/ArrayCollapse.cjs +0 -4
  14. package/dist/components/array-collapse/ArrayCollapse.js +0 -4
  15. package/dist/components/array-collapse/Item.cjs +0 -3
  16. package/dist/components/array-collapse/Item.js +0 -3
  17. package/dist/components/array-common/ArrayDragHandle.cjs +0 -2
  18. package/dist/components/array-common/ArrayDragHandle.js +0 -2
  19. package/dist/components/array-common/ArrayItemHeaderRow.cjs +0 -1
  20. package/dist/components/array-common/ArrayItemHeaderRow.js +0 -1
  21. package/dist/components/array-common/ArrayItemsList.cjs +0 -3
  22. package/dist/components/array-common/ArrayItemsList.js +0 -3
  23. package/dist/components/array-common/ItemWrapper.cjs +0 -1
  24. package/dist/components/array-common/ItemWrapper.js +0 -1
  25. package/dist/components/array-common/ListItem.cjs +0 -2
  26. package/dist/components/array-common/ListItem.js +0 -2
  27. package/dist/components/array-common/RenderBuiltInOperation.cjs +0 -1
  28. package/dist/components/array-common/RenderBuiltInOperation.js +0 -1
  29. package/dist/components/array-common/use-array-item-actions.cjs +2 -3
  30. package/dist/components/array-common/use-array-item-actions.js +0 -1
  31. package/dist/components/array-common/use-array-item-wrapper-props.cjs +0 -1
  32. package/dist/components/array-common/use-array-item-wrapper-props.js +0 -1
  33. package/dist/components/array-dialog/ArrayDialog.cjs +0 -3
  34. package/dist/components/array-dialog/ArrayDialog.js +0 -3
  35. package/dist/components/array-dialog/EditDialog.cjs +0 -1
  36. package/dist/components/array-dialog/EditDialog.js +0 -1
  37. package/dist/components/array-inline/ArrayInline.cjs +0 -4
  38. package/dist/components/array-inline/ArrayInline.js +0 -4
  39. package/dist/components/array-inline/Item.cjs +0 -2
  40. package/dist/components/array-inline/Item.js +0 -2
  41. package/dist/components/array-popover/ArrayPopover.cjs +0 -3
  42. package/dist/components/array-popover/ArrayPopover.js +0 -3
  43. package/dist/components/array-popover/Popover.cjs +0 -1
  44. package/dist/components/array-popover/Popover.js +0 -1
  45. package/dist/components/array-sortable/SortableContainer.cjs +0 -3
  46. package/dist/components/array-sortable/SortableContainer.js +0 -3
  47. package/dist/components/dialog-item/BaseDialogItem.cjs +111 -0
  48. package/dist/components/dialog-item/BaseDialogItem.d.cts +56 -0
  49. package/dist/components/dialog-item/BaseDialogItem.d.ts +56 -0
  50. package/dist/components/dialog-item/BaseDialogItem.js +106 -0
  51. package/dist/components/dialog-item/ConnectedDialogItem.cjs +16 -0
  52. package/dist/components/dialog-item/ConnectedDialogItem.d.cts +15 -0
  53. package/dist/components/dialog-item/ConnectedDialogItem.d.ts +15 -0
  54. package/dist/components/dialog-item/ConnectedDialogItem.js +14 -0
  55. package/dist/components/dialog-item/index.d.cts +2 -0
  56. package/dist/components/dialog-item/index.d.ts +2 -0
  57. package/dist/components/dialog-item/mcp.js +127 -0
  58. package/dist/components/file-upload/use-file-upload-feedback.cjs +0 -1
  59. package/dist/components/file-upload/use-file-upload-feedback.js +3 -2
  60. package/dist/components/form/Form.cjs +0 -2
  61. package/dist/components/form/Form.js +0 -2
  62. package/dist/components/form-item/BaseFormItem.cjs +0 -1
  63. package/dist/components/form-item/BaseFormItem.js +0 -1
  64. package/dist/components/form-item/ConnectedFormItem.cjs +2 -34
  65. package/dist/components/form-item/ConnectedFormItem.d.cts +4 -4
  66. package/dist/components/form-item/ConnectedFormItem.d.ts +4 -4
  67. package/dist/components/form-item/ConnectedFormItem.js +3 -34
  68. package/dist/components/form-item/map-form-item-props.cjs +50 -0
  69. package/dist/components/form-item/map-form-item-props.js +47 -0
  70. package/dist/components/form-item-container/FormItemContainer.cjs +0 -1
  71. package/dist/components/form-item-container/FormItemContainer.js +0 -1
  72. package/dist/components/icon-picker/IconPicker.cjs +0 -1
  73. package/dist/components/icon-picker/IconPicker.js +0 -1
  74. package/dist/components/json-schema-form-renderer/JsonSchemaForm.cjs +0 -1
  75. package/dist/components/json-schema-form-renderer/JsonSchemaForm.js +0 -1
  76. package/dist/components/json-schema-form-renderer/JsonSchemaFormRenderer.cjs +0 -1
  77. package/dist/components/json-schema-form-renderer/JsonSchemaFormRenderer.js +0 -1
  78. package/dist/components/object-container/ObjectContainer.cjs +0 -2
  79. package/dist/components/object-container/ObjectContainer.js +0 -2
  80. package/dist/components/overlay-common/OverlayFields.cjs +26 -0
  81. package/dist/components/overlay-common/OverlayFields.d.cts +1 -0
  82. package/dist/components/overlay-common/OverlayFields.d.ts +1 -0
  83. package/dist/components/overlay-common/OverlayFields.js +24 -0
  84. package/dist/components/overlay-common/OverlayTrigger.cjs +27 -0
  85. package/dist/components/overlay-common/OverlayTrigger.d.cts +15 -0
  86. package/dist/components/overlay-common/OverlayTrigger.d.ts +15 -0
  87. package/dist/components/overlay-common/OverlayTrigger.js +23 -0
  88. package/dist/components/overlay-common/constants.cjs +10 -0
  89. package/dist/components/overlay-common/constants.js +9 -0
  90. package/dist/components/overlay-common/index.d.cts +4 -0
  91. package/dist/components/overlay-common/index.d.ts +4 -0
  92. package/dist/components/overlay-common/is-empty-field-value.cjs +23 -0
  93. package/dist/components/overlay-common/is-empty-field-value.js +22 -0
  94. package/dist/components/overlay-common/overlay-types.d.cts +27 -0
  95. package/dist/components/overlay-common/overlay-types.d.ts +27 -0
  96. package/dist/components/overlay-common/use-overlay.cjs +108 -0
  97. package/dist/components/overlay-common/use-overlay.d.cts +1 -0
  98. package/dist/components/overlay-common/use-overlay.d.ts +1 -0
  99. package/dist/components/overlay-common/use-overlay.js +105 -0
  100. package/dist/components/popover-item/BasePopoverItem.cjs +105 -0
  101. package/dist/components/popover-item/BasePopoverItem.d.cts +57 -0
  102. package/dist/components/popover-item/BasePopoverItem.d.ts +57 -0
  103. package/dist/components/popover-item/BasePopoverItem.js +101 -0
  104. package/dist/components/popover-item/ConnectedPopoverItem.cjs +16 -0
  105. package/dist/components/popover-item/ConnectedPopoverItem.d.cts +15 -0
  106. package/dist/components/popover-item/ConnectedPopoverItem.d.ts +15 -0
  107. package/dist/components/popover-item/ConnectedPopoverItem.js +14 -0
  108. package/dist/components/popover-item/index.d.cts +2 -0
  109. package/dist/components/popover-item/index.d.ts +2 -0
  110. package/dist/components/popover-item/mcp.js +127 -0
  111. package/dist/components/radio/Radio.d.cts +2 -2
  112. package/dist/components/rich-text-editor/RichTextEditor.cjs +0 -1
  113. package/dist/components/rich-text-editor/RichTextEditor.js +0 -1
  114. package/dist/components/row/Row.d.cts +2 -2
  115. package/dist/components/schema-field/schema-field-basics.cjs +5 -26
  116. package/dist/components/schema-field/schema-field-basics.d.cts +344 -270
  117. package/dist/components/schema-field/schema-field-basics.d.ts +344 -270
  118. package/dist/components/schema-field/schema-field-basics.js +5 -26
  119. package/dist/components/schema-field/schema-field-extended.cjs +0 -4
  120. package/dist/components/schema-field/schema-field-extended.d.cts +498 -424
  121. package/dist/components/schema-field/schema-field-extended.d.ts +480 -406
  122. package/dist/components/schema-field/schema-field-extended.js +0 -4
  123. package/dist/components/schema-field/schema-field.cjs +0 -5
  124. package/dist/components/schema-field/schema-field.d.cts +431 -357
  125. package/dist/components/schema-field/schema-field.d.ts +432 -358
  126. package/dist/components/schema-field/schema-field.js +0 -5
  127. package/dist/components/toggle-group/ToggleGroup.cjs +1 -2
  128. package/dist/components/toggle-group/ToggleGroup.js +1 -1
  129. package/dist/generated/mcp-registry.js +56 -52
  130. package/dist/hooks/use-form-context.cjs +0 -1
  131. package/dist/hooks/use-form-context.js +0 -1
  132. package/dist/hooks/use-form-schema.cjs +0 -1
  133. package/dist/hooks/use-form-schema.js +0 -1
  134. package/dist/hooks/use-schema-field.cjs +5 -4
  135. package/dist/hooks/use-schema-field.js +5 -3
  136. package/dist/index.cjs +9 -39
  137. package/dist/index.d.cts +7 -1
  138. package/dist/index.d.ts +7 -1
  139. package/dist/index.js +6 -40
  140. package/dist/utils/get-default-value.cjs +1 -2
  141. package/dist/utils/get-default-value.js +1 -1
  142. package/dist/utils/has-error.cjs +1 -2
  143. package/dist/utils/has-error.js +1 -1
  144. package/dist/utils/index.d.cts +2 -1
  145. package/dist/utils/index.d.ts +2 -1
  146. package/dist/utils/resolve-responsive-space.cjs +1 -3
  147. package/dist/utils/resolve-responsive-space.js +1 -1
  148. package/dist/utils/validate-schema-shape.cjs +63 -0
  149. package/dist/utils/validate-schema-shape.d.cts +1 -0
  150. package/dist/utils/validate-schema-shape.d.ts +1 -0
  151. package/dist/utils/validate-schema-shape.js +61 -0
  152. package/package.json +7 -6
  153. package/dist/components/array-base/index.cjs +0 -3
  154. package/dist/components/array-base/index.js +0 -3
  155. package/dist/components/array-cards/index.cjs +0 -1
  156. package/dist/components/array-cards/index.js +0 -1
  157. package/dist/components/array-collapse/index.cjs +0 -1
  158. package/dist/components/array-collapse/index.js +0 -1
  159. package/dist/components/array-common/index.cjs +0 -20
  160. package/dist/components/array-common/index.js +0 -20
  161. package/dist/components/array-dialog/index.cjs +0 -1
  162. package/dist/components/array-dialog/index.js +0 -1
  163. package/dist/components/array-inline/index.cjs +0 -1
  164. package/dist/components/array-inline/index.js +0 -1
  165. package/dist/components/array-popover/index.cjs +0 -1
  166. package/dist/components/array-popover/index.js +0 -1
  167. package/dist/components/array-sortable/index.cjs +0 -3
  168. package/dist/components/array-sortable/index.js +0 -3
  169. package/dist/components/array-tags/index.cjs +0 -1
  170. package/dist/components/array-tags/index.js +0 -1
  171. package/dist/components/array-toggle-group/index.cjs +0 -1
  172. package/dist/components/array-toggle-group/index.js +0 -1
  173. package/dist/components/checkbox/index.cjs +0 -1
  174. package/dist/components/checkbox/index.js +0 -1
  175. package/dist/components/color-select/index.cjs +0 -1
  176. package/dist/components/color-select/index.js +0 -1
  177. package/dist/components/column/index.cjs +0 -1
  178. package/dist/components/column/index.js +0 -1
  179. package/dist/components/combobox/index.cjs +0 -1
  180. package/dist/components/combobox/index.js +0 -1
  181. package/dist/components/context/index.cjs +0 -1
  182. package/dist/components/context/index.js +0 -1
  183. package/dist/components/date-picker/index.cjs +0 -1
  184. package/dist/components/date-picker/index.js +0 -1
  185. package/dist/components/file-upload/index.cjs +0 -5
  186. package/dist/components/file-upload/index.js +0 -5
  187. package/dist/components/form/index.cjs +0 -1
  188. package/dist/components/form/index.js +0 -1
  189. package/dist/components/form-grid/index.cjs +0 -1
  190. package/dist/components/form-grid/index.js +0 -1
  191. package/dist/components/form-item/FormItem.cjs +0 -2
  192. package/dist/components/form-item/FormItem.js +0 -2
  193. package/dist/components/form-item/index.cjs +0 -3
  194. package/dist/components/form-item/index.js +0 -3
  195. package/dist/components/form-item-container/index.cjs +0 -1
  196. package/dist/components/form-item-container/index.js +0 -1
  197. package/dist/components/hidden/index.cjs +0 -1
  198. package/dist/components/hidden/index.js +0 -1
  199. package/dist/components/icon-picker/index.cjs +0 -1
  200. package/dist/components/icon-picker/index.js +0 -1
  201. package/dist/components/icon-toggle/index.cjs +0 -1
  202. package/dist/components/icon-toggle/index.js +0 -1
  203. package/dist/components/input/index.cjs +0 -1
  204. package/dist/components/input/index.js +0 -1
  205. package/dist/components/json-schema-form-renderer/index.cjs +0 -4
  206. package/dist/components/json-schema-form-renderer/index.js +0 -4
  207. package/dist/components/number/index.cjs +0 -1
  208. package/dist/components/number/index.js +0 -1
  209. package/dist/components/object-container/index.cjs +0 -1
  210. package/dist/components/object-container/index.js +0 -1
  211. package/dist/components/radio/index.cjs +0 -1
  212. package/dist/components/radio/index.js +0 -1
  213. package/dist/components/rating/index.cjs +0 -1
  214. package/dist/components/rating/index.js +0 -1
  215. package/dist/components/rich-text-editor/index.cjs +0 -1
  216. package/dist/components/rich-text-editor/index.js +0 -1
  217. package/dist/components/row/index.cjs +0 -1
  218. package/dist/components/row/index.js +0 -1
  219. package/dist/components/schema-field/index.cjs +0 -3
  220. package/dist/components/schema-field/index.js +0 -3
  221. package/dist/components/select/index.cjs +0 -1
  222. package/dist/components/select/index.js +0 -1
  223. package/dist/components/separator/index.cjs +0 -1
  224. package/dist/components/separator/index.js +0 -1
  225. package/dist/components/slider/index.cjs +0 -3
  226. package/dist/components/slider/index.js +0 -3
  227. package/dist/components/switch/index.cjs +0 -1
  228. package/dist/components/switch/index.js +0 -1
  229. package/dist/components/tags-input-inline/index.cjs +0 -1
  230. package/dist/components/tags-input-inline/index.js +0 -1
  231. package/dist/components/textarea/index.cjs +0 -1
  232. package/dist/components/textarea/index.js +0 -1
  233. package/dist/components/toggle-button/index.cjs +0 -1
  234. package/dist/components/toggle-button/index.js +0 -1
  235. package/dist/components/toggle-group/index.cjs +0 -1
  236. package/dist/components/toggle-group/index.js +0 -1
  237. package/dist/hooks/index.cjs +0 -4
  238. package/dist/hooks/index.js +0 -4
  239. package/dist/utils/index.cjs +0 -14
  240. package/dist/utils/index.js +0 -14
  241. package/dist/utils/use-array-item-editor.cjs +0 -3
  242. package/dist/utils/use-array-item-editor.js +0 -1
@@ -1,13 +1,13 @@
1
1
  import { FormItemProps } from "./form-item-types.cjs";
2
- import * as react1246 from "react";
2
+ import * as react1448 from "react";
3
3
 
4
4
  //#region src/components/form-item/ConnectedFormItem.d.ts
5
5
  /**
6
6
  * FormItem component connected to Formily field state.
7
7
  * Automatically maps field validation state to component props.
8
8
  */
9
- declare const FormItem: react1246.ForwardRefExoticComponent<Omit<Partial<FormItemProps & {
10
- children?: react1246.ReactNode | undefined;
11
- }>, "ref"> & react1246.RefAttributes<unknown>>;
9
+ declare const FormItem: react1448.ForwardRefExoticComponent<Omit<Partial<FormItemProps & {
10
+ children?: react1448.ReactNode | undefined;
11
+ }>, "ref"> & react1448.RefAttributes<unknown>>;
12
12
  //#endregion
13
13
  export { FormItem };
@@ -1,13 +1,13 @@
1
1
  import { FormItemProps } from "./form-item-types.js";
2
- import * as react1246 from "react";
2
+ import * as react1450 from "react";
3
3
 
4
4
  //#region src/components/form-item/ConnectedFormItem.d.ts
5
5
  /**
6
6
  * FormItem component connected to Formily field state.
7
7
  * Automatically maps field validation state to component props.
8
8
  */
9
- declare const FormItem: react1246.ForwardRefExoticComponent<Omit<Partial<FormItemProps & {
10
- children?: react1246.ReactNode | undefined;
11
- }>, "ref"> & react1246.RefAttributes<unknown>>;
9
+ declare const FormItem: react1450.ForwardRefExoticComponent<Omit<Partial<FormItemProps & {
10
+ children?: react1450.ReactNode | undefined;
11
+ }>, "ref"> & react1450.RefAttributes<unknown>>;
12
12
  //#endregion
13
13
  export { FormItem };
@@ -1,44 +1,13 @@
1
1
  import { BaseFormItem } from "./BaseFormItem.js";
2
- import { connect, mapProps, useFieldSchema } from "@formily/react";
3
- import { isVoidField } from "@formily/core";
2
+ import { mapFormItemProps } from "./map-form-item-props.js";
3
+ import { connect, mapProps } from "@formily/react";
4
4
 
5
5
  //#region src/components/form-item/ConnectedFormItem.tsx
6
6
  /**
7
7
  * FormItem component connected to Formily field state.
8
8
  * Automatically maps field validation state to component props.
9
9
  */
10
- const FormItem = connect(BaseFormItem, mapProps((props, field) => {
11
- const schema = useFieldSchema();
12
- if (isVoidField(field)) return {
13
- label: field.title ?? props.label,
14
- description: props.description ?? field.description,
15
- requiredMark: props.requiredMark !== void 0 ? props.requiredMark : props.asterisk
16
- };
17
- const takeFeedbackStatus = () => {
18
- if (field.validating) return void 0;
19
- if (field.selfErrors?.length) return "error";
20
- if (field.selfWarnings?.length) return "warning";
21
- if (field.selfSuccesses?.length) return "success";
22
- };
23
- const takeFeedbackText = () => {
24
- if (field.validating) return void 0;
25
- if (props.feedbackText != null) return props.feedbackText;
26
- if (field.selfErrors?.length) return field.selfErrors.join(", ");
27
- if (field.selfWarnings?.length) return field.selfWarnings.join(", ");
28
- if (field.selfSuccesses?.length) return field.selfSuccesses.join(", ");
29
- };
30
- let resolvedRequiredMark = props.requiredMark;
31
- if (resolvedRequiredMark === void 0) if (props.asterisk !== void 0) resolvedRequiredMark = Boolean(props.asterisk);
32
- else if (schema.parent && Array.isArray(schema.parent.required) && schema.parent.required.includes(schema.name)) resolvedRequiredMark = true;
33
- else resolvedRequiredMark = field.required && field.pattern !== "readPretty";
34
- return {
35
- label: props.label ?? field.title,
36
- description: props.description ?? field.description,
37
- feedbackStatus: takeFeedbackStatus(),
38
- feedbackText: takeFeedbackText(),
39
- requiredMark: resolvedRequiredMark
40
- };
41
- }));
10
+ const FormItem = connect(BaseFormItem, mapProps(mapFormItemProps));
42
11
 
43
12
  //#endregion
44
13
  export { FormItem };
@@ -0,0 +1,50 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let __formily_react = require("@formily/react");
3
+ __formily_react = require_rolldown_runtime.__toESM(__formily_react);
4
+ let __formily_core = require("@formily/core");
5
+ __formily_core = require_rolldown_runtime.__toESM(__formily_core);
6
+
7
+ //#region src/components/form-item/map-form-item-props.ts
8
+ /**
9
+ * Maps Formily field state onto FormItem props (label, description, validation
10
+ * feedback, required mark).
11
+ *
12
+ * Shared by every decorator that presents a field the way FormItem does —
13
+ * FormItem itself plus the overlay decorators — so they stay in step.
14
+ * Runs inside `mapProps`, which is why calling hooks here is allowed.
15
+ */
16
+ function mapFormItemProps(props, field) {
17
+ const schema = (0, __formily_react.useFieldSchema)();
18
+ if ((0, __formily_core.isVoidField)(field)) return {
19
+ label: field.title ?? props.label,
20
+ description: props.description ?? field.description,
21
+ requiredMark: props.requiredMark !== void 0 ? props.requiredMark : props.asterisk
22
+ };
23
+ const takeFeedbackStatus = () => {
24
+ if (field.validating) return void 0;
25
+ if (field.selfErrors?.length) return "error";
26
+ if (field.selfWarnings?.length) return "warning";
27
+ if (field.selfSuccesses?.length) return "success";
28
+ };
29
+ const takeFeedbackText = () => {
30
+ if (field.validating) return void 0;
31
+ if (props.feedbackText != null) return props.feedbackText;
32
+ if (field.selfErrors?.length) return field.selfErrors.join(", ");
33
+ if (field.selfWarnings?.length) return field.selfWarnings.join(", ");
34
+ if (field.selfSuccesses?.length) return field.selfSuccesses.join(", ");
35
+ };
36
+ let resolvedRequiredMark = props.requiredMark;
37
+ if (resolvedRequiredMark === void 0) if (props.asterisk !== void 0) resolvedRequiredMark = Boolean(props.asterisk);
38
+ else if (schema.parent && Array.isArray(schema.parent.required) && schema.parent.required.includes(schema.name)) resolvedRequiredMark = true;
39
+ else resolvedRequiredMark = field.required && field.pattern !== "readPretty";
40
+ return {
41
+ label: props.label ?? field.title,
42
+ description: props.description ?? field.description,
43
+ feedbackStatus: takeFeedbackStatus(),
44
+ feedbackText: takeFeedbackText(),
45
+ requiredMark: resolvedRequiredMark
46
+ };
47
+ }
48
+
49
+ //#endregion
50
+ exports.mapFormItemProps = mapFormItemProps;
@@ -0,0 +1,47 @@
1
+ import { useFieldSchema } from "@formily/react";
2
+ import { isVoidField } from "@formily/core";
3
+
4
+ //#region src/components/form-item/map-form-item-props.ts
5
+ /**
6
+ * Maps Formily field state onto FormItem props (label, description, validation
7
+ * feedback, required mark).
8
+ *
9
+ * Shared by every decorator that presents a field the way FormItem does —
10
+ * FormItem itself plus the overlay decorators — so they stay in step.
11
+ * Runs inside `mapProps`, which is why calling hooks here is allowed.
12
+ */
13
+ function mapFormItemProps(props, field) {
14
+ const schema = useFieldSchema();
15
+ if (isVoidField(field)) return {
16
+ label: field.title ?? props.label,
17
+ description: props.description ?? field.description,
18
+ requiredMark: props.requiredMark !== void 0 ? props.requiredMark : props.asterisk
19
+ };
20
+ const takeFeedbackStatus = () => {
21
+ if (field.validating) return void 0;
22
+ if (field.selfErrors?.length) return "error";
23
+ if (field.selfWarnings?.length) return "warning";
24
+ if (field.selfSuccesses?.length) return "success";
25
+ };
26
+ const takeFeedbackText = () => {
27
+ if (field.validating) return void 0;
28
+ if (props.feedbackText != null) return props.feedbackText;
29
+ if (field.selfErrors?.length) return field.selfErrors.join(", ");
30
+ if (field.selfWarnings?.length) return field.selfWarnings.join(", ");
31
+ if (field.selfSuccesses?.length) return field.selfSuccesses.join(", ");
32
+ };
33
+ let resolvedRequiredMark = props.requiredMark;
34
+ if (resolvedRequiredMark === void 0) if (props.asterisk !== void 0) resolvedRequiredMark = Boolean(props.asterisk);
35
+ else if (schema.parent && Array.isArray(schema.parent.required) && schema.parent.required.includes(schema.name)) resolvedRequiredMark = true;
36
+ else resolvedRequiredMark = field.required && field.pattern !== "readPretty";
37
+ return {
38
+ label: props.label ?? field.title,
39
+ description: props.description ?? field.description,
40
+ feedbackStatus: takeFeedbackStatus(),
41
+ feedbackText: takeFeedbackText(),
42
+ requiredMark: resolvedRequiredMark
43
+ };
44
+ }
45
+
46
+ //#endregion
47
+ export { mapFormItemProps };
@@ -1,7 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_resolve_responsive_space = require('../../utils/resolve-responsive-space.cjs');
3
3
  const require_use_form_context = require('../../hooks/use-form-context.cjs');
4
- require('../../hooks/index.cjs');
5
4
  let react = require("react");
6
5
  react = require_rolldown_runtime.__toESM(react);
7
6
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,6 +1,5 @@
1
1
  import { resolveResponsiveSpaceClass } from "../../utils/resolve-responsive-space.js";
2
2
  import { useFormContext } from "../../hooks/use-form-context.js";
3
- import "../../hooks/index.js";
4
3
  import React from "react";
5
4
  import { jsx } from "react/jsx-runtime";
6
5
  import { cn } from "@pixpilot/shadcn";
@@ -1,6 +1,5 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_use_form_context = require('../../hooks/use-form-context.cjs');
3
- require('../../hooks/index.cjs');
4
3
  let __formily_react = require("@formily/react");
5
4
  __formily_react = require_rolldown_runtime.__toESM(__formily_react);
6
5
  let __pixpilot_shadcn_ui = require("@pixpilot/shadcn-ui");
@@ -1,5 +1,4 @@
1
1
  import { useFormContext } from "../../hooks/use-form-context.js";
2
- import "../../hooks/index.js";
3
2
  import { connect, mapProps } from "@formily/react";
4
3
  import { IconPicker } from "@pixpilot/shadcn-ui";
5
4
  import { jsx } from "react/jsx-runtime";
@@ -1,7 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_use_merged_schema_components = require('../../hooks/use-merged-schema-components.cjs');
3
3
  const require_schema_field = require('../schema-field/schema-field.cjs');
4
- require('../schema-field/index.cjs');
5
4
  const require_JsonSchemaFormRenderer = require('./JsonSchemaFormRenderer.cjs');
6
5
  let react = require("react");
7
6
  react = require_rolldown_runtime.__toESM(react);
@@ -1,6 +1,5 @@
1
1
  import { useMergedSchemaComponents } from "../../hooks/use-merged-schema-components.js";
2
2
  import { defaultComponentRegistry } from "../schema-field/schema-field.js";
3
- import "../schema-field/index.js";
4
3
  import { JsonSchemaFormRenderer } from "./JsonSchemaFormRenderer.js";
5
4
  import React from "react";
6
5
  import { jsx } from "react/jsx-runtime";
@@ -1,6 +1,5 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_Form = require('../form/Form.cjs');
3
- require('../form/index.cjs');
4
3
  const require_use_form_schema = require('../../hooks/use-form-schema.cjs');
5
4
  let react = require("react");
6
5
  react = require_rolldown_runtime.__toESM(react);
@@ -1,5 +1,4 @@
1
1
  import { Form } from "../form/Form.js";
2
- import "../form/index.js";
3
2
  import { useFormSchema } from "../../hooks/use-form-schema.js";
4
3
  import React, { useMemo } from "react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -3,9 +3,7 @@ const require_resolve_responsive_space = require('../../utils/resolve-responsive
3
3
  const require_use_description = require('../../hooks/use-description.cjs');
4
4
  const require_use_form_context = require('../../hooks/use-form-context.cjs');
5
5
  const require_use_label = require('../../hooks/use-label.cjs');
6
- require('../../hooks/index.cjs');
7
6
  const require_FormItemContainer = require('../form-item-container/FormItemContainer.cjs');
8
- require('../form-item-container/index.cjs');
9
7
  let react_jsx_runtime = require("react/jsx-runtime");
10
8
  react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
11
9
  let __pixpilot_shadcn = require("@pixpilot/shadcn");
@@ -2,9 +2,7 @@ import { resolveResponsiveGapClass, resolveSpacingClass } from "../../utils/reso
2
2
  import { useDescription } from "../../hooks/use-description.js";
3
3
  import { useFormContext } from "../../hooks/use-form-context.js";
4
4
  import { useLabel } from "../../hooks/use-label.js";
5
- import "../../hooks/index.js";
6
5
  import { FormItemContainer } from "../form-item-container/FormItemContainer.js";
7
- import "../form-item-container/index.js";
8
6
  import { jsx, jsxs } from "react/jsx-runtime";
9
7
  import { Card, CardContent, CardDescription, CardHeader, CardTitle, cn } from "@pixpilot/shadcn";
10
8
 
@@ -0,0 +1,26 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
4
+
5
+ //#region src/components/overlay-common/OverlayFields.tsx
6
+ /**
7
+ * Keeps an object's fields mounted while its overlay (dialog/popover) is closed.
8
+ *
9
+ * Formily destroys a field instance when its component unmounts, and the fields
10
+ * inside a closed overlay are unmounted. Without this, `form.submit()` would
11
+ * skip them entirely — a required field the user never opened would pass
12
+ * validation. Rendering them in a hidden container keeps the field instances
13
+ * alive so form-level validation still covers them.
14
+ *
15
+ * `hidden` (rather than unmounting) is the same approach ListItem uses to keep
16
+ * array item fields attached while a row is collapsed.
17
+ */
18
+ const OverlayFields = ({ children }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
19
+ hidden: true,
20
+ "aria-hidden": "true",
21
+ children
22
+ });
23
+ OverlayFields.displayName = "OverlayFields";
24
+
25
+ //#endregion
26
+ exports.OverlayFields = OverlayFields;
@@ -0,0 +1 @@
1
+ import React from "react";
@@ -0,0 +1 @@
1
+ import React from "react";
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+
3
+ //#region src/components/overlay-common/OverlayFields.tsx
4
+ /**
5
+ * Keeps an object's fields mounted while its overlay (dialog/popover) is closed.
6
+ *
7
+ * Formily destroys a field instance when its component unmounts, and the fields
8
+ * inside a closed overlay are unmounted. Without this, `form.submit()` would
9
+ * skip them entirely — a required field the user never opened would pass
10
+ * validation. Rendering them in a hidden container keeps the field instances
11
+ * alive so form-level validation still covers them.
12
+ *
13
+ * `hidden` (rather than unmounting) is the same approach ListItem uses to keep
14
+ * array item fields attached while a row is collapsed.
15
+ */
16
+ const OverlayFields = ({ children }) => /* @__PURE__ */ jsx("div", {
17
+ hidden: true,
18
+ "aria-hidden": "true",
19
+ children
20
+ });
21
+ OverlayFields.displayName = "OverlayFields";
22
+
23
+ //#endregion
24
+ export { OverlayFields };
@@ -0,0 +1,27 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let lucide_react = require("lucide-react");
3
+ lucide_react = require_rolldown_runtime.__toESM(lucide_react);
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
6
+ let __pixpilot_shadcn = require("@pixpilot/shadcn");
7
+ __pixpilot_shadcn = require_rolldown_runtime.__toESM(__pixpilot_shadcn);
8
+
9
+ //#region src/components/overlay-common/OverlayTrigger.tsx
10
+ /**
11
+ * Button that opens an object overlay (dialog or popover).
12
+ */
13
+ const OverlayTrigger = ({ label, icon, invalid, className,...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.Button, {
14
+ type: "button",
15
+ variant: "outline",
16
+ "aria-invalid": invalid === true ? true : void 0,
17
+ ...rest,
18
+ className: (0, __pixpilot_shadcn.cn)("form-object-trigger w-full justify-between gap-4 font-normal", invalid === true && "border-destructive text-destructive", className),
19
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
20
+ className: "min-w-0 truncate text-left",
21
+ children: label
22
+ }), icon ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRightIcon, { className: "size-4 shrink-0 opacity-50" })]
23
+ });
24
+ OverlayTrigger.displayName = "OverlayTrigger";
25
+
26
+ //#endregion
27
+ exports.OverlayTrigger = OverlayTrigger;
@@ -0,0 +1,15 @@
1
+ import { SyncReactNode } from "../../types/react.cjs";
2
+ import React from "react";
3
+ import { Button } from "@pixpilot/shadcn";
4
+
5
+ //#region src/components/overlay-common/OverlayTrigger.d.ts
6
+ interface OverlayTriggerProps extends Omit<React.ComponentProps<typeof Button>, 'children'> {
7
+ /** Text of the trigger button. */
8
+ label?: SyncReactNode;
9
+ /** Icon rendered at the trailing edge. Defaults to a chevron. */
10
+ icon?: React.ReactNode;
11
+ /** Renders the trigger in an error state. */
12
+ invalid?: boolean;
13
+ }
14
+ //#endregion
15
+ export { OverlayTriggerProps };
@@ -0,0 +1,15 @@
1
+ import { SyncReactNode } from "../../types/react.js";
2
+ import React from "react";
3
+ import { Button } from "@pixpilot/shadcn";
4
+
5
+ //#region src/components/overlay-common/OverlayTrigger.d.ts
6
+ interface OverlayTriggerProps extends Omit<React.ComponentProps<typeof Button>, 'children'> {
7
+ /** Text of the trigger button. */
8
+ label?: SyncReactNode;
9
+ /** Icon rendered at the trailing edge. Defaults to a chevron. */
10
+ icon?: React.ReactNode;
11
+ /** Renders the trigger in an error state. */
12
+ invalid?: boolean;
13
+ }
14
+ //#endregion
15
+ export { OverlayTriggerProps };
@@ -0,0 +1,23 @@
1
+ import { ChevronRightIcon } from "lucide-react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Button, cn } from "@pixpilot/shadcn";
4
+
5
+ //#region src/components/overlay-common/OverlayTrigger.tsx
6
+ /**
7
+ * Button that opens an object overlay (dialog or popover).
8
+ */
9
+ const OverlayTrigger = ({ label, icon, invalid, className,...rest }) => /* @__PURE__ */ jsxs(Button, {
10
+ type: "button",
11
+ variant: "outline",
12
+ "aria-invalid": invalid === true ? true : void 0,
13
+ ...rest,
14
+ className: cn("form-object-trigger w-full justify-between gap-4 font-normal", invalid === true && "border-destructive text-destructive", className),
15
+ children: [/* @__PURE__ */ jsx("span", {
16
+ className: "min-w-0 truncate text-left",
17
+ children: label
18
+ }), icon ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-4 shrink-0 opacity-50" })]
19
+ });
20
+ OverlayTrigger.displayName = "OverlayTrigger";
21
+
22
+ //#endregion
23
+ export { OverlayTrigger };
@@ -0,0 +1,10 @@
1
+
2
+ //#region src/components/overlay-common/constants.ts
3
+ /**
4
+ * Fallback noun for the DialogItem / PopoverItem trigger when the field has
5
+ * no title — e.g. "Add item" / "Edit item".
6
+ */
7
+ const DEFAULT_TRIGGER_NOUN = "item";
8
+
9
+ //#endregion
10
+ exports.DEFAULT_TRIGGER_NOUN = DEFAULT_TRIGGER_NOUN;
@@ -0,0 +1,9 @@
1
+ //#region src/components/overlay-common/constants.ts
2
+ /**
3
+ * Fallback noun for the DialogItem / PopoverItem trigger when the field has
4
+ * no title — e.g. "Add item" / "Edit item".
5
+ */
6
+ const DEFAULT_TRIGGER_NOUN = "item";
7
+
8
+ //#endregion
9
+ export { DEFAULT_TRIGGER_NOUN };
@@ -0,0 +1,4 @@
1
+ import { OverlayBaseSlots, OverlayProps } from "./overlay-types.cjs";
2
+ import "./OverlayFields.cjs";
3
+ import { OverlayTriggerProps } from "./OverlayTrigger.cjs";
4
+ import "./use-overlay.cjs";
@@ -0,0 +1,4 @@
1
+ import { OverlayBaseSlots, OverlayProps } from "./overlay-types.js";
2
+ import "./OverlayFields.js";
3
+ import { OverlayTriggerProps } from "./OverlayTrigger.js";
4
+ import "./use-overlay.js";
@@ -0,0 +1,23 @@
1
+
2
+ //#region src/components/overlay-common/is-empty-field-value.ts
3
+ /**
4
+ * Whether a field value holds nothing the user would consider data.
5
+ *
6
+ * Used to pick the trigger verb: an object with no data reads "Add <title>",
7
+ * one with data reads "Edit <title>".
8
+ *
9
+ * Comparing `value` against `initialValue` does not work here: Formily gives an
10
+ * object field an initial value of `{}` while its `initialValue` stays
11
+ * undefined, so an untouched object would always look changed. Empty strings
12
+ * count as empty because clearing an input leaves `''` behind, but `false` and
13
+ * `0` are real values.
14
+ */
15
+ function isEmptyFieldValue(value) {
16
+ if (value == null || value === "") return true;
17
+ if (Array.isArray(value)) return value.every(isEmptyFieldValue);
18
+ if (typeof value === "object") return Object.values(value).every(isEmptyFieldValue);
19
+ return false;
20
+ }
21
+
22
+ //#endregion
23
+ exports.isEmptyFieldValue = isEmptyFieldValue;
@@ -0,0 +1,22 @@
1
+ //#region src/components/overlay-common/is-empty-field-value.ts
2
+ /**
3
+ * Whether a field value holds nothing the user would consider data.
4
+ *
5
+ * Used to pick the trigger verb: an object with no data reads "Add <title>",
6
+ * one with data reads "Edit <title>".
7
+ *
8
+ * Comparing `value` against `initialValue` does not work here: Formily gives an
9
+ * object field an initial value of `{}` while its `initialValue` stays
10
+ * undefined, so an untouched object would always look changed. Empty strings
11
+ * count as empty because clearing an input leaves `''` behind, but `false` and
12
+ * `0` are real values.
13
+ */
14
+ function isEmptyFieldValue(value) {
15
+ if (value == null || value === "") return true;
16
+ if (Array.isArray(value)) return value.every(isEmptyFieldValue);
17
+ if (typeof value === "object") return Object.values(value).every(isEmptyFieldValue);
18
+ return false;
19
+ }
20
+
21
+ //#endregion
22
+ export { isEmptyFieldValue };
@@ -0,0 +1,27 @@
1
+ import { SyncReactNode } from "../../types/react.cjs";
2
+ import React from "react";
3
+
4
+ //#region src/components/overlay-common/overlay-types.d.ts
5
+
6
+ /**
7
+ * The overlay itself — the `dialog` prop on DialogItem and the `popover` prop
8
+ * on PopoverItem.
9
+ *
10
+ * `TSlots` differs per overlay (only a dialog has a footer), so each component
11
+ * supplies its own slot map.
12
+ */
13
+ interface OverlayProps<TSlots> {
14
+ /** Heading inside the overlay. Defaults to the field label. */
15
+ title?: SyncReactNode;
16
+ /** Description inside the overlay. Defaults to the field description. */
17
+ description?: SyncReactNode;
18
+ /** Props for the overlay's internal parts. */
19
+ slots?: TSlots;
20
+ }
21
+ /** Slots every overlay has, whatever kind it is. */
22
+ interface OverlayBaseSlots {
23
+ header?: React.ComponentProps<'div'>;
24
+ body?: React.ComponentProps<'div'>;
25
+ }
26
+ //#endregion
27
+ export { OverlayBaseSlots, OverlayProps };
@@ -0,0 +1,27 @@
1
+ import { SyncReactNode } from "../../types/react.js";
2
+ import React from "react";
3
+
4
+ //#region src/components/overlay-common/overlay-types.d.ts
5
+
6
+ /**
7
+ * The overlay itself — the `dialog` prop on DialogItem and the `popover` prop
8
+ * on PopoverItem.
9
+ *
10
+ * `TSlots` differs per overlay (only a dialog has a footer), so each component
11
+ * supplies its own slot map.
12
+ */
13
+ interface OverlayProps<TSlots> {
14
+ /** Heading inside the overlay. Defaults to the field label. */
15
+ title?: SyncReactNode;
16
+ /** Description inside the overlay. Defaults to the field description. */
17
+ description?: SyncReactNode;
18
+ /** Props for the overlay's internal parts. */
19
+ slots?: TSlots;
20
+ }
21
+ /** Slots every overlay has, whatever kind it is. */
22
+ interface OverlayBaseSlots {
23
+ header?: React.ComponentProps<'div'>;
24
+ body?: React.ComponentProps<'div'>;
25
+ }
26
+ //#endregion
27
+ export { OverlayBaseSlots, OverlayProps };