@ndwnu/design-system 12.0.0 → 12.2.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,114 @@ 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
+ protected onPopoverOpenChange(isOpen: boolean): void;
171
+ writeValue(value: Date | Date[] | null): void;
172
+ registerOnChange(fn: (value: Date | Date[] | null) => void): void;
173
+ registerOnTouched(_fn: () => void): void;
174
+ setDisabledState?(isDisabled: boolean): void;
70
175
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerComponent, never>;
71
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "ndw-datepicker", never, {}, {}, never, never, true, never>;
176
+ 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
177
  }
73
178
 
74
179
  declare class ErrorComponent {
@@ -86,6 +191,7 @@ declare class FileUploadComponent implements ControlValueAccessor {
86
191
  readonly disabled: _angular_core.ModelSignal<boolean>;
87
192
  readonly fileUploadText: _angular_core.InputSignal<FileUploadText>;
88
193
  readonly maxFileSizeInBytes: _angular_core.InputSignal<number>;
194
+ readonly mimeTypeMap: _angular_core.InputSignal<Record<string, string>>;
89
195
  readonly readonly: _angular_core.InputSignal<boolean>;
90
196
  readonly uploadDate: _angular_core.InputSignal<string>;
91
197
  readonly draggingOver: _angular_core.ModelSignal<boolean>;
@@ -118,31 +224,11 @@ declare class FileUploadComponent implements ControlValueAccessor {
118
224
  * Ensures that the provided File has a valid MIME type.
119
225
  *
120
226
  * 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.
227
+ * In such cases, the MIME_TYPE_MAP in combination with the mimeTypeMap input is used to assign the correct MIME type.
122
228
  */
123
229
  private ensureFileType;
124
230
  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>;
231
+ 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
232
  }
147
233
 
148
234
  declare class MonthInputComponent implements ControlValueAccessor, OnInit {
@@ -200,6 +286,7 @@ declare class FormFieldComponent {
200
286
  readonly tooltip: _angular_core.InputSignal<string>;
201
287
  readonly clearButtonClicked: _angular_core.OutputEmitterRef<void>;
202
288
  protected readonly monthInput: _angular_core.Signal<MonthInputComponent | undefined>;
289
+ protected readonly dateInput: _angular_core.Signal<DatepickerComponent | undefined>;
203
290
  protected readonly regularInput: _angular_core.Signal<InputDirective | undefined>;
204
291
  protected readonly input: _angular_core.Signal<InputDirective | undefined>;
205
292
  protected readonly inputType: _angular_core.Signal<InputType | undefined>;
@@ -215,7 +302,7 @@ declare class FormFieldComponent {
215
302
  private setInputId;
216
303
  private setAriaDescribedBy;
217
304
  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>;
305
+ 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
306
  }
220
307
 
221
308
  declare enum FormFieldElement {
@@ -247,6 +334,33 @@ declare class InputIconComponent {
247
334
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputIconComponent, "ndw-input-icon", never, {}, {}, never, ["*"], true, never>;
248
335
  }
249
336
 
337
+ declare class MarkdownEditorComponent implements ControlValueAccessor {
338
+ private readonly ngControl;
339
+ readonly uuid: _angular_core.InputSignal<`${string}-${string}-${string}-${string}-${string}`>;
340
+ readonly value: _angular_core.ModelSignal<string>;
341
+ readonly disabled: _angular_core.ModelSignal<boolean>;
342
+ readonly error: _angular_core.InputSignal<boolean>;
343
+ readonly readonly: _angular_core.InputSignal<boolean>;
344
+ readonly success: _angular_core.InputSignal<boolean>;
345
+ readonly required: _angular_core.InputSignal<boolean>;
346
+ readonly toolbar: _angular_core.InputSignal<string[]>;
347
+ readonly bold: _angular_core.Signal<boolean>;
348
+ readonly header: _angular_core.Signal<boolean>;
349
+ readonly italic: _angular_core.Signal<boolean>;
350
+ readonly quote: _angular_core.Signal<boolean>;
351
+ readonly unorderedList: _angular_core.Signal<boolean>;
352
+ readonly orderedList: _angular_core.Signal<boolean>;
353
+ readonly taskList: _angular_core.Signal<boolean>;
354
+ get isRequiredOrHasRequiredValidator(): boolean | null;
355
+ constructor();
356
+ writeValue(value: string): void;
357
+ registerOnChange(fn: (value: string | null | undefined) => void): void;
358
+ registerOnTouched(): void;
359
+ setDisabledState?(isDisabled: boolean): void;
360
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MarkdownEditorComponent, never>;
361
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MarkdownEditorComponent, "ndw-markdown-editor", never, { "uuid": { "alias": "uuid"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
362
+ }
363
+
250
364
  type OptionGroupMode = 'single' | 'multiple';
251
365
 
252
366
  declare class OptionComponent {
@@ -458,22 +572,9 @@ declare class AvatarComponent {
458
572
  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
573
  }
460
574
 
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>;
575
+ declare class BadgeComponent extends CoreBadgeComponent {
475
576
  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>;
577
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "ndw-badge", never, {}, {}, never, never, true, never>;
477
578
  }
478
579
 
479
580
  type BannerType = 'critical' | 'info' | 'info-grey' | 'warning' | 'positive';
@@ -595,33 +696,6 @@ declare class DashboardCardComponent {
595
696
  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
697
  }
597
698
 
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
699
  declare class DropdownComponent {
626
700
  readonly disabled: _angular_core.InputSignal<boolean>;
627
701
  readonly chevron: _angular_core.InputSignal<boolean>;
@@ -772,7 +846,7 @@ declare class LoaderComponent {
772
846
 
773
847
  declare class MapButtonComponent {
774
848
  #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">;
849
+ 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
850
  readonly active: _angular_core.InputSignal<boolean>;
777
851
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
778
852
  readonly disabled: _angular_core.InputSignal<boolean>;
@@ -992,6 +1066,7 @@ declare class MultiSelectComponent {
992
1066
  protected readonly lastCheckedElementId: _angular_core.ModelSignal<string | number | null | undefined>;
993
1067
  protected readonly searchInputValue: _angular_core.ModelSignal<string>;
994
1068
  protected readonly isOpen: _angular_core.WritableSignal<boolean>;
1069
+ protected readonly viewItems: _angular_core.Signal<CheckboxData[]>;
995
1070
  readonly selectAmount: _angular_core.Signal<number>;
996
1071
  readonly noSearchResults: _angular_core.Signal<boolean>;
997
1072
  filterSearch(value: string): boolean;
@@ -1168,25 +1243,41 @@ declare class TabComponent implements OnInit {
1168
1243
  get content(): TemplatePortal | null;
1169
1244
  title: _angular_core.InputSignal<string>;
1170
1245
  disabled: _angular_core.InputSignal<boolean>;
1246
+ hasError: _angular_core.InputSignal<boolean>;
1171
1247
  active: boolean;
1172
1248
  id: _angular_core.InputSignal<string | number>;
1173
1249
  ngOnInit(): void;
1174
1250
  getNativeElement(): HTMLElement;
1175
1251
  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>;
1252
+ 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
1253
  }
1178
1254
 
1179
- declare class TabGroupComponent {
1255
+ declare class TabGroupComponent implements OnDestroy {
1256
+ private readonly _injector;
1257
+ private readonly _destroyRef;
1180
1258
  private readonly _tabs;
1181
1259
  private readonly _tabButtons;
1182
- tabs: _angular_core.Signal<TabComponent[]>;
1260
+ private readonly _tabGroupContainer;
1183
1261
  hasPadding: _angular_core.InputSignal<boolean>;
1184
1262
  activeTabId: _angular_core.ModelSignal<string | number | undefined>;
1185
1263
  inlinePadding: _angular_core.InputSignal<number>;
1264
+ private readonly _scrollLeft;
1265
+ private readonly _scrollWidth;
1266
+ private readonly _clientWidth;
1267
+ tabs: _angular_core.Signal<TabComponent[]>;
1268
+ canScrollLeft: _angular_core.Signal<boolean>;
1269
+ canScrollRight: _angular_core.Signal<boolean>;
1270
+ private _resizeObserver?;
1186
1271
  constructor();
1272
+ ngOnDestroy(): void;
1273
+ private _setupScrollDetection;
1274
+ private _updateScrollState;
1275
+ scrollTo(direction: 'left' | 'right'): void;
1187
1276
  selectTab(index: number): void;
1188
1277
  onKeyDown(event: KeyboardEvent): void;
1189
1278
  private getNextEnabledIndex;
1279
+ private getFirstEnabledIndex;
1280
+ private getLastEnabledIndex;
1190
1281
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabGroupComponent, never>;
1191
1282
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabGroupComponent, "ndw-tab-group", never, { "hasPadding": { "alias": "hasPadding"; "required": false; "isSignal": true; }; "activeTabId": { "alias": "activeTabId"; "required": false; "isSignal": true; }; "inlinePadding": { "alias": "inlinePadding"; "required": false; "isSignal": true; }; }, { "activeTabId": "activeTabIdChange"; }, ["_tabs"], never, true, never>;
1192
1283
  }
@@ -1284,5 +1375,5 @@ declare class TooltipDirective implements OnChanges, OnDestroy, OnInit {
1284
1375
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[ndwTooltip]", never, { "text": { "alias": "ndwTooltip"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1285
1376
  }
1286
1377
 
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 };
1378
+ 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, MarkdownEditorComponent, 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 };
1379
+ 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.2.0",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^20.0.0",
6
6
  "@angular/cdk": "^20.0.0",
@@ -9,7 +9,8 @@
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
+ "@github/markdown-toolbar-element": "2.2.3",
13
14
  "ag-grid-angular": "^34.0.2",
14
15
  "ag-grid-community": "^34.0.2",
15
16
  "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
  }
@@ -90,17 +90,17 @@
90
90
  outline-width: 1px;
91
91
  }
92
92
 
93
- .input-container:has(> [ndwInput][error]) {
93
+ .input-container:has([ndwInput][error]) {
94
94
  background-color: var(--ndw-color-critical-100);
95
95
  border-color: var(--ndw-color-critical-500);
96
96
  }
97
97
 
98
98
  // Add input container right padding when select element is used
99
- .input-container:has(> select[ndwInput]) {
99
+ .input-container:has(select[ndwInput]) {
100
100
  padding-inline-end: var(--ndw-spacing-xs);
101
101
  }
102
102
 
103
- .input-container[error]:has(> [ndwInput]:is(:active, :focus, :focus-visible)) {
103
+ .input-container[error]:has([ndwInput]:is(:active, :focus, :focus-visible)) {
104
104
  background-color: var(--ndw-color-white);
105
105
  select[ndwInput] {
106
106
  background-color: var(--ndw-color-white);
@@ -109,9 +109,11 @@
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
113
  @include shared-style();
114
114
 
115
+ gap: var(--ndw-spacing-xs);
116
+
115
117
  // When input has a ndw-input-icon enable the inline padding
116
118
  &:has(> ndw-input-icon) {
117
119
  padding-inline: var(--ndw-spacing-xs);
@@ -120,8 +122,6 @@
120
122
  padding-inline-end: var(--ndw-spacing-xs);
121
123
  }
122
124
 
123
- gap: var(--ndw-spacing-xs);
124
-
125
125
  // Any elements before the input have a lighter grey color
126
126
  > *:has(~ [ndwInput]) {
127
127
  color: var(--ndw-color-grey-400);
@@ -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
+ }