@akcelik/strct 5.0.2 → 5.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akcelik/strct",
3
- "version": "5.0.2",
3
+ "version": "5.2.0",
4
4
  "description": "UIStruct — a standalone Angular component library with a tokenised, multi-palette theme system, built for datacenter / infrastructure management UIs.",
5
5
  "author": "Serkan Akcelik <serkan.akcelik@gmail.com>",
6
6
  "license": "MIT",
package/styles/_base.scss CHANGED
@@ -177,6 +177,22 @@ kbd,
177
177
  /* The affordance itself: a row that can be dragged says so, and a row that
178
178
  delegates to a handle points at the handle instead. A display-only list
179
179
  (reorderDisabled -> draggable="false") gets neither. */
180
+ /* FR-49-17 — a status word inside a grid cell ("blocked", "fits") needs its
181
+ tone without the box a badge draws. Same tokens the badges use, so the
182
+ vocabulary stays one vocabulary; each is AA on --bg-1 in all six schemes. */
183
+ .strct-text-success {
184
+ color: var(--success);
185
+ }
186
+ .strct-text-warning {
187
+ color: var(--warning);
188
+ }
189
+ .strct-text-critical {
190
+ color: var(--critical);
191
+ }
192
+ .strct-text-accent {
193
+ color: var(--acc);
194
+ }
195
+
180
196
  .strct-reorder__handle {
181
197
  cursor: grab;
182
198
  }
@@ -684,6 +684,12 @@ declare class StrctListItemTrailing {
684
684
  declare class StrctListItem {
685
685
  /** The row activates on click / Enter / Space and emits `activated`. */
686
686
  readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
687
+ /**
688
+ * Let the title and description wrap instead of ending in an ellipsis — for
689
+ * rows that carry a sentence. `strct-list [wrap]` does the same for every
690
+ * row at once; this is the per-row form.
691
+ */
692
+ readonly wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
687
693
  /** Marks the current row (`aria-current`). */
688
694
  readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
689
695
  /** Optional leading rail, as `strct-card [status]`. */
@@ -692,7 +698,7 @@ declare class StrctListItem {
692
698
  readonly activated: _angular_core.OutputEmitterRef<void>;
693
699
  protected onActivate(): void;
694
700
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctListItem, never>;
695
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctListItem, "strct-list-item", never, { "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["[strctListItemLeading]", "*", "[strctListItemDescription]", "[strctListItemMeta]", "[strctListItemTrailing]"], true, never>;
701
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctListItem, "strct-list-item", never, { "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["[strctListItemLeading]", "*", "[strctListItemDescription]", "[strctListItemMeta]", "[strctListItemTrailing]"], true, never>;
696
702
  }
697
703
  /**
698
704
  * A short list of things with a status — alarms, findings, clusters in a
@@ -713,6 +719,11 @@ declare class StrctListItem {
713
719
  declare class StrctList {
714
720
  /** 32px rows instead of 44px. */
715
721
  readonly dense: _angular_core.InputSignalWithTransform<boolean, unknown>;
722
+ /**
723
+ * Every row's title and description wrap instead of ending in an ellipsis.
724
+ * `strct-list-item [wrap]` turns it on for one row.
725
+ */
726
+ readonly wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
716
727
  /** Hairline between rows. */
717
728
  readonly dividers: _angular_core.InputSignalWithTransform<boolean, unknown>;
718
729
  /** Shown when the list has no items. */
@@ -721,7 +732,7 @@ declare class StrctList {
721
732
  readonly label: _angular_core.InputSignal<string>;
722
733
  protected readonly items: _angular_core.Signal<readonly StrctListItem[]>;
723
734
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctList, never>;
724
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctList, "strct-list", never, { "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "dividers": { "alias": "dividers"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
735
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctList, "strct-list", never, { "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "dividers": { "alias": "dividers"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
725
736
  }
726
737
 
727
738
  /** Follows the heading on its line — a badge, a count, a status dot. */
@@ -833,6 +844,13 @@ declare class StrctTag {
833
844
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
834
845
  /** Accessible label for the remove button. */
835
846
  readonly removeLabel: _angular_core.InputSignal<string>;
847
+ /**
848
+ * What activating the tag's body does, for assistive tech. The body's own
849
+ * name is its text plus the leading slot — "Connected APP02" — which says
850
+ * what the tag *is*, not what pressing it does ("Show the console of APP02").
851
+ * The × keeps `removeLabel`.
852
+ */
853
+ readonly activateLabel: _angular_core.InputSignal<string>;
836
854
  /**
837
855
  * The body becomes a control: pointer, hover, focus ring, and `activated` on
838
856
  * click / Enter / Space. The × stays a separate tab stop, so "open it" and
@@ -849,7 +867,7 @@ declare class StrctTag {
849
867
  readonly activated: _angular_core.OutputEmitterRef<void>;
850
868
  protected onActivate(): void;
851
869
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTag, never>;
852
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTag, "strct-tag", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "mono": { "alias": "mono"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "activated": "activated"; }, never, ["[strctTagLeading]", "*"], true, never>;
870
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTag, "strct-tag", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "activateLabel": { "alias": "activateLabel"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "mono": { "alias": "mono"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "activated": "activated"; }, never, ["[strctTagLeading]", "*"], true, never>;
853
871
  }
854
872
 
855
873
  /** Avatar size variants. */
@@ -1036,6 +1054,12 @@ declare class StrctCard {
1036
1054
  readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
1037
1055
  /** Tighter paddings for dense dashboards. */
1038
1056
  readonly dense: _angular_core.InputSignalWithTransform<boolean, unknown>;
1057
+ /**
1058
+ * Fill the height the layout gives the card (a stretched grid cell) as a
1059
+ * column: the block takes the slack and the footer sits on the bottom edge,
1060
+ * so a row of cards has its actions on one line.
1061
+ */
1062
+ readonly fill: _angular_core.InputSignalWithTransform<boolean, unknown>;
1039
1063
  /** Indeterminate top bar + aria-busy; body/footer dim and ignore input. */
1040
1064
  readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1041
1065
  /** Allow collapsing to just the header (a chevron appears in the header). */
@@ -1044,7 +1068,7 @@ declare class StrctCard {
1044
1068
  readonly collapsed: _angular_core.ModelSignal<boolean>;
1045
1069
  toggle(): void;
1046
1070
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCard, never>;
1047
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
1071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
1048
1072
  }
1049
1073
  /** Header section of a {@link StrctCard}. */
1050
1074
  declare class StrctCardHeader {
@@ -1054,12 +1078,25 @@ declare class StrctCardHeader {
1054
1078
  readonly heading: _angular_core.InputSignal<string>;
1055
1079
  /** `title` — as today; `overline` — uppercase, letter-spaced, quieter. */
1056
1080
  readonly appearance: _angular_core.InputSignal<"title" | "overline">;
1081
+ /**
1082
+ * Render `heading` as a real heading element at this level, so the card's
1083
+ * title joins the page outline. `null` (the default) keeps the span, which
1084
+ * is what a card inside an already-titled section wants.
1085
+ */
1086
+ readonly level: _angular_core.InputSignal<2 | 3 | 5 | 4 | 6 | null>;
1087
+ /** Let a long heading wrap instead of ending in an ellipsis. */
1088
+ readonly wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
1057
1089
  /** Accessible labels for the collapse toggle (localizable). */
1058
1090
  readonly collapseLabel: _angular_core.InputSignal<string>;
1059
1091
  readonly expandLabel: _angular_core.InputSignal<string>;
1060
1092
  protected readonly card: StrctCard | null;
1061
1093
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardHeader, never>;
1062
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardHeader, "strct-card-header", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[strctCardHeaderMeta]", "*", "[strctCardHeaderNote]", "[strctCardHeaderActions]"], true, never>;
1094
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardHeader, "strct-card-header", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[strctCardHeaderLeading]", "[strctCardHeaderMeta]", "*", "[strctCardHeaderNote]", "[strctCardHeaderActions]"], true, never>;
1095
+ }
1096
+ /** Leads the card's heading — a drag grip, a status dot, an avatar. */
1097
+ declare class StrctCardHeaderLeading {
1098
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardHeaderLeading, never>;
1099
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctCardHeaderLeading, "[strctCardHeaderLeading]", never, {}, {}, never, never, true, never>;
1063
1100
  }
1064
1101
  /** Follows the card's heading on its line — a badge, a count. */
1065
1102
  declare class StrctCardHeaderMeta {
@@ -3739,6 +3776,8 @@ interface StrctDatagridLabels {
3739
3776
  filterPlaceholder: string;
3740
3777
  clearFilter: string;
3741
3778
  editCell: string;
3779
+ /** How an editable cell says, to assistive tech, that it can be edited. */
3780
+ editCellInstructions: string;
3742
3781
  toggleChildren: string;
3743
3782
  quickFilter: string;
3744
3783
  /** `paging="more"`: the button that asks for the next slice. */
@@ -3945,6 +3984,14 @@ declare class StrctDatagrid {
3945
3984
  * selection; the user's subsequent toggles are preserved until the next change.
3946
3985
  */
3947
3986
  readonly initialSelection: _angular_core.InputSignal<readonly unknown[] | null>;
3987
+ /**
3988
+ * The selection itself, two-way, for `selectionMode="multiple"` — what
3989
+ * `selectedId` is for single mode. Write it and the grid checks those rows
3990
+ * and counts them; the user's own picks write back, in the order they were
3991
+ * made. `null` (the default) means the consumer does not drive the
3992
+ * selection, so a grid that only seeds with `initialSelection` is unchanged.
3993
+ */
3994
+ readonly selectedIds: _angular_core.ModelSignal<readonly unknown[] | null>;
3948
3995
  /** Override any user-visible / assistive string (partial; merged over defaults). */
3949
3996
  readonly labels: _angular_core.InputSignal<Partial<StrctDatagridLabels>>;
3950
3997
  /** Effective labels (defaults + overrides). */
@@ -3967,6 +4014,7 @@ declare class StrctDatagrid {
3967
4014
  filterPlaceholder: string;
3968
4015
  clearFilter: string;
3969
4016
  editCell: string;
4017
+ editCellInstructions: string;
3970
4018
  toggleChildren: string;
3971
4019
  quickFilter: string;
3972
4020
  loadMore: string;
@@ -3981,6 +4029,17 @@ declare class StrctDatagrid {
3981
4029
  readonly virtual: _angular_core.InputSignalWithTransform<boolean, unknown>;
3982
4030
  /** Scroll viewport height in px (virtual mode). */
3983
4031
  readonly viewportHeight: _angular_core.InputSignal<number>;
4032
+ /**
4033
+ * Bound the grid's own scroll box (px), with a sticky header — what
4034
+ * `viewportHeight` does for `virtual`, for every other grid: a grouped
4035
+ * picker inside a dialog scrolls instead of growing the page.
4036
+ */
4037
+ readonly maxHeight: _angular_core.InputSignal<number | null>;
4038
+ /**
4039
+ * Show a pencil on an editable cell when it is hovered or focused. A mouse
4040
+ * user finds an editable cell by double-clicking one; nothing said so.
4041
+ */
4042
+ readonly editHint: _angular_core.InputSignalWithTransform<boolean, unknown>;
3984
4043
  /** Uniform row height in px (virtual mode; tune when `compact`). */
3985
4044
  readonly rowHeight: _angular_core.InputSignal<number>;
3986
4045
  /**
@@ -4075,6 +4134,8 @@ declare class StrctDatagrid {
4075
4134
  private readonly menu;
4076
4135
  protected readonly detailDef: _angular_core.Signal<StrctRowDetailDef | undefined>;
4077
4136
  protected readonly actionBarDef: _angular_core.Signal<StrctDatagridActionBar | undefined>;
4137
+ /** A read-only grid with a note needed an empty action bar to show it. */
4138
+ protected readonly actionBarCaptionDef: _angular_core.Signal<StrctDatagridActionBarCaption | undefined>;
4078
4139
  private readonly cellDefs;
4079
4140
  private readonly cellMap;
4080
4141
  readonly page: _angular_core.WritableSignal<number>;
@@ -4160,6 +4221,36 @@ declare class StrctDatagrid {
4160
4221
  protected isEditingCell(row: StrctRow, col: StrctDatagridColumn): boolean;
4161
4222
  /** The value a typed editor holds while it is open (committed on Enter / blur). */
4162
4223
  protected readonly editDraft: _angular_core.WritableSignal<unknown>;
4224
+ /**
4225
+ * Keyboard access to editable cells (FR-49-02). An editable cell opened only
4226
+ * on double-click, so a keyboard user could not reach one at all.
4227
+ *
4228
+ * The editable cells of a grid form one roving tab stop, as a toolbar's
4229
+ * buttons do: Tab reaches the grid, the arrow keys move between cells,
4230
+ * Enter or F2 opens the editor and Escape closes it — focus coming back to
4231
+ * the cell either way, so the next key press continues from where the user
4232
+ * was. While an editor is open, Tab commits it and opens the next cell, the
4233
+ * way a spreadsheet fills a row.
4234
+ */
4235
+ protected readonly editHintId: string;
4236
+ /** The cell that currently holds the grid's editable-cell tab stop. */
4237
+ private readonly activeEditCell;
4238
+ private readonly editableColumns;
4239
+ protected readonly hasEditableColumn: _angular_core.Signal<boolean>;
4240
+ protected editCellTabindex(row: StrctRow, col: StrctDatagridColumn): number;
4241
+ protected onEditCellFocus(row: StrctRow, col: StrctDatagridColumn): void;
4242
+ /** Every editable cell in DOM order — the order the arrows walk. */
4243
+ private editCells;
4244
+ /**
4245
+ * Move focus `delta` cells along (or `delta` rows, when `byRow`). Focusing
4246
+ * the cell runs its own focus handler, so the roving tab stop follows.
4247
+ */
4248
+ private moveEditFocus;
4249
+ /** Commit whatever the open editor holds, by the kind of editor it is. */
4250
+ private commitOpenEditor;
4251
+ protected onEditCellKeydown(row: StrctRow, col: StrctDatagridColumn, event: KeyboardEvent): void;
4252
+ /** Put focus back on the cell an editor just left, so the keys keep working. */
4253
+ private refocusCell;
4163
4254
  protected startEdit(row: StrctRow, col: StrctDatagridColumn): void;
4164
4255
  protected readonly captionId: string;
4165
4256
  /** Whether a cell has nothing to show and the column says what to show then. */
@@ -4204,6 +4295,12 @@ declare class StrctDatagrid {
4204
4295
  private readonly treeFlat;
4205
4296
  protected readonly sorted: _angular_core.Signal<StrctRow[]>;
4206
4297
  protected readonly paged: _angular_core.Signal<StrctRow[]>;
4298
+ /**
4299
+ * The footer exists for the count, the column chooser, the sync button and
4300
+ * whichever pager applies — `paging="more"` used to replace all of it, and a
4301
+ * chooser on a grid with no pager had nowhere to live.
4302
+ */
4303
+ protected readonly showFooter: _angular_core.Signal<boolean>;
4207
4304
  /** Full count for the pager / footer (server total in lazy mode). */
4208
4305
  protected readonly totalCount: _angular_core.Signal<number>;
4209
4306
  private readonly scrollTop;
@@ -4331,7 +4428,7 @@ declare class StrctDatagrid {
4331
4428
  private commitSelection;
4332
4429
  private compare;
4333
4430
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
4334
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDatagrid, "strct-datagrid", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "detailPane": { "alias": "detailPane"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "singleLine": { "alias": "singleLine"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "columnChooser": { "alias": "columnChooser"; "required": false; "isSignal": true; }; "sync": { "alias": "sync"; "required": false; "isSignal": true; }; "footerActionsDisabled": { "alias": "footerActionsDisabled"; "required": false; "isSignal": true; }; "rowId": { "alias": "rowId"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "paging": { "alias": "paging"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "loadingMore": { "alias": "loadingMore"; "required": false; "isSignal": true; }; "moreTotal": { "alias": "moreTotal"; "required": false; "isSignal": true; }; "groupSelect": { "alias": "groupSelect"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "initialSelection": { "alias": "initialSelection"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "viewportHeight": { "alias": "viewportHeight"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; "columnState": { "alias": "columnState"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "quickFilter": { "alias": "quickFilter"; "required": false; "isSignal": true; }; "quickFilterFields": { "alias": "quickFilterFields"; "required": false; "isSignal": true; }; "quickFilterable": { "alias": "quickFilterable"; "required": false; "isSignal": true; }; "quickFilterAlign": { "alias": "quickFilterAlign"; "required": false; "isSignal": true; }; "childrenKey": { "alias": "childrenKey"; "required": false; "isSignal": true; }; }, { "selectedId": "selectedIdChange"; "loadMore": "loadMore"; "columnState": "columnStateChange"; "filters": "filtersChange"; "quickFilter": "quickFilterChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBarCaption]", "[strctDatagridActionBar]"], true, never>;
4431
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDatagrid, "strct-datagrid", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "detailPane": { "alias": "detailPane"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "singleLine": { "alias": "singleLine"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "columnChooser": { "alias": "columnChooser"; "required": false; "isSignal": true; }; "sync": { "alias": "sync"; "required": false; "isSignal": true; }; "footerActionsDisabled": { "alias": "footerActionsDisabled"; "required": false; "isSignal": true; }; "rowId": { "alias": "rowId"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "paging": { "alias": "paging"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "loadingMore": { "alias": "loadingMore"; "required": false; "isSignal": true; }; "moreTotal": { "alias": "moreTotal"; "required": false; "isSignal": true; }; "groupSelect": { "alias": "groupSelect"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "initialSelection": { "alias": "initialSelection"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "viewportHeight": { "alias": "viewportHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "editHint": { "alias": "editHint"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; "columnState": { "alias": "columnState"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "quickFilter": { "alias": "quickFilter"; "required": false; "isSignal": true; }; "quickFilterFields": { "alias": "quickFilterFields"; "required": false; "isSignal": true; }; "quickFilterable": { "alias": "quickFilterable"; "required": false; "isSignal": true; }; "quickFilterAlign": { "alias": "quickFilterAlign"; "required": false; "isSignal": true; }; "childrenKey": { "alias": "childrenKey"; "required": false; "isSignal": true; }; }, { "selectedId": "selectedIdChange"; "loadMore": "loadMore"; "selectedIds": "selectedIdsChange"; "columnState": "columnStateChange"; "filters": "filtersChange"; "quickFilter": "quickFilterChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["detailDef", "actionBarDef", "actionBarCaptionDef", "cellDefs"], ["[strctDatagridActionBarCaption]", "[strctDatagridActionBar]"], true, never>;
4335
4432
  }
4336
4433
 
4337
4434
  /** Timeline node state colors. */
@@ -7363,5 +7460,5 @@ declare function strctCheckHostInputs(host: HTMLElement, selector: string, owns:
7363
7460
  */
7364
7461
  declare function strctCheckHostDisplay(host: HTMLElement, selector: string, expected: string): void;
7365
7462
 
7366
- export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctHeader, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
7463
+ export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctHeader, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
7367
7464
  export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctChatAuthor, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowDirection, StrctFlowEdge, StrctFlowNode, StrctFlowOrientation, StrctHeatmapCell, StrctHeatmapSummaryInfo, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLegendItem, StrctLiveLabels, StrctLiveState, StrctLogLine, StrctMediaState, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuPlacement, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctNotification, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressSegment, StrctProgressStatus, StrctQrEcc, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctReorderMoveEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctStatusDotSize, StrctStepPhase, StrctStepState, StrctStepsLabels, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeDropEvent, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus, StrctWindowBounds, StrctWindowLabels, StrctWizardDefaults };