@ndwnu/design-system 12.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { CoreAutosuggestPanelComponent, CoreAutosuggestDirective, CoreAutosuggestOptionComponent, Image, CoreAutosuggestAddOptionComponent, CoreCheckboxComponent, CoreCheckboxGroupComponent, InputType, CheckableComponent, PillColor, CoreBreadcrumbComponent, CoreBreadcrumbGroupComponent, CoreIconComponent, CoreKeyValueListComponent, CorePillComponent, CoreRouterBreadcrumbsComponent } from '@ndwnu/core';
1
+ import { CoreAutosuggestPanelComponent, CoreAutosuggestDirective, CoreAutosuggestOptionComponent, Image, CoreAutosuggestAddOptionComponent, CoreCheckboxComponent, CoreCheckboxGroupComponent, InputType, CheckableComponent, PillColor, CoreBadgeComponent, CoreBreadcrumbComponent, CoreBreadcrumbGroupComponent, CoreIconComponent, CoreKeyValueListComponent, CorePillComponent, CoreRouterBreadcrumbsComponent } from '@ndwnu/core';
2
2
  export { AutosuggestOption, AutosuggestOptions, AutosuggestSearchFn, IconSize, KeyValueRow } from '@ndwnu/core';
3
3
  import * as _angular_core from '@angular/core';
4
- import { ElementRef, OnInit, AfterContentInit, AfterViewInit, OnDestroy, InjectionToken, EventEmitter, TemplateRef, Signal, OnChanges } from '@angular/core';
4
+ import { OnDestroy, Signal, ElementRef, EventEmitter, TemplateRef, OnInit, AfterContentInit, AfterViewInit, InjectionToken, OnChanges } from '@angular/core';
5
5
  import { ControlValueAccessor, AbstractControl, NgControl } from '@angular/forms';
6
6
  import { Subject, Observable } from 'rxjs';
7
- import { MatCalendarCellClassFunction } from '@angular/material/datepicker';
7
+ import * as _angular_material_datepicker from '@angular/material/datepicker';
8
+ import { DateFilterFn, MatCalendar } from '@angular/material/datepicker';
8
9
  import { Params } from '@angular/router';
9
10
  import * as _ndwnu_design_system from '@ndwnu/design-system';
10
11
  import { Point } from '@angular/cdk/drag-drop';
@@ -65,10 +66,113 @@ declare class CheckboxGroupComponent extends CoreCheckboxGroupComponent {
65
66
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroupComponent, "ndw-checkbox-group", never, {}, {}, never, ["*"], true, never>;
66
67
  }
67
68
 
68
- declare class DatepickerComponent {
69
- dateClass: MatCalendarCellClassFunction<Date>;
69
+ type DatepickerMode = 'single' | 'range' | 'multiple' | 'month';
70
+
71
+ declare class CalendarComponent implements ControlValueAccessor, OnDestroy {
72
+ #private;
73
+ readonly mode: _angular_core.InputSignal<DatepickerMode>;
74
+ readonly disabled: _angular_core.ModelSignal<boolean>;
75
+ readonly minDate: _angular_core.InputSignal<Date | null>;
76
+ readonly maxDate: _angular_core.InputSignal<Date | null>;
77
+ readonly startAt: _angular_core.InputSignal<Date | null>;
78
+ readonly dateEnabledFilter: _angular_core.InputSignal<DateFilterFn<Date | null>>;
79
+ readonly dateWithIndicatorFilter: _angular_core.InputSignal<DateFilterFn<Date | null>>;
80
+ readonly elevated: _angular_core.InputSignal<boolean>;
81
+ protected internalDateEnabledFilter: Signal<(date: Date | null) => boolean>;
82
+ protected readonly calendar: Signal<MatCalendar<any> | undefined>;
83
+ protected readonly calendarElement: Signal<ElementRef<HTMLElement> | undefined>;
84
+ protected readonly value: _angular_core.WritableSignal<Date[]>;
85
+ protected readonly startView: Signal<"month" | "year">;
86
+ protected readonly dateClass: Signal<_angular_material_datepicker.MatCalendarCellClassFunction<Date>>;
87
+ constructor();
88
+ ngOnDestroy(): void;
89
+ private addMouseMoveListener;
90
+ private removeMouseMoveListener;
91
+ private addRangePreviewClasses;
92
+ private removeRangePreviewClasses;
93
+ protected onDateSelected(date: Date | Date[] | null, toggle?: boolean): void;
94
+ protected onMonthSelected(date: Date): void;
95
+ writeValue(value: Date | Date[] | null): void;
96
+ registerOnChange(fn: (value: Date | Date[] | null) => void): void;
97
+ registerOnTouched(_fn: () => void): void;
98
+ setDisabledState?(isDisabled: boolean): void;
99
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CalendarComponent, never>;
100
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalendarComponent, "ndw-calendar", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "dateEnabledFilter": { "alias": "dateEnabledFilter"; "required": false; "isSignal": true; }; "dateWithIndicatorFilter": { "alias": "dateWithIndicatorFilter"; "required": false; "isSignal": true; }; "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; }, never, never, true, never>;
101
+ }
102
+
103
+ type PopoverPosition = 'nextToTriggerButton' | 'overTriggerButton';
104
+ declare class PopoverTriggerDirective implements OnDestroy {
105
+ popoverToggled: EventEmitter<boolean>;
106
+ popoverPosition: _angular_core.InputSignal<PopoverPosition>;
107
+ popoverContent: _angular_core.InputSignal<TemplateRef<unknown>>;
108
+ toggleOnClick: _angular_core.InputSignal<boolean>;
109
+ isOpen: _angular_core.ModelSignal<boolean>;
110
+ toggle(): void;
111
+ private destroyRef;
112
+ private elementRef;
113
+ private overlay;
114
+ private viewContainerRef;
115
+ private focusTrapFactory;
116
+ private overlayRef?;
117
+ ngOnDestroy(): void;
118
+ togglePopover(): void;
119
+ private open;
120
+ private trapFocus;
121
+ private closeOverlayOnEscapeKey;
122
+ private nodeOrParentsHaveAttribute;
123
+ private closeOverlayOnBackdropClick;
124
+ private close;
125
+ private getPopoverPosition;
126
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTriggerDirective, never>;
127
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[ndwPopoverTrigger]", ["ndwPopoverTrigger"], { "popoverPosition": { "alias": "popoverPosition"; "required": false; "isSignal": true; }; "popoverContent": { "alias": "ndwPopoverTrigger"; "required": true; "isSignal": true; }; "toggleOnClick": { "alias": "toggleOnClick"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; }, { "popoverToggled": "popoverToggled"; "isOpen": "isOpenChange"; }, never, never, true, never>;
128
+ }
129
+
130
+ declare class InputDirective implements OnInit {
131
+ set disabled(disabled: boolean);
132
+ get error(): boolean;
133
+ set error(error: boolean);
134
+ set success(success: boolean);
135
+ set id(id: string);
136
+ set ariaDescribedBy(id: string);
137
+ private readonly elementRef;
138
+ private readonly destroyRef;
139
+ private readonly ngControl;
140
+ get element(): HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
141
+ get control(): AbstractControl | null;
142
+ ngOnInit(): void;
143
+ updateErrorAttribute(formFieldError?: boolean): void;
144
+ private setSelectPlaceholderAttribute;
145
+ private updateRequiredAttribute;
146
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputDirective, never>;
147
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InputDirective, "input[ndwInput], select[ndwInput], textarea[ndwInput]", never, {}, {}, never, never, true, never>;
148
+ }
149
+
150
+ declare class DatepickerComponent implements ControlValueAccessor {
151
+ #private;
152
+ readonly mode: _angular_core.InputSignal<DatepickerMode>;
153
+ readonly required: _angular_core.InputSignal<boolean>;
154
+ readonly disabled: _angular_core.ModelSignal<boolean>;
155
+ readonly placeholder: _angular_core.InputSignal<string>;
156
+ readonly openCalendarLabel: _angular_core.InputSignal<string>;
157
+ readonly minDate: _angular_core.InputSignal<Date | null>;
158
+ readonly maxDate: _angular_core.InputSignal<Date | null>;
159
+ readonly dateEnabledFilter: _angular_core.InputSignal<DateFilterFn<Date | null>>;
160
+ readonly dateWithIndicatorFilter: _angular_core.InputSignal<DateFilterFn<Date | null>>;
161
+ readonly input: _angular_core.Signal<InputDirective>;
162
+ protected readonly popoverTrigger: _angular_core.Signal<PopoverTriggerDirective>;
163
+ protected readonly value: _angular_core.ModelSignal<Date[]>;
164
+ protected readonly startAt: _angular_core.Signal<Date | null>;
165
+ protected readonly formattedValue: _angular_core.Signal<string>;
166
+ protected readonly showTags: _angular_core.Signal<boolean>;
167
+ protected onDateInput(input: string): void;
168
+ protected removeDate(date: Date): void;
169
+ protected onDateSelected(date: Date | Date[] | null): void;
170
+ writeValue(value: Date | Date[] | null): void;
171
+ registerOnChange(fn: (value: Date | Date[] | null) => void): void;
172
+ registerOnTouched(_fn: () => void): void;
173
+ setDisabledState?(isDisabled: boolean): void;
70
174
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerComponent, never>;
71
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "ndw-datepicker", never, {}, {}, never, never, true, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "ndw-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "openCalendarLabel": { "alias": "openCalendarLabel"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateEnabledFilter": { "alias": "dateEnabledFilter"; "required": false; "isSignal": true; }; "dateWithIndicatorFilter": { "alias": "dateWithIndicatorFilter"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "value": "valueChange"; }, never, never, true, never>;
72
176
  }
73
177
 
74
178
  declare class ErrorComponent {
@@ -86,6 +190,7 @@ declare class FileUploadComponent implements ControlValueAccessor {
86
190
  readonly disabled: _angular_core.ModelSignal<boolean>;
87
191
  readonly fileUploadText: _angular_core.InputSignal<FileUploadText>;
88
192
  readonly maxFileSizeInBytes: _angular_core.InputSignal<number>;
193
+ readonly mimeTypeMap: _angular_core.InputSignal<Record<string, string>>;
89
194
  readonly readonly: _angular_core.InputSignal<boolean>;
90
195
  readonly uploadDate: _angular_core.InputSignal<string>;
91
196
  readonly draggingOver: _angular_core.ModelSignal<boolean>;
@@ -118,31 +223,11 @@ declare class FileUploadComponent implements ControlValueAccessor {
118
223
  * Ensures that the provided File has a valid MIME type.
119
224
  *
120
225
  * NOTE: Some file extensions are not automatically mapped to a valid MIME type by the operating system.
121
- * In such cases, the MIME_TYPE_MAP is used to assign the correct MIME type.
226
+ * In such cases, the MIME_TYPE_MAP in combination with the mimeTypeMap input is used to assign the correct MIME type.
122
227
  */
123
228
  private ensureFileType;
124
229
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
125
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "ndw-file-upload", never, { "allowedFileTypeRegex": { "alias": "allowedFileTypeRegex"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fileUploadText": { "alias": "fileUploadText"; "required": false; "isSignal": true; }; "maxFileSizeInBytes": { "alias": "maxFileSizeInBytes"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "uploadDate": { "alias": "uploadDate"; "required": false; "isSignal": true; }; "draggingOver": { "alias": "draggingOver"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "incorrectFileSize": { "alias": "incorrectFileSize"; "required": false; "isSignal": true; }; "incorrectFileType": { "alias": "incorrectFileType"; "required": false; "isSignal": true; }; "selectedFile": { "alias": "selectedFile"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "draggingOver": "draggingOverChange"; "error": "errorChange"; "incorrectFileSize": "incorrectFileSizeChange"; "incorrectFileType": "incorrectFileTypeChange"; "selectedFile": "selectedFileChange"; "success": "successChange"; }, never, never, true, never>;
126
- }
127
-
128
- declare class InputDirective implements OnInit {
129
- set disabled(disabled: boolean);
130
- get error(): boolean;
131
- set error(error: boolean);
132
- set success(success: boolean);
133
- set id(id: string);
134
- set ariaDescribedBy(id: string);
135
- private readonly elementRef;
136
- private readonly destroyRef;
137
- private readonly ngControl;
138
- get element(): HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
139
- get control(): AbstractControl | null;
140
- ngOnInit(): void;
141
- updateErrorAttribute(formFieldError?: boolean): void;
142
- private setSelectPlaceholderAttribute;
143
- private updateRequiredAttribute;
144
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputDirective, never>;
145
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InputDirective, "input[ndwInput], select[ndwInput], textarea[ndwInput]", never, {}, {}, never, never, true, never>;
230
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "ndw-file-upload", never, { "allowedFileTypeRegex": { "alias": "allowedFileTypeRegex"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fileUploadText": { "alias": "fileUploadText"; "required": false; "isSignal": true; }; "maxFileSizeInBytes": { "alias": "maxFileSizeInBytes"; "required": false; "isSignal": true; }; "mimeTypeMap": { "alias": "mimeTypeMap"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "uploadDate": { "alias": "uploadDate"; "required": false; "isSignal": true; }; "draggingOver": { "alias": "draggingOver"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "incorrectFileSize": { "alias": "incorrectFileSize"; "required": false; "isSignal": true; }; "incorrectFileType": { "alias": "incorrectFileType"; "required": false; "isSignal": true; }; "selectedFile": { "alias": "selectedFile"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "draggingOver": "draggingOverChange"; "error": "errorChange"; "incorrectFileSize": "incorrectFileSizeChange"; "incorrectFileType": "incorrectFileTypeChange"; "selectedFile": "selectedFileChange"; "success": "successChange"; }, never, never, true, never>;
146
231
  }
147
232
 
148
233
  declare class MonthInputComponent implements ControlValueAccessor, OnInit {
@@ -200,6 +285,7 @@ declare class FormFieldComponent {
200
285
  readonly tooltip: _angular_core.InputSignal<string>;
201
286
  readonly clearButtonClicked: _angular_core.OutputEmitterRef<void>;
202
287
  protected readonly monthInput: _angular_core.Signal<MonthInputComponent | undefined>;
288
+ protected readonly dateInput: _angular_core.Signal<DatepickerComponent | undefined>;
203
289
  protected readonly regularInput: _angular_core.Signal<InputDirective | undefined>;
204
290
  protected readonly input: _angular_core.Signal<InputDirective | undefined>;
205
291
  protected readonly inputType: _angular_core.Signal<InputType | undefined>;
@@ -215,7 +301,7 @@ declare class FormFieldComponent {
215
301
  private setInputId;
216
302
  private setAriaDescribedBy;
217
303
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
218
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormFieldComponent, "ndw-form-field", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "suffixAriaLabel": { "alias": "suffixAriaLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "clearButtonClicked": "clearButtonClicked"; }, ["monthInput", "regularInput"], ["*"], true, never>;
304
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormFieldComponent, "ndw-form-field", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "suffixAriaLabel": { "alias": "suffixAriaLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "clearButtonClicked": "clearButtonClicked"; }, ["monthInput", "dateInput", "regularInput"], ["*"], true, never>;
219
305
  }
220
306
 
221
307
  declare enum FormFieldElement {
@@ -458,22 +544,9 @@ declare class AvatarComponent {
458
544
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "ndw-avatar", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
459
545
  }
460
546
 
461
- declare class BadgeComponent {
462
- /**
463
- * The value of the badge
464
- */
465
- value: _angular_core.InputSignal<number | undefined>;
466
- /**
467
- * The aria label, used by screen readers to give context.
468
- */
469
- ariaLabel: _angular_core.InputSignal<string | undefined>;
470
- /**
471
- * When true, the badge will display values above 99.
472
- * When false (default), the badge will display values above 99 as a dot
473
- */
474
- displayLargeNumbers: _angular_core.InputSignal<boolean>;
547
+ declare class BadgeComponent extends CoreBadgeComponent {
475
548
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
476
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "ndw-badge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "displayLargeNumbers": { "alias": "displayLargeNumbers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
549
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "ndw-badge", never, {}, {}, never, never, true, never>;
477
550
  }
478
551
 
479
552
  type BannerType = 'critical' | 'info' | 'info-grey' | 'warning' | 'positive';
@@ -595,33 +668,6 @@ declare class DashboardCardComponent {
595
668
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardCardComponent, "ndw-dashboard-card", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "imgSource": { "alias": "imgSource"; "required": true; "isSignal": true; }; "link": { "alias": "link"; "required": true; "isSignal": true; }; "linkTarget": { "alias": "linkTarget"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
596
669
  }
597
670
 
598
- type PopoverPosition = 'nextToTriggerButton' | 'overTriggerButton';
599
- declare class PopoverTriggerDirective implements OnDestroy {
600
- popoverToggled: EventEmitter<boolean>;
601
- popoverPosition: _angular_core.InputSignal<PopoverPosition>;
602
- popoverContent: _angular_core.InputSignal<TemplateRef<unknown>>;
603
- toggleOnClick: _angular_core.InputSignal<boolean>;
604
- isOpen: _angular_core.ModelSignal<boolean>;
605
- toggle(): void;
606
- private destroyRef;
607
- private elementRef;
608
- private overlay;
609
- private viewContainerRef;
610
- private focusTrapFactory;
611
- private overlayRef?;
612
- ngOnDestroy(): void;
613
- togglePopover(): void;
614
- private open;
615
- private trapFocus;
616
- private closeOverlayOnEscapeKey;
617
- private nodeOrParentsHaveAttribute;
618
- private closeOverlayOnBackdropClick;
619
- private close;
620
- private getPopoverPosition;
621
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTriggerDirective, never>;
622
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[ndwPopoverTrigger]", ["ndwPopoverTrigger"], { "popoverPosition": { "alias": "popoverPosition"; "required": false; "isSignal": true; }; "popoverContent": { "alias": "ndwPopoverTrigger"; "required": true; "isSignal": true; }; "toggleOnClick": { "alias": "toggleOnClick"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; }, { "popoverToggled": "popoverToggled"; "isOpen": "isOpenChange"; }, never, never, true, never>;
623
- }
624
-
625
671
  declare class DropdownComponent {
626
672
  readonly disabled: _angular_core.InputSignal<boolean>;
627
673
  readonly chevron: _angular_core.InputSignal<boolean>;
@@ -772,7 +818,7 @@ declare class LoaderComponent {
772
818
 
773
819
  declare class MapButtonComponent {
774
820
  #private;
775
- readonly icon: _angular_core.InputSignal<"search" | "direction" | "gps" | "high-res" | "layers" | "polygon" | "zoom-in" | "zoom-out" | "add-traffic-sign" | "add-zone" | "download" | "hectometer" | "low-res" | "zoom-to-content">;
821
+ readonly icon: _angular_core.InputSignal<"search" | "polygon" | "direction" | "gps" | "high-res" | "layers" | "zoom-in" | "zoom-out" | "add-traffic-sign" | "add-zone" | "download" | "hectometer" | "low-res" | "zoom-to-content">;
776
822
  readonly active: _angular_core.InputSignal<boolean>;
777
823
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
778
824
  readonly disabled: _angular_core.InputSignal<boolean>;
@@ -1168,12 +1214,13 @@ declare class TabComponent implements OnInit {
1168
1214
  get content(): TemplatePortal | null;
1169
1215
  title: _angular_core.InputSignal<string>;
1170
1216
  disabled: _angular_core.InputSignal<boolean>;
1217
+ hasError: _angular_core.InputSignal<boolean>;
1171
1218
  active: boolean;
1172
1219
  id: _angular_core.InputSignal<string | number>;
1173
1220
  ngOnInit(): void;
1174
1221
  getNativeElement(): HTMLElement;
1175
1222
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
1176
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "ndw-tab", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1223
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "ndw-tab", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1177
1224
  }
1178
1225
 
1179
1226
  declare class TabGroupComponent {
@@ -1284,5 +1331,5 @@ declare class TooltipDirective implements OnChanges, OnDestroy, OnInit {
1284
1331
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[ndwTooltip]", never, { "text": { "alias": "ndwTooltip"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1285
1332
  }
1286
1333
 
1287
- export { AccordionComponent, AccordionService, AlertComponent, AutoGrowDirective, AutosuggestAddOptionComponent, AutosuggestDirective, AutosuggestOptionComponent, AutosuggestPanelComponent, AvatarComponent, BadgeComponent, BannerComponent, BreadcrumbComponent, BreadcrumbGroupComponent, ButtonDirective, CARD_COMPONENTS, CARD_ID_TOKEN, CardComponent, CardContentComponent, CardFooterComponent, CardHeaderComponent, CheckboxComponent, CheckboxGroupComponent, CollapsibleComponent, DEFAULT_BACKGROUNDS, DashboardCardComponent, DatepickerComponent, DropdownComponent, EditBarActionsComponent, EditBarComponent, EditBarMessageComponent, ErrorComponent, FavoriteComponent, FileUploadComponent, FormFieldComponent, FormFieldElement, HoverableListItemComponent, IconComponent, InfoComponent, InputButtonComponent, InputDirective, InputIconComponent, KeyValueListComponent, LayoutBannersComponent, LayoutComponent, ListComponent, ListItemComponent, LoaderComponent, MAP_BACKGROUNDS, MAP_BACKGROUND_IMAGES, MAP_LAYERS, MAP_LAYER_IMAGES, MODAL_COMPONENTS, MainNavigationComponent, MapButtonComponent, MapDisplayComponent, MapDisplayOptionComponent, MapLegendComponent, MaxCharDirective, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalService, MonthInputComponent, MultiSelectComponent, OptionComponent, OptionGroupComponent, PillComponent, PopoverTriggerDirective, RadioButtonComponent, RadioGroupComponent, RouterBreadcrumbsComponent, SplitterComponent, SummaryCardActionComponent, SummaryCardActionsComponent, SummaryCardComponent, SummaryCardContentComponent, SummaryCardHeaderComponent, SummaryCardSubtitleComponent, SummaryCardTagComponent, SummaryCardTagsComponent, SwitcherComponent, TabComponent, TabGroupComponent, TagComponent, ToastComponent, ToastService, TooltipComponent, TooltipDirective, fontMapButtonIcons, mapButtonIcons, ndwAgGridTheme, svgMapButtonIcons };
1288
- export type { AlertType, AvatarColor, AvatarStatus, BannerType, BaseMapLegendOption, CheckType, CheckboxData, CircleMapLegendOption, DisplayOptionDirection, DisplayOptionType, EditBarPosition, EditBarWidth, Environment, FileUploadText, HoverableListItemAction, IconMapLegendOption, ImageMapLegendOption, LineMapLegendOption, MapBackgroundOption, MapBackgrounds, MapButtonIcon, MapDisplayOption, MapLegendOption, MapLegendOptionGroup, MapLegendOptionType, MapLegendViewMode, MenuItem, ModalSize, OptionGroupMode, PolygonMapLegendOption, PopoverPosition, SelectAllText, SubMenuItem, SummaryActionsView, SwitcherOption, Theme, ToastDimensions };
1334
+ export { AccordionComponent, AccordionService, AlertComponent, AutoGrowDirective, AutosuggestAddOptionComponent, AutosuggestDirective, AutosuggestOptionComponent, AutosuggestPanelComponent, AvatarComponent, BadgeComponent, BannerComponent, BreadcrumbComponent, BreadcrumbGroupComponent, ButtonDirective, CARD_COMPONENTS, CARD_ID_TOKEN, CalendarComponent, CardComponent, CardContentComponent, CardFooterComponent, CardHeaderComponent, CheckboxComponent, CheckboxGroupComponent, CollapsibleComponent, DEFAULT_BACKGROUNDS, DashboardCardComponent, DatepickerComponent, DropdownComponent, EditBarActionsComponent, EditBarComponent, EditBarMessageComponent, ErrorComponent, FavoriteComponent, FileUploadComponent, FormFieldComponent, FormFieldElement, HoverableListItemComponent, IconComponent, InfoComponent, InputButtonComponent, InputDirective, InputIconComponent, KeyValueListComponent, LayoutBannersComponent, LayoutComponent, ListComponent, ListItemComponent, LoaderComponent, MAP_BACKGROUNDS, MAP_BACKGROUND_IMAGES, MAP_LAYERS, MAP_LAYER_IMAGES, MODAL_COMPONENTS, MainNavigationComponent, MapButtonComponent, MapDisplayComponent, MapDisplayOptionComponent, MapLegendComponent, MaxCharDirective, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalService, MonthInputComponent, MultiSelectComponent, OptionComponent, OptionGroupComponent, PillComponent, PopoverTriggerDirective, RadioButtonComponent, RadioGroupComponent, RouterBreadcrumbsComponent, SplitterComponent, SummaryCardActionComponent, SummaryCardActionsComponent, SummaryCardComponent, SummaryCardContentComponent, SummaryCardHeaderComponent, SummaryCardSubtitleComponent, SummaryCardTagComponent, SummaryCardTagsComponent, SwitcherComponent, TabComponent, TabGroupComponent, TagComponent, ToastComponent, ToastService, TooltipComponent, TooltipDirective, fontMapButtonIcons, mapButtonIcons, ndwAgGridTheme, svgMapButtonIcons };
1335
+ export type { AlertType, AvatarColor, AvatarStatus, BannerType, BaseMapLegendOption, CheckType, CheckboxData, CircleMapLegendOption, DatepickerMode, DisplayOptionDirection, DisplayOptionType, EditBarPosition, EditBarWidth, Environment, FileUploadText, HoverableListItemAction, IconMapLegendOption, ImageMapLegendOption, LineMapLegendOption, MapBackgroundOption, MapBackgrounds, MapButtonIcon, MapDisplayOption, MapLegendOption, MapLegendOptionGroup, MapLegendOptionType, MapLegendViewMode, MenuItem, ModalSize, OptionGroupMode, PolygonMapLegendOption, PopoverPosition, SelectAllText, SubMenuItem, SummaryActionsView, SwitcherOption, Theme, ToastDimensions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndwnu/design-system",
3
- "version": "12.0.0",
3
+ "version": "12.1.0",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^20.0.0",
6
6
  "@angular/cdk": "^20.0.0",
@@ -9,7 +9,7 @@
9
9
  "@angular/forms": "^20.0.0",
10
10
  "@angular/material": "^20.0.0",
11
11
  "@angular/router": "^20.0.0",
12
- "@ndwnu/core": "2.0.0",
12
+ "@ndwnu/core": "2.1.0",
13
13
  "ag-grid-angular": "^34.0.2",
14
14
  "ag-grid-community": "^34.0.2",
15
15
  "rxjs": "^7.8.0"
@@ -0,0 +1,17 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ html {
4
+ @include mat.theme(
5
+ (
6
+ color: mat.$orange-palette,
7
+ typography: (
8
+ plain-family: var(--ndw-font-family-body),
9
+ brand-family: var(--ndw-font-family-heading),
10
+ bold-weight: var(--ndw-font-weight-bold),
11
+ medium-weight: var(--ndw-font-weight-bold),
12
+ regular-weight: var(--ndw-font-weight-regular),
13
+ ),
14
+ density: 0,
15
+ )
16
+ );
17
+ }
@@ -1,3 +1,4 @@
1
1
  @forward 'colors';
2
+ @forward 'material';
2
3
  @forward 'typography';
3
4
  @forward 'variables';
@@ -3,41 +3,88 @@
3
3
  :root {
4
4
  @include mat.datepicker-overrides(
5
5
  (
6
- calendar-body-label-text-color: var(--ndw-color-primary),
7
- calendar-date-text-color: var(--ndw-color-black),
6
+ toggle-icon-color: var(--ndw-color-primary),
7
+ calendar-container-background-color: var(--ndw-color-grey-100),
8
+ calendar-container-elevation-shadow: var(--ndw-elevation-content),
9
+ calendar-container-shape: var(--ndw-border-radius-md),
8
10
  calendar-text-font: var(--ndw-font-family-body),
9
11
  calendar-text-size: var(--ndw-font-size-sm),
10
- toggle-icon-color: var(--ndw-color-primary),
12
+ calendar-header-text-size: var(--ndw-font-size-sm),
13
+ calendar-body-label-text-size: var(--ndw-font-size-sm),
14
+ calendar-period-button-text-size: var(--ndw-font-size-sm),
15
+ calendar-date-text-color: var(--ndw-color-text),
16
+ calendar-date-today-outline-color: var(--ndw-color-secondary-200),
17
+ calendar-date-selected-state-background-color: var(--ndw-color-secondary-400),
18
+ calendar-date-today-selected-state-outline-color: var(--ndw-color-secondary-400),
19
+ calendar-date-preview-state-outline-color: var(--ndw-color-secondary-300),
20
+ calendar-date-hover-state-background-color: var(--ndw-color-secondary-300),
21
+ calendar-date-focus-state-background-color: var(--ndw-color-secondary-300),
11
22
  )
12
23
  );
13
24
 
14
- mat-calendar.ndw-calendar {
15
- background-color: var(--ndw-color-white);
16
- border-radius: var(--ndw-border-radius-sm);
17
- }
25
+ mat-calendar {
26
+ --range-preview-border: var(--ndw-border-size-sm) dashed var(--ndw-color-secondary-300);
27
+
28
+ .ndw-date-selected > :first-child {
29
+ background-color: var(--ndw-color-secondary-400) !important;
30
+ color: var(--ndw-color-white) !important;
31
+ }
32
+
33
+ .ndw-date-range-start {
34
+ background-color: var(--ndw-color-secondary-200);
35
+ border-top-left-radius: 50%;
36
+ border-bottom-left-radius: 50%;
37
+ }
18
38
 
19
- button.ndw-date {
20
- border-radius: 50%;
39
+ .ndw-date-range-end {
40
+ background-color: var(--ndw-color-secondary-200);
41
+ border-top-right-radius: 50%;
42
+ border-bottom-right-radius: 50%;
43
+ }
44
+
45
+ .ndw-date-in-range {
46
+ background-color: var(--ndw-color-secondary-200);
47
+ }
21
48
 
22
- &:hover {
23
- background: var(--ndw-color-primary-100);
49
+ .ndw-date-range-start-preview {
50
+ background-color: var(--ndw-color-secondary-100);
51
+ border-top-left-radius: 50%;
52
+ border-bottom-left-radius: 50%;
24
53
  }
25
54
 
26
- &:active {
27
- background: var(--ndw-color-primary-200);
55
+ .ndw-date-range-end-preview {
56
+ background-color: var(--ndw-color-secondary-100);
57
+ border-top-right-radius: 50%;
58
+ border-bottom-right-radius: 50%;
28
59
  }
29
60
 
30
- &.highlighted {
31
- background: var(--ndw-color-secondary-400);
32
- border-radius: 50%;
33
- color: var(--ndw-color-white);
61
+ .ndw-date-in-range-preview {
62
+ background-color: var(--ndw-color-secondary-100);
63
+ }
64
+
65
+ // Add a dot below dates with the ndw-date-indicator class
66
+ .ndw-date-indicator > :first-child {
67
+ &::after {
68
+ content: '';
69
+ background: var(--ndw-color-primary);
70
+ position: absolute;
71
+ bottom: 2px;
72
+ left: calc(50% - 4px);
73
+ width: 8px;
74
+ height: 8px;
75
+ box-sizing: border-box;
76
+ border-radius: 4px;
77
+ }
78
+ }
34
79
 
35
- &:hover {
36
- background: var(--ndw-color-secondary-500);
80
+ // Disable the month view when in 'month' mode
81
+ &.month-picker {
82
+ .mat-calendar-period-button {
83
+ pointer-events: none;
37
84
  }
38
85
 
39
- &:active {
40
- background: var(--ndw-color-secondary-600);
86
+ .mat-calendar-arrow {
87
+ display: none;
41
88
  }
42
89
  }
43
90
  }
@@ -109,7 +109,8 @@
109
109
 
110
110
  // When an ndwInput is contained in an input-container hide the
111
111
  // ndwInput borders and instead put the borders on the container.
112
- .input-container:has(> [ndwInput]) {
112
+ .input-container:has(> [ndwInput]),
113
+ .input-container:has(> ndw-datepicker > [ndwInput]) {
113
114
  @include shared-style();
114
115
 
115
116
  // When input has a ndw-input-icon enable the inline padding
@@ -1,5 +1,12 @@
1
1
  @use '../base/variables' as *;
2
2
 
3
+ $breakpoints: (
4
+ 2xs: $ndw-screen-2xs,
5
+ xs: $ndw-screen-xs,
6
+ sm: $ndw-screen-sm,
7
+ md: $ndw-screen-md,
8
+ );
9
+
3
10
  @mixin column($span) {
4
11
  grid-column: span $span;
5
12
  }
@@ -99,3 +106,60 @@
99
106
  }
100
107
  }
101
108
  }
109
+
110
+ .ndw-c-grid {
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ container-type: inline-size;
114
+ container-name: ndw-c-grid;
115
+
116
+ @mixin ndw-c-col-span($size, $important: false) {
117
+ $flag: if($important, '!important', '');
118
+ flex: 0 0 calc((100% / 12) * #{$size}) #{$flag};
119
+ max-width: calc((100% / 12) * #{$size}) #{$flag};
120
+ }
121
+
122
+ @mixin ndw-c-breakpoint($name, $min-width) {
123
+ @container ndw-c-grid (min-width: #{$min-width}) {
124
+ @content;
125
+ }
126
+ }
127
+
128
+ @for $i from 1 through 12 {
129
+ .ndw-c-col-#{$i} {
130
+ @include ndw-c-col-span($i, false);
131
+ }
132
+ }
133
+
134
+ @each $name, $width in $breakpoints {
135
+ @include ndw-c-breakpoint($name, $width) {
136
+ @for $i from 1 through 12 {
137
+ .ndw-c-col-#{$name}-#{$i} {
138
+ @include ndw-c-col-span($i, true);
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ $order-range: 0 1 2 3 4 5;
145
+
146
+ @each $i in $order-range {
147
+ .ndw-c-order-#{$i} {
148
+ order: $i !important;
149
+ }
150
+ }
151
+
152
+ @each $name, $width in $breakpoints {
153
+ @container ndw-c-grid (min-width: #{$width}) {
154
+ @each $i in $order-range {
155
+ .ndw-c-order-#{$name}-#{$i} {
156
+ order: $i !important;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+
163
+ .ndw-c-col {
164
+ flex: 1 1 100%;
165
+ }