@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.
- package/LICENSE +21 -0
- package/README.md +204 -0
- package/dist/_virtual/rolldown_runtime.cjs +1 -0
- package/dist/_virtual/rolldown_runtime.js +1 -0
- package/dist/components/array-base/array-base.cjs +1 -0
- package/dist/components/array-base/array-base.d.cts +13 -0
- package/dist/components/array-base/array-base.d.ts +13 -0
- package/dist/components/array-base/array-base.js +1 -0
- package/dist/components/array-base/array-context.cjs +1 -0
- package/dist/components/array-base/array-context.d.cts +17 -0
- package/dist/components/array-base/array-context.d.ts +17 -0
- package/dist/components/array-base/array-context.js +1 -0
- package/dist/components/array-base/component-context.cjs +1 -0
- package/dist/components/array-base/component-context.d.cts +3 -0
- package/dist/components/array-base/component-context.d.ts +3 -0
- package/dist/components/array-base/component-context.js +1 -0
- package/dist/components/array-base/components/addition.cjs +1 -0
- package/dist/components/array-base/components/addition.d.cts +13 -0
- package/dist/components/array-base/components/addition.d.ts +13 -0
- package/dist/components/array-base/components/addition.js +1 -0
- package/dist/components/array-base/components/array-copy.cjs +1 -0
- package/dist/components/array-base/components/array-copy.js +1 -0
- package/dist/components/array-base/components/array-index.cjs +1 -0
- package/dist/components/array-base/components/array-index.js +1 -0
- package/dist/components/array-base/components/array-item-label.cjs +1 -0
- package/dist/components/array-base/components/array-item-label.js +1 -0
- package/dist/components/array-base/components/components.cjs +1 -0
- package/dist/components/array-base/components/components.js +1 -0
- package/dist/components/array-base/components/edit.cjs +1 -0
- package/dist/components/array-base/components/edit.js +1 -0
- package/dist/components/array-base/components/empty.cjs +1 -0
- package/dist/components/array-base/components/empty.js +1 -0
- package/dist/components/array-base/components/get-array-components.cjs +1 -0
- package/dist/components/array-base/components/get-array-components.js +1 -0
- package/dist/components/array-base/components/move-down.cjs +1 -0
- package/dist/components/array-base/components/move-down.js +1 -0
- package/dist/components/array-base/components/move-up.cjs +1 -0
- package/dist/components/array-base/components/move-up.js +1 -0
- package/dist/components/array-base/components/remove.cjs +1 -0
- package/dist/components/array-base/components/remove.js +1 -0
- package/dist/components/array-base/components/title.cjs +1 -0
- package/dist/components/array-base/components/title.js +1 -0
- package/dist/components/array-base/components/types.d.cts +30 -0
- package/dist/components/array-base/components/types.d.ts +30 -0
- package/dist/components/array-base/components/use-array-components-registry.cjs +1 -0
- package/dist/components/array-base/components/use-array-components-registry.d.cts +4 -0
- package/dist/components/array-base/components/use-array-components-registry.d.ts +4 -0
- package/dist/components/array-base/components/use-array-components-registry.js +1 -0
- package/dist/components/array-base/constants/index.cjs +1 -0
- package/dist/components/array-base/constants/index.js +1 -0
- package/dist/components/array-base/index.cjs +1 -0
- package/dist/components/array-base/index.d.cts +3 -0
- package/dist/components/array-base/index.d.ts +3 -0
- package/dist/components/array-base/index.js +1 -0
- package/dist/components/array-base/types.d.cts +37 -0
- package/dist/components/array-base/types.d.ts +37 -0
- package/dist/components/array-base/utils/filter-and-sort-components.cjs +1 -0
- package/dist/components/array-base/utils/filter-and-sort-components.js +1 -0
- package/dist/components/array-base/utils/is-array-component.cjs +1 -0
- package/dist/components/array-base/utils/is-array-component.js +1 -0
- package/dist/components/array-cards/array-cards.cjs +1 -0
- package/dist/components/array-cards/array-cards.d.cts +7 -0
- package/dist/components/array-cards/array-cards.d.ts +7 -0
- package/dist/components/array-cards/array-cards.js +1 -0
- package/dist/components/array-cards/index.cjs +1 -0
- package/dist/components/array-cards/index.d.cts +1 -0
- package/dist/components/array-cards/index.d.ts +1 -0
- package/dist/components/array-cards/index.js +1 -0
- package/dist/components/array-cards/item.cjs +1 -0
- package/dist/components/array-cards/item.js +1 -0
- package/dist/components/array-collapse/array-collapse.cjs +1 -0
- package/dist/components/array-collapse/array-collapse.d.cts +12 -0
- package/dist/components/array-collapse/array-collapse.d.ts +12 -0
- package/dist/components/array-collapse/array-collapse.js +1 -0
- package/dist/components/array-collapse/index.cjs +1 -0
- package/dist/components/array-collapse/index.d.cts +1 -0
- package/dist/components/array-collapse/index.d.ts +1 -0
- package/dist/components/array-collapse/index.js +1 -0
- package/dist/components/array-collapse/item.cjs +1 -0
- package/dist/components/array-collapse/item.js +1 -0
- package/dist/components/array-common/array-items-list.cjs +1 -0
- package/dist/components/array-common/array-items-list.js +1 -0
- package/dist/components/array-common/create-active-item-manager.cjs +1 -0
- package/dist/components/array-common/create-active-item-manager.js +1 -0
- package/dist/components/array-common/index.cjs +1 -0
- package/dist/components/array-common/index.js +1 -0
- package/dist/components/array-common/item-wrapper.cjs +1 -0
- package/dist/components/array-common/item-wrapper.js +1 -0
- package/dist/components/array-common/list-item.cjs +1 -0
- package/dist/components/array-common/list-item.js +1 -0
- package/dist/components/array-common/use-array-editor.cjs +1 -0
- package/dist/components/array-common/use-array-editor.js +1 -0
- package/dist/components/array-dialog/array-dialog.cjs +1 -0
- package/dist/components/array-dialog/array-dialog.js +1 -0
- package/dist/components/array-dialog/edit-dialog.cjs +1 -0
- package/dist/components/array-dialog/edit-dialog.js +1 -0
- package/dist/components/array-dialog/index.cjs +1 -0
- package/dist/components/array-dialog/index.js +1 -0
- package/dist/components/array-popover/array-popover.cjs +1 -0
- package/dist/components/array-popover/array-popover.js +1 -0
- package/dist/components/array-popover/index.cjs +1 -0
- package/dist/components/array-popover/index.js +1 -0
- package/dist/components/array-popover/popover.cjs +1 -0
- package/dist/components/array-popover/popover.js +1 -0
- package/dist/components/checkbox.cjs +1 -0
- package/dist/components/checkbox.d.cts +11 -0
- package/dist/components/checkbox.d.ts +11 -0
- package/dist/components/checkbox.js +1 -0
- package/dist/components/column.cjs +1 -0
- package/dist/components/column.d.cts +41 -0
- package/dist/components/column.d.ts +41 -0
- package/dist/components/column.js +1 -0
- package/dist/components/combobox.cjs +1 -0
- package/dist/components/combobox.d.cts +6 -0
- package/dist/components/combobox.d.ts +6 -0
- package/dist/components/combobox.js +1 -0
- package/dist/components/date-picker.cjs +1 -0
- package/dist/components/date-picker.d.cts +17 -0
- package/dist/components/date-picker.d.ts +17 -0
- package/dist/components/date-picker.js +1 -0
- package/dist/components/file-upload-inline.cjs +3 -0
- package/dist/components/file-upload-inline.d.cts +12 -0
- package/dist/components/file-upload-inline.d.ts +12 -0
- package/dist/components/file-upload-inline.js +3 -0
- package/dist/components/form-grid.cjs +1 -0
- package/dist/components/form-grid.d.cts +12 -0
- package/dist/components/form-grid.d.ts +12 -0
- package/dist/components/form-grid.js +1 -0
- package/dist/components/form-item.cjs +3 -0
- package/dist/components/form-item.d.cts +21 -0
- package/dist/components/form-item.d.ts +21 -0
- package/dist/components/form-item.js +3 -0
- package/dist/components/form.cjs +1 -0
- package/dist/components/form.d.cts +26 -0
- package/dist/components/form.d.ts +26 -0
- package/dist/components/form.js +1 -0
- package/dist/components/input.cjs +1 -0
- package/dist/components/input.d.cts +11 -0
- package/dist/components/input.d.ts +11 -0
- package/dist/components/input.js +1 -0
- package/dist/components/number-input.cjs +1 -0
- package/dist/components/number-input.d.cts +9 -0
- package/dist/components/number-input.d.ts +9 -0
- package/dist/components/number-input.js +1 -0
- package/dist/components/radio.cjs +1 -0
- package/dist/components/radio.d.cts +24 -0
- package/dist/components/radio.d.ts +24 -0
- package/dist/components/radio.js +1 -0
- package/dist/components/row.cjs +1 -0
- package/dist/components/row.d.cts +41 -0
- package/dist/components/row.d.ts +41 -0
- package/dist/components/row.js +1 -0
- package/dist/components/schema-field.cjs +1 -0
- package/dist/components/schema-field.d.cts +396 -0
- package/dist/components/schema-field.d.ts +396 -0
- package/dist/components/schema-field.js +1 -0
- package/dist/components/select.cjs +1 -0
- package/dist/components/select.d.cts +6 -0
- package/dist/components/select.d.ts +6 -0
- package/dist/components/select.js +1 -0
- package/dist/components/separator.cjs +1 -0
- package/dist/components/separator.d.cts +11 -0
- package/dist/components/separator.d.ts +11 -0
- package/dist/components/separator.js +1 -0
- package/dist/components/slider.cjs +1 -0
- package/dist/components/slider.d.cts +12 -0
- package/dist/components/slider.d.ts +12 -0
- package/dist/components/slider.js +1 -0
- package/dist/components/switch.cjs +1 -0
- package/dist/components/switch.d.cts +11 -0
- package/dist/components/switch.d.ts +11 -0
- package/dist/components/switch.js +1 -0
- package/dist/components/tags-input-inline.cjs +1 -0
- package/dist/components/tags-input-inline.d.cts +15 -0
- package/dist/components/tags-input-inline.d.ts +15 -0
- package/dist/components/tags-input-inline.js +1 -0
- package/dist/components/textarea.cjs +1 -0
- package/dist/components/textarea.d.cts +9 -0
- package/dist/components/textarea.d.ts +9 -0
- package/dist/components/textarea.js +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +33 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +1 -0
- package/dist/utils/create-panel-state-manager.cjs +1 -0
- package/dist/utils/create-panel-state-manager.js +1 -0
- package/dist/utils/for-each-schema.cjs +1 -0
- package/dist/utils/for-each-schema.js +1 -0
- package/dist/utils/get-array-item-info.cjs +1 -0
- package/dist/utils/get-array-item-info.js +1 -0
- package/dist/utils/get-default-value.cjs +1 -0
- package/dist/utils/get-default-value.js +1 -0
- package/dist/utils/has-array-item-errors.cjs +1 -0
- package/dist/utils/has-array-item-errors.js +1 -0
- package/dist/utils/has-error.cjs +1 -0
- package/dist/utils/has-error.js +1 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/transform-schema.cjs +1 -0
- package/dist/utils/transform-schema.js +1 -0
- package/dist/utils/use-array-item-editor.cjs +1 -0
- package/dist/utils/use-array-item-editor.js +1 -0
- package/dist/utils/validate-array-item-fields.cjs +1 -0
- package/dist/utils/validate-array-item-fields.js +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 };
|