@truenas/ui-components 0.1.4 → 0.1.6

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.1.4",
3
+ "version": "0.1.6",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org",
6
6
  "access": "public"
@@ -3,7 +3,6 @@ import { AfterViewInit, ElementRef, OnDestroy, TemplateRef, AfterContentInit, Pr
3
3
  import { ComponentHarness, BaseHarnessFilters, HarnessPredicate } from '@angular/cdk/testing';
4
4
  import { SafeHtml, SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
5
5
  import { ControlValueAccessor, NgControl } from '@angular/forms';
6
- import { jest } from '@jest/globals';
7
6
  import { DataSource } from '@angular/cdk/collections';
8
7
  import * as i1 from '@angular/cdk/tree';
9
8
  import { CdkTree, FlatTreeControl, CdkTreeNode, CdkNestedTreeNode } from '@angular/cdk/tree';
@@ -295,6 +294,155 @@ declare class TnIconButtonComponent {
295
294
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnIconButtonComponent, "tn-icon-button", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "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; }; "library": { "alias": "library"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, never, true, never>;
296
295
  }
297
296
 
297
+ /**
298
+ * Harness for interacting with tn-icon-button in tests.
299
+ * Provides filtering by icon properties and methods for querying state and simulating interactions.
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * // Find icon button by name
304
+ * const closeBtn = await loader.getHarness(
305
+ * TnIconButtonHarness.with({ name: 'close' })
306
+ * );
307
+ *
308
+ * // Click an icon button
309
+ * const settingsBtn = await loader.getHarness(
310
+ * TnIconButtonHarness.with({ name: 'settings' })
311
+ * );
312
+ * await settingsBtn.click();
313
+ *
314
+ * // Check if disabled
315
+ * const deleteBtn = await loader.getHarness(
316
+ * TnIconButtonHarness.with({ name: 'delete' })
317
+ * );
318
+ * expect(await deleteBtn.isDisabled()).toBe(false);
319
+ * ```
320
+ */
321
+ declare class TnIconButtonHarness extends ComponentHarness {
322
+ /**
323
+ * The selector for the host element of a `TnIconButtonComponent` instance.
324
+ */
325
+ static hostSelector: string;
326
+ private button;
327
+ /**
328
+ * Gets a `HarnessPredicate` that can be used to search for an icon button
329
+ * with specific attributes.
330
+ *
331
+ * @param options Options for filtering which icon button instances are considered a match.
332
+ * @returns A `HarnessPredicate` configured with the given options.
333
+ *
334
+ * @example
335
+ * ```typescript
336
+ * // Find icon button by name
337
+ * const button = await loader.getHarness(
338
+ * TnIconButtonHarness.with({ name: 'menu' })
339
+ * );
340
+ *
341
+ * // Find icon button by library
342
+ * const customButton = await loader.getHarness(
343
+ * TnIconButtonHarness.with({ library: 'mdi' })
344
+ * );
345
+ *
346
+ * // Find icon button with specific size
347
+ * const largeButton = await loader.getHarness(
348
+ * TnIconButtonHarness.with({ size: 'lg' })
349
+ * );
350
+ * ```
351
+ */
352
+ static with(options?: IconButtonHarnessFilters): HarnessPredicate<TnIconButtonHarness>;
353
+ /**
354
+ * Gets the icon name.
355
+ *
356
+ * @returns Promise resolving to the icon name.
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const button = await loader.getHarness(TnIconButtonHarness);
361
+ * const name = await button.getName();
362
+ * expect(name).toBe('settings');
363
+ * ```
364
+ */
365
+ getName(): Promise<string | null>;
366
+ /**
367
+ * Gets the icon library.
368
+ *
369
+ * @returns Promise resolving to the icon library.
370
+ *
371
+ * @example
372
+ * ```typescript
373
+ * const button = await loader.getHarness(TnIconButtonHarness);
374
+ * const library = await button.getLibrary();
375
+ * expect(library).toBe('mdi');
376
+ * ```
377
+ */
378
+ getLibrary(): Promise<string | null>;
379
+ /**
380
+ * Gets the icon size.
381
+ *
382
+ * @returns Promise resolving to the icon size.
383
+ *
384
+ * @example
385
+ * ```typescript
386
+ * const button = await loader.getHarness(TnIconButtonHarness);
387
+ * const size = await button.getSize();
388
+ * expect(size).toBe('lg');
389
+ * ```
390
+ */
391
+ getSize(): Promise<string | null>;
392
+ /**
393
+ * Gets the icon color.
394
+ *
395
+ * @returns Promise resolving to the icon color.
396
+ *
397
+ * @example
398
+ * ```typescript
399
+ * const button = await loader.getHarness(TnIconButtonHarness);
400
+ * const color = await button.getColor();
401
+ * expect(color).toBe('primary');
402
+ * ```
403
+ */
404
+ getColor(): Promise<string | null>;
405
+ /**
406
+ * Checks whether the icon button is disabled.
407
+ *
408
+ * @returns Promise resolving to true if the button is disabled.
409
+ *
410
+ * @example
411
+ * ```typescript
412
+ * const button = await loader.getHarness(
413
+ * TnIconButtonHarness.with({ name: 'delete' })
414
+ * );
415
+ * expect(await button.isDisabled()).toBe(false);
416
+ * ```
417
+ */
418
+ isDisabled(): Promise<boolean>;
419
+ /**
420
+ * Clicks the icon button.
421
+ *
422
+ * @returns Promise that resolves when the click action is complete.
423
+ *
424
+ * @example
425
+ * ```typescript
426
+ * const button = await loader.getHarness(
427
+ * TnIconButtonHarness.with({ name: 'close' })
428
+ * );
429
+ * await button.click();
430
+ * ```
431
+ */
432
+ click(): Promise<void>;
433
+ }
434
+ /**
435
+ * A set of criteria that can be used to filter a list of `TnIconButtonHarness` instances.
436
+ */
437
+ interface IconButtonHarnessFilters extends BaseHarnessFilters {
438
+ /** Filters by icon name. */
439
+ name?: string;
440
+ /** Filters by icon library (material, mdi, custom, lucide). */
441
+ library?: string;
442
+ /** Filters by icon size (xs, sm, md, lg, xl). */
443
+ size?: string;
444
+ }
445
+
298
446
  declare enum InputType {
299
447
  Email = "email",
300
448
  Password = "password",
@@ -769,7 +917,7 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor {
769
917
 
770
918
  /**
771
919
  * Harness for interacting with tn-icon in tests.
772
- * Provides filtering by icon name and library for existence checks.
920
+ * Provides filtering by icon name and library for existence checks, as well as click interaction.
773
921
  *
774
922
  * @example
775
923
  * ```typescript
@@ -790,6 +938,12 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor {
790
938
  * const hasIcon = await loader.hasHarness(
791
939
  * TnIconHarness.with({ name: 'check' })
792
940
  * );
941
+ *
942
+ * // Click an icon
943
+ * const closeIcon = await loader.getHarness(
944
+ * TnIconHarness.with({ name: 'close' })
945
+ * );
946
+ * await closeIcon.click();
793
947
  * ```
794
948
  */
795
949
  declare class TnIconHarness extends ComponentHarness {
@@ -875,6 +1029,18 @@ declare class TnIconHarness extends ComponentHarness {
875
1029
  * ```
876
1030
  */
877
1031
  getColor(): Promise<string | null>;
1032
+ /**
1033
+ * Clicks the icon.
1034
+ *
1035
+ * @returns Promise that resolves when the click action is complete.
1036
+ *
1037
+ * @example
1038
+ * ```typescript
1039
+ * const icon = await loader.getHarness(TnIconHarness.with({ name: 'close' }));
1040
+ * await icon.click();
1041
+ * ```
1042
+ */
1043
+ click(): Promise<void>;
878
1044
  }
879
1045
  /**
880
1046
  * A set of criteria that can be used to filter a list of `TnIconHarness` instances.
@@ -2881,5 +3047,5 @@ declare const TN_THEME_DEFINITIONS: readonly TnThemeDefinition[];
2881
3047
  */
2882
3048
  declare const THEME_MAP: Map<TnTheme, TnThemeDefinition>;
2883
3049
 
2884
- export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_THEME_DEFINITIONS, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCellDefDirective, TnCheckboxComponent, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateRangeInputComponent, TnDialog, TnDialogShellComponent, TnDividerComponent, TnDividerDirective, TnExpansionPanelComponent, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuComponent, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnSelectComponent, TnSelectionListComponent, TnSlideToggleComponent, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabPanelComponent, TnTableColumnDirective, TnTableComponent, TnTabsComponent, TnTheme, TnThemeService, TnTimeInputComponent, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, libIconMarker, registerLucideIcons, setupLucideIntegration, tnIconMarker };
2885
- export type { BannerHarnessFilters, ButtonHarnessFilters, CalendarCell, ChipColor, CreateFolderEvent, DateRange, FilePickerCallbacks, FilePickerError, FilePickerMode, FileSystemItem, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, KeyCombination, LabelType, LucideIconOptions, MockIconRegistry, MockSpriteLoader, PathSegment, PlatformType, ProgressBarMode, ResolvedIcon, ShortcutHandler, SlideToggleColor, SpinnerMode, SpriteConfig, TabChangeEvent, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnFlatTreeNode, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnTableDataSource, TnThemeDefinition, TooltipPosition, YearCell };
3050
+ export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_THEME_DEFINITIONS, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCellDefDirective, TnCheckboxComponent, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateRangeInputComponent, TnDialog, TnDialogShellComponent, TnDividerComponent, TnDividerDirective, TnExpansionPanelComponent, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconButtonHarness, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuComponent, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnSelectComponent, TnSelectionListComponent, TnSlideToggleComponent, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabPanelComponent, TnTableColumnDirective, TnTableComponent, TnTabsComponent, TnTheme, TnThemeService, TnTimeInputComponent, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, libIconMarker, registerLucideIcons, setupLucideIntegration, tnIconMarker };
3051
+ export type { BannerHarnessFilters, ButtonHarnessFilters, CalendarCell, ChipColor, CreateFolderEvent, DateRange, FilePickerCallbacks, FilePickerError, FilePickerMode, FileSystemItem, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, KeyCombination, LabelType, LucideIconOptions, MockIconRegistry, MockSpriteLoader, PathSegment, PlatformType, ProgressBarMode, ResolvedIcon, ShortcutHandler, SlideToggleColor, SpinnerMode, SpriteConfig, TabChangeEvent, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnFlatTreeNode, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnTableDataSource, TnThemeDefinition, TooltipPosition, YearCell };