@bagelink/vue 1.14.15 → 1.15.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.
Files changed (102) hide show
  1. package/dist/components/Alert.vue.d.ts.map +1 -1
  2. package/dist/components/Badge.vue.d.ts.map +1 -1
  3. package/dist/components/Btn.vue.d.ts.map +1 -1
  4. package/dist/components/Dropdown.vue.d.ts.map +1 -1
  5. package/dist/components/Image.vue.d.ts.map +1 -1
  6. package/dist/components/ListItem.vue.d.ts.map +1 -1
  7. package/dist/components/MapEmbed/Index.vue.d.ts.map +1 -1
  8. package/dist/components/Pagination.vue.d.ts.map +1 -1
  9. package/dist/components/Swiper.vue.d.ts.map +1 -1
  10. package/dist/components/Toast.vue.d.ts.map +1 -1
  11. package/dist/components/form/index.d.ts.map +1 -1
  12. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  13. package/dist/components/index.d.ts.map +1 -1
  14. package/dist/components/layout/AppContent.vue.d.ts.map +1 -1
  15. package/dist/components/layout/AppLayout.vue.d.ts.map +1 -1
  16. package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
  17. package/dist/components/layout/Panel.vue.d.ts.map +1 -1
  18. package/dist/components/layout/Resizable.vue.d.ts.map +1 -1
  19. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  20. package/dist/components/layout/appLayoutContext.d.ts +24 -0
  21. package/dist/components/layout/appLayoutContext.d.ts.map +1 -0
  22. package/dist/components/layout/index.d.ts.map +1 -1
  23. package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
  24. package/dist/composables/index.d.ts.map +1 -1
  25. package/dist/composables/useDevice.d.ts.map +1 -1
  26. package/dist/composables/useEscapeKey.d.ts +12 -0
  27. package/dist/composables/useEscapeKey.d.ts.map +1 -0
  28. package/dist/composables/useSchemaField.d.ts.map +1 -1
  29. package/dist/composables/useTheme.d.ts.map +1 -1
  30. package/dist/form-flow/FormFlow.vue.d.ts.map +1 -1
  31. package/dist/form-flow/form-flow.d.ts.map +1 -1
  32. package/dist/index.cjs +203 -207
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.mjs +25819 -28870
  35. package/dist/style.css +1 -1
  36. package/dist/types/BagelForm.d.ts.map +1 -1
  37. package/dist/types/BtnOptions.d.ts.map +1 -1
  38. package/dist/utils/constants.d.ts.map +1 -1
  39. package/dist/utils/index.d.ts.map +1 -1
  40. package/package.json +3 -6
  41. package/src/components/Alert.vue +34 -14
  42. package/src/components/Badge.vue +145 -22
  43. package/src/components/Btn.vue +43 -31
  44. package/src/components/Dropdown.vue +5 -12
  45. package/src/components/FilterQuery.vue +1 -1
  46. package/src/components/Image.vue +3 -2
  47. package/src/components/JSONSchema.vue +2 -2
  48. package/src/components/JsonBuilder.vue +1 -1
  49. package/src/components/ListItem.vue +1 -3
  50. package/src/components/MapEmbed/Index.vue +10 -9
  51. package/src/components/NavBar.vue +2 -2
  52. package/src/components/Spreadsheet/Index.vue +1 -1
  53. package/src/components/Swiper.vue +3 -1
  54. package/src/components/Toast.vue +23 -8
  55. package/src/components/calendar/Index.vue +4 -4
  56. package/src/components/calendar/views/MonthView.vue +3 -3
  57. package/src/components/form/index.ts +0 -4
  58. package/src/components/form/inputs/EmailInput.vue +1 -1
  59. package/src/components/form/inputs/NumberInput.vue +1 -1
  60. package/src/components/form/inputs/OTP.vue +2 -2
  61. package/src/components/form/inputs/SelectInput.vue +3 -3
  62. package/src/components/form/inputs/TelInput.vue +2 -2
  63. package/src/components/form/inputs/TextInput.vue +1 -1
  64. package/src/components/form/inputs/Upload/upload.css +2 -2
  65. package/src/components/index.ts +2 -6
  66. package/src/components/layout/AppContent.vue +5 -19
  67. package/src/components/layout/AppLayout.vue +47 -18
  68. package/src/components/layout/AppSidebar.vue +16 -33
  69. package/src/components/layout/Resizable.vue +5 -2
  70. package/src/components/layout/TabsNav.vue +5 -5
  71. package/src/components/layout/appLayoutContext.ts +44 -0
  72. package/src/components/layout/index.ts +2 -0
  73. package/src/components/lightbox/Lightbox.vue +3 -9
  74. package/src/composables/index.ts +1 -0
  75. package/src/composables/useDevice.ts +2 -1
  76. package/src/composables/useEscapeKey.ts +56 -0
  77. package/src/composables/useSchemaField.ts +2 -17
  78. package/src/composables/useTheme.ts +23 -19
  79. package/src/form-flow/FormFlow.vue +2 -0
  80. package/src/form-flow/form-flow.ts +7 -0
  81. package/src/index.ts +0 -2
  82. package/src/styles/inputs.css +1 -1
  83. package/src/types/BagelForm.ts +46 -151
  84. package/src/types/BtnOptions.ts +5 -3
  85. package/src/utils/constants.ts +7 -0
  86. package/src/utils/index.ts +19 -3
  87. package/src/utils/sizeParsing.ts +5 -5
  88. package/vite.config.ts +5 -1
  89. package/src/components/Carousel.vue +0 -724
  90. package/src/components/ImportData.vue +0 -1749
  91. package/src/components/Pill.vue +0 -150
  92. package/src/components/Slider.vue +0 -1446
  93. package/src/components/Title.vue +0 -23
  94. package/src/components/ToolBar.vue +0 -9
  95. package/src/components/form/BagelForm.vue +0 -219
  96. package/src/components/form/BglFieldSet.vue +0 -14
  97. package/src/components/form/BglMultiStepForm.vue +0 -469
  98. package/src/components/form/FieldArray.vue +0 -422
  99. package/src/components/form/useBagelFormState.ts +0 -76
  100. package/src/composables/useFormField.ts +0 -38
  101. package/src/dialog/DialogOLD.vue +0 -358
  102. package/src/utils/BagelFormUtils.ts +0 -684
@@ -1,684 +0,0 @@
1
- // Import types from type-fest first
2
- import type { DefaultPathsOptions, PathsOptions } from 'type-fest/source/paths'
3
-
4
- // Import types from local types file
5
- import type {
6
- Path,
7
- BaseBagelField,
8
- InputBagelField,
9
- SelectBagelField,
10
- ArrayBagelField,
11
- ArrayFieldVal,
12
- Attributes,
13
- BglFormSchemaT,
14
- FieldByP,
15
- ShallowBglFormSchemaT,
16
- UploadInputProps
17
- } from '../types/BagelForm'
18
-
19
- // Local type definitions for internal use only
20
- interface IconType { name: string }
21
- interface AutoFillField { name: string }
22
- interface InputTypeHTMLAttribute { type: string }
23
- type MaybeRefOrGetter<T> = T | (() => T) | { value: T }
24
-
25
- export interface InputOptions<
26
- T,
27
- P extends Path<T>
28
- > extends Partial<BaseBagelField<T, P>> {
29
- defaultValue?: string | number
30
- autocomplete?: AutoFillField
31
- helpText?: string
32
- title?: string
33
- }
34
-
35
- export interface DateOptions<T, K extends Path<T>> extends InputOptions<T, K> {
36
- enableTime?: boolean
37
- mode?: 'day' | 'month' | 'year'
38
- locale?: string
39
- timezone?: string
40
- }
41
-
42
- export interface TextInputOptions<T, K extends Path<T>> extends InputOptions<T, K> {
43
- type?: InputTypeHTMLAttribute['type']
44
- pattern?: string
45
- multiline?: boolean
46
- autoheight?: boolean
47
- code?: boolean
48
- rows?: number | string
49
- icon?: IconType
50
- iconStart?: IconType
51
- }
52
-
53
- export interface SlctInputOptions<T, K extends Path<T>> extends InputOptions<T, K> {
54
- searchable?: boolean
55
- multiselect?: boolean
56
- clearable?: boolean
57
- placeholder?: string
58
- }
59
-
60
- export interface NumFieldOptions<T, K extends Path<T>> extends InputOptions<T, K> {
61
- max?: number
62
- min?: number
63
- step?: number
64
- layout?: 'default' | 'vertical' | 'horizontal'
65
- padZero?: number
66
- center?: boolean
67
- useGrouping?: boolean
68
- }
69
-
70
- export interface RichTextOptions<T, P extends Path<T>> extends InputOptions<T, P> {
71
- height?: number | string
72
- basic?: boolean
73
- simple?: boolean
74
- debug?: boolean
75
- // Manual hide options
76
- hideToolbar?: boolean
77
- hideInlineToolbar?: boolean
78
- hideImages?: boolean
79
- hideVideos?: boolean
80
- hideEmbed?: boolean
81
- hideTables?: boolean
82
- hideAlignment?: boolean
83
- hideDirections?: boolean
84
- hideH5H6?: boolean
85
- // Simple array-based hide option
86
- hide?: string[]
87
- // Control autofocus behavior
88
- autofocus?: boolean
89
- // Text color
90
- textColor?: string
91
- // Font size
92
- fontSize?: number | string
93
- }
94
-
95
- export interface TelInputOptions<T, P extends Path<T>> extends InputOptions<T, P> {
96
- pattern?: string
97
- autocomplete?: AutoFillField
98
- onlyCountries?: string[]
99
- defaultCountry?: string
100
- excludeCountries?: string[]
101
- }
102
-
103
- export function getBaseField<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions>(
104
- id?: P,
105
- labelOrRest: string | Partial<BaseBagelField<T, P>> = {},
106
- rest: Partial<BaseBagelField<T, P>> = {}
107
- ): BaseBagelField<T, P, PO> {
108
- if (typeof labelOrRest === 'object') { return { id, ...labelOrRest } }
109
- return { id, label: labelOrRest, ...rest }
110
- }
111
-
112
- export function richText<
113
- T,
114
- P extends Path<T, PO>,
115
- PO extends PathsOptions = DefaultPathsOptions,
116
- >(
117
- id?: P,
118
- label?: string,
119
- options?: RichTextOptions<T, P>,
120
- ): BaseBagelField<T, P, PO> {
121
- return {
122
- $el: 'richtext',
123
- class: options?.class,
124
- required: options?.required,
125
- id,
126
- label,
127
- helptext: options?.helpText,
128
- disabled: options?.disabled,
129
- defaultValue: options?.defaultValue,
130
- vIf: options?.vIf,
131
- transform: options?.transform,
132
- placeholder: options?.placeholder,
133
- attrs: {
134
- height: options?.height,
135
- basic: options?.basic,
136
- simple: options?.simple,
137
- debug: options?.debug,
138
- hideToolbar: options?.hideToolbar,
139
- hideInlineToolbar: options?.hideInlineToolbar,
140
- hideImages: options?.hideImages,
141
- hideVideos: options?.hideVideos,
142
- hideEmbed: options?.hideEmbed,
143
- hideTables: options?.hideTables,
144
- hideAlignment: options?.hideAlignment,
145
- hideDirections: options?.hideDirections,
146
- hideH5H6: options?.hideH5H6,
147
- hide: options?.hide,
148
- autofocus: options?.autofocus,
149
- textColor: options?.textColor,
150
- fontSize: options?.fontSize,
151
- autocomplete: options?.autocomplete,
152
- },
153
- }
154
- }
155
-
156
- export function txtField<
157
- T,
158
- P extends Path<T, PO>,
159
- PO extends PathsOptions = DefaultPathsOptions,
160
- >(
161
- id?: P,
162
- label?: string,
163
- options?: TextInputOptions<T, P>,
164
- ): InputBagelField<T, P, PO> {
165
- return {
166
- $el: 'text',
167
- id,
168
- label,
169
- class: options?.class,
170
- required: options?.required,
171
- placeholder: options?.placeholder,
172
- helptext: options?.helptext,
173
- disabled: options?.disabled,
174
- defaultValue: options?.defaultValue,
175
- vIf: options?.vIf,
176
- transform: options?.transform,
177
- attrs: {
178
- title: options?.title,
179
- autocomplete: options?.autocomplete,
180
- pattern: options?.pattern,
181
- multiline: options?.multiline,
182
- autoheight: options?.autoheight,
183
- code: options?.code,
184
- rows: options?.rows,
185
- icon: options?.icon,
186
- iconStart: options?.iconStart,
187
- type: options?.type,
188
- },
189
- }
190
- }
191
-
192
- // import type { Option } from '@bagelink/vue'
193
-
194
- // type OptionsSource = Option[] | ((query: string) => Promise<Option[]>)
195
-
196
- export function selectField<
197
- T,
198
- P extends Path<T, PO>,
199
- PO extends PathsOptions = DefaultPathsOptions,
200
- >(
201
- id?: P,
202
- label?: string,
203
- options?: any,
204
- fieldOptions?: SlctInputOptions<T, P>,
205
- ): SelectBagelField<T, P, PO> {
206
- return {
207
- $el: 'select',
208
- id,
209
- label,
210
- class: fieldOptions?.class,
211
- required: fieldOptions?.required,
212
- helptext: fieldOptions?.helptext,
213
- disabled: fieldOptions?.disabled,
214
- defaultValue: fieldOptions?.defaultValue,
215
- vIf: fieldOptions?.vIf,
216
- transform: fieldOptions?.transform,
217
- placeholder: fieldOptions?.placeholder,
218
- options,
219
- attrs: {
220
- ...fieldOptions?.attrs,
221
- title: fieldOptions?.title,
222
- searchable: fieldOptions?.searchable,
223
- multiselect: fieldOptions?.multiselect,
224
- clearable: fieldOptions?.clearable,
225
- },
226
- }
227
- }
228
-
229
- export const slctField = selectField
230
-
231
- interface CheckInputOptions<T, K extends Path<T>> extends Omit<InputOptions<T, K>, 'defaultValue'> {
232
- value?: string | number | boolean
233
- defaultValue?: string | number | boolean
234
- }
235
-
236
- export function checkField<
237
- T,
238
- P extends Path<T, PO>,
239
- PO extends PathsOptions = DefaultPathsOptions,
240
- >(
241
- id?: P,
242
- label?: string,
243
- options?: CheckInputOptions<T, P>,
244
- ): BaseBagelField<T, P, PO> {
245
- return {
246
- $el: 'check',
247
- id,
248
- label,
249
- class: options?.class,
250
- required: options?.required,
251
- helptext: options?.helptext,
252
- disabled: options?.disabled,
253
- defaultValue: options?.defaultValue,
254
- vIf: options?.vIf,
255
- transform: options?.transform,
256
- attrs: {
257
- ...options?.attrs,
258
- value: options?.value,
259
- },
260
- }
261
- }
262
-
263
- interface EmailInputOptions<
264
- T,
265
- P extends Path<T>
266
- > extends InputOptions<T, P> {
267
- autocorrect?: boolean
268
- serverValidate?: boolean
269
- preventFakeEmails?: boolean
270
- pattern?: string
271
- }
272
-
273
- export function emailField<
274
- T,
275
- P extends Path<T, PO>,
276
- PO extends PathsOptions = DefaultPathsOptions,
277
- >(id?: P, label?: string, options?: EmailInputOptions<T, P>): BaseBagelField<T, P, PO> {
278
- return {
279
- $el: 'email',
280
- id,
281
- label,
282
- class: options?.class,
283
- required: options?.required,
284
- vIf: options?.vIf,
285
- transform: options?.transform,
286
- attrs: {
287
- title: options?.title,
288
- autocorrect: options?.autocorrect,
289
- serverValidate: options?.serverValidate,
290
- preventFakeEmails: options?.preventFakeEmails,
291
- pattern: options?.pattern,
292
- },
293
- }
294
- }
295
-
296
- export function dateField<
297
- T,
298
- P extends Path<T, PO>,
299
- PO extends PathsOptions = DefaultPathsOptions,
300
- >(
301
- id?: P,
302
- label?: string,
303
- options?: DateOptions<T, P>,
304
- ): BaseBagelField<T, P, PO> {
305
- return {
306
- $el: 'date',
307
- class: options?.class,
308
- required: options?.required,
309
- id,
310
- disabled: options?.disabled,
311
- label,
312
- ...(options?.defaultValue !== undefined && { defaultValue: options.defaultValue }),
313
- vIf: options?.vIf,
314
- transform: options?.transform,
315
- attrs: {
316
- title: options?.title,
317
- disabled: options?.disabled,
318
- autocomplete: options?.autocomplete,
319
- enableTime: options?.enableTime,
320
- mode: options?.mode,
321
- locale: options?.locale,
322
- timezone: options?.timezone,
323
- },
324
- }
325
- }
326
-
327
- export function numField<
328
- T,
329
- P extends Path<T, PO>,
330
- PO extends PathsOptions = DefaultPathsOptions,
331
- >(
332
- id?: P,
333
- label?: string,
334
- options?: NumFieldOptions<T, P>,
335
- ): BaseBagelField<T, P, PO> {
336
- return {
337
- $el: 'number',
338
- class: options?.class,
339
- required: options?.required,
340
- defaultValue: options?.defaultValue,
341
- id,
342
- label,
343
- disabled: options?.disabled,
344
- placeholder: options?.placeholder,
345
- helptext: options?.helptext,
346
- vIf: options?.vIf,
347
- transform: options?.transform,
348
- attrs: {
349
- title: options?.title,
350
- autocomplete: options?.autocomplete,
351
- step: options?.step,
352
- min: options?.min,
353
- max: options?.max,
354
- layout: options?.layout,
355
- padZero: options?.padZero,
356
- center: options?.center,
357
- useGrouping: options?.useGrouping,
358
- },
359
- }
360
- }
361
-
362
- export function frmRow<
363
- T,
364
- PO extends PathsOptions = DefaultPathsOptions,
365
- >(
366
- ...children: Array<BaseBagelField<T, any, PO>>
367
- ): { $el: string, class: string, children: Array<BaseBagelField<T, any, PO>> } {
368
- return {
369
- $el: 'div',
370
- class: 'flex gap-1 m_block align-items-end',
371
- children,
372
- }
373
- }
374
-
375
- export interface UploadOptions<T, K extends Path<T>> extends Omit<UploadInputProps, 'id'>, InputOptions<T, K> {}
376
-
377
- export function uploadField<
378
- T,
379
- P extends Path<T, PO>,
380
- PO extends PathsOptions = DefaultPathsOptions,
381
- >(
382
- id?: P,
383
- label?: string,
384
- options?: UploadOptions<T, P>,
385
- ): BaseBagelField<T, P, PO> {
386
- return {
387
- $el: 'upload',
388
- id,
389
- label,
390
- placeholder: options?.placeholder ?? options?.dropPlaceholder,
391
- class: options?.class,
392
- required: options?.required,
393
- helptext: options?.helptext,
394
- disabled: options?.disabled,
395
- defaultValue: options?.defaultValue,
396
- vIf: options?.vIf,
397
- transform: options?.transform,
398
- attrs: {
399
- ...options,
400
- },
401
- }
402
- }
403
-
404
- interface RangeOptions<T, K extends Path<T>> extends InputOptions<T, K> {
405
- min?: number
406
- max?: number
407
- step?: number
408
- rtl?: boolean
409
- multiRange?: boolean
410
- formatValue?: (value: number) => string
411
- }
412
-
413
- export function rangeField<
414
- T,
415
- P extends Path<T, PO>,
416
- PO extends PathsOptions = DefaultPathsOptions,
417
- >(
418
- id?: P,
419
- label?: string,
420
- options?: RangeOptions <T, P>
421
- ): BaseBagelField<T, P, PO> {
422
- return {
423
- $el: 'range',
424
- id,
425
- label,
426
- vIf: options?.vIf,
427
- transform: options?.transform,
428
- attrs: {
429
- autocomplete: options?.autocomplete,
430
- min: options?.min,
431
- max: options?.max,
432
- step: options?.step,
433
- rtl: options?.rtl,
434
- multiRange: options?.multiRange,
435
- formatValue: options?.formatValue,
436
- },
437
- }
438
- }
439
-
440
- export function bglForm<T>(idOrField?: string | FieldByP<T, Path<T>>, ...schema: FieldByP<T, Path<T>>[]) {
441
- if (typeof idOrField === 'string') {
442
- return {
443
- $el: 'bagelform',
444
- id: idOrField,
445
- attrs: {
446
- schema: [idOrField, ...schema],
447
- },
448
- }
449
- }
450
- return {
451
- $el: 'bagelform',
452
- attrs: {
453
- schema: [idOrField, ...schema]
454
- },
455
- }
456
- }
457
-
458
- export function telField<
459
- T,
460
- P extends Path<T, PO>,
461
- PO extends PathsOptions = DefaultPathsOptions,
462
- >(
463
- id?: P,
464
- label?: string,
465
- options?: TelInputOptions<T, P>
466
- ): BaseBagelField<T, P, PO> {
467
- return {
468
- $el: 'tel',
469
- id,
470
- label,
471
- class: options?.class,
472
- required: options?.required,
473
- placeholder: options?.placeholder,
474
- helptext: options?.helptext,
475
- disabled: options?.disabled,
476
- defaultValue: options?.defaultValue,
477
- vIf: options?.vIf,
478
- transform: options?.transform,
479
- attrs: {
480
- ...options?.attrs,
481
- title: options?.title,
482
- pattern: options?.pattern,
483
- autocomplete: options?.autocomplete,
484
- },
485
- }
486
- }
487
-
488
- export function colorField<
489
- T,
490
- P extends Path<T, PO>,
491
- PO extends PathsOptions = DefaultPathsOptions,
492
- >(
493
- id?: P,
494
- label?: string,
495
- options?: { [key: string]: any }
496
- ): BaseBagelField<T, P, PO> {
497
- return {
498
- $el: 'color',
499
- id,
500
- label,
501
- vIf: options?.vIf,
502
- attrs: options,
503
- class: options?.class,
504
- transform: options?.transform,
505
- }
506
- }
507
-
508
- export function findBglFieldById<T>(id: string, _schema: ShallowBglFormSchemaT<T>): FieldByP<T, Path<T>> | undefined {
509
- for (const field of _schema) {
510
- if (field.id === id) { return field as FieldByP<T, Path<T>> | undefined }
511
- if (field.children && Number(field.children.length) > 0) {
512
- const fieldChildren = field.children.filter(
513
- c => typeof c === 'object' && '$el' in c
514
- )
515
- const child = findBglFieldById(id, fieldChildren as ShallowBglFormSchemaT<T>)
516
- if (child) { return child as FieldByP<T, Path<T>> | undefined }
517
- }
518
- }
519
- return undefined
520
- }
521
-
522
- export interface ArrayAttrs<T, P extends Path<T>> extends Attributes<T, P> {
523
- delete?: boolean
524
- add?: boolean
525
- schema?: MaybeRefOrGetter<BglFormSchemaT<ArrayFieldVal<T, P>>>
526
- type?: ArrayType
527
- simple?: boolean
528
- }
529
-
530
- export interface ArrayFieldOptions<T, K extends Path<T>> extends InputOptions<T, K>, ArrayAttrs<T, K> {}
531
-
532
- export type ArrayType = 'number' | 'text'
533
-
534
- export function arrField<
535
- T,
536
- P extends Path<T, PO>,
537
- PO extends PathsOptions = DefaultPathsOptions,
538
- >(
539
- id: P,
540
- label: string,
541
- schemaOrType: BglFormSchemaT<ArrayFieldVal<T, P>> | ArrayType,
542
- options?: ArrayFieldOptions<T, P>
543
- ): ArrayBagelField<T, P, PO> {
544
- const arraySpecificAttrs = (
545
- typeof schemaOrType === 'string'
546
- ? { type: schemaOrType }
547
- : { schema: schemaOrType }
548
- )
549
-
550
- const attrs: ArrayAttrs<T, P> = {
551
- delete: true,
552
- add: true,
553
- ...options,
554
- ...arraySpecificAttrs,
555
- }
556
-
557
- return {
558
- label,
559
- id,
560
- class: options?.class,
561
- $el: 'array',
562
- vIf: options?.vIf,
563
- transform: options?.transform,
564
- attrs,
565
- }
566
- }
567
- // export function updateBagelSchemaWithErrorResponse<T>(
568
- // schema: BglFormSchemaT<T>,
569
- // invalidFieldId: Record<string, string[]>,
570
- // ) {
571
- // return schema.map((f) => {
572
- // if (f.id === invalidFieldId) {
573
- // f.class = 'bagel-input-error'
574
- // }
575
- // if (f.id === undefined && f.children) {
576
- // f.children = f.children.map((c) => {
577
- // if (c.id === invalidFieldId) {
578
- // c.class = 'bagel-input-error'
579
- // }
580
- // return c
581
- // })
582
- // }
583
- // return f
584
- // })
585
- // }
586
-
587
- // Schema builder function that provides type context
588
- export function createSchema<T, PO extends PathsOptions = DefaultPathsOptions>() {
589
- return {
590
- txtField: <P extends Path<T, PO>>(
591
- id?: P,
592
- label?: string,
593
- options?: TextInputOptions<T, P>
594
- ) => txtField<T, P, PO>(id, label, options),
595
-
596
- selectField: <P extends Path<T, PO>>(
597
- id?: P,
598
- label?: string,
599
- options?: any,
600
- fieldOptions?: SlctInputOptions<T, P>
601
- ) => selectField<T, P, PO>(id, label, options, fieldOptions),
602
-
603
- dateField: <P extends Path<T, PO>>(
604
- id?: P,
605
- label?: string,
606
- options?: DateOptions<T, P>
607
- ) => dateField<T, P, PO>(id, label, options),
608
-
609
- telField: <P extends Path<T, PO>>(
610
- id?: P,
611
- label?: string,
612
- options?: TelInputOptions<T, P>
613
- ) => telField<T, P, PO>(id, label, options),
614
-
615
- frmRow: (
616
- ...children: Array<BaseBagelField<T, any, PO>>
617
- ) => frmRow<T, PO>(...children),
618
-
619
- // Add other field functions as needed
620
- numField: <P extends Path<T, PO>>(
621
- id?: P,
622
- label?: string,
623
- options?: NumFieldOptions<T, P>
624
- ) => numField<T, P, PO>(id, label, options),
625
-
626
- checkField: <P extends Path<T, PO>>(
627
- id?: P,
628
- label?: string,
629
- options?: CheckInputOptions<T, P>
630
- ) => checkField<T, P, PO>(id, label, options),
631
-
632
- emailField: <P extends Path<T, PO>>(
633
- id?: P,
634
- label?: string,
635
- options?: EmailInputOptions<T, P>
636
- ) => emailField<T, P, PO>(id, label, options),
637
-
638
- uploadField: <P extends Path<T, PO>>(
639
- id?: P,
640
- label?: string,
641
- options?: UploadOptions<T, P>
642
- ) => uploadField<T, P, PO>(id, label, options),
643
-
644
- rangeField: <P extends Path<T, PO>>(
645
- id?: P,
646
- label?: string,
647
- options?: RangeOptions<T, P>
648
- ) => rangeField<T, P, PO>(id, label, options),
649
-
650
- colorField: <P extends Path<T, PO>>(
651
- id?: P,
652
- label?: string,
653
- options?: { [key: string]: any }
654
- ) => colorField<T, P, PO>(id, label, options),
655
-
656
- richText: <P extends Path<T, PO>>(
657
- id?: P,
658
- label?: string,
659
- options?: RichTextOptions<T, P>
660
- ) => richText<T, P, PO>(id, label, options),
661
- }
662
- }
663
-
664
- export function useForm() {
665
- return {
666
- txtField,
667
- selectField,
668
- checkField,
669
- dateField,
670
- numField,
671
- emailField,
672
- frmRow,
673
- uploadField,
674
- rangeField,
675
- bglForm,
676
- telField,
677
- colorField,
678
- arrField,
679
- richText,
680
- findBglFieldById,
681
- getBaseField,
682
- createSchema
683
- }
684
- }