@ramathibodi/nuxt-commons 4.0.12 → 4.0.13
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/dist/module.json +1 -1
- package/dist/runtime/components/dialog/ImportProgress.d.vue.ts +35 -0
- package/dist/runtime/components/dialog/ImportProgress.vue +53 -0
- package/dist/runtime/components/dialog/ImportProgress.vue.d.ts +35 -0
- package/dist/runtime/components/document/TemplateBuilder.vue +112 -7
- package/dist/runtime/components/model/Pad.vue +2 -1
- package/dist/runtime/components/model/Table.d.vue.ts +79 -12
- package/dist/runtime/components/model/Table.vue +106 -3
- package/dist/runtime/components/model/Table.vue.d.ts +79 -12
- package/dist/runtime/components/model/iterator.d.vue.ts +117 -29
- package/dist/runtime/components/model/iterator.vue +117 -5
- package/dist/runtime/components/model/iterator.vue.d.ts +117 -29
- package/dist/runtime/composables/apiModel.d.ts +20 -1
- package/dist/runtime/composables/apiModel.js +24 -16
- package/dist/runtime/composables/document/template.d.ts +61 -0
- package/dist/runtime/composables/document/template.js +59 -0
- package/dist/runtime/composables/document/validateTemplate.d.ts +62 -0
- package/dist/runtime/composables/document/validateTemplate.js +378 -0
- package/dist/runtime/composables/graphqlModel.d.ts +20 -1
- package/dist/runtime/composables/graphqlModel.js +24 -16
- package/dist/runtime/composables/graphqlModelOperation.d.ts +1 -0
- package/dist/runtime/composables/importProgress.d.ts +34 -0
- package/dist/runtime/composables/importProgress.js +50 -0
- package/dist/runtime/utils/virtualize.d.ts +15 -0
- package/dist/runtime/utils/virtualize.js +10 -0
- package/package.json +2 -1
- package/scripts/validate-document-template.mjs +158 -0
|
@@ -32,6 +32,12 @@ interface Props extends /* @vue-ignore */ InstanceType<typeof VDataIterator['$pr
|
|
|
32
32
|
autoRefresh?: number | boolean;
|
|
33
33
|
autoRefreshDefault?: number;
|
|
34
34
|
autoRefreshControl?: boolean;
|
|
35
|
+
importConcurrency?: number;
|
|
36
|
+
virtual?: boolean;
|
|
37
|
+
virtualThreshold?: number;
|
|
38
|
+
virtualHeight?: number | string;
|
|
39
|
+
virtualItemHeight?: number;
|
|
40
|
+
virtualItemsPerRow?: number;
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* Public props accepted by ModelIterator.
|
|
@@ -43,7 +49,7 @@ declare var __VLS_15: {
|
|
|
43
49
|
operation: {
|
|
44
50
|
openDialog: typeof openDialog;
|
|
45
51
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
46
|
-
importItems: ((
|
|
52
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
47
53
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
48
54
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
49
55
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -80,7 +86,7 @@ declare var __VLS_15: {
|
|
|
80
86
|
operation: {
|
|
81
87
|
openDialog: typeof openDialog;
|
|
82
88
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
83
|
-
importItems: ((
|
|
89
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
84
90
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
85
91
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
86
92
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -92,15 +98,32 @@ declare var __VLS_15: {
|
|
|
92
98
|
canDelete: boolean;
|
|
93
99
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
94
100
|
};
|
|
95
|
-
},
|
|
101
|
+
}, __VLS_62: {
|
|
102
|
+
item: any;
|
|
103
|
+
operation: {
|
|
104
|
+
openDialog: typeof openDialog;
|
|
105
|
+
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
106
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
107
|
+
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
108
|
+
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
109
|
+
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
110
|
+
setSearch: ((keyword: string) => void) | ((keyword: string) => void);
|
|
111
|
+
canServerPageable: boolean;
|
|
112
|
+
canServerSearch: boolean;
|
|
113
|
+
canCreate: boolean;
|
|
114
|
+
canUpdate: boolean;
|
|
115
|
+
canDelete: boolean;
|
|
116
|
+
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
117
|
+
};
|
|
118
|
+
}, __VLS_65: {
|
|
96
119
|
color: string | undefined;
|
|
97
120
|
isActive: boolean;
|
|
98
|
-
},
|
|
121
|
+
}, __VLS_85: {}, __VLS_93: {
|
|
99
122
|
items: Record<string, any>[];
|
|
100
123
|
operation: {
|
|
101
124
|
openDialog: typeof openDialog;
|
|
102
125
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
103
|
-
importItems: ((
|
|
126
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
104
127
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
105
128
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
106
129
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -131,9 +154,9 @@ declare var __VLS_15: {
|
|
|
131
154
|
toggleGroup: ReturnType<typeof import("vuetify/lib/components/VDataTable/composables/group.mjs").provideGroupBy>["toggleGroup"];
|
|
132
155
|
itemsCount: number;
|
|
133
156
|
groupedItems: readonly (import("vuetify/lib/components/VDataIterator/composables/items.mjs").DataIteratorItem<Record<string, any>> | import("vuetify/lib/components/VDataTable/composables/group.mjs").Group<import("vuetify/lib/components/VDataIterator/composables/items.mjs").DataIteratorItem<Record<string, any>>> | import("vuetify/lib/components/VDataTable/composables/group.mjs").GroupSummary<import("vuetify/lib/components/VDataIterator/composables/items.mjs").DataIteratorItem<Record<string, any>>>)[];
|
|
134
|
-
},
|
|
157
|
+
}, __VLS_119: {
|
|
135
158
|
reload: () => void;
|
|
136
|
-
},
|
|
159
|
+
}, __VLS_129: {
|
|
137
160
|
enabled: import("vue").ComputedRef<boolean>;
|
|
138
161
|
isActive: import("vue").ComputedRef<boolean>;
|
|
139
162
|
isLoading: import("vue").ComputedRef<boolean>;
|
|
@@ -143,12 +166,12 @@ declare var __VLS_15: {
|
|
|
143
166
|
togglePause: () => void;
|
|
144
167
|
reset: () => void;
|
|
145
168
|
reload: () => void | Promise<void>;
|
|
146
|
-
},
|
|
169
|
+
}, __VLS_142: {
|
|
147
170
|
items: Record<string, any>[];
|
|
148
171
|
operation: {
|
|
149
172
|
openDialog: typeof openDialog;
|
|
150
173
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
151
|
-
importItems: ((
|
|
174
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
152
175
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
153
176
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
154
177
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -160,12 +183,12 @@ declare var __VLS_15: {
|
|
|
160
183
|
canDelete: boolean;
|
|
161
184
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
162
185
|
};
|
|
163
|
-
},
|
|
186
|
+
}, __VLS_155: {
|
|
164
187
|
items: Record<string, any>[];
|
|
165
188
|
operation: {
|
|
166
189
|
openDialog: typeof openDialog;
|
|
167
190
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
168
|
-
importItems: ((
|
|
191
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
169
192
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
170
193
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
171
194
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -177,11 +200,11 @@ declare var __VLS_15: {
|
|
|
177
200
|
canDelete: boolean;
|
|
178
201
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
179
202
|
};
|
|
180
|
-
},
|
|
203
|
+
}, __VLS_209: never, __VLS_210: {
|
|
181
204
|
operation: {
|
|
182
205
|
openDialog: typeof openDialog;
|
|
183
206
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
184
|
-
importItems: ((
|
|
207
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
185
208
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
186
209
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
187
210
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -193,11 +216,11 @@ declare var __VLS_15: {
|
|
|
193
216
|
canDelete: boolean;
|
|
194
217
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
195
218
|
};
|
|
196
|
-
},
|
|
219
|
+
}, __VLS_235: never, __VLS_236: {
|
|
197
220
|
operation: {
|
|
198
221
|
openDialog: typeof openDialog;
|
|
199
222
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
200
|
-
importItems: ((
|
|
223
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
201
224
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
202
225
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
203
226
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -209,31 +232,60 @@ declare var __VLS_15: {
|
|
|
209
232
|
canDelete: boolean;
|
|
210
233
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
211
234
|
};
|
|
212
|
-
},
|
|
235
|
+
}, __VLS_261: never, __VLS_262: {
|
|
236
|
+
operation: {
|
|
237
|
+
openDialog: typeof openDialog;
|
|
238
|
+
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
239
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
240
|
+
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
241
|
+
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
242
|
+
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
243
|
+
setSearch: ((keyword: string) => void) | ((keyword: string) => void);
|
|
244
|
+
canServerPageable: boolean;
|
|
245
|
+
canServerSearch: boolean;
|
|
246
|
+
canCreate: boolean;
|
|
247
|
+
canUpdate: boolean;
|
|
248
|
+
canDelete: boolean;
|
|
249
|
+
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
250
|
+
};
|
|
251
|
+
}, __VLS_330: any, __VLS_332: {
|
|
252
|
+
isImporting: boolean;
|
|
253
|
+
total: number;
|
|
254
|
+
processed: number;
|
|
255
|
+
succeeded: number;
|
|
256
|
+
failed: number;
|
|
257
|
+
percent: number;
|
|
258
|
+
};
|
|
213
259
|
type __VLS_Slots = {} & {
|
|
214
|
-
[K in NonNullable<typeof
|
|
260
|
+
[K in NonNullable<typeof __VLS_209>]?: (props: typeof __VLS_210) => any;
|
|
215
261
|
} & {
|
|
216
|
-
[K in NonNullable<typeof
|
|
262
|
+
[K in NonNullable<typeof __VLS_235>]?: (props: typeof __VLS_236) => any;
|
|
263
|
+
} & {
|
|
264
|
+
[K in NonNullable<typeof __VLS_261>]?: (props: typeof __VLS_262) => any;
|
|
217
265
|
} & {
|
|
218
266
|
default?: (props: typeof __VLS_15) => any;
|
|
219
267
|
} & {
|
|
220
268
|
item?: (props: typeof __VLS_35) => any;
|
|
221
269
|
} & {
|
|
222
|
-
|
|
270
|
+
item?: (props: typeof __VLS_62) => any;
|
|
271
|
+
} & {
|
|
272
|
+
loader?: (props: typeof __VLS_65) => any;
|
|
223
273
|
} & {
|
|
224
|
-
loaderItem?: (props: typeof
|
|
274
|
+
loaderItem?: (props: typeof __VLS_85) => any;
|
|
225
275
|
} & {
|
|
226
|
-
header?: (props: typeof
|
|
276
|
+
header?: (props: typeof __VLS_93) => any;
|
|
227
277
|
} & {
|
|
228
|
-
title?: (props: typeof
|
|
278
|
+
title?: (props: typeof __VLS_119) => any;
|
|
229
279
|
} & {
|
|
230
|
-
autoRefreshControl?: (props: typeof
|
|
280
|
+
autoRefreshControl?: (props: typeof __VLS_129) => any;
|
|
231
281
|
} & {
|
|
232
|
-
search?: (props: typeof
|
|
282
|
+
search?: (props: typeof __VLS_142) => any;
|
|
233
283
|
} & {
|
|
234
|
-
toolbarItems?: (props: typeof
|
|
284
|
+
toolbarItems?: (props: typeof __VLS_155) => any;
|
|
235
285
|
} & {
|
|
236
|
-
form?: (props: typeof
|
|
286
|
+
form?: (props: typeof __VLS_330) => any;
|
|
287
|
+
} & {
|
|
288
|
+
importProgress?: (props: typeof __VLS_332) => any;
|
|
237
289
|
};
|
|
238
290
|
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
239
291
|
noDataText: string;
|
|
@@ -260,12 +312,18 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
260
312
|
autoRefresh: boolean;
|
|
261
313
|
autoRefreshDefault: number;
|
|
262
314
|
autoRefreshControl: boolean;
|
|
315
|
+
importConcurrency: number;
|
|
316
|
+
virtual: undefined;
|
|
317
|
+
virtualThreshold: number;
|
|
318
|
+
virtualHeight: string;
|
|
319
|
+
virtualItemHeight: number;
|
|
320
|
+
virtualItemsPerRow: undefined;
|
|
263
321
|
}>>, {
|
|
264
322
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
265
323
|
operation: import("vue").Ref<{
|
|
266
324
|
openDialog: typeof openDialog;
|
|
267
325
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
268
|
-
importItems: ((
|
|
326
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
269
327
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
270
328
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
271
329
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -279,7 +337,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
279
337
|
}, {
|
|
280
338
|
openDialog: typeof openDialog;
|
|
281
339
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
282
|
-
importItems: ((
|
|
340
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
283
341
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
284
342
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
285
343
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -293,7 +351,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
293
351
|
} | {
|
|
294
352
|
openDialog: typeof openDialog;
|
|
295
353
|
createItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback, importing?: boolean) => Promise<any>);
|
|
296
|
-
importItems: ((
|
|
354
|
+
importItems: ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void) | ((importData: Record<string, any>[], callback?: import("../../types/formDialog.js").FormDialogCallback) => void);
|
|
297
355
|
updateItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
298
356
|
deleteItem: ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: import("../../types/formDialog.js").FormDialogCallback) => Promise<any>);
|
|
299
357
|
reload: (() => Promise<void> | undefined) | (() => Promise<void>);
|
|
@@ -306,6 +364,30 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
306
364
|
autoRefresh: import("vue").Raw<import("../../composables/autoRefresh.js").UseAutoRefreshHandle>;
|
|
307
365
|
}>;
|
|
308
366
|
autoRefresh: import("../../composables/autoRefresh.js").UseAutoRefreshHandle;
|
|
367
|
+
importProgress: {
|
|
368
|
+
isImporting: import("vue").Ref<boolean, boolean>;
|
|
369
|
+
total: import("vue").Ref<number, number>;
|
|
370
|
+
processed: import("vue").Ref<number, number>;
|
|
371
|
+
succeeded: import("vue").Ref<number, number>;
|
|
372
|
+
failed: import("vue").Ref<number, number>;
|
|
373
|
+
errors: import("vue").Ref<{
|
|
374
|
+
index: number;
|
|
375
|
+
message: string;
|
|
376
|
+
}[], import("../../composables/importProgress.js").ImportError[] | {
|
|
377
|
+
index: number;
|
|
378
|
+
message: string;
|
|
379
|
+
}[]>;
|
|
380
|
+
percent: import("vue").ComputedRef<number>;
|
|
381
|
+
reset: () => void;
|
|
382
|
+
run: <T = any>(items: T[], worker: import("../../composables/importProgress.js").ImportWorker<T>, options?: {
|
|
383
|
+
concurrency
|
|
384
|
+
/**
|
|
385
|
+
* ModelIterator connects model metadata to reusable selection, labeling, iterator, or table UI patterns.
|
|
386
|
+
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
387
|
+
*/
|
|
388
|
+
?: number;
|
|
389
|
+
}) => Promise<import("../../composables/importProgress.js").ImportSummary>;
|
|
390
|
+
};
|
|
309
391
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
310
392
|
noDataText: string;
|
|
311
393
|
dialogFullscreen: boolean;
|
|
@@ -331,6 +413,12 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
331
413
|
autoRefresh: boolean;
|
|
332
414
|
autoRefreshDefault: number;
|
|
333
415
|
autoRefreshControl: boolean;
|
|
416
|
+
importConcurrency: number;
|
|
417
|
+
virtual: undefined;
|
|
418
|
+
virtualThreshold: number;
|
|
419
|
+
virtualHeight: string;
|
|
420
|
+
virtualItemHeight: number;
|
|
421
|
+
virtualItemsPerRow: undefined;
|
|
334
422
|
}>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
335
423
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
336
424
|
declare const _default: typeof __VLS_export;
|
|
@@ -3,7 +3,8 @@ import { computed, nextTick, ref, markRaw, useAttrs, useSlots, watch } from "vue
|
|
|
3
3
|
import { useModelAutoRefresh } from "../../composables/modelAutoRefresh";
|
|
4
4
|
import { VDataIterator } from "vuetify/components/VDataIterator";
|
|
5
5
|
import { VDataTable } from "vuetify/components/VDataTable";
|
|
6
|
-
import { omit } from "lodash-es";
|
|
6
|
+
import { omit, chunk } from "lodash-es";
|
|
7
|
+
import { shouldVirtualize, itemsPerRowForSpan } from "../../utils/virtualize";
|
|
7
8
|
import { useGraphqlModel } from "../../composables/graphqlModel";
|
|
8
9
|
import { useApiModel } from "../../composables/apiModel";
|
|
9
10
|
import { usePerPagePreference } from "../../composables/perPagePreference";
|
|
@@ -43,6 +44,12 @@ const props = defineProps({
|
|
|
43
44
|
autoRefresh: { type: [Number, Boolean], required: false, default: false },
|
|
44
45
|
autoRefreshDefault: { type: Number, required: false, default: 60 },
|
|
45
46
|
autoRefreshControl: { type: Boolean, required: false, default: true },
|
|
47
|
+
importConcurrency: { type: Number, required: false, default: 3 },
|
|
48
|
+
virtual: { type: Boolean, required: false, default: void 0 },
|
|
49
|
+
virtualThreshold: { type: Number, required: false, default: 500 },
|
|
50
|
+
virtualHeight: { type: [Number, String], required: false, default: "70vh" },
|
|
51
|
+
virtualItemHeight: { type: Number, required: false, default: 80 },
|
|
52
|
+
virtualItemsPerRow: { type: Number, required: false, default: void 0 },
|
|
46
53
|
modelName: { type: String, required: true },
|
|
47
54
|
modelKey: { type: String, required: false, default: "id" },
|
|
48
55
|
modelBy: { type: Object, required: false, default: void 0 },
|
|
@@ -116,13 +123,24 @@ const {
|
|
|
116
123
|
deleteItem,
|
|
117
124
|
loadItems,
|
|
118
125
|
reload,
|
|
119
|
-
isLoading
|
|
126
|
+
isLoading,
|
|
127
|
+
importProgress
|
|
120
128
|
} = props.api ? useApiModel(props) : useGraphqlModel(props);
|
|
121
129
|
const { autoRefresh, manualReload } = useModelAutoRefresh(props, {
|
|
122
130
|
reload,
|
|
123
131
|
isLoading,
|
|
124
132
|
isDialogOpen
|
|
125
133
|
});
|
|
134
|
+
const useVirtual = computed(() => shouldVirtualize(items.value.length, props.virtual, props.virtualThreshold));
|
|
135
|
+
const itemsPerRow = computed(() => {
|
|
136
|
+
if (props.virtualItemsPerRow && props.virtualItemsPerRow > 0) return props.virtualItemsPerRow;
|
|
137
|
+
const bp = display.name?.value;
|
|
138
|
+
const span = (bp === "xxl" && props.xxl !== false ? props.xxl : void 0) ?? (["xxl", "xl"].includes(bp) && props.xl !== false ? props.xl : void 0) ?? (["xxl", "xl", "lg"].includes(bp) && props.lg !== false ? props.lg : void 0) ?? (["xxl", "xl", "lg", "md"].includes(bp) && props.md !== false ? props.md : void 0) ?? (["xxl", "xl", "lg", "md", "sm"].includes(bp) && props.sm !== false ? props.sm : void 0) ?? props.cols;
|
|
139
|
+
return itemsPerRowForSpan(span);
|
|
140
|
+
});
|
|
141
|
+
function chunkRows(slotItems) {
|
|
142
|
+
return chunk([...slotItems ?? []], itemsPerRow.value);
|
|
143
|
+
}
|
|
126
144
|
function openDialog(item) {
|
|
127
145
|
currentItem.value = item;
|
|
128
146
|
nextTick(() => {
|
|
@@ -178,7 +196,7 @@ const computedSkeletonPerPage = computed(() => {
|
|
|
178
196
|
watch(() => props.search, () => {
|
|
179
197
|
search.value = props.search;
|
|
180
198
|
}, { immediate: true });
|
|
181
|
-
defineExpose({ reload, operation, autoRefresh });
|
|
199
|
+
defineExpose({ reload, operation, autoRefresh, importProgress });
|
|
182
200
|
</script>
|
|
183
201
|
|
|
184
202
|
<template>
|
|
@@ -191,13 +209,14 @@ defineExpose({ reload, operation, autoRefresh });
|
|
|
191
209
|
:item-value="modelKey"
|
|
192
210
|
:search="search"
|
|
193
211
|
:loading="isLoading"
|
|
212
|
+
:transition="false"
|
|
194
213
|
>
|
|
195
214
|
<template #default="defaultProps" v-if="viewType.includes('iterator')">
|
|
196
215
|
<slot
|
|
197
216
|
v-bind="defaultProps"
|
|
198
217
|
:operation="operation"
|
|
199
218
|
>
|
|
200
|
-
<v-container fluid>
|
|
219
|
+
<v-container fluid v-if="!useVirtual">
|
|
201
220
|
<v-row>
|
|
202
221
|
<v-col
|
|
203
222
|
v-for="(item, index) in defaultProps.items"
|
|
@@ -217,6 +236,38 @@ defineExpose({ reload, operation, autoRefresh });
|
|
|
217
236
|
</v-col>
|
|
218
237
|
</v-row>
|
|
219
238
|
</v-container>
|
|
239
|
+
<v-virtual-scroll
|
|
240
|
+
v-else
|
|
241
|
+
:items="chunkRows(defaultProps.items)"
|
|
242
|
+
:item-height="props.virtualItemHeight"
|
|
243
|
+
:height="props.virtualHeight"
|
|
244
|
+
>
|
|
245
|
+
<template #default="{ item: rowItems }">
|
|
246
|
+
<!-- pt-0 pb-6: reproduce the grid's 24px row gap as bottom padding so the
|
|
247
|
+
measured virtual-row height includes it and VVirtualScroll spaces rows
|
|
248
|
+
the same as the non-virtual <v-row gap="24"> grid. -->
|
|
249
|
+
<v-container fluid class="pt-0 pb-6">
|
|
250
|
+
<v-row>
|
|
251
|
+
<v-col
|
|
252
|
+
v-for="(item, index) in rowItems"
|
|
253
|
+
:key="index"
|
|
254
|
+
:cols="cols"
|
|
255
|
+
:sm="sm"
|
|
256
|
+
:md="md"
|
|
257
|
+
:lg="lg"
|
|
258
|
+
:xl="xl"
|
|
259
|
+
:xxl="xxl"
|
|
260
|
+
>
|
|
261
|
+
<slot
|
|
262
|
+
name="item"
|
|
263
|
+
:item="item"
|
|
264
|
+
:operation="operation"
|
|
265
|
+
/>
|
|
266
|
+
</v-col>
|
|
267
|
+
</v-row>
|
|
268
|
+
</v-container>
|
|
269
|
+
</template>
|
|
270
|
+
</v-virtual-scroll>
|
|
220
271
|
</slot>
|
|
221
272
|
</template>
|
|
222
273
|
<template #loader="loaderProps" v-if="viewType.includes('iterator')">
|
|
@@ -339,7 +390,7 @@ defineExpose({ reload, operation, autoRefresh });
|
|
|
339
390
|
</slot>
|
|
340
391
|
<template v-if="viewType.includes('table')">
|
|
341
392
|
<v-data-table-server
|
|
342
|
-
v-if="canServerPageable"
|
|
393
|
+
v-if="canServerPageable && !useVirtual"
|
|
343
394
|
v-bind="plainAttrs"
|
|
344
395
|
color="primary"
|
|
345
396
|
:items="items"
|
|
@@ -381,6 +432,49 @@ defineExpose({ reload, operation, autoRefresh });
|
|
|
381
432
|
/>
|
|
382
433
|
</template>
|
|
383
434
|
</v-data-table-server>
|
|
435
|
+
<v-data-table-virtual
|
|
436
|
+
v-else-if="useVirtual"
|
|
437
|
+
v-bind="plainAttrs"
|
|
438
|
+
color="primary"
|
|
439
|
+
:items="items"
|
|
440
|
+
:item-value="props.modelKey"
|
|
441
|
+
:search="search"
|
|
442
|
+
:loading="isLoading"
|
|
443
|
+
:height="props.virtualHeight"
|
|
444
|
+
fixed-header
|
|
445
|
+
>
|
|
446
|
+
<!-- @ts-ignore -->
|
|
447
|
+
<template
|
|
448
|
+
v-for="(_, name, index) in tableSlots"
|
|
449
|
+
:key="index"
|
|
450
|
+
#[name]="slotData"
|
|
451
|
+
>
|
|
452
|
+
<slot
|
|
453
|
+
:name="name"
|
|
454
|
+
v-bind="slotData || {}"
|
|
455
|
+
:operation="operation"
|
|
456
|
+
/>
|
|
457
|
+
</template>
|
|
458
|
+
<template
|
|
459
|
+
v-if="!$slots['item.action']"
|
|
460
|
+
#item.action="{ item }"
|
|
461
|
+
>
|
|
462
|
+
<v-btn
|
|
463
|
+
v-if="canUpdate"
|
|
464
|
+
variant="flat"
|
|
465
|
+
density="compact"
|
|
466
|
+
icon="mdi mdi-note-edit"
|
|
467
|
+
@click="openDialog(item)"
|
|
468
|
+
/>
|
|
469
|
+
<v-btn
|
|
470
|
+
v-if="canDelete"
|
|
471
|
+
variant="flat"
|
|
472
|
+
density="compact"
|
|
473
|
+
icon="mdi mdi-delete"
|
|
474
|
+
@click="deleteItem(item)"
|
|
475
|
+
/>
|
|
476
|
+
</template>
|
|
477
|
+
</v-data-table-virtual>
|
|
384
478
|
<v-data-table
|
|
385
479
|
v-else
|
|
386
480
|
v-bind="plainAttrs"
|
|
@@ -486,5 +580,23 @@ defineExpose({ reload, operation, autoRefresh });
|
|
|
486
580
|
/>
|
|
487
581
|
</template>
|
|
488
582
|
</FormDialog>
|
|
583
|
+
<slot
|
|
584
|
+
name="importProgress"
|
|
585
|
+
:is-importing="importProgress.isImporting.value"
|
|
586
|
+
:total="importProgress.total.value"
|
|
587
|
+
:processed="importProgress.processed.value"
|
|
588
|
+
:succeeded="importProgress.succeeded.value"
|
|
589
|
+
:failed="importProgress.failed.value"
|
|
590
|
+
:percent="importProgress.percent.value"
|
|
591
|
+
>
|
|
592
|
+
<DialogImportProgress
|
|
593
|
+
:model-value="importProgress.isImporting.value"
|
|
594
|
+
:total="importProgress.total.value"
|
|
595
|
+
:processed="importProgress.processed.value"
|
|
596
|
+
:succeeded="importProgress.succeeded.value"
|
|
597
|
+
:failed="importProgress.failed.value"
|
|
598
|
+
:percent="importProgress.percent.value"
|
|
599
|
+
/>
|
|
600
|
+
</slot>
|
|
489
601
|
</v-card>
|
|
490
602
|
</template>
|