@object-ui/types 0.3.0 → 0.5.0
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 +17 -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/blocks.d.ts +332 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +8 -0
- 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 +181 -3
- 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-protocol.d.ts +1268 -0
- package/dist/data-protocol.d.ts.map +1 -0
- package/dist/data-protocol.js +8 -0
- package/dist/data.d.ts +22 -1
- 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 +728 -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 +48 -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 +491 -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/plugin-scope.d.ts +194 -0
- package/dist/plugin-scope.d.ts.map +1 -0
- package/dist/plugin-scope.js +8 -0
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/reports.d.ts +336 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +8 -0
- package/dist/theme.d.ts +289 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +8 -0
- package/dist/ui-action.d.ts +175 -0
- package/dist/ui-action.d.ts.map +1 -0
- package/dist/ui-action.js +8 -0
- package/dist/views.d.ts +417 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +8 -0
- package/dist/zod/app.zod.d.ts +120 -0
- package/dist/zod/app.zod.d.ts.map +1 -0
- package/dist/zod/app.zod.js +60 -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/blocks.zod.d.ts +834 -0
- package/dist/zod/blocks.zod.d.ts.map +1 -0
- package/dist/zod/blocks.zod.js +145 -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/crud.zod.d.ts +598 -0
- package/dist/zod/crud.zod.d.ts.map +1 -0
- package/dist/zod/crud.zod.js +230 -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 +4985 -0
- package/dist/zod/index.zod.d.ts.map +1 -0
- package/dist/zod/index.zod.js +183 -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/dist/zod/reports.zod.d.ts +1628 -0
- package/dist/zod/reports.zod.d.ts.map +1 -0
- package/dist/zod/reports.zod.js +152 -0
- package/dist/zod/theme.zod.d.ts +611 -0
- package/dist/zod/theme.zod.d.ts.map +1 -0
- package/dist/zod/theme.zod.js +130 -0
- package/dist/zod/views.zod.d.ts +675 -0
- package/dist/zod/views.zod.d.ts.map +1 -0
- package/dist/zod/views.zod.js +159 -0
- package/package.json +9 -1
- package/src/__tests__/namespace-exports.test.ts +80 -0
- package/src/__tests__/phase2-schemas.test.ts +639 -0
- package/src/api-types.ts +8 -0
- package/src/app.ts +20 -0
- package/src/base.ts +8 -0
- package/src/blocks.ts +405 -0
- package/src/complex.ts +69 -1
- package/src/crud.ts +185 -3
- package/src/data-display.ts +60 -2
- package/src/data-protocol.ts +1679 -0
- package/src/data.ts +21 -1
- package/src/disclosure.ts +74 -1
- package/src/feedback.ts +76 -2
- package/src/field-types.ts +846 -0
- package/src/form.ts +131 -1
- package/src/index.ts +305 -8
- package/src/layout.ts +70 -15
- package/src/navigation.ts +109 -2
- package/src/objectql.ts +563 -59
- package/src/overlay.ts +35 -1
- package/src/plugin-scope.ts +210 -0
- package/src/registry.ts +8 -0
- package/src/reports.ts +408 -0
- package/src/theme.ts +351 -0
- package/src/ui-action.ts +276 -0
- package/src/views.ts +429 -0
- package/src/zod/README.md +329 -0
- package/src/zod/app.zod.ts +72 -0
- package/src/zod/base.zod.ts +229 -0
- package/src/zod/blocks.zod.ts +170 -0
- package/src/zod/complex.zod.ts +258 -0
- package/src/zod/crud.zod.ts +259 -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 +425 -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
- package/src/zod/reports.zod.ts +183 -0
- package/src/zod/theme.zod.ts +155 -0
- package/src/zod/views.zod.ts +182 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectql.zod.d.ts","sourceRoot":"","sources":["../../src/zod/objectql.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;EAAoD,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;iBAM5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAczB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;iBAU3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;iBAEhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;iBAG3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8B3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0B3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAK1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;iBAM7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAUlC,CAAC"}
|
|
@@ -0,0 +1,248 @@
|
|
|
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
|
+
* @object-ui/types/zod - ObjectQL Component Zod Validators
|
|
10
|
+
*
|
|
11
|
+
* Zod validation schemas for ObjectQL-specific components.
|
|
12
|
+
* Following @objectstack/spec UI specification format.
|
|
13
|
+
*
|
|
14
|
+
* @module zod/objectql
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
import { BaseSchema } from './base.zod.js';
|
|
19
|
+
/**
|
|
20
|
+
* HTTP Method Schema
|
|
21
|
+
*/
|
|
22
|
+
export const HttpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']);
|
|
23
|
+
/**
|
|
24
|
+
* HTTP Request Schema
|
|
25
|
+
*/
|
|
26
|
+
export const HttpRequestSchema = z.object({
|
|
27
|
+
url: z.string().describe('API endpoint URL'),
|
|
28
|
+
method: HttpMethodSchema.optional().describe('HTTP method'),
|
|
29
|
+
headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),
|
|
30
|
+
params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),
|
|
31
|
+
body: z.union([z.record(z.string(), z.unknown()), z.string(), z.instanceof(FormData), z.instanceof(Blob)]).optional().describe('Request body'),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* View Data Source Schema
|
|
35
|
+
*/
|
|
36
|
+
export const ViewDataSchema = z.union([
|
|
37
|
+
z.object({
|
|
38
|
+
provider: z.literal('object'),
|
|
39
|
+
object: z.string().describe('Target object name'),
|
|
40
|
+
}),
|
|
41
|
+
z.object({
|
|
42
|
+
provider: z.literal('api'),
|
|
43
|
+
read: HttpRequestSchema.optional().describe('Read configuration'),
|
|
44
|
+
write: HttpRequestSchema.optional().describe('Write configuration'),
|
|
45
|
+
}),
|
|
46
|
+
z.object({
|
|
47
|
+
provider: z.literal('value'),
|
|
48
|
+
items: z.array(z.unknown()).describe('Static data array'),
|
|
49
|
+
}),
|
|
50
|
+
]);
|
|
51
|
+
/**
|
|
52
|
+
* List Column Schema
|
|
53
|
+
*/
|
|
54
|
+
export const ListColumnSchema = z.object({
|
|
55
|
+
field: z.string().describe('Field name'),
|
|
56
|
+
label: z.string().optional().describe('Display label'),
|
|
57
|
+
width: z.number().optional().describe('Column width'),
|
|
58
|
+
align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),
|
|
59
|
+
hidden: z.boolean().optional().describe('Hide column by default'),
|
|
60
|
+
sortable: z.boolean().optional().describe('Allow sorting'),
|
|
61
|
+
resizable: z.boolean().optional().describe('Allow resizing'),
|
|
62
|
+
wrap: z.boolean().optional().describe('Allow text wrapping'),
|
|
63
|
+
type: z.string().optional().describe('Renderer type override'),
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* Selection Config Schema
|
|
67
|
+
*/
|
|
68
|
+
export const SelectionConfigSchema = z.object({
|
|
69
|
+
type: z.enum(['none', 'single', 'multiple']).optional().describe('Selection mode'),
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Pagination Config Schema
|
|
73
|
+
*/
|
|
74
|
+
export const PaginationConfigSchema = z.object({
|
|
75
|
+
pageSize: z.number().optional().describe('Page size'),
|
|
76
|
+
pageSizeOptions: z.array(z.number()).optional().describe('Page size options'),
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Sort Config Schema
|
|
80
|
+
*/
|
|
81
|
+
export const SortConfigSchema = z.object({
|
|
82
|
+
field: z.string().describe('Field to sort by'),
|
|
83
|
+
order: z.enum(['asc', 'desc']).describe('Sort order'),
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* ObjectGrid Schema
|
|
87
|
+
*/
|
|
88
|
+
export const ObjectGridSchema = BaseSchema.extend({
|
|
89
|
+
type: z.literal('object-grid'),
|
|
90
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
91
|
+
data: ViewDataSchema.optional().describe('Data source configuration'),
|
|
92
|
+
columns: z.union([z.array(z.string()), z.array(ListColumnSchema)]).optional().describe('Columns configuration'),
|
|
93
|
+
filter: z.array(z.any()).optional().describe('Filter criteria'),
|
|
94
|
+
sort: z.union([z.string(), z.array(SortConfigSchema)]).optional().describe('Sort configuration'),
|
|
95
|
+
searchableFields: z.array(z.string()).optional().describe('Searchable fields'),
|
|
96
|
+
resizable: z.boolean().optional().describe('Enable column resizing'),
|
|
97
|
+
striped: z.boolean().optional().describe('Striped rows'),
|
|
98
|
+
bordered: z.boolean().optional().describe('Show borders'),
|
|
99
|
+
selection: SelectionConfigSchema.optional().describe('Selection configuration'),
|
|
100
|
+
pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),
|
|
101
|
+
// Legacy fields
|
|
102
|
+
fields: z.array(z.string()).optional(),
|
|
103
|
+
staticData: z.array(z.any()).optional(),
|
|
104
|
+
selectable: z.union([z.boolean(), z.enum(['single', 'multiple'])]).optional(),
|
|
105
|
+
pageSize: z.number().optional(),
|
|
106
|
+
showSearch: z.boolean().optional(),
|
|
107
|
+
showFilters: z.boolean().optional(),
|
|
108
|
+
showPagination: z.boolean().optional(),
|
|
109
|
+
defaultSort: z.object({ field: z.string(), order: z.enum(['asc', 'desc']) }).optional(),
|
|
110
|
+
defaultFilters: z.record(z.string(), z.any()).optional(),
|
|
111
|
+
operators: z.record(z.string(), z.any()).optional(), // Missing in previous TS scan but common
|
|
112
|
+
rowActions: z.array(z.string()).optional(),
|
|
113
|
+
batchActions: z.array(z.string()).optional(),
|
|
114
|
+
editable: z.boolean().optional(),
|
|
115
|
+
keyboardNavigation: z.boolean().optional(),
|
|
116
|
+
frozenColumns: z.number().optional(),
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* ObjectForm Schema
|
|
120
|
+
*/
|
|
121
|
+
export const ObjectFormSchema = BaseSchema.extend({
|
|
122
|
+
type: z.literal('object-form'),
|
|
123
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
124
|
+
mode: z.enum(['create', 'edit', 'view']).describe('Form mode'),
|
|
125
|
+
recordId: z.union([z.string(), z.number()]).optional().describe('Record ID'),
|
|
126
|
+
title: z.string().optional().describe('Form title'),
|
|
127
|
+
description: z.string().optional().describe('Form description'),
|
|
128
|
+
fields: z.array(z.string()).optional().describe('Included fields'),
|
|
129
|
+
customFields: z.array(z.any()).optional().describe('Custom field configs'),
|
|
130
|
+
initialData: z.record(z.string(), z.any()).optional().describe('Initial data'),
|
|
131
|
+
groups: z.array(z.object({
|
|
132
|
+
title: z.string().optional(),
|
|
133
|
+
description: z.string().optional(),
|
|
134
|
+
fields: z.array(z.string()),
|
|
135
|
+
collapsible: z.boolean().optional(),
|
|
136
|
+
defaultCollapsed: z.boolean().optional(),
|
|
137
|
+
})).optional().describe('Field groups'),
|
|
138
|
+
layout: z.enum(['vertical', 'horizontal', 'inline', 'grid']).optional().describe('Form layout'),
|
|
139
|
+
columns: z.number().optional().describe('Grid columns'),
|
|
140
|
+
showSubmit: z.boolean().optional().describe('Show submit button'),
|
|
141
|
+
submitText: z.string().optional().describe('Submit button text'),
|
|
142
|
+
showCancel: z.boolean().optional().describe('Show cancel button'),
|
|
143
|
+
cancelText: z.string().optional().describe('Cancel button text'),
|
|
144
|
+
showReset: z.boolean().optional().describe('Show reset button'),
|
|
145
|
+
initialValues: z.record(z.string(), z.any()).optional().describe('Initial values'),
|
|
146
|
+
readOnly: z.boolean().optional().describe('Read-only mode'),
|
|
147
|
+
});
|
|
148
|
+
/**
|
|
149
|
+
* ObjectView Schema
|
|
150
|
+
*/
|
|
151
|
+
export const ObjectViewSchema = BaseSchema.extend({
|
|
152
|
+
type: z.literal('object-view'),
|
|
153
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
154
|
+
title: z.string().optional().describe('View title'),
|
|
155
|
+
description: z.string().optional().describe('View description'),
|
|
156
|
+
layout: z.enum(['drawer', 'modal', 'page']).optional().describe('Layout mode'),
|
|
157
|
+
table: z.lazy(() => ObjectGridSchema.omit({ type: true, objectName: true }).partial()).optional().describe('Table config'),
|
|
158
|
+
form: z.lazy(() => ObjectFormSchema.omit({ type: true, objectName: true, mode: true }).partial()).optional().describe('Form config'),
|
|
159
|
+
showSearch: z.boolean().optional().describe('Show search'),
|
|
160
|
+
showFilters: z.boolean().optional().describe('Show filters'),
|
|
161
|
+
showCreate: z.boolean().optional().describe('Show create button'),
|
|
162
|
+
showRefresh: z.boolean().optional().describe('Show refresh button'),
|
|
163
|
+
operations: z.object({
|
|
164
|
+
create: z.boolean().optional(),
|
|
165
|
+
read: z.boolean().optional(),
|
|
166
|
+
update: z.boolean().optional(),
|
|
167
|
+
delete: z.boolean().optional(),
|
|
168
|
+
}).optional().describe('Enabled operations'),
|
|
169
|
+
});
|
|
170
|
+
/**
|
|
171
|
+
* ListView Schema
|
|
172
|
+
*/
|
|
173
|
+
export const ListViewSchema = BaseSchema.extend({
|
|
174
|
+
type: z.literal('list-view'),
|
|
175
|
+
objectName: z.string().describe('Object Name'),
|
|
176
|
+
viewType: z.enum(['grid', 'kanban', 'calendar', 'gantt', 'map', 'chart']).optional().describe('View Type'),
|
|
177
|
+
fields: z.array(z.string()).optional().describe('Fields to fetch'),
|
|
178
|
+
filters: z.array(z.union([z.array(z.any()), z.string()])).optional().describe('Filter conditions'),
|
|
179
|
+
sort: z.array(SortConfigSchema).optional().describe('Sort order'),
|
|
180
|
+
options: z.record(z.string(), z.any()).optional().describe('Component overrides'),
|
|
181
|
+
});
|
|
182
|
+
/**
|
|
183
|
+
* ObjectMap Schema
|
|
184
|
+
*/
|
|
185
|
+
export const ObjectMapSchema = BaseSchema.extend({
|
|
186
|
+
type: z.literal('object-map'),
|
|
187
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
188
|
+
locationField: z.string().optional().describe('Location field'),
|
|
189
|
+
titleField: z.string().optional().describe('Title field'),
|
|
190
|
+
});
|
|
191
|
+
/**
|
|
192
|
+
* ObjectGantt Schema
|
|
193
|
+
*/
|
|
194
|
+
export const ObjectGanttSchema = BaseSchema.extend({
|
|
195
|
+
type: z.literal('object-gantt'),
|
|
196
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
197
|
+
startDateField: z.string().optional().describe('Start date field'),
|
|
198
|
+
endDateField: z.string().optional().describe('End date field'),
|
|
199
|
+
titleField: z.string().optional().describe('Title field'),
|
|
200
|
+
dependencyField: z.string().optional().describe('Dependency field'),
|
|
201
|
+
progressField: z.string().optional().describe('Progress field'),
|
|
202
|
+
});
|
|
203
|
+
/**
|
|
204
|
+
* ObjectCalendar Schema
|
|
205
|
+
*/
|
|
206
|
+
export const ObjectCalendarSchema = BaseSchema.extend({
|
|
207
|
+
type: z.literal('object-calendar'),
|
|
208
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
209
|
+
startDateField: z.string().optional().describe('Start date field'),
|
|
210
|
+
endDateField: z.string().optional().describe('End date field'),
|
|
211
|
+
titleField: z.string().optional().describe('Title field'),
|
|
212
|
+
defaultView: z.enum(['month', 'week', 'day', 'agenda']).optional().describe('Default view'),
|
|
213
|
+
});
|
|
214
|
+
/**
|
|
215
|
+
* ObjectKanban Schema
|
|
216
|
+
*/
|
|
217
|
+
export const ObjectKanbanSchema = BaseSchema.extend({
|
|
218
|
+
type: z.literal('object-kanban'),
|
|
219
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
220
|
+
groupField: z.string().describe('Group field'),
|
|
221
|
+
titleField: z.string().optional().describe('Title field'),
|
|
222
|
+
cardFields: z.array(z.string()).optional().describe('Card fields'),
|
|
223
|
+
});
|
|
224
|
+
/**
|
|
225
|
+
* ObjectChart Schema
|
|
226
|
+
*/
|
|
227
|
+
export const ObjectChartSchema = BaseSchema.extend({
|
|
228
|
+
type: z.literal('object-chart'),
|
|
229
|
+
objectName: z.string().describe('ObjectQL object name'),
|
|
230
|
+
chartType: z.enum(['bar', 'line', 'pie', 'area', 'scatter']).describe('Chart type'),
|
|
231
|
+
xAxisField: z.string().describe('X axis field'),
|
|
232
|
+
yAxisFields: z.array(z.string()).optional().describe('Y axis fields'),
|
|
233
|
+
aggregation: z.enum(['cardinality', 'sum', 'avg', 'min', 'max']).optional().describe('Aggregation'),
|
|
234
|
+
});
|
|
235
|
+
/**
|
|
236
|
+
* ObjectQL Component Schema Union
|
|
237
|
+
*/
|
|
238
|
+
export const ObjectQLComponentSchema = z.union([
|
|
239
|
+
ObjectGridSchema,
|
|
240
|
+
ObjectFormSchema,
|
|
241
|
+
ObjectViewSchema,
|
|
242
|
+
ObjectMapSchema,
|
|
243
|
+
ObjectGanttSchema,
|
|
244
|
+
ObjectCalendarSchema,
|
|
245
|
+
ObjectKanbanSchema,
|
|
246
|
+
ObjectChartSchema,
|
|
247
|
+
ListViewSchema,
|
|
248
|
+
]);
|