@akcelik/strct 5.17.0 → 5.19.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/fesm2022/akcelik-strct.mjs +338 -40
- package/fesm2022/akcelik-strct.mjs.map +1 -1
- package/package.json +1 -1
- package/types/akcelik-strct.d.ts +78 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akcelik/strct",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.19.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/types/akcelik-strct.d.ts
CHANGED
|
@@ -3084,6 +3084,12 @@ declare class StrctCheckbox implements ControlValueAccessor {
|
|
|
3084
3084
|
* the name. `[strctControlDescription]` projects one with markup in it.
|
|
3085
3085
|
*/
|
|
3086
3086
|
readonly description: _angular_core.InputSignal<string>;
|
|
3087
|
+
/**
|
|
3088
|
+
* Takes the box out of the tab order (`-1`) where something around it owns
|
|
3089
|
+
* the keyboard — a datagrid in grid mode roves its rows and reaches the box
|
|
3090
|
+
* with the arrows. `null` leaves the native order alone.
|
|
3091
|
+
*/
|
|
3092
|
+
readonly tabIndex: _angular_core.InputSignal<number | null>;
|
|
3087
3093
|
private readonly n;
|
|
3088
3094
|
protected readonly descId: string;
|
|
3089
3095
|
protected readonly labelId: string;
|
|
@@ -3105,7 +3111,7 @@ declare class StrctCheckbox implements ControlValueAccessor {
|
|
|
3105
3111
|
registerOnTouched(fn: () => void): void;
|
|
3106
3112
|
setDisabledState(isDisabled: boolean): void;
|
|
3107
3113
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCheckbox, never>;
|
|
3108
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCheckbox, "strct-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, ["projected"], ["[strctControlDescription]", "*"], true, never>;
|
|
3114
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCheckbox, "strct-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, ["projected"], ["[strctControlDescription]", "*"], true, never>;
|
|
3109
3115
|
}
|
|
3110
3116
|
|
|
3111
3117
|
/** On/off switch. Works with `[(ngModel)]` / reactive forms. */
|
|
@@ -4189,6 +4195,16 @@ interface StrctDatagridLabels {
|
|
|
4189
4195
|
loadMore: string;
|
|
4190
4196
|
/** `paging="more"`: what the footer says it is showing. */
|
|
4191
4197
|
showing: (shown: number, total?: number) => string;
|
|
4198
|
+
/**
|
|
4199
|
+
* What the grid announces after it changes under the reader: sorting
|
|
4200
|
+
* reorders every row, a page replaces them, a filter hides most of them —
|
|
4201
|
+
* none of it is visible to someone who cannot see the table.
|
|
4202
|
+
*/
|
|
4203
|
+
sortedAscending: (column: string) => string;
|
|
4204
|
+
sortedDescending: (column: string) => string;
|
|
4205
|
+
sortCleared: string;
|
|
4206
|
+
pageOf: (page: number, pages: number) => string;
|
|
4207
|
+
rowsMatch: (shown: number, total: number) => string;
|
|
4192
4208
|
}
|
|
4193
4209
|
/** Resolves a stable identity for a row: a property key, or a function. */
|
|
4194
4210
|
type StrctRowId = string | ((row: StrctRow) => unknown);
|
|
@@ -4520,6 +4536,11 @@ declare class StrctDatagrid {
|
|
|
4520
4536
|
quickFilter: string;
|
|
4521
4537
|
loadMore: string;
|
|
4522
4538
|
showing: (shown: number, total?: number) => string;
|
|
4539
|
+
sortedAscending: (column: string) => string;
|
|
4540
|
+
sortedDescending: (column: string) => string;
|
|
4541
|
+
sortCleared: string;
|
|
4542
|
+
pageOf: (page: number, pages: number) => string;
|
|
4543
|
+
rowsMatch: (shown: number, total: number) => string;
|
|
4523
4544
|
}>;
|
|
4524
4545
|
/**
|
|
4525
4546
|
* Virtual scrolling for large data sets: only the rows inside the viewport
|
|
@@ -4618,6 +4639,29 @@ declare class StrctDatagrid {
|
|
|
4618
4639
|
* Tab walks the interactive elements inside each row as usual.
|
|
4619
4640
|
*/
|
|
4620
4641
|
readonly childrenKey: _angular_core.InputSignal<string | null>;
|
|
4642
|
+
/**
|
|
4643
|
+
* `'table'` (the default) is what the grid has always been: a table whose
|
|
4644
|
+
* controls each take a tab stop. `'grid'` is the APG grid: the table claims
|
|
4645
|
+
* `role="grid"`, the rows carry a roving tabindex so the whole grid is **one**
|
|
4646
|
+
* tab stop, ↑/↓ move the cursor, Home/End jump, →/← step through the focused
|
|
4647
|
+
* row's own controls and Escape comes back out, Space picks and Enter
|
|
4648
|
+
* activates. It also makes a selected row say so — `aria-selected` on a row
|
|
4649
|
+
* reaches no screen reader outside a grid.
|
|
4650
|
+
*
|
|
4651
|
+
* Opt-in, because it changes what Tab does inside the table.
|
|
4652
|
+
*/
|
|
4653
|
+
readonly interactionMode: _angular_core.InputSignal<"grid" | "table">;
|
|
4654
|
+
/**
|
|
4655
|
+
* `'none'` hides the tick / radio column while selection keeps working — a
|
|
4656
|
+
* file list selects by clicking the row, not a control in it. The row is
|
|
4657
|
+
* then the control, so pair it with `interactionMode="grid"`.
|
|
4658
|
+
*/
|
|
4659
|
+
readonly selectionColumn: _angular_core.InputSignal<"none" | "auto">;
|
|
4660
|
+
/**
|
|
4661
|
+
* The row was opened: a double-click, or Enter on the focused row in grid
|
|
4662
|
+
* mode. Selection is "which rows do I mean"; activation is "go".
|
|
4663
|
+
*/
|
|
4664
|
+
readonly rowActivate: _angular_core.OutputEmitterRef<StrctRow>;
|
|
4621
4665
|
/** Emitted when the selection changes. */
|
|
4622
4666
|
readonly selectionChange: _angular_core.OutputEmitterRef<StrctRow[]>;
|
|
4623
4667
|
/** Emitted when the refresh button is clicked. */
|
|
@@ -4656,6 +4700,10 @@ declare class StrctDatagrid {
|
|
|
4656
4700
|
private readonly cellDefs;
|
|
4657
4701
|
private readonly cellMap;
|
|
4658
4702
|
readonly page: _angular_core.WritableSignal<number>;
|
|
4703
|
+
/** What the polite region is saying right now; '' until something happens. */
|
|
4704
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
4705
|
+
/** The first filtered() run is the initial render, which announces nothing. */
|
|
4706
|
+
private filterSettled;
|
|
4659
4707
|
private readonly sort;
|
|
4660
4708
|
/** Selection / expansion are tracked by row id (see {@link rowId}). */
|
|
4661
4709
|
private readonly selected;
|
|
@@ -4733,6 +4781,20 @@ declare class StrctDatagrid {
|
|
|
4733
4781
|
private readonly activeTreeRow;
|
|
4734
4782
|
protected treeRowTabindex(row: StrctRow): number;
|
|
4735
4783
|
protected onTreeRowKeydown(row: StrctRow, event: KeyboardEvent): void;
|
|
4784
|
+
/** The row the grid's single tab stop is on. */
|
|
4785
|
+
private readonly cursorRow;
|
|
4786
|
+
protected gridRowTabindex(row: StrctRow): number;
|
|
4787
|
+
/** The focused row's own controls, in the order the arrows visit them. */
|
|
4788
|
+
private rowControls;
|
|
4789
|
+
protected onGridRowKeydown(row: StrctRow, event: KeyboardEvent): void;
|
|
4790
|
+
/** Move the cursor to the row at `idx` and focus it once it has rendered. */
|
|
4791
|
+
private focusGridRow;
|
|
4792
|
+
/**
|
|
4793
|
+
* "Go": a double-click, or Enter on the focused row. It opens the detail
|
|
4794
|
+
* pane where there is one — a row click that shows the row is what every
|
|
4795
|
+
* console does — and always tells the consumer.
|
|
4796
|
+
*/
|
|
4797
|
+
protected onRowActivate(row: StrctRow): void;
|
|
4736
4798
|
/** Move the roving tabindex to the row at `idx` and focus its element once
|
|
4737
4799
|
* the new tabindex has rendered. */
|
|
4738
4800
|
private focusTreeRow;
|
|
@@ -4862,6 +4924,13 @@ declare class StrctDatagrid {
|
|
|
4862
4924
|
/** `selectionMode` wins; `selectable` is the pre-4.8 spelling of 'multiple'. */
|
|
4863
4925
|
protected readonly mode: _angular_core.Signal<"none" | "multiple" | "single">;
|
|
4864
4926
|
protected readonly hasSelectionColumn: _angular_core.Signal<boolean>;
|
|
4927
|
+
/** The grid interaction model, opt-in. */
|
|
4928
|
+
protected readonly gridMode: _angular_core.Signal<boolean>;
|
|
4929
|
+
/**
|
|
4930
|
+
* In grid mode the row is the tab stop and its controls are reached with the
|
|
4931
|
+
* arrows, so they leave the tab order; in table mode nothing changes.
|
|
4932
|
+
*/
|
|
4933
|
+
protected ctlTabindex(): number | null;
|
|
4865
4934
|
/** One radio group per grid instance. */
|
|
4866
4935
|
protected readonly radioName: string;
|
|
4867
4936
|
/**
|
|
@@ -4940,6 +5009,13 @@ declare class StrctDatagrid {
|
|
|
4940
5009
|
/** Open the row-action menu next to the clicked kebab button. */
|
|
4941
5010
|
protected openRowMenu(row: StrctRow, event: MouseEvent): void;
|
|
4942
5011
|
sortBy(key: string): void;
|
|
5012
|
+
/** The pager's own change, plus what it means for a reader. */
|
|
5013
|
+
protected goToPage(page: number): void;
|
|
5014
|
+
/**
|
|
5015
|
+
* Says something once. The same text twice in a row would be dropped by a
|
|
5016
|
+
* screen reader, so a repeat is nudged with a trailing space.
|
|
5017
|
+
*/
|
|
5018
|
+
private announce;
|
|
4943
5019
|
protected sortIcon(key: string): string;
|
|
4944
5020
|
protected ariaSort(key: string): 'ascending' | 'descending' | 'none';
|
|
4945
5021
|
protected onHeaderSpace(event: Event, key: string): void;
|
|
@@ -4993,7 +5069,7 @@ declare class StrctDatagrid {
|
|
|
4993
5069
|
private compareRows;
|
|
4994
5070
|
private compare;
|
|
4995
5071
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
|
|
4996
|
-
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; }; "paneListWidth": { "alias": "paneListWidth"; "required": false; "isSignal": true; }; "paneTakeoverWidth": { "alias": "paneTakeoverWidth"; "required": false; "isSignal": true; }; "activeRowId": { "alias": "activeRowId"; "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; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "showEmptyGroups": { "alias": "showEmptyGroups"; "required": false; "isSignal": true; }; "collapsedGroups": { "alias": "collapsedGroups"; "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; }; }, { "activeRowId": "activeRowIdChange"; "selectedId": "selectedIdChange"; "loadMore": "loadMore"; "selectedIds": "selectedIdsChange"; "columnState": "columnStateChange"; "collapsedGroups": "collapsedGroupsChange"; "filters": "filtersChange"; "quickFilter": "quickFilterChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["detailDef", "groupHeaderDef", "paneTitleDef", "actionBarDef", "actionBarCaptionDef", "cellDefs"], ["[strctDatagridActionBarCaption]", "[strctDatagridActionBar]", "[strctDetailPaneTitle]", "[strctDetailPaneMeta]", "[strctDetailPaneActions]"], true, never>;
|
|
5072
|
+
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; }; "paneListWidth": { "alias": "paneListWidth"; "required": false; "isSignal": true; }; "paneTakeoverWidth": { "alias": "paneTakeoverWidth"; "required": false; "isSignal": true; }; "activeRowId": { "alias": "activeRowId"; "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; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "showEmptyGroups": { "alias": "showEmptyGroups"; "required": false; "isSignal": true; }; "collapsedGroups": { "alias": "collapsedGroups"; "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; }; "interactionMode": { "alias": "interactionMode"; "required": false; "isSignal": true; }; "selectionColumn": { "alias": "selectionColumn"; "required": false; "isSignal": true; }; }, { "activeRowId": "activeRowIdChange"; "selectedId": "selectedIdChange"; "loadMore": "loadMore"; "selectedIds": "selectedIdsChange"; "columnState": "columnStateChange"; "collapsedGroups": "collapsedGroupsChange"; "filters": "filtersChange"; "quickFilter": "quickFilterChange"; "rowActivate": "rowActivate"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["detailDef", "groupHeaderDef", "paneTitleDef", "actionBarDef", "actionBarCaptionDef", "cellDefs"], ["[strctDatagridActionBarCaption]", "[strctDatagridActionBar]", "[strctDetailPaneTitle]", "[strctDetailPaneMeta]", "[strctDetailPaneActions]"], true, never>;
|
|
4997
5073
|
}
|
|
4998
5074
|
|
|
4999
5075
|
/** Timeline node state colors. */
|