@object-ui/types 0.3.0 → 0.3.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/README.md +19 -11
- package/dist/api-types.d.ts +7 -0
- package/dist/api-types.d.ts.map +1 -1
- package/dist/api-types.js +4 -6
- package/dist/app.d.ts +7 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -3
- package/dist/base.d.ts +7 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +4 -6
- package/dist/complex.d.ts +68 -1
- package/dist/complex.d.ts.map +1 -1
- package/dist/complex.js +4 -5
- package/dist/crud.d.ts +7 -0
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +4 -6
- package/dist/data-display.d.ts +54 -2
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +4 -5
- package/dist/data.d.ts +16 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +4 -6
- package/dist/disclosure.d.ts +70 -1
- package/dist/disclosure.d.ts.map +1 -1
- package/dist/disclosure.js +4 -5
- package/dist/feedback.d.ts +68 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +4 -5
- package/dist/field-types.d.ts +386 -0
- package/dist/field-types.d.ts.map +1 -0
- package/dist/field-types.js +8 -0
- package/dist/form.d.ts +123 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +4 -5
- package/dist/index.d.ts +21 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -37
- package/dist/layout.d.ts +66 -16
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +4 -6
- package/dist/navigation.d.ts +102 -2
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +4 -5
- package/dist/objectql.d.ts +484 -54
- package/dist/objectql.d.ts.map +1 -1
- package/dist/objectql.js +4 -6
- package/dist/overlay.d.ts +31 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +4 -5
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/zod/base.zod.d.ts +202 -0
- package/dist/zod/base.zod.d.ts.map +1 -0
- package/dist/zod/base.zod.js +198 -0
- package/dist/zod/complex.zod.d.ts +742 -0
- package/dist/zod/complex.zod.d.ts.map +1 -0
- package/dist/zod/complex.zod.js +233 -0
- package/dist/zod/data-display.zod.d.ts +996 -0
- package/dist/zod/data-display.zod.d.ts.map +1 -0
- package/dist/zod/data-display.zod.js +266 -0
- package/dist/zod/disclosure.zod.d.ts +267 -0
- package/dist/zod/disclosure.zod.d.ts.map +1 -0
- package/dist/zod/disclosure.zod.js +84 -0
- package/dist/zod/feedback.zod.d.ts +538 -0
- package/dist/zod/feedback.zod.d.ts.map +1 -0
- package/dist/zod/feedback.zod.js +127 -0
- package/dist/zod/form.zod.d.ts +1308 -0
- package/dist/zod/form.zod.d.ts.map +1 -0
- package/dist/zod/form.zod.js +406 -0
- package/dist/zod/index.zod.d.ts +3174 -0
- package/dist/zod/index.zod.d.ts.map +1 -0
- package/dist/zod/index.zod.js +106 -0
- package/dist/zod/layout.zod.d.ts +1048 -0
- package/dist/zod/layout.zod.d.ts.map +1 -0
- package/dist/zod/layout.zod.js +241 -0
- package/dist/zod/navigation.zod.d.ts +486 -0
- package/dist/zod/navigation.zod.d.ts.map +1 -0
- package/dist/zod/navigation.zod.js +142 -0
- package/dist/zod/objectql.zod.d.ts +1261 -0
- package/dist/zod/objectql.zod.d.ts.map +1 -0
- package/dist/zod/objectql.zod.js +248 -0
- package/dist/zod/overlay.zod.d.ts +691 -0
- package/dist/zod/overlay.zod.d.ts.map +1 -0
- package/dist/zod/overlay.zod.js +179 -0
- package/package.json +9 -1
- package/src/api-types.ts +8 -0
- package/src/app.ts +8 -0
- package/src/base.ts +8 -0
- package/src/complex.ts +69 -1
- package/src/crud.ts +8 -0
- package/src/data-display.ts +60 -2
- package/src/data.ts +18 -0
- package/src/disclosure.ts +74 -1
- package/src/feedback.ts +76 -2
- package/src/field-types.ts +465 -0
- package/src/form.ts +131 -1
- package/src/index.ts +91 -8
- package/src/layout.ts +70 -15
- package/src/navigation.ts +109 -2
- package/src/objectql.ts +555 -59
- package/src/overlay.ts +35 -1
- package/src/registry.ts +8 -0
- package/src/zod/README.md +329 -0
- package/src/zod/base.zod.ts +229 -0
- package/src/zod/complex.zod.ts +258 -0
- package/src/zod/data-display.zod.ts +290 -0
- package/src/zod/disclosure.zod.ts +92 -0
- package/src/zod/feedback.zod.ts +138 -0
- package/src/zod/form.zod.ts +434 -0
- package/src/zod/index.zod.ts +277 -0
- package/src/zod/layout.zod.ts +262 -0
- package/src/zod/navigation.zod.ts +159 -0
- package/src/zod/objectql.zod.ts +268 -0
- package/src/zod/overlay.zod.ts +196 -0
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @object-ui/types - Field Type Definitions
|
|
11
|
+
*
|
|
12
|
+
* Comprehensive field type system for ObjectQL protocol.
|
|
13
|
+
* Defines all field types supported in ObjectTable and ObjectForm components.
|
|
14
|
+
*
|
|
15
|
+
* @module field-types
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Base field metadata interface
|
|
21
|
+
* Common properties shared by all field types
|
|
22
|
+
*/
|
|
23
|
+
export interface BaseFieldMetadata {
|
|
24
|
+
/**
|
|
25
|
+
* Field name/identifier
|
|
26
|
+
*/
|
|
27
|
+
name: string;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Display label
|
|
31
|
+
*/
|
|
32
|
+
label?: string;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Field type identifier
|
|
36
|
+
*/
|
|
37
|
+
type: string;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Help text or description
|
|
41
|
+
*/
|
|
42
|
+
help?: string;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Description text
|
|
46
|
+
*/
|
|
47
|
+
description?: string;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Whether field is required
|
|
51
|
+
*/
|
|
52
|
+
required?: boolean;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Whether field is read-only
|
|
56
|
+
*/
|
|
57
|
+
readonly?: boolean;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Placeholder text
|
|
61
|
+
*/
|
|
62
|
+
placeholder?: string;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Default value
|
|
66
|
+
*/
|
|
67
|
+
defaultValue?: any;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Field permissions
|
|
71
|
+
*/
|
|
72
|
+
permissions?: {
|
|
73
|
+
read?: boolean;
|
|
74
|
+
write?: boolean;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Whether field is sortable
|
|
79
|
+
*/
|
|
80
|
+
sortable?: boolean;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Whether field is filterable
|
|
84
|
+
*/
|
|
85
|
+
filterable?: boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Conditional visibility expression
|
|
89
|
+
*/
|
|
90
|
+
visible_on?: VisibilityCondition;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Custom validation function or rules
|
|
94
|
+
*/
|
|
95
|
+
validate?: ValidationFunction | ValidationRule;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Visibility condition type
|
|
100
|
+
*/
|
|
101
|
+
export type VisibilityCondition = {
|
|
102
|
+
field: string;
|
|
103
|
+
operator?: '=' | '!=' | '>' | '>=' | '<' | '<=' | 'in';
|
|
104
|
+
value?: any;
|
|
105
|
+
and?: VisibilityCondition[];
|
|
106
|
+
or?: VisibilityCondition[];
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Validation function type
|
|
111
|
+
*/
|
|
112
|
+
export type ValidationFunction = (value: any) => boolean | string | Promise<boolean | string>;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Validation rule type
|
|
116
|
+
*/
|
|
117
|
+
export type ValidationRule = {
|
|
118
|
+
required?: boolean | string;
|
|
119
|
+
minLength?: number;
|
|
120
|
+
maxLength?: number;
|
|
121
|
+
min?: number;
|
|
122
|
+
max?: number;
|
|
123
|
+
pattern?: string | RegExp;
|
|
124
|
+
custom?: ValidationFunction;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Text field metadata
|
|
129
|
+
*/
|
|
130
|
+
export interface TextFieldMetadata extends BaseFieldMetadata {
|
|
131
|
+
type: 'text';
|
|
132
|
+
min_length?: number;
|
|
133
|
+
max_length?: number;
|
|
134
|
+
pattern?: string | RegExp;
|
|
135
|
+
pattern_message?: string;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Long text/textarea field metadata
|
|
140
|
+
*/
|
|
141
|
+
export interface TextareaFieldMetadata extends BaseFieldMetadata {
|
|
142
|
+
type: 'textarea';
|
|
143
|
+
min_length?: number;
|
|
144
|
+
max_length?: number;
|
|
145
|
+
rows?: number;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Markdown field metadata
|
|
150
|
+
*/
|
|
151
|
+
export interface MarkdownFieldMetadata extends BaseFieldMetadata {
|
|
152
|
+
type: 'markdown';
|
|
153
|
+
max_length?: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* HTML/Rich text field metadata
|
|
158
|
+
*/
|
|
159
|
+
export interface HtmlFieldMetadata extends BaseFieldMetadata {
|
|
160
|
+
type: 'html';
|
|
161
|
+
max_length?: number;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Number field metadata
|
|
166
|
+
*/
|
|
167
|
+
export interface NumberFieldMetadata extends BaseFieldMetadata {
|
|
168
|
+
type: 'number';
|
|
169
|
+
min?: number;
|
|
170
|
+
max?: number;
|
|
171
|
+
precision?: number;
|
|
172
|
+
step?: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Currency field metadata
|
|
177
|
+
*/
|
|
178
|
+
export interface CurrencyFieldMetadata extends BaseFieldMetadata {
|
|
179
|
+
type: 'currency';
|
|
180
|
+
currency?: string;
|
|
181
|
+
precision?: number;
|
|
182
|
+
min?: number;
|
|
183
|
+
max?: number;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Percent field metadata
|
|
188
|
+
*/
|
|
189
|
+
export interface PercentFieldMetadata extends BaseFieldMetadata {
|
|
190
|
+
type: 'percent';
|
|
191
|
+
precision?: number;
|
|
192
|
+
min?: number;
|
|
193
|
+
max?: number;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Boolean field metadata
|
|
198
|
+
*/
|
|
199
|
+
export interface BooleanFieldMetadata extends BaseFieldMetadata {
|
|
200
|
+
type: 'boolean';
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Date field metadata
|
|
205
|
+
*/
|
|
206
|
+
export interface DateFieldMetadata extends BaseFieldMetadata {
|
|
207
|
+
type: 'date';
|
|
208
|
+
format?: string;
|
|
209
|
+
min_date?: string | Date;
|
|
210
|
+
max_date?: string | Date;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* DateTime field metadata
|
|
215
|
+
*/
|
|
216
|
+
export interface DateTimeFieldMetadata extends BaseFieldMetadata {
|
|
217
|
+
type: 'datetime';
|
|
218
|
+
format?: string;
|
|
219
|
+
min_date?: string | Date;
|
|
220
|
+
max_date?: string | Date;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Time field metadata
|
|
225
|
+
*/
|
|
226
|
+
export interface TimeFieldMetadata extends BaseFieldMetadata {
|
|
227
|
+
type: 'time';
|
|
228
|
+
format?: string;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Select option
|
|
233
|
+
*/
|
|
234
|
+
export interface SelectOptionMetadata {
|
|
235
|
+
label: string;
|
|
236
|
+
value: string;
|
|
237
|
+
color?: string;
|
|
238
|
+
icon?: string;
|
|
239
|
+
disabled?: boolean;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Select field metadata
|
|
244
|
+
*/
|
|
245
|
+
export interface SelectFieldMetadata extends BaseFieldMetadata {
|
|
246
|
+
type: 'select';
|
|
247
|
+
options?: SelectOptionMetadata[];
|
|
248
|
+
multiple?: boolean;
|
|
249
|
+
searchable?: boolean;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Email field metadata
|
|
254
|
+
*/
|
|
255
|
+
export interface EmailFieldMetadata extends BaseFieldMetadata {
|
|
256
|
+
type: 'email';
|
|
257
|
+
max_length?: number;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Phone field metadata
|
|
262
|
+
*/
|
|
263
|
+
export interface PhoneFieldMetadata extends BaseFieldMetadata {
|
|
264
|
+
type: 'phone';
|
|
265
|
+
format?: string;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* URL field metadata
|
|
270
|
+
*/
|
|
271
|
+
export interface UrlFieldMetadata extends BaseFieldMetadata {
|
|
272
|
+
type: 'url';
|
|
273
|
+
max_length?: number;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Password field metadata
|
|
278
|
+
*/
|
|
279
|
+
export interface PasswordFieldMetadata extends BaseFieldMetadata {
|
|
280
|
+
type: 'password';
|
|
281
|
+
min_length?: number;
|
|
282
|
+
max_length?: number;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* File metadata
|
|
287
|
+
*/
|
|
288
|
+
export interface FileMetadata {
|
|
289
|
+
name: string;
|
|
290
|
+
original_name?: string;
|
|
291
|
+
size?: number;
|
|
292
|
+
mime_type?: string;
|
|
293
|
+
url?: string;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* File field metadata
|
|
298
|
+
*/
|
|
299
|
+
export interface FileFieldMetadata extends BaseFieldMetadata {
|
|
300
|
+
type: 'file';
|
|
301
|
+
multiple?: boolean;
|
|
302
|
+
accept?: string[];
|
|
303
|
+
max_size?: number;
|
|
304
|
+
max_files?: number;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Image field metadata
|
|
309
|
+
*/
|
|
310
|
+
export interface ImageFieldMetadata extends BaseFieldMetadata {
|
|
311
|
+
type: 'image';
|
|
312
|
+
multiple?: boolean;
|
|
313
|
+
accept?: string[];
|
|
314
|
+
max_size?: number;
|
|
315
|
+
max_files?: number;
|
|
316
|
+
max_width?: number;
|
|
317
|
+
max_height?: number;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Location field metadata
|
|
322
|
+
*/
|
|
323
|
+
export interface LocationFieldMetadata extends BaseFieldMetadata {
|
|
324
|
+
type: 'location';
|
|
325
|
+
default_zoom?: number;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Lookup/Master-Detail field metadata
|
|
330
|
+
*/
|
|
331
|
+
export interface LookupFieldMetadata extends BaseFieldMetadata {
|
|
332
|
+
type: 'lookup' | 'master_detail';
|
|
333
|
+
reference_to?: string;
|
|
334
|
+
reference_field?: string;
|
|
335
|
+
multiple?: boolean;
|
|
336
|
+
searchable?: boolean;
|
|
337
|
+
options?: SelectOptionMetadata[];
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Formula field metadata (read-only computed field)
|
|
342
|
+
*/
|
|
343
|
+
export interface FormulaFieldMetadata extends BaseFieldMetadata {
|
|
344
|
+
type: 'formula';
|
|
345
|
+
formula?: string;
|
|
346
|
+
return_type?: string;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Summary/Rollup field metadata (aggregation)
|
|
351
|
+
*/
|
|
352
|
+
export interface SummaryFieldMetadata extends BaseFieldMetadata {
|
|
353
|
+
type: 'summary';
|
|
354
|
+
summary_object?: string;
|
|
355
|
+
summary_field?: string;
|
|
356
|
+
summary_type?: 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Auto-number field metadata
|
|
361
|
+
*/
|
|
362
|
+
export interface AutoNumberFieldMetadata extends BaseFieldMetadata {
|
|
363
|
+
type: 'auto_number';
|
|
364
|
+
format?: string;
|
|
365
|
+
starting_number?: number;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* User/Owner field metadata
|
|
370
|
+
*/
|
|
371
|
+
export interface UserFieldMetadata extends BaseFieldMetadata {
|
|
372
|
+
type: 'user' | 'owner';
|
|
373
|
+
multiple?: boolean;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Object field metadata (JSON object)
|
|
378
|
+
*/
|
|
379
|
+
export interface ObjectFieldMetadata extends BaseFieldMetadata {
|
|
380
|
+
type: 'object';
|
|
381
|
+
schema?: Record<string, any>;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Vector field metadata (embeddings)
|
|
386
|
+
*/
|
|
387
|
+
export interface VectorFieldMetadata extends BaseFieldMetadata {
|
|
388
|
+
type: 'vector';
|
|
389
|
+
dimensions?: number;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Grid field metadata (sub-table)
|
|
394
|
+
*/
|
|
395
|
+
export interface GridFieldMetadata extends BaseFieldMetadata {
|
|
396
|
+
type: 'grid';
|
|
397
|
+
columns?: any[];
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Union type of all field metadata types
|
|
402
|
+
*/
|
|
403
|
+
export type FieldMetadata =
|
|
404
|
+
| TextFieldMetadata
|
|
405
|
+
| TextareaFieldMetadata
|
|
406
|
+
| MarkdownFieldMetadata
|
|
407
|
+
| HtmlFieldMetadata
|
|
408
|
+
| NumberFieldMetadata
|
|
409
|
+
| CurrencyFieldMetadata
|
|
410
|
+
| PercentFieldMetadata
|
|
411
|
+
| BooleanFieldMetadata
|
|
412
|
+
| DateFieldMetadata
|
|
413
|
+
| DateTimeFieldMetadata
|
|
414
|
+
| TimeFieldMetadata
|
|
415
|
+
| SelectFieldMetadata
|
|
416
|
+
| EmailFieldMetadata
|
|
417
|
+
| PhoneFieldMetadata
|
|
418
|
+
| UrlFieldMetadata
|
|
419
|
+
| PasswordFieldMetadata
|
|
420
|
+
| FileFieldMetadata
|
|
421
|
+
| ImageFieldMetadata
|
|
422
|
+
| LocationFieldMetadata
|
|
423
|
+
| LookupFieldMetadata
|
|
424
|
+
| FormulaFieldMetadata
|
|
425
|
+
| SummaryFieldMetadata
|
|
426
|
+
| AutoNumberFieldMetadata
|
|
427
|
+
| UserFieldMetadata
|
|
428
|
+
| ObjectFieldMetadata
|
|
429
|
+
| VectorFieldMetadata
|
|
430
|
+
| GridFieldMetadata;
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Object schema definition
|
|
434
|
+
*/
|
|
435
|
+
export interface ObjectSchemaMetadata {
|
|
436
|
+
/**
|
|
437
|
+
* Object name
|
|
438
|
+
*/
|
|
439
|
+
name: string;
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Display label
|
|
443
|
+
*/
|
|
444
|
+
label?: string;
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Object description
|
|
448
|
+
*/
|
|
449
|
+
description?: string;
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Fields definition
|
|
453
|
+
*/
|
|
454
|
+
fields: Record<string, FieldMetadata>;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Permissions
|
|
458
|
+
*/
|
|
459
|
+
permissions?: {
|
|
460
|
+
create?: boolean;
|
|
461
|
+
read?: boolean;
|
|
462
|
+
update?: boolean;
|
|
463
|
+
delete?: boolean;
|
|
464
|
+
};
|
|
465
|
+
}
|
package/src/form.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
/**
|
|
2
10
|
* @object-ui/types - Form Component Schemas
|
|
3
11
|
*
|
|
@@ -932,6 +940,126 @@ export interface LabelSchema extends BaseSchema {
|
|
|
932
940
|
htmlFor?: string;
|
|
933
941
|
}
|
|
934
942
|
|
|
943
|
+
/**
|
|
944
|
+
* Combobox option
|
|
945
|
+
*/
|
|
946
|
+
export interface ComboboxOption {
|
|
947
|
+
/**
|
|
948
|
+
* Option value
|
|
949
|
+
*/
|
|
950
|
+
value: string;
|
|
951
|
+
/**
|
|
952
|
+
* Option label (displayed to user)
|
|
953
|
+
*/
|
|
954
|
+
label: string;
|
|
955
|
+
/**
|
|
956
|
+
* Whether option is disabled
|
|
957
|
+
*/
|
|
958
|
+
disabled?: boolean;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* Combobox component (searchable select)
|
|
963
|
+
*/
|
|
964
|
+
export interface ComboboxSchema extends BaseSchema {
|
|
965
|
+
type: 'combobox';
|
|
966
|
+
/**
|
|
967
|
+
* Field name for form submission
|
|
968
|
+
*/
|
|
969
|
+
name?: string;
|
|
970
|
+
/**
|
|
971
|
+
* Combobox label
|
|
972
|
+
*/
|
|
973
|
+
label?: string;
|
|
974
|
+
/**
|
|
975
|
+
* Placeholder text
|
|
976
|
+
*/
|
|
977
|
+
placeholder?: string;
|
|
978
|
+
/**
|
|
979
|
+
* Combobox options
|
|
980
|
+
*/
|
|
981
|
+
options?: ComboboxOption[];
|
|
982
|
+
/**
|
|
983
|
+
* Default selected value
|
|
984
|
+
*/
|
|
985
|
+
defaultValue?: string;
|
|
986
|
+
/**
|
|
987
|
+
* Controlled value
|
|
988
|
+
*/
|
|
989
|
+
value?: string;
|
|
990
|
+
/**
|
|
991
|
+
* Whether field is disabled
|
|
992
|
+
*/
|
|
993
|
+
disabled?: boolean;
|
|
994
|
+
/**
|
|
995
|
+
* Help text or description
|
|
996
|
+
*/
|
|
997
|
+
description?: string;
|
|
998
|
+
/**
|
|
999
|
+
* Error message
|
|
1000
|
+
*/
|
|
1001
|
+
error?: string;
|
|
1002
|
+
/**
|
|
1003
|
+
* Change handler
|
|
1004
|
+
*/
|
|
1005
|
+
onChange?: (value: string) => void;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
/**
|
|
1009
|
+
* Command menu item
|
|
1010
|
+
*/
|
|
1011
|
+
export interface CommandItem {
|
|
1012
|
+
/**
|
|
1013
|
+
* Item value
|
|
1014
|
+
*/
|
|
1015
|
+
value: string;
|
|
1016
|
+
/**
|
|
1017
|
+
* Item label (displayed to user)
|
|
1018
|
+
*/
|
|
1019
|
+
label: string;
|
|
1020
|
+
/**
|
|
1021
|
+
* Item icon
|
|
1022
|
+
*/
|
|
1023
|
+
icon?: string;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* Command menu group
|
|
1028
|
+
*/
|
|
1029
|
+
export interface CommandGroup {
|
|
1030
|
+
/**
|
|
1031
|
+
* Group heading
|
|
1032
|
+
*/
|
|
1033
|
+
heading?: string;
|
|
1034
|
+
/**
|
|
1035
|
+
* Group items
|
|
1036
|
+
*/
|
|
1037
|
+
items: CommandItem[];
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/**
|
|
1041
|
+
* Command component (command palette)
|
|
1042
|
+
*/
|
|
1043
|
+
export interface CommandSchema extends BaseSchema {
|
|
1044
|
+
type: 'command';
|
|
1045
|
+
/**
|
|
1046
|
+
* Placeholder text
|
|
1047
|
+
*/
|
|
1048
|
+
placeholder?: string;
|
|
1049
|
+
/**
|
|
1050
|
+
* Empty state text
|
|
1051
|
+
*/
|
|
1052
|
+
emptyText?: string;
|
|
1053
|
+
/**
|
|
1054
|
+
* Command groups
|
|
1055
|
+
*/
|
|
1056
|
+
groups?: CommandGroup[];
|
|
1057
|
+
/**
|
|
1058
|
+
* Change handler
|
|
1059
|
+
*/
|
|
1060
|
+
onChange?: (value: string) => void;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
935
1063
|
/**
|
|
936
1064
|
* Union type of all form schemas
|
|
937
1065
|
*/
|
|
@@ -950,5 +1078,7 @@ export type FormComponentSchema =
|
|
|
950
1078
|
| CalendarSchema
|
|
951
1079
|
| InputOTPSchema
|
|
952
1080
|
| FormSchema
|
|
953
|
-
| LabelSchema
|
|
1081
|
+
| LabelSchema
|
|
1082
|
+
| ComboboxSchema
|
|
1083
|
+
| CommandSchema;
|
|
954
1084
|
|