@pixpilot/formily-shadcn 0.1.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 (205) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +204 -0
  3. package/dist/_virtual/rolldown_runtime.cjs +1 -0
  4. package/dist/_virtual/rolldown_runtime.js +1 -0
  5. package/dist/components/array-base/array-base.cjs +1 -0
  6. package/dist/components/array-base/array-base.d.cts +13 -0
  7. package/dist/components/array-base/array-base.d.ts +13 -0
  8. package/dist/components/array-base/array-base.js +1 -0
  9. package/dist/components/array-base/array-context.cjs +1 -0
  10. package/dist/components/array-base/array-context.d.cts +17 -0
  11. package/dist/components/array-base/array-context.d.ts +17 -0
  12. package/dist/components/array-base/array-context.js +1 -0
  13. package/dist/components/array-base/component-context.cjs +1 -0
  14. package/dist/components/array-base/component-context.d.cts +3 -0
  15. package/dist/components/array-base/component-context.d.ts +3 -0
  16. package/dist/components/array-base/component-context.js +1 -0
  17. package/dist/components/array-base/components/addition.cjs +1 -0
  18. package/dist/components/array-base/components/addition.d.cts +13 -0
  19. package/dist/components/array-base/components/addition.d.ts +13 -0
  20. package/dist/components/array-base/components/addition.js +1 -0
  21. package/dist/components/array-base/components/array-copy.cjs +1 -0
  22. package/dist/components/array-base/components/array-copy.js +1 -0
  23. package/dist/components/array-base/components/array-index.cjs +1 -0
  24. package/dist/components/array-base/components/array-index.js +1 -0
  25. package/dist/components/array-base/components/array-item-label.cjs +1 -0
  26. package/dist/components/array-base/components/array-item-label.js +1 -0
  27. package/dist/components/array-base/components/components.cjs +1 -0
  28. package/dist/components/array-base/components/components.js +1 -0
  29. package/dist/components/array-base/components/edit.cjs +1 -0
  30. package/dist/components/array-base/components/edit.js +1 -0
  31. package/dist/components/array-base/components/empty.cjs +1 -0
  32. package/dist/components/array-base/components/empty.js +1 -0
  33. package/dist/components/array-base/components/get-array-components.cjs +1 -0
  34. package/dist/components/array-base/components/get-array-components.js +1 -0
  35. package/dist/components/array-base/components/move-down.cjs +1 -0
  36. package/dist/components/array-base/components/move-down.js +1 -0
  37. package/dist/components/array-base/components/move-up.cjs +1 -0
  38. package/dist/components/array-base/components/move-up.js +1 -0
  39. package/dist/components/array-base/components/remove.cjs +1 -0
  40. package/dist/components/array-base/components/remove.js +1 -0
  41. package/dist/components/array-base/components/title.cjs +1 -0
  42. package/dist/components/array-base/components/title.js +1 -0
  43. package/dist/components/array-base/components/types.d.cts +30 -0
  44. package/dist/components/array-base/components/types.d.ts +30 -0
  45. package/dist/components/array-base/components/use-array-components-registry.cjs +1 -0
  46. package/dist/components/array-base/components/use-array-components-registry.d.cts +4 -0
  47. package/dist/components/array-base/components/use-array-components-registry.d.ts +4 -0
  48. package/dist/components/array-base/components/use-array-components-registry.js +1 -0
  49. package/dist/components/array-base/constants/index.cjs +1 -0
  50. package/dist/components/array-base/constants/index.js +1 -0
  51. package/dist/components/array-base/index.cjs +1 -0
  52. package/dist/components/array-base/index.d.cts +3 -0
  53. package/dist/components/array-base/index.d.ts +3 -0
  54. package/dist/components/array-base/index.js +1 -0
  55. package/dist/components/array-base/types.d.cts +37 -0
  56. package/dist/components/array-base/types.d.ts +37 -0
  57. package/dist/components/array-base/utils/filter-and-sort-components.cjs +1 -0
  58. package/dist/components/array-base/utils/filter-and-sort-components.js +1 -0
  59. package/dist/components/array-base/utils/is-array-component.cjs +1 -0
  60. package/dist/components/array-base/utils/is-array-component.js +1 -0
  61. package/dist/components/array-cards/array-cards.cjs +1 -0
  62. package/dist/components/array-cards/array-cards.d.cts +7 -0
  63. package/dist/components/array-cards/array-cards.d.ts +7 -0
  64. package/dist/components/array-cards/array-cards.js +1 -0
  65. package/dist/components/array-cards/index.cjs +1 -0
  66. package/dist/components/array-cards/index.d.cts +1 -0
  67. package/dist/components/array-cards/index.d.ts +1 -0
  68. package/dist/components/array-cards/index.js +1 -0
  69. package/dist/components/array-cards/item.cjs +1 -0
  70. package/dist/components/array-cards/item.js +1 -0
  71. package/dist/components/array-collapse/array-collapse.cjs +1 -0
  72. package/dist/components/array-collapse/array-collapse.d.cts +12 -0
  73. package/dist/components/array-collapse/array-collapse.d.ts +12 -0
  74. package/dist/components/array-collapse/array-collapse.js +1 -0
  75. package/dist/components/array-collapse/index.cjs +1 -0
  76. package/dist/components/array-collapse/index.d.cts +1 -0
  77. package/dist/components/array-collapse/index.d.ts +1 -0
  78. package/dist/components/array-collapse/index.js +1 -0
  79. package/dist/components/array-collapse/item.cjs +1 -0
  80. package/dist/components/array-collapse/item.js +1 -0
  81. package/dist/components/array-common/array-items-list.cjs +1 -0
  82. package/dist/components/array-common/array-items-list.js +1 -0
  83. package/dist/components/array-common/create-active-item-manager.cjs +1 -0
  84. package/dist/components/array-common/create-active-item-manager.js +1 -0
  85. package/dist/components/array-common/index.cjs +1 -0
  86. package/dist/components/array-common/index.js +1 -0
  87. package/dist/components/array-common/item-wrapper.cjs +1 -0
  88. package/dist/components/array-common/item-wrapper.js +1 -0
  89. package/dist/components/array-common/list-item.cjs +1 -0
  90. package/dist/components/array-common/list-item.js +1 -0
  91. package/dist/components/array-common/use-array-editor.cjs +1 -0
  92. package/dist/components/array-common/use-array-editor.js +1 -0
  93. package/dist/components/array-dialog/array-dialog.cjs +1 -0
  94. package/dist/components/array-dialog/array-dialog.js +1 -0
  95. package/dist/components/array-dialog/edit-dialog.cjs +1 -0
  96. package/dist/components/array-dialog/edit-dialog.js +1 -0
  97. package/dist/components/array-dialog/index.cjs +1 -0
  98. package/dist/components/array-dialog/index.js +1 -0
  99. package/dist/components/array-popover/array-popover.cjs +1 -0
  100. package/dist/components/array-popover/array-popover.js +1 -0
  101. package/dist/components/array-popover/index.cjs +1 -0
  102. package/dist/components/array-popover/index.js +1 -0
  103. package/dist/components/array-popover/popover.cjs +1 -0
  104. package/dist/components/array-popover/popover.js +1 -0
  105. package/dist/components/checkbox.cjs +1 -0
  106. package/dist/components/checkbox.d.cts +11 -0
  107. package/dist/components/checkbox.d.ts +11 -0
  108. package/dist/components/checkbox.js +1 -0
  109. package/dist/components/column.cjs +1 -0
  110. package/dist/components/column.d.cts +41 -0
  111. package/dist/components/column.d.ts +41 -0
  112. package/dist/components/column.js +1 -0
  113. package/dist/components/combobox.cjs +1 -0
  114. package/dist/components/combobox.d.cts +6 -0
  115. package/dist/components/combobox.d.ts +6 -0
  116. package/dist/components/combobox.js +1 -0
  117. package/dist/components/date-picker.cjs +1 -0
  118. package/dist/components/date-picker.d.cts +17 -0
  119. package/dist/components/date-picker.d.ts +17 -0
  120. package/dist/components/date-picker.js +1 -0
  121. package/dist/components/file-upload-inline.cjs +3 -0
  122. package/dist/components/file-upload-inline.d.cts +12 -0
  123. package/dist/components/file-upload-inline.d.ts +12 -0
  124. package/dist/components/file-upload-inline.js +3 -0
  125. package/dist/components/form-grid.cjs +1 -0
  126. package/dist/components/form-grid.d.cts +12 -0
  127. package/dist/components/form-grid.d.ts +12 -0
  128. package/dist/components/form-grid.js +1 -0
  129. package/dist/components/form-item.cjs +3 -0
  130. package/dist/components/form-item.d.cts +21 -0
  131. package/dist/components/form-item.d.ts +21 -0
  132. package/dist/components/form-item.js +3 -0
  133. package/dist/components/form.cjs +1 -0
  134. package/dist/components/form.d.cts +26 -0
  135. package/dist/components/form.d.ts +26 -0
  136. package/dist/components/form.js +1 -0
  137. package/dist/components/input.cjs +1 -0
  138. package/dist/components/input.d.cts +11 -0
  139. package/dist/components/input.d.ts +11 -0
  140. package/dist/components/input.js +1 -0
  141. package/dist/components/number-input.cjs +1 -0
  142. package/dist/components/number-input.d.cts +9 -0
  143. package/dist/components/number-input.d.ts +9 -0
  144. package/dist/components/number-input.js +1 -0
  145. package/dist/components/radio.cjs +1 -0
  146. package/dist/components/radio.d.cts +24 -0
  147. package/dist/components/radio.d.ts +24 -0
  148. package/dist/components/radio.js +1 -0
  149. package/dist/components/row.cjs +1 -0
  150. package/dist/components/row.d.cts +41 -0
  151. package/dist/components/row.d.ts +41 -0
  152. package/dist/components/row.js +1 -0
  153. package/dist/components/schema-field.cjs +1 -0
  154. package/dist/components/schema-field.d.cts +396 -0
  155. package/dist/components/schema-field.d.ts +396 -0
  156. package/dist/components/schema-field.js +1 -0
  157. package/dist/components/select.cjs +1 -0
  158. package/dist/components/select.d.cts +6 -0
  159. package/dist/components/select.d.ts +6 -0
  160. package/dist/components/select.js +1 -0
  161. package/dist/components/separator.cjs +1 -0
  162. package/dist/components/separator.d.cts +11 -0
  163. package/dist/components/separator.d.ts +11 -0
  164. package/dist/components/separator.js +1 -0
  165. package/dist/components/slider.cjs +1 -0
  166. package/dist/components/slider.d.cts +12 -0
  167. package/dist/components/slider.d.ts +12 -0
  168. package/dist/components/slider.js +1 -0
  169. package/dist/components/switch.cjs +1 -0
  170. package/dist/components/switch.d.cts +11 -0
  171. package/dist/components/switch.d.ts +11 -0
  172. package/dist/components/switch.js +1 -0
  173. package/dist/components/tags-input-inline.cjs +1 -0
  174. package/dist/components/tags-input-inline.d.cts +15 -0
  175. package/dist/components/tags-input-inline.d.ts +15 -0
  176. package/dist/components/tags-input-inline.js +1 -0
  177. package/dist/components/textarea.cjs +1 -0
  178. package/dist/components/textarea.d.cts +9 -0
  179. package/dist/components/textarea.d.ts +9 -0
  180. package/dist/components/textarea.js +1 -0
  181. package/dist/index.cjs +1 -0
  182. package/dist/index.d.cts +33 -0
  183. package/dist/index.d.ts +33 -0
  184. package/dist/index.js +1 -0
  185. package/dist/utils/create-panel-state-manager.cjs +1 -0
  186. package/dist/utils/create-panel-state-manager.js +1 -0
  187. package/dist/utils/for-each-schema.cjs +1 -0
  188. package/dist/utils/for-each-schema.js +1 -0
  189. package/dist/utils/get-array-item-info.cjs +1 -0
  190. package/dist/utils/get-array-item-info.js +1 -0
  191. package/dist/utils/get-default-value.cjs +1 -0
  192. package/dist/utils/get-default-value.js +1 -0
  193. package/dist/utils/has-array-item-errors.cjs +1 -0
  194. package/dist/utils/has-array-item-errors.js +1 -0
  195. package/dist/utils/has-error.cjs +1 -0
  196. package/dist/utils/has-error.js +1 -0
  197. package/dist/utils/index.cjs +1 -0
  198. package/dist/utils/index.js +1 -0
  199. package/dist/utils/transform-schema.cjs +1 -0
  200. package/dist/utils/transform-schema.js +1 -0
  201. package/dist/utils/use-array-item-editor.cjs +1 -0
  202. package/dist/utils/use-array-item-editor.js +1 -0
  203. package/dist/utils/validate-array-item-fields.cjs +1 -0
  204. package/dist/utils/validate-array-item-fields.js +1 -0
  205. package/package.json +74 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 pixpilot
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,204 @@
1
+ # @pixpilot/shadcn-formily
2
+
3
+ Formily integration for shadcn/ui components. Build powerful, schema-driven forms with shadcn/ui's beautiful components and Formily's reactive form management.
4
+
5
+ ## Features
6
+
7
+ - 🎨 **Shadcn/ui Integration** - Uses shadcn/ui components for consistent design
8
+ - 📝 **JSON Schema Support** - Define forms using JSON Schema
9
+ - ⚡ **Reactive State Management** - Built on @formily/reactive for optimal performance
10
+ - 🔄 **Dynamic Forms** - Support for dynamic arrays, conditional fields, and complex layouts
11
+ - 📐 **Grid Layout** - Built-in responsive grid layout with `FormGrid`
12
+ - ✅ **Validation** - Comprehensive validation with error display
13
+ - 🎯 **Type Safe** - Full TypeScript support
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ pnpm add @pixpilot/shadcn-formily @formily/core @formily/react
19
+ ```
20
+
21
+ ## Quick Start
22
+
23
+ ### Basic Form
24
+
25
+ ```tsx
26
+ import { createForm, Form, SchemaField } from '@pixpilot/shadcn-formily';
27
+
28
+ const form = createForm();
29
+
30
+ const schema = {
31
+ type: 'object',
32
+ properties: {
33
+ username: {
34
+ type: 'string',
35
+ title: 'Username',
36
+ required: true,
37
+ 'x-decorator': 'FormItem',
38
+ 'x-component': 'Input',
39
+ 'x-component-props': {
40
+ placeholder: 'Enter your username',
41
+ },
42
+ },
43
+ email: {
44
+ type: 'string',
45
+ title: 'Email',
46
+ required: true,
47
+ 'x-decorator': 'FormItem',
48
+ 'x-component': 'Input',
49
+ 'x-component-props': {
50
+ type: 'email',
51
+ placeholder: 'Enter your email',
52
+ },
53
+ },
54
+ },
55
+ };
56
+
57
+ function MyForm() {
58
+ return (
59
+ <Form form={form} onSubmit={(values) => console.log(values)}>
60
+ <SchemaField schema={schema} />
61
+ <button type="submit">Submit</button>
62
+ </Form>
63
+ );
64
+ }
65
+ ```
66
+
67
+ ### Grid Layout
68
+
69
+ ```tsx
70
+ const schema = {
71
+ type: 'void',
72
+ 'x-component': 'FormGrid',
73
+ 'x-component-props': { maxColumns: 3 },
74
+ properties: {
75
+ field1: {
76
+ type: 'string',
77
+ title: 'Field 1 (Span 2)',
78
+ 'x-decorator': 'FormItem',
79
+ 'x-decorator-props': { gridSpan: 2 },
80
+ 'x-component': 'Input',
81
+ },
82
+ field2: {
83
+ type: 'string',
84
+ title: 'Field 2',
85
+ 'x-decorator': 'FormItem',
86
+ 'x-component': 'Input',
87
+ },
88
+ },
89
+ };
90
+ ```
91
+
92
+ ### Array Fields
93
+
94
+ ```tsx
95
+ import {
96
+ Field,
97
+ ArrayField as FormilyArrayField,
98
+ FormItem,
99
+ Input,
100
+ } from '@pixpilot/shadcn-formily';
101
+
102
+ <FormilyArrayField name="contacts">
103
+ {(field) => (
104
+ <div>
105
+ {field.value?.map((_, index) => (
106
+ // eslint-disable-next-line react/no-array-index-key
107
+ <div key={index}>
108
+ <Field
109
+ name={`contacts.${index}.name`}
110
+ title="Name"
111
+ decorator={[FormItem]}
112
+ component={[Input]}
113
+ />
114
+ <button onClick={() => field.remove(index)}>Remove</button>
115
+ </div>
116
+ ))}
117
+ <button onClick={() => field.push({})}>Add Contact</button>
118
+ </div>
119
+ )}
120
+ </FormilyArrayField>;
121
+ ```
122
+
123
+ ## Available Components
124
+
125
+ ### Form Components
126
+
127
+ - `Form` - Main form wrapper with FormProvider
128
+ - `FormItem` - Field decorator with label, error messages
129
+ - `FormGrid` - Responsive grid layout
130
+
131
+ ### Input Components
132
+
133
+ - `Input` - Text input
134
+ - `Textarea` - Multi-line text input
135
+ - `NumberInput` - Number input
136
+ - `Checkbox` - Checkbox input
137
+ - `Radio` - Radio group
138
+ - `Select` - Select dropdown
139
+
140
+ ### Field Components
141
+
142
+ - `ArrayField` - Dynamic array fields
143
+ - `SchemaField` - Renders forms from JSON Schema
144
+
145
+ ## Schema Properties
146
+
147
+ ### Common x-properties
148
+
149
+ - `x-component`: Component to render (e.g., 'Input', 'Select')
150
+ - `x-decorator`: Wrapper component (typically 'FormItem')
151
+ - `x-component-props`: Props passed to the component
152
+ - `x-decorator-props`: Props passed to the decorator
153
+ - `gridSpan`: Number of grid columns to span in FormGrid
154
+
155
+ ## API Reference
156
+
157
+ ### createForm
158
+
159
+ Creates a form instance with reactive state management.
160
+
161
+ ```tsx
162
+ const form = createForm({
163
+ initialValues: {},
164
+ effects: () => {},
165
+ });
166
+ ```
167
+
168
+ ### Form Props
169
+
170
+ ```tsx
171
+ interface IFormProps {
172
+ form: IForm;
173
+ className?: string;
174
+ style?: React.CSSProperties;
175
+ children?: React.ReactNode;
176
+ onSubmit?: (values: any) => void;
177
+ onAutoSubmit?: (values: any) => void;
178
+ }
179
+ ```
180
+
181
+ ### FormGrid Props
182
+
183
+ ```tsx
184
+ interface IFormGridProps {
185
+ minColumns?: number | number[];
186
+ maxColumns?: number | number[];
187
+ columnGap?: number;
188
+ rowGap?: number;
189
+ className?: string;
190
+ }
191
+ ```
192
+
193
+ ## Examples
194
+
195
+ Check the `stories` directory for comprehensive examples:
196
+
197
+ - Basic forms
198
+ - Grid layouts
199
+ - Array fields
200
+ - All input types
201
+
202
+ ## License
203
+
204
+ MIT
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +1 @@
1
+ Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;
@@ -0,0 +1 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`),t=require(`./array-context.cjs`),n=require(`./components/components.cjs`);let r=require(`@formily/react`);r=e.__toESM(r);let i=require(`react`);i=e.__toESM(i);let a=require(`react/jsx-runtime`);a=e.__toESM(a);const o=e=>{let n=(0,r.useField)(),o=(0,r.useFieldSchema)();return(0,a.jsx)(t.ArrayBaseContext,{value:i.default.useMemo(()=>({field:n,schema:o,props:e}),[n,o,e]),children:e.children})};o.Item=i.default.memo(({children:e,...n})=>(0,a.jsx)(t.ItemContext,{value:n,children:e})),o.Index=n.arrayComponentMap.Index,o.Empty=n.arrayComponentMap.Empty,o.Addition=n.arrayComponentMap.Addition,o.Remove=n.arrayComponentMap.Remove,o.MoveDown=n.arrayComponentMap.MoveDown,o.MoveUp=n.arrayComponentMap.MoveUp,o.Edit=n.arrayComponentMap.Edit,o.Copy=n.arrayComponentMap.Copy,o.Label=n.arrayComponentMap.Label,o.useArray=t.useArray,o.useIndex=t.useIndex,o.useRecord=t.useRecord,o.Edit.displayName=`ArrayBaseEdit`,o.mixin=e=>{let t=e;return Object.entries(n.arrayComponentMap).forEach(([e])=>{t[e]=o[e]}),t.useArray=o.useArray,t.useIndex=o.useIndex,t.useRecord=o.useRecord,t},exports.ArrayBase=o;
@@ -0,0 +1,13 @@
1
+ import { ArrayBaseMixins, IArrayBaseProps } from "./types.cjs";
2
+ import { IArrayBaseItemProps } from "./array-context.cjs";
3
+ import { JSXComponent } from "@formily/react";
4
+ import React from "react";
5
+
6
+ //#region src/components/array-base/array-base.d.ts
7
+ type ComposedArrayBase = React.FC<React.PropsWithChildren<IArrayBaseProps>> & ArrayBaseMixins & {
8
+ Item: React.FC<React.PropsWithChildren<IArrayBaseItemProps>>;
9
+ mixin: <T extends JSXComponent>(target: T) => T & ArrayBaseMixins;
10
+ };
11
+ declare const ArrayBase: ComposedArrayBase;
12
+ //#endregion
13
+ export { ArrayBase };
@@ -0,0 +1,13 @@
1
+ import { ArrayBaseMixins, IArrayBaseProps } from "./types.js";
2
+ import { IArrayBaseItemProps } from "./array-context.js";
3
+ import { JSXComponent } from "@formily/react";
4
+ import React from "react";
5
+
6
+ //#region src/components/array-base/array-base.d.ts
7
+ type ComposedArrayBase = React.FC<React.PropsWithChildren<IArrayBaseProps>> & ArrayBaseMixins & {
8
+ Item: React.FC<React.PropsWithChildren<IArrayBaseItemProps>>;
9
+ mixin: <T extends JSXComponent>(target: T) => T & ArrayBaseMixins;
10
+ };
11
+ declare const ArrayBase: ComposedArrayBase;
12
+ //#endregion
13
+ export { ArrayBase };
@@ -0,0 +1 @@
1
+ import{ArrayBaseContext as e,ItemContext as t,useArray as n,useIndex as r,useRecord as i}from"./array-context.js";import{arrayComponentMap as a}from"./components/components.js";import{useField as o,useFieldSchema as s}from"@formily/react";import c from"react";import{jsx as l}from"react/jsx-runtime";const u=t=>{let n=o(),r=s();return l(e,{value:c.useMemo(()=>({field:n,schema:r,props:t}),[n,r,t]),children:t.children})};u.Item=c.memo(({children:e,...n})=>l(t,{value:n,children:e})),u.Index=a.Index,u.Empty=a.Empty,u.Addition=a.Addition,u.Remove=a.Remove,u.MoveDown=a.MoveDown,u.MoveUp=a.MoveUp,u.Edit=a.Edit,u.Copy=a.Copy,u.Label=a.Label,u.useArray=n,u.useIndex=r,u.useRecord=i,u.Edit.displayName=`ArrayBaseEdit`,u.mixin=e=>{let t=e;return Object.entries(a).forEach(([e])=>{t[e]=u[e]}),t.useArray=u.useArray,t.useIndex=u.useIndex,t.useRecord=u.useRecord,t};export{u as ArrayBase};
@@ -0,0 +1 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`);let t=require(`react`);t=e.__toESM(t);const n=(0,t.createContext)(null),r=(0,t.createContext)(null);function i(e,t){return typeof e==`function`?e(t):e}function a(){return(0,t.use)(n)}function o(e){let n=(0,t.use)(r);return n?n.index:e}function s(e){let n=(0,t.use)(r);return i(n?n.record:e,n?.index)}exports.ArrayBaseContext=n,exports.ItemContext=r,exports.useArray=a,exports.useIndex=o,exports.useRecord=s;
@@ -0,0 +1,17 @@
1
+ import { IArrayBaseProps } from "./types.cjs";
2
+ import { Schema } from "@formily/react";
3
+ import "react";
4
+ import { ArrayField } from "@formily/core";
5
+
6
+ //#region src/components/array-base/array-context.d.ts
7
+ interface IArrayBaseContext {
8
+ props: IArrayBaseProps;
9
+ field: ArrayField;
10
+ schema: Schema;
11
+ }
12
+ interface IArrayBaseItemProps {
13
+ index: number;
14
+ record: ((index: number) => Record<string, any>) | Record<string, any>;
15
+ }
16
+ //#endregion
17
+ export { IArrayBaseContext, IArrayBaseItemProps };
@@ -0,0 +1,17 @@
1
+ import { IArrayBaseProps } from "./types.js";
2
+ import { Schema } from "@formily/react";
3
+ import "react";
4
+ import { ArrayField } from "@formily/core";
5
+
6
+ //#region src/components/array-base/array-context.d.ts
7
+ interface IArrayBaseContext {
8
+ props: IArrayBaseProps;
9
+ field: ArrayField;
10
+ schema: Schema;
11
+ }
12
+ interface IArrayBaseItemProps {
13
+ index: number;
14
+ record: ((index: number) => Record<string, any>) | Record<string, any>;
15
+ }
16
+ //#endregion
17
+ export { IArrayBaseContext, IArrayBaseItemProps };
@@ -0,0 +1 @@
1
+ import{createContext as e,use as t}from"react";const n=e(null),r=e(null);function i(e,t){return typeof e==`function`?e(t):e}function a(){return t(n)}function o(e){let n=t(r);return n?n.index:e}function s(e){let n=t(r);return i(n?n.record:e,n?.index)}export{n as ArrayBaseContext,r as ItemContext,a as useArray,o as useIndex,s as useRecord};
@@ -0,0 +1 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`),t=require(`./components/use-array-components-registry.cjs`);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);const a=r.default.createContext({}),{Provider:o,Consumer:s}=a;function c(){return r.default.use(a)}const l=e=>{let{allowedOperationsComponentNames:r,children:a}=e;return(0,i.jsx)(o,{value:t.useArrayComponentRegistry((0,n.useFieldSchema)(),r),children:a})};l.displayName=`ArrayComponentProvider`,exports.ArrayComponentProvider=l,exports.Provider=o,exports.useArrayComponents=c;
@@ -0,0 +1,3 @@
1
+ import "./components/types.cjs";
2
+ import "./components/use-array-components-registry.cjs";
3
+ import React from "react";
@@ -0,0 +1,3 @@
1
+ import "./components/types.js";
2
+ import "./components/use-array-components-registry.js";
3
+ import React from "react";
@@ -0,0 +1 @@
1
+ import{useArrayComponentRegistry as e}from"./components/use-array-components-registry.js";import{useFieldSchema as t}from"@formily/react";import n from"react";import{jsx as r}from"react/jsx-runtime";const i=n.createContext({}),{Provider:a,Consumer:o}=i;function s(){return n.use(i)}const c=n=>{let{allowedOperationsComponentNames:i,children:o}=n;return r(a,{value:e(t(),i),children:o})};c.displayName=`ArrayComponentProvider`;export{c as ArrayComponentProvider,a as Provider,s as useArrayComponents};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`),n=require(`../../../utils/get-default-value.cjs`);require(`../../../utils/index.cjs`);let r=require(`@formily/react`);r=e.__toESM(r);let i=require(`react`);i=e.__toESM(i);let a=require(`@pixpilot/shadcn-ui`);a=e.__toESM(a);let o=require(`lucide-react`);o=e.__toESM(o);let s=require(`react/jsx-runtime`);s=e.__toESM(s);const c=i.default.forwardRef((e,i)=>{let{fullWidth:c=!0}=e,l=(0,r.useField)(),u=t.useArray();return!u||u.field?.pattern!==`editable`&&u.field?.pattern!==`disabled`?null:(0,s.jsxs)(a.Button,{type:`button`,variant:c?`ghost`:`outline`,...e,disabled:l?.disabled||u.props?.disabled,className:(0,a.cn)(e.className,{"w-full border border-dashed border-muted":c}),ref:i,onClick:t=>{if(u.props?.disabled||e.onClick&&(e.onClick(t),t.defaultPrevented))return;let r=n.getDefaultValue(e.defaultValue,u.schema);e.method===`unshift`?(u.field?.unshift?.(r).catch(console.error),u.props?.onAdd?.(0)):(u.field?.push?.(r).catch(console.error),u.props?.onAdd?.((u?.field?.value?.length??1)-1))},children:[e.icon===void 0?(0,s.jsx)(o.PlusIcon,{className:`mr-2 size-4`}):e.icon,e.title??l.title??e.children??`Add Item`]})});c.displayName=`ArrayAddition`,exports.ArrayAddition=c;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { Button } from "@pixpilot/shadcn-ui";
3
+
4
+ //#region src/components/array-base/components/addition.d.ts
5
+ interface IArrayBaseAdditionProps extends React.ComponentProps<typeof Button> {
6
+ title?: string;
7
+ method?: 'push' | 'unshift';
8
+ defaultValue?: any;
9
+ icon?: React.ReactNode;
10
+ fullWidth?: boolean;
11
+ }
12
+ //#endregion
13
+ export { IArrayBaseAdditionProps };
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { Button } from "@pixpilot/shadcn-ui";
3
+
4
+ //#region src/components/array-base/components/addition.d.ts
5
+ interface IArrayBaseAdditionProps extends React.ComponentProps<typeof Button> {
6
+ title?: string;
7
+ method?: 'push' | 'unshift';
8
+ defaultValue?: any;
9
+ icon?: React.ReactNode;
10
+ fullWidth?: boolean;
11
+ }
12
+ //#endregion
13
+ export { IArrayBaseAdditionProps };
@@ -0,0 +1 @@
1
+ import{useArray as e}from"../array-context.js";import{getDefaultValue as t}from"../../../utils/get-default-value.js";import"../../../utils/index.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i,cn as a}from"@pixpilot/shadcn-ui";import{PlusIcon as o}from"lucide-react";import{jsx as s,jsxs as c}from"react/jsx-runtime";const l=r.forwardRef((r,l)=>{let{fullWidth:u=!0}=r,d=n(),f=e();return!f||f.field?.pattern!==`editable`&&f.field?.pattern!==`disabled`?null:c(i,{type:`button`,variant:u?`ghost`:`outline`,...r,disabled:d?.disabled||f.props?.disabled,className:a(r.className,{"w-full border border-dashed border-muted":u}),ref:l,onClick:e=>{if(f.props?.disabled||r.onClick&&(r.onClick(e),e.defaultPrevented))return;let n=t(r.defaultValue,f.schema);r.method===`unshift`?(f.field?.unshift?.(n).catch(console.error),f.props?.onAdd?.(0)):(f.field?.push?.(n).catch(console.error),f.props?.onAdd?.((f?.field?.value?.length??1)-1))},children:[r.icon===void 0?s(o,{className:`mr-2 size-4`}):r.icon,r.title??d.title??r.children??`Add Item`]})});l.displayName=`ArrayAddition`;export{l as ArrayAddition};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`@pixpilot/shadcn-ui`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);let s=require(`@formily/shared`);s=e.__toESM(s);const c=r.default.forwardRef((e,r)=>{let c=(0,n.useField)(),l=t.useArray(),u=t.useIndex(e.index);return!l||l.field?.pattern!==`editable`?null:(0,o.jsx)(i.Button,{type:`button`,variant:`ghost`,size:`icon`,...e,disabled:c?.disabled||l.props?.disabled,ref:r,onClick:t=>{if(c?.disabled||(t.stopPropagation(),l.props?.disabled)||e.onClick&&(e.onClick(t),t.defaultPrevented)||u===void 0)return;let n=(0,s.clone)(l?.field?.value[u]),r=u+1;l.field?.insert?.(r,n),l.props?.onCopy?.(r)},children:e.icon===void 0?(0,o.jsx)(a.CopyIcon,{className:`size-4`}):e.icon})});exports.ArrayCopy=c;
@@ -0,0 +1 @@
1
+ import{useArray as e,useIndex as t}from"../array-context.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i}from"@pixpilot/shadcn-ui";import{CopyIcon as a}from"lucide-react";import{jsx as o}from"react/jsx-runtime";import{clone as s}from"@formily/shared";const c=r.forwardRef((r,c)=>{let l=n(),u=e(),d=t(r.index);return!u||u.field?.pattern!==`editable`?null:o(i,{type:`button`,variant:`ghost`,size:`icon`,...r,disabled:l?.disabled||u.props?.disabled,ref:c,onClick:e=>{if(l?.disabled||(e.stopPropagation(),u.props?.disabled)||r.onClick&&(r.onClick(e),e.defaultPrevented)||d===void 0)return;let t=s(u?.field?.value[d]),n=d+1;u.field?.insert?.(n,t),u.props?.onCopy?.(n)},children:r.icon===void 0?o(a,{className:`size-4`}):r.icon})});export{c as ArrayCopy};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`react/jsx-runtime`);n=e.__toESM(n);const r=()=>(0,n.jsxs)(`span`,{className:`font-medium`,children:[`Item `,(t.useIndex()??0)+1]});exports.ArrayIndex=r;
@@ -0,0 +1 @@
1
+ import{useIndex as e}from"../array-context.js";import{jsxs as t}from"react/jsx-runtime";const n=()=>t(`span`,{className:`font-medium`,children:[`Item `,(e()??0)+1]});export{n as ArrayIndex};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react/jsx-runtime`);r=e.__toESM(r);const i=()=>{let e=t.useIndex();return(0,r.jsxs)(`span`,{className:`font-medium`,children:[(0,n.useField)().title,` `,(e??0)+1]})};exports.ArrayItemLabel=i;
@@ -0,0 +1 @@
1
+ import{useIndex as e}from"../array-context.js";import{useField as t}from"@formily/react";import{jsxs as n}from"react/jsx-runtime";const r=()=>{let r=e();return n(`span`,{className:`font-medium`,children:[t().title,` `,(r??0)+1]})};export{r as ArrayItemLabel};
@@ -0,0 +1 @@
1
+ const e=require(`./addition.cjs`),t=require(`./array-copy.cjs`),n=require(`./array-index.cjs`),r=require(`./array-item-label.cjs`),i=require(`./edit.cjs`),a=require(`./empty.cjs`),o=require(`./move-down.cjs`),s=require(`./move-up.cjs`),c=require(`./remove.cjs`),l={Remove:c.ArrayRemove,Edit:i.ArrayEditButton,Copy:t.ArrayCopy,MoveDown:o.ArrayMoveDown,MoveUp:s.ArrayMoveUp,Label:r.ArrayItemLabel},u={...l,Addition:e.ArrayAddition,Empty:a.ArrayEmpty,Index:n.ArrayIndex,Label:r.ArrayItemLabel};exports.arrayComponentMap=u,exports.defaultOperationComponents=l;
@@ -0,0 +1 @@
1
+ import{ArrayAddition as e}from"./addition.js";import{ArrayCopy as t}from"./array-copy.js";import{ArrayIndex as n}from"./array-index.js";import{ArrayItemLabel as r}from"./array-item-label.js";import{ArrayEditButton as i}from"./edit.js";import{ArrayEmpty as a}from"./empty.js";import{ArrayMoveDown as o}from"./move-down.js";import{ArrayMoveUp as s}from"./move-up.js";import{ArrayRemove as c}from"./remove.js";const l={Remove:c,Edit:i,Copy:t,MoveDown:o,MoveUp:s,Label:r},u={...l,Addition:e,Empty:a,Index:n,Label:r};export{u as arrayComponentMap,l as defaultOperationComponents};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`@pixpilot/shadcn-ui`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);const s=r.default.forwardRef((e,r)=>{let s=t.useIndex(e.index),c=(0,n.useField)(),l=t.useArray();return l?(0,o.jsx)(i.Button,{type:`button`,variant:`ghost`,size:`icon`,...e,disabled:c?.disabled||l.props?.disabled,ref:r,onClick:t=>{c?.disabled||l.props?.disabled||(t.stopPropagation(),!(e.onClick&&(e.onClick(t),t.defaultPrevented))&&s!==void 0&&l.props?.onEdit?.(s))},children:e.icon===void 0?(0,o.jsx)(a.EditIcon,{className:`size-4`}):e.icon}):null});s.displayName=`ArrayEditButton`,exports.ArrayEditButton=s;
@@ -0,0 +1 @@
1
+ import{useArray as e,useIndex as t}from"../array-context.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i}from"@pixpilot/shadcn-ui";import{EditIcon as a}from"lucide-react";import{jsx as o}from"react/jsx-runtime";const s=r.forwardRef((r,s)=>{let c=t(r.index),l=n(),u=e();return u?o(i,{type:`button`,variant:`ghost`,size:`icon`,...r,disabled:l?.disabled||u.props?.disabled,ref:s,onClick:e=>{l?.disabled||u.props?.disabled||(e.stopPropagation(),!(r.onClick&&(r.onClick(e),e.defaultPrevented))&&c!==void 0&&u.props?.onEdit?.(c))},children:r.icon===void 0?o(a,{className:`size-4`}):r.icon}):null});s.displayName=`ArrayEditButton`;export{s as ArrayEditButton};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`);let t=require(`react`);t=e.__toESM(t);let n=require(`react/jsx-runtime`);n=e.__toESM(n);const r=t.default.forwardRef((e,t)=>{let{title:r,children:i,...a}=e;return(0,n.jsx)(`div`,{ref:t,className:`py-4 text-center text-sm text-foreground/50`,...a,children:i??r??`No Data`})});exports.ArrayEmpty=r;
@@ -0,0 +1 @@
1
+ import e from"react";import{jsx as t}from"react/jsx-runtime";const n=e.forwardRef((e,n)=>{let{title:r,children:i,...a}=e;return t(`div`,{ref:n,className:`py-4 text-center text-sm text-foreground/50`,...a,children:i??r??`No Data`})});export{n as ArrayEmpty};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../../../utils/for-each-schema.cjs`);require(`../../../utils/index.cjs`);const n=require(`./components.cjs`),r=require(`../utils/is-array-component.cjs`);let i=require(`@formily/react`);i=e.__toESM(i);let a=require(`react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);function s(e){let{isTargetField:t}=e;return a.default.memo(({basePath:e,index:n,schema:r})=>(0,o.jsx)(i.RecursionField,{basePath:e,schema:r,name:n,filterProperties:e=>t(e),onlyRenderProperties:!0}))}const c=[{type:`Remove`,check:r.isRemoveComponent},{type:`Addition`,check:r.isAdditionComponent},{type:`Empty`,check:r.isEmptyComponent},{type:`Index`,check:r.isIndexComponent},{type:`MoveDown`,check:r.isMoveDownComponent},{type:`MoveUp`,check:r.isMoveUpComponent},{type:`Copy`,check:r.isCopyComponent},{type:`Label`,check:r.isLabelComponent}];function l(e){let r=new Map([]);return t.forEachSchema(e,(e,t)=>t.length>0&&e.type===`array`?!1:(c.forEach(({type:t,check:n})=>{n(e)&&r.set(t,{Component:s({isTargetField:n}),isUserField:!0})}),!0)),Object.entries(n.arrayComponentMap).forEach(([e,t])=>{r.has(e)||r.set(e,{Component:e=>a.default.createElement(t,e),isUserField:!1})}),r}exports.getArrayComponents=l;
@@ -0,0 +1 @@
1
+ import{forEachSchema as e}from"../../../utils/for-each-schema.js";import"../../../utils/index.js";import{arrayComponentMap as t}from"./components.js";import{isAdditionComponent as n,isCopyComponent as r,isEmptyComponent as i,isIndexComponent as a,isLabelComponent as o,isMoveDownComponent as s,isMoveUpComponent as c,isRemoveComponent as l}from"../utils/is-array-component.js";import{RecursionField as u}from"@formily/react";import d from"react";import{jsx as f}from"react/jsx-runtime";function p(e){let{isTargetField:t}=e;return d.memo(({basePath:e,index:n,schema:r})=>f(u,{basePath:e,schema:r,name:n,filterProperties:e=>t(e),onlyRenderProperties:!0}))}const m=[{type:`Remove`,check:l},{type:`Addition`,check:n},{type:`Empty`,check:i},{type:`Index`,check:a},{type:`MoveDown`,check:s},{type:`MoveUp`,check:c},{type:`Copy`,check:r},{type:`Label`,check:o}];function h(n){let r=new Map([]);return e(n,(e,t)=>t.length>0&&e.type===`array`?!1:(m.forEach(({type:t,check:n})=>{n(e)&&r.set(t,{Component:p({isTargetField:n}),isUserField:!0})}),!0)),Object.entries(t).forEach(([e,t])=>{r.has(e)||r.set(e,{Component:e=>d.createElement(t,e),isUserField:!1})}),r}export{h as getArrayComponents};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`@pixpilot/shadcn-ui`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);const s=r.default.forwardRef((e,r)=>{let s=t.useIndex(e.index),c=(0,n.useField)(),l=t.useArray();if(!l||l.field?.pattern!==`editable`)return null;let u=s===(l.field?.value?.length??0)-1;return(0,o.jsx)(i.Button,{type:`button`,variant:`ghost`,size:`icon`,...e,disabled:c?.disabled||l.props?.disabled||u,ref:r,onClick:t=>{c?.disabled||l.props?.disabled||u||(t.stopPropagation(),!(e.onClick&&(e.onClick(t),t.defaultPrevented))&&s!==void 0&&(l.field?.moveDown?.(s).catch(console.error),l.props?.onMoveDown?.(s)))},children:e.icon===void 0?(0,o.jsx)(a.ChevronDownIcon,{className:`size-4`}):e.icon})});s.displayName=`ArrayMoveDown`,exports.ArrayMoveDown=s;
@@ -0,0 +1 @@
1
+ import{useArray as e,useIndex as t}from"../array-context.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i}from"@pixpilot/shadcn-ui";import{ChevronDownIcon as a}from"lucide-react";import{jsx as o}from"react/jsx-runtime";const s=r.forwardRef((r,s)=>{let c=t(r.index),l=n(),u=e();if(!u||u.field?.pattern!==`editable`)return null;let d=c===(u.field?.value?.length??0)-1;return o(i,{type:`button`,variant:`ghost`,size:`icon`,...r,disabled:l?.disabled||u.props?.disabled||d,ref:s,onClick:e=>{l?.disabled||u.props?.disabled||d||(e.stopPropagation(),!(r.onClick&&(r.onClick(e),e.defaultPrevented))&&c!==void 0&&(u.field?.moveDown?.(c).catch(console.error),u.props?.onMoveDown?.(c)))},children:r.icon===void 0?o(a,{className:`size-4`}):r.icon})});s.displayName=`ArrayMoveDown`;export{s as ArrayMoveDown};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`@pixpilot/shadcn-ui`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);const s=r.default.forwardRef((e,r)=>{let s=t.useIndex(e.index),c=(0,n.useField)(),l=t.useArray();if(!l||l.field?.pattern!==`editable`)return null;let u=s===0;return(0,o.jsx)(i.Button,{type:`button`,variant:`ghost`,size:`icon`,...e,disabled:c?.disabled||l.props?.disabled||u,ref:r,onClick:t=>{c?.disabled||l.props?.disabled||u||(t.stopPropagation(),!(e.onClick&&(e.onClick(t),t.defaultPrevented))&&s!==void 0&&(l?.field?.moveUp?.(s).catch(console.error),l?.props?.onMoveUp?.(s)))},children:e.icon===void 0?(0,o.jsx)(a.ChevronUpIcon,{className:`size-4`}):e.icon})});s.displayName=`ArrayMoveUp`,exports.ArrayMoveUp=s;
@@ -0,0 +1 @@
1
+ import{useArray as e,useIndex as t}from"../array-context.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i}from"@pixpilot/shadcn-ui";import{ChevronUpIcon as a}from"lucide-react";import{jsx as o}from"react/jsx-runtime";const s=r.forwardRef((r,s)=>{let c=t(r.index),l=n(),u=e();if(!u||u.field?.pattern!==`editable`)return null;let d=c===0;return o(i,{type:`button`,variant:`ghost`,size:`icon`,...r,disabled:l?.disabled||u.props?.disabled||d,ref:s,onClick:e=>{l?.disabled||u.props?.disabled||d||(e.stopPropagation(),!(r.onClick&&(r.onClick(e),e.defaultPrevented))&&c!==void 0&&(u?.field?.moveUp?.(c).catch(console.error),u?.props?.onMoveUp?.(c)))},children:r.icon===void 0?o(a,{className:`size-4`}):r.icon})});s.displayName=`ArrayMoveUp`;export{s as ArrayMoveUp};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`@formily/react`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`@pixpilot/shadcn-ui`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);const s=r.default.forwardRef((e,r)=>{let s=t.useIndex(e.index),c=(0,n.useField)(),l=t.useArray();return!l||l.field?.pattern!==`editable`?null:(0,o.jsx)(i.Button,{type:`button`,variant:`ghost`,size:`icon`,...e,disabled:c?.disabled||l.props?.disabled,ref:r,onClick:t=>{c?.disabled||l.props?.disabled||(t.stopPropagation(),!(e.onClick&&(e.onClick(t),t.defaultPrevented))&&s!==void 0&&(l.field?.remove?.(s).catch(console.error),l.props?.onRemove?.(s)))},children:e.icon===void 0?(0,o.jsx)(a.Trash2Icon,{className:`size-4`}):e.icon})});s.displayName=`ArrayRemove`,exports.ArrayRemove=s;
@@ -0,0 +1 @@
1
+ import{useArray as e,useIndex as t}from"../array-context.js";import{useField as n}from"@formily/react";import r from"react";import{Button as i}from"@pixpilot/shadcn-ui";import{Trash2Icon as a}from"lucide-react";import{jsx as o}from"react/jsx-runtime";const s=r.forwardRef((r,s)=>{let c=t(r.index),l=n(),u=e();return!u||u.field?.pattern!==`editable`?null:o(i,{type:`button`,variant:`ghost`,size:`icon`,...r,disabled:l?.disabled||u.props?.disabled,ref:s,onClick:e=>{l?.disabled||u.props?.disabled||(e.stopPropagation(),!(r.onClick&&(r.onClick(e),e.defaultPrevented))&&c!==void 0&&(u.field?.remove?.(c).catch(console.error),u.props?.onRemove?.(c)))},children:r.icon===void 0?o(a,{className:`size-4`}):r.icon})});s.displayName=`ArrayRemove`;export{s as ArrayRemove};
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../array-context.cjs`);let n=require(`react`);n=e.__toESM(n);let r=require(`react/jsx-runtime`);r=e.__toESM(r);const i=e=>{let n=t.useArray();if(!n)return null;let{field:i}=n;return(0,r.jsx)(`span`,{children:e.title??i.title??``})};exports.ArrayTitle=i;
@@ -0,0 +1 @@
1
+ import{useArray as e}from"../array-context.js";import t from"react";import{jsx as n}from"react/jsx-runtime";const r=t=>{let r=e();if(!r)return null;let{field:i}=r;return n(`span`,{children:t.title??i.title??``})};export{r as ArrayTitle};
@@ -0,0 +1,30 @@
1
+ import { IArrayBaseAdditionProps } from "./addition.cjs";
2
+ import { IArrayBaseOperationProps } from "../types.cjs";
3
+ import { Schema } from "@formily/react";
4
+
5
+ //#region src/components/array-base/components/types.d.ts
6
+ interface ArrayBaseComponents {
7
+ Addition: React.FC<React.PropsWithChildren<IArrayBaseAdditionProps>>;
8
+ Remove: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
9
+ index?: number;
10
+ }>>;
11
+ MoveUp: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
12
+ index?: number;
13
+ }>>;
14
+ MoveDown: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
15
+ index?: number;
16
+ }>>;
17
+ Edit: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
18
+ index?: number;
19
+ }>>;
20
+ Index: React.FC;
21
+ Empty: React.FC;
22
+ Copy: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
23
+ index?: number;
24
+ }>>;
25
+ Label: React.FC;
26
+ }
27
+ type ArrayComponentTypes = keyof ArrayBaseComponents;
28
+ type ArrayOperationTypes = Exclude<ArrayComponentTypes, 'Addition' | 'Empty' | 'Index'>;
29
+ //#endregion
30
+ export { ArrayBaseComponents, ArrayOperationTypes };
@@ -0,0 +1,30 @@
1
+ import { IArrayBaseAdditionProps } from "./addition.js";
2
+ import { IArrayBaseOperationProps } from "../types.js";
3
+ import { Schema } from "@formily/react";
4
+
5
+ //#region src/components/array-base/components/types.d.ts
6
+ interface ArrayBaseComponents {
7
+ Addition: React.FC<React.PropsWithChildren<IArrayBaseAdditionProps>>;
8
+ Remove: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
9
+ index?: number;
10
+ }>>;
11
+ MoveUp: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
12
+ index?: number;
13
+ }>>;
14
+ MoveDown: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
15
+ index?: number;
16
+ }>>;
17
+ Edit: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
18
+ index?: number;
19
+ }>>;
20
+ Index: React.FC;
21
+ Empty: React.FC;
22
+ Copy: React.FC<React.PropsWithChildren<IArrayBaseOperationProps & {
23
+ index?: number;
24
+ }>>;
25
+ Label: React.FC;
26
+ }
27
+ type ArrayComponentTypes = keyof ArrayBaseComponents;
28
+ type ArrayOperationTypes = Exclude<ArrayComponentTypes, 'Addition' | 'Empty' | 'Index'>;
29
+ //#endregion
30
+ export { ArrayBaseComponents, ArrayOperationTypes };
@@ -0,0 +1 @@
1
+ const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../utils/filter-and-sort-components.cjs`),n=require(`./get-array-components.cjs`);let r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`);i=e.__toESM(i);let a=require(`@pixpilot/shadcn`);a=e.__toESM(a);function o(e,o){return r.default.useMemo(()=>{let s=n.getArrayComponents(e),c=t.filterAndSortComponents(s,o),l=s.get(`Empty`)?.Component,u=s.get(`Addition`)?.Component;return{OperationComponents:r.default.memo(e=>(0,i.jsx)(i.Fragment,{children:c.map(([t,{Component:n}])=>(0,i.jsx)(r.default.Fragment,{children:(0,i.jsx)(n,{...e})},t))})),AddButton:e=>u?(0,i.jsx)(u,{...e}):null,EmptyArray:e=>l?(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(l,{...e})}):null,ItemIndex:e=>{let t=s.get(`Index`);return t?(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(t.Component,{...e})}):null},ArrayItemsContainer:e=>{let{className:t,schema:n,children:r,hasItems:o,basePath:s,...c}=e;return(0,i.jsxs)(`div`,{...c,className:(0,a.cn)(`space-y-3`,t),children:[!o&&l&&(0,i.jsx)(l,{basePath:s,schema:n}),r]})},ItemLabel:e=>{let t=s.get(`Label`);return t?(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(t.Component,{...e})}):null}}},[o,e])}exports.useArrayComponentRegistry=o;
@@ -0,0 +1,4 @@
1
+ import "./addition.cjs";
2
+ import "./types.cjs";
3
+ import { Schema } from "@formily/react";
4
+ import React from "react";
@@ -0,0 +1,4 @@
1
+ import "./addition.js";
2
+ import "./types.js";
3
+ import { Schema } from "@formily/react";
4
+ import React from "react";
@@ -0,0 +1 @@
1
+ import{filterAndSortComponents as e}from"../utils/filter-and-sort-components.js";import{getArrayComponents as t}from"./get-array-components.js";import n from"react";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";import{cn as o}from"@pixpilot/shadcn";function s(s,c){return n.useMemo(()=>{let l=t(s),u=e(l,c),d=l.get(`Empty`)?.Component,f=l.get(`Addition`)?.Component;return{OperationComponents:n.memo(e=>i(r,{children:u.map(([t,{Component:r}])=>i(n.Fragment,{children:i(r,{...e})},t))})),AddButton:e=>f?i(f,{...e}):null,EmptyArray:e=>d?i(r,{children:i(d,{...e})}):null,ItemIndex:e=>{let t=l.get(`Index`);return t?i(r,{children:i(t.Component,{...e})}):null},ArrayItemsContainer:e=>{let{className:t,schema:n,children:r,hasItems:s,basePath:c,...l}=e;return a(`div`,{...l,className:o(`space-y-3`,t),children:[!s&&d&&i(d,{basePath:c,schema:n}),r]})},ItemLabel:e=>{let t=l.get(`Label`);return t?i(r,{children:i(t.Component,{...e})}):null}}},[c,s])}export{s as useArrayComponentRegistry};
@@ -0,0 +1 @@
1
+ const e=[`MoveDown`,`MoveUp`,`Remove`],t=[`MoveDown`,`MoveUp`,`Edit`,`Remove`];exports.DEFAULT_EDITABLE_OPERATIONS=t,exports.DEFAULT_OPERATIONS=e;
@@ -0,0 +1 @@
1
+ const e=[`MoveDown`,`MoveUp`,`Remove`],t=[`MoveDown`,`MoveUp`,`Edit`,`Remove`];export{t as DEFAULT_EDITABLE_OPERATIONS,e as DEFAULT_OPERATIONS};
@@ -0,0 +1 @@
1
+ const e=require(`./array-base.cjs`),t=require(`./component-context.cjs`);
@@ -0,0 +1,3 @@
1
+ import { ArrayBaseMixins, ArrayComponentProps, ComposedArrayProps, IArrayBaseOperationProps, IArrayBaseProps } from "./types.cjs";
2
+ import { ArrayBase } from "./array-base.cjs";
3
+ import "./component-context.cjs";
@@ -0,0 +1,3 @@
1
+ import { ArrayBaseMixins, ArrayComponentProps, ComposedArrayProps, IArrayBaseOperationProps, IArrayBaseProps } from "./types.js";
2
+ import { ArrayBase } from "./array-base.js";
3
+ import "./component-context.js";
@@ -0,0 +1 @@
1
+ import{ArrayBase as e}from"./array-base.js";import{ArrayComponentProvider as t,Provider as n,useArrayComponents as r}from"./component-context.js";
@@ -0,0 +1,37 @@
1
+ import { ArrayBaseComponents, ArrayOperationTypes } from "./components/types.cjs";
2
+ import { IArrayBaseContext } from "./array-context.cjs";
3
+ import { Button } from "@pixpilot/shadcn-ui";
4
+
5
+ //#region src/components/array-base/types.d.ts
6
+ interface ArrayBaseMixins extends ArrayBaseComponents {
7
+ useArray: () => IArrayBaseContext | null;
8
+ useIndex: (index?: number) => number | undefined;
9
+ useRecord: (record?: number) => any;
10
+ }
11
+ interface IArrayBaseProps {
12
+ disabled?: boolean;
13
+ onAdd?: (index: number) => void;
14
+ onRemove?: (index: number) => void;
15
+ onMoveDown?: (index: number) => void;
16
+ onMoveUp?: (index: number) => void;
17
+ onEdit?: (index: number) => void;
18
+ onCopy?: (index: number) => void;
19
+ }
20
+ interface IArrayBaseOperationProps extends React.ComponentProps<typeof Button> {
21
+ title?: string;
22
+ index?: number;
23
+ icon?: React.ReactNode;
24
+ }
25
+ type ComposedArrayProps<T = Record<string, unknown>> = React.FC<React.PropsWithChildren<React.HTMLAttributes<HTMLDivElement> & IArrayBaseProps & {
26
+ /**
27
+ * Array of operation types to display as default buttons. Set to false to disable all default operations.
28
+ * @default 'MoveDown', 'MoveUp', 'Remove'
29
+ */
30
+ operations?: ArrayOperationTypes[] | false;
31
+ } & T>> & ArrayBaseMixins;
32
+ interface ArrayComponentProps extends React.PropsWithChildren<React.HTMLAttributes<HTMLDivElement> & IArrayBaseProps & {
33
+ operations?: ArrayOperationTypes[] | false;
34
+ title?: string;
35
+ }> {}
36
+ //#endregion
37
+ export { ArrayBaseMixins, ArrayComponentProps, ComposedArrayProps, IArrayBaseOperationProps, IArrayBaseProps };