@thkl/agrid 0.1.7 → 0.1.10
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 +169 -11
- package/fesm2022/thkl-agrid.mjs +1811 -167
- package/fesm2022/thkl-agrid.mjs.map +1 -1
- package/package.json +3 -3
- package/types/thkl-agrid.d.ts +601 -30
- package/types/thkl-agrid.d.ts.map +1 -1
package/types/thkl-agrid.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ declare class AgridBrowserAdapter {
|
|
|
22
22
|
setBodyInteraction(cursor: string, userSelect: string): void;
|
|
23
23
|
/** Returns the viewport width or infinity during server rendering. */
|
|
24
24
|
viewportWidth(): number;
|
|
25
|
+
/** Returns the viewport height or infinity during server rendering. */
|
|
26
|
+
viewportHeight(): number;
|
|
25
27
|
/** Returns computed styles when a window is available. */
|
|
26
28
|
computedStyle(element: Element): CSSStyleDeclaration | null;
|
|
27
29
|
/** Creates a 2D canvas context for text measurement. */
|
|
@@ -53,10 +55,10 @@ type HistoryItem = HistoryEntry | HistoryEntry[];
|
|
|
53
55
|
* when computing the visible rows.
|
|
54
56
|
*/
|
|
55
57
|
/**
|
|
56
|
-
* Comparison operator for a
|
|
58
|
+
* Comparison operator for a column condition filter.
|
|
57
59
|
* For `date` columns `gt`/`lt`/`eq` read as after / before / on.
|
|
58
60
|
*/
|
|
59
|
-
type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'between';
|
|
61
|
+
type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'like' | 'startsWith' | 'endsWith' | 'includes' | 'notIncludes';
|
|
60
62
|
interface ColumnFilter {
|
|
61
63
|
/** Free-text substring filter (case-insensitive). Empty string = no text filter. */
|
|
62
64
|
text: string;
|
|
@@ -69,7 +71,7 @@ interface ColumnFilter {
|
|
|
69
71
|
/** Sort direction, or `null` when this column is not sorted. */
|
|
70
72
|
sort: 'asc' | 'desc' | null;
|
|
71
73
|
/**
|
|
72
|
-
*
|
|
74
|
+
* Condition operator for text, number, or date columns, or `null`/omitted when none.
|
|
73
75
|
* Combined with text and value filters using AND semantics.
|
|
74
76
|
*/
|
|
75
77
|
operator?: FilterOperator | null;
|
|
@@ -316,7 +318,8 @@ declare class AgridControl {
|
|
|
316
318
|
*/
|
|
317
319
|
setSelectedValues(field: string, values: string[] | null): void;
|
|
318
320
|
/**
|
|
319
|
-
* Set
|
|
321
|
+
* Set a column condition filter. Text columns support string operators while number/date
|
|
322
|
+
* columns support comparison operators.
|
|
320
323
|
* Pass `operator: null` (or an empty `operand`) to clear it. `operand2` is only used
|
|
321
324
|
* by the `'between'` operator.
|
|
322
325
|
*/
|
|
@@ -467,8 +470,11 @@ interface AgridLocaleText {
|
|
|
467
470
|
columnMenu: string;
|
|
468
471
|
columns: string;
|
|
469
472
|
detail: string;
|
|
473
|
+
toggleDetail: string;
|
|
470
474
|
hiddenColumn: string;
|
|
471
475
|
filterCondition: string;
|
|
476
|
+
filterConditionMenu: string;
|
|
477
|
+
filterValue: string;
|
|
472
478
|
filterNoCondition: string;
|
|
473
479
|
filterOpEquals: string;
|
|
474
480
|
filterOpNotEquals: string;
|
|
@@ -480,6 +486,11 @@ interface AgridLocaleText {
|
|
|
480
486
|
filterOpBefore: string;
|
|
481
487
|
filterOpAfter: string;
|
|
482
488
|
filterOpOn: string;
|
|
489
|
+
filterOpLike: string;
|
|
490
|
+
filterOpStartsWith: string;
|
|
491
|
+
filterOpEndsWith: string;
|
|
492
|
+
filterOpIncludes: string;
|
|
493
|
+
filterOpNotIncludes: string;
|
|
483
494
|
copyCellValue: string;
|
|
484
495
|
copyRow: string;
|
|
485
496
|
confirmDeleteRow: string;
|
|
@@ -503,6 +514,9 @@ interface AgridLocaleText {
|
|
|
503
514
|
pinColumn: string;
|
|
504
515
|
pinColumnRight: string;
|
|
505
516
|
unpinColumnRight: string;
|
|
517
|
+
pinRowTop: string;
|
|
518
|
+
pinRowBottom: string;
|
|
519
|
+
unpinRow: string;
|
|
506
520
|
previous: string;
|
|
507
521
|
resizeColumn: string;
|
|
508
522
|
rows: (count: number) => string;
|
|
@@ -568,6 +582,11 @@ interface AgridProviderConfig<T extends object = any> extends Partial<AGridOptio
|
|
|
568
582
|
* instead of filtering locally. @default false
|
|
569
583
|
*/
|
|
570
584
|
enableQuickFilter?: boolean;
|
|
585
|
+
/**
|
|
586
|
+
* Optional command bar rendered above the column headers. Buttons and dropdown items emit
|
|
587
|
+
* their id through the grid's single `(menuBarAction)` output.
|
|
588
|
+
*/
|
|
589
|
+
menuBarItems?: AgridMenuBarItem<T>[];
|
|
571
590
|
/**
|
|
572
591
|
* Sorting behavior: one active column, multiple columns, or disabled entirely.
|
|
573
592
|
* @default 'multi'
|
|
@@ -580,6 +599,14 @@ interface AgridProviderConfig<T extends object = any> extends Partial<AGridOptio
|
|
|
580
599
|
* - `'multi'` — Ctrl+click toggles, Shift+click extends range, click+drag sweeps
|
|
581
600
|
*/
|
|
582
601
|
rowSelection?: 'single' | 'multi' | 'none';
|
|
602
|
+
/**
|
|
603
|
+
* Behavior after pressing Enter while an inline cell editor is active.
|
|
604
|
+
* - `'nothing'` — commit and keep the current cell selected
|
|
605
|
+
* - `'nextColumn'` — commit and move to the next column in the same row
|
|
606
|
+
* - `'nextRow'` — commit and move to the same column one row down
|
|
607
|
+
* @default 'nextRow'
|
|
608
|
+
*/
|
|
609
|
+
enterEditAction?: AgridEnterEditAction;
|
|
583
610
|
/** Returns a short description string shown next to the group label. */
|
|
584
611
|
groupDescription?: ((label: string) => string) | null;
|
|
585
612
|
/** Actions shown in the group header's `⋮` menu. */
|
|
@@ -603,6 +630,52 @@ interface AgridProviderConfig<T extends object = any> extends Partial<AGridOptio
|
|
|
603
630
|
loading?: boolean;
|
|
604
631
|
/** Message shown when the grid has no rows to display. */
|
|
605
632
|
emptyText?: string;
|
|
633
|
+
/**
|
|
634
|
+
* Return one or more CSS class names applied to a whole data row, based on its data and index.
|
|
635
|
+
* Complements the per-cell {@link ColDef.cellClass}.
|
|
636
|
+
*
|
|
637
|
+
* @example
|
|
638
|
+
* ```ts
|
|
639
|
+
* getRowClass: ({ row }) => row.status === 'overdue' ? 'row-danger' : ''
|
|
640
|
+
* ```
|
|
641
|
+
*/
|
|
642
|
+
getRowClass?: (params: {
|
|
643
|
+
row: T;
|
|
644
|
+
index: number;
|
|
645
|
+
}) => string;
|
|
646
|
+
/**
|
|
647
|
+
* Designate rows to pin to the top or bottom of the grid body. Pinned rows stay visible during
|
|
648
|
+
* vertical scroll and are excluded from grouping and pagination, but remain fully interactive
|
|
649
|
+
* (editable/selectable) because they keep their real data-source index.
|
|
650
|
+
*
|
|
651
|
+
* Return `'top'`, `'bottom'`, or `undefined` (a normal scrolling row).
|
|
652
|
+
*
|
|
653
|
+
* @example
|
|
654
|
+
* ```ts
|
|
655
|
+
* pinRow: row => row.isSummary ? 'bottom' : undefined
|
|
656
|
+
* ```
|
|
657
|
+
*/
|
|
658
|
+
pinRow?: (row: T, index: number) => 'top' | 'bottom' | undefined;
|
|
659
|
+
/**
|
|
660
|
+
* Enable master/detail rows: each flat data row, or each leaf row in tree mode, can expand to
|
|
661
|
+
* reveal a detail panel rendered beneath it. Requires {@link detailRenderer}. Grouped mode is
|
|
662
|
+
* not supported. @default false
|
|
663
|
+
*/
|
|
664
|
+
masterDetail?: boolean;
|
|
665
|
+
/**
|
|
666
|
+
* Returns the HTML shown inside an expanded detail panel. Angular's built-in HTML sanitization
|
|
667
|
+
* is applied automatically (same as {@link ColDef.cellRenderer}).
|
|
668
|
+
*
|
|
669
|
+
* @example
|
|
670
|
+
* ```ts
|
|
671
|
+
* detailRenderer: ({ row }) => `<div class="detail">${row.notes}</div>`
|
|
672
|
+
* ```
|
|
673
|
+
*/
|
|
674
|
+
detailRenderer?: (params: {
|
|
675
|
+
row: T;
|
|
676
|
+
}) => string;
|
|
677
|
+
/** Fixed height in pixels of an expanded detail panel row. @default 200 */
|
|
678
|
+
detailRowHeight?: number;
|
|
606
679
|
}
|
|
607
680
|
/**
|
|
608
681
|
* Bundles a grid's data source, control state, columns, and display options.
|
|
@@ -657,12 +730,16 @@ declare class AgridProvider<T extends object = any> {
|
|
|
657
730
|
filterDebounceMs: number;
|
|
658
731
|
/** Whether the global quick-filter box is shown above the grid. */
|
|
659
732
|
enableQuickFilter: boolean;
|
|
733
|
+
/** Commands rendered in the optional menu bar above the column headers. */
|
|
734
|
+
menuBarItems: AgridMenuBarItem<T>[];
|
|
660
735
|
/** Enabled sorting mode. */
|
|
661
736
|
sortOption: 'single' | 'multi' | 'none';
|
|
662
737
|
/** Toggle auto-add-rows without recreating the provider. @default signal(false) */
|
|
663
738
|
readonly autoAddRows: WritableSignal<boolean>;
|
|
664
739
|
/** Enabled row-selection mode. */
|
|
665
740
|
rowSelection: 'single' | 'multi' | 'none';
|
|
741
|
+
/** Behavior after pressing Enter while an inline cell editor is active. */
|
|
742
|
+
enterEditAction: AgridEnterEditAction;
|
|
666
743
|
/** Optional description shown beside each group heading. */
|
|
667
744
|
groupDescription: ((label: string) => string) | null;
|
|
668
745
|
/** Actions available from group headers. */
|
|
@@ -679,6 +756,21 @@ declare class AgridProvider<T extends object = any> {
|
|
|
679
756
|
emptyText?: string;
|
|
680
757
|
/** Whether edits are restricted to the sidebar editor. */
|
|
681
758
|
useSidebarEditor: boolean;
|
|
759
|
+
/** Optional callback returning CSS classes for a whole data row. */
|
|
760
|
+
getRowClass?: (params: {
|
|
761
|
+
row: T;
|
|
762
|
+
index: number;
|
|
763
|
+
}) => string;
|
|
764
|
+
/** Optional callback designating rows pinned to the top or bottom of the body. */
|
|
765
|
+
pinRow?: (row: T, index: number) => 'top' | 'bottom' | undefined;
|
|
766
|
+
/** Whether master/detail expandable detail rows are enabled. */
|
|
767
|
+
masterDetail: boolean;
|
|
768
|
+
/** Returns the sanitized HTML rendered inside an expanded detail panel. */
|
|
769
|
+
detailRenderer?: (params: {
|
|
770
|
+
row: T;
|
|
771
|
+
}) => string;
|
|
772
|
+
/** Fixed height in pixels of an expanded detail panel row. */
|
|
773
|
+
detailRowHeight: number;
|
|
682
774
|
/** Toggle the loading overlay without recreating the provider. @default signal(false) */
|
|
683
775
|
readonly loading: WritableSignal<boolean>;
|
|
684
776
|
/** Toggle readonly mode without recreating the provider. @default signal(false) */
|
|
@@ -691,6 +783,19 @@ declare class AgridProvider<T extends object = any> {
|
|
|
691
783
|
|
|
692
784
|
/** String-valued property names available on a row type. */
|
|
693
785
|
type AgridField<T extends object> = Extract<keyof T, string>;
|
|
786
|
+
/** Behavior after pressing Enter while an inline cell editor is active. */
|
|
787
|
+
type AgridEnterEditAction = 'nothing' | 'nextColumn' | 'nextRow';
|
|
788
|
+
/** Parameters passed to a row-aware cell readonly resolver. */
|
|
789
|
+
interface CellReadonlyParams<T extends object = any, K extends AgridField<T> = AgridField<T>> {
|
|
790
|
+
/** Datasource row containing the cell. */
|
|
791
|
+
row: T;
|
|
792
|
+
/** Current raw field value. */
|
|
793
|
+
value: T[K];
|
|
794
|
+
/** Column definition for the cell. */
|
|
795
|
+
column: ColDef<T, K>;
|
|
796
|
+
/** Zero-based index of the row in the datasource. */
|
|
797
|
+
originalIndex: number;
|
|
798
|
+
}
|
|
694
799
|
/** Global options shared by grid providers. */
|
|
695
800
|
interface AGridOptions {
|
|
696
801
|
/**
|
|
@@ -718,6 +823,44 @@ interface CellContextMenuItem<T extends object = any> {
|
|
|
718
823
|
/** Renders the item in red (destructive action). */
|
|
719
824
|
danger?: boolean;
|
|
720
825
|
}
|
|
826
|
+
/** Current grid state supplied to menu-bar visibility, active, and disabled resolvers. */
|
|
827
|
+
interface AgridMenuBarContext<T extends object = any> {
|
|
828
|
+
/** Current datasource rows. */
|
|
829
|
+
rows: readonly T[];
|
|
830
|
+
/** Currently selected rows with their original datasource indices. */
|
|
831
|
+
selectedRows: readonly {
|
|
832
|
+
row: T;
|
|
833
|
+
originalIndex: number;
|
|
834
|
+
}[];
|
|
835
|
+
/** Currently selected cell, or `null`. */
|
|
836
|
+
selectedCell: CellPosition | null;
|
|
837
|
+
/** Provider that owns the menu bar. */
|
|
838
|
+
provider: AgridProvider<T>;
|
|
839
|
+
/** Datasource that owns the current rows. */
|
|
840
|
+
datasource: AgridDataSource<T>;
|
|
841
|
+
}
|
|
842
|
+
/** Static or runtime-resolved menu-bar state. */
|
|
843
|
+
type AgridMenuBarState<T extends object = any> = boolean | ((context: AgridMenuBarContext<T>) => boolean);
|
|
844
|
+
/** Shared configuration for menu-bar buttons and dropdown items. */
|
|
845
|
+
interface AgridMenuBarMenuItem<T extends object = any> {
|
|
846
|
+
/** Stable command id emitted through `(menuBarAction)`. */
|
|
847
|
+
id: string;
|
|
848
|
+
/** Visible command label. */
|
|
849
|
+
label: string;
|
|
850
|
+
/** Optional compact icon or glyph shown before the label. */
|
|
851
|
+
icon?: string;
|
|
852
|
+
/** Whether the command is rendered. Defaults to `true`. */
|
|
853
|
+
visible?: AgridMenuBarState<T>;
|
|
854
|
+
/** Whether the command receives active styling. Defaults to `false`. */
|
|
855
|
+
active?: AgridMenuBarState<T>;
|
|
856
|
+
/** Whether the command is disabled. Defaults to `false`. */
|
|
857
|
+
disabled?: AgridMenuBarState<T>;
|
|
858
|
+
}
|
|
859
|
+
/** Top-level menu-bar button with optional additional dropdown commands. */
|
|
860
|
+
interface AgridMenuBarItem<T extends object = any> extends AgridMenuBarMenuItem<T> {
|
|
861
|
+
/** Additional commands opened from the button's dropdown chevron. */
|
|
862
|
+
items?: AgridMenuBarMenuItem<T>[];
|
|
863
|
+
}
|
|
721
864
|
/**
|
|
722
865
|
* A structured value option used when the data field stores a raw value (e.g. a numeric ID)
|
|
723
866
|
* but the cell should display a human-readable label.
|
|
@@ -772,6 +915,17 @@ interface ColDefBase<T extends object, K extends AgridField<T>> {
|
|
|
772
915
|
* Defaults to `true` (editable) when omitted.
|
|
773
916
|
*/
|
|
774
917
|
editable?: boolean;
|
|
918
|
+
/**
|
|
919
|
+
* Return `true` to make this specific cell read-only at runtime.
|
|
920
|
+
* Runs with the current row, value, column definition, and original datasource index.
|
|
921
|
+
* `editable: false` still makes the whole column read-only before this callback is checked.
|
|
922
|
+
*
|
|
923
|
+
* @example
|
|
924
|
+
* ```ts
|
|
925
|
+
* { field: 'approval', cellReadonly: ({ row }) => row.status !== 'Draft' }
|
|
926
|
+
* ```
|
|
927
|
+
*/
|
|
928
|
+
cellReadonly?: (params: CellReadonlyParams<T, K>) => boolean;
|
|
775
929
|
/**
|
|
776
930
|
* Fixed list of allowed values shown in a `<select>` dropdown when editing.
|
|
777
931
|
*
|
|
@@ -790,6 +944,25 @@ interface ColDefBase<T extends object, K extends AgridField<T>> {
|
|
|
790
944
|
* ```
|
|
791
945
|
*/
|
|
792
946
|
formatter?: (value: T[K]) => string;
|
|
947
|
+
/**
|
|
948
|
+
* Resolve an input mask for this specific string cell. The callback receives the current
|
|
949
|
+
* row, cell value, and column definition, so different rows in one column can use different
|
|
950
|
+
* regular expressions. Return `null` or `undefined` to leave the cell unrestricted.
|
|
951
|
+
*
|
|
952
|
+
* The expression is matched against the complete proposed editor value. It should accept
|
|
953
|
+
* partial values so the user can build the final value one character at a time.
|
|
954
|
+
*
|
|
955
|
+
* @example
|
|
956
|
+
* ```ts
|
|
957
|
+
* {
|
|
958
|
+
* field: 'reference',
|
|
959
|
+
* inputMask: ({ row }) => row.numeric
|
|
960
|
+
* ? /\d{0,3}(?:-\d{0,5}(?:-\d{0,5})?)?/
|
|
961
|
+
* : /[a-z0-9]{0,3}(?: [a-z0-9]{0,3}(?: [a-z0-9]{0,5})?)?/i,
|
|
962
|
+
* }
|
|
963
|
+
* ```
|
|
964
|
+
*/
|
|
965
|
+
inputMask?: (params: InputMaskParams<T, K>) => RegExp | null | undefined;
|
|
793
966
|
/**
|
|
794
967
|
* Set to `true` to show a filter input and value-picker in the filter row for this column.
|
|
795
968
|
* At least one filterable column must exist for the filter row to appear.
|
|
@@ -867,12 +1040,26 @@ interface ColDefBase<T extends object, K extends AgridField<T>> {
|
|
|
867
1040
|
value: T[K];
|
|
868
1041
|
row: T;
|
|
869
1042
|
}) => string;
|
|
1043
|
+
/**
|
|
1044
|
+
* Show a right-aligned info button in this column's cells.
|
|
1045
|
+
* Pass a predicate to show it only for selected rows or values.
|
|
1046
|
+
*/
|
|
1047
|
+
infoIcon?: boolean | ((params: {
|
|
1048
|
+
value: T[K];
|
|
1049
|
+
row: T;
|
|
1050
|
+
}) => boolean);
|
|
870
1051
|
}
|
|
871
1052
|
/**
|
|
872
1053
|
* Defines a column whose `field`, formatter value, renderer value, and row are
|
|
873
1054
|
* derived from the supplied row type.
|
|
874
1055
|
*/
|
|
875
1056
|
type ColDef<T extends object = any, K extends AgridField<T> = AgridField<T>> = K extends AgridField<T> ? ColDefBase<T, K> : never;
|
|
1057
|
+
/** Parameters passed to a row-aware {@link ColDefBase.inputMask} resolver. */
|
|
1058
|
+
interface InputMaskParams<T extends object = any, K extends AgridField<T> = AgridField<T>> {
|
|
1059
|
+
row: T;
|
|
1060
|
+
value: T[K];
|
|
1061
|
+
column: ColDef<T, K>;
|
|
1062
|
+
}
|
|
876
1063
|
/**
|
|
877
1064
|
* Defines a single action shown in the group header's action menu.
|
|
878
1065
|
* Pass an array of these to `<agrid [groupActions]="...">`.
|
|
@@ -900,7 +1087,35 @@ type GridItem<T extends object = Record<string, unknown>> = {
|
|
|
900
1087
|
count: number;
|
|
901
1088
|
collapsed: boolean;
|
|
902
1089
|
aggregates?: Record<string, unknown>;
|
|
903
|
-
} | TreeRowItem<T>;
|
|
1090
|
+
} | TreeRowItem<T> | PathTreeNodeItem | DetailRowItem<T>;
|
|
1091
|
+
/** A generated, display-only branch node produced by path-based tree data. */
|
|
1092
|
+
interface PathTreeNodeItem {
|
|
1093
|
+
/** Stable UUID for this generated branch node. */
|
|
1094
|
+
uuid: string;
|
|
1095
|
+
/** Stable expansion id derived from the complete path to this node. */
|
|
1096
|
+
pathNodeId: string;
|
|
1097
|
+
/** Segment label shown for this branch. */
|
|
1098
|
+
pathLabel: string;
|
|
1099
|
+
/** Zero-based depth in the generated tree. */
|
|
1100
|
+
level: number;
|
|
1101
|
+
/** Path branch nodes always have descendants. */
|
|
1102
|
+
expandable: true;
|
|
1103
|
+
/** Whether the branch's descendants are currently visible. */
|
|
1104
|
+
expanded: boolean;
|
|
1105
|
+
}
|
|
1106
|
+
/**
|
|
1107
|
+
* A master/detail panel row rendered immediately beneath its expanded parent data row.
|
|
1108
|
+
*
|
|
1109
|
+
* Carries the parent's `originalIndex` (so the panel can be re-collapsed and tracked) and the
|
|
1110
|
+
* parent `row` (passed to `detailRenderer`). It is intentionally *not* a data-row item — selection,
|
|
1111
|
+
* editing, and cell rendering skip it.
|
|
1112
|
+
*/
|
|
1113
|
+
interface DetailRowItem<T extends object = Record<string, unknown>> {
|
|
1114
|
+
/** Original index of the parent data row this detail panel belongs to. */
|
|
1115
|
+
detailFor: number;
|
|
1116
|
+
/** The parent row's data, passed to `detailRenderer`. */
|
|
1117
|
+
row: T;
|
|
1118
|
+
}
|
|
904
1119
|
/**
|
|
905
1120
|
* A data row rendered inside a hierarchical tree.
|
|
906
1121
|
*
|
|
@@ -919,14 +1134,15 @@ interface TreeRowItem<T extends object = Record<string, unknown>> {
|
|
|
919
1134
|
expandable: boolean;
|
|
920
1135
|
/** `true` when this row is expandable and currently expanded (its children are visible). */
|
|
921
1136
|
expanded: boolean;
|
|
1137
|
+
/** Optional display-only label for the tree cell, used by path-based trees. */
|
|
1138
|
+
treeLabel?: string;
|
|
922
1139
|
}
|
|
923
1140
|
/**
|
|
924
1141
|
* Host-supplied configuration that turns the grid into a tree.
|
|
925
1142
|
*
|
|
926
|
-
* Hierarchy is expressed over the existing flat row array
|
|
927
|
-
*
|
|
928
|
-
*
|
|
929
|
-
* parent id is not present in the data — is treated as a root.
|
|
1143
|
+
* Hierarchy is expressed over the existing flat row array using either stable id/parent-id
|
|
1144
|
+
* accessors or a path accessor. Path mode creates display-only branch nodes while leaves retain
|
|
1145
|
+
* their original datasource indices, so selection, editing, and persistence remain row-based.
|
|
930
1146
|
*
|
|
931
1147
|
* @example
|
|
932
1148
|
* ```ts
|
|
@@ -935,13 +1151,15 @@ interface TreeRowItem<T extends object = Record<string, unknown>> {
|
|
|
935
1151
|
* getParentId: row => row.managerId,
|
|
936
1152
|
* treeField: 'name',
|
|
937
1153
|
* }
|
|
1154
|
+
*
|
|
1155
|
+
* // Or derive branches from a delimited field:
|
|
1156
|
+
* treeConfig: {
|
|
1157
|
+
* getPath: row => row.oz.split('.'),
|
|
1158
|
+
* treeField: 'oz',
|
|
1159
|
+
* }
|
|
938
1160
|
* ```
|
|
939
1161
|
*/
|
|
940
|
-
interface
|
|
941
|
-
/** Return a stable, unique id for a row. Used as the expansion key and for parent lookups. */
|
|
942
|
-
getId: (row: T) => string | number;
|
|
943
|
-
/** Return the id of a row's parent, or `null`/`undefined` for a root row. */
|
|
944
|
-
getParentId: (row: T) => string | number | null | undefined;
|
|
1162
|
+
interface AgridTreeConfigBase<T extends object> {
|
|
945
1163
|
/** Field whose cell shows the indentation and expand/collapse twisty. */
|
|
946
1164
|
treeField: AgridField<T>;
|
|
947
1165
|
/** Expand all nodes when the tree first renders. Defaults to `false` (all collapsed). */
|
|
@@ -952,6 +1170,66 @@ interface AgridTreeConfig<T extends object = any> {
|
|
|
952
1170
|
*/
|
|
953
1171
|
keepAncestorsOnFilter?: boolean;
|
|
954
1172
|
}
|
|
1173
|
+
/** Tree configuration for rows that already expose stable id and parent-id values. */
|
|
1174
|
+
interface AgridParentTreeConfig<T extends object = any> extends AgridTreeConfigBase<T> {
|
|
1175
|
+
/** Return a stable, unique id for a row. Used as the expansion key and for parent lookups. */
|
|
1176
|
+
getId: (row: T) => string | number;
|
|
1177
|
+
/** Return the id of a row's parent, or `null`/`undefined` for a root row. */
|
|
1178
|
+
getParentId: (row: T) => string | number | null | undefined;
|
|
1179
|
+
getPath?: never;
|
|
1180
|
+
}
|
|
1181
|
+
/** Values supplied when formatting one path-tree segment for display. */
|
|
1182
|
+
interface AgridPathSegmentParams<T extends object = any> {
|
|
1183
|
+
/** Datasource row that produced this path. Shared branches use the first matching row. */
|
|
1184
|
+
row: T;
|
|
1185
|
+
/** Raw segment returned by `getPath`. */
|
|
1186
|
+
segment: string | number;
|
|
1187
|
+
/** Zero-based position of the segment in the path. */
|
|
1188
|
+
level: number;
|
|
1189
|
+
/** Raw path prefix ending at this segment. */
|
|
1190
|
+
path: readonly (string | number)[];
|
|
1191
|
+
/** Whether this segment represents the datasource-backed leaf row. */
|
|
1192
|
+
leaf: boolean;
|
|
1193
|
+
}
|
|
1194
|
+
/** Tree configuration that derives display-only branch nodes from each row's path segments. */
|
|
1195
|
+
interface AgridPathTreeConfig<T extends object = any> extends AgridTreeConfigBase<T> {
|
|
1196
|
+
/** Return ordered path segments, for example `['01', '01', '0001']`. */
|
|
1197
|
+
getPath: (row: T) => readonly (string | number)[];
|
|
1198
|
+
/**
|
|
1199
|
+
* Return a stable UUID for generated branch nodes created from this row.
|
|
1200
|
+
* Shared branches use the first matching row, matching {@link formatPathSegment}.
|
|
1201
|
+
*/
|
|
1202
|
+
nodeUuid?: (row: T) => string | number;
|
|
1203
|
+
/**
|
|
1204
|
+
* Return a stable UUID for generated branch nodes created from this row.
|
|
1205
|
+
* @deprecated Use {@link nodeUuid}. Kept as a compatibility alias for the original typo.
|
|
1206
|
+
*/
|
|
1207
|
+
nodeUUid?: (row: T) => string | number;
|
|
1208
|
+
/** Format a segment for display without changing its identity, grouping, or sort order. */
|
|
1209
|
+
formatPathSegment?: (params: AgridPathSegmentParams<T>) => string;
|
|
1210
|
+
getId?: never;
|
|
1211
|
+
getParentId?: never;
|
|
1212
|
+
}
|
|
1213
|
+
/** Supported tree data modes: explicit parent links or generated path segments. */
|
|
1214
|
+
type AgridTreeConfig<T extends object = any> = AgridParentTreeConfig<T> | AgridPathTreeConfig<T>;
|
|
1215
|
+
/** Selection behavior for the standalone tree control. */
|
|
1216
|
+
type AgridTreeSelectionMode = 'none' | 'single' | 'multi';
|
|
1217
|
+
/** Normalized row or generated-branch event emitted by the standalone tree control. */
|
|
1218
|
+
interface AgridTreeNodeEvent<T extends object = any> {
|
|
1219
|
+
kind: 'row' | 'branch';
|
|
1220
|
+
id: string | number;
|
|
1221
|
+
uuid?: string;
|
|
1222
|
+
label: string;
|
|
1223
|
+
level: number;
|
|
1224
|
+
expandable: boolean;
|
|
1225
|
+
expanded: boolean;
|
|
1226
|
+
row?: T;
|
|
1227
|
+
originalIndex?: number;
|
|
1228
|
+
}
|
|
1229
|
+
/** Current standalone-tree selection after a user interaction. */
|
|
1230
|
+
interface AgridTreeSelectionEvent<T extends object = any> {
|
|
1231
|
+
nodes: AgridTreeNodeEvent<T>[];
|
|
1232
|
+
}
|
|
955
1233
|
/** Zero-based position of a cell inside the grid. */
|
|
956
1234
|
interface CellPosition {
|
|
957
1235
|
/** Zero-based row index in the data array. */
|
|
@@ -988,6 +1266,21 @@ type GridEditEvent<T extends object = any> = {
|
|
|
988
1266
|
newValue: T[K];
|
|
989
1267
|
};
|
|
990
1268
|
}[AgridField<T>];
|
|
1269
|
+
/** Emitted when the optional info button inside a cell is clicked. */
|
|
1270
|
+
type CellInfoEvent<T extends object = any> = {
|
|
1271
|
+
[K in AgridField<T>]: {
|
|
1272
|
+
/** Datasource row containing the clicked cell. */
|
|
1273
|
+
row: T;
|
|
1274
|
+
/** Column field containing the clicked info button. */
|
|
1275
|
+
field: K;
|
|
1276
|
+
/** Current raw field value. */
|
|
1277
|
+
value: T[K];
|
|
1278
|
+
/** Zero-based index of the row in the datasource. */
|
|
1279
|
+
originalIndex: number;
|
|
1280
|
+
/** Column definition for the clicked cell. */
|
|
1281
|
+
column: ColDef<T, K>;
|
|
1282
|
+
};
|
|
1283
|
+
}[AgridField<T>];
|
|
991
1284
|
/**
|
|
992
1285
|
* Emitted asynchronously after an edit changes a row and the data source has been updated.
|
|
993
1286
|
*
|
|
@@ -1027,6 +1320,21 @@ interface RowClickEvent<T extends object = any> {
|
|
|
1027
1320
|
/** Zero-based index of the row in the data source. */
|
|
1028
1321
|
originalIndex: number;
|
|
1029
1322
|
}
|
|
1323
|
+
/** Emitted when the user clicks or double-clicks a generated path-tree branch node. */
|
|
1324
|
+
interface TreeNodeClickEvent {
|
|
1325
|
+
/** Stable UUID for the generated branch node. */
|
|
1326
|
+
uuid: string;
|
|
1327
|
+
/** Stable expansion id derived from the complete path to this node. */
|
|
1328
|
+
pathNodeId: string;
|
|
1329
|
+
/** Segment label shown for this branch. */
|
|
1330
|
+
pathLabel: string;
|
|
1331
|
+
/** Zero-based depth in the generated tree. */
|
|
1332
|
+
level: number;
|
|
1333
|
+
/** Whether the branch's descendants are currently visible. */
|
|
1334
|
+
expanded: boolean;
|
|
1335
|
+
/** Snapshot of the generated branch node. */
|
|
1336
|
+
node: PathTreeNodeItem;
|
|
1337
|
+
}
|
|
1030
1338
|
/**
|
|
1031
1339
|
* Emitted after an inline-edited row is left, or after the user saves through the sidebar editor.
|
|
1032
1340
|
*/
|
|
@@ -1068,19 +1376,19 @@ interface PageChangeEvent {
|
|
|
1068
1376
|
/** Zero-based index of the last row on this page (inclusive). */
|
|
1069
1377
|
endRow: number;
|
|
1070
1378
|
}
|
|
1071
|
-
/** Emitted when a text filter changes
|
|
1379
|
+
/** Emitted when a header text filter or column-menu condition changes server-side. */
|
|
1072
1380
|
interface FilterChangeEvent {
|
|
1073
1381
|
/** Field name of the filtered column. */
|
|
1074
1382
|
field: string;
|
|
1075
1383
|
/** Current free-text filter value. An empty string clears the text filter. */
|
|
1076
1384
|
value: string;
|
|
1077
1385
|
/**
|
|
1078
|
-
*
|
|
1079
|
-
*
|
|
1386
|
+
* Text, number, or date condition operator from the column-menu UI.
|
|
1387
|
+
* `null` clears the condition.
|
|
1080
1388
|
* When set, `value` is empty and the operands live in {@link operand} / {@link operand2}.
|
|
1081
1389
|
*/
|
|
1082
1390
|
operator?: FilterOperator | null;
|
|
1083
|
-
/** Primary
|
|
1391
|
+
/** Primary condition operand. Present with {@link operator}. */
|
|
1084
1392
|
operand?: string | null;
|
|
1085
1393
|
/** Upper-bound operand, present only when {@link operator} is `'between'`. */
|
|
1086
1394
|
operand2?: string | null;
|
|
@@ -1142,10 +1450,9 @@ type CellRange = {
|
|
|
1142
1450
|
focus: CellPosition;
|
|
1143
1451
|
};
|
|
1144
1452
|
|
|
1145
|
-
/** Location of a formatted-value match in source
|
|
1453
|
+
/** Location of a formatted-value match in source coordinates. @internal */
|
|
1146
1454
|
type AgridFindMatch = {
|
|
1147
1455
|
rowIndex: number;
|
|
1148
|
-
displayIndex: number;
|
|
1149
1456
|
colIndex: number;
|
|
1150
1457
|
};
|
|
1151
1458
|
|
|
@@ -1301,10 +1608,12 @@ interface AgridSidebarDetailField {
|
|
|
1301
1608
|
* |-----|--------|
|
|
1302
1609
|
* | Arrow keys | Move selection |
|
|
1303
1610
|
* | Tab / Shift+Tab | Move right / left (wraps rows) |
|
|
1304
|
-
* | Enter
|
|
1611
|
+
* | Enter | Enter edit mode |
|
|
1612
|
+
* | Ctrl/Cmd+Enter | Toggle an expandable tree node |
|
|
1613
|
+
* | F2 | Enter edit mode |
|
|
1305
1614
|
* | Printable key | Enter edit mode with seeded character |
|
|
1306
|
-
* | Escape |
|
|
1307
|
-
* | Tab / Enter (while editing) | Commit and move
|
|
1615
|
+
* | Escape | Close any open menu or cancel edit |
|
|
1616
|
+
* | Tab / Enter (while editing) | Commit and move according to navigation settings |
|
|
1308
1617
|
*/
|
|
1309
1618
|
declare class AgridComponent<T extends object = any> {
|
|
1310
1619
|
/** Grid provider containing columns, data source, control, and options. */
|
|
@@ -1322,9 +1631,11 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1322
1631
|
readonly serverSideFiltering: Signal<boolean>;
|
|
1323
1632
|
readonly filterDebounceMs: Signal<number>;
|
|
1324
1633
|
readonly enableQuickFilter: Signal<boolean>;
|
|
1634
|
+
readonly menuBarItems: Signal<AgridMenuBarItem<T>[]>;
|
|
1325
1635
|
readonly quickFilterValue: Signal<string>;
|
|
1326
1636
|
readonly sortOption: Signal<"single" | "multi" | "none">;
|
|
1327
1637
|
readonly rowSelection: Signal<"single" | "multi" | "none">;
|
|
1638
|
+
readonly enterEditAction: Signal<_thkl_agrid.AgridEnterEditAction>;
|
|
1328
1639
|
readonly groupDescription: Signal<((label: string) => string) | null>;
|
|
1329
1640
|
readonly groupActions: Signal<GroupAction[]>;
|
|
1330
1641
|
readonly cellMenuItems: Signal<(CellContextMenuItem<T> | null)[]>;
|
|
@@ -1337,10 +1648,28 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1337
1648
|
readonly loading: Signal<boolean>;
|
|
1338
1649
|
readonly emptyText: Signal<string | undefined>;
|
|
1339
1650
|
readonly useSidebarEditor: Signal<boolean>;
|
|
1651
|
+
/** Host callback for per-row CSS classes, or `undefined`. */
|
|
1652
|
+
readonly rowClassFn: Signal<((params: {
|
|
1653
|
+
row: Record<string, unknown>;
|
|
1654
|
+
index: number;
|
|
1655
|
+
}) => string) | undefined>;
|
|
1656
|
+
/** Host callback designating pinned rows, or `undefined`. */
|
|
1657
|
+
readonly pinRowFn: Signal<((row: Record<string, unknown>, index: number) => "top" | "bottom" | undefined) | undefined>;
|
|
1658
|
+
/**
|
|
1659
|
+
* Effective pin resolver fed to the projection: a runtime UI override wins (including an explicit
|
|
1660
|
+
* `null` unpin), otherwise the provider `pinRow` predicate decides. Returns `undefined` when
|
|
1661
|
+
* neither pinning source is active, so the projection's pinning path stays off.
|
|
1662
|
+
*/
|
|
1663
|
+
readonly effectivePinRow: Signal<((row: Record<string, unknown>, index: number) => "top" | "bottom" | undefined) | undefined>;
|
|
1664
|
+
/** Whether master/detail is enabled and applicable (flat rows or tree leaves; not grouped). */
|
|
1665
|
+
readonly masterDetail: Signal<boolean>;
|
|
1666
|
+
/** Fixed detail-panel height in pixels. */
|
|
1667
|
+
readonly detailRowHeight: Signal<number>;
|
|
1340
1668
|
/** Column definitions from the active provider. */
|
|
1341
1669
|
readonly colDefs: Signal<ColDefBase<any, string>[]>;
|
|
1342
1670
|
/** Signal-based data container from the active provider. */
|
|
1343
1671
|
readonly dataSource: Signal<AgridDataSource<any>>;
|
|
1672
|
+
private readonly treeParentIds;
|
|
1344
1673
|
/** Grid UI state container from the active provider. */
|
|
1345
1674
|
readonly control: Signal<AgridControl | null>;
|
|
1346
1675
|
/** Resolved locale code used for date formatting and built-in localization lookup. 'auto' is replaced with navigator.language. */
|
|
@@ -1367,6 +1696,10 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1367
1696
|
rowDoubleClicked: _angular_core.OutputEmitterRef<RowClickEvent<T>>;
|
|
1368
1697
|
/** Emitted when the user single-clicks a data row. */
|
|
1369
1698
|
rowClick: _angular_core.OutputEmitterRef<RowClickEvent<T>>;
|
|
1699
|
+
/** Emitted when the user single-clicks a generated path-tree branch node. */
|
|
1700
|
+
treeNodeClick: _angular_core.OutputEmitterRef<TreeNodeClickEvent>;
|
|
1701
|
+
/** Emitted when the user double-clicks a generated path-tree branch node. */
|
|
1702
|
+
treeNodeDoubleClicked: _angular_core.OutputEmitterRef<TreeNodeClickEvent>;
|
|
1370
1703
|
/**
|
|
1371
1704
|
* Emitted once after a changed row is left during inline editing, or when the sidebar editor
|
|
1372
1705
|
* save button is used.
|
|
@@ -1390,10 +1723,22 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1390
1723
|
quickFilterChange: _angular_core.OutputEmitterRef<string>;
|
|
1391
1724
|
/** Emitted when a `ColDef.validate` hook rejects a committed value (inline or sidebar). */
|
|
1392
1725
|
validationFailed: _angular_core.OutputEmitterRef<ValidationFailedEvent<any>>;
|
|
1726
|
+
/** Emitted when a column's optional cell information button is clicked. */
|
|
1727
|
+
cellInfo: _angular_core.OutputEmitterRef<CellInfoEvent<T>>;
|
|
1728
|
+
/** Emitted for every enabled menu-bar button or dropdown item, carrying its configured id. */
|
|
1729
|
+
menuBarAction: _angular_core.OutputEmitterRef<string>;
|
|
1393
1730
|
/** Currently focused cell, or `null`. */
|
|
1394
1731
|
readonly selectedCell: _angular_core.WritableSignal<CellPosition | null>;
|
|
1395
1732
|
/** Original index of the row awaiting delete confirmation, or `null`. */
|
|
1396
1733
|
readonly pendingDeleteRow: _angular_core.WritableSignal<number | null>;
|
|
1734
|
+
/** Original indices of rows whose master/detail panel is currently expanded. */
|
|
1735
|
+
private readonly _expandedDetailIds;
|
|
1736
|
+
/**
|
|
1737
|
+
* Runtime per-row pin overrides set through the UI (keyed by original index). A `null` value
|
|
1738
|
+
* explicitly unpins a row that the `pinRow` predicate would otherwise pin. Merged with the
|
|
1739
|
+
* provider predicate by {@link effectivePinRow}.
|
|
1740
|
+
*/
|
|
1741
|
+
private readonly _pinnedRows;
|
|
1397
1742
|
private readonly markedIndices;
|
|
1398
1743
|
/** Original datasource indices marked for inclusion in copy operations. */
|
|
1399
1744
|
readonly markedRowIndices: Signal<ReadonlySet<number>>;
|
|
@@ -1403,6 +1748,8 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1403
1748
|
readonly deleteConfirmationWidth: _angular_core.WritableSignal<number>;
|
|
1404
1749
|
/** Rectangular cell range selected by Shift+arrow or Shift+click. */
|
|
1405
1750
|
readonly selectedRange: _angular_core.WritableSignal<CellRange | null>;
|
|
1751
|
+
/** @internal Stable callback passed to child components for row-aware editability checks. */
|
|
1752
|
+
readonly isCellEditableForRow: (col: ColDef, originalIndex: number) => boolean;
|
|
1406
1753
|
/** Fill-handle drag preview bounds, in visible row/column coordinates. */
|
|
1407
1754
|
get fillPreviewBounds(): _angular_core.WritableSignal<VisibleCellBounds | null>;
|
|
1408
1755
|
/** Position of the cell in edit mode, or `null`. */
|
|
@@ -1411,6 +1758,8 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1411
1758
|
get currentDraft(): _angular_core.WritableSignal<unknown>;
|
|
1412
1759
|
/** Seed character typed to enter edit mode (e.g. pressing 'A'). */
|
|
1413
1760
|
get editSeedChar(): _angular_core.WritableSignal<string>;
|
|
1761
|
+
/** Whether the active text editor should select all text when it opens. */
|
|
1762
|
+
get selectTextOnEdit(): _angular_core.WritableSignal<boolean>;
|
|
1414
1763
|
/** Toggle the sidebar open/closed. */
|
|
1415
1764
|
toggleSidebar(): void;
|
|
1416
1765
|
/** @internal */
|
|
@@ -1486,7 +1835,7 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1486
1835
|
readonly showPagination: Signal<boolean>;
|
|
1487
1836
|
/** Number of semantic header rows currently rendered. */
|
|
1488
1837
|
readonly headerRowCount: Signal<1 | 2>;
|
|
1489
|
-
/** Number of rendered semantic rows, including header rows. */
|
|
1838
|
+
/** Number of rendered semantic rows, including header and pinned rows. */
|
|
1490
1839
|
readonly ariaRowCount: Signal<number>;
|
|
1491
1840
|
/** Number of visible semantic columns, including the optional control column. */
|
|
1492
1841
|
readonly ariaColCount: Signal<number>;
|
|
@@ -1516,6 +1865,26 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1516
1865
|
/** Maps originalIndex → true if the data row should receive the odd-row stripe. Counts only data rows, so group headers don't shift the pattern. */
|
|
1517
1866
|
readonly dataRowIsOdd: Signal<Map<number, boolean>>;
|
|
1518
1867
|
readonly displayItems: Signal<GridItem[]>;
|
|
1868
|
+
/** Rows pinned to the top of the body (rendered in a fixed container, outside virtual scroll). */
|
|
1869
|
+
readonly pinnedTopItems: Signal<{
|
|
1870
|
+
row: Record<string, unknown>;
|
|
1871
|
+
originalIndex: number;
|
|
1872
|
+
}[]>;
|
|
1873
|
+
/** Rows pinned to the bottom of the body (rendered in a fixed container, outside virtual scroll). */
|
|
1874
|
+
readonly pinnedBottomItems: Signal<{
|
|
1875
|
+
row: Record<string, unknown>;
|
|
1876
|
+
originalIndex: number;
|
|
1877
|
+
}[]>;
|
|
1878
|
+
/** Whether any top-pinned rows are present. */
|
|
1879
|
+
readonly hasPinnedTopRows: Signal<boolean>;
|
|
1880
|
+
/** Whether any bottom-pinned rows are present. */
|
|
1881
|
+
readonly hasPinnedBottomRows: Signal<boolean>;
|
|
1882
|
+
/**
|
|
1883
|
+
* Per-item heights fed to the variable-size virtual-scroll strategy: a detail panel uses the
|
|
1884
|
+
* configured detail height, every other row uses the standard row height. With no detail rows
|
|
1885
|
+
* open the array is uniform, so scrolling matches the fixed-size strategy.
|
|
1886
|
+
*/
|
|
1887
|
+
readonly itemSizes: Signal<number[]>;
|
|
1519
1888
|
readonly groupActionsMenu: _angular_core.WritableSignal<{
|
|
1520
1889
|
x: number;
|
|
1521
1890
|
y: number;
|
|
@@ -1556,6 +1925,12 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1556
1925
|
readonly selectedRowIndex: Signal<number | null>;
|
|
1557
1926
|
readonly contextMenu: _angular_core.WritableSignal<AgridRowContextMenu | null>;
|
|
1558
1927
|
readonly cellContextMenuState: _angular_core.WritableSignal<AgridCellContextMenu | null>;
|
|
1928
|
+
/** Id of the menu-bar button whose dropdown is open, or `null`. */
|
|
1929
|
+
readonly openMenuBarItemId: _angular_core.WritableSignal<string | null>;
|
|
1930
|
+
/** Runtime state passed to menu-bar visibility, active, and disabled resolvers. */
|
|
1931
|
+
readonly menuBarContext: Signal<AgridMenuBarContext<T>>;
|
|
1932
|
+
/** Menu-bar buttons currently allowed by their visibility resolvers. */
|
|
1933
|
+
readonly visibleMenuBarItems: Signal<AgridMenuBarItem<T>[]>;
|
|
1559
1934
|
private readonly sidebarController;
|
|
1560
1935
|
readonly sidebarOpen: _angular_core.WritableSignal<boolean>;
|
|
1561
1936
|
/** @internal Per-field sidebar validation messages. */
|
|
@@ -1581,6 +1956,7 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1581
1956
|
getColDropSide(field: string): 'before' | 'after' | null;
|
|
1582
1957
|
/** @internal Horizontal animation offset for a header during column reordering. */
|
|
1583
1958
|
getColReorderOffset(field: string): number;
|
|
1959
|
+
hasContextMenuEntries(): boolean;
|
|
1584
1960
|
private readonly _seededControls;
|
|
1585
1961
|
private readonly dirtyInlineRows;
|
|
1586
1962
|
private dirtyRowsDataSource;
|
|
@@ -1611,7 +1987,34 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1611
1987
|
collapsed: boolean;
|
|
1612
1988
|
};
|
|
1613
1989
|
/** @internal */
|
|
1990
|
+
isPathTreeNodeItem(item: GridItem): boolean;
|
|
1991
|
+
/** @internal */
|
|
1614
1992
|
getItemOriginalIndex(item: GridItem): number | null;
|
|
1993
|
+
/** @internal True when the item is a master/detail panel row. */
|
|
1994
|
+
isDetailRowItem(item: GridItem): item is DetailRowItem;
|
|
1995
|
+
/** @internal Rendered pixel height of a virtual-scroll item (detail panels are taller). */
|
|
1996
|
+
rowPx(item: GridItem): number;
|
|
1997
|
+
/** @internal Resolved HTML for an expanded detail panel (auto-sanitized by `[innerHTML]`). */
|
|
1998
|
+
detailHtml(item: GridItem): string;
|
|
1999
|
+
/** @internal Resolved per-row CSS classes from the host `getRowClass` callback. */
|
|
2000
|
+
getRowClass(row: Record<string, unknown>, index: number): string;
|
|
2001
|
+
/** Whether the master/detail panel for `originalIndex` is currently expanded. */
|
|
2002
|
+
isDetailExpanded(originalIndex: number): boolean;
|
|
2003
|
+
/** @internal Whether a data row may show a master/detail panel. */
|
|
2004
|
+
canToggleDetail(item: GridItem): boolean;
|
|
2005
|
+
/** Toggle the master/detail panel for a row by its original (data-source) index. */
|
|
2006
|
+
toggleDetail(originalIndex: number): void;
|
|
2007
|
+
/** @internal Template handler for the detail expander chevron. */
|
|
2008
|
+
onDetailToggle(originalIndex: number): void;
|
|
2009
|
+
/** Effective pin position of a row (`'top'`, `'bottom'`, or `undefined`). */
|
|
2010
|
+
rowPinState(originalIndex: number): 'top' | 'bottom' | undefined;
|
|
2011
|
+
/**
|
|
2012
|
+
* Pin a row to the top or bottom of the body, or unpin it with `null`.
|
|
2013
|
+
* Keyed by the row's original (data-source) index; the pinned row stays fully interactive.
|
|
2014
|
+
*/
|
|
2015
|
+
pinRowTo(originalIndex: number, position: 'top' | 'bottom' | null): void;
|
|
2016
|
+
/** @internal Template handler for the pin/unpin context-menu items; closes the open menus. */
|
|
2017
|
+
onPinRow(originalIndex: number, position: 'top' | 'bottom' | null): void;
|
|
1615
2018
|
/** @internal True when `col` is the configured tree column. */
|
|
1616
2019
|
isTreeCell(col: ColDef): boolean;
|
|
1617
2020
|
/** @internal Tree depth of a row item (0 when not a tree row). */
|
|
@@ -1620,8 +2023,22 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1620
2023
|
treeRowExpandable(item: GridItem): boolean;
|
|
1621
2024
|
/** @internal Whether a tree row is currently expanded. */
|
|
1622
2025
|
treeRowExpanded(item: GridItem): boolean;
|
|
2026
|
+
/** @internal Display-only final path segment for a datasource-backed path-tree leaf. */
|
|
2027
|
+
treeCellDisplayOverride(item: GridItem, col: ColDef): string | null;
|
|
2028
|
+
/** @internal Whether the configured info action is visible for this cell. */
|
|
2029
|
+
showCellInfoIcon(col: ColDef, row: Record<string, unknown>): boolean;
|
|
2030
|
+
/** @internal Emits the typed cell information action. */
|
|
2031
|
+
onCellInfo(originalIndex: number, col: ColDef, row: Record<string, unknown>): void;
|
|
2032
|
+
/** @internal Label of a generated path-tree branch. */
|
|
2033
|
+
pathTreeLabel(item: GridItem): string;
|
|
1623
2034
|
/** @internal Toggle the expand/collapse state of a tree row from its twisty. */
|
|
1624
2035
|
onTreeToggle(item: GridItem): void;
|
|
2036
|
+
/** @internal Emits the generated path-tree branch click event. */
|
|
2037
|
+
onTreeNodeClick(item: GridItem): void;
|
|
2038
|
+
/** @internal Emits the generated path-tree branch double-click event. */
|
|
2039
|
+
onTreeNodeDoubleClick(item: GridItem): void;
|
|
2040
|
+
private toTreeNodeClickEvent;
|
|
2041
|
+
private toggleTreeCell;
|
|
1625
2042
|
/** Expand every expandable node in the tree. No-op when not in tree mode. */
|
|
1626
2043
|
expandAllNodes(): void;
|
|
1627
2044
|
/** Collapse every node in the tree. No-op when not in tree mode. */
|
|
@@ -1646,8 +2063,10 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1646
2063
|
/** @internal Whether more than one column is currently sorted. */
|
|
1647
2064
|
hasMultiSort(): boolean;
|
|
1648
2065
|
getTextFilter(field: string): string;
|
|
1649
|
-
/** @internal
|
|
1650
|
-
getMenuFilterType(field: string): 'number' | 'date' | null;
|
|
2066
|
+
/** @internal Condition input type for a column, or `null` when unsupported. */
|
|
2067
|
+
getMenuFilterType(field: string): 'text' | 'number' | 'date' | null;
|
|
2068
|
+
/** @internal Short label for an active header condition. */
|
|
2069
|
+
getConditionButtonLabel(field: string): string;
|
|
1651
2070
|
/** @internal */
|
|
1652
2071
|
getMenuOperator(field: string): FilterOperator | null;
|
|
1653
2072
|
/** @internal */
|
|
@@ -1710,7 +2129,7 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1710
2129
|
*/
|
|
1711
2130
|
onQuickFilterInput(event: Event): void;
|
|
1712
2131
|
/** @internal Whether a column is editable in the current grid state (drives boolean checkboxes). */
|
|
1713
|
-
isColEditable(col: ColDef): boolean;
|
|
2132
|
+
isColEditable(col: ColDef, originalIndex?: number): boolean;
|
|
1714
2133
|
/** @internal Inline validation message for a cell, or `null` when the cell has no active error. */
|
|
1715
2134
|
cellValidationError(originalIndex: number, ci: number): string | null;
|
|
1716
2135
|
/** @internal Commit a boolean-column checkbox toggle directly to the data source. */
|
|
@@ -1729,6 +2148,7 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1729
2148
|
onFindInput(value: string): void;
|
|
1730
2149
|
/** @internal */
|
|
1731
2150
|
goToFindMatch(direction: 1 | -1): void;
|
|
2151
|
+
private revealFindMatch;
|
|
1732
2152
|
/** @internal Ghost cell display during a reorder drag. */
|
|
1733
2153
|
getGhostCellDisplay(col: ColDef): string;
|
|
1734
2154
|
/** @internal Delegates to AgridDragHandler. */
|
|
@@ -1759,6 +2179,30 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1759
2179
|
onCellContextMenu(event: MouseEvent, rowIndex: number, colIndex: number, col: ColDef, row: Record<string, unknown>): void;
|
|
1760
2180
|
/** @internal */
|
|
1761
2181
|
closeCellContextMenu(): void;
|
|
2182
|
+
/** @internal Closes any row, cell, menu-bar, group-action, or column menu owned by this grid. */
|
|
2183
|
+
closeOpenMenus(): boolean;
|
|
2184
|
+
/** @internal Resolves a menu-bar state callback against the current grid state. */
|
|
2185
|
+
resolveMenuBarState(state: AgridMenuBarState<T> | undefined, fallback: boolean): boolean;
|
|
2186
|
+
/** @internal Whether a menu-bar button or dropdown item should be rendered. */
|
|
2187
|
+
isMenuBarItemVisible(item: AgridMenuBarMenuItem<T>): boolean;
|
|
2188
|
+
/** @internal Whether a menu-bar button or dropdown item is active. */
|
|
2189
|
+
isMenuBarItemActive(item: AgridMenuBarMenuItem<T>): boolean;
|
|
2190
|
+
/** @internal Whether a menu-bar button or dropdown item is disabled. */
|
|
2191
|
+
isMenuBarItemDisabled(item: AgridMenuBarMenuItem<T>): boolean;
|
|
2192
|
+
/** @internal Visible dropdown entries for a menu-bar button. */
|
|
2193
|
+
visibleMenuBarChildren(item: AgridMenuBarItem<T>): AgridMenuBarMenuItem<T>[];
|
|
2194
|
+
/** @internal Emits one menu-bar action and closes its dropdown. */
|
|
2195
|
+
runMenuBarAction(event: Event, item: AgridMenuBarMenuItem<T>): void;
|
|
2196
|
+
/** @internal Opens or closes a split button's additional command menu. */
|
|
2197
|
+
toggleMenuBarMenu(event: Event, item: AgridMenuBarItem<T>): void;
|
|
2198
|
+
/** @internal Opens a dropdown from the keyboard and focuses its first/last enabled item. */
|
|
2199
|
+
onMenuBarTriggerKeydown(event: KeyboardEvent, item: AgridMenuBarItem<T>): void;
|
|
2200
|
+
/** @internal Provides standard keyboard navigation within an open menu-bar dropdown. */
|
|
2201
|
+
onMenuBarMenuKeydown(event: KeyboardEvent): void;
|
|
2202
|
+
/** @internal Closes the currently open menu-bar dropdown. */
|
|
2203
|
+
closeMenuBarMenu(): void;
|
|
2204
|
+
/** @internal Synchronizes dropdown state and closes competing grid menus when one opens. */
|
|
2205
|
+
onMenuBarOpenItemChange(id: string | null): void;
|
|
1762
2206
|
/** @internal Runs a typed provider context-menu action against erased controller state. */
|
|
1763
2207
|
runCellMenuItem(item: CellContextMenuItem<T>, menu: AgridCellContextMenu): void;
|
|
1764
2208
|
/** @internal Copy one field from the target and marked rows. */
|
|
@@ -1855,9 +2299,136 @@ declare class AgridComponent<T extends object = any> {
|
|
|
1855
2299
|
getColumnWidth(col: ColDef): number;
|
|
1856
2300
|
private getColumnWidthToken;
|
|
1857
2301
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AgridComponent<any>, never>;
|
|
1858
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AgridComponent<any>, "agrid", never, { "provider": { "alias": "provider"; "required": false; "isSignal": true; }; }, { "cellEdit": "cellEdit"; "recordEdit": "recordEdit"; "rowRemoved": "rowRemoved"; "prepareAddRecord": "prepareAddRecord"; "rowReorder": "rowReorder"; "rowSelect": "rowSelect"; "rowDoubleClicked": "rowDoubleClicked"; "rowClick": "rowClick"; "rowChanged": "rowChanged"; "pageChange": "pageChange"; "filterChange": "filterChange"; "sortChange": "sortChange"; "quickFilterChange": "quickFilterChange"; "validationFailed": "validationFailed"; }, never, never, true, never>;
|
|
2302
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AgridComponent<any>, "agrid", never, { "provider": { "alias": "provider"; "required": false; "isSignal": true; }; }, { "cellEdit": "cellEdit"; "recordEdit": "recordEdit"; "rowRemoved": "rowRemoved"; "prepareAddRecord": "prepareAddRecord"; "rowReorder": "rowReorder"; "rowSelect": "rowSelect"; "rowDoubleClicked": "rowDoubleClicked"; "rowClick": "rowClick"; "treeNodeClick": "treeNodeClick"; "treeNodeDoubleClicked": "treeNodeDoubleClicked"; "rowChanged": "rowChanged"; "pageChange": "pageChange"; "filterChange": "filterChange"; "sortChange": "sortChange"; "quickFilterChange": "quickFilterChange"; "validationFailed": "validationFailed"; "cellInfo": "cellInfo"; "menuBarAction": "menuBarAction"; }, never, never, true, never>;
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
/** Identifier supported by the standalone page selector. */
|
|
2306
|
+
type AgridPageId = string | number;
|
|
2307
|
+
/** One selectable page. IDs must be unique within the item list. */
|
|
2308
|
+
interface AgridPageItem<TId extends AgridPageId = AgridPageId> {
|
|
2309
|
+
id: string;
|
|
2310
|
+
pageNumber: TId;
|
|
2311
|
+
label: string;
|
|
2312
|
+
}
|
|
2313
|
+
/** Compact previous/input/dropdown/next control for navigating a labeled page list. */
|
|
2314
|
+
declare class AgridPageSelectorComponent<TId extends AgridPageId = AgridPageId> {
|
|
2315
|
+
private readonly elementRef;
|
|
2316
|
+
readonly listboxId: string;
|
|
2317
|
+
items: _angular_core.InputSignal<readonly AgridPageItem<TId>[]>;
|
|
2318
|
+
selectedId: _angular_core.InputSignal<string | null>;
|
|
2319
|
+
selectedPageNumber: _angular_core.InputSignal<TId | null>;
|
|
2320
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2321
|
+
previousLabel: _angular_core.InputSignal<string>;
|
|
2322
|
+
nextLabel: _angular_core.InputSignal<string>;
|
|
2323
|
+
inputLabel: _angular_core.InputSignal<string>;
|
|
2324
|
+
menuLabel: _angular_core.InputSignal<string>;
|
|
2325
|
+
emptyText: _angular_core.InputSignal<string>;
|
|
2326
|
+
selectPage: _angular_core.OutputEmitterRef<AgridPageItem<TId>>;
|
|
2327
|
+
readonly menuOpen: _angular_core.WritableSignal<boolean>;
|
|
2328
|
+
readonly draft: _angular_core.WritableSignal<string>;
|
|
2329
|
+
readonly invalid: _angular_core.WritableSignal<boolean>;
|
|
2330
|
+
readonly activeId: _angular_core.WritableSignal<string | null>;
|
|
2331
|
+
readonly focusedOptionIndex: _angular_core.WritableSignal<number>;
|
|
2332
|
+
readonly activeIndex: _angular_core.Signal<number>;
|
|
2333
|
+
readonly hasPrevious: _angular_core.Signal<boolean>;
|
|
2334
|
+
readonly hasNext: _angular_core.Signal<boolean>;
|
|
2335
|
+
constructor();
|
|
2336
|
+
previous(): void;
|
|
2337
|
+
next(): void;
|
|
2338
|
+
toggleMenu(event: Event): void;
|
|
2339
|
+
openMenu(): void;
|
|
2340
|
+
closeMenu(): void;
|
|
2341
|
+
onInput(event: Event): void;
|
|
2342
|
+
onInputKeydown(event: KeyboardEvent): void;
|
|
2343
|
+
choose(item: AgridPageItem<TId>): void;
|
|
2344
|
+
optionId(index: number): string;
|
|
2345
|
+
isSelected(item: AgridPageItem<TId>): boolean;
|
|
2346
|
+
onDocumentPointerDown(event: PointerEvent): void;
|
|
2347
|
+
private selectDraft;
|
|
2348
|
+
private resetDraft;
|
|
2349
|
+
private moveOption;
|
|
2350
|
+
private scrollFocusedOptionIntoView;
|
|
2351
|
+
private idsEqual;
|
|
2352
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AgridPageSelectorComponent<any>, never>;
|
|
2353
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AgridPageSelectorComponent<any>, "agrid-page-selector", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "selectedPageNumber": { "alias": "selectedPageNumber"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "inputLabel": { "alias": "inputLabel"; "required": false; "isSignal": true; }; "menuLabel": { "alias": "menuLabel"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "selectPage": "selectPage"; }, never, never, true, never>;
|
|
2354
|
+
}
|
|
2355
|
+
|
|
2356
|
+
/** Configuration accepted by {@link AgridTreeProvider}. */
|
|
2357
|
+
interface AgridTreeProviderConfig<T extends object> {
|
|
2358
|
+
datasource: AgridDataSource<T>;
|
|
2359
|
+
treeConfig: AgridTreeConfig<T>;
|
|
2360
|
+
/** Label for parent-linked rows. Defaults to the configured `treeField` value. */
|
|
2361
|
+
getLabel?: (row: T) => string;
|
|
2362
|
+
/** Optional secondary text shown beneath a row label. */
|
|
2363
|
+
getDescription?: (row: T) => string | undefined;
|
|
2364
|
+
/** Selection behavior. Defaults to `single`. */
|
|
2365
|
+
selection?: AgridTreeSelectionMode;
|
|
2366
|
+
/** Fixed node height in pixels. Defaults to `36`. */
|
|
2367
|
+
rowHeight?: number;
|
|
2368
|
+
/** Accessible name for the tree. Defaults to `Tree`. */
|
|
2369
|
+
ariaLabel?: string;
|
|
2370
|
+
/** Text shown when the datasource is empty. */
|
|
2371
|
+
emptyText?: string;
|
|
2372
|
+
}
|
|
2373
|
+
/** Provider-style configuration and datasource container for `<agrid-tree>`. */
|
|
2374
|
+
declare class AgridTreeProvider<T extends object = any> {
|
|
2375
|
+
readonly datasource: AgridDataSource<T>;
|
|
2376
|
+
readonly treeConfig: AgridTreeConfig<T>;
|
|
2377
|
+
readonly getLabel?: (row: T) => string;
|
|
2378
|
+
readonly getDescription?: (row: T) => string | undefined;
|
|
2379
|
+
readonly selection: AgridTreeSelectionMode;
|
|
2380
|
+
readonly rowHeight: number;
|
|
2381
|
+
readonly ariaLabel: string;
|
|
2382
|
+
readonly emptyText: string;
|
|
2383
|
+
constructor(config: AgridTreeProviderConfig<T>);
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
type StandaloneTreeItem<T extends object> = TreeRowItem<T> | PathTreeNodeItem;
|
|
2387
|
+
/** Standalone accessible tree control backed by the same projection logic as `AgridComponent`. */
|
|
2388
|
+
declare class AgridTreeComponent<T extends object = any> {
|
|
2389
|
+
provider: _angular_core.InputSignal<AgridTreeProvider<T>>;
|
|
2390
|
+
nodeClick: _angular_core.OutputEmitterRef<AgridTreeNodeEvent<T>>;
|
|
2391
|
+
nodeDoubleClicked: _angular_core.OutputEmitterRef<AgridTreeNodeEvent<T>>;
|
|
2392
|
+
selectionChange: _angular_core.OutputEmitterRef<AgridTreeSelectionEvent<T>>;
|
|
2393
|
+
private readonly treeController;
|
|
2394
|
+
private readonly treeElement;
|
|
2395
|
+
private initializedProvider;
|
|
2396
|
+
readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
2397
|
+
readonly selectedKeys: _angular_core.WritableSignal<Set<string>>;
|
|
2398
|
+
readonly expandedIds: _angular_core.WritableSignal<Set<string | number>>;
|
|
2399
|
+
readonly items: _angular_core.Signal<StandaloneTreeItem<T>[]>;
|
|
2400
|
+
constructor();
|
|
2401
|
+
/** Expands every branch currently represented by the datasource. */
|
|
2402
|
+
expandAllNodes(): void;
|
|
2403
|
+
/** Collapses every branch. */
|
|
2404
|
+
collapseAllNodes(): void;
|
|
2405
|
+
/** Toggles one expandable node. */
|
|
2406
|
+
toggleNode(item: StandaloneTreeItem<T>): void;
|
|
2407
|
+
/** @internal */
|
|
2408
|
+
label(item: StandaloneTreeItem<T>): string;
|
|
2409
|
+
/** @internal */
|
|
2410
|
+
description(item: StandaloneTreeItem<T>): string | undefined;
|
|
2411
|
+
/** @internal */
|
|
2412
|
+
isSelected(item: StandaloneTreeItem<T>): boolean;
|
|
2413
|
+
/** @internal */
|
|
2414
|
+
onNodeClick(event: MouseEvent, item: StandaloneTreeItem<T>, index: number): void;
|
|
2415
|
+
/** @internal */
|
|
2416
|
+
onNodeDoubleClick(event: MouseEvent, item: StandaloneTreeItem<T>): void;
|
|
2417
|
+
/** @internal */
|
|
2418
|
+
onKeydown(event: KeyboardEvent, item: StandaloneTreeItem<T>, index: number): void;
|
|
2419
|
+
/** @internal */
|
|
2420
|
+
trackItem(_index: number, item: StandaloneTreeItem<T>): string;
|
|
2421
|
+
private select;
|
|
2422
|
+
private toEvent;
|
|
2423
|
+
private expansionId;
|
|
2424
|
+
private selectionKey;
|
|
2425
|
+
private moveFocus;
|
|
2426
|
+
private focusNode;
|
|
2427
|
+
private findParentIndex;
|
|
2428
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AgridTreeComponent<any>, never>;
|
|
2429
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AgridTreeComponent<any>, "agrid-tree", never, { "provider": { "alias": "provider"; "required": true; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeDoubleClicked": "nodeDoubleClicked"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
1859
2430
|
}
|
|
1860
2431
|
|
|
1861
|
-
export { AGRID_LOCALE_TEXT, AgridComponent, AgridControl, AgridDataSource, AgridProvider, ColDefAutoSize };
|
|
1862
|
-
export type { AgridControlState, AgridField, AgridLocaleKey, AgridLocaleText, AgridLocaleTextOverrides, AgridProviderConfig, AgridTreeConfig, CellContextMenuItem, CellPosition, ColDef, ColumnFilter, FilterChangeEvent, FilterOperator, GridEditEvent, GroupAction, HeaderGroup, HistoryEntry, HistoryItem, NewRecord, PageChangeEvent, RecordEditEvent, RowClickEvent, RowRemovedEvent, RowReorderEvent, RowSelectEvent, RowUpdateEvent, SortChangeEvent, TreeRowItem, ValidationFailedEvent, ValueOption };
|
|
2432
|
+
export { AGRID_LOCALE_TEXT, AgridComponent, AgridControl, AgridDataSource, AgridPageSelectorComponent, AgridProvider, AgridTreeComponent, AgridTreeProvider, ColDefAutoSize };
|
|
2433
|
+
export type { AgridControlState, AgridEnterEditAction, AgridField, AgridLocaleKey, AgridLocaleText, AgridLocaleTextOverrides, AgridMenuBarContext, AgridMenuBarItem, AgridMenuBarMenuItem, AgridMenuBarState, AgridPageId, AgridPageItem, AgridParentTreeConfig, AgridPathSegmentParams, AgridPathTreeConfig, AgridProviderConfig, AgridTreeConfig, AgridTreeNodeEvent, AgridTreeProviderConfig, AgridTreeSelectionEvent, AgridTreeSelectionMode, CellContextMenuItem, CellInfoEvent, CellPosition, CellReadonlyParams, ColDef, ColumnFilter, DetailRowItem, FilterChangeEvent, FilterOperator, GridEditEvent, GroupAction, HeaderGroup, HistoryEntry, HistoryItem, InputMaskParams, NewRecord, PageChangeEvent, PathTreeNodeItem, RecordEditEvent, RowClickEvent, RowRemovedEvent, RowReorderEvent, RowSelectEvent, RowUpdateEvent, SortChangeEvent, TreeNodeClickEvent, TreeRowItem, ValidationFailedEvent, ValueOption };
|
|
1863
2434
|
//# sourceMappingURL=thkl-agrid.d.ts.map
|