@akcelik/strct 0.1.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/LICENSE +21 -0
- package/README.md +99 -0
- package/fesm2022/akcelik-strct.mjs +5375 -0
- package/fesm2022/akcelik-strct.mjs.map +1 -0
- package/package.json +54 -0
- package/styles/_base.scss +46 -0
- package/styles/_forms.scss +53 -0
- package/styles/_tokens.scss +113 -0
- package/styles/theme.scss +10 -0
- package/types/akcelik-strct.d.ts +1375 -0
|
@@ -0,0 +1,1375 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnDestroy, TemplateRef } from '@angular/core';
|
|
3
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
4
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
5
|
+
|
|
6
|
+
type StrctPalette = 'arctic' | 'ember' | 'sage';
|
|
7
|
+
type StrctMode = 'dark' | 'light';
|
|
8
|
+
interface StrctPaletteInfo {
|
|
9
|
+
id: StrctPalette;
|
|
10
|
+
/** Human label, shown in switchers. */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Swatch color used by the palette dot. */
|
|
13
|
+
swatch: string;
|
|
14
|
+
}
|
|
15
|
+
/** All palettes the token system ships with, in display order. */
|
|
16
|
+
declare const STRCT_PALETTES: readonly StrctPaletteInfo[];
|
|
17
|
+
/**
|
|
18
|
+
* Owns the active palette + light/dark mode. Writes `data-palette` and
|
|
19
|
+
* `data-theme` onto the document root (which the token layer keys off) and
|
|
20
|
+
* persists the choice to localStorage. Inject it anywhere and read the signals
|
|
21
|
+
* or call the setters.
|
|
22
|
+
*/
|
|
23
|
+
declare class StrctThemeService {
|
|
24
|
+
private readonly doc;
|
|
25
|
+
private readonly _palette;
|
|
26
|
+
private readonly _mode;
|
|
27
|
+
readonly palette: _angular_core.Signal<StrctPalette>;
|
|
28
|
+
readonly mode: _angular_core.Signal<StrctMode>;
|
|
29
|
+
readonly palettes: readonly StrctPaletteInfo[];
|
|
30
|
+
readonly isDark: _angular_core.Signal<boolean>;
|
|
31
|
+
constructor();
|
|
32
|
+
setPalette(palette: StrctPalette): void;
|
|
33
|
+
setMode(mode: StrctMode): void;
|
|
34
|
+
toggleMode(): void;
|
|
35
|
+
private read;
|
|
36
|
+
private write;
|
|
37
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctThemeService, never>;
|
|
38
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<StrctThemeService>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Palette dots + light/dark pill, wired to {@link StrctThemeService}. */
|
|
42
|
+
declare class StrctThemeSwitcher {
|
|
43
|
+
protected readonly theme: StrctThemeService;
|
|
44
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctThemeSwitcher, never>;
|
|
45
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctThemeSwitcher, "strct-theme-switcher", never, {}, {}, never, never, true, never>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Inner markup (path/shape contents) for each icon, drawn on a 0 0 16 16
|
|
50
|
+
* viewBox with `currentColor` stroke. Keep strokes at 1.3–1.5 for crispness.
|
|
51
|
+
*
|
|
52
|
+
* The set is intentionally datacenter-flavoured (hosts, clusters, switches,
|
|
53
|
+
* storage, VMs …). Object state — running / stopped / maintenance — is layered
|
|
54
|
+
* on with the `badge` input rather than a separate icon per state.
|
|
55
|
+
*/
|
|
56
|
+
declare const STRCT_ICONS: Record<string, string>;
|
|
57
|
+
/** Icon names grouped for galleries / documentation. */
|
|
58
|
+
declare const STRCT_ICON_GROUPS: {
|
|
59
|
+
label: string;
|
|
60
|
+
names: string[];
|
|
61
|
+
}[];
|
|
62
|
+
/**
|
|
63
|
+
* Full-SVG icons that keep their own viewBox and colors (no stroke wrapper).
|
|
64
|
+
* Use this for brand / vendor logos you have the rights to ship — register the
|
|
65
|
+
* official asset's markup yourself; the library does not bundle any logos.
|
|
66
|
+
*/
|
|
67
|
+
declare const STRCT_RAW_ICONS: Record<string, string>;
|
|
68
|
+
/**
|
|
69
|
+
* Register an icon at runtime.
|
|
70
|
+
* registerStrctIcon('mything', '<path d="…"/>'); // stroke glyph
|
|
71
|
+
* registerStrctIcon('vendorDell', '<svg viewBox="…">…</svg>', { raw: true });
|
|
72
|
+
*/
|
|
73
|
+
declare function registerStrctIcon(name: string, content: string, options?: {
|
|
74
|
+
raw?: boolean;
|
|
75
|
+
}): void;
|
|
76
|
+
type StrctIconBadge = 'none' | 'ok' | 'warn' | 'crit' | 'off' | 'info';
|
|
77
|
+
/**
|
|
78
|
+
* Inline stroke icon. `<strct-icon name="host" badge="ok" />` renders the host
|
|
79
|
+
* glyph with a green status dot (a "running host"). Unknown names render
|
|
80
|
+
* nothing rather than throwing.
|
|
81
|
+
*/
|
|
82
|
+
declare class StrctIcon {
|
|
83
|
+
private readonly sanitizer;
|
|
84
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
85
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
86
|
+
readonly strokeWidth: _angular_core.InputSignal<number>;
|
|
87
|
+
/** Optional status dot overlaid on the glyph (object state). */
|
|
88
|
+
readonly badge: _angular_core.InputSignal<StrctIconBadge>;
|
|
89
|
+
/** True when the named icon is a full-SVG (raw) icon registered by the app. */
|
|
90
|
+
protected readonly isRaw: _angular_core.Signal<boolean>;
|
|
91
|
+
protected readonly svg: _angular_core.Signal<SafeHtml>;
|
|
92
|
+
protected readonly rawSvg: _angular_core.Signal<SafeHtml>;
|
|
93
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctIcon, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctIcon, "strct-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
type StrctOverlayPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'right' | 'left';
|
|
98
|
+
/**
|
|
99
|
+
* Positions an overlay panel with `position: fixed` relative to an anchor
|
|
100
|
+
* element, so it escapes ancestor `overflow: hidden/scroll` clipping.
|
|
101
|
+
* Repositions on scroll/resize and flips vertically near the viewport edge.
|
|
102
|
+
*
|
|
103
|
+
* <button #trigger>…</button>
|
|
104
|
+
* <div class="menu" [strctOverlay]="trigger" strctOverlayPlacement="bottom-end">…</div>
|
|
105
|
+
*
|
|
106
|
+
* Note: like any fixed-positioned element, the panel is positioned relative to
|
|
107
|
+
* a transformed/filtered ancestor if one exists (a CSS containing-block rule).
|
|
108
|
+
* Avoid wrapping a trigger in `transform`/`filter` if you need viewport-anchored
|
|
109
|
+
* overlays. (The tooltip sidesteps this by rendering into `<body>`.)
|
|
110
|
+
*/
|
|
111
|
+
declare class StrctOverlay implements OnDestroy {
|
|
112
|
+
private readonly el;
|
|
113
|
+
private readonly zone;
|
|
114
|
+
readonly anchor: _angular_core.InputSignal<HTMLElement>;
|
|
115
|
+
readonly placement: _angular_core.InputSignal<StrctOverlayPlacement>;
|
|
116
|
+
/** Match the panel width to the anchor (combobox / date / cascade fields). */
|
|
117
|
+
readonly matchWidth: _angular_core.InputSignal<boolean>;
|
|
118
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
119
|
+
private readonly onScrollResize;
|
|
120
|
+
private bound;
|
|
121
|
+
constructor();
|
|
122
|
+
/** Recompute and apply the fixed coordinates. */
|
|
123
|
+
position(): void;
|
|
124
|
+
ngOnDestroy(): void;
|
|
125
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctOverlay, never>;
|
|
126
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctOverlay, "[strctOverlay]", never, { "anchor": { "alias": "strctOverlay"; "required": true; "isSignal": true; }; "placement": { "alias": "strctOverlayPlacement"; "required": false; "isSignal": true; }; "matchWidth": { "alias": "strctOverlayMatchWidth"; "required": false; "isSignal": true; }; "gap": { "alias": "strctOverlayGap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Application frame: a full-viewport grid of header / body / footer rows.
|
|
131
|
+
* <strct-shell>
|
|
132
|
+
* <strct-header>…</strct-header>
|
|
133
|
+
* <div strctShellMain>… sidebar + content …</div>
|
|
134
|
+
* <strct-footer>…</strct-footer>
|
|
135
|
+
* </strct-shell>
|
|
136
|
+
*/
|
|
137
|
+
declare class StrctShell {
|
|
138
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctShell, never>;
|
|
139
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctShell, "strct-shell", never, {}, {}, never, ["strct-header", "*", "strct-footer"], true, never>;
|
|
140
|
+
}
|
|
141
|
+
/** Top application bar. Holds brand on the left and actions on the right. */
|
|
142
|
+
declare class StrctHeader {
|
|
143
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctHeader, never>;
|
|
144
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctHeader, "strct-header", never, {}, {}, never, ["*"], true, never>;
|
|
145
|
+
}
|
|
146
|
+
/** Bottom status bar. */
|
|
147
|
+
declare class StrctFooter {
|
|
148
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctFooter, never>;
|
|
149
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctFooter, "strct-footer", never, {}, {}, never, ["*"], true, never>;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Scrollable left sidebar surface. Holds the icon nav and/or a tree. */
|
|
153
|
+
declare class StrctVerticalNav {
|
|
154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctVerticalNav, never>;
|
|
155
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctVerticalNav, "strct-vertical-nav", never, {}, {}, never, ["*"], true, never>;
|
|
156
|
+
}
|
|
157
|
+
/** Horizontal strip of icon tabs (e.g. section switcher at the top of a sidebar). */
|
|
158
|
+
declare class StrctNav {
|
|
159
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctNav, never>;
|
|
160
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctNav, "strct-nav", never, {}, {}, never, ["*"], true, never>;
|
|
161
|
+
}
|
|
162
|
+
/** A single icon tab inside `<strct-nav>`. */
|
|
163
|
+
declare class StrctNavItem {
|
|
164
|
+
readonly active: _angular_core.InputSignal<boolean>;
|
|
165
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctNavItem, never>;
|
|
167
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctNavItem, "strct-nav-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Authentication layout. Two modes:
|
|
172
|
+
* - default: a single centered column (drop a card + form inside).
|
|
173
|
+
* - `split`: a two-panel card — a decorative accent aside (`[strctLoginAside]`)
|
|
174
|
+
* on the left and the form (default content) on the right.
|
|
175
|
+
*
|
|
176
|
+
* <strct-login split>
|
|
177
|
+
* <div strctLoginAside>… brand + welcome …</div>
|
|
178
|
+
* <form strctLoginMain>… inputs + button …</form>
|
|
179
|
+
* </strct-login>
|
|
180
|
+
*/
|
|
181
|
+
declare class StrctLogin {
|
|
182
|
+
readonly maxWidth: _angular_core.InputSignal<number>;
|
|
183
|
+
readonly split: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
184
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctLogin, never>;
|
|
185
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctLogin, "strct-login", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "split": { "alias": "split"; "required": false; "isSignal": true; }; }, {}, never, ["[strctLoginAside]", "[strctLoginMain]", "*"], true, never>;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type StrctButtonVariant = 'primary' | 'danger' | 'outline' | 'flat' | 'neutral';
|
|
189
|
+
type StrctButtonSize = 'md' | 'sm' | 'mini';
|
|
190
|
+
/**
|
|
191
|
+
* Styles a native `<button>` / `<a>` so it stays fully accessible and form-aware.
|
|
192
|
+
*
|
|
193
|
+
* Buttons are restrained by default: outlined / ghost surfaces with color used
|
|
194
|
+
* only as a subtle border + text accent. Add `solid` for a rare filled call to
|
|
195
|
+
* action.
|
|
196
|
+
* <button strct-button variant="primary">Save</button>
|
|
197
|
+
* <button strct-button variant="primary" solid>Deploy</button>
|
|
198
|
+
* <a strct-button variant="flat" size="sm" href="...">Cancel</a>
|
|
199
|
+
*/
|
|
200
|
+
declare class StrctButton {
|
|
201
|
+
readonly variant: _angular_core.InputSignal<StrctButtonVariant>;
|
|
202
|
+
readonly size: _angular_core.InputSignal<StrctButtonSize>;
|
|
203
|
+
/** Opt in to a filled surface (use sparingly, for the primary action). */
|
|
204
|
+
readonly solid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
205
|
+
readonly block: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
206
|
+
/** Square padding for a single-icon button. */
|
|
207
|
+
readonly iconOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
208
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctButton, never>;
|
|
209
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctButton, "button[strct-button], a[strct-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
210
|
+
}
|
|
211
|
+
/** Segments adjacent buttons into a single joined control. */
|
|
212
|
+
declare class StrctButtonGroup {
|
|
213
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctButtonGroup, never>;
|
|
214
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctButtonGroup, "strct-button-group", never, {}, {}, never, ["*"], true, never>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
type StrctBadgeStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'danger';
|
|
218
|
+
/** Small inline status pill: `<strct-badge status="success">Active</strct-badge>`. */
|
|
219
|
+
declare class StrctBadge {
|
|
220
|
+
readonly status: _angular_core.InputSignal<StrctBadgeStatus>;
|
|
221
|
+
/** Opt-in filled style instead of the default outlined style. */
|
|
222
|
+
readonly solid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
223
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctBadge, never>;
|
|
224
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctBadge, "strct-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
type StrctTagStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'danger';
|
|
228
|
+
/**
|
|
229
|
+
* Compact, optionally removable chip.
|
|
230
|
+
* <strct-tag status="accent" removable (removed)="drop()">Frontend</strct-tag>
|
|
231
|
+
*/
|
|
232
|
+
declare class StrctTag {
|
|
233
|
+
readonly status: _angular_core.InputSignal<StrctTagStatus>;
|
|
234
|
+
readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
235
|
+
readonly removed: _angular_core.OutputEmitterRef<void>;
|
|
236
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTag, never>;
|
|
237
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTag, "strct-tag", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
type StrctAvatarSize = 'sm' | 'md' | 'lg';
|
|
241
|
+
type StrctAvatarStatus = 'none' | 'online' | 'busy' | 'offline';
|
|
242
|
+
/**
|
|
243
|
+
* Circular avatar: an image when `src` is set, otherwise initials from `name`.
|
|
244
|
+
* <strct-avatar name="Ada Lovelace" status="online" />
|
|
245
|
+
*/
|
|
246
|
+
declare class StrctAvatar {
|
|
247
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
248
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
249
|
+
readonly size: _angular_core.InputSignal<StrctAvatarSize>;
|
|
250
|
+
readonly status: _angular_core.InputSignal<StrctAvatarStatus>;
|
|
251
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
252
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAvatar, never>;
|
|
253
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAvatar, "strct-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
type StrctProgressStatus = 'accent' | 'success' | 'warning' | 'danger';
|
|
257
|
+
/** Horizontal value/usage bar. `<strct-progress [value]="72" status="warning" />`. */
|
|
258
|
+
declare class StrctProgress {
|
|
259
|
+
readonly value: _angular_core.InputSignal<number>;
|
|
260
|
+
readonly status: _angular_core.InputSignal<StrctProgressStatus>;
|
|
261
|
+
protected readonly clamped: _angular_core.Signal<number>;
|
|
262
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctProgress, never>;
|
|
263
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctProgress, "strct-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
type StrctSpinnerSize = 'sm' | 'md' | 'lg';
|
|
267
|
+
/** Indeterminate loading ring. `<strct-spinner size="sm" />`. */
|
|
268
|
+
declare class StrctSpinner {
|
|
269
|
+
readonly size: _angular_core.InputSignal<StrctSpinnerSize>;
|
|
270
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSpinner, never>;
|
|
271
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSpinner, "strct-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Shimmering loading placeholder.
|
|
276
|
+
* <strct-skeleton width="60%" height="14px" />
|
|
277
|
+
* <strct-skeleton circle width="40px" height="40px" />
|
|
278
|
+
*/
|
|
279
|
+
declare class StrctSkeleton {
|
|
280
|
+
readonly width: _angular_core.InputSignal<string>;
|
|
281
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
282
|
+
readonly circle: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
283
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSkeleton, never>;
|
|
284
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSkeleton, "strct-skeleton", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "circle": { "alias": "circle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
type StrctSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
|
|
288
|
+
/**
|
|
289
|
+
* Floating action button that fans out to reveal actions. Project icon buttons
|
|
290
|
+
* (optionally with `strctTooltip`) as the actions.
|
|
291
|
+
* <strct-speed-dial icon="ellipsis" direction="up">
|
|
292
|
+
* <button strct-button iconOnly strctTooltip="Snapshot"><strct-icon name="snapshot" /></button>
|
|
293
|
+
* <button strct-button iconOnly strctTooltip="Restart"><strct-icon name="sync" /></button>
|
|
294
|
+
* </strct-speed-dial>
|
|
295
|
+
*/
|
|
296
|
+
declare class StrctSpeedDial {
|
|
297
|
+
private readonly host;
|
|
298
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
299
|
+
readonly direction: _angular_core.InputSignal<StrctSpeedDialDirection>;
|
|
300
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
301
|
+
toggle(): void;
|
|
302
|
+
protected onDocClick(event: MouseEvent): void;
|
|
303
|
+
protected onEscape(): void;
|
|
304
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSpeedDial, never>;
|
|
305
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSpeedDial, "strct-speed-dial", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Surface container. Compose with the header / block / footer pieces:
|
|
310
|
+
* <strct-card>
|
|
311
|
+
* <strct-card-header>Title</strct-card-header>
|
|
312
|
+
* <strct-card-block>...</strct-card-block>
|
|
313
|
+
* <strct-card-footer><button strct-button>OK</button></strct-card-footer>
|
|
314
|
+
* </strct-card>
|
|
315
|
+
*/
|
|
316
|
+
declare class StrctCard {
|
|
317
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCard, never>;
|
|
318
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, {}, {}, never, ["*"], true, never>;
|
|
319
|
+
}
|
|
320
|
+
declare class StrctCardHeader {
|
|
321
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardHeader, never>;
|
|
322
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardHeader, "strct-card-header", never, {}, {}, never, ["*"], true, never>;
|
|
323
|
+
}
|
|
324
|
+
declare class StrctCardBlock {
|
|
325
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardBlock, never>;
|
|
326
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardBlock, "strct-card-block", never, {}, {}, never, ["*"], true, never>;
|
|
327
|
+
}
|
|
328
|
+
declare class StrctCardFooter {
|
|
329
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardFooter, never>;
|
|
330
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardFooter, "strct-card-footer", never, {}, {}, never, ["*"], true, never>;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/** Vertical container for `<strct-accordion-panel>` items. */
|
|
334
|
+
declare class StrctAccordion {
|
|
335
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordion, never>;
|
|
336
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAccordion, "strct-accordion", never, {}, {}, never, ["*"], true, never>;
|
|
337
|
+
}
|
|
338
|
+
/** Collapsible panel with a header. `expanded` is two-way bindable. */
|
|
339
|
+
declare class StrctAccordionPanel {
|
|
340
|
+
readonly heading: _angular_core.InputSignal<string>;
|
|
341
|
+
readonly expanded: _angular_core.ModelSignal<boolean>;
|
|
342
|
+
toggle(): void;
|
|
343
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordionPanel, never>;
|
|
344
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAccordionPanel, "strct-accordion-panel", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/** A single tab. Place inside `<strct-tabs>`; `label` names its button. */
|
|
348
|
+
declare class StrctTab {
|
|
349
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
350
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
351
|
+
private readonly _active;
|
|
352
|
+
readonly active: _angular_core.Signal<boolean>;
|
|
353
|
+
/** @internal called by the parent tab group */
|
|
354
|
+
setActive(value: boolean): void;
|
|
355
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTab, never>;
|
|
356
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTab, "strct-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
357
|
+
}
|
|
358
|
+
/** Tab group. Wraps `<strct-tab>` children and renders the tab bar. */
|
|
359
|
+
declare class StrctTabs {
|
|
360
|
+
readonly tabs: _angular_core.Signal<readonly StrctTab[]>;
|
|
361
|
+
readonly selectedIndex: _angular_core.WritableSignal<number>;
|
|
362
|
+
constructor();
|
|
363
|
+
select(index: number): void;
|
|
364
|
+
onKeydown(event: KeyboardEvent, bar: HTMLElement): void;
|
|
365
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTabs, never>;
|
|
366
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTabs, "strct-tabs", never, {}, {}, ["tabs"], ["*"], true, never>;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/** Root container for a tree of `<strct-tree-node>` items. */
|
|
370
|
+
declare class StrctTree {
|
|
371
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTree, never>;
|
|
372
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTree, "strct-tree", never, {}, {}, never, ["*"], true, never>;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Tree node. Nest `<strct-tree-node>` children to build hierarchy:
|
|
376
|
+
* <strct-tree-node label="Group" [(expanded)]="open">
|
|
377
|
+
* <strct-tree-node label="Leaf" icon="grid" [active]="true" />
|
|
378
|
+
* </strct-tree-node>
|
|
379
|
+
*/
|
|
380
|
+
declare class StrctTreeNode {
|
|
381
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
382
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
383
|
+
readonly active: _angular_core.InputSignal<boolean>;
|
|
384
|
+
readonly expanded: _angular_core.ModelSignal<boolean>;
|
|
385
|
+
readonly activated: _angular_core.OutputEmitterRef<void>;
|
|
386
|
+
private readonly childNodes;
|
|
387
|
+
protected readonly hasChildren: _angular_core.Signal<boolean>;
|
|
388
|
+
toggle(): void;
|
|
389
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTreeNode, never>;
|
|
390
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTreeNode, "strct-tree-node", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "activated": "activated"; }, ["childNodes"], ["[strctTreeTrailing]", "*"], true, never>;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
type StrctModalSize = 'sm' | 'md' | 'lg';
|
|
394
|
+
/**
|
|
395
|
+
* Overlay dialog with two-way `open`:
|
|
396
|
+
* <strct-modal [(open)]="show" title="Confirm">
|
|
397
|
+
* Body…
|
|
398
|
+
* <ng-container strctModalFooter>
|
|
399
|
+
* <button strct-button (click)="show = false">Cancel</button>
|
|
400
|
+
* </ng-container>
|
|
401
|
+
* </strct-modal>
|
|
402
|
+
*/
|
|
403
|
+
declare class StrctModal {
|
|
404
|
+
private readonly elementRef;
|
|
405
|
+
private readonly doc;
|
|
406
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
407
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
408
|
+
readonly size: _angular_core.InputSignal<StrctModalSize>;
|
|
409
|
+
readonly hideFooter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
410
|
+
/** Allow closing via backdrop click / Escape. */
|
|
411
|
+
readonly dismissable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
412
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
413
|
+
protected readonly titleId: string;
|
|
414
|
+
/** Element that had focus before the dialog opened, restored on close. */
|
|
415
|
+
private previousActive;
|
|
416
|
+
constructor();
|
|
417
|
+
close(): void;
|
|
418
|
+
protected onBackdrop(): void;
|
|
419
|
+
protected onEscape(): void;
|
|
420
|
+
/** Wrap Tab focus within the dialog. */
|
|
421
|
+
protected onTab(event: Event): void;
|
|
422
|
+
private dialog;
|
|
423
|
+
private focusable;
|
|
424
|
+
private focusInitial;
|
|
425
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctModal, never>;
|
|
426
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctModal, "strct-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hideFooter": { "alias": "hideFooter"; "required": false; "isSignal": true; }; "dismissable": { "alias": "dismissable"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[strctModalFooter]"], true, never>;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Click-to-open menu:
|
|
431
|
+
* <strct-dropdown align="end">
|
|
432
|
+
* <button strct-button strctDropdownTrigger>Actions</button>
|
|
433
|
+
* <strct-dropdown-item>Rename</strct-dropdown-item>
|
|
434
|
+
* <strct-dropdown-item danger>Delete</strct-dropdown-item>
|
|
435
|
+
* </strct-dropdown>
|
|
436
|
+
*/
|
|
437
|
+
declare class StrctDropdown {
|
|
438
|
+
private readonly host;
|
|
439
|
+
readonly align: _angular_core.InputSignal<"end" | "start">;
|
|
440
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
441
|
+
toggle(): void;
|
|
442
|
+
close(): void;
|
|
443
|
+
protected onDocClick(event: MouseEvent): void;
|
|
444
|
+
protected onEscape(): void;
|
|
445
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdown, never>;
|
|
446
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdown, "strct-dropdown", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["[strctDropdownTrigger]", "*"], true, never>;
|
|
447
|
+
}
|
|
448
|
+
/** A selectable row inside a `<strct-dropdown>`. */
|
|
449
|
+
declare class StrctDropdownItem {
|
|
450
|
+
readonly danger: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
451
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
452
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownItem, never>;
|
|
453
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
454
|
+
}
|
|
455
|
+
/** Thin separator between groups of menu items. */
|
|
456
|
+
declare class StrctDropdownDivider {
|
|
457
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownDivider, never>;
|
|
458
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownDivider, "strct-dropdown-divider", never, {}, {}, never, never, true, never>;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Right-click (context) menu. Wraps a trigger area and shows a menu at the
|
|
463
|
+
* cursor. Reuse `strct-dropdown-item` for the entries:
|
|
464
|
+
* <strct-context-menu>
|
|
465
|
+
* <div>Right-click here</div>
|
|
466
|
+
* <ng-container strctContextMenuItems>
|
|
467
|
+
* <strct-dropdown-item>Open</strct-dropdown-item>
|
|
468
|
+
* <strct-dropdown-item danger>Delete</strct-dropdown-item>
|
|
469
|
+
* </ng-container>
|
|
470
|
+
* </strct-context-menu>
|
|
471
|
+
*/
|
|
472
|
+
declare class StrctContextMenu {
|
|
473
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
474
|
+
readonly x: _angular_core.WritableSignal<number>;
|
|
475
|
+
readonly y: _angular_core.WritableSignal<number>;
|
|
476
|
+
/** Approximate menu box used to keep it inside the viewport. */
|
|
477
|
+
private static readonly MENU_W;
|
|
478
|
+
private static readonly MENU_H;
|
|
479
|
+
onContextMenu(event: MouseEvent): void;
|
|
480
|
+
close(): void;
|
|
481
|
+
protected onDocClick(): void;
|
|
482
|
+
protected onEscape(): void;
|
|
483
|
+
protected onResize(): void;
|
|
484
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctContextMenu, never>;
|
|
485
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctContextMenu, "strct-context-menu", never, {}, {}, never, ["*", "[strctContextMenuItems]"], true, never>;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* A nested fly-out inside a `strct-context-menu` or `strct-dropdown`. Reuse
|
|
490
|
+
* `strct-dropdown-item` for the nested entries.
|
|
491
|
+
* <strct-submenu label="Power">
|
|
492
|
+
* <strct-dropdown-item>Power on</strct-dropdown-item>
|
|
493
|
+
* <strct-dropdown-item>Power off</strct-dropdown-item>
|
|
494
|
+
* </strct-submenu>
|
|
495
|
+
*/
|
|
496
|
+
declare class StrctSubmenu {
|
|
497
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
498
|
+
/** Optional leading icon; when omitted the icon column is still reserved so
|
|
499
|
+
* the label stays aligned with sibling items that do have icons. */
|
|
500
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
501
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
502
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSubmenu, never>;
|
|
503
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSubmenu, "strct-submenu", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["[strctSubmenuLabel]", "*"], true, never>;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/** A single wizard step. `label` names it in the step header. */
|
|
507
|
+
declare class StrctStep {
|
|
508
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
509
|
+
private readonly _active;
|
|
510
|
+
readonly active: _angular_core.Signal<boolean>;
|
|
511
|
+
/** @internal */
|
|
512
|
+
setActive(value: boolean): void;
|
|
513
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctStep, never>;
|
|
514
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctStep, "strct-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
515
|
+
}
|
|
516
|
+
/** Multi-step flow with a numbered header and Back / Next / Finish controls. */
|
|
517
|
+
declare class StrctWizard {
|
|
518
|
+
readonly steps: _angular_core.Signal<readonly StrctStep[]>;
|
|
519
|
+
readonly current: _angular_core.WritableSignal<number>;
|
|
520
|
+
readonly finished: _angular_core.OutputEmitterRef<void>;
|
|
521
|
+
protected readonly isLast: _angular_core.Signal<boolean>;
|
|
522
|
+
constructor();
|
|
523
|
+
next(): void;
|
|
524
|
+
back(): void;
|
|
525
|
+
finish(): void;
|
|
526
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWizard, never>;
|
|
527
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWizard, "strct-wizard", never, {}, { "finished": "finished"; }, ["steps"], ["*"], true, never>;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Separator rule. Horizontal by default; pass `vertical` for an inline rule.
|
|
532
|
+
* Projected content becomes a centered label on a horizontal divider.
|
|
533
|
+
* <strct-divider>OR</strct-divider>
|
|
534
|
+
* <strct-divider vertical />
|
|
535
|
+
*/
|
|
536
|
+
declare class StrctDivider {
|
|
537
|
+
readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
538
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDivider, never>;
|
|
539
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDivider, "strct-divider", never, { "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/** Breadcrumb trail container. Wraps `<strct-breadcrumb-item>` children. */
|
|
543
|
+
declare class StrctBreadcrumb {
|
|
544
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctBreadcrumb, never>;
|
|
545
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctBreadcrumb, "strct-breadcrumb", never, {}, {}, never, ["*"], true, never>;
|
|
546
|
+
}
|
|
547
|
+
/** One crumb. Mark the final one `current`. */
|
|
548
|
+
declare class StrctBreadcrumbItem {
|
|
549
|
+
readonly current: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
550
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctBreadcrumbItem, never>;
|
|
551
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctBreadcrumbItem, "strct-breadcrumb-item", never, { "current": { "alias": "current"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
type PageToken = number | 'dots';
|
|
555
|
+
/**
|
|
556
|
+
* Page navigator with first/last + a windowed range and ellipsis gaps.
|
|
557
|
+
* <strct-pagination [total]="240" [pageSize]="20" [(page)]="page" />
|
|
558
|
+
*/
|
|
559
|
+
declare class StrctPagination {
|
|
560
|
+
readonly total: _angular_core.InputSignal<number>;
|
|
561
|
+
readonly pageSize: _angular_core.InputSignal<number>;
|
|
562
|
+
readonly page: _angular_core.ModelSignal<number>;
|
|
563
|
+
readonly pageCount: _angular_core.Signal<number>;
|
|
564
|
+
protected readonly pages: _angular_core.Signal<PageToken[]>;
|
|
565
|
+
go(target: number): void;
|
|
566
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctPagination, never>;
|
|
567
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctPagination, "strct-pagination", never, { "total": { "alias": "total"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; }, never, never, true, never>;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Applies the shared `.strct-control` look to a native input / textarea / select.
|
|
572
|
+
* <input strctInput placeholder="Name" />
|
|
573
|
+
* <select strctInput>…</select>
|
|
574
|
+
* The visual definition lives in `strct/styles/_forms.scss` (shipped via the
|
|
575
|
+
* theme entry point), so this directive only attaches the class.
|
|
576
|
+
*/
|
|
577
|
+
declare class StrctInput {
|
|
578
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctInput, never>;
|
|
579
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctInput, "input[strctInput], textarea[strctInput], select[strctInput]", never, {}, {}, never, never, true, never>;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/** Checkbox with custom box. Works with `[(ngModel)]` / reactive forms. */
|
|
583
|
+
declare class StrctCheckbox implements ControlValueAccessor {
|
|
584
|
+
readonly checked: _angular_core.WritableSignal<boolean>;
|
|
585
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
586
|
+
/** Static disable; forms' setDisabledState also drives the disabled state. */
|
|
587
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
588
|
+
private onChange;
|
|
589
|
+
protected onTouched: () => void;
|
|
590
|
+
constructor();
|
|
591
|
+
onToggle(event: Event): void;
|
|
592
|
+
writeValue(value: boolean): void;
|
|
593
|
+
registerOnChange(fn: (value: boolean) => void): void;
|
|
594
|
+
registerOnTouched(fn: () => void): void;
|
|
595
|
+
setDisabledState(isDisabled: boolean): void;
|
|
596
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCheckbox, never>;
|
|
597
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCheckbox, "strct-checkbox", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/** On/off switch. Works with `[(ngModel)]` / reactive forms. */
|
|
601
|
+
declare class StrctToggle implements ControlValueAccessor {
|
|
602
|
+
readonly checked: _angular_core.WritableSignal<boolean>;
|
|
603
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
604
|
+
/** Static disable; forms' setDisabledState also drives the disabled state. */
|
|
605
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
606
|
+
private onChange;
|
|
607
|
+
protected onTouched: () => void;
|
|
608
|
+
constructor();
|
|
609
|
+
onToggle(event: Event): void;
|
|
610
|
+
writeValue(value: boolean): void;
|
|
611
|
+
registerOnChange(fn: (value: boolean) => void): void;
|
|
612
|
+
registerOnTouched(fn: () => void): void;
|
|
613
|
+
setDisabledState(isDisabled: boolean): void;
|
|
614
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctToggle, never>;
|
|
615
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctToggle, "strct-toggle", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Radio group (the form control). Wrap `<strct-radio>` items:
|
|
620
|
+
* <strct-radio-group [(ngModel)]="size">
|
|
621
|
+
* <strct-radio [value]="'sm'">Small</strct-radio>
|
|
622
|
+
* <strct-radio [value]="'lg'">Large</strct-radio>
|
|
623
|
+
* </strct-radio-group>
|
|
624
|
+
*/
|
|
625
|
+
declare class StrctRadioGroup implements ControlValueAccessor {
|
|
626
|
+
readonly name: string;
|
|
627
|
+
readonly value: _angular_core.WritableSignal<unknown>;
|
|
628
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
629
|
+
private onChange;
|
|
630
|
+
private onTouched;
|
|
631
|
+
select(value: unknown): void;
|
|
632
|
+
writeValue(value: unknown): void;
|
|
633
|
+
registerOnChange(fn: (value: unknown) => void): void;
|
|
634
|
+
registerOnTouched(fn: () => void): void;
|
|
635
|
+
setDisabledState(isDisabled: boolean): void;
|
|
636
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRadioGroup, never>;
|
|
637
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctRadioGroup, "strct-radio-group", never, {}, {}, never, ["*"], true, never>;
|
|
638
|
+
}
|
|
639
|
+
/** One option inside a `<strct-radio-group>`. */
|
|
640
|
+
declare class StrctRadio {
|
|
641
|
+
readonly value: _angular_core.InputSignal<unknown>;
|
|
642
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
643
|
+
protected readonly group: StrctRadioGroup;
|
|
644
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRadio, never>;
|
|
645
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctRadio, "strct-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Slider built on a native range input — fully accessible, CVA-compatible.
|
|
650
|
+
* <strct-range [min]="0" [max]="100" [(ngModel)]="volume" showValue />
|
|
651
|
+
*/
|
|
652
|
+
declare class StrctRange implements ControlValueAccessor {
|
|
653
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
654
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
655
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
656
|
+
readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
657
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
658
|
+
readonly value: _angular_core.WritableSignal<number>;
|
|
659
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
660
|
+
protected readonly fillPercent: _angular_core.Signal<number>;
|
|
661
|
+
private onChange;
|
|
662
|
+
protected onTouched: () => void;
|
|
663
|
+
constructor();
|
|
664
|
+
onInput(event: Event): void;
|
|
665
|
+
writeValue(value: number): void;
|
|
666
|
+
registerOnChange(fn: (value: number) => void): void;
|
|
667
|
+
registerOnTouched(fn: () => void): void;
|
|
668
|
+
setDisabledState(isDisabled: boolean): void;
|
|
669
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRange, never>;
|
|
670
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctRange, "strct-range", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Password input with a reveal toggle and an optional strength meter. CVA-compatible.
|
|
675
|
+
* <strct-password [(ngModel)]="pw" meter />
|
|
676
|
+
*/
|
|
677
|
+
declare class StrctPassword implements ControlValueAccessor {
|
|
678
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
679
|
+
readonly meter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
680
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
681
|
+
readonly value: _angular_core.WritableSignal<string>;
|
|
682
|
+
readonly revealed: _angular_core.WritableSignal<boolean>;
|
|
683
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
684
|
+
protected readonly score: _angular_core.Signal<number>;
|
|
685
|
+
protected readonly level: _angular_core.Signal<{
|
|
686
|
+
label: string;
|
|
687
|
+
color: string;
|
|
688
|
+
}>;
|
|
689
|
+
private onChange;
|
|
690
|
+
protected onTouched: () => void;
|
|
691
|
+
onInput(event: Event): void;
|
|
692
|
+
writeValue(value: string): void;
|
|
693
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
694
|
+
registerOnTouched(fn: () => void): void;
|
|
695
|
+
setDisabledState(isDisabled: boolean): void;
|
|
696
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctPassword, never>;
|
|
697
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctPassword, "strct-password", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "meter": { "alias": "meter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* Drag-and-drop file picker. CVA value is a `File[]`.
|
|
702
|
+
* <strct-file [(ngModel)]="files" multiple accept="image/*" />
|
|
703
|
+
*/
|
|
704
|
+
declare class StrctFile implements ControlValueAccessor {
|
|
705
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
706
|
+
readonly accept: _angular_core.InputSignal<string>;
|
|
707
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
708
|
+
readonly files: _angular_core.WritableSignal<File[]>;
|
|
709
|
+
readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
710
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
711
|
+
private onChange;
|
|
712
|
+
protected onTouched: () => void;
|
|
713
|
+
onSelect(event: Event): void;
|
|
714
|
+
onDragOver(event: DragEvent): void;
|
|
715
|
+
onDrop(event: DragEvent): void;
|
|
716
|
+
remove(file: File): void;
|
|
717
|
+
protected humanSize(bytes: number): string;
|
|
718
|
+
private setFiles;
|
|
719
|
+
writeValue(value: File[]): void;
|
|
720
|
+
registerOnChange(fn: (value: File[]) => void): void;
|
|
721
|
+
registerOnTouched(fn: () => void): void;
|
|
722
|
+
setDisabledState(isDisabled: boolean): void;
|
|
723
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctFile, never>;
|
|
724
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctFile, "strct-file", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/** Star rating input. CVA value is the selected count (0–max). */
|
|
728
|
+
declare class StrctRating implements ControlValueAccessor {
|
|
729
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
730
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
731
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
732
|
+
readonly value: _angular_core.WritableSignal<number>;
|
|
733
|
+
readonly hover: _angular_core.WritableSignal<number>;
|
|
734
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
735
|
+
protected stars(): number[];
|
|
736
|
+
private onChange;
|
|
737
|
+
private onTouched;
|
|
738
|
+
pick(star: number): void;
|
|
739
|
+
writeValue(value: number): void;
|
|
740
|
+
registerOnChange(fn: (value: number) => void): void;
|
|
741
|
+
registerOnTouched(fn: () => void): void;
|
|
742
|
+
setDisabledState(isDisabled: boolean): void;
|
|
743
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRating, never>;
|
|
744
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctRating, "strct-rating", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* Tag input — type a word and press Enter to add a chip; Backspace on an empty
|
|
749
|
+
* field removes the last. CVA value is `string[]`.
|
|
750
|
+
* <strct-chips [(ngModel)]="labels" placeholder="Add a tag…" />
|
|
751
|
+
*/
|
|
752
|
+
declare class StrctChips implements ControlValueAccessor {
|
|
753
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
754
|
+
readonly allowDuplicates: _angular_core.InputSignal<boolean>;
|
|
755
|
+
readonly value: _angular_core.WritableSignal<string[]>;
|
|
756
|
+
readonly draft: _angular_core.WritableSignal<string>;
|
|
757
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
758
|
+
private onChange;
|
|
759
|
+
protected onTouched: () => void;
|
|
760
|
+
onKeydown(event: KeyboardEvent): void;
|
|
761
|
+
protected commitDraft(): void;
|
|
762
|
+
remove(chip: string): void;
|
|
763
|
+
private emit;
|
|
764
|
+
writeValue(value: string[]): void;
|
|
765
|
+
registerOnChange(fn: (value: string[]) => void): void;
|
|
766
|
+
registerOnTouched(fn: () => void): void;
|
|
767
|
+
setDisabledState(isDisabled: boolean): void;
|
|
768
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctChips, never>;
|
|
769
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChips, "strct-chips", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/**
|
|
773
|
+
* One-time-password input — a row of single-character boxes with auto-advance,
|
|
774
|
+
* backspace and paste. CVA value is the concatenated string.
|
|
775
|
+
* <strct-input-otp [length]="6" [(ngModel)]="code" />
|
|
776
|
+
*/
|
|
777
|
+
declare class StrctInputOtp implements ControlValueAccessor {
|
|
778
|
+
private readonly host;
|
|
779
|
+
readonly length: _angular_core.InputSignal<number>;
|
|
780
|
+
readonly masked: _angular_core.InputSignal<boolean>;
|
|
781
|
+
readonly slots: _angular_core.WritableSignal<string[]>;
|
|
782
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
783
|
+
protected readonly indices: _angular_core.Signal<number[]>;
|
|
784
|
+
private onChange;
|
|
785
|
+
private onTouched;
|
|
786
|
+
onInput(i: number, event: Event): void;
|
|
787
|
+
onKeydown(i: number, event: KeyboardEvent): void;
|
|
788
|
+
onPaste(event: ClipboardEvent): void;
|
|
789
|
+
private setSlot;
|
|
790
|
+
private focusBox;
|
|
791
|
+
private emit;
|
|
792
|
+
writeValue(value: string): void;
|
|
793
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
794
|
+
registerOnTouched(fn: () => void): void;
|
|
795
|
+
setDisabledState(isDisabled: boolean): void;
|
|
796
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctInputOtp, never>;
|
|
797
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctInputOtp, "strct-input-otp", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
type StrctKnobStatus = 'accent' | 'success' | 'warning' | 'danger';
|
|
801
|
+
/**
|
|
802
|
+
* Rotary dial input. Drag (up/down), arrow keys, Home/End or the wheel change
|
|
803
|
+
* the value. CVA-compatible.
|
|
804
|
+
* <strct-knob [min]="0" [max]="100" [(ngModel)]="fanSpeed" label="Fan" />
|
|
805
|
+
*/
|
|
806
|
+
declare class StrctKnob implements ControlValueAccessor {
|
|
807
|
+
private readonly elementRef;
|
|
808
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
809
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
810
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
811
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
812
|
+
readonly thickness: _angular_core.InputSignal<number>;
|
|
813
|
+
readonly status: _angular_core.InputSignal<StrctKnobStatus>;
|
|
814
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
815
|
+
readonly value: _angular_core.WritableSignal<number>;
|
|
816
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
817
|
+
protected readonly half: _angular_core.Signal<number>;
|
|
818
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
819
|
+
protected readonly color: _angular_core.Signal<string>;
|
|
820
|
+
private readonly fraction;
|
|
821
|
+
private readonly circumference;
|
|
822
|
+
protected readonly trackDash: _angular_core.Signal<string>;
|
|
823
|
+
protected readonly valueDash: _angular_core.Signal<string>;
|
|
824
|
+
/** Pointer rotation: -135° (start, lower-left) to +135° (end, lower-right). */
|
|
825
|
+
protected readonly pointerAngle: _angular_core.Signal<number>;
|
|
826
|
+
private onChange;
|
|
827
|
+
private onTouched;
|
|
828
|
+
private dragStartY;
|
|
829
|
+
private dragStartValue;
|
|
830
|
+
private readonly onMove;
|
|
831
|
+
private readonly onUp;
|
|
832
|
+
protected onPointerDown(event: PointerEvent): void;
|
|
833
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
834
|
+
protected onWheel(event: WheelEvent): void;
|
|
835
|
+
private setValue;
|
|
836
|
+
writeValue(value: number): void;
|
|
837
|
+
registerOnChange(fn: (value: number) => void): void;
|
|
838
|
+
registerOnTouched(fn: () => void): void;
|
|
839
|
+
setDisabledState(isDisabled: boolean): void;
|
|
840
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctKnob, never>;
|
|
841
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctKnob, "strct-knob", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
/** Ready-made masks for common datacenter / form fields. */
|
|
845
|
+
declare const STRCT_MASKS: {
|
|
846
|
+
readonly phoneTr: "(999) 999 99 99";
|
|
847
|
+
readonly nationalIdTr: "99999999999";
|
|
848
|
+
readonly creditCard: "9999 9999 9999 9999";
|
|
849
|
+
/** MAC address — 6 hex octets, e.g. 00:1B:44:11:3A:B7 */
|
|
850
|
+
readonly mac: "HH:HH:HH:HH:HH:HH";
|
|
851
|
+
/** Fibre-channel WWPN — 8 hex octets, e.g. 20:00:00:25:B5:1A:00:0F */
|
|
852
|
+
readonly wwpn: "HH:HH:HH:HH:HH:HH:HH:HH";
|
|
853
|
+
};
|
|
854
|
+
/**
|
|
855
|
+
* Masked text input. Mask tokens: `9` = digit, `A` = letter, `H` = hex digit,
|
|
856
|
+
* `*` = alphanumeric; every other character is a literal. CVA value is the
|
|
857
|
+
* formatted string.
|
|
858
|
+
* <strct-input-mask mask="(999) 999 99 99" [(ngModel)]="phone" />
|
|
859
|
+
* <strct-input-mask mask="HH:HH:HH:HH:HH:HH" uppercase [(ngModel)]="mac" />
|
|
860
|
+
*/
|
|
861
|
+
declare class StrctInputMask implements ControlValueAccessor {
|
|
862
|
+
readonly mask: _angular_core.InputSignal<string>;
|
|
863
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
864
|
+
/** Upper-case entered letters (handy for hex MAC / WWPN). */
|
|
865
|
+
readonly uppercase: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
866
|
+
readonly display: _angular_core.WritableSignal<string>;
|
|
867
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
868
|
+
private onChange;
|
|
869
|
+
protected onTouched: () => void;
|
|
870
|
+
onInput(event: Event): void;
|
|
871
|
+
private isToken;
|
|
872
|
+
private matches;
|
|
873
|
+
private format;
|
|
874
|
+
writeValue(value: string): void;
|
|
875
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
876
|
+
registerOnTouched(fn: () => void): void;
|
|
877
|
+
setDisabledState(isDisabled: boolean): void;
|
|
878
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctInputMask, never>;
|
|
879
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctInputMask, "strct-input-mask", never, { "mask": { "alias": "mask"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "uppercase": { "alias": "uppercase"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
interface StrctOption {
|
|
883
|
+
value: unknown;
|
|
884
|
+
label: string;
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Filterable single-select (autocomplete). CVA-compatible, fully keyboard
|
|
888
|
+
* driven (↑/↓ to move, Enter to pick, Esc to close).
|
|
889
|
+
* <strct-combobox [options]="opts" [(ngModel)]="selected" placeholder="Pick…" />
|
|
890
|
+
*/
|
|
891
|
+
declare class StrctCombobox implements ControlValueAccessor {
|
|
892
|
+
private readonly host;
|
|
893
|
+
protected readonly listId: string;
|
|
894
|
+
readonly options: _angular_core.InputSignal<StrctOption[]>;
|
|
895
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
896
|
+
readonly query: _angular_core.WritableSignal<string>;
|
|
897
|
+
readonly value: _angular_core.WritableSignal<unknown>;
|
|
898
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
899
|
+
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
900
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
901
|
+
/** True while the user is typing a filter that hasn't been committed yet. */
|
|
902
|
+
private readonly dirty;
|
|
903
|
+
protected readonly filtered: _angular_core.Signal<StrctOption[]>;
|
|
904
|
+
private onChange;
|
|
905
|
+
protected onTouched: () => void;
|
|
906
|
+
openList(): void;
|
|
907
|
+
onType(event: Event): void;
|
|
908
|
+
onKeydown(event: KeyboardEvent): void;
|
|
909
|
+
private move;
|
|
910
|
+
select(opt: StrctOption, event: Event): void;
|
|
911
|
+
private commit;
|
|
912
|
+
protected onDocClick(event: MouseEvent): void;
|
|
913
|
+
private close;
|
|
914
|
+
private indexOfValue;
|
|
915
|
+
private syncQueryToValue;
|
|
916
|
+
writeValue(value: unknown): void;
|
|
917
|
+
registerOnChange(fn: (value: unknown) => void): void;
|
|
918
|
+
registerOnTouched(fn: () => void): void;
|
|
919
|
+
setDisabledState(isDisabled: boolean): void;
|
|
920
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCombobox, never>;
|
|
921
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCombobox, "strct-combobox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
interface DayCell {
|
|
925
|
+
day: number;
|
|
926
|
+
iso: string;
|
|
927
|
+
inMonth: boolean;
|
|
928
|
+
}
|
|
929
|
+
/**
|
|
930
|
+
* Calendar date picker. Value is an ISO `yyyy-mm-dd` string. CVA-compatible.
|
|
931
|
+
* <strct-datepicker [(ngModel)]="date" />
|
|
932
|
+
*/
|
|
933
|
+
declare class StrctDatepicker implements ControlValueAccessor {
|
|
934
|
+
private readonly host;
|
|
935
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
936
|
+
protected readonly dow: string[];
|
|
937
|
+
readonly value: _angular_core.WritableSignal<string>;
|
|
938
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
939
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
940
|
+
/** Keyboard cursor within the open calendar. */
|
|
941
|
+
readonly focusedIso: _angular_core.WritableSignal<string>;
|
|
942
|
+
private readonly view;
|
|
943
|
+
protected get today(): string;
|
|
944
|
+
protected readonly monthLabel: _angular_core.Signal<string>;
|
|
945
|
+
protected readonly displayLabel: _angular_core.Signal<string>;
|
|
946
|
+
protected readonly cells: _angular_core.Signal<DayCell[]>;
|
|
947
|
+
private onChange;
|
|
948
|
+
private onTouched;
|
|
949
|
+
toggle(): void;
|
|
950
|
+
shiftMonth(delta: number): void;
|
|
951
|
+
pick(iso: string): void;
|
|
952
|
+
onKeydown(event: KeyboardEvent): void;
|
|
953
|
+
private syncFocus;
|
|
954
|
+
private shiftFocus;
|
|
955
|
+
protected onDocClick(event: MouseEvent): void;
|
|
956
|
+
protected onEscape(): void;
|
|
957
|
+
private startOfMonth;
|
|
958
|
+
writeValue(value: string): void;
|
|
959
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
960
|
+
registerOnTouched(fn: () => void): void;
|
|
961
|
+
setDisabledState(isDisabled: boolean): void;
|
|
962
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatepicker, never>;
|
|
963
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDatepicker, "strct-datepicker", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
/**
|
|
967
|
+
* Swatch-based color picker with a hex field. CVA value is a `#rrggbb` string.
|
|
968
|
+
* <strct-color-picker [(ngModel)]="color" />
|
|
969
|
+
*/
|
|
970
|
+
declare class StrctColorPicker implements ControlValueAccessor {
|
|
971
|
+
private readonly host;
|
|
972
|
+
readonly swatches: _angular_core.InputSignal<string[]>;
|
|
973
|
+
readonly value: _angular_core.WritableSignal<string>;
|
|
974
|
+
readonly draft: _angular_core.WritableSignal<string>;
|
|
975
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
976
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
977
|
+
private onChange;
|
|
978
|
+
private onTouched;
|
|
979
|
+
toggle(): void;
|
|
980
|
+
protected eq(color: string): boolean;
|
|
981
|
+
pick(color: string): void;
|
|
982
|
+
onHex(event: Event): void;
|
|
983
|
+
private commit;
|
|
984
|
+
protected onDocClick(event: MouseEvent): void;
|
|
985
|
+
protected onEscape(): void;
|
|
986
|
+
writeValue(value: string): void;
|
|
987
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
988
|
+
registerOnTouched(fn: () => void): void;
|
|
989
|
+
setDisabledState(isDisabled: boolean): void;
|
|
990
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctColorPicker, never>;
|
|
991
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctColorPicker, "strct-color-picker", never, { "swatches": { "alias": "swatches"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
interface StrctCascadeOption {
|
|
995
|
+
label: string;
|
|
996
|
+
value?: unknown;
|
|
997
|
+
children?: StrctCascadeOption[];
|
|
998
|
+
}
|
|
999
|
+
/** DI token the nodes use to talk back to the host control (avoids a circular type). */
|
|
1000
|
+
declare abstract class StrctCascadeHost {
|
|
1001
|
+
abstract pick(value: unknown): void;
|
|
1002
|
+
abstract isSelected(value: unknown): boolean;
|
|
1003
|
+
}
|
|
1004
|
+
/**
|
|
1005
|
+
* One row in the cascade. Leaf rows select on click; group rows reveal a
|
|
1006
|
+
* fly-out of their children on hover. Recurses to any depth.
|
|
1007
|
+
*/
|
|
1008
|
+
declare class StrctCascadeNode {
|
|
1009
|
+
private readonly host;
|
|
1010
|
+
readonly option: _angular_core.InputSignal<StrctCascadeOption>;
|
|
1011
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1012
|
+
protected readonly hasChildren: _angular_core.Signal<boolean>;
|
|
1013
|
+
protected readonly isLeafSelected: _angular_core.Signal<boolean>;
|
|
1014
|
+
protected onClick(event: Event): void;
|
|
1015
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCascadeNode, never>;
|
|
1016
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCascadeNode, "strct-cascade-node", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Hierarchical single-select — pick a leaf from nested groups (e.g. a port
|
|
1020
|
+
* group under a virtual switch). CVA-compatible.
|
|
1021
|
+
* <strct-cascade-select [options]="switches" [(ngModel)]="portGroup" />
|
|
1022
|
+
*/
|
|
1023
|
+
declare class StrctCascadeSelect extends StrctCascadeHost implements ControlValueAccessor {
|
|
1024
|
+
private readonly elementRef;
|
|
1025
|
+
readonly options: _angular_core.InputSignal<StrctCascadeOption[]>;
|
|
1026
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1027
|
+
readonly value: _angular_core.WritableSignal<unknown>;
|
|
1028
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1029
|
+
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
1030
|
+
protected readonly selectedLabel: _angular_core.Signal<string>;
|
|
1031
|
+
private onChange;
|
|
1032
|
+
private onTouched;
|
|
1033
|
+
toggle(): void;
|
|
1034
|
+
pick(value: unknown): void;
|
|
1035
|
+
isSelected(value: unknown): boolean;
|
|
1036
|
+
private findLabel;
|
|
1037
|
+
protected onDocClick(event: MouseEvent): void;
|
|
1038
|
+
protected onEscape(): void;
|
|
1039
|
+
writeValue(value: unknown): void;
|
|
1040
|
+
registerOnChange(fn: (value: unknown) => void): void;
|
|
1041
|
+
registerOnTouched(fn: () => void): void;
|
|
1042
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1043
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCascadeSelect, never>;
|
|
1044
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCascadeSelect, "strct-cascade-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
interface StrctColumn {
|
|
1048
|
+
key: string;
|
|
1049
|
+
label: string;
|
|
1050
|
+
align?: 'start' | 'center' | 'end';
|
|
1051
|
+
width?: string;
|
|
1052
|
+
}
|
|
1053
|
+
type StrctRow = Record<string, unknown>;
|
|
1054
|
+
/**
|
|
1055
|
+
* Declarative data table.
|
|
1056
|
+
* <strct-table [columns]="cols" [rows]="data" hover />
|
|
1057
|
+
*/
|
|
1058
|
+
declare class StrctTable {
|
|
1059
|
+
readonly columns: _angular_core.InputSignal<StrctColumn[]>;
|
|
1060
|
+
readonly rows: _angular_core.InputSignal<StrctRow[]>;
|
|
1061
|
+
readonly striped: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1062
|
+
readonly hover: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1063
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
1064
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTable, never>;
|
|
1065
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTable, "strct-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
interface StrctDatagridColumn {
|
|
1069
|
+
key: string;
|
|
1070
|
+
label: string;
|
|
1071
|
+
sortable?: boolean;
|
|
1072
|
+
align?: 'start' | 'center' | 'end';
|
|
1073
|
+
width?: string;
|
|
1074
|
+
}
|
|
1075
|
+
/**
|
|
1076
|
+
* Marks the expandable-row detail template. The row is the template's implicit
|
|
1077
|
+
* context: `<ng-template strctRowDetail let-row> … {{ row['name'] }} … </ng-template>`.
|
|
1078
|
+
*/
|
|
1079
|
+
declare class StrctRowDetailDef {
|
|
1080
|
+
readonly template: TemplateRef<any>;
|
|
1081
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRowDetailDef, never>;
|
|
1082
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctRowDetailDef, "[strctRowDetail]", never, {}, {}, never, never, true, never>;
|
|
1083
|
+
}
|
|
1084
|
+
/** Marks the persistent action-bar (toolbar) content shown above the grid. */
|
|
1085
|
+
declare class StrctDatagridActionBar {
|
|
1086
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagridActionBar, never>;
|
|
1087
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctDatagridActionBar, "[strctDatagridActionBar]", never, {}, {}, never, never, true, never>;
|
|
1088
|
+
}
|
|
1089
|
+
/**
|
|
1090
|
+
* Interactive data table: sortable columns, row selection, expandable detail
|
|
1091
|
+
* rows, a batch action bar and built-in paging.
|
|
1092
|
+
* <strct-datagrid [columns]="cols" [rows]="data" selectable expandable [pageSize]="10">
|
|
1093
|
+
* <button strct-button strctDatagridActions size="sm">Migrate</button>
|
|
1094
|
+
* <ng-template strctRowDetail let-row> … </ng-template>
|
|
1095
|
+
* </strct-datagrid>
|
|
1096
|
+
*/
|
|
1097
|
+
declare class StrctDatagrid {
|
|
1098
|
+
readonly columns: _angular_core.InputSignal<StrctDatagridColumn[]>;
|
|
1099
|
+
readonly rows: _angular_core.InputSignal<StrctRow[]>;
|
|
1100
|
+
readonly pageSize: _angular_core.InputSignal<number>;
|
|
1101
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1102
|
+
/** Expand a row in place to reveal its detail template below it. */
|
|
1103
|
+
readonly expandable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1104
|
+
/** Collapse the grid to a single column and open a side detail pane for the
|
|
1105
|
+
* clicked row (distinct from {@link expandable}). */
|
|
1106
|
+
readonly detailPane: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1107
|
+
readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1108
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
1109
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<StrctRow[]>;
|
|
1110
|
+
protected readonly detailDef: _angular_core.Signal<StrctRowDetailDef | undefined>;
|
|
1111
|
+
protected readonly actionBarDef: _angular_core.Signal<StrctDatagridActionBar | undefined>;
|
|
1112
|
+
readonly page: _angular_core.WritableSignal<number>;
|
|
1113
|
+
private readonly sort;
|
|
1114
|
+
private readonly selected;
|
|
1115
|
+
private readonly expandedRows;
|
|
1116
|
+
protected readonly activeRow: _angular_core.WritableSignal<StrctRow | null>;
|
|
1117
|
+
protected readonly canExpand: _angular_core.Signal<boolean>;
|
|
1118
|
+
protected readonly canDetail: _angular_core.Signal<boolean>;
|
|
1119
|
+
protected readonly paneOpen: _angular_core.Signal<boolean>;
|
|
1120
|
+
/** Only the first column is shown while the detail pane is open. */
|
|
1121
|
+
protected readonly visibleColumns: _angular_core.Signal<StrctDatagridColumn[]>;
|
|
1122
|
+
protected readonly sorted: _angular_core.Signal<StrctRow[]>;
|
|
1123
|
+
protected readonly paged: _angular_core.Signal<StrctRow[]>;
|
|
1124
|
+
protected readonly selectedCount: _angular_core.Signal<number>;
|
|
1125
|
+
protected readonly allPageSelected: _angular_core.Signal<boolean>;
|
|
1126
|
+
protected readonly somePageSelected: _angular_core.Signal<boolean>;
|
|
1127
|
+
constructor();
|
|
1128
|
+
protected colspan(): number;
|
|
1129
|
+
/** Toggle the detail pane for a row (triggered by its » button, not the row,
|
|
1130
|
+
* so row cells remain selectable for copy). */
|
|
1131
|
+
openDetail(row: StrctRow): void;
|
|
1132
|
+
closePane(): void;
|
|
1133
|
+
sortBy(key: string): void;
|
|
1134
|
+
protected sortIcon(key: string): string;
|
|
1135
|
+
protected ariaSort(key: string): 'ascending' | 'descending' | 'none';
|
|
1136
|
+
protected onHeaderSpace(event: Event, key: string): void;
|
|
1137
|
+
protected isSelected(row: StrctRow): boolean;
|
|
1138
|
+
protected isExpanded(row: StrctRow): boolean;
|
|
1139
|
+
toggleExpand(row: StrctRow): void;
|
|
1140
|
+
toggleRow(row: StrctRow): void;
|
|
1141
|
+
toggleAll(): void;
|
|
1142
|
+
clearSelection(): void;
|
|
1143
|
+
private commitSelection;
|
|
1144
|
+
private compare;
|
|
1145
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
|
|
1146
|
+
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; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["detailDef", "actionBarDef"], ["[strctDatagridActionBar]", "[strctDatagridActions]"], true, never>;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
type StrctTimelineState = 'default' | 'current' | 'success' | 'warning' | 'danger';
|
|
1150
|
+
/** Vertical timeline container. Wraps `<strct-timeline-item>` children. */
|
|
1151
|
+
declare class StrctTimeline {
|
|
1152
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTimeline, never>;
|
|
1153
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTimeline, "strct-timeline", never, {}, {}, never, ["*"], true, never>;
|
|
1154
|
+
}
|
|
1155
|
+
/** A timeline entry: a node on the rail plus a title and projected body. */
|
|
1156
|
+
declare class StrctTimelineItem {
|
|
1157
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
1158
|
+
readonly state: _angular_core.InputSignal<StrctTimelineState>;
|
|
1159
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTimelineItem, never>;
|
|
1160
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTimelineItem, "strct-timeline-item", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
/** Key/value definition list. Wraps `<strct-stack-item>` rows. */
|
|
1164
|
+
declare class StrctStack {
|
|
1165
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctStack, never>;
|
|
1166
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctStack, "strct-stack", never, {}, {}, never, ["*"], true, never>;
|
|
1167
|
+
}
|
|
1168
|
+
/** A label + value row. The value is projected content. */
|
|
1169
|
+
declare class StrctStackItem {
|
|
1170
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1171
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctStackItem, never>;
|
|
1172
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctStackItem, "strct-stack-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
type StrctChartStatus = 'accent' | 'success' | 'warning' | 'danger';
|
|
1176
|
+
/**
|
|
1177
|
+
* Tiny inline trend line. `<strct-sparkline [data]="[3,5,4,8,6,9]" area />`.
|
|
1178
|
+
*/
|
|
1179
|
+
declare class StrctSparkline {
|
|
1180
|
+
readonly data: _angular_core.InputSignal<number[]>;
|
|
1181
|
+
readonly status: _angular_core.InputSignal<StrctChartStatus>;
|
|
1182
|
+
readonly area: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1183
|
+
readonly width: _angular_core.InputSignal<number>;
|
|
1184
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
1185
|
+
protected readonly color: _angular_core.Signal<string>;
|
|
1186
|
+
private readonly points;
|
|
1187
|
+
protected readonly linePoints: _angular_core.Signal<string>;
|
|
1188
|
+
protected readonly areaPoints: _angular_core.Signal<string>;
|
|
1189
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSparkline, never>;
|
|
1190
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSparkline, "strct-sparkline", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
type StrctChartType = 'line' | 'area' | 'bar';
|
|
1194
|
+
/**
|
|
1195
|
+
* Single-series chart (line / area / bar). Dependency-free SVG, token-coloured.
|
|
1196
|
+
* <strct-chart [data]="cpu" type="area" [labels]="hours" status="warning" />
|
|
1197
|
+
*/
|
|
1198
|
+
declare class StrctChart {
|
|
1199
|
+
readonly data: _angular_core.InputSignal<number[]>;
|
|
1200
|
+
readonly type: _angular_core.InputSignal<StrctChartType>;
|
|
1201
|
+
readonly labels: _angular_core.InputSignal<string[]>;
|
|
1202
|
+
readonly status: _angular_core.InputSignal<StrctChartStatus>;
|
|
1203
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
1204
|
+
/** Override the top of the value axis (defaults to the data max + headroom). */
|
|
1205
|
+
readonly max: _angular_core.InputSignal<number | null>;
|
|
1206
|
+
protected readonly vbW = 320;
|
|
1207
|
+
protected readonly pad: {
|
|
1208
|
+
l: number;
|
|
1209
|
+
r: number;
|
|
1210
|
+
t: number;
|
|
1211
|
+
b: number;
|
|
1212
|
+
};
|
|
1213
|
+
protected readonly color: _angular_core.Signal<string>;
|
|
1214
|
+
private readonly maxValue;
|
|
1215
|
+
private chartH;
|
|
1216
|
+
protected readonly points: _angular_core.Signal<{
|
|
1217
|
+
x: number;
|
|
1218
|
+
y: number;
|
|
1219
|
+
}[]>;
|
|
1220
|
+
protected readonly linePoints: _angular_core.Signal<string>;
|
|
1221
|
+
protected readonly areaPoints: _angular_core.Signal<string>;
|
|
1222
|
+
protected readonly bars: _angular_core.Signal<{
|
|
1223
|
+
x: number;
|
|
1224
|
+
y: number;
|
|
1225
|
+
w: number;
|
|
1226
|
+
h: number;
|
|
1227
|
+
}[]>;
|
|
1228
|
+
protected readonly gridY: _angular_core.Signal<number[]>;
|
|
1229
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctChart, never>;
|
|
1230
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChart, "strct-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "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; }; }, {}, never, never, true, never>;
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
interface StrctDonutSegment {
|
|
1234
|
+
value: number;
|
|
1235
|
+
label?: string;
|
|
1236
|
+
color?: string;
|
|
1237
|
+
}
|
|
1238
|
+
/**
|
|
1239
|
+
* Donut / ring chart from weighted segments.
|
|
1240
|
+
* <strct-donut [segments]="[{value:6,label:'Running'},{value:2,label:'Off'}]"
|
|
1241
|
+
* centerValue="8" centerLabel="VMs" />
|
|
1242
|
+
*/
|
|
1243
|
+
declare class StrctDonut {
|
|
1244
|
+
readonly segments: _angular_core.InputSignal<StrctDonutSegment[]>;
|
|
1245
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
1246
|
+
readonly thickness: _angular_core.InputSignal<number>;
|
|
1247
|
+
readonly centerValue: _angular_core.InputSignal<string | number>;
|
|
1248
|
+
readonly centerLabel: _angular_core.InputSignal<string>;
|
|
1249
|
+
protected readonly half: _angular_core.Signal<number>;
|
|
1250
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
1251
|
+
protected readonly circumference: _angular_core.Signal<number>;
|
|
1252
|
+
protected readonly arcs: _angular_core.Signal<{
|
|
1253
|
+
color: string;
|
|
1254
|
+
len: number;
|
|
1255
|
+
offset: number;
|
|
1256
|
+
}[]>;
|
|
1257
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDonut, never>;
|
|
1258
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDonut, "strct-donut", never, { "segments": { "alias": "segments"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
/**
|
|
1262
|
+
* 270° radial gauge for a 0–100 value (CPU, memory, capacity …).
|
|
1263
|
+
* <strct-gauge [value]="72" status="warning" label="CPU" />
|
|
1264
|
+
*/
|
|
1265
|
+
declare class StrctGauge {
|
|
1266
|
+
readonly value: _angular_core.InputSignal<number>;
|
|
1267
|
+
readonly status: _angular_core.InputSignal<StrctChartStatus>;
|
|
1268
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1269
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
1270
|
+
readonly thickness: _angular_core.InputSignal<number>;
|
|
1271
|
+
protected readonly clamped: _angular_core.Signal<number>;
|
|
1272
|
+
protected readonly half: _angular_core.Signal<number>;
|
|
1273
|
+
protected readonly radius: _angular_core.Signal<number>;
|
|
1274
|
+
protected readonly color: _angular_core.Signal<string>;
|
|
1275
|
+
private readonly circumference;
|
|
1276
|
+
protected readonly trackDash: _angular_core.Signal<string>;
|
|
1277
|
+
protected readonly valueDash: _angular_core.Signal<string>;
|
|
1278
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctGauge, never>;
|
|
1279
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctGauge, "strct-gauge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
type StrctAlertType = 'info' | 'success' | 'warning' | 'danger';
|
|
1283
|
+
/** Inline contextual banner. `<strct-alert type="warning">…</strct-alert>`. */
|
|
1284
|
+
declare class StrctAlert {
|
|
1285
|
+
readonly type: _angular_core.InputSignal<StrctAlertType>;
|
|
1286
|
+
readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1287
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
1288
|
+
protected readonly icon: _angular_core.Signal<"info" | "success" | "warning" | "danger">;
|
|
1289
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAlert, never>;
|
|
1290
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAlert, "strct-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
type StrctTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
1294
|
+
/**
|
|
1295
|
+
* Lightweight hover/focus tooltip. Renders a fixed-positioned bubble so it is
|
|
1296
|
+
* never clipped by an ancestor's `overflow`.
|
|
1297
|
+
* <button strct-button strctTooltip="More info">?</button>
|
|
1298
|
+
*/
|
|
1299
|
+
declare class StrctTooltip {
|
|
1300
|
+
private readonly host;
|
|
1301
|
+
private readonly renderer;
|
|
1302
|
+
private readonly doc;
|
|
1303
|
+
private bubble;
|
|
1304
|
+
readonly strctTooltip: _angular_core.InputSignal<string>;
|
|
1305
|
+
readonly tooltipPosition: _angular_core.InputSignal<StrctTooltipPosition>;
|
|
1306
|
+
protected show(): void;
|
|
1307
|
+
protected hide(): void;
|
|
1308
|
+
private place;
|
|
1309
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTooltip, never>;
|
|
1310
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctTooltip, "[strctTooltip]", never, { "strctTooltip": { "alias": "strctTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
type StrctSignpostPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
1314
|
+
/**
|
|
1315
|
+
* A click-triggered popover with an arrow, for contextual help / detail.
|
|
1316
|
+
* <strct-signpost position="right">
|
|
1317
|
+
* <button strct-button size="sm" strctSignpostTrigger>?</button>
|
|
1318
|
+
* <h4>Title</h4>
|
|
1319
|
+
* <p>Any projected content…</p>
|
|
1320
|
+
* </strct-signpost>
|
|
1321
|
+
*/
|
|
1322
|
+
declare class StrctSignpost {
|
|
1323
|
+
private readonly host;
|
|
1324
|
+
readonly position: _angular_core.InputSignal<StrctSignpostPosition>;
|
|
1325
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1326
|
+
toggle(): void;
|
|
1327
|
+
close(): void;
|
|
1328
|
+
protected overlayPlacement(): StrctOverlayPlacement;
|
|
1329
|
+
protected onDocClick(event: MouseEvent): void;
|
|
1330
|
+
protected onEscape(): void;
|
|
1331
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSignpost, never>;
|
|
1332
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSignpost, "strct-signpost", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["[strctSignpostTrigger]", "*"], true, never>;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
type StrctToastType = 'info' | 'success' | 'warning' | 'danger';
|
|
1336
|
+
interface StrctToast {
|
|
1337
|
+
id: number;
|
|
1338
|
+
type: StrctToastType;
|
|
1339
|
+
message: string;
|
|
1340
|
+
/** Auto-dismiss after this many ms; 0 keeps it until dismissed. */
|
|
1341
|
+
duration: number;
|
|
1342
|
+
}
|
|
1343
|
+
interface StrctToastOptions {
|
|
1344
|
+
type?: StrctToastType;
|
|
1345
|
+
duration?: number;
|
|
1346
|
+
}
|
|
1347
|
+
/**
|
|
1348
|
+
* Queues transient notifications. Render `<strct-toast-outlet />` once near the
|
|
1349
|
+
* app root, then call from anywhere:
|
|
1350
|
+
* inject(StrctToastService).success('Saved');
|
|
1351
|
+
*/
|
|
1352
|
+
declare class StrctToastService {
|
|
1353
|
+
private counter;
|
|
1354
|
+
private readonly _toasts;
|
|
1355
|
+
readonly toasts: _angular_core.Signal<StrctToast[]>;
|
|
1356
|
+
show(message: string, options?: StrctToastOptions): number;
|
|
1357
|
+
info(message: string, duration?: number): number;
|
|
1358
|
+
success(message: string, duration?: number): number;
|
|
1359
|
+
warning(message: string, duration?: number): number;
|
|
1360
|
+
danger(message: string, duration?: number): number;
|
|
1361
|
+
dismiss(id: number): void;
|
|
1362
|
+
clear(): void;
|
|
1363
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctToastService, never>;
|
|
1364
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<StrctToastService>;
|
|
1365
|
+
}
|
|
1366
|
+
/** Renders the toast stack. Place once, typically just inside the app shell. */
|
|
1367
|
+
declare class StrctToastOutlet {
|
|
1368
|
+
protected readonly service: StrctToastService;
|
|
1369
|
+
protected icon(type: StrctToastType): string;
|
|
1370
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctToastOutlet, never>;
|
|
1371
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctToastOutlet, "strct-toast-outlet", never, {}, {}, never, never, true, never>;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctChart, StrctCheckbox, StrctChips, StrctColorPicker, StrctCombobox, StrctContextMenu, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDivider, StrctDonut, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctFile, StrctFooter, StrctGauge, StrctHeader, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKnob, StrctLogin, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRange, StrctRating, StrctRowDetailDef, StrctShell, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWizard, registerStrctIcon };
|
|
1375
|
+
export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctChartStatus, StrctChartType, StrctColumn, StrctDatagridColumn, StrctDonutSegment, StrctIconBadge, StrctKnobStatus, StrctModalSize, StrctMode, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressStatus, StrctRow, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctTagStatus, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition };
|