@object-ui/types 0.3.1 → 2.0.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 +1 -1
- package/dist/ai.d.ts +376 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +8 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/blocks.d.ts +332 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +8 -0
- package/dist/crud.d.ts +177 -3
- package/dist/crud.d.ts.map +1 -1
- package/dist/data-display.d.ts +35 -0
- package/dist/data-display.d.ts.map +1 -1
- 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 +74 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/designer.d.ts +473 -0
- package/dist/designer.d.ts.map +1 -0
- package/dist/designer.js +8 -0
- package/dist/field-types.d.ts +353 -11
- package/dist/field-types.d.ts.map +1 -1
- package/dist/form.d.ts +35 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/index.d.ts +58 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/layout.d.ts +63 -8
- package/dist/layout.d.ts.map +1 -1
- package/dist/mobile.d.ts +186 -0
- package/dist/mobile.d.ts.map +1 -0
- package/dist/mobile.js +8 -0
- package/dist/objectql.d.ts +337 -89
- package/dist/objectql.d.ts.map +1 -1
- package/dist/permissions.d.ts +150 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +8 -0
- 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/reports.d.ts +336 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +8 -0
- package/dist/tenant.d.ts +138 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +8 -0
- package/dist/theme.d.ts +180 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +8 -0
- package/dist/ui-action.d.ts +290 -0
- package/dist/ui-action.d.ts.map +1 -0
- package/dist/ui-action.js +8 -0
- package/dist/views.d.ts +427 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +8 -0
- package/dist/widget.d.ts +181 -0
- package/dist/widget.d.ts.map +1 -0
- package/dist/widget.js +8 -0
- package/dist/workflow.d.ts +340 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.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/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 +4 -4
- package/dist/zod/complex.zod.js +1 -1
- 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.js +1 -1
- package/dist/zod/disclosure.zod.js +1 -1
- package/dist/zod/feedback.zod.d.ts +10 -10
- package/dist/zod/feedback.zod.js +1 -1
- package/dist/zod/form.zod.d.ts +4 -4
- package/dist/zod/form.zod.js +1 -1
- package/dist/zod/index.zod.d.ts +2032 -30
- package/dist/zod/index.zod.d.ts.map +1 -1
- package/dist/zod/index.zod.js +96 -19
- package/dist/zod/layout.zod.d.ts +134 -2
- package/dist/zod/layout.zod.d.ts.map +1 -1
- package/dist/zod/layout.zod.js +35 -1
- package/dist/zod/navigation.zod.js +1 -1
- package/dist/zod/objectql.zod.d.ts +34 -18
- package/dist/zod/objectql.zod.d.ts.map +1 -1
- package/dist/zod/objectql.zod.js +9 -1
- package/dist/zod/overlay.zod.js +1 -1
- 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 +1292 -0
- package/dist/zod/theme.zod.d.ts.map +1 -0
- package/dist/zod/theme.zod.js +260 -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 +3 -2
- package/src/__tests__/namespace-exports.test.ts +36 -0
- package/src/__tests__/phase2-schemas.test.ts +634 -0
- package/src/ai.ts +454 -0
- package/src/app.ts +12 -0
- package/src/blocks.ts +405 -0
- package/src/crud.ts +180 -3
- package/src/data-display.ts +31 -0
- package/src/data-protocol.ts +1679 -0
- package/src/data.ts +84 -1
- package/src/designer.ts +509 -0
- package/src/field-types.ts +392 -11
- package/src/form.ts +35 -1
- package/src/index.ts +426 -0
- package/src/layout.ts +66 -8
- package/src/mobile.ts +205 -0
- package/src/objectql.ts +412 -94
- package/src/permissions.ts +166 -0
- package/src/plugin-scope.ts +210 -0
- package/src/reports.ts +408 -0
- package/src/tenant.ts +153 -0
- package/src/theme.ts +238 -0
- package/src/ui-action.ts +415 -0
- package/src/views.ts +436 -0
- package/src/widget.ts +197 -0
- package/src/workflow.ts +409 -0
- package/src/zod/app.zod.ts +72 -0
- package/src/zod/blocks.zod.ts +170 -0
- package/src/zod/complex.zod.ts +1 -1
- package/src/zod/crud.zod.ts +259 -0
- package/src/zod/data-display.zod.ts +1 -1
- package/src/zod/disclosure.zod.ts +1 -1
- package/src/zod/feedback.zod.ts +1 -1
- package/src/zod/form.zod.ts +1 -1
- package/src/zod/index.zod.ts +178 -19
- package/src/zod/layout.zod.ts +39 -1
- package/src/zod/navigation.zod.ts +1 -1
- package/src/zod/objectql.zod.ts +9 -1
- package/src/zod/overlay.zod.ts +1 -1
- package/src/zod/reports.zod.ts +183 -0
- package/src/zod/theme.zod.ts +296 -0
- package/src/zod/views.zod.ts +182 -0
package/src/field-types.ts
CHANGED
|
@@ -67,11 +67,12 @@ export interface BaseFieldMetadata {
|
|
|
67
67
|
defaultValue?: any;
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
|
-
* Field permissions
|
|
70
|
+
* Field permissions (Phase 3.2.6)
|
|
71
71
|
*/
|
|
72
72
|
permissions?: {
|
|
73
73
|
read?: boolean;
|
|
74
74
|
write?: boolean;
|
|
75
|
+
edit?: boolean;
|
|
75
76
|
};
|
|
76
77
|
|
|
77
78
|
/**
|
|
@@ -93,6 +94,22 @@ export interface BaseFieldMetadata {
|
|
|
93
94
|
* Custom validation function or rules
|
|
94
95
|
*/
|
|
95
96
|
validate?: ValidationFunction | ValidationRule;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Field dependencies (Phase 3.2.3)
|
|
100
|
+
* List of fields that this field depends on
|
|
101
|
+
*/
|
|
102
|
+
depends_on?: string[];
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Field index for database optimization
|
|
106
|
+
*/
|
|
107
|
+
indexed?: boolean;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Field is unique constraint
|
|
111
|
+
*/
|
|
112
|
+
unique?: boolean;
|
|
96
113
|
}
|
|
97
114
|
|
|
98
115
|
/**
|
|
@@ -339,21 +356,53 @@ export interface LookupFieldMetadata extends BaseFieldMetadata {
|
|
|
339
356
|
|
|
340
357
|
/**
|
|
341
358
|
* Formula field metadata (read-only computed field)
|
|
359
|
+
* Phase 3.2.4: Enhanced formula field with real-time computation
|
|
342
360
|
*/
|
|
343
361
|
export interface FormulaFieldMetadata extends BaseFieldMetadata {
|
|
344
362
|
type: 'formula';
|
|
363
|
+
/**
|
|
364
|
+
* Formula expression
|
|
365
|
+
* Supports JavaScript-like expressions with field references
|
|
366
|
+
* @example "${amount} * ${tax_rate}"
|
|
367
|
+
* @example "${firstName} + ' ' + ${lastName}"
|
|
368
|
+
*/
|
|
345
369
|
formula?: string;
|
|
346
|
-
|
|
370
|
+
/**
|
|
371
|
+
* Return type of the formula
|
|
372
|
+
*/
|
|
373
|
+
return_type?: 'text' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
374
|
+
/**
|
|
375
|
+
* Whether to recompute on dependency changes
|
|
376
|
+
*/
|
|
377
|
+
auto_compute?: boolean;
|
|
347
378
|
}
|
|
348
379
|
|
|
349
380
|
/**
|
|
350
381
|
* Summary/Rollup field metadata (aggregation)
|
|
382
|
+
* Phase 3.2.5: Enhanced summary field implementation
|
|
351
383
|
*/
|
|
352
384
|
export interface SummaryFieldMetadata extends BaseFieldMetadata {
|
|
353
385
|
type: 'summary';
|
|
386
|
+
/**
|
|
387
|
+
* Related object to summarize from
|
|
388
|
+
*/
|
|
354
389
|
summary_object?: string;
|
|
390
|
+
/**
|
|
391
|
+
* Field to aggregate in the related object
|
|
392
|
+
*/
|
|
355
393
|
summary_field?: string;
|
|
356
|
-
|
|
394
|
+
/**
|
|
395
|
+
* Aggregation type
|
|
396
|
+
*/
|
|
397
|
+
summary_type?: 'count' | 'sum' | 'avg' | 'min' | 'max' | 'first' | 'last';
|
|
398
|
+
/**
|
|
399
|
+
* Filter condition for summarized records
|
|
400
|
+
*/
|
|
401
|
+
summary_filter?: Record<string, any>;
|
|
402
|
+
/**
|
|
403
|
+
* Whether to auto-update on related record changes
|
|
404
|
+
*/
|
|
405
|
+
auto_update?: boolean;
|
|
357
406
|
}
|
|
358
407
|
|
|
359
408
|
/**
|
|
@@ -383,18 +432,136 @@ export interface ObjectFieldMetadata extends BaseFieldMetadata {
|
|
|
383
432
|
|
|
384
433
|
/**
|
|
385
434
|
* Vector field metadata (embeddings)
|
|
435
|
+
* Phase 3.2.1: Complete vector field implementation
|
|
386
436
|
*/
|
|
387
437
|
export interface VectorFieldMetadata extends BaseFieldMetadata {
|
|
388
438
|
type: 'vector';
|
|
439
|
+
/**
|
|
440
|
+
* Vector dimensions (e.g., 768 for BERT, 1536 for OpenAI)
|
|
441
|
+
*/
|
|
389
442
|
dimensions?: number;
|
|
443
|
+
/**
|
|
444
|
+
* Distance metric for similarity search
|
|
445
|
+
*/
|
|
446
|
+
distance_metric?: 'cosine' | 'euclidean' | 'dot_product';
|
|
447
|
+
/**
|
|
448
|
+
* Whether to index for similarity search
|
|
449
|
+
*/
|
|
450
|
+
indexed?: boolean;
|
|
451
|
+
/**
|
|
452
|
+
* Normalization strategy
|
|
453
|
+
*/
|
|
454
|
+
normalize?: boolean;
|
|
390
455
|
}
|
|
391
456
|
|
|
392
457
|
/**
|
|
393
458
|
* Grid field metadata (sub-table)
|
|
459
|
+
* Phase 3.2.2: Complete grid field implementation
|
|
394
460
|
*/
|
|
395
461
|
export interface GridFieldMetadata extends BaseFieldMetadata {
|
|
396
462
|
type: 'grid';
|
|
397
|
-
|
|
463
|
+
/**
|
|
464
|
+
* Column definitions for the grid
|
|
465
|
+
*/
|
|
466
|
+
columns?: GridColumnDefinition[];
|
|
467
|
+
/**
|
|
468
|
+
* Minimum number of rows
|
|
469
|
+
*/
|
|
470
|
+
min_rows?: number;
|
|
471
|
+
/**
|
|
472
|
+
* Maximum number of rows
|
|
473
|
+
*/
|
|
474
|
+
max_rows?: number;
|
|
475
|
+
/**
|
|
476
|
+
* Whether to allow adding rows
|
|
477
|
+
*/
|
|
478
|
+
allow_add?: boolean;
|
|
479
|
+
/**
|
|
480
|
+
* Whether to allow deleting rows
|
|
481
|
+
*/
|
|
482
|
+
allow_delete?: boolean;
|
|
483
|
+
/**
|
|
484
|
+
* Whether to allow reordering rows
|
|
485
|
+
*/
|
|
486
|
+
allow_reorder?: boolean;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Grid column definition
|
|
491
|
+
*/
|
|
492
|
+
export interface GridColumnDefinition {
|
|
493
|
+
/**
|
|
494
|
+
* Column field name
|
|
495
|
+
*/
|
|
496
|
+
name: string;
|
|
497
|
+
/**
|
|
498
|
+
* Column label
|
|
499
|
+
*/
|
|
500
|
+
label?: string;
|
|
501
|
+
/**
|
|
502
|
+
* Field type
|
|
503
|
+
*/
|
|
504
|
+
type: string;
|
|
505
|
+
/**
|
|
506
|
+
* Whether column is required
|
|
507
|
+
*/
|
|
508
|
+
required?: boolean;
|
|
509
|
+
/**
|
|
510
|
+
* Default value for new rows
|
|
511
|
+
*/
|
|
512
|
+
defaultValue?: any;
|
|
513
|
+
/**
|
|
514
|
+
* Column width
|
|
515
|
+
*/
|
|
516
|
+
width?: number;
|
|
517
|
+
/**
|
|
518
|
+
* Validation rules
|
|
519
|
+
*/
|
|
520
|
+
validate?: ValidationRule;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
export interface ColorFieldMetadata extends BaseFieldMetadata {
|
|
524
|
+
type: 'color';
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export interface CodeFieldMetadata extends BaseFieldMetadata {
|
|
528
|
+
type: 'code';
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
export interface AvatarFieldMetadata extends BaseFieldMetadata {
|
|
532
|
+
type: 'avatar';
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
export interface SignatureFieldMetadata extends BaseFieldMetadata {
|
|
536
|
+
type: 'signature';
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export interface QRCodeFieldMetadata extends BaseFieldMetadata {
|
|
540
|
+
type: 'qrcode';
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
export interface AddressFieldMetadata extends BaseFieldMetadata {
|
|
544
|
+
type: 'address';
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
export interface GeolocationFieldMetadata extends BaseFieldMetadata {
|
|
548
|
+
type: 'geolocation';
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
export interface SliderFieldMetadata extends BaseFieldMetadata {
|
|
552
|
+
type: 'slider';
|
|
553
|
+
min?: number;
|
|
554
|
+
max?: number;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
export interface RatingFieldMetadata extends BaseFieldMetadata {
|
|
558
|
+
type: 'rating';
|
|
559
|
+
max?: number;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
export interface MasterDetailFieldMetadata extends BaseFieldMetadata {
|
|
563
|
+
type: 'master_detail';
|
|
564
|
+
reference_to?: string;
|
|
398
565
|
}
|
|
399
566
|
|
|
400
567
|
/**
|
|
@@ -427,10 +594,118 @@ export type FieldMetadata =
|
|
|
427
594
|
| UserFieldMetadata
|
|
428
595
|
| ObjectFieldMetadata
|
|
429
596
|
| VectorFieldMetadata
|
|
430
|
-
| GridFieldMetadata
|
|
597
|
+
| GridFieldMetadata
|
|
598
|
+
| ColorFieldMetadata
|
|
599
|
+
| CodeFieldMetadata
|
|
600
|
+
| AvatarFieldMetadata
|
|
601
|
+
| SignatureFieldMetadata
|
|
602
|
+
| QRCodeFieldMetadata
|
|
603
|
+
| AddressFieldMetadata
|
|
604
|
+
| GeolocationFieldMetadata
|
|
605
|
+
| SliderFieldMetadata
|
|
606
|
+
| RatingFieldMetadata
|
|
607
|
+
| MasterDetailFieldMetadata;
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Object trigger configuration (Phase 3.1.3)
|
|
611
|
+
*/
|
|
612
|
+
export interface ObjectTrigger {
|
|
613
|
+
/**
|
|
614
|
+
* Trigger name
|
|
615
|
+
*/
|
|
616
|
+
name: string;
|
|
617
|
+
/**
|
|
618
|
+
* When to execute the trigger
|
|
619
|
+
*/
|
|
620
|
+
when: 'before' | 'after';
|
|
621
|
+
/**
|
|
622
|
+
* Which operation triggers this
|
|
623
|
+
*/
|
|
624
|
+
on: 'create' | 'update' | 'delete' | 'read';
|
|
625
|
+
/**
|
|
626
|
+
* Trigger condition (optional)
|
|
627
|
+
*/
|
|
628
|
+
condition?: string;
|
|
629
|
+
/**
|
|
630
|
+
* Action to execute
|
|
631
|
+
*/
|
|
632
|
+
action: 'validation' | 'workflow' | 'notification' | 'calculation' | 'custom';
|
|
633
|
+
/**
|
|
634
|
+
* Action configuration
|
|
635
|
+
*/
|
|
636
|
+
config?: Record<string, any>;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Object permission configuration (Phase 3.1.4)
|
|
641
|
+
*/
|
|
642
|
+
export interface ObjectPermission {
|
|
643
|
+
/**
|
|
644
|
+
* Permission profile name
|
|
645
|
+
*/
|
|
646
|
+
profile?: string;
|
|
647
|
+
/**
|
|
648
|
+
* Role-based permissions
|
|
649
|
+
*/
|
|
650
|
+
roles?: string[];
|
|
651
|
+
/**
|
|
652
|
+
* CRUD permissions
|
|
653
|
+
*/
|
|
654
|
+
create?: boolean;
|
|
655
|
+
read?: boolean;
|
|
656
|
+
update?: boolean;
|
|
657
|
+
delete?: boolean;
|
|
658
|
+
/**
|
|
659
|
+
* Record-level permissions
|
|
660
|
+
*/
|
|
661
|
+
record_level?: {
|
|
662
|
+
/**
|
|
663
|
+
* User can only access own records
|
|
664
|
+
*/
|
|
665
|
+
own_records_only?: boolean;
|
|
666
|
+
/**
|
|
667
|
+
* Sharing rules
|
|
668
|
+
*/
|
|
669
|
+
sharing_rules?: SharingRule[];
|
|
670
|
+
};
|
|
671
|
+
/**
|
|
672
|
+
* Field-level permissions
|
|
673
|
+
*/
|
|
674
|
+
field_permissions?: Record<string, {
|
|
675
|
+
read?: boolean;
|
|
676
|
+
edit?: boolean;
|
|
677
|
+
}>;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Sharing rule configuration
|
|
682
|
+
*/
|
|
683
|
+
export interface SharingRule {
|
|
684
|
+
/**
|
|
685
|
+
* Rule name
|
|
686
|
+
*/
|
|
687
|
+
name: string;
|
|
688
|
+
/**
|
|
689
|
+
* Criteria for sharing
|
|
690
|
+
*/
|
|
691
|
+
criteria?: Record<string, any>;
|
|
692
|
+
/**
|
|
693
|
+
* Access level granted
|
|
694
|
+
*/
|
|
695
|
+
access_level: 'read' | 'edit' | 'full';
|
|
696
|
+
/**
|
|
697
|
+
* Share with users/roles
|
|
698
|
+
*/
|
|
699
|
+
share_with?: {
|
|
700
|
+
users?: string[];
|
|
701
|
+
roles?: string[];
|
|
702
|
+
groups?: string[];
|
|
703
|
+
};
|
|
704
|
+
}
|
|
431
705
|
|
|
432
706
|
/**
|
|
433
707
|
* Object schema definition
|
|
708
|
+
* Phase 3.1: Enhanced with inheritance, triggers, permissions, and caching
|
|
434
709
|
*/
|
|
435
710
|
export interface ObjectSchemaMetadata {
|
|
436
711
|
/**
|
|
@@ -454,12 +729,118 @@ export interface ObjectSchemaMetadata {
|
|
|
454
729
|
fields: Record<string, FieldMetadata>;
|
|
455
730
|
|
|
456
731
|
/**
|
|
457
|
-
* Permissions
|
|
732
|
+
* Permissions (Phase 3.1.4: Enhanced permissions)
|
|
458
733
|
*/
|
|
459
|
-
permissions?:
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
734
|
+
permissions?: ObjectPermission;
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Parent object to inherit from (Phase 3.1.2)
|
|
738
|
+
*/
|
|
739
|
+
extends?: string;
|
|
740
|
+
|
|
741
|
+
/**
|
|
742
|
+
* Triggers configuration (Phase 3.1.3)
|
|
743
|
+
*/
|
|
744
|
+
triggers?: ObjectTrigger[];
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Primary key field
|
|
748
|
+
*/
|
|
749
|
+
primary_key?: string;
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Indexes for optimization
|
|
753
|
+
*/
|
|
754
|
+
indexes?: ObjectIndex[];
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* Relationships with other objects
|
|
758
|
+
*/
|
|
759
|
+
relationships?: ObjectRelationship[];
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* Record naming pattern
|
|
763
|
+
*/
|
|
764
|
+
name_field?: string;
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Soft delete configuration
|
|
768
|
+
*/
|
|
769
|
+
soft_delete?: boolean;
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* Audit trail configuration
|
|
773
|
+
*/
|
|
774
|
+
audit_trail?: boolean;
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* Schema version
|
|
778
|
+
*/
|
|
779
|
+
version?: string;
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* Cache configuration (Phase 3.1.5)
|
|
783
|
+
*/
|
|
784
|
+
cache?: {
|
|
785
|
+
/**
|
|
786
|
+
* Enable metadata caching
|
|
787
|
+
*/
|
|
788
|
+
enabled?: boolean;
|
|
789
|
+
/**
|
|
790
|
+
* Cache TTL in seconds
|
|
791
|
+
*/
|
|
792
|
+
ttl?: number;
|
|
793
|
+
/**
|
|
794
|
+
* Cache invalidation strategy
|
|
795
|
+
*/
|
|
796
|
+
invalidation?: 'time' | 'event' | 'manual';
|
|
464
797
|
};
|
|
465
798
|
}
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Object index configuration
|
|
802
|
+
*/
|
|
803
|
+
export interface ObjectIndex {
|
|
804
|
+
/**
|
|
805
|
+
* Index name
|
|
806
|
+
*/
|
|
807
|
+
name: string;
|
|
808
|
+
/**
|
|
809
|
+
* Fields to index
|
|
810
|
+
*/
|
|
811
|
+
fields: string[];
|
|
812
|
+
/**
|
|
813
|
+
* Whether index is unique
|
|
814
|
+
*/
|
|
815
|
+
unique?: boolean;
|
|
816
|
+
/**
|
|
817
|
+
* Index type
|
|
818
|
+
*/
|
|
819
|
+
type?: 'btree' | 'hash' | 'gist' | 'gin';
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
* Object relationship configuration
|
|
824
|
+
*/
|
|
825
|
+
export interface ObjectRelationship {
|
|
826
|
+
/**
|
|
827
|
+
* Relationship name
|
|
828
|
+
*/
|
|
829
|
+
name: string;
|
|
830
|
+
/**
|
|
831
|
+
* Related object
|
|
832
|
+
*/
|
|
833
|
+
object: string;
|
|
834
|
+
/**
|
|
835
|
+
* Relationship type
|
|
836
|
+
*/
|
|
837
|
+
type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
|
|
838
|
+
/**
|
|
839
|
+
* Foreign key field
|
|
840
|
+
*/
|
|
841
|
+
foreign_key?: string;
|
|
842
|
+
/**
|
|
843
|
+
* Cascade delete
|
|
844
|
+
*/
|
|
845
|
+
cascade_delete?: boolean;
|
|
846
|
+
}
|
package/src/form.ts
CHANGED
|
@@ -818,12 +818,46 @@ export interface FormField {
|
|
|
818
818
|
* Conditional rendering
|
|
819
819
|
*/
|
|
820
820
|
condition?: FieldCondition;
|
|
821
|
+
/**
|
|
822
|
+
* Custom widget/component name override.
|
|
823
|
+
* Aligns with @objectstack/spec FormField.widget.
|
|
824
|
+
* When set, the form renderer uses this widget type instead of auto-detecting.
|
|
825
|
+
* @example 'rich-text', 'code-editor', 'rating'
|
|
826
|
+
*/
|
|
827
|
+
widget?: string;
|
|
828
|
+
/**
|
|
829
|
+
* Parent field name for cascading/dependent fields.
|
|
830
|
+
* Aligns with @objectstack/spec FormField.dependsOn.
|
|
831
|
+
* When the parent field value changes, this field is re-evaluated.
|
|
832
|
+
* @example 'country' (field 'state' dependsOn 'country')
|
|
833
|
+
*/
|
|
834
|
+
dependsOn?: string;
|
|
835
|
+
/**
|
|
836
|
+
* Visibility condition expression.
|
|
837
|
+
* Aligns with @objectstack/spec FormField.visibleOn.
|
|
838
|
+
* When evaluated to false, the field is hidden.
|
|
839
|
+
* @example "${data.role === 'admin'}"
|
|
840
|
+
*/
|
|
841
|
+
visibleOn?: string;
|
|
842
|
+
/**
|
|
843
|
+
* Whether the field is hidden.
|
|
844
|
+
* Aligns with @objectstack/spec FormField.hidden.
|
|
845
|
+
* @default false
|
|
846
|
+
*/
|
|
847
|
+
hidden?: boolean;
|
|
848
|
+
/**
|
|
849
|
+
* Whether the field is read-only.
|
|
850
|
+
* Aligns with @objectstack/spec FormField.readonly.
|
|
851
|
+
* @default false
|
|
852
|
+
*/
|
|
853
|
+
readonly?: boolean;
|
|
821
854
|
/**
|
|
822
855
|
* Additional field-specific props
|
|
823
856
|
*/
|
|
824
857
|
[key: string]: any;
|
|
825
858
|
/**
|
|
826
|
-
* Column span for grid layouts
|
|
859
|
+
* Column span for grid layouts (1-4).
|
|
860
|
+
* Aligns with @objectstack/spec FormField.colSpan.
|
|
827
861
|
* @default 1
|
|
828
862
|
*/
|
|
829
863
|
colSpan?: number;
|