@truenas/ui-components 0.1.70 → 0.1.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy, ElementRef,
|
|
2
|
+
import { InjectionToken, OnDestroy, ElementRef, AfterViewInit, OnInit, TemplateRef, AfterContentInit, Provider, ChangeDetectorRef, Signal, PipeTransform, ViewContainerRef, AfterViewChecked, ComponentRef } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
4
4
|
import { ComponentHarness, BaseHarnessFilters, HarnessPredicate, HarnessLoader } from '@angular/cdk/testing';
|
|
5
5
|
import { SafeHtml, SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
|
|
@@ -14,6 +14,135 @@ import { Overlay } from '@angular/cdk/overlay';
|
|
|
14
14
|
import { DialogRef, DialogConfig } from '@angular/cdk/dialog';
|
|
15
15
|
import { ComponentType } from '@angular/cdk/portal';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Value shapes accepted as a test-id base.
|
|
19
|
+
*
|
|
20
|
+
* A consumer supplies the *semantic* part of a test id — a single token
|
|
21
|
+
* (`'save'`, `'username'`) or an ordered list of segments
|
|
22
|
+
* (`['username', option.value]`). The library owns the element-type prefix and
|
|
23
|
+
* the final string assembly; consumers never hand-craft the full id.
|
|
24
|
+
*/
|
|
25
|
+
type TnTestIdValue = string | number | (string | number | null | undefined)[] | null | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Normalize one segment to a kebab-case token: split camelCase, lower-case,
|
|
28
|
+
* collapse any run of non-alphanumeric characters to a single hyphen, and trim
|
|
29
|
+
* leading/trailing hyphens.
|
|
30
|
+
*
|
|
31
|
+
* Mirrors the normalization webui's legacy `ixTest` directive applied via
|
|
32
|
+
* lodash `kebabCase`, so migrated values stay stable (`sshPort` → `ssh-port`,
|
|
33
|
+
* `addr_trtype` → `addr-trtype`, `'My Label'` → `my-label`).
|
|
34
|
+
*/
|
|
35
|
+
declare function kebabTestSegment(part: string | number): string;
|
|
36
|
+
/**
|
|
37
|
+
* Scope a test-id base with one or more trailing suffix segments.
|
|
38
|
+
*
|
|
39
|
+
* Normalizes the base — a single token or an array of segments — into a flat
|
|
40
|
+
* segment array and appends the suffixes, producing a value that is itself a
|
|
41
|
+
* valid {@link TnTestIdValue}. This is the canonical "derive a per-child id from
|
|
42
|
+
* a parent base" operation, e.g. a dialog's close button (`[base, 'close']`) or
|
|
43
|
+
* a select's per-option id (`[base, option.label]`). Centralizing it keeps the
|
|
44
|
+
* `string | array` flattening contract in one place rather than re-implemented
|
|
45
|
+
* at each call site.
|
|
46
|
+
*
|
|
47
|
+
* Falsy segments are preserved here (not filtered) so `composeTestId` can apply
|
|
48
|
+
* its own drop/scoping rules — `scopeTestId(undefined, 'close')` yields
|
|
49
|
+
* `[undefined, 'close']`, which `composeTestId('button', …)` renders as the
|
|
50
|
+
* unscoped `button-close`.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* scopeTestId('actions', 'edit') // ['actions', 'edit']
|
|
54
|
+
* scopeTestId(['menu', 'main'], 'edit') // ['menu', 'main', 'edit']
|
|
55
|
+
* scopeTestId(undefined, 'close') // [undefined, 'close']
|
|
56
|
+
*/
|
|
57
|
+
declare function scopeTestId(base: TnTestIdValue, ...suffix: (string | number | null | undefined)[]): (string | number | null | undefined)[];
|
|
58
|
+
/**
|
|
59
|
+
* Compose the canonical test-id string: `${type}-${...segments}`.
|
|
60
|
+
*
|
|
61
|
+
* - `type` is the element-type prefix the component declares (e.g. `'button'`,
|
|
62
|
+
* `'option'`, `'menu-item'`). Pass `null`/`undefined` for no prefix.
|
|
63
|
+
* - `value` is the consumer-provided base — a single token or an array of
|
|
64
|
+
* segments (used to scope dynamic/repeated children, e.g. `[base, item.id]`).
|
|
65
|
+
*
|
|
66
|
+
* Falsy/empty parts are dropped, every part is kebab-normalized, and parts are
|
|
67
|
+
* joined with `-`. Returns `''` when nothing usable remains — callers treat
|
|
68
|
+
* `''` as "render no attribute" (avoids `data-testid=""`).
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* composeTestId('button', 'save') // 'button-save'
|
|
72
|
+
* composeTestId('option', ['username', 'Jane Doe'])// 'option-username-jane-doe'
|
|
73
|
+
* composeTestId('menu-item', [undefined, 'edit']) // 'menu-item-edit' (no base → unscoped)
|
|
74
|
+
* composeTestId('menu-item', ['actions', 'edit']) // 'menu-item-actions-edit'
|
|
75
|
+
* composeTestId(undefined, 'already-made') // 'already-made' (verbatim passthrough)
|
|
76
|
+
* composeTestId('button', 'button-first-page') // 'button-first-page' (idempotent — not doubled)
|
|
77
|
+
*/
|
|
78
|
+
declare function composeTestId(type: string | null | undefined, value: TnTestIdValue): string;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Test-id attribute names supported by the library.
|
|
82
|
+
*
|
|
83
|
+
* - `'data-testid'` is the modern industry default and the library's out-of-the-box behavior.
|
|
84
|
+
* - `'data-test'` exists for consumers that have an established convention they don't want to disrupt
|
|
85
|
+
* (notably webui, which has thousands of selectors targeting `data-test`).
|
|
86
|
+
*/
|
|
87
|
+
type TnTestAttrName = 'data-test' | 'data-testid';
|
|
88
|
+
/**
|
|
89
|
+
* Controls which attribute name the library renders `testId` values to.
|
|
90
|
+
*
|
|
91
|
+
* Defaults to `'data-testid'`. Consumers can override at the application root:
|
|
92
|
+
*
|
|
93
|
+
* ```ts
|
|
94
|
+
* bootstrapApplication(AppComponent, {
|
|
95
|
+
* providers: [
|
|
96
|
+
* { provide: TN_TEST_ATTR, useValue: 'data-test' },
|
|
97
|
+
* ],
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* Every component-level `testId` input and every `[tnTestId]` directive usage reads this token
|
|
102
|
+
* so that a single override switches the entire library consistently.
|
|
103
|
+
*/
|
|
104
|
+
declare const TN_TEST_ATTR: InjectionToken<TnTestAttrName>;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Writes a composed `testId` value to whichever attribute name is configured via
|
|
108
|
+
* {@link TN_TEST_ATTR} (default `data-testid`).
|
|
109
|
+
*
|
|
110
|
+
* The library owns the whole id: the consumer passes only the *semantic* base
|
|
111
|
+
* (`tnTestId`), the component declares its element type (`tnTestIdType`), and
|
|
112
|
+
* this directive assembles `${type}-${base}` (kebab-cased, see
|
|
113
|
+
* {@link composeTestId}). When no `tnTestIdType` is set the value is written
|
|
114
|
+
* verbatim, so existing call sites are unaffected.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```html
|
|
118
|
+
* <!-- component-owned prefix: emits data-testid="button-save" -->
|
|
119
|
+
* <button [tnTestId]="'save'" tnTestIdType="button">Save</button>
|
|
120
|
+
*
|
|
121
|
+
* <!-- array base scopes a dynamic child: emits data-testid="option-username-jane-doe" -->
|
|
122
|
+
* <li [tnTestId]="['username', option.label]" tnTestIdType="option"></li>
|
|
123
|
+
*
|
|
124
|
+
* <!-- no type: written verbatim (legacy behavior) -->
|
|
125
|
+
* <button [tnTestId]="myTestId()">Click me</button>
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* Falsy / empty results remove the attribute entirely (avoids `data-testid=""`).
|
|
129
|
+
*/
|
|
130
|
+
declare class TnTestIdDirective {
|
|
131
|
+
private readonly renderer;
|
|
132
|
+
private readonly host;
|
|
133
|
+
private readonly attrName;
|
|
134
|
+
/** The semantic base value (token or ordered segments). Falsy parts are dropped. */
|
|
135
|
+
readonly testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
136
|
+
/**
|
|
137
|
+
* Element-type prefix the component declares (e.g. `'button'`, `'option'`).
|
|
138
|
+
* Omit to write the base verbatim with no prefix.
|
|
139
|
+
*/
|
|
140
|
+
readonly tnTestIdType: _angular_core.InputSignal<string | null | undefined>;
|
|
141
|
+
constructor();
|
|
142
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnTestIdDirective, never>;
|
|
143
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TnTestIdDirective, "[tnTestId]", never, { "testId": { "alias": "tnTestId"; "required": false; "isSignal": true; }; "tnTestIdType": { "alias": "tnTestIdType"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
144
|
+
}
|
|
145
|
+
|
|
17
146
|
declare class TnAutocompleteComponent<T = unknown> implements ControlValueAccessor, OnDestroy {
|
|
18
147
|
private readonly elementRef;
|
|
19
148
|
private readonly overlay;
|
|
@@ -50,7 +179,7 @@ declare class TnAutocompleteComponent<T = unknown> implements ControlValueAccess
|
|
|
50
179
|
*/
|
|
51
180
|
panelMaxHeight: _angular_core.InputSignal<string | number>;
|
|
52
181
|
/** Test ID attribute */
|
|
53
|
-
testId: _angular_core.InputSignal<
|
|
182
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
54
183
|
/** Emits when an option is selected */
|
|
55
184
|
optionSelected: _angular_core.OutputEmitterRef<T>;
|
|
56
185
|
/** Reference to the input element */
|
|
@@ -289,113 +418,6 @@ interface AutocompleteHarnessFilters extends BaseHarnessFilters {
|
|
|
289
418
|
placeholder?: string;
|
|
290
419
|
}
|
|
291
420
|
|
|
292
|
-
/**
|
|
293
|
-
* Value shapes accepted as a test-id base.
|
|
294
|
-
*
|
|
295
|
-
* A consumer supplies the *semantic* part of a test id — a single token
|
|
296
|
-
* (`'save'`, `'username'`) or an ordered list of segments
|
|
297
|
-
* (`['username', option.value]`). The library owns the element-type prefix and
|
|
298
|
-
* the final string assembly; consumers never hand-craft the full id.
|
|
299
|
-
*/
|
|
300
|
-
type TnTestIdValue = string | number | (string | number | null | undefined)[] | null | undefined;
|
|
301
|
-
/**
|
|
302
|
-
* Normalize one segment to a kebab-case token: split camelCase, lower-case,
|
|
303
|
-
* collapse any run of non-alphanumeric characters to a single hyphen, and trim
|
|
304
|
-
* leading/trailing hyphens.
|
|
305
|
-
*
|
|
306
|
-
* Mirrors the normalization webui's legacy `ixTest` directive applied via
|
|
307
|
-
* lodash `kebabCase`, so migrated values stay stable (`sshPort` → `ssh-port`,
|
|
308
|
-
* `addr_trtype` → `addr-trtype`, `'My Label'` → `my-label`).
|
|
309
|
-
*/
|
|
310
|
-
declare function kebabTestSegment(part: string | number): string;
|
|
311
|
-
/**
|
|
312
|
-
* Compose the canonical test-id string: `${type}-${...segments}`.
|
|
313
|
-
*
|
|
314
|
-
* - `type` is the element-type prefix the component declares (e.g. `'button'`,
|
|
315
|
-
* `'option'`, `'menu-item'`). Pass `null`/`undefined` for no prefix.
|
|
316
|
-
* - `value` is the consumer-provided base — a single token or an array of
|
|
317
|
-
* segments (used to scope dynamic/repeated children, e.g. `[base, item.id]`).
|
|
318
|
-
*
|
|
319
|
-
* Falsy/empty parts are dropped, every part is kebab-normalized, and parts are
|
|
320
|
-
* joined with `-`. Returns `''` when nothing usable remains — callers treat
|
|
321
|
-
* `''` as "render no attribute" (avoids `data-testid=""`).
|
|
322
|
-
*
|
|
323
|
-
* @example
|
|
324
|
-
* composeTestId('button', 'save') // 'button-save'
|
|
325
|
-
* composeTestId('option', ['username', 'Jane Doe'])// 'option-username-jane-doe'
|
|
326
|
-
* composeTestId('menu-item', [undefined, 'edit']) // 'menu-item-edit' (no base → unscoped)
|
|
327
|
-
* composeTestId('menu-item', ['actions', 'edit']) // 'menu-item-actions-edit'
|
|
328
|
-
* composeTestId(undefined, 'already-made') // 'already-made' (verbatim passthrough)
|
|
329
|
-
* composeTestId('button', 'button-first-page') // 'button-first-page' (idempotent — not doubled)
|
|
330
|
-
*/
|
|
331
|
-
declare function composeTestId(type: string | null | undefined, value: TnTestIdValue): string;
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* Test-id attribute names supported by the library.
|
|
335
|
-
*
|
|
336
|
-
* - `'data-testid'` is the modern industry default and the library's out-of-the-box behavior.
|
|
337
|
-
* - `'data-test'` exists for consumers that have an established convention they don't want to disrupt
|
|
338
|
-
* (notably webui, which has thousands of selectors targeting `data-test`).
|
|
339
|
-
*/
|
|
340
|
-
type TnTestAttrName = 'data-test' | 'data-testid';
|
|
341
|
-
/**
|
|
342
|
-
* Controls which attribute name the library renders `testId` values to.
|
|
343
|
-
*
|
|
344
|
-
* Defaults to `'data-testid'`. Consumers can override at the application root:
|
|
345
|
-
*
|
|
346
|
-
* ```ts
|
|
347
|
-
* bootstrapApplication(AppComponent, {
|
|
348
|
-
* providers: [
|
|
349
|
-
* { provide: TN_TEST_ATTR, useValue: 'data-test' },
|
|
350
|
-
* ],
|
|
351
|
-
* });
|
|
352
|
-
* ```
|
|
353
|
-
*
|
|
354
|
-
* Every component-level `testId` input and every `[tnTestId]` directive usage reads this token
|
|
355
|
-
* so that a single override switches the entire library consistently.
|
|
356
|
-
*/
|
|
357
|
-
declare const TN_TEST_ATTR: InjectionToken<TnTestAttrName>;
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Writes a composed `testId` value to whichever attribute name is configured via
|
|
361
|
-
* {@link TN_TEST_ATTR} (default `data-testid`).
|
|
362
|
-
*
|
|
363
|
-
* The library owns the whole id: the consumer passes only the *semantic* base
|
|
364
|
-
* (`tnTestId`), the component declares its element type (`tnTestIdType`), and
|
|
365
|
-
* this directive assembles `${type}-${base}` (kebab-cased, see
|
|
366
|
-
* {@link composeTestId}). When no `tnTestIdType` is set the value is written
|
|
367
|
-
* verbatim, so existing call sites are unaffected.
|
|
368
|
-
*
|
|
369
|
-
* @example
|
|
370
|
-
* ```html
|
|
371
|
-
* <!-- component-owned prefix: emits data-testid="button-save" -->
|
|
372
|
-
* <button [tnTestId]="'save'" tnTestIdType="button">Save</button>
|
|
373
|
-
*
|
|
374
|
-
* <!-- array base scopes a dynamic child: emits data-testid="option-username-jane-doe" -->
|
|
375
|
-
* <li [tnTestId]="['username', option.label]" tnTestIdType="option"></li>
|
|
376
|
-
*
|
|
377
|
-
* <!-- no type: written verbatim (legacy behavior) -->
|
|
378
|
-
* <button [tnTestId]="myTestId()">Click me</button>
|
|
379
|
-
* ```
|
|
380
|
-
*
|
|
381
|
-
* Falsy / empty results remove the attribute entirely (avoids `data-testid=""`).
|
|
382
|
-
*/
|
|
383
|
-
declare class TnTestIdDirective {
|
|
384
|
-
private readonly renderer;
|
|
385
|
-
private readonly host;
|
|
386
|
-
private readonly attrName;
|
|
387
|
-
/** The semantic base value (token or ordered segments). Falsy parts are dropped. */
|
|
388
|
-
readonly testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
389
|
-
/**
|
|
390
|
-
* Element-type prefix the component declares (e.g. `'button'`, `'option'`).
|
|
391
|
-
* Omit to write the base verbatim with no prefix.
|
|
392
|
-
*/
|
|
393
|
-
readonly tnTestIdType: _angular_core.InputSignal<string | null | undefined>;
|
|
394
|
-
constructor();
|
|
395
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnTestIdDirective, never>;
|
|
396
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TnTestIdDirective, "[tnTestId]", never, { "testId": { "alias": "tnTestId"; "required": false; "isSignal": true; }; "tnTestIdType": { "alias": "tnTestIdType"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
421
|
type TnDrawerMode = 'side' | 'over';
|
|
400
422
|
type TnDrawerPosition = 'start' | 'end';
|
|
401
423
|
declare class TnDrawerComponent implements OnDestroy {
|
|
@@ -828,6 +850,14 @@ declare class TnIconComponent {
|
|
|
828
850
|
tooltip: _angular_core.InputSignal<string | undefined>;
|
|
829
851
|
ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
830
852
|
library: _angular_core.InputSignal<IconLibraryType | undefined>;
|
|
853
|
+
/**
|
|
854
|
+
* Semantic test-id base for the icon. The library prepends the element type
|
|
855
|
+
* (`icon`) and renders the result under whichever attribute name is configured
|
|
856
|
+
* via `TN_TEST_ATTR` (default `data-testid`) — e.g. `testId="close"` →
|
|
857
|
+
* `icon-close`. Accepts an array of segments to scope the id (e.g.
|
|
858
|
+
* `['tooltip', header()]`). Unset emits no attribute.
|
|
859
|
+
*/
|
|
860
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
831
861
|
/**
|
|
832
862
|
* When true, the icon will expand to fill its container (100% width and height)
|
|
833
863
|
* instead of using the fixed size from the `size` input.
|
|
@@ -859,7 +889,7 @@ declare class TnIconComponent {
|
|
|
859
889
|
*/
|
|
860
890
|
private warnMissingSpriteIcon;
|
|
861
891
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnIconComponent, never>;
|
|
862
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnIconComponent, "tn-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "library": { "alias": "library"; "required": false; "isSignal": true; }; "fullSize": { "alias": "fullSize"; "required": false; "isSignal": true; }; "customSize": { "alias": "customSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
892
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnIconComponent, "tn-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "library": { "alias": "library"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "fullSize": { "alias": "fullSize"; "required": false; "isSignal": true; }; "customSize": { "alias": "customSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
863
893
|
}
|
|
864
894
|
|
|
865
895
|
type TooltipPosition = 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
|
|
@@ -1234,6 +1264,7 @@ declare class TnIconHarness extends ComponentHarness {
|
|
|
1234
1264
|
* ```
|
|
1235
1265
|
*/
|
|
1236
1266
|
static with(options?: IconHarnessFilters): HarnessPredicate<TnIconHarness>;
|
|
1267
|
+
private root;
|
|
1237
1268
|
/**
|
|
1238
1269
|
* Gets the icon name.
|
|
1239
1270
|
*
|
|
@@ -1337,6 +1368,18 @@ declare class TnIconHarness extends ComponentHarness {
|
|
|
1337
1368
|
* ```
|
|
1338
1369
|
*/
|
|
1339
1370
|
click(): Promise<void>;
|
|
1371
|
+
/**
|
|
1372
|
+
* Gets the composed test-id attribute value (e.g. `icon-close`).
|
|
1373
|
+
*
|
|
1374
|
+
* @returns Promise resolving to the test-id string, or null when unset.
|
|
1375
|
+
*
|
|
1376
|
+
* @example
|
|
1377
|
+
* ```typescript
|
|
1378
|
+
* const icon = await loader.getHarness(TnIconHarness);
|
|
1379
|
+
* expect(await icon.getTestId()).toBe('icon-close');
|
|
1380
|
+
* ```
|
|
1381
|
+
*/
|
|
1382
|
+
getTestId(): Promise<string | null>;
|
|
1340
1383
|
}
|
|
1341
1384
|
/**
|
|
1342
1385
|
* A set of criteria that can be used to filter a list of `TnIconHarness` instances.
|
|
@@ -1352,6 +1395,8 @@ interface IconHarnessFilters extends BaseHarnessFilters {
|
|
|
1352
1395
|
fullSize?: boolean;
|
|
1353
1396
|
/** Filters by custom size value. */
|
|
1354
1397
|
customSize?: string;
|
|
1398
|
+
/** Filters by composed test-id value (e.g. `icon-close`). */
|
|
1399
|
+
testId?: string;
|
|
1355
1400
|
}
|
|
1356
1401
|
|
|
1357
1402
|
/**
|
|
@@ -1628,7 +1673,12 @@ declare class TnMenuItemComponent {
|
|
|
1628
1673
|
shortcut: _angular_core.InputSignal<string | undefined>;
|
|
1629
1674
|
disabled: _angular_core.InputSignal<boolean>;
|
|
1630
1675
|
selected: _angular_core.InputSignal<boolean>;
|
|
1631
|
-
|
|
1676
|
+
/**
|
|
1677
|
+
* Semantic test-id base. Accepts a single token or an array of segments
|
|
1678
|
+
* (e.g. `['format', format]`) to scope dynamic/repeated items. The owning
|
|
1679
|
+
* `<tn-menu-panel>` prepends the `button` element type.
|
|
1680
|
+
*/
|
|
1681
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
1632
1682
|
itemClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
1633
1683
|
/** Template capturing whatever the consumer projected as item content. */
|
|
1634
1684
|
content: _angular_core.Signal<TemplateRef<unknown>>;
|
|
@@ -1639,7 +1689,7 @@ declare class TnMenuItemComponent {
|
|
|
1639
1689
|
* an already-`button-`-prefixed value is not doubled). Returns `undefined`
|
|
1640
1690
|
* when neither is set, which composes to no attribute.
|
|
1641
1691
|
*/
|
|
1642
|
-
resolvedTestId: _angular_core.Signal<string | undefined>;
|
|
1692
|
+
resolvedTestId: _angular_core.Signal<string | number | (string | number | null | undefined)[] | undefined>;
|
|
1643
1693
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnMenuItemComponent, never>;
|
|
1644
1694
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnMenuItemComponent, "tn-menu-item", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconLibrary": { "alias": "iconLibrary"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["*"], true, never>;
|
|
1645
1695
|
}
|
|
@@ -1671,7 +1721,7 @@ declare class TnMenuActivateHoverDirective implements AfterContentInit {
|
|
|
1671
1721
|
interface TnMenuItem {
|
|
1672
1722
|
id: string;
|
|
1673
1723
|
label: string;
|
|
1674
|
-
testId?:
|
|
1724
|
+
testId?: TnTestIdValue;
|
|
1675
1725
|
icon?: string;
|
|
1676
1726
|
iconLibrary?: 'material' | 'mdi' | 'custom' | 'lucide';
|
|
1677
1727
|
disabled?: boolean;
|
|
@@ -1698,7 +1748,7 @@ declare class TnMenuComponent implements OnDestroy {
|
|
|
1698
1748
|
* composed with the same `button-` prefix (idempotently, so an already
|
|
1699
1749
|
* `button-`-prefixed value is not doubled).
|
|
1700
1750
|
*/
|
|
1701
|
-
testId: _angular_core.InputSignal<
|
|
1751
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
1702
1752
|
menuItemClick: _angular_core.OutputEmitterRef<TnMenuItem>;
|
|
1703
1753
|
menuOpen: _angular_core.OutputEmitterRef<void>;
|
|
1704
1754
|
menuClose: _angular_core.OutputEmitterRef<void>;
|
|
@@ -3322,7 +3372,7 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor, On
|
|
|
3322
3372
|
*/
|
|
3323
3373
|
noOptionsLabel: _angular_core.InputSignal<string>;
|
|
3324
3374
|
disabled: _angular_core.InputSignal<boolean>;
|
|
3325
|
-
testId: _angular_core.InputSignal<
|
|
3375
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
3326
3376
|
multiple: _angular_core.InputSignal<boolean>;
|
|
3327
3377
|
/**
|
|
3328
3378
|
* Optional extractor for the per-option test-id discriminator. Defaults to
|
|
@@ -5176,7 +5226,7 @@ declare class TnDateRangeInputComponent implements ControlValueAccessor, OnInit,
|
|
|
5176
5226
|
* Test-id applied to the date-range-input container. Rendered under whichever attribute name
|
|
5177
5227
|
* is configured via `TN_TEST_ATTR` (default `data-testid`).
|
|
5178
5228
|
*/
|
|
5179
|
-
testId: _angular_core.InputSignal<
|
|
5229
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
5180
5230
|
private formDisabled;
|
|
5181
5231
|
isDisabled: _angular_core.Signal<boolean>;
|
|
5182
5232
|
startMonthRef: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
@@ -5381,7 +5431,7 @@ declare class TnDateInputComponent implements ControlValueAccessor, OnInit, OnDe
|
|
|
5381
5431
|
* Test-id applied to the date-input container. Rendered under whichever attribute name
|
|
5382
5432
|
* is configured via `TN_TEST_ATTR` (default `data-testid`).
|
|
5383
5433
|
*/
|
|
5384
|
-
testId: _angular_core.InputSignal<
|
|
5434
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
5385
5435
|
private formDisabled;
|
|
5386
5436
|
isDisabled: _angular_core.Signal<boolean>;
|
|
5387
5437
|
monthRef: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
@@ -5621,7 +5671,7 @@ declare class TnTimeInputComponent implements ControlValueAccessor {
|
|
|
5621
5671
|
format: _angular_core.InputSignal<"12h" | "24h">;
|
|
5622
5672
|
granularity: _angular_core.InputSignal<"15m" | "30m" | "1h">;
|
|
5623
5673
|
placeholder: _angular_core.InputSignal<string>;
|
|
5624
|
-
testId: _angular_core.InputSignal<
|
|
5674
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
5625
5675
|
private formDisabled;
|
|
5626
5676
|
isDisabled: _angular_core.Signal<boolean>;
|
|
5627
5677
|
private step;
|
|
@@ -6061,7 +6111,11 @@ declare class TnDialogShellComponent implements OnInit {
|
|
|
6061
6111
|
* or `button-<testId>-close` / `-fullscreen` when a base is provided (useful
|
|
6062
6112
|
* when more than one dialog can be open).
|
|
6063
6113
|
*/
|
|
6064
|
-
testId: _angular_core.InputSignal<
|
|
6114
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
6115
|
+
/** Scoped test-id segments for the close button (`button-[<base>-]close`). */
|
|
6116
|
+
protected closeTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
|
|
6117
|
+
/** Scoped test-id segments for the fullscreen button (`button-[<base>-]fullscreen`). */
|
|
6118
|
+
protected fullscreenTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
|
|
6065
6119
|
/** Stable id for the title heading, referenced by the dialog's aria-labelledby. */
|
|
6066
6120
|
readonly titleId: string;
|
|
6067
6121
|
isFullscreen: _angular_core.WritableSignal<boolean>;
|
|
@@ -6324,7 +6378,7 @@ declare class TnSidePanelComponent implements OnDestroy {
|
|
|
6324
6378
|
* Test-id applied to the panel's root overlay element. Rendered under whichever attribute
|
|
6325
6379
|
* name is configured via `TN_TEST_ATTR` (default `data-testid`).
|
|
6326
6380
|
*/
|
|
6327
|
-
testId: _angular_core.InputSignal<
|
|
6381
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
6328
6382
|
/**
|
|
6329
6383
|
* Test-id applied to the panel's close (×) button.
|
|
6330
6384
|
*/
|
|
@@ -6439,7 +6493,7 @@ declare class TnFilePickerComponent implements ControlValueAccessor, OnInit, OnD
|
|
|
6439
6493
|
* Test-id applied to the file-picker container. Rendered under whichever attribute name
|
|
6440
6494
|
* is configured via `TN_TEST_ATTR` (default `data-testid`).
|
|
6441
6495
|
*/
|
|
6442
|
-
testId: _angular_core.InputSignal<
|
|
6496
|
+
testId: _angular_core.InputSignal<TnTestIdValue>;
|
|
6443
6497
|
startPath: _angular_core.InputSignal<string>;
|
|
6444
6498
|
rootPath: _angular_core.InputSignal<string | undefined>;
|
|
6445
6499
|
fileExtensions: _angular_core.InputSignal<string[] | undefined>;
|
|
@@ -7144,5 +7198,5 @@ declare const TN_THEME_DEFINITIONS: readonly TnThemeDefinition[];
|
|
|
7144
7198
|
*/
|
|
7145
7199
|
declare const THEME_MAP: Map<TnTheme, TnThemeDefinition>;
|
|
7146
7200
|
|
|
7147
|
-
export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_TABLE_PAGER_DEFAULT_LABELS, TN_TABLE_PAGER_LABELS, TN_TEST_ATTR, TN_THEME_DEFINITIONS, TnAutocompleteComponent, TnAutocompleteHarness, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnButtonToggleGroupHarness, TnButtonToggleHarness, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconButtonHarness, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnInputHarness, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuActivateHoverDirective, TnMenuComponent, TnMenuHarness, TnMenuItemComponent, TnMenuTesting, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabHarness, TnTabPanelComponent, TnTabPanelHarness, TnTableColumnDirective, TnTableComponent, TnTableHarness, TnTablePagerComponent, TnTablePagerHarness, TnTabsComponent, TnTabsHarness, TnTestIdDirective, TnTheme, TnThemeService, TnTimeInputComponent, TnToastComponent, TnToastMock, TnToastPosition, TnToastRef, TnToastService, TnToastTesting, TnToastType, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, composeTestId, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, kebabTestSegment, libIconMarker, registerLucideIcons, setupLucideIntegration, tnIconMarker };
|
|
7201
|
+
export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_TABLE_PAGER_DEFAULT_LABELS, TN_TABLE_PAGER_LABELS, TN_TEST_ATTR, TN_THEME_DEFINITIONS, TnAutocompleteComponent, TnAutocompleteHarness, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnButtonToggleGroupHarness, TnButtonToggleHarness, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconButtonHarness, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnInputHarness, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuActivateHoverDirective, TnMenuComponent, TnMenuHarness, TnMenuItemComponent, TnMenuTesting, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabHarness, TnTabPanelComponent, TnTabPanelHarness, TnTableColumnDirective, TnTableComponent, TnTableHarness, TnTablePagerComponent, TnTablePagerHarness, TnTabsComponent, TnTabsHarness, TnTestIdDirective, TnTheme, TnThemeService, TnTimeInputComponent, TnToastComponent, TnToastMock, TnToastPosition, TnToastRef, TnToastService, TnToastTesting, TnToastType, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, composeTestId, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, kebabTestSegment, libIconMarker, registerLucideIcons, scopeTestId, setupLucideIntegration, tnIconMarker };
|
|
7148
7202
|
export type { AutocompleteHarnessFilters, BannerHarnessFilters, ButtonHarnessFilters, ButtonToggleHarnessFilters, CalendarCell, CheckboxHarnessFilters, ChipColor, CreateFolderEvent, DateInputHarnessFilters, DateRange, DateRangeInputHarnessFilters, DialogHarnessFilters, EmptyHarnessFilters, ExpansionPanelHarnessFilters, FilePickerCallbacks, FilePickerError, FilePickerMode, FileSystemItem, FormFieldHarnessFilters, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, InputHarnessFilters, KeyCombination, LabelType, LucideIconOptions, MenuHarnessFilters, MockIconRegistry, MockSpriteLoader, PathSegment, PlatformType, ProgressBarMode, RadioHarnessFilters, ResolvedIcon, SelectHarnessFilters, ShortcutHandler, SidePanelHarnessFilters, SlideToggleColor, SlideToggleHarnessFilters, SpinnerMode, SpriteConfig, SubscriptSizing, TabChangeEvent, TabHarnessFilters, TabPanelHarnessFilters, TabsHarnessFilters, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnDrawerMode, TnDrawerPosition, TnEmptySize, TnFlatTreeNode, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnTestIdValue, TnThemeDefinition, TnToastCall, TnToastConfig, TooltipPosition, YearCell };
|