@akcelik/strct 0.31.1 → 1.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/fesm2022/akcelik-strct.mjs +791 -253
- package/fesm2022/akcelik-strct.mjs.map +1 -1
- package/package.json +1 -1
- package/types/akcelik-strct.d.ts +79 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akcelik/strct",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.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/types/akcelik-strct.d.ts
CHANGED
|
@@ -1798,6 +1798,8 @@ declare class StrctDatepicker implements ControlValueAccessor {
|
|
|
1798
1798
|
/** Placeholder text when empty. */
|
|
1799
1799
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1800
1800
|
protected readonly dow: string[];
|
|
1801
|
+
protected readonly dowFull: string[];
|
|
1802
|
+
protected readonly titleId: string;
|
|
1801
1803
|
readonly value: _angular_core.WritableSignal<string>;
|
|
1802
1804
|
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1803
1805
|
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
@@ -1808,12 +1810,21 @@ declare class StrctDatepicker implements ControlValueAccessor {
|
|
|
1808
1810
|
protected readonly monthLabel: _angular_core.Signal<string>;
|
|
1809
1811
|
protected readonly displayLabel: _angular_core.Signal<string>;
|
|
1810
1812
|
protected readonly cells: _angular_core.Signal<DayCell[]>;
|
|
1813
|
+
/** The 42 cells chunked into ARIA grid rows (weeks). */
|
|
1814
|
+
protected readonly weeks: _angular_core.Signal<DayCell[][]>;
|
|
1815
|
+
/** Accessible name of one day cell: "Tuesday, March 4, 2026". */
|
|
1816
|
+
protected cellAria(cell: DayCell): string;
|
|
1811
1817
|
private onChange;
|
|
1812
1818
|
private onTouched;
|
|
1813
1819
|
toggle(): void;
|
|
1814
1820
|
shiftMonth(delta: number): void;
|
|
1815
1821
|
pick(iso: string): void;
|
|
1822
|
+
constructor();
|
|
1816
1823
|
onKeydown(event: KeyboardEvent): void;
|
|
1824
|
+
/** Day-of-week (0–6) of the keyboard cursor. */
|
|
1825
|
+
private focusedDow;
|
|
1826
|
+
/** Close the panel and hand focus back to the input. */
|
|
1827
|
+
private close;
|
|
1817
1828
|
private syncFocus;
|
|
1818
1829
|
private shiftFocus;
|
|
1819
1830
|
protected onDocClick(event: MouseEvent): void;
|
|
@@ -2065,10 +2076,22 @@ interface StrctDatagridLazyState {
|
|
|
2065
2076
|
sortKey: string | null;
|
|
2066
2077
|
sortDir: SortDir;
|
|
2067
2078
|
}
|
|
2068
|
-
/** Persistable user column preferences (widths from resize, hidden from the
|
|
2079
|
+
/** Persistable user column preferences (widths from resize, hidden from the
|
|
2080
|
+
* chooser, order from drag-reorder). */
|
|
2069
2081
|
interface StrctDatagridColumnState {
|
|
2070
2082
|
widths?: Record<string, number>;
|
|
2071
2083
|
hidden?: string[];
|
|
2084
|
+
order?: string[];
|
|
2085
|
+
}
|
|
2086
|
+
/** One rendered tbody item: a data row, or a group header. */
|
|
2087
|
+
interface DgItem {
|
|
2088
|
+
row?: StrctRow;
|
|
2089
|
+
group?: {
|
|
2090
|
+
key: unknown;
|
|
2091
|
+
label: string;
|
|
2092
|
+
count: number;
|
|
2093
|
+
collapsed: boolean;
|
|
2094
|
+
};
|
|
2072
2095
|
}
|
|
2073
2096
|
/**
|
|
2074
2097
|
* Marks the expandable-row detail template. The row is the template's implicit
|
|
@@ -2189,6 +2212,14 @@ declare class StrctDatagrid {
|
|
|
2189
2212
|
readonly stateKey: _angular_core.InputSignal<string | null>;
|
|
2190
2213
|
/** User column preferences (two-way): widths from resize, hidden from the chooser. */
|
|
2191
2214
|
readonly columnState: _angular_core.ModelSignal<StrctDatagridColumnState | null>;
|
|
2215
|
+
/** Let the user reorder data columns by dragging their headers. */
|
|
2216
|
+
readonly reorderable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2217
|
+
/**
|
|
2218
|
+
* Group rows by this column key: the grid renders a collapsible header row
|
|
2219
|
+
* per distinct value (with a count), respecting the current sort within
|
|
2220
|
+
* groups. Paging is bypassed while grouped; not combinable with `virtual`.
|
|
2221
|
+
*/
|
|
2222
|
+
readonly groupBy: _angular_core.InputSignal<string | null>;
|
|
2192
2223
|
/** Emitted when the selection changes. */
|
|
2193
2224
|
readonly selectionChange: _angular_core.OutputEmitterRef<StrctRow[]>;
|
|
2194
2225
|
/** Emitted when the refresh button is clicked. */
|
|
@@ -2228,8 +2259,24 @@ declare class StrctDatagrid {
|
|
|
2228
2259
|
protected readonly paneOpen: _angular_core.Signal<boolean>;
|
|
2229
2260
|
/** Whether to render the trailing row-actions (kebab) column. */
|
|
2230
2261
|
protected readonly canActions: _angular_core.Signal<boolean>;
|
|
2262
|
+
/** User-chosen column order (keys); unknown keys keep declared positions. */
|
|
2263
|
+
private readonly columnOrder;
|
|
2264
|
+
/** Declared columns re-arranged by the user's drag order. */
|
|
2265
|
+
private readonly orderedColumns;
|
|
2231
2266
|
/** Only the first column is shown while the detail pane is open. */
|
|
2232
2267
|
protected readonly visibleColumns: _angular_core.Signal<StrctDatagridColumn[]>;
|
|
2268
|
+
protected readonly dragKey: _angular_core.WritableSignal<string | null>;
|
|
2269
|
+
protected readonly dropKey: _angular_core.WritableSignal<string | null>;
|
|
2270
|
+
protected onColDragStart(key: string, event: DragEvent): void;
|
|
2271
|
+
protected onColDragOver(key: string, event: DragEvent): void;
|
|
2272
|
+
protected onColDrop(key: string): void;
|
|
2273
|
+
protected onColDragEnd(): void;
|
|
2274
|
+
private readonly collapsedGroups;
|
|
2275
|
+
/** Collapse / expand one group header. */
|
|
2276
|
+
toggleGroup(key: unknown): void;
|
|
2277
|
+
/** What tbody renders: plain (virtual/paged) rows, or groups + their rows. */
|
|
2278
|
+
protected readonly displayItems: _angular_core.Signal<DgItem[]>;
|
|
2279
|
+
protected itemKey(it: DgItem): unknown;
|
|
2233
2280
|
protected readonly sorted: _angular_core.Signal<StrctRow[]>;
|
|
2234
2281
|
protected readonly paged: _angular_core.Signal<StrctRow[]>;
|
|
2235
2282
|
/** Full count for the pager / footer (server total in lazy mode). */
|
|
@@ -2273,6 +2320,14 @@ declare class StrctDatagrid {
|
|
|
2273
2320
|
* current order (client mode: the full sorted set, not just the page).
|
|
2274
2321
|
*/
|
|
2275
2322
|
toCSV(): string;
|
|
2323
|
+
/**
|
|
2324
|
+
* The grid as a real .xlsx workbook (dependency-free SpreadsheetML):
|
|
2325
|
+
* header labels + every non-hidden column in the current order, all rows in
|
|
2326
|
+
* the current sort; numeric cells stay numeric.
|
|
2327
|
+
*/
|
|
2328
|
+
toXLSX(): Uint8Array;
|
|
2329
|
+
/** Download the grid as an .xlsx file. */
|
|
2330
|
+
downloadXLSX(filename?: string): void;
|
|
2276
2331
|
/** Download the grid as a CSV file. */
|
|
2277
2332
|
downloadCSV(filename?: string): void;
|
|
2278
2333
|
protected colspan(): number;
|
|
@@ -2298,7 +2353,7 @@ declare class StrctDatagrid {
|
|
|
2298
2353
|
private commitSelection;
|
|
2299
2354
|
private compare;
|
|
2300
2355
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
|
|
2301
|
-
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; }; }, { "columnState": "columnStateChange"; "selectionChange": "selectionChange"; "syncChange": "syncChange"; "rowAction": "rowAction"; "lazyLoad": "lazyLoad"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBar]"], true, never>;
|
|
2356
|
+
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>;
|
|
2302
2357
|
}
|
|
2303
2358
|
|
|
2304
2359
|
/** Timeline node state colors. */
|
|
@@ -2512,6 +2567,19 @@ declare class StrctChart {
|
|
|
2512
2567
|
* Double-click, Escape or the reset chip zooms back out.
|
|
2513
2568
|
*/
|
|
2514
2569
|
readonly zoom: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2570
|
+
/**
|
|
2571
|
+
* Stack multi-series values cumulatively: each series draws its line at the
|
|
2572
|
+
* running total and fills the band down to the series below (nulls break the
|
|
2573
|
+
* stack at that slot). Tooltips keep the original per-series values.
|
|
2574
|
+
*/
|
|
2575
|
+
readonly stacked: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2576
|
+
/** Y-axis scale. `log` needs positive values; non-positives clamp to the floor. */
|
|
2577
|
+
readonly scale: _angular_core.InputSignal<"linear" | "log">;
|
|
2578
|
+
/**
|
|
2579
|
+
* Per-point timestamps (ms epoch or Date). When set, x positions map to real
|
|
2580
|
+
* time, so uneven sampling renders honestly instead of equally spaced.
|
|
2581
|
+
*/
|
|
2582
|
+
readonly times: _angular_core.InputSignal<(number | Date)[] | null>;
|
|
2515
2583
|
/** Tooltip text for a gap (null) point. */
|
|
2516
2584
|
readonly gapText: _angular_core.InputSignal<string>;
|
|
2517
2585
|
/** Accessible label of the reset-zoom chip (localizable). */
|
|
@@ -2565,11 +2633,16 @@ declare class StrctChart {
|
|
|
2565
2633
|
private chartH;
|
|
2566
2634
|
/** Horizontal gap between two data points, in px (of the visible window). */
|
|
2567
2635
|
private stepX;
|
|
2568
|
-
/** Real values inside the visible window (multi-aware; bands included
|
|
2636
|
+
/** Real values inside the visible window (multi-aware; bands included;
|
|
2637
|
+
* per-slot totals when stacked). */
|
|
2569
2638
|
private readonly visibleValues;
|
|
2570
2639
|
private readonly yMax;
|
|
2571
2640
|
private readonly yMin;
|
|
2641
|
+
/** Smallest positive visible value — the floor of a log axis. */
|
|
2642
|
+
private readonly logFloor;
|
|
2572
2643
|
private yOf;
|
|
2644
|
+
/** Timestamps normalized to ms (null when the axis is index-based). */
|
|
2645
|
+
private readonly timesMs;
|
|
2573
2646
|
protected readonly points: _angular_core.Signal<(Pt | null)[]>;
|
|
2574
2647
|
/** Non-gap points only (dot rendering). */
|
|
2575
2648
|
protected readonly dotPts: _angular_core.Signal<Pt[]>;
|
|
@@ -2659,7 +2732,8 @@ declare class StrctChart {
|
|
|
2659
2732
|
protected readonly chartAria: _angular_core.Signal<string>;
|
|
2660
2733
|
/** aria-live text announcing the hovered / keyboard-selected point. */
|
|
2661
2734
|
protected readonly srText: _angular_core.Signal<string>;
|
|
2662
|
-
/** Pixel x of a data index (shared by the plot, labels and annotations).
|
|
2735
|
+
/** Pixel x of a data index (shared by the plot, labels and annotations).
|
|
2736
|
+
* With `times`, positions map to real timestamps — uneven sampling shows. */
|
|
2663
2737
|
protected xOf(i: number): number;
|
|
2664
2738
|
/** Set the local hover index, emitting `hoverIndex` on change. */
|
|
2665
2739
|
private setHover;
|
|
@@ -2680,7 +2754,7 @@ declare class StrctChart {
|
|
|
2680
2754
|
/** The chart as a PNG data URL at the given scale (default 2×). */
|
|
2681
2755
|
toPNG(scale?: number): Promise<string>;
|
|
2682
2756
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctChart, never>;
|
|
2683
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChart, "strct-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "glow": { "alias": "glow"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "xTicks": { "alias": "xTicks"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "yAxis": { "alias": "yAxis"; "required": false; "isSignal": true; }; "yTicks": { "alias": "yTicks"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "thresholds": { "alias": "thresholds"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "agoFormat": { "alias": "agoFormat"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "brush": { "alias": "brush"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "gapText": { "alias": "gapText"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; }, { "hoverIndex": "hoverIndex"; "brushChange": "brushChange"; }, never, never, true, never>;
|
|
2757
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChart, "strct-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "glow": { "alias": "glow"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "xTicks": { "alias": "xTicks"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "yAxis": { "alias": "yAxis"; "required": false; "isSignal": true; }; "yTicks": { "alias": "yTicks"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "thresholds": { "alias": "thresholds"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "agoFormat": { "alias": "agoFormat"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "brush": { "alias": "brush"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "times": { "alias": "times"; "required": false; "isSignal": true; }; "gapText": { "alias": "gapText"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; }, { "hoverIndex": "hoverIndex"; "brushChange": "brushChange"; }, never, never, true, never>;
|
|
2684
2758
|
}
|
|
2685
2759
|
|
|
2686
2760
|
/** A single weighted slice of a donut chart. */
|