@truenas/ui-components 0.4.1 → 0.4.3

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@truenas/ui-components",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org",
6
6
  "access": "public"
@@ -9121,13 +9121,27 @@ declare class TnFilePickerComponent implements ControlValueAccessor, OnInit, OnD
9121
9121
  placeholder: _angular_core.InputSignal<string>;
9122
9122
  disabled: _angular_core.InputSignal<boolean>;
9123
9123
  /**
9124
- * Test-id applied to the file-picker container. Rendered under whichever attribute name
9125
- * is configured via `TN_TEST_ATTR` (default `data-testid`).
9124
+ * Test-id base applied to the file-picker container (`file-picker-` prefixed)
9125
+ * and derived onto the inner chrome: the path input (`input-<base>`), the
9126
+ * browse toggle (`button-toggle-<base>`), and the popup and its contents.
9127
+ * Falls back to the bound control's name (`formControlName` etc.) when unset.
9128
+ * Rendered under whichever attribute name is configured via `TN_TEST_ATTR`
9129
+ * (default `data-testid`).
9126
9130
  */
9127
9131
  testId: _angular_core.InputSignal<TnTestIdValue>;
9128
9132
  startPath: _angular_core.InputSignal<string>;
9129
9133
  /** Restricts navigation — users cannot navigate above this path. */
9130
9134
  rootPath: _angular_core.InputSignal<string | undefined>;
9135
+ /**
9136
+ * Root against which the picker's VALUE is expressed — the form value,
9137
+ * `selectionChange` payloads, and the text shown in the input. Browsing
9138
+ * (`rootPath`, `startPath`, `callbacks`, `selectPath`) keeps absolute paths;
9139
+ * the mapping applies only at the value boundary. E.g. with
9140
+ * `valueRoot="/mnt"`, selecting `/mnt/tank/child` shows and emits the
9141
+ * dataset name `tank/child` instead of the mountpoint path. Typed input is
9142
+ * interpreted in the same value space (absolute paths still pass through).
9143
+ */
9144
+ valueRoot: _angular_core.InputSignal<string | undefined>;
9131
9145
  fileExtensions: _angular_core.InputSignal<string[] | undefined>;
9132
9146
  callbacks: _angular_core.InputSignal<FilePickerCallbacks | undefined>;
9133
9147
  selectionChange: _angular_core.OutputEmitterRef<string | string[]>;
@@ -9149,6 +9163,15 @@ declare class TnFilePickerComponent implements ControlValueAccessor, OnInit, OnD
9149
9163
  hasError: _angular_core.WritableSignal<boolean>;
9150
9164
  private formDisabled;
9151
9165
  isDisabled: _angular_core.Signal<boolean>;
9166
+ /** Explicit `testId` wins; otherwise the bound control's name (formControlName etc.). */
9167
+ protected resolvedTestId: _angular_core.Signal<TnTestIdValue>;
9168
+ /**
9169
+ * Role-first test-id segments for the browse toggle: `button-toggle-<base>`.
9170
+ * Gated on a usable base — with several pickers on a page a bare
9171
+ * `button-toggle` on each would be non-unique, so unidentified pickers
9172
+ * stay attribute-free (mirroring tn-tree's toggle derivation).
9173
+ */
9174
+ protected toggleTestId: _angular_core.Signal<TnTestIdValue>;
9152
9175
  effectiveRootPath: _angular_core.Signal<string>;
9153
9176
  private onChange;
9154
9177
  private onTouched;
@@ -9220,10 +9243,289 @@ declare class TnFilePickerComponent implements ControlValueAccessor, OnInit, OnD
9220
9243
  * would be the surprising behavior.
9221
9244
  */
9222
9245
  private updateSelection;
9246
+ private normalizedValueRoot;
9247
+ /** Maps an internal absolute path into the `valueRoot`-relative value space. */
9248
+ private toValueSpace;
9249
+ /** Maps a `valueRoot`-relative value back into an internal absolute path. */
9250
+ private fromValueSpace;
9223
9251
  private emitError;
9224
9252
  private createOverlay;
9225
9253
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnFilePickerComponent, never>;
9226
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFilePickerComponent, "tn-file-picker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "createActions": { "alias": "createActions"; "required": false; "isSignal": true; }; "allowManualInput": { "alias": "allowManualInput"; "required": false; "isSignal": true; }; "openOnClick": { "alias": "openOnClick"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "startPath": { "alias": "startPath"; "required": false; "isSignal": true; }; "rootPath": { "alias": "rootPath"; "required": false; "isSignal": true; }; "fileExtensions": { "alias": "fileExtensions"; "required": false; "isSignal": true; }; "callbacks": { "alias": "callbacks"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "pathChange": "pathChange"; "createAction": "createAction"; "error": "error"; }, never, never, true, never>;
9254
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFilePickerComponent, "tn-file-picker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "createActions": { "alias": "createActions"; "required": false; "isSignal": true; }; "allowManualInput": { "alias": "allowManualInput"; "required": false; "isSignal": true; }; "openOnClick": { "alias": "openOnClick"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "startPath": { "alias": "startPath"; "required": false; "isSignal": true; }; "rootPath": { "alias": "rootPath"; "required": false; "isSignal": true; }; "valueRoot": { "alias": "valueRoot"; "required": false; "isSignal": true; }; "fileExtensions": { "alias": "fileExtensions"; "required": false; "isSignal": true; }; "callbacks": { "alias": "callbacks"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "pathChange": "pathChange"; "createAction": "createAction"; "error": "error"; }, never, never, true, never>;
9255
+ }
9256
+
9257
+ /**
9258
+ * Harness for interacting with tn-file-picker in tests.
9259
+ *
9260
+ * The core API (`getValue` / `setValue` / `isDisabled`) mirrors webui's
9261
+ * `IxExplorerHarness` so tests migrate with minimal changes: `setValue`
9262
+ * commits a path the way a user would — by typing into the path input and
9263
+ * triggering its `change` event. Two deliberate divergences from ix-explorer:
9264
+ * the component renders no label of its own (labels come from a wrapping
9265
+ * `tn-form-field`), so instances are filtered by `testId` or `placeholder`
9266
+ * instead; and `setValue` takes a single path only — tn-file-picker does not
9267
+ * split typed input on commas in multi-select mode (a comma is part of the
9268
+ * path), so build multi-selections through the popup with
9269
+ * `clickItem` + `clickSelect`.
9270
+ *
9271
+ * Popup helpers (`open`, `getItemNames`, `clickItem`, …) drive the browse
9272
+ * flow. The popup renders in a CDK overlay outside the component, so these
9273
+ * find it at the document root — with several pickers on a page they address
9274
+ * whichever popup is open (only one can be, thanks to the overlay backdrop).
9275
+ *
9276
+ * @example
9277
+ * ```typescript
9278
+ * // Type a path, ix-explorer style
9279
+ * const picker = await loader.getHarness(TnFilePickerHarness.with({ testId: 'file-picker-source-path' }));
9280
+ * await picker.setValue('/mnt/tank/media');
9281
+ * expect(await picker.getValue()).toBe('/mnt/tank/media');
9282
+ *
9283
+ * // Browse and pick an item through the popup
9284
+ * await picker.open();
9285
+ * await picker.clickItem('Documents');
9286
+ * await picker.clickSelect();
9287
+ * ```
9288
+ */
9289
+ declare class TnFilePickerHarness extends ComponentHarness {
9290
+ /**
9291
+ * The selector for the host element of a `TnFilePickerComponent` instance.
9292
+ */
9293
+ static hostSelector: string;
9294
+ private _container;
9295
+ private _input;
9296
+ private _toggle;
9297
+ private _popup;
9298
+ /**
9299
+ * Gets a `HarnessPredicate` that can be used to search for a file picker
9300
+ * with specific attributes.
9301
+ *
9302
+ * The `testId` filter (like {@link getTestId}) reads the default test
9303
+ * attributes (`data-testid`, falling back to `data-test`); an app that
9304
+ * overrides `TN_TEST_ATTR` to a custom attribute name will silently
9305
+ * match nothing.
9306
+ *
9307
+ * @param options Options for filtering which file picker instances are considered a match.
9308
+ * @returns A `HarnessPredicate` configured with the given options.
9309
+ *
9310
+ * @example
9311
+ * ```typescript
9312
+ * // Find by testId (the rendered attribute, i.e. including the 'file-picker-' prefix)
9313
+ * const picker = await loader.getHarness(TnFilePickerHarness.with({ testId: 'file-picker-source-path' }));
9314
+ *
9315
+ * // Find by placeholder
9316
+ * const picker = await loader.getHarness(TnFilePickerHarness.with({ placeholder: 'Select folder' }));
9317
+ * ```
9318
+ */
9319
+ static with(options?: FilePickerHarnessFilters): HarnessPredicate<TnFilePickerHarness>;
9320
+ /**
9321
+ * Gets the current value shown in the path input.
9322
+ *
9323
+ * Note: with `multiSelect`, the component displays the selected paths
9324
+ * joined with `', '` (comma-space), so that is what this resolves to.
9325
+ *
9326
+ * @returns Promise resolving to the input's value.
9327
+ *
9328
+ * @example
9329
+ * ```typescript
9330
+ * expect(await picker.getValue()).toBe('/mnt/tank/media');
9331
+ * ```
9332
+ */
9333
+ getValue(): Promise<string>;
9334
+ /**
9335
+ * Sets the picker's value by typing a single path into the path input and
9336
+ * committing it via the input's `change` event, exactly as a user pressing
9337
+ * Enter would.
9338
+ *
9339
+ * Unlike `IxExplorerHarness.setValue` there is no `string[]` overload:
9340
+ * tn-file-picker treats typed input as ONE path even in multi-select mode
9341
+ * (commas are legal in paths, so they are never list separators). In
9342
+ * multi-select, committing a typed path REPLACES the whole selection with
9343
+ * that single path; build a real multi-selection through the popup with
9344
+ * {@link clickItem} + {@link clickSelect}.
9345
+ *
9346
+ * Commits go through the component's normal validation: paths outside
9347
+ * `rootPath` are rejected (the value stays unchanged and an `error` is
9348
+ * emitted), and `callbacks.validatePath` is consulted when provided.
9349
+ * Setting an empty string clears the selection. Has no effect when
9350
+ * `allowManualInput` is false (the input is readonly).
9351
+ *
9352
+ * @param value The path to set.
9353
+ *
9354
+ * @example
9355
+ * ```typescript
9356
+ * await picker.setValue('/mnt/tank/media');
9357
+ * ```
9358
+ */
9359
+ setValue(value: string): Promise<void>;
9360
+ /**
9361
+ * Gets the path input's placeholder text.
9362
+ *
9363
+ * @returns Promise resolving to the placeholder string, or null if unset.
9364
+ *
9365
+ * @example
9366
+ * ```typescript
9367
+ * expect(await picker.getPlaceholder()).toBe('Select file or folder');
9368
+ * ```
9369
+ */
9370
+ getPlaceholder(): Promise<string | null>;
9371
+ /**
9372
+ * Checks whether the picker is disabled (via the `disabled` input or a
9373
+ * disabled form control).
9374
+ *
9375
+ * @returns Promise resolving to true if the picker is disabled.
9376
+ *
9377
+ * @example
9378
+ * ```typescript
9379
+ * expect(await picker.isDisabled()).toBe(false);
9380
+ * ```
9381
+ */
9382
+ isDisabled(): Promise<boolean>;
9383
+ /**
9384
+ * Checks whether manual path entry is disallowed (`allowManualInput` is
9385
+ * false), rendering the path input readonly.
9386
+ *
9387
+ * @returns Promise resolving to true if the input is readonly.
9388
+ *
9389
+ * @example
9390
+ * ```typescript
9391
+ * expect(await picker.isReadonly()).toBe(false);
9392
+ * ```
9393
+ */
9394
+ isReadonly(): Promise<boolean>;
9395
+ /**
9396
+ * Gets the test-id attribute value from the container.
9397
+ *
9398
+ * Reads the default test attributes (`data-testid`, falling back to
9399
+ * `data-test`). A custom `TN_TEST_ATTR` attribute name is not visible to
9400
+ * the harness and resolves to null here.
9401
+ *
9402
+ * @returns Promise resolving to the test-id, or null when unset.
9403
+ *
9404
+ * @example
9405
+ * ```typescript
9406
+ * expect(await picker.getTestId()).toBe('file-picker-source-path');
9407
+ * ```
9408
+ */
9409
+ getTestId(): Promise<string | null>;
9410
+ /**
9411
+ * Opens the browse popup by clicking the folder toggle button. No-op if
9412
+ * the popup is already open.
9413
+ *
9414
+ * @example
9415
+ * ```typescript
9416
+ * await picker.open();
9417
+ * expect(await picker.isOpen()).toBe(true);
9418
+ * ```
9419
+ */
9420
+ open(): Promise<void>;
9421
+ /**
9422
+ * Closes the browse popup without applying the pending selection, by
9423
+ * clicking the overlay backdrop (the same dismissal a user clicking
9424
+ * outside performs). No-op if the popup is not open.
9425
+ *
9426
+ * @example
9427
+ * ```typescript
9428
+ * await picker.close();
9429
+ * expect(await picker.isOpen()).toBe(false);
9430
+ * ```
9431
+ */
9432
+ close(): Promise<void>;
9433
+ /**
9434
+ * Checks whether the browse popup is currently open.
9435
+ *
9436
+ * @returns Promise resolving to true if the popup is open.
9437
+ *
9438
+ * @example
9439
+ * ```typescript
9440
+ * expect(await picker.isOpen()).toBe(false);
9441
+ * ```
9442
+ */
9443
+ isOpen(): Promise<boolean>;
9444
+ /**
9445
+ * Gets the labels of the breadcrumb segments in the popup header. Long
9446
+ * paths are truncated by the component, so a segment may be `'…'`.
9447
+ *
9448
+ * @returns Promise resolving to the breadcrumb segment labels.
9449
+ *
9450
+ * @example
9451
+ * ```typescript
9452
+ * await picker.open();
9453
+ * expect(await picker.getBreadcrumbSegments()).toEqual(['mnt']);
9454
+ * ```
9455
+ */
9456
+ getBreadcrumbSegments(): Promise<string[]>;
9457
+ /**
9458
+ * Gets the names of the items listed in the open popup.
9459
+ *
9460
+ * @returns Promise resolving to the visible item names.
9461
+ *
9462
+ * @example
9463
+ * ```typescript
9464
+ * await picker.open();
9465
+ * expect(await picker.getItemNames()).toContain('Documents');
9466
+ * ```
9467
+ */
9468
+ getItemNames(): Promise<string[]>;
9469
+ /**
9470
+ * Clicks the popup row with the given item name, toggling its selection
9471
+ * (single-select replaces the pending selection; multi-select toggles the
9472
+ * item in and out). The selection is applied with {@link clickSelect}.
9473
+ *
9474
+ * @param name The item name as displayed in the list.
9475
+ *
9476
+ * @example
9477
+ * ```typescript
9478
+ * await picker.open();
9479
+ * await picker.clickItem('Documents');
9480
+ * await picker.clickSelect();
9481
+ * ```
9482
+ */
9483
+ clickItem(name: string): Promise<void>;
9484
+ /**
9485
+ * Navigates into a directory-like item (folder, dataset, or mountpoint)
9486
+ * by clicking its navigation chevron.
9487
+ *
9488
+ * @param name The item name as displayed in the list.
9489
+ *
9490
+ * @example
9491
+ * ```typescript
9492
+ * await picker.open();
9493
+ * await picker.navigateToItem('Documents');
9494
+ * ```
9495
+ */
9496
+ navigateToItem(name: string): Promise<void>;
9497
+ /**
9498
+ * Clicks the popup's Select button, applying the pending selection as the
9499
+ * picker's value and closing the popup.
9500
+ *
9501
+ * @example
9502
+ * ```typescript
9503
+ * await picker.clickItem('Documents');
9504
+ * await picker.clickSelect();
9505
+ * expect(await picker.getValue()).toBe('/mnt/Documents');
9506
+ * ```
9507
+ */
9508
+ clickSelect(): Promise<void>;
9509
+ /**
9510
+ * Clicks the popup's Clear Selection button. Only rendered while items are
9511
+ * selected; throws otherwise.
9512
+ *
9513
+ * @example
9514
+ * ```typescript
9515
+ * await picker.clickItem('Documents');
9516
+ * await picker.clickClearSelection();
9517
+ * ```
9518
+ */
9519
+ clickClearSelection(): Promise<void>;
9520
+ }
9521
+ /**
9522
+ * A set of criteria that can be used to filter a list of `TnFilePickerHarness` instances.
9523
+ */
9524
+ interface FilePickerHarnessFilters extends BaseHarnessFilters {
9525
+ /** Filters by the path input's placeholder text. */
9526
+ placeholder?: string;
9527
+ /** Filters by the rendered data-testid attribute (includes the `file-picker-` prefix). */
9528
+ testId?: string;
9227
9529
  }
9228
9530
 
9229
9531
  /** State of an open inline creation row. */
@@ -9265,6 +9567,14 @@ declare class TnFilePickerPopupComponent implements AfterViewChecked {
9265
9567
  selectedItems: _angular_core.InputSignal<string[]>;
9266
9568
  loading: _angular_core.InputSignal<boolean>;
9267
9569
  fileExtensions: _angular_core.InputSignal<string[] | undefined>;
9570
+ /**
9571
+ * Test-id base the owning picker resolved (explicit `testId`, else the bound
9572
+ * control's name). Scopes every derived id inside the popup so ids stay
9573
+ * unique across pickers; with no base the ids fall back to their bare role
9574
+ * (`button-select`, `option-<name>`), which stays addressable because only
9575
+ * one popup can be open at a time.
9576
+ */
9577
+ testIdBase: _angular_core.InputSignal<TnTestIdValue>;
9268
9578
  private iconRegistry;
9269
9579
  private elementRef;
9270
9580
  constructor();
@@ -9305,6 +9615,38 @@ declare class TnFilePickerPopupComponent implements AfterViewChecked {
9305
9615
  * selection.
9306
9616
  */
9307
9617
  allowCurrentDirectorySelection: _angular_core.Signal<boolean>;
9618
+ /**
9619
+ * The `testIdBase` normalized to a flat segment array for role-first ids.
9620
+ * Nothing is dropped here — `composeTestId` (via `[tnTestId]`) filters falsy
9621
+ * segments, so an unset base collapses to the bare role.
9622
+ */
9623
+ private readonly baseSegments;
9624
+ /**
9625
+ * Role-first segments for the footer chrome, mirroring tn-dialog-shell's
9626
+ * `button-close-<base>` convention: `button-select[-<base>]` and
9627
+ * `button-clear-selection[-<base>]`.
9628
+ */
9629
+ protected readonly selectTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
9630
+ protected readonly clearSelectionTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
9631
+ /** Role-first segments for the inline creation input: `input-create[-<base>]`. */
9632
+ protected readonly inlineCreateTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
9633
+ /**
9634
+ * Base-first segments for a listed item's row (`option[-<base>]-<name>`) and
9635
+ * its multi-select checkbox (`checkbox[-<base>]-<name>`). The item NAME is
9636
+ * the discriminator (not the full path): it is unique within the listed
9637
+ * directory and keeps ids stable as the user browses.
9638
+ */
9639
+ itemTestId(item: FileSystemItem): TnTestIdValue;
9640
+ /** Role-first segments for an item's navigation chevron: `button-navigate[-<base>]-<name>`. */
9641
+ navigateTestId(item: FileSystemItem): TnTestIdValue;
9642
+ /**
9643
+ * Role-first segments for a breadcrumb segment: `button-breadcrumb[-<base>]-<name>`.
9644
+ * The truncation ellipsis normalizes to nothing, leaving that segment at
9645
+ * `button-breadcrumb[-<base>]` — still unique, as at most one is rendered.
9646
+ */
9647
+ breadcrumbTestId(name: string): TnTestIdValue;
9648
+ /** Base-first segments for a consumer-defined create action: `button[-<base>]-<action id>`. */
9649
+ createActionTestId(action: FilePickerCreateAction): TnTestIdValue;
9308
9650
  filteredFileItems: _angular_core.Signal<DisplayedFileItem[]>;
9309
9651
  onItemClick(item: FileSystemItem): void;
9310
9652
  onItemDoubleClick(item: FileSystemItem): void;
@@ -9348,7 +9690,7 @@ declare class TnFilePickerPopupComponent implements AfterViewChecked {
9348
9690
  isRowSelected: (row: FileSystemItem) => boolean;
9349
9691
  formatDate(date: Date): string;
9350
9692
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnFilePickerPopupComponent, never>;
9351
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFilePickerPopupComponent, "tn-file-picker-popup", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "createActions": { "alias": "createActions"; "required": false; "isSignal": true; }; "currentPath": { "alias": "currentPath"; "required": false; "isSignal": true; }; "rootPath": { "alias": "rootPath"; "required": false; "isSignal": true; }; "fileItems": { "alias": "fileItems"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fileExtensions": { "alias": "fileExtensions"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "itemDoubleClick": "itemDoubleClick"; "pathNavigate": "pathNavigate"; "createAction": "createAction"; "created": "created"; "clearSelection": "clearSelection"; "close": "close"; "submit": "submit"; "cancel": "cancel"; }, never, never, true, never>;
9693
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFilePickerPopupComponent, "tn-file-picker-popup", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "createActions": { "alias": "createActions"; "required": false; "isSignal": true; }; "currentPath": { "alias": "currentPath"; "required": false; "isSignal": true; }; "rootPath": { "alias": "rootPath"; "required": false; "isSignal": true; }; "fileItems": { "alias": "fileItems"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fileExtensions": { "alias": "fileExtensions"; "required": false; "isSignal": true; }; "testIdBase": { "alias": "testIdBase"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "itemDoubleClick": "itemDoubleClick"; "pathNavigate": "pathNavigate"; "createAction": "createAction"; "created": "created"; "clearSelection": "clearSelection"; "close": "close"; "submit": "submit"; "cancel": "cancel"; }, never, never, true, never>;
9352
9694
  }
9353
9695
 
9354
9696
  /** Item types selectable under `mode`; null means every type is selectable. */
@@ -9947,5 +10289,5 @@ declare const TN_THEME_DEFINITIONS: readonly TnThemeDefinition[];
9947
10289
  */
9948
10290
  declare const THEME_MAP: Map<TnTheme, TnThemeDefinition>;
9949
10291
 
9950
- export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LabelMarkupPipe, LabelTextPipe, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, THEME_MAP, THEME_STORAGE_KEY, TN_FORM_FIELD_CONTEXT, TN_FORM_FIELD_ERRORS, 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, TnCardFooterActionsDirective, TnCardHeaderActionsDirective, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnChipHarness, TnChipInputComponent, TnChipInputHarness, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFileInputComponent, TnFileInputHarness, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnFormSectionComponent, TnFormSectionHarness, 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, TnNestedTreeDataSource, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnStepperHarness, TnStepperNextDirective, TnStepperPreviousDirective, 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, TnTreeHarness, TnTreeNodeComponent, TnTreeNodeHarness, TnTreeNodeOutletDirective, TnTreeVirtualScrollNodeOutletDirective, TnTreeVirtualScrollViewComponent, TnTreeVirtualScrollViewHarness, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, allowsCurrentDirectorySelection, composeTestId, controlTestId, createFlatTreeControl, createLucideLibrary, createNestedTreeControl, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, defaultTreeItemSize, formatSize, getSelectableTypes, injectTnFormFieldAria, isPathWithinRoot, kebabTestSegment, labelMarkupToHtml, labelMarkupToText, libIconMarker, normalizeRootPath, optionTestId, parseLabelMarkup, parseSize, registerLucideIcons, scopeTestId, setupLucideIntegration, tnIconMarker, writeTestId };
9951
- export type { AutocompleteHarnessFilters, BannerHarnessFilters, ButtonHarnessFilters, ButtonToggleHarnessFilters, CalendarCell, CheckboxHarnessFilters, ChipColor, ChipHarnessFilters, DateInputHarnessFilters, DateRange, DateRangeInputHarnessFilters, DialogHarnessFilters, EmptyHarnessFilters, ExpansionPanelHarnessFilters, FileInputHarnessFilters, FilePickerCallbacks, FilePickerCreateAction, FilePickerCreateActionEvent, FilePickerError, FilePickerMode, FileSystemItem, FileSystemItemType, FlatTreeControlOptions, FormFieldHarnessFilters, FormSectionHarnessFilters, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, InputHarnessFilters, KeyCombination, LabelMarkupSegment, LabelMarkupSegmentType, LabelType, LucideIconOptions, MenuHarnessFilters, MockIconRegistry, MockSpriteLoader, NestedTreeControlOptions, PathSegment, PlatformType, ProgressBarMode, RadioHarnessFilters, ResolvedIcon, SelectHarnessFilters, ShortcutHandler, SidePanelHarnessFilters, SizeStandard, SlideToggleColor, SlideToggleHarnessFilters, SpinnerMode, SpriteConfig, StepperHarnessFilters, SubscriptSizing, TabChangeEvent, TabHarnessFilters, TabPanelHarnessFilters, TabsHarnessFilters, TnAutocompleteOption, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnChipInputHarnessFilters, TnChipInputOption, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnDrawerMode, TnDrawerPosition, TnEmptySize, TnFlatTreeNode, TnFormFieldAriaBindings, TnFormFieldContext, TnFormFieldErrorMessage, TnFormFieldErrorMessages, TnFormFieldErrorResolver, TnMenuItem, TnOptionTestIdSource, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnTestIdValue, TnThemeDefinition, TnToastCall, TnToastConfig, TnTreeExpansion, TnTreeHarnessFilters, TnTreeNodeHarnessFilters, TnTreeVirtualNodeData, TnTreeVirtualScrollViewHarnessFilters, TooltipPosition, YearCell };
10292
+ export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LabelMarkupPipe, LabelTextPipe, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, THEME_MAP, THEME_STORAGE_KEY, TN_FORM_FIELD_CONTEXT, TN_FORM_FIELD_ERRORS, 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, TnCardFooterActionsDirective, TnCardHeaderActionsDirective, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnChipHarness, TnChipInputComponent, TnChipInputHarness, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFileInputComponent, TnFileInputHarness, TnFilePickerComponent, TnFilePickerHarness, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnFormSectionComponent, TnFormSectionHarness, 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, TnNestedTreeDataSource, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnStepperHarness, TnStepperNextDirective, TnStepperPreviousDirective, 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, TnTreeHarness, TnTreeNodeComponent, TnTreeNodeHarness, TnTreeNodeOutletDirective, TnTreeVirtualScrollNodeOutletDirective, TnTreeVirtualScrollViewComponent, TnTreeVirtualScrollViewHarness, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, allowsCurrentDirectorySelection, composeTestId, controlTestId, createFlatTreeControl, createLucideLibrary, createNestedTreeControl, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, defaultTreeItemSize, formatSize, getSelectableTypes, injectTnFormFieldAria, isPathWithinRoot, kebabTestSegment, labelMarkupToHtml, labelMarkupToText, libIconMarker, normalizeRootPath, optionTestId, parseLabelMarkup, parseSize, registerLucideIcons, scopeTestId, setupLucideIntegration, tnIconMarker, writeTestId };
10293
+ export type { AutocompleteHarnessFilters, BannerHarnessFilters, ButtonHarnessFilters, ButtonToggleHarnessFilters, CalendarCell, CheckboxHarnessFilters, ChipColor, ChipHarnessFilters, DateInputHarnessFilters, DateRange, DateRangeInputHarnessFilters, DialogHarnessFilters, EmptyHarnessFilters, ExpansionPanelHarnessFilters, FileInputHarnessFilters, FilePickerCallbacks, FilePickerCreateAction, FilePickerCreateActionEvent, FilePickerError, FilePickerHarnessFilters, FilePickerMode, FileSystemItem, FileSystemItemType, FlatTreeControlOptions, FormFieldHarnessFilters, FormSectionHarnessFilters, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, InputHarnessFilters, KeyCombination, LabelMarkupSegment, LabelMarkupSegmentType, LabelType, LucideIconOptions, MenuHarnessFilters, MockIconRegistry, MockSpriteLoader, NestedTreeControlOptions, PathSegment, PlatformType, ProgressBarMode, RadioHarnessFilters, ResolvedIcon, SelectHarnessFilters, ShortcutHandler, SidePanelHarnessFilters, SizeStandard, SlideToggleColor, SlideToggleHarnessFilters, SpinnerMode, SpriteConfig, StepperHarnessFilters, SubscriptSizing, TabChangeEvent, TabHarnessFilters, TabPanelHarnessFilters, TabsHarnessFilters, TnAutocompleteOption, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnChipInputHarnessFilters, TnChipInputOption, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnDrawerMode, TnDrawerPosition, TnEmptySize, TnFlatTreeNode, TnFormFieldAriaBindings, TnFormFieldContext, TnFormFieldErrorMessage, TnFormFieldErrorMessages, TnFormFieldErrorResolver, TnMenuItem, TnOptionTestIdSource, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnTestIdValue, TnThemeDefinition, TnToastCall, TnToastConfig, TnTreeExpansion, TnTreeHarnessFilters, TnTreeNodeHarnessFilters, TnTreeVirtualNodeData, TnTreeVirtualScrollViewHarnessFilters, TooltipPosition, YearCell };