@ndwnu/design-system 1.1.1 → 3.0.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.
Files changed (127) hide show
  1. package/assets/images/ndw-logo-short.svg +3 -3
  2. package/assets/images/ndw-logo.svg +3 -3
  3. package/assets/images/nwb-logo-short.svg +10 -10
  4. package/assets/images/nwb-logo.svg +4 -4
  5. package/components/accordion/accordion.component.d.ts +1 -0
  6. package/components/alert/alert.component.d.ts +18 -2
  7. package/components/alert/alert.model.d.ts +1 -0
  8. package/components/badge/badge.component.d.ts +8 -1
  9. package/components/card/card-footer/card-footer.component.d.ts +0 -1
  10. package/components/card/card-header/card-header.component.d.ts +0 -3
  11. package/components/card/card.component.d.ts +2 -8
  12. package/components/card/index.d.ts +3 -1
  13. package/components/collapsible/collapsible.component.d.ts +4 -3
  14. package/components/dropdown/dropdown.component.d.ts +10 -5
  15. package/components/form-field/checkbox/checkbox.component.d.ts +2 -1
  16. package/components/form-field/file-upload/file-upload-text.interface.d.ts +4 -0
  17. package/components/form-field/file-upload/file-upload.component.d.ts +46 -0
  18. package/components/form-field/file-upload/index.d.ts +2 -0
  19. package/components/form-field/form-field.component.d.ts +13 -8
  20. package/components/form-field/index.d.ts +4 -0
  21. package/components/form-field/input/input.directive.d.ts +2 -0
  22. package/components/form-field/input/input.model.d.ts +1 -3
  23. package/components/form-field/month-input/index.d.ts +1 -0
  24. package/components/form-field/month-input/month-input-utils.d.ts +5 -0
  25. package/components/form-field/month-input/month-input.component.d.ts +42 -0
  26. package/components/form-field/option-group/index.d.ts +3 -0
  27. package/components/form-field/option-group/option-group.component.d.ts +26 -0
  28. package/components/form-field/option-group/option-group.model.d.ts +1 -0
  29. package/components/form-field/option-group/option.component.d.ts +9 -0
  30. package/components/form-field/radio-button/radio-button.component.d.ts +2 -1
  31. package/components/form-field/radio-group/radio-group.component.d.ts +1 -1
  32. package/components/form-field/success/index.d.ts +1 -0
  33. package/components/form-field/success/success.component.d.ts +5 -0
  34. package/components/form-field/textarea/auto-grow.directive.d.ts +19 -0
  35. package/components/form-field/textarea/index.d.ts +1 -0
  36. package/components/icon/action-icon/action-icon.component.d.ts +33 -0
  37. package/components/icon/action-icon/index.d.ts +1 -0
  38. package/components/icon/icon.component.d.ts +4 -6
  39. package/components/icon/index.d.ts +1 -0
  40. package/components/index.d.ts +1 -0
  41. package/components/main-navigation/main-navigation.component.d.ts +19 -6
  42. package/components/main-navigation/main-navigation.imports.d.ts +9 -0
  43. package/components/main-navigation-menu/main-navigation-menu.component.d.ts +4 -1
  44. package/components/modal/index.d.ts +7 -1
  45. package/components/modal/modal-content/index.d.ts +1 -0
  46. package/components/modal/modal-content/modal-content.component.d.ts +5 -0
  47. package/components/modal/modal-footer/index.d.ts +1 -0
  48. package/components/modal/modal-footer/modal-footer.component.d.ts +5 -0
  49. package/components/modal/modal-header/index.d.ts +1 -0
  50. package/components/modal/modal-header/modal-header.component.d.ts +7 -0
  51. package/components/modal/modal.component.d.ts +11 -0
  52. package/components/modal/modal.service.d.ts +0 -1
  53. package/components/multi-select/multi-select.component.d.ts +6 -5
  54. package/components/pill/pill.component.d.ts +8 -0
  55. package/components/popover/popover-trigger.directive.d.ts +1 -1
  56. package/components/removable-pill/removable-pill.component.d.ts +9 -2
  57. package/components/toast/index.d.ts +2 -0
  58. package/components/toast/toast.component.d.ts +19 -0
  59. package/components/toast/toast.service.d.ts +12 -0
  60. package/components/tooltip/tooltip.directive.d.ts +7 -2
  61. package/core/styles/ndw-styles.scss +89 -37
  62. package/core/styles/nwb-styles.scss +89 -37
  63. package/esm2022/components/accordion/accordion.component.mjs +9 -5
  64. package/esm2022/components/accordion/accordion.service.mjs +3 -6
  65. package/esm2022/components/alert/alert.component.mjs +28 -3
  66. package/esm2022/components/alert/alert.model.mjs +1 -1
  67. package/esm2022/components/badge/badge.component.mjs +10 -3
  68. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +3 -3
  69. package/esm2022/components/button/button.directive.mjs +4 -3
  70. package/esm2022/components/card/card-footer/card-footer.component.mjs +3 -6
  71. package/esm2022/components/card/card-header/card-header.component.mjs +4 -12
  72. package/esm2022/components/card/card.component.mjs +5 -22
  73. package/esm2022/components/card/index.mjs +12 -2
  74. package/esm2022/components/collapsible/collapsible.component.mjs +6 -13
  75. package/esm2022/components/dropdown/dropdown.component.mjs +32 -8
  76. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +5 -4
  77. package/esm2022/components/form-field/error/error.component.mjs +3 -3
  78. package/esm2022/components/form-field/file-upload/file-upload-text.interface.mjs +2 -0
  79. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +217 -0
  80. package/esm2022/components/form-field/file-upload/index.mjs +3 -0
  81. package/esm2022/components/form-field/form-field.component.mjs +48 -28
  82. package/esm2022/components/form-field/index.mjs +5 -1
  83. package/esm2022/components/form-field/info/info.component.mjs +2 -2
  84. package/esm2022/components/form-field/input/input.directive.mjs +8 -3
  85. package/esm2022/components/form-field/input/input.model.mjs +1 -3
  86. package/esm2022/components/form-field/month-input/index.mjs +2 -0
  87. package/esm2022/components/form-field/month-input/month-input-utils.mjs +13 -0
  88. package/esm2022/components/form-field/month-input/month-input.component.mjs +155 -0
  89. package/esm2022/components/form-field/option-group/index.mjs +4 -0
  90. package/esm2022/components/form-field/option-group/option-group.component.mjs +64 -0
  91. package/esm2022/components/form-field/option-group/option-group.model.mjs +2 -0
  92. package/esm2022/components/form-field/option-group/option.component.mjs +23 -0
  93. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +5 -4
  94. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +4 -6
  95. package/esm2022/components/form-field/success/index.mjs +2 -0
  96. package/esm2022/components/form-field/success/success.component.mjs +12 -0
  97. package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +45 -0
  98. package/esm2022/components/form-field/textarea/index.mjs +2 -0
  99. package/esm2022/components/icon/action-icon/action-icon.component.mjs +40 -0
  100. package/esm2022/components/icon/action-icon/index.mjs +2 -0
  101. package/esm2022/components/icon/icon.component.mjs +9 -24
  102. package/esm2022/components/icon/index.mjs +2 -1
  103. package/esm2022/components/index.mjs +2 -1
  104. package/esm2022/components/main-navigation/main-navigation.component.mjs +70 -31
  105. package/esm2022/components/main-navigation/main-navigation.imports.mjs +20 -0
  106. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +10 -4
  107. package/esm2022/components/modal/index.mjs +18 -2
  108. package/esm2022/components/modal/modal-content/index.mjs +2 -0
  109. package/esm2022/components/modal/modal-content/modal-content.component.mjs +11 -0
  110. package/esm2022/components/modal/modal-footer/index.mjs +2 -0
  111. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +11 -0
  112. package/esm2022/components/modal/modal-header/index.mjs +2 -0
  113. package/esm2022/components/modal/modal-header/modal-header.component.mjs +20 -0
  114. package/esm2022/components/modal/modal.component.mjs +32 -0
  115. package/esm2022/components/modal/modal.service.mjs +6 -11
  116. package/esm2022/components/multi-select/multi-select.component.mjs +10 -8
  117. package/esm2022/components/pill/pill.component.mjs +17 -4
  118. package/esm2022/components/popover/popover-trigger.directive.mjs +1 -2
  119. package/esm2022/components/removable-pill/removable-pill.component.mjs +13 -11
  120. package/esm2022/components/toast/index.mjs +3 -0
  121. package/esm2022/components/toast/toast.component.mjs +77 -0
  122. package/esm2022/components/toast/toast.service.mjs +43 -0
  123. package/esm2022/components/tooltip/tooltip.component.mjs +5 -3
  124. package/esm2022/components/tooltip/tooltip.directive.mjs +47 -18
  125. package/fesm2022/ndwnu-design-system.mjs +1275 -419
  126. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  127. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ import { IconSize } from '../icon.component';
2
+ import * as i0 from "@angular/core";
3
+ export type ButtonType = 'button' | 'submit' | 'reset';
4
+ export type IconVariant = 'primary' | 'link' | 'grey' | 'white';
5
+ export declare class ActionIconComponent {
6
+ /**
7
+ * Used to give meaning to the button, used by screen readers.
8
+ */
9
+ ariaLabel: import("@angular/core").InputSignal<string>;
10
+ /**
11
+ * Color scheme of the ActionIcon, available `primary`, `link`,
12
+ * `grey` and `white` (defaults to primary).
13
+ */
14
+ variant: import("@angular/core").InputSignal<IconVariant>;
15
+ /**
16
+ * Specify button type, defaults to `button`
17
+ */
18
+ buttonType: import("@angular/core").InputSignal<ButtonType>;
19
+ /**
20
+ * Disables the button, defaults to `false`.
21
+ */
22
+ disabled: import("@angular/core").InputSignal<boolean>;
23
+ /**
24
+ * Sets the size of the button, defaults to `md`.
25
+ */
26
+ size: import("@angular/core").InputSignal<IconSize>;
27
+ /**
28
+ * Event emitted when the button is clicked.
29
+ */
30
+ readonly onClick: import("@angular/core").OutputEmitterRef<void>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionIconComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionIconComponent, "ndw-action-icon", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "buttonType": { "alias": "buttonType"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
33
+ }
@@ -0,0 +1 @@
1
+ export * from './action-icon.component';
@@ -1,14 +1,12 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ export type IconSize = 'sm' | 'md';
3
4
  export declare class IconComponent implements OnInit {
5
+ size: import("@angular/core").InputSignal<IconSize>;
4
6
  private readonly elementRef;
5
7
  private readonly renderer;
6
- interactive: import("@angular/core").InputSignal<boolean>;
7
- protected iconClass: string;
8
- protected get interactiveClass(): boolean;
9
- protected get role(): string;
10
- protected get tabIndex(): number;
8
+ get hostClass(): string;
11
9
  ngOnInit(): void;
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "ndw-icon", never, { "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "ndw-icon", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
14
12
  }
@@ -1 +1,2 @@
1
+ export * from './action-icon';
1
2
  export * from './icon.component';
@@ -18,4 +18,5 @@ export * from './router-breadcrumbs';
18
18
  export * from './tab';
19
19
  export * from './tab-group';
20
20
  export * from './tooltip';
21
+ export * from './toast';
21
22
  export * from './removable-pill';
@@ -1,23 +1,32 @@
1
1
  import { ConnectedPosition } from '@angular/cdk/overlay';
2
- import { AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import { AfterViewInit, ElementRef, OnDestroy, TemplateRef } from '@angular/core';
3
4
  import { MainNavigationMenuComponent } from '../main-navigation-menu';
4
5
  import { MenuItem, NdwBrand, SimpleMenuItem } from './main-navigation.model';
5
6
  import * as i0 from "@angular/core";
6
- export declare class MainNavigationComponent implements AfterViewInit {
7
+ export declare class MainNavigationComponent implements AfterViewInit, OnDestroy {
7
8
  applicationName: import("@angular/core").InputSignal<string>;
8
9
  topMenuItems: import("@angular/core").InputSignal<MenuItem[]>;
9
10
  bottomMenuItems: import("@angular/core").InputSignal<MenuItem[] | undefined>;
10
11
  brand: import("@angular/core").InputSignal<NdwBrand>;
11
12
  footerTexts: import("@angular/core").InputSignal<string[] | undefined>;
12
13
  isCollapsible: import("@angular/core").InputSignal<boolean>;
13
- selected: import("@angular/core").OutputEmitterRef<number>;
14
+ version: import("@angular/core").InputSignal<string | undefined>;
15
+ closeButtonLabel: import("@angular/core").InputSignal<string>;
16
+ menuButtonLabel: import("@angular/core").InputSignal<string>;
14
17
  isExpanded: import("@angular/core").ModelSignal<boolean>;
18
+ isMobileExpanded: import("@angular/core").ModelSignal<boolean>;
15
19
  buttons: import("@angular/core").Signal<readonly ElementRef<HTMLButtonElement>[]>;
16
20
  childMenuTemplate: import("@angular/core").Signal<TemplateRef<MainNavigationMenuComponent>>;
21
+ isMobile: import("@angular/core").WritableSignal<boolean>;
17
22
  brandImagePath: import("@angular/core").Signal<string>;
23
+ protected mobilePortal?: TemplatePortal<MainNavigationMenuComponent>;
24
+ private activeId?;
18
25
  protected get brandAttribute(): string;
19
26
  protected get expandedClass(): boolean;
27
+ protected get mobileClass(): boolean;
20
28
  onMouseMove(event: MouseEvent): void;
29
+ onWindowResize(): void;
21
30
  activeChildItems: SimpleMenuItem[];
22
31
  overlayPositions: ConnectedPosition[];
23
32
  private overlay;
@@ -25,11 +34,15 @@ export declare class MainNavigationComponent implements AfterViewInit {
25
34
  private activeButton?;
26
35
  private overlayRef?;
27
36
  ngAfterViewInit(): void;
28
- close(): void;
37
+ ngOnDestroy(): void;
38
+ close(toggleMobileView?: boolean): void;
39
+ handleClick(item: MenuItem): void;
40
+ handleLogoClick(): void;
29
41
  open(item: MenuItem): void;
30
- handleSelected(id: number): void;
42
+ toggleChildMenu(item: MenuItem, event?: KeyboardEvent): void;
43
+ toggleMobileView(): void;
31
44
  toggleView(): void;
32
45
  private setPositionStrategy;
33
46
  static ɵfac: i0.ɵɵFactoryDeclaration<MainNavigationComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<MainNavigationComponent, "ndw-main-navigation", never, { "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "topMenuItems": { "alias": "topMenuItems"; "required": true; "isSignal": true; }; "bottomMenuItems": { "alias": "bottomMenuItems"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "footerTexts": { "alias": "footerTexts"; "required": false; "isSignal": true; }; "isCollapsible": { "alias": "isCollapsible"; "required": false; "isSignal": true; }; "isExpanded": { "alias": "isExpanded"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "isExpanded": "isExpandedChange"; }, never, never, true, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<MainNavigationComponent, "ndw-main-navigation", never, { "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "topMenuItems": { "alias": "topMenuItems"; "required": true; "isSignal": true; }; "bottomMenuItems": { "alias": "bottomMenuItems"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "footerTexts": { "alias": "footerTexts"; "required": false; "isSignal": true; }; "isCollapsible": { "alias": "isCollapsible"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "menuButtonLabel": { "alias": "menuButtonLabel"; "required": false; "isSignal": true; }; "isExpanded": { "alias": "isExpanded"; "required": false; "isSignal": true; }; "isMobileExpanded": { "alias": "isMobileExpanded"; "required": false; "isSignal": true; }; }, { "isExpanded": "isExpandedChange"; "isMobileExpanded": "isMobileExpandedChange"; }, never, never, true, never>;
35
48
  }
@@ -0,0 +1,9 @@
1
+ import { OverlayModule } from '@angular/cdk/overlay';
2
+ import { CdkPortalOutlet } from '@angular/cdk/portal';
3
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
4
+ import { RouterLink } from '@angular/router';
5
+ import { BadgeComponent } from '../badge';
6
+ import { IconComponent } from '../icon';
7
+ import { MainNavigationMenuComponent } from '../main-navigation-menu';
8
+ import { TooltipDirective } from '../tooltip';
9
+ export declare const MAIN_NAVIGATION_IMPORTS: (typeof IconComponent | typeof NgClass | typeof NgTemplateOutlet | typeof BadgeComponent | typeof CdkPortalOutlet | typeof MainNavigationMenuComponent | typeof OverlayModule | typeof RouterLink | typeof TooltipDirective)[];
@@ -2,6 +2,9 @@ import { SimpleMenuItem } from '../main-navigation';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class MainNavigationMenuComponent {
4
4
  menuItems: import("@angular/core").InputSignal<SimpleMenuItem[]>;
5
+ isMobile: import("@angular/core").InputSignal<boolean>;
6
+ close: import("@angular/core").OutputEmitterRef<void>;
7
+ handleSelected(item: SimpleMenuItem): void;
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<MainNavigationMenuComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<MainNavigationMenuComponent, "ndw-main-navigation-menu", never, { "menuItems": { "alias": "menuItems"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<MainNavigationMenuComponent, "ndw-main-navigation-menu", never, { "menuItems": { "alias": "menuItems"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
7
10
  }
@@ -1,2 +1,8 @@
1
- export * from './modal.service';
1
+ import { ModalContentComponent } from './modal-content';
2
+ export * from './modal-content';
3
+ export * from './modal-footer';
4
+ export * from './modal-header';
2
5
  export * from './modal-trigger.directive';
6
+ export * from './modal.component';
7
+ export * from './modal.service';
8
+ export declare const MODAL_COMPONENTS: (typeof ModalContentComponent)[];
@@ -0,0 +1 @@
1
+ export * from './modal-content.component';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ModalContentComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalContentComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalContentComponent, "ndw-modal-content", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1 @@
1
+ export * from './modal-footer.component';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ModalFooterComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalFooterComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalFooterComponent, "ndw-modal-footer", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1 @@
1
+ export * from './modal-header.component';
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ModalHeaderComponent {
3
+ private readonly modalService;
4
+ detachModal(): void;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalHeaderComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalHeaderComponent, "ndw-modal-header", never, {}, {}, never, ["*"], true, never>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import { CardComponent } from '../card';
2
+ import * as i0 from "@angular/core";
3
+ export type ModalSize = 'sm' | 'md';
4
+ export declare class ModalComponent extends CardComponent {
5
+ size: import("@angular/core").InputSignal<ModalSize>;
6
+ get isSmall(): boolean;
7
+ get isMedium(): boolean;
8
+ readonly roleAttr = "dialog";
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalComponent, "ndw-modal", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
11
+ }
@@ -10,7 +10,6 @@ export declare class ModalService {
10
10
  detach(): void;
11
11
  dispose(): void;
12
12
  open(templateRef: TemplateRef<unknown>, viewContainerRef: ViewContainerRef): void;
13
- private actions;
14
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ModalService, never>;
15
14
  static ɵprov: i0.ɵɵInjectableDeclaration<ModalService>;
16
15
  }
@@ -3,19 +3,20 @@ import { CheckboxData } from './checkbox-data.interface';
3
3
  import { SelectAllText } from './select-all-text.interface';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MultiSelectComponent {
6
- readonly disabled: import("@angular/core").InputSignal<boolean>;
7
6
  readonly dropdownTrigger: import("@angular/core").Signal<PopoverTriggerDirective>;
8
7
  readonly buttonText: import("@angular/core").InputSignal<string>;
8
+ readonly searchLabel: import("@angular/core").InputSignal<string>;
9
9
  readonly prefixIcon: import("@angular/core").InputSignal<string>;
10
- readonly chevron: import("@angular/core").InputSignal<boolean>;
11
- readonly searchInputValue: import("@angular/core").ModelSignal<string>;
12
10
  readonly searchPlaceholder: import("@angular/core").InputSignal<string>;
13
11
  readonly noResultText: import("@angular/core").InputSignal<string>;
12
+ readonly chevron: import("@angular/core").InputSignal<boolean>;
13
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
14
14
  readonly selectAllText: import("@angular/core").InputSignal<SelectAllText>;
15
15
  readonly lastCheckedElementId: import("@angular/core").ModelSignal<string | number | null | undefined>;
16
+ readonly dataSource: import("@angular/core").ModelSignal<CheckboxData[]>;
17
+ readonly searchInputValue: import("@angular/core").ModelSignal<string>;
16
18
  readonly selectAmount: import("@angular/core").Signal<number>;
17
19
  readonly noSearchResults: import("@angular/core").Signal<boolean>;
18
- readonly dataSource: import("@angular/core").ModelSignal<CheckboxData[]>;
19
20
  filterSearch(value: string): boolean;
20
21
  searchInputChanged(event: Event): void;
21
22
  checkboxChanged(id: string | number): void;
@@ -23,5 +24,5 @@ export declare class MultiSelectComponent {
23
24
  isOpenChanged(isOpen: boolean): void;
24
25
  private determineLastCheckedElement;
25
26
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "ndw-multi-select", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "buttonText": { "alias": "buttonText"; "required": true; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "chevron": { "alias": "chevron"; "required": false; "isSignal": true; }; "searchInputValue": { "alias": "searchInputValue"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultText": { "alias": "noResultText"; "required": false; "isSignal": true; }; "selectAllText": { "alias": "selectAllText"; "required": false; "isSignal": true; }; "lastCheckedElementId": { "alias": "lastCheckedElementId"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; }, { "searchInputValue": "searchInputValueChange"; "lastCheckedElementId": "lastCheckedElementIdChange"; "dataSource": "dataSourceChange"; }, never, never, true, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "ndw-multi-select", never, { "buttonText": { "alias": "buttonText"; "required": true; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": true; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultText": { "alias": "noResultText"; "required": false; "isSignal": true; }; "chevron": { "alias": "chevron"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selectAllText": { "alias": "selectAllText"; "required": false; "isSignal": true; }; "lastCheckedElementId": { "alias": "lastCheckedElementId"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "searchInputValue": { "alias": "searchInputValue"; "required": false; "isSignal": true; }; }, { "lastCheckedElementId": "lastCheckedElementIdChange"; "dataSource": "dataSourceChange"; "searchInputValue": "searchInputValueChange"; }, never, never, true, never>;
27
28
  }
@@ -1,8 +1,16 @@
1
1
  import { PillColor } from './pill.model';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class PillComponent {
4
+ /**
5
+ * The color of the pill.
6
+ */
4
7
  readonly color: import("@angular/core").InputSignal<PillColor>;
8
+ /**
9
+ * The content of the pill.
10
+ */
11
+ private readonly content;
5
12
  get hostClass(): string[];
13
+ protected get title(): string | undefined;
6
14
  static ɵfac: i0.ɵɵFactoryDeclaration<PillComponent, never>;
7
15
  static ɵcmp: i0.ɵɵComponentDeclaration<PillComponent, "ndw-pill", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8
16
  }
@@ -14,7 +14,7 @@ export declare class PopoverTriggerDirective implements OnDestroy {
14
14
  private focusTrapFactory;
15
15
  private overlayRef?;
16
16
  ngOnDestroy(): void;
17
- private togglePopover;
17
+ togglePopover(): void;
18
18
  private open;
19
19
  private trapFocus;
20
20
  private closeOverlayOnEscapeKey;
@@ -1,7 +1,14 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class RemovablePillComponent {
3
+ /**
4
+ * Disables the pill
5
+ */
3
6
  disabled: import("@angular/core").InputSignal<boolean>;
4
- get tabindexAttr(): number;
7
+ /**
8
+ * Aria label for the remove button
9
+ */
10
+ removeAriaLabel: import("@angular/core").InputSignal<string>;
11
+ onClick: import("@angular/core").OutputEmitterRef<Event>;
5
12
  static ɵfac: i0.ɵɵFactoryDeclaration<RemovablePillComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<RemovablePillComponent, "ndw-removable-pill", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<RemovablePillComponent, "ndw-removable-pill", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
7
14
  }
@@ -0,0 +1,2 @@
1
+ export * from './toast.component';
2
+ export * from './toast.service';
@@ -0,0 +1,19 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ToastComponent implements OnInit, OnDestroy {
4
+ readonly message: import("@angular/core").ModelSignal<string>;
5
+ readonly close: import("@angular/core").OutputEmitterRef<void>;
6
+ private interval;
7
+ private readonly renderer;
8
+ private readonly toastContainer;
9
+ ngOnInit(): void;
10
+ ngOnDestroy(): void;
11
+ open(): void;
12
+ private updateGradient;
13
+ protected startFadeOut(): void;
14
+ private checkForExistingToast;
15
+ private clearInterval;
16
+ private truncateText;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "ndw-toast", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; }, { "message": "messageChange"; "close": "close"; }, never, never, true, never>;
19
+ }
@@ -0,0 +1,12 @@
1
+ import { OverlayRef } from '@angular/cdk/overlay';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ToastService {
4
+ private readonly overlay;
5
+ private isOpen;
6
+ overlayRef?: OverlayRef;
7
+ detach(): void;
8
+ dispose(): void;
9
+ open(message: string): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
12
+ }
@@ -1,14 +1,19 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
1
+ import { OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class TooltipDirective implements OnDestroy, OnInit {
3
+ export declare class TooltipDirective implements OnChanges, OnDestroy, OnInit {
4
4
  text: import("@angular/core").InputSignal<string>;
5
5
  private readonly elementRef;
6
6
  private readonly overlay;
7
+ private readonly ariaDescriber;
7
8
  private overlayRef;
8
9
  ngOnInit(): void;
10
+ ngOnChanges(): void;
9
11
  ngOnDestroy(): void;
10
12
  protected show(): void;
11
13
  protected hide(): void;
14
+ protected hideOnEscape(): void;
15
+ private updateAriaDescription;
16
+ private getFlexibleConnectedPositionStrategy;
12
17
  static ɵfac: i0.ɵɵFactoryDeclaration<TooltipDirective, never>;
13
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<TooltipDirective, "[ndwTooltip]", never, { "text": { "alias": "ndwTooltip"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
14
19
  }
@@ -223,6 +223,7 @@
223
223
  --ndw-alpha-black-007: hsla(var(--_alpha-black), var(--_alpha-007));
224
224
  --ndw-alpha-black-015: hsla(var(--_alpha-black), var(--_alpha-015));
225
225
  --ndw-alpha-black-040: hsla(var(--_alpha-black), var(--_alpha-040));
226
+ --ndw-alpha-white-040: hsla(var(--_white), var(--_alpha-040));
226
227
  /* Spacing */
227
228
  --ndw-spacing-3xs: 0.125rem;
228
229
  --ndw-spacing-2xs: 0.25rem;
@@ -264,6 +265,7 @@
264
265
  --ndw-font-family-body: "Nunito Sans", sans-serif;
265
266
  --ndw-font-family-heading: "DM Sans", sans-serif;
266
267
  --ndw-base-font-size: 16px;
268
+ --ndw-font-size-2xs: 0.5625rem;
267
269
  --ndw-font-size-xs: 0.6875rem;
268
270
  --ndw-font-size-sm: 0.8125rem;
269
271
  --ndw-font-size-md: 1.125rem;
@@ -271,13 +273,31 @@
271
273
  --ndw-font-size-xl: 1.5rem;
272
274
  --ndw-font-weight-regular: 400;
273
275
  --ndw-font-weight-bold: 650;
274
- --ndw-line-height-sm: 1.375em;
275
- --ndw-line-height-md: 1.5em;
276
+ --ndw-line-height-sm: 1.375rem;
277
+ --ndw-line-height-md: 1.5rem;
276
278
  /* Transform */
277
279
  --ndw-rotate-half: rotate(180deg);
280
+ /* Modal */
281
+ --ndw-modal-width-sm: 31.25rem;
282
+ --ndw-modal-width-md: 45rem;
278
283
  }
279
284
 
280
285
  /* Screen sizes */
286
+ /**
287
+ Utilities for improving accessibility with screen readers.
288
+ */
289
+ .sr-only {
290
+ position: absolute;
291
+ overflow: hidden;
292
+ width: 1px;
293
+ height: 1px;
294
+ padding: 0;
295
+ margin: -1px;
296
+ border-width: 0;
297
+ white-space: nowrap;
298
+ clip: rect(0, 0, 0, 0);
299
+ }
300
+
281
301
  /* Mixins */
282
302
  /* Classes */
283
303
  .ndw-heading-xl {
@@ -562,12 +582,21 @@
562
582
  }
563
583
  }
564
584
 
585
+ .ndw-overlay-backdrop {
586
+ background-color: var(--ndw-backdrop-color);
587
+ }
588
+
589
+ button:not(:disabled) {
590
+ cursor: pointer;
591
+ }
592
+
565
593
  [ndwButton] {
566
594
  box-sizing: border-box;
567
595
  display: flex;
568
596
  align-items: center;
569
597
  gap: var(--ndw-spacing-2xs);
570
598
  height: var(--ndw-spacing-xl);
599
+ justify-content: center;
571
600
  padding: var(--ndw-spacing-2xs) var(--ndw-spacing-xs);
572
601
  width: fit-content;
573
602
  cursor: pointer;
@@ -580,6 +609,7 @@
580
609
  font-size: var(--ndw-font-size-sm);
581
610
  font-weight: var(--ndw-font-weight-regular);
582
611
  text-align: start;
612
+ text-decoration: none;
583
613
  }
584
614
  [ndwButton] ndw-icon {
585
615
  font-size: var(--ndw-spacing-md);
@@ -594,35 +624,47 @@
594
624
  border-color: var(--ndw-background-primary-active);
595
625
  color: var(--ndw-foreground-primary-active);
596
626
  }
597
- [ndwButton][outline] {
627
+ [ndwButton][secondary], [ndwButton][tertiary] {
598
628
  background-color: transparent;
599
- border-color: var(--ndw-background-primary);
600
629
  color: var(--ndw-text-primary);
601
630
  }
602
- [ndwButton][outline]:hover {
603
- background-color: var(--ndw-background-primary);
631
+ [ndwButton][secondary]:hover, [ndwButton][tertiary]:hover {
632
+ background-color: var(--ndw-alpha-primary-007);
633
+ color: var(--ndw-text-primary);
634
+ }
635
+ [ndwButton][secondary]:active, [ndwButton][tertiary]:active {
636
+ background-color: var(--ndw-alpha-primary-015);
637
+ }
638
+ [ndwButton][secondary][alternative], [ndwButton][tertiary][alternative] {
639
+ color: var(--ndw-color-grey-700);
640
+ }
641
+ [ndwButton][secondary][alternative]:hover, [ndwButton][tertiary][alternative]:hover {
642
+ background-color: var(--ndw-alpha-black-007);
643
+ }
644
+ [ndwButton][secondary][alternative]:active, [ndwButton][tertiary][alternative]:active {
645
+ background-color: var(--ndw-alpha-black-015);
646
+ }
647
+ [ndwButton][secondary] {
604
648
  border-color: var(--ndw-background-primary);
605
- color: var(--ndw-foreground-primary);
606
649
  }
607
- [ndwButton][outline]:active {
608
- background-color: var(--ndw-background-primary-hover);
650
+ [ndwButton][secondary]:active {
609
651
  border-color: var(--ndw-background-primary-hover);
610
- color: var(--ndw-foreground-primary-hover);
611
652
  }
612
- [ndwButton][secondary] {
613
- background-color: transparent;
653
+ [ndwButton][secondary][alternative] {
614
654
  border-color: var(--ndw-color-grey-300);
615
- color: var(--ndw-color-grey-700);
616
655
  }
617
- [ndwButton][secondary]:hover {
618
- background-color: var(--ndw-color-grey-500);
656
+ [ndwButton][secondary][alternative]:hover {
619
657
  border-color: var(--ndw-color-grey-500);
620
- color: var(--ndw-color-white);
621
658
  }
622
- [ndwButton][secondary]:active {
623
- background-color: var(--ndw-color-grey-700);
659
+ [ndwButton][secondary][alternative]:active {
624
660
  border-color: var(--ndw-color-grey-700);
625
- color: var(--ndw-color-white);
661
+ }
662
+ [ndwButton][tertiary] {
663
+ border-color: transparent;
664
+ }
665
+ [ndwButton][extra-small] {
666
+ height: var(--ndw-spacing-lg);
667
+ padding-inline: var(--ndw-spacing-2xs);
626
668
  }
627
669
  [ndwButton][large] {
628
670
  height: var(--ndw-spacing-2xl);
@@ -686,7 +728,7 @@
686
728
  line-height: var(--ndw-line-height-md);
687
729
  outline: var(--ndw-border-size-sm) solid transparent;
688
730
  outline-offset: calc(var(--ndw-border-size-sm) * -1);
689
- padding: var(--ndw-spacing-sm);
731
+ padding-inline: var(--ndw-spacing-sm);
690
732
  position: relative;
691
733
  transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out, outline-color 150ms ease-in-out;
692
734
  }
@@ -704,10 +746,22 @@
704
746
  [ndwInput][type=search]::-webkit-search-decoration, [ndwInput][type=search]::-webkit-search-cancel-button, [ndwInput][type=search]::-webkit-search-results-button, [ndwInput][type=search]::-webkit-search-results-decoration {
705
747
  display: none;
706
748
  }
707
- [ndwInput][type=date]::-webkit-calendar-picker-indicator, [ndwInput][type=month]::-webkit-calendar-picker-indicator, [ndwInput][type=time]::-webkit-calendar-picker-indicator, [ndwInput][type=week]::-webkit-calendar-picker-indicator {
749
+ [ndwInput][type=date]::-webkit-calendar-picker-indicator, [ndwInput][type=datetime-local]::-webkit-calendar-picker-indicator, [ndwInput][type=month]::-webkit-calendar-picker-indicator, [ndwInput][type=time]::-webkit-calendar-picker-indicator, [ndwInput][type=week]::-webkit-calendar-picker-indicator {
708
750
  cursor: pointer;
709
751
  opacity: 0;
710
752
  }
753
+ [ndwInput][success] {
754
+ background-color: var(--ndw-color-positive-100);
755
+ border-color: var(--ndw-color-positive-500);
756
+ }
757
+ [ndwInput][success]:hover {
758
+ border-color: var(--ndw-color-grey-300);
759
+ }
760
+ [ndwInput][success]:active, [ndwInput][success]:focus, [ndwInput][success]:focus-visible {
761
+ background-color: var(--ndw-color-white);
762
+ border-color: transparent;
763
+ outline-color: var(--ndw-color-secondary-500);
764
+ }
711
765
  [ndwInput][error] {
712
766
  background-color: var(--ndw-color-critical-100);
713
767
  border-color: var(--ndw-color-critical-500);
@@ -733,7 +787,6 @@
733
787
  select[ndwInput] {
734
788
  appearance: none;
735
789
  cursor: pointer;
736
- padding-top: calc(var(--ndw-spacing-xs) + var(--ndw-border-size-sm));
737
790
  width: 100%;
738
791
  text-overflow: ellipsis;
739
792
  white-space: nowrap;
@@ -749,7 +802,7 @@ select[ndwInput] option:not([disabled]) {
749
802
 
750
803
  textarea[ndwInput] {
751
804
  min-height: 4rem;
752
- padding-top: calc(var(--ndw-spacing-xs) + var(--ndw-border-size-sm));
805
+ padding-block: calc(var(--ndw-spacing-xs) + var(--ndw-border-size-sm));
753
806
  resize: vertical;
754
807
  }
755
808
 
@@ -775,37 +828,36 @@ textarea[ndwInput] {
775
828
  color: var(--ndw-color-grey-400);
776
829
  }
777
830
 
778
- a[ndwLink] {
779
- align-items: baseline;
780
- color: var(--ndw-color-link-400);
831
+ [ndwLink] {
781
832
  display: inline-flex;
782
- font-size: inherit;
833
+ align-items: baseline;
783
834
  gap: var(--ndw-spacing-2xs);
835
+ padding: 0;
836
+ border: 0;
837
+ font-size: inherit;
784
838
  text-decoration: underline var(--ndw-border-size-sm) transparent;
785
839
  text-underline-offset: var(--ndw-border-size-md);
840
+ color: var(--ndw-color-link-400);
841
+ background-color: transparent;
786
842
  transition: text-decoration-color var(--ndw-animation-speed-fast) ease-in-out;
787
843
  }
788
- a[ndwLink] > * {
844
+ [ndwLink] > * {
789
845
  align-self: center;
790
846
  }
791
- a[ndwLink] ndw-icon {
847
+ [ndwLink] ndw-icon {
792
848
  font-size: 1.25em;
793
849
  overflow: hidden;
794
850
  }
795
- a[ndwLink]:hover {
851
+ [ndwLink]:hover {
796
852
  color: var(--ndw-color-link-500);
797
853
  text-decoration-color: var(--ndw-color-link-500);
798
854
  }
799
- a[ndwLink][disabled] {
855
+ [ndwLink][disabled] {
800
856
  color: var(--ndw-color-grey-400);
801
857
  pointer-events: none;
802
858
  user-select: none;
803
859
  }
804
860
 
805
- .ndw-overlay-backdrop {
806
- background-color: var(--ndw-backdrop-color);
807
- }
808
-
809
861
  @keyframes show {
810
862
  from {
811
863
  opacity: 0;
@@ -815,7 +867,7 @@ a[ndwLink][disabled] {
815
867
  }
816
868
  }
817
869
  .cdk-overlay-pane.ndw-popover-panel {
818
- animation: show var(--ndw-animation-speed-default) ease-in;
870
+ animation: show var(--ndw-animation-speed-fast) ease-out;
819
871
  background-color: var(--ndw-color-white);
820
872
  border-radius: var(--ndw-border-radius-md);
821
873
  box-shadow: var(--ndw-elevation-popover);
@@ -834,7 +886,7 @@ a[ndwLink][disabled] {
834
886
  position: relative;
835
887
  width: 100%;
836
888
  }
837
- [ndwButton][menu]:hover {
889
+ [ndwButton][menu]:hover, [ndwButton][menu][active] {
838
890
  background-color: var(--ndw-color-grey-600);
839
891
  border-color: var(--ndw-color-grey-600);
840
892
  color: var(--ndw-color-white);