@akcelik/strct 1.6.0 → 1.11.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 +2830 -40
- package/fesm2022/akcelik-strct.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/_tokens.scss +12 -0
- package/types/akcelik-strct.d.ts +736 -5
package/types/akcelik-strct.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy, TemplateRef } from '@angular/core';
|
|
3
|
-
import { SafeHtml } from '@angular/platform-browser';
|
|
2
|
+
import { OnDestroy, TemplateRef, PipeTransform } from '@angular/core';
|
|
3
|
+
import { SafeHtml, SafeStyle } from '@angular/platform-browser';
|
|
4
4
|
import { ControlValueAccessor } from '@angular/forms';
|
|
5
5
|
import * as _akcelik_strct from '@akcelik/strct';
|
|
6
6
|
|
|
@@ -198,6 +198,7 @@ declare const STRCT_ICON_DEFS: {
|
|
|
198
198
|
megaphone: string;
|
|
199
199
|
flag: string;
|
|
200
200
|
shieldAlert: string;
|
|
201
|
+
rocket: string;
|
|
201
202
|
shieldCheck: string;
|
|
202
203
|
running: string;
|
|
203
204
|
stopped: string;
|
|
@@ -1212,6 +1213,7 @@ declare class StrctDropdown {
|
|
|
1212
1213
|
/** Accessible name of the popover dialog (localizable). */
|
|
1213
1214
|
readonly popoverLabel: _angular_core.InputSignal<string>;
|
|
1214
1215
|
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1216
|
+
constructor();
|
|
1215
1217
|
toggle(): void;
|
|
1216
1218
|
close(): void;
|
|
1217
1219
|
/** Menu items close on activation; popover form controls never do. */
|
|
@@ -1221,6 +1223,16 @@ declare class StrctDropdown {
|
|
|
1221
1223
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdown, never>;
|
|
1222
1224
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdown, "strct-dropdown", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; "popover": { "alias": "popover"; "required": false; "isSignal": true; }; "popoverLabel": { "alias": "popoverLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[strctDropdownTrigger]", "*"], true, never>;
|
|
1223
1225
|
}
|
|
1226
|
+
/**
|
|
1227
|
+
* Marks (and upgrades) the dropdown's trigger element. The attribute alone is
|
|
1228
|
+
* enough for content projection; importing the directive additionally wires
|
|
1229
|
+
* `aria-haspopup` / `aria-expanded` onto the real button.
|
|
1230
|
+
*/
|
|
1231
|
+
declare class StrctDropdownTrigger {
|
|
1232
|
+
protected readonly dd: StrctDropdown | null;
|
|
1233
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownTrigger, never>;
|
|
1234
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctDropdownTrigger, "[strctDropdownTrigger]", never, {}, {}, never, never, true, never>;
|
|
1235
|
+
}
|
|
1224
1236
|
/** A selectable row inside a `<strct-dropdown>`. */
|
|
1225
1237
|
declare class StrctDropdownItem {
|
|
1226
1238
|
/** Danger. */
|
|
@@ -2472,6 +2484,12 @@ interface StrctDatagridLabels {
|
|
|
2472
2484
|
chooseColumns: string;
|
|
2473
2485
|
refresh: string;
|
|
2474
2486
|
actions: string;
|
|
2487
|
+
filterColumn: string;
|
|
2488
|
+
filterPlaceholder: string;
|
|
2489
|
+
clearFilter: string;
|
|
2490
|
+
editCell: string;
|
|
2491
|
+
toggleChildren: string;
|
|
2492
|
+
quickFilter: string;
|
|
2475
2493
|
}
|
|
2476
2494
|
/** Resolves a stable identity for a row: a property key, or a function. */
|
|
2477
2495
|
type StrctRowId = string | ((row: StrctRow) => unknown);
|
|
@@ -2491,7 +2509,19 @@ interface StrctDatagridColumn {
|
|
|
2491
2509
|
* except the last an explicit px `width` so offsets stay exact.
|
|
2492
2510
|
*/
|
|
2493
2511
|
sticky?: boolean;
|
|
2512
|
+
/** Header filter popover: contains-text by default; see `filterOptions`. */
|
|
2513
|
+
filterable?: boolean;
|
|
2514
|
+
/** Distinct values for a checkbox set-filter (implies `filterable`). */
|
|
2515
|
+
filterOptions?: unknown[];
|
|
2516
|
+
/**
|
|
2517
|
+
* Inline cell editing: double-click opens an input; Enter / blur commit via
|
|
2518
|
+
* `(cellEdit)`, Escape cancels. The grid never mutates rows — apply the
|
|
2519
|
+
* change in your handler and pass the updated array back in.
|
|
2520
|
+
*/
|
|
2521
|
+
editable?: boolean;
|
|
2494
2522
|
}
|
|
2523
|
+
/** Per-column filter state: contains-text, or the checked value set. */
|
|
2524
|
+
type StrctDatagridFilters = Record<string, string | unknown[]>;
|
|
2495
2525
|
type SortDir = 'asc' | 'desc';
|
|
2496
2526
|
/** What the grid wants loaded in server-side (`lazy`) mode. */
|
|
2497
2527
|
interface StrctDatagridLazyState {
|
|
@@ -2500,6 +2530,10 @@ interface StrctDatagridLazyState {
|
|
|
2500
2530
|
pageSize: number;
|
|
2501
2531
|
sortKey: string | null;
|
|
2502
2532
|
sortDir: SortDir;
|
|
2533
|
+
/** Active per-column filters (empty object when none). */
|
|
2534
|
+
filters: StrctDatagridFilters;
|
|
2535
|
+
/** The global quick-filter term ('' when none). */
|
|
2536
|
+
quickFilter: string;
|
|
2503
2537
|
}
|
|
2504
2538
|
/** Persistable user column preferences (widths from resize, hidden from the
|
|
2505
2539
|
* chooser, order from drag-reorder). */
|
|
@@ -2608,6 +2642,12 @@ declare class StrctDatagrid {
|
|
|
2608
2642
|
chooseColumns: string;
|
|
2609
2643
|
refresh: string;
|
|
2610
2644
|
actions: string;
|
|
2645
|
+
filterColumn: string;
|
|
2646
|
+
filterPlaceholder: string;
|
|
2647
|
+
clearFilter: string;
|
|
2648
|
+
editCell: string;
|
|
2649
|
+
toggleChildren: string;
|
|
2650
|
+
quickFilter: string;
|
|
2611
2651
|
}>;
|
|
2612
2652
|
/**
|
|
2613
2653
|
* Virtual scrolling for large data sets: only the rows inside the viewport
|
|
@@ -2645,6 +2685,30 @@ declare class StrctDatagrid {
|
|
|
2645
2685
|
* groups. Paging is bypassed while grouped; not combinable with `virtual`.
|
|
2646
2686
|
*/
|
|
2647
2687
|
readonly groupBy: _angular_core.InputSignal<string | null>;
|
|
2688
|
+
/**
|
|
2689
|
+
* Two-way per-column filter state: `key → contains-text` (text filter) or
|
|
2690
|
+
* `key → unknown[]` (checked value set). Applied client-side; in `lazy`
|
|
2691
|
+
* mode it is passed through on `lazyLoad` instead.
|
|
2692
|
+
*/
|
|
2693
|
+
readonly filters: _angular_core.ModelSignal<StrctDatagridFilters>;
|
|
2694
|
+
/**
|
|
2695
|
+
* Global quick filter (two-way): one term substring-matched (OR) across
|
|
2696
|
+
* `quickFilterFields` — the console-standard "filter this list fast" box.
|
|
2697
|
+
* Complementary to the per-column `filters` (which AND). Applied before
|
|
2698
|
+
* paging client-side; passed through on `lazyLoad` in server mode.
|
|
2699
|
+
*/
|
|
2700
|
+
readonly quickFilter: _angular_core.ModelSignal<string>;
|
|
2701
|
+
/** Columns the quick term scans. Defaults to every column's `key`. */
|
|
2702
|
+
readonly quickFilterFields: _angular_core.InputSignal<string[] | null>;
|
|
2703
|
+
/** Render the built-in quick-filter searchbox in the toolbar. */
|
|
2704
|
+
readonly quickFilterable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2705
|
+
/**
|
|
2706
|
+
* Tree-grid: the row property holding a row's children array. Rows render
|
|
2707
|
+
* hierarchically with indent + carets; sorting applies per sibling level;
|
|
2708
|
+
* an active filter shows matches with their ancestors, force-expanded.
|
|
2709
|
+
* Not combinable with `groupBy` or `lazy`.
|
|
2710
|
+
*/
|
|
2711
|
+
readonly childrenKey: _angular_core.InputSignal<string | null>;
|
|
2648
2712
|
/** Emitted when the selection changes. */
|
|
2649
2713
|
readonly selectionChange: _angular_core.OutputEmitterRef<StrctRow[]>;
|
|
2650
2714
|
/** Emitted when the refresh button is clicked. */
|
|
@@ -2656,6 +2720,14 @@ declare class StrctDatagrid {
|
|
|
2656
2720
|
}>;
|
|
2657
2721
|
/** Server-side data request (lazy mode): load this page / sort and set `rows`. */
|
|
2658
2722
|
readonly lazyLoad: _angular_core.OutputEmitterRef<StrctDatagridLazyState>;
|
|
2723
|
+
/** An editable cell was committed (Enter / blur). The grid does not mutate
|
|
2724
|
+
* rows — apply `value` to your data and pass the updated array back in. */
|
|
2725
|
+
readonly cellEdit: _angular_core.OutputEmitterRef<{
|
|
2726
|
+
row: StrctRow;
|
|
2727
|
+
column: StrctDatagridColumn;
|
|
2728
|
+
value: string;
|
|
2729
|
+
previous: unknown;
|
|
2730
|
+
}>;
|
|
2659
2731
|
private readonly menu;
|
|
2660
2732
|
protected readonly detailDef: _angular_core.Signal<StrctRowDetailDef | undefined>;
|
|
2661
2733
|
protected readonly actionBarDef: _angular_core.Signal<StrctDatagridActionBar | undefined>;
|
|
@@ -2702,6 +2774,42 @@ declare class StrctDatagrid {
|
|
|
2702
2774
|
/** What tbody renders: plain (virtual/paged) rows, or groups + their rows. */
|
|
2703
2775
|
protected readonly displayItems: _angular_core.Signal<DgItem[]>;
|
|
2704
2776
|
protected itemKey(it: DgItem): unknown;
|
|
2777
|
+
protected readonly filterOpenKey: _angular_core.WritableSignal<string | null>;
|
|
2778
|
+
protected toggleFilterPanel(key: string, event: Event): void;
|
|
2779
|
+
protected hasFilter(key: string): boolean;
|
|
2780
|
+
protected textFilter(key: string): string;
|
|
2781
|
+
protected setTextFilter(key: string, value: string): void;
|
|
2782
|
+
protected optionChecked(key: string, opt: unknown): boolean;
|
|
2783
|
+
protected toggleFilterOption(key: string, opt: unknown): void;
|
|
2784
|
+
protected clearFilter(key: string): void;
|
|
2785
|
+
protected onDocClickFilter(event: MouseEvent): void;
|
|
2786
|
+
protected onEscapeFilter(): void;
|
|
2787
|
+
private readonly expandedTree;
|
|
2788
|
+
protected treeDepth(row: StrctRow): number;
|
|
2789
|
+
protected treeHasChildren(row: StrctRow): boolean;
|
|
2790
|
+
protected treeExpanded(row: StrctRow): boolean;
|
|
2791
|
+
/** Expand / collapse one tree row. */
|
|
2792
|
+
toggleTreeRow(row: StrctRow): void;
|
|
2793
|
+
private readonly hostRef;
|
|
2794
|
+
protected readonly editing: _angular_core.WritableSignal<{
|
|
2795
|
+
rowKey: unknown;
|
|
2796
|
+
colKey: string;
|
|
2797
|
+
} | null>;
|
|
2798
|
+
protected isEditingCell(row: StrctRow, col: StrctDatagridColumn): boolean;
|
|
2799
|
+
protected startEdit(row: StrctRow, col: StrctDatagridColumn): void;
|
|
2800
|
+
protected commitEdit(row: StrctRow, col: StrctDatagridColumn, event: Event): void;
|
|
2801
|
+
protected cancelEdit(event?: Event): void;
|
|
2802
|
+
/** Active (non-empty) filter entries. */
|
|
2803
|
+
private readonly activeFilters;
|
|
2804
|
+
private readonly quickTerm;
|
|
2805
|
+
private matchesQuick;
|
|
2806
|
+
private matchesFilters;
|
|
2807
|
+
/** Rows surviving the quick + per-column filters (client-side modes only). */
|
|
2808
|
+
private readonly filteredRows;
|
|
2809
|
+
/** "12 / 480" — shown while any client-side filtering narrows the set. */
|
|
2810
|
+
protected readonly filterNote: _angular_core.Signal<string | null>;
|
|
2811
|
+
/** Tree mode: flattened visible rows + per-row depth/children/expanded meta. */
|
|
2812
|
+
private readonly treeFlat;
|
|
2705
2813
|
protected readonly sorted: _angular_core.Signal<StrctRow[]>;
|
|
2706
2814
|
protected readonly paged: _angular_core.Signal<StrctRow[]>;
|
|
2707
2815
|
/** Full count for the pager / footer (server total in lazy mode). */
|
|
@@ -2778,7 +2886,7 @@ declare class StrctDatagrid {
|
|
|
2778
2886
|
private commitSelection;
|
|
2779
2887
|
private compare;
|
|
2780
2888
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
|
|
2781
|
-
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; }; "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; }; }, { "columnState": "columnStateChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBar]"], true, never>;
|
|
2889
|
+
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; }; "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; }; "childrenKey": { "alias": "childrenKey"; "required": false; "isSignal": true; }; }, { "columnState": "columnStateChange"; "filters": "filtersChange"; "quickFilter": "quickFilterChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBar]"], true, never>;
|
|
2782
2890
|
}
|
|
2783
2891
|
|
|
2784
2892
|
/** Timeline node state colors. */
|
|
@@ -3565,5 +3673,628 @@ declare class StrctEmptyState {
|
|
|
3565
3673
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctEmptyState, "strct-empty-state", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3566
3674
|
}
|
|
3567
3675
|
|
|
3568
|
-
|
|
3569
|
-
|
|
3676
|
+
/**
|
|
3677
|
+
* Format a byte count. Binary (KiB, 1024) by default — the storage/memory
|
|
3678
|
+
* convention consoles actually mean; pass `binary: false` for decimal (kB).
|
|
3679
|
+
*/
|
|
3680
|
+
declare function strctFormatBytes(bytes: number, options?: {
|
|
3681
|
+
binary?: boolean;
|
|
3682
|
+
digits?: number;
|
|
3683
|
+
}): string;
|
|
3684
|
+
/**
|
|
3685
|
+
* Format a data rate from bits per second (network convention). Pass bytes/s
|
|
3686
|
+
* through `strctFormatBytes(...) + '/s'` instead if you mean throughput.
|
|
3687
|
+
*/
|
|
3688
|
+
declare function strctFormatRate(bitsPerSecond: number, options?: {
|
|
3689
|
+
digits?: number;
|
|
3690
|
+
}): string;
|
|
3691
|
+
/**
|
|
3692
|
+
* Format a duration in ms as the two most significant units: "2h 14m",
|
|
3693
|
+
* "3d 6h", "45s", "820ms". Sub-second stays in ms; `maxUnits` widens it.
|
|
3694
|
+
*/
|
|
3695
|
+
declare function strctFormatDuration(ms: number, options?: {
|
|
3696
|
+
maxUnits?: number;
|
|
3697
|
+
}): string;
|
|
3698
|
+
/** Format a count with SI magnitude suffixes: 12400 → "12.4k". */
|
|
3699
|
+
declare function strctFormatSi(value: number, options?: {
|
|
3700
|
+
digits?: number;
|
|
3701
|
+
unit?: string;
|
|
3702
|
+
}): string;
|
|
3703
|
+
/** `{{ bytes | strctBytes }}` / `{{ bytes | strctBytes : false }}` (decimal). */
|
|
3704
|
+
declare class StrctBytesPipe implements PipeTransform {
|
|
3705
|
+
transform(value: number, binary?: boolean, digits?: number): string;
|
|
3706
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctBytesPipe, never>;
|
|
3707
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<StrctBytesPipe, "strctBytes", true>;
|
|
3708
|
+
}
|
|
3709
|
+
/** `{{ bps | strctRate }}` — bits per second with kbit/Mbit/Gbit steps. */
|
|
3710
|
+
declare class StrctRatePipe implements PipeTransform {
|
|
3711
|
+
transform(value: number, digits?: number): string;
|
|
3712
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRatePipe, never>;
|
|
3713
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<StrctRatePipe, "strctRate", true>;
|
|
3714
|
+
}
|
|
3715
|
+
/** `{{ ms | strctDuration }}` — "2h 14m"; optional max unit count. */
|
|
3716
|
+
declare class StrctDurationPipe implements PipeTransform {
|
|
3717
|
+
transform(value: number, maxUnits?: number): string;
|
|
3718
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDurationPipe, never>;
|
|
3719
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<StrctDurationPipe, "strctDuration", true>;
|
|
3720
|
+
}
|
|
3721
|
+
/** `{{ n | strctSi : 'IOPS' }}` — SI magnitude with an optional unit label. */
|
|
3722
|
+
declare class StrctSiPipe implements PipeTransform {
|
|
3723
|
+
transform(value: number, unit?: string, digits?: number): string;
|
|
3724
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSiPipe, never>;
|
|
3725
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<StrctSiPipe, "strctSi", true>;
|
|
3726
|
+
}
|
|
3727
|
+
|
|
3728
|
+
/** A resolved time window. `presetId` is set when it came from a quick range. */
|
|
3729
|
+
interface StrctTimeRange {
|
|
3730
|
+
from: Date;
|
|
3731
|
+
to: Date;
|
|
3732
|
+
presetId?: string;
|
|
3733
|
+
}
|
|
3734
|
+
/** A "last X" quick range. `ms` is the window length ending at now. */
|
|
3735
|
+
interface StrctTimeRangePreset {
|
|
3736
|
+
id: string;
|
|
3737
|
+
label: string;
|
|
3738
|
+
ms: number;
|
|
3739
|
+
}
|
|
3740
|
+
/** The Grafana-conventional quick ranges consoles expect. */
|
|
3741
|
+
declare const STRCT_TIME_RANGE_PRESETS: StrctTimeRangePreset[];
|
|
3742
|
+
/**
|
|
3743
|
+
* Monitoring time-range picker — the "Last 1 hour ▾" control charts hang off:
|
|
3744
|
+
* quick relative ranges plus an absolute from/to editor, in one popover.
|
|
3745
|
+
*
|
|
3746
|
+
* <strct-time-range [(range)]="range" />
|
|
3747
|
+
*
|
|
3748
|
+
* Picking a preset resolves it against "now" immediately and stamps
|
|
3749
|
+
* `presetId`, so a consumer can re-resolve the same preset on its own refresh
|
|
3750
|
+
* tick. The popover reuses `strct-dropdown`'s dialog semantics: inner clicks
|
|
3751
|
+
* keep it open, outside click / Escape dismiss.
|
|
3752
|
+
*/
|
|
3753
|
+
declare class StrctTimeRangePicker {
|
|
3754
|
+
/** The selected window, two-way. Null until the user (or you) picks one. */
|
|
3755
|
+
readonly range: _angular_core.ModelSignal<StrctTimeRange | null>;
|
|
3756
|
+
/** Quick ranges shown in the left column. */
|
|
3757
|
+
readonly presets: _angular_core.InputSignal<StrctTimeRangePreset[]>;
|
|
3758
|
+
/** Popover alignment, as in strct-dropdown. */
|
|
3759
|
+
readonly align: _angular_core.InputSignal<"end" | "start">;
|
|
3760
|
+
/** Trigger size — match it to the toolbar's buttons (sm strips). */
|
|
3761
|
+
readonly size: _angular_core.InputSignal<"md" | "sm">;
|
|
3762
|
+
/** Localizable strings. */
|
|
3763
|
+
readonly dialogLabel: _angular_core.InputSignal<string>;
|
|
3764
|
+
readonly quickLabel: _angular_core.InputSignal<string>;
|
|
3765
|
+
readonly absoluteLabel: _angular_core.InputSignal<string>;
|
|
3766
|
+
readonly fromLabel: _angular_core.InputSignal<string>;
|
|
3767
|
+
readonly toLabel: _angular_core.InputSignal<string>;
|
|
3768
|
+
readonly applyLabel: _angular_core.InputSignal<string>;
|
|
3769
|
+
readonly invalidLabel: _angular_core.InputSignal<string>;
|
|
3770
|
+
readonly placeholderLabel: _angular_core.InputSignal<string>;
|
|
3771
|
+
/** Fires on every commit (preset pick or absolute apply). */
|
|
3772
|
+
readonly applied: _angular_core.OutputEmitterRef<StrctTimeRange>;
|
|
3773
|
+
protected readonly dd: _angular_core.Signal<StrctDropdown>;
|
|
3774
|
+
protected readonly draftFrom: _angular_core.WritableSignal<string>;
|
|
3775
|
+
protected readonly draftTo: _angular_core.WritableSignal<string>;
|
|
3776
|
+
protected readonly draftError: _angular_core.Signal<boolean>;
|
|
3777
|
+
protected readonly triggerLabel: _angular_core.Signal<string>;
|
|
3778
|
+
protected pickPreset(p: StrctTimeRangePreset): void;
|
|
3779
|
+
protected applyAbsolute(): boolean;
|
|
3780
|
+
/** Re-resolve a preset range against "now" — call from your refresh tick. */
|
|
3781
|
+
refresh(): void;
|
|
3782
|
+
private seedDraft;
|
|
3783
|
+
private toLocal;
|
|
3784
|
+
private formatStamp;
|
|
3785
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTimeRangePicker, never>;
|
|
3786
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTimeRangePicker, "strct-time-range", never, { "range": { "alias": "range"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dialogLabel": { "alias": "dialogLabel"; "required": false; "isSignal": true; }; "quickLabel": { "alias": "quickLabel"; "required": false; "isSignal": true; }; "absoluteLabel": { "alias": "absoluteLabel"; "required": false; "isSignal": true; }; "fromLabel": { "alias": "fromLabel"; "required": false; "isSignal": true; }; "toLabel": { "alias": "toLabel"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "invalidLabel": { "alias": "invalidLabel"; "required": false; "isSignal": true; }; "placeholderLabel": { "alias": "placeholderLabel"; "required": false; "isSignal": true; }; }, { "range": "rangeChange"; "applied": "applied"; }, never, never, true, never>;
|
|
3787
|
+
}
|
|
3788
|
+
|
|
3789
|
+
/** A log line: plain text plus an optional severity for tinting. */
|
|
3790
|
+
interface StrctLogLine {
|
|
3791
|
+
text: string;
|
|
3792
|
+
level?: 'error' | 'warn' | 'info' | 'debug';
|
|
3793
|
+
}
|
|
3794
|
+
/** One render segment of a line after ANSI parsing. */
|
|
3795
|
+
interface LogSegment {
|
|
3796
|
+
text: string;
|
|
3797
|
+
cls: string;
|
|
3798
|
+
}
|
|
3799
|
+
interface RenderLine {
|
|
3800
|
+
index: number;
|
|
3801
|
+
level: string;
|
|
3802
|
+
segments: LogSegment[];
|
|
3803
|
+
}
|
|
3804
|
+
/**
|
|
3805
|
+
* Virtualized log tail — the `kubectl logs -f` surface as a component:
|
|
3806
|
+
*
|
|
3807
|
+
* <strct-log-viewer [lines]="lines()" [(follow)]="follow" [height]="360" />
|
|
3808
|
+
*
|
|
3809
|
+
* - **Virtualized**: only the visible window plus overscan is in the DOM, so
|
|
3810
|
+
* 100k lines scroll flat.
|
|
3811
|
+
* - **Follow mode** (two-way): sticks to the tail as lines stream in;
|
|
3812
|
+
* scrolling up pauses it, the button (or scrolling back to the bottom)
|
|
3813
|
+
* resumes it — the Grafana/Loki convention.
|
|
3814
|
+
* - **ANSI SGR colors** (16-color + bold) parsed into safe spans — no
|
|
3815
|
+
* innerHTML — and severity tinting from `StrctLogLine.level` or, for plain
|
|
3816
|
+
* strings, auto-detected ERROR/WARN/INFO/DEBUG tokens.
|
|
3817
|
+
*/
|
|
3818
|
+
declare class StrctLogViewer {
|
|
3819
|
+
/** Log lines — plain strings or `{ text, level }` objects. */
|
|
3820
|
+
readonly lines: _angular_core.InputSignal<(string | StrctLogLine)[]>;
|
|
3821
|
+
/** Viewport height in px. */
|
|
3822
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
3823
|
+
/** Follow the tail as new lines arrive (two-way; pauses on scroll-up). */
|
|
3824
|
+
readonly follow: _angular_core.ModelSignal<boolean>;
|
|
3825
|
+
/** Soft-wrap long lines instead of horizontal scrolling (two-way). */
|
|
3826
|
+
readonly wrapMode: _angular_core.ModelSignal<boolean>;
|
|
3827
|
+
/** Auto-detect ERROR/WARN/INFO/DEBUG tokens on plain-string lines. */
|
|
3828
|
+
readonly autoLevel: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3829
|
+
/** Localizable strings. */
|
|
3830
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
3831
|
+
readonly followLabel: _angular_core.InputSignal<string>;
|
|
3832
|
+
readonly wrapLabel: _angular_core.InputSignal<string>;
|
|
3833
|
+
readonly linesLabel: _angular_core.InputSignal<string>;
|
|
3834
|
+
readonly emptyLabel: _angular_core.InputSignal<string>;
|
|
3835
|
+
private readonly scroller;
|
|
3836
|
+
private readonly scrollTop;
|
|
3837
|
+
private suppressScrollEvent;
|
|
3838
|
+
private static readonly LINE_H;
|
|
3839
|
+
private static readonly OVERSCAN;
|
|
3840
|
+
protected readonly normalized: _angular_core.Signal<StrctLogLine[]>;
|
|
3841
|
+
protected readonly totalHeight: _angular_core.Signal<number>;
|
|
3842
|
+
private readonly windowStart;
|
|
3843
|
+
protected readonly offsetY: _angular_core.Signal<number>;
|
|
3844
|
+
protected readonly window: _angular_core.Signal<RenderLine[]>;
|
|
3845
|
+
constructor();
|
|
3846
|
+
protected onScroll(): void;
|
|
3847
|
+
protected toggleFollow(): void;
|
|
3848
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctLogViewer, never>;
|
|
3849
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctLogViewer, "strct-log-viewer", never, { "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "follow": { "alias": "follow"; "required": false; "isSignal": true; }; "wrapMode": { "alias": "wrapMode"; "required": false; "isSignal": true; }; "autoLevel": { "alias": "autoLevel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "followLabel": { "alias": "followLabel"; "required": false; "isSignal": true; }; "wrapLabel": { "alias": "wrapLabel"; "required": false; "isSignal": true; }; "linesLabel": { "alias": "linesLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, { "follow": "followChange"; "wrapMode": "wrapModeChange"; }, never, never, true, never>;
|
|
3850
|
+
}
|
|
3851
|
+
/** Parse ANSI SGR sequences into class-tagged segments (16-color + bold). */
|
|
3852
|
+
declare function parseAnsi(text: string): LogSegment[];
|
|
3853
|
+
|
|
3854
|
+
/** One row of a computed line diff. */
|
|
3855
|
+
interface StrctDiffRow {
|
|
3856
|
+
type: 'ctx' | 'add' | 'del';
|
|
3857
|
+
oldNo: number | null;
|
|
3858
|
+
newNo: number | null;
|
|
3859
|
+
text: string;
|
|
3860
|
+
}
|
|
3861
|
+
interface DisplayRow extends StrctDiffRow {
|
|
3862
|
+
kind: 'row';
|
|
3863
|
+
}
|
|
3864
|
+
interface SkipRow {
|
|
3865
|
+
kind: 'skip';
|
|
3866
|
+
count: number;
|
|
3867
|
+
startIndex: number;
|
|
3868
|
+
}
|
|
3869
|
+
type AnyRow = DisplayRow | SkipRow;
|
|
3870
|
+
/** Split-view pairing: a left (old) and right (new) cell per visual row. */
|
|
3871
|
+
interface SplitCell {
|
|
3872
|
+
type: 'ctx' | 'add' | 'del' | 'empty';
|
|
3873
|
+
no: number | null;
|
|
3874
|
+
text: string;
|
|
3875
|
+
}
|
|
3876
|
+
interface SplitPair {
|
|
3877
|
+
kind: 'row';
|
|
3878
|
+
left: SplitCell;
|
|
3879
|
+
right: SplitCell;
|
|
3880
|
+
}
|
|
3881
|
+
type AnySplitRow = SplitPair | SkipRow;
|
|
3882
|
+
/**
|
|
3883
|
+
* Compute a line diff (LCS-based). Exported for programmatic use — change
|
|
3884
|
+
* counts, gating "anything changed?" logic, custom renderings.
|
|
3885
|
+
*/
|
|
3886
|
+
declare function strctComputeDiff(before: string, after: string): StrctDiffRow[];
|
|
3887
|
+
/**
|
|
3888
|
+
* Config / YAML diff viewer — change-approval screens without a hand-rolled
|
|
3889
|
+
* diff. Unified by default, `split` for side-by-side; long unchanged runs
|
|
3890
|
+
* collapse to an expandable "· N unchanged lines ·" row.
|
|
3891
|
+
*
|
|
3892
|
+
* <strct-diff [before]="saved" [after]="draft" beforeLabel="Running" afterLabel="Draft" />
|
|
3893
|
+
*
|
|
3894
|
+
* Rows are marked by symbol (+/−) as well as tint, so the diff reads without
|
|
3895
|
+
* color — the same CVD rule the icon badges follow.
|
|
3896
|
+
*/
|
|
3897
|
+
declare class StrctDiff {
|
|
3898
|
+
/** The two texts to compare. */
|
|
3899
|
+
readonly before: _angular_core.InputSignal<string>;
|
|
3900
|
+
readonly after: _angular_core.InputSignal<string>;
|
|
3901
|
+
/** Unified (default) or side-by-side split view. */
|
|
3902
|
+
readonly mode: _angular_core.InputSignal<"unified" | "split">;
|
|
3903
|
+
/** Context lines kept around changes before collapsing (0 disables collapsing). */
|
|
3904
|
+
readonly context: _angular_core.InputSignal<number>;
|
|
3905
|
+
/** Header bits. */
|
|
3906
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
3907
|
+
readonly language: _angular_core.InputSignal<string>;
|
|
3908
|
+
readonly beforeLabel: _angular_core.InputSignal<string>;
|
|
3909
|
+
readonly afterLabel: _angular_core.InputSignal<string>;
|
|
3910
|
+
readonly copyable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3911
|
+
readonly copyAfterLabel: _angular_core.InputSignal<string>;
|
|
3912
|
+
readonly unchangedLabel: _angular_core.InputSignal<string>;
|
|
3913
|
+
/** Scroll the body past this height (px); null grows freely. */
|
|
3914
|
+
readonly maxHeight: _angular_core.InputSignal<number | null>;
|
|
3915
|
+
private readonly expanded;
|
|
3916
|
+
protected readonly rows: _angular_core.Signal<StrctDiffRow[]>;
|
|
3917
|
+
protected readonly addCount: _angular_core.Signal<number>;
|
|
3918
|
+
protected readonly delCount: _angular_core.Signal<number>;
|
|
3919
|
+
protected readonly unifiedRows: _angular_core.Signal<AnyRow[]>;
|
|
3920
|
+
protected readonly splitRows: _angular_core.Signal<AnySplitRow[]>;
|
|
3921
|
+
/** Group rows into visible chunks and collapsible unchanged runs. */
|
|
3922
|
+
private readonly chunks;
|
|
3923
|
+
protected expand(startIndex: number): void;
|
|
3924
|
+
protected sign(type: string): string;
|
|
3925
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDiff, never>;
|
|
3926
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDiff, "strct-diff", never, { "before": { "alias": "before"; "required": true; "isSignal": true; }; "after": { "alias": "after"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "beforeLabel": { "alias": "beforeLabel"; "required": false; "isSignal": true; }; "afterLabel": { "alias": "afterLabel"; "required": false; "isSignal": true; }; "copyable": { "alias": "copyable"; "required": false; "isSignal": true; }; "copyAfterLabel": { "alias": "copyAfterLabel"; "required": false; "isSignal": true; }; "unchangedLabel": { "alias": "unchangedLabel"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3927
|
+
}
|
|
3928
|
+
|
|
3929
|
+
/**
|
|
3930
|
+
* Two resizable panes with a draggable gutter — master/detail layouts where
|
|
3931
|
+
* the split is the user's to own:
|
|
3932
|
+
*
|
|
3933
|
+
* <strct-splitter [(split)]="pct" [min]="20" [max]="80">
|
|
3934
|
+
* <div strctPaneStart>…list…</div>
|
|
3935
|
+
* <div strctPaneEnd>…detail…</div>
|
|
3936
|
+
* </strct-splitter>
|
|
3937
|
+
*
|
|
3938
|
+
* `split` is the start pane's share in percent (two-way, persistable).
|
|
3939
|
+
* The gutter is a keyboard separator: arrows nudge, Home/End jump to min/max.
|
|
3940
|
+
*/
|
|
3941
|
+
declare class StrctSplitter {
|
|
3942
|
+
private readonly host;
|
|
3943
|
+
/** Start pane share in percent (two-way). */
|
|
3944
|
+
readonly split: _angular_core.ModelSignal<number>;
|
|
3945
|
+
/** Clamp bounds for the split (percent). */
|
|
3946
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
3947
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
3948
|
+
/** Stack panes vertically (gutter drags up/down). */
|
|
3949
|
+
readonly vertical: _angular_core.InputSignal<boolean>;
|
|
3950
|
+
/** Accessible name of the separator (localizable). */
|
|
3951
|
+
readonly gutterLabel: _angular_core.InputSignal<string>;
|
|
3952
|
+
/** Keyboard nudge step in percent. */
|
|
3953
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
3954
|
+
protected readonly clamped: _angular_core.Signal<number>;
|
|
3955
|
+
protected dragging: boolean;
|
|
3956
|
+
private moveHandler;
|
|
3957
|
+
private upHandler;
|
|
3958
|
+
protected onDragStart(event: MouseEvent): void;
|
|
3959
|
+
private onDragMove;
|
|
3960
|
+
private onDragEnd;
|
|
3961
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
3962
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSplitter, never>;
|
|
3963
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSplitter, "strct-splitter", never, { "split": { "alias": "split"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "gutterLabel": { "alias": "gutterLabel"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "split": "splitChange"; }, never, ["[strctPaneStart]", "[strctPaneEnd]"], true, never>;
|
|
3964
|
+
}
|
|
3965
|
+
|
|
3966
|
+
/** One transferable item. */
|
|
3967
|
+
interface StrctTransferItem {
|
|
3968
|
+
id: string;
|
|
3969
|
+
label: string;
|
|
3970
|
+
icon?: string;
|
|
3971
|
+
disabled?: boolean;
|
|
3972
|
+
data?: unknown;
|
|
3973
|
+
}
|
|
3974
|
+
/**
|
|
3975
|
+
* Dual-list transfer (picklist) — "assign hosts to the cluster": all items on
|
|
3976
|
+
* the left, the chosen set on the right, checkbox multi-select and move
|
|
3977
|
+
* buttons in between, with a searchbox per side.
|
|
3978
|
+
*
|
|
3979
|
+
* <strct-transfer [items]="hosts" [(assigned)]="clusterHosts" />
|
|
3980
|
+
*
|
|
3981
|
+
* `assigned` is the two-way id set (string[]); `items` stays the single
|
|
3982
|
+
* source-of-truth list.
|
|
3983
|
+
*/
|
|
3984
|
+
declare class StrctTransfer {
|
|
3985
|
+
/** The full item universe. */
|
|
3986
|
+
readonly items: _angular_core.InputSignal<StrctTransferItem[]>;
|
|
3987
|
+
/** Assigned item ids (two-way). */
|
|
3988
|
+
readonly assigned: _angular_core.ModelSignal<string[]>;
|
|
3989
|
+
/** Localizable strings. */
|
|
3990
|
+
readonly sourceLabel: _angular_core.InputSignal<string>;
|
|
3991
|
+
readonly targetLabel: _angular_core.InputSignal<string>;
|
|
3992
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
3993
|
+
readonly emptyLabel: _angular_core.InputSignal<string>;
|
|
3994
|
+
readonly assignLabel: _angular_core.InputSignal<string>;
|
|
3995
|
+
readonly unassignLabel: _angular_core.InputSignal<string>;
|
|
3996
|
+
/** A move happened (either direction) with the moved ids. */
|
|
3997
|
+
readonly moved: _angular_core.OutputEmitterRef<{
|
|
3998
|
+
direction: "assign" | "unassign";
|
|
3999
|
+
ids: string[];
|
|
4000
|
+
}>;
|
|
4001
|
+
protected readonly sourceQuery: _angular_core.WritableSignal<string>;
|
|
4002
|
+
protected readonly targetQuery: _angular_core.WritableSignal<string>;
|
|
4003
|
+
protected readonly sourceChecked: _angular_core.WritableSignal<Set<string>>;
|
|
4004
|
+
protected readonly targetChecked: _angular_core.WritableSignal<Set<string>>;
|
|
4005
|
+
private readonly assignedSet;
|
|
4006
|
+
protected readonly sourceItems: _angular_core.Signal<StrctTransferItem[]>;
|
|
4007
|
+
protected readonly targetItems: _angular_core.Signal<StrctTransferItem[]>;
|
|
4008
|
+
private matches;
|
|
4009
|
+
protected toggle(which: typeof this.sourceChecked | typeof this.targetChecked, id: string): void;
|
|
4010
|
+
protected assign(): void;
|
|
4011
|
+
protected unassign(): void;
|
|
4012
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTransfer, never>;
|
|
4013
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTransfer, "strct-transfer", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "assigned": { "alias": "assigned"; "required": false; "isSignal": true; }; "sourceLabel": { "alias": "sourceLabel"; "required": false; "isSignal": true; }; "targetLabel": { "alias": "targetLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "assignLabel": { "alias": "assignLabel"; "required": false; "isSignal": true; }; "unassignLabel": { "alias": "unassignLabel"; "required": false; "isSignal": true; }; }, { "assigned": "assignedChange"; "moved": "moved"; }, never, never, true, never>;
|
|
4014
|
+
}
|
|
4015
|
+
|
|
4016
|
+
/**
|
|
4017
|
+
* Split button — a primary action plus a chevron opening its variants
|
|
4018
|
+
* (Fluent's pattern): "Deploy ▾ → Deploy with snapshot / Deploy paused".
|
|
4019
|
+
*
|
|
4020
|
+
* <strct-split-button label="Deploy" [items]="variants"
|
|
4021
|
+
* (action)="deploy()" (picked)="run($event)" />
|
|
4022
|
+
*
|
|
4023
|
+
* The main segment fires `(action)`; menu entries fire `(picked)`.
|
|
4024
|
+
*/
|
|
4025
|
+
declare class StrctSplitButton {
|
|
4026
|
+
/** Main action label. */
|
|
4027
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4028
|
+
/** Menu entries (StrctMenuItem: id, label, icon?, critical?, disabled?). */
|
|
4029
|
+
readonly items: _angular_core.InputSignal<StrctMenuItem[]>;
|
|
4030
|
+
/** Optional leading icon of the main segment. */
|
|
4031
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4032
|
+
/** Filled (solid accent) look. */
|
|
4033
|
+
readonly solid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4034
|
+
/** Disable both segments. */
|
|
4035
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4036
|
+
/** Accessible name of the chevron (localizable). */
|
|
4037
|
+
readonly menuLabel: _angular_core.InputSignal<string>;
|
|
4038
|
+
/** The main segment was clicked. */
|
|
4039
|
+
readonly action: _angular_core.OutputEmitterRef<void>;
|
|
4040
|
+
/** A menu entry was chosen. */
|
|
4041
|
+
readonly picked: _angular_core.OutputEmitterRef<StrctMenuItem>;
|
|
4042
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSplitButton, never>;
|
|
4043
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSplitButton, "strct-split-button", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "menuLabel": { "alias": "menuLabel"; "required": false; "isSignal": true; }; }, { "action": "action"; "picked": "picked"; }, never, never, true, never>;
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
/**
|
|
4047
|
+
* Repeating diagonal text watermark over its content — compliance overlays
|
|
4048
|
+
* for classified/internal consoles ("CONFIDENTIAL", "user@corp · 2026-07-21"):
|
|
4049
|
+
*
|
|
4050
|
+
* <strct-watermark text="CONFIDENTIAL">…page…</strct-watermark>
|
|
4051
|
+
*
|
|
4052
|
+
* Rendered as a pointer-transparent tiled SVG layer, so the content below
|
|
4053
|
+
* stays fully interactive and selectable. Purely visual — `aria-hidden`.
|
|
4054
|
+
*/
|
|
4055
|
+
declare class StrctWatermark {
|
|
4056
|
+
private readonly sanitizer;
|
|
4057
|
+
/** The repeated watermark text. */
|
|
4058
|
+
readonly text: _angular_core.InputSignal<string>;
|
|
4059
|
+
/** Layer opacity (0–1). */
|
|
4060
|
+
readonly opacity: _angular_core.InputSignal<number>;
|
|
4061
|
+
/** Rotation in degrees (negative = up-slope). */
|
|
4062
|
+
readonly angle: _angular_core.InputSignal<number>;
|
|
4063
|
+
/** Tile size in px — larger spreads the marks out. */
|
|
4064
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
4065
|
+
/** Font size in px. */
|
|
4066
|
+
readonly fontSize: _angular_core.InputSignal<number>;
|
|
4067
|
+
protected readonly tile: _angular_core.Signal<SafeStyle>;
|
|
4068
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWatermark, never>;
|
|
4069
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWatermark, "strct-watermark", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; "angle": { "alias": "angle"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "fontSize": { "alias": "fontSize"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4070
|
+
}
|
|
4071
|
+
|
|
4072
|
+
/** One coach-mark step. `target` is a CSS selector; null centers the card. */
|
|
4073
|
+
interface StrctTourStep {
|
|
4074
|
+
target: string | null;
|
|
4075
|
+
title: string;
|
|
4076
|
+
body: string;
|
|
4077
|
+
}
|
|
4078
|
+
/**
|
|
4079
|
+
* Feature tour (coach marks) — "what's new" onboarding over live UI:
|
|
4080
|
+
*
|
|
4081
|
+
* <strct-tour [(open)]="tourOpen" [steps]="steps" (finished)="done()" />
|
|
4082
|
+
*
|
|
4083
|
+
* Each step spotlights its `target` selector with a ring cut out of a dimmed
|
|
4084
|
+
* backdrop and anchors a card next to it. Arrows / buttons step, Escape
|
|
4085
|
+
* closes, and the card is a labeled dialog. Purely DOM-driven: targets are
|
|
4086
|
+
* looked up when the step shows, so it works over any page.
|
|
4087
|
+
*/
|
|
4088
|
+
declare class StrctTour {
|
|
4089
|
+
/** Whether the tour is showing (two-way). */
|
|
4090
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
4091
|
+
/** The steps, in order. */
|
|
4092
|
+
readonly steps: _angular_core.InputSignal<StrctTourStep[]>;
|
|
4093
|
+
/** Localizable strings. */
|
|
4094
|
+
readonly nextLabel: _angular_core.InputSignal<string>;
|
|
4095
|
+
readonly backLabel: _angular_core.InputSignal<string>;
|
|
4096
|
+
readonly skipLabel: _angular_core.InputSignal<string>;
|
|
4097
|
+
readonly doneLabel: _angular_core.InputSignal<string>;
|
|
4098
|
+
/** The last step's Done was clicked (Escape / Skip emit `dismissed`). */
|
|
4099
|
+
readonly finished: _angular_core.OutputEmitterRef<void>;
|
|
4100
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
4101
|
+
protected readonly index: _angular_core.WritableSignal<number>;
|
|
4102
|
+
/** Bumped on open/step/resize to re-measure the target. */
|
|
4103
|
+
private readonly measureTick;
|
|
4104
|
+
protected readonly current: _angular_core.Signal<StrctTourStep>;
|
|
4105
|
+
protected readonly spot: _angular_core.Signal<{
|
|
4106
|
+
top: number;
|
|
4107
|
+
left: number;
|
|
4108
|
+
width: number;
|
|
4109
|
+
height: number;
|
|
4110
|
+
} | null>;
|
|
4111
|
+
protected readonly cardPos: _angular_core.Signal<{
|
|
4112
|
+
top: number;
|
|
4113
|
+
left: number;
|
|
4114
|
+
}>;
|
|
4115
|
+
constructor();
|
|
4116
|
+
protected next(): void;
|
|
4117
|
+
protected prev(): void;
|
|
4118
|
+
protected close(): void;
|
|
4119
|
+
private scrollToTarget;
|
|
4120
|
+
protected onEscape(): void;
|
|
4121
|
+
protected onReflow(): void;
|
|
4122
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTour, never>;
|
|
4123
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTour, "strct-tour", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "skipLabel": { "alias": "skipLabel"; "required": false; "isSignal": true; }; "doneLabel": { "alias": "doneLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "finished": "finished"; "dismissed": "dismissed"; }, never, never, true, never>;
|
|
4124
|
+
}
|
|
4125
|
+
|
|
4126
|
+
/** One top-level menubar entry with its menu. */
|
|
4127
|
+
interface StrctMenubarItem {
|
|
4128
|
+
id: string;
|
|
4129
|
+
label: string;
|
|
4130
|
+
items: StrctMenuItem[];
|
|
4131
|
+
}
|
|
4132
|
+
/**
|
|
4133
|
+
* Horizontal menubar — the application-menu strip ("File · Edit · View") for
|
|
4134
|
+
* dense tool-style consoles:
|
|
4135
|
+
*
|
|
4136
|
+
* <strct-menubar [menus]="menus" (picked)="run($event)" />
|
|
4137
|
+
*
|
|
4138
|
+
* Click (or Enter/Down) opens a menu; Left/Right move across the bar and,
|
|
4139
|
+
* while open, switch the open menu (the APG menubar convention). Escape and
|
|
4140
|
+
* outside click close. `(picked)` carries `{ menu, item }`.
|
|
4141
|
+
*/
|
|
4142
|
+
declare class StrctMenubar {
|
|
4143
|
+
private readonly host;
|
|
4144
|
+
/** Top-level menus. */
|
|
4145
|
+
readonly menus: _angular_core.InputSignal<StrctMenubarItem[]>;
|
|
4146
|
+
/** Accessible name of the bar (localizable). */
|
|
4147
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
4148
|
+
/** A menu entry was chosen. */
|
|
4149
|
+
readonly picked: _angular_core.OutputEmitterRef<{
|
|
4150
|
+
menu: StrctMenubarItem;
|
|
4151
|
+
item: StrctMenuItem;
|
|
4152
|
+
}>;
|
|
4153
|
+
protected readonly openId: _angular_core.WritableSignal<string | null>;
|
|
4154
|
+
protected readonly focusIdx: _angular_core.WritableSignal<number>;
|
|
4155
|
+
protected toggleMenu(id: string, i: number): void;
|
|
4156
|
+
protected pick(menu: StrctMenubarItem, item: StrctMenuItem): void;
|
|
4157
|
+
protected onTopKey(event: KeyboardEvent, i: number): void;
|
|
4158
|
+
protected onDocClick(event: MouseEvent): void;
|
|
4159
|
+
protected onEscape(): void;
|
|
4160
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctMenubar, never>;
|
|
4161
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMenubar, "strct-menubar", never, { "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "picked": "picked"; }, never, never, true, never>;
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4164
|
+
/**
|
|
4165
|
+
* Screen-reader announcements for state changes that have no visible text —
|
|
4166
|
+
* "12 rows loaded", "Snapshot created" (Material's LiveAnnouncer, strct-sized):
|
|
4167
|
+
*
|
|
4168
|
+
* private announcer = inject(StrctAnnouncer);
|
|
4169
|
+
* this.announcer.announce('12 rows loaded');
|
|
4170
|
+
*
|
|
4171
|
+
* Maintains one visually-hidden live region per politeness level; repeated
|
|
4172
|
+
* identical messages are re-announced (the region is cleared first).
|
|
4173
|
+
*/
|
|
4174
|
+
declare class StrctAnnouncer implements OnDestroy {
|
|
4175
|
+
private regions;
|
|
4176
|
+
private clearTimer;
|
|
4177
|
+
announce(message: string, politeness?: 'polite' | 'assertive'): void;
|
|
4178
|
+
private regionFor;
|
|
4179
|
+
ngOnDestroy(): void;
|
|
4180
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAnnouncer, never>;
|
|
4181
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<StrctAnnouncer>;
|
|
4182
|
+
}
|
|
4183
|
+
|
|
4184
|
+
/** A registered application hotkey. */
|
|
4185
|
+
interface StrctHotkey {
|
|
4186
|
+
/** Combo like `'ctrl+k'`, `'meta+shift+p'`, `'?'` — `mod` = Ctrl/⌘. */
|
|
4187
|
+
combo: string;
|
|
4188
|
+
/** Human description shown in the help overlay. */
|
|
4189
|
+
description: string;
|
|
4190
|
+
/** Help-overlay group heading. */
|
|
4191
|
+
group?: string;
|
|
4192
|
+
handler: (event: KeyboardEvent) => void;
|
|
4193
|
+
}
|
|
4194
|
+
/**
|
|
4195
|
+
* Application hotkeys, centrally registered so they are discoverable — the
|
|
4196
|
+
* Blueprint pattern:
|
|
4197
|
+
*
|
|
4198
|
+
* private hotkeys = inject(StrctHotkeysService);
|
|
4199
|
+
* ngOnInit() { this.dispose = this.hotkeys.register(
|
|
4200
|
+
* { combo: 'mod+k', description: 'Open command palette', group: 'Global',
|
|
4201
|
+
* handler: () => this.palette.open() }); }
|
|
4202
|
+
*
|
|
4203
|
+
* Combos: `'a'`, `'?'`, `'ctrl+k'`, `'meta+shift+p'`, `'mod+k'` (mod = Ctrl/⌘).
|
|
4204
|
+
* Plain-key combos are suppressed while typing in inputs / textareas /
|
|
4205
|
+
* contenteditable; modifier combos always fire. Pair with
|
|
4206
|
+
* `<strct-hotkeys-help/>` for the ⌘/ ("?") cheatsheet overlay.
|
|
4207
|
+
*/
|
|
4208
|
+
declare class StrctHotkeysService implements OnDestroy {
|
|
4209
|
+
private readonly registry;
|
|
4210
|
+
/** All registered hotkeys (for the help overlay). */
|
|
4211
|
+
readonly hotkeys: _angular_core.Signal<StrctHotkey[]>;
|
|
4212
|
+
private readonly listener;
|
|
4213
|
+
constructor();
|
|
4214
|
+
/** Register a hotkey; the returned function unregisters it. */
|
|
4215
|
+
register(hotkey: StrctHotkey): () => void;
|
|
4216
|
+
private onKeydown;
|
|
4217
|
+
ngOnDestroy(): void;
|
|
4218
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctHotkeysService, never>;
|
|
4219
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<StrctHotkeysService>;
|
|
4220
|
+
}
|
|
4221
|
+
/**
|
|
4222
|
+
* The hotkey cheatsheet overlay. Mount once near the app root; it registers
|
|
4223
|
+
* `?` itself and lists everything in the service, grouped:
|
|
4224
|
+
*
|
|
4225
|
+
* <strct-hotkeys-help />
|
|
4226
|
+
*/
|
|
4227
|
+
declare class StrctHotkeysHelp {
|
|
4228
|
+
private readonly service;
|
|
4229
|
+
/** Overlay visibility (two-way; `?` toggles it too). */
|
|
4230
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
4231
|
+
/** Localizable strings. */
|
|
4232
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
4233
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
4234
|
+
protected readonly grouped: _angular_core.Signal<{
|
|
4235
|
+
name: string;
|
|
4236
|
+
keys: StrctHotkey[];
|
|
4237
|
+
}[]>;
|
|
4238
|
+
constructor();
|
|
4239
|
+
protected onEscape(): void;
|
|
4240
|
+
protected parts(combo: string): string[];
|
|
4241
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctHotkeysHelp, never>;
|
|
4242
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctHotkeysHelp, "strct-hotkeys-help", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
|
|
4243
|
+
}
|
|
4244
|
+
|
|
4245
|
+
/** A completed reorder: move the item at `from` to `to` in your array. */
|
|
4246
|
+
interface StrctReorderEvent {
|
|
4247
|
+
from: number;
|
|
4248
|
+
to: number;
|
|
4249
|
+
}
|
|
4250
|
+
/**
|
|
4251
|
+
* List drag-reorder primitive — the consumer owns the array:
|
|
4252
|
+
*
|
|
4253
|
+
* <ul strctReorder (reordered)="move($event)">
|
|
4254
|
+
* @for (s of steps(); track s.id) {
|
|
4255
|
+
* <li strctReorderItem>{{ s.label }}</li>
|
|
4256
|
+
* }
|
|
4257
|
+
* </ul>
|
|
4258
|
+
*
|
|
4259
|
+
* move({ from, to }: StrctReorderEvent) {
|
|
4260
|
+
* this.steps.update((s) => { const c = [...s]; c.splice(to, 0, ...c.splice(from, 1)); return c; });
|
|
4261
|
+
* }
|
|
4262
|
+
*
|
|
4263
|
+
* Items are HTML5-draggable; keyboard reorder is Alt+ArrowUp / Alt+ArrowDown
|
|
4264
|
+
* on the focused item (items get `tabindex="0"` unless they already manage
|
|
4265
|
+
* focus). Indexes are positions among the `strctReorderItem` siblings.
|
|
4266
|
+
*/
|
|
4267
|
+
declare class StrctReorder {
|
|
4268
|
+
private readonly host;
|
|
4269
|
+
/** Emits when a drag or keyboard move completes. */
|
|
4270
|
+
readonly reordered: _angular_core.OutputEmitterRef<StrctReorderEvent>;
|
|
4271
|
+
/** Disable all reordering (display-only mode). */
|
|
4272
|
+
readonly reorderDisabled: _angular_core.InputSignal<boolean>;
|
|
4273
|
+
readonly dragIndex: _angular_core.WritableSignal<number | null>;
|
|
4274
|
+
readonly overIndex: _angular_core.WritableSignal<number | null>;
|
|
4275
|
+
items(): HTMLElement[];
|
|
4276
|
+
indexOf(el: HTMLElement): number;
|
|
4277
|
+
commit(from: number, to: number): void;
|
|
4278
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctReorder, never>;
|
|
4279
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorder, "[strctReorder]", never, { "reorderDisabled": { "alias": "reorderDisabled"; "required": false; "isSignal": true; }; }, { "reordered": "reordered"; }, never, never, true, never>;
|
|
4280
|
+
}
|
|
4281
|
+
/** One draggable row inside a `[strctReorder]` container. */
|
|
4282
|
+
declare class StrctReorderItem {
|
|
4283
|
+
protected readonly list: StrctReorder;
|
|
4284
|
+
private readonly el;
|
|
4285
|
+
private readonly hadOwnTabindex;
|
|
4286
|
+
protected hostTabindex(): number | null;
|
|
4287
|
+
protected isDragging(): boolean;
|
|
4288
|
+
protected isOver(): boolean;
|
|
4289
|
+
private index;
|
|
4290
|
+
protected onDragStart(event: DragEvent): void;
|
|
4291
|
+
protected onDragOver(event: DragEvent): void;
|
|
4292
|
+
protected onDrop(event: DragEvent): void;
|
|
4293
|
+
protected onDragEnd(): void;
|
|
4294
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
4295
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctReorderItem, never>;
|
|
4296
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorderItem, "[strctReorderItem]", never, {}, {}, never, never, true, never>;
|
|
4297
|
+
}
|
|
4298
|
+
|
|
4299
|
+
export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChart, StrctCheckbox, StrctChips, StrctCode, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctContextMenu, StrctContextMenuTrigger, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFile, StrctFilterBar, StrctFlow, StrctFooter, StrctGauge, StrctHeader, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLogViewer, StrctLogin, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderItem, StrctRowDetailDef, StrctSearchbox, StrctSectionMenu, StrctSegmented, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWatermark, StrctWizard, parseAnsi, registerStrctIcon, strctComputeDiff, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctValidationIcon, strctValidationTone };
|
|
4300
|
+
export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartThreshold, StrctChartType, StrctColumn, StrctCommandItem, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowDirection, StrctFlowNode, StrctFlowOrientation, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLogLine, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressStatus, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus };
|