@ndwnu/design-system 1.0.3 → 1.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.
Files changed (104) hide show
  1. package/components/alert/alert.component.d.ts +13 -0
  2. package/components/alert/alert.model.d.ts +6 -0
  3. package/components/alert/index.d.ts +2 -0
  4. package/components/breadcrumb/breadcrumb.component.d.ts +8 -0
  5. package/components/breadcrumb/index.d.ts +1 -0
  6. package/components/breadcrumb-group/breadcrumb-group.component.d.ts +7 -0
  7. package/components/breadcrumb-group/index.d.ts +1 -0
  8. package/components/card/card-content/card-content.component.d.ts +5 -0
  9. package/components/card/card-content/index.d.ts +1 -0
  10. package/components/card/card-footer/card-footer.component.d.ts +6 -0
  11. package/components/card/card-footer/index.d.ts +1 -0
  12. package/components/card/card-header/card-header.component.d.ts +8 -0
  13. package/components/card/card-header/index.d.ts +1 -0
  14. package/components/card/card.component.d.ts +8 -2
  15. package/components/card/index.d.ts +3 -0
  16. package/components/dropdown/dropdown.component.d.ts +11 -4
  17. package/components/dropdown/index.d.ts +0 -1
  18. package/components/form-field/checkbox/checkbox.component.d.ts +1 -2
  19. package/components/form-field/checkbox-group/checkbox-group.component.d.ts +3 -1
  20. package/components/form-field/form-field.component.d.ts +3 -3
  21. package/components/form-field/input/input.directive.d.ts +6 -0
  22. package/components/form-field/radio-button/radio-button.component.d.ts +7 -4
  23. package/components/form-field/radio-group/radio-group.component.d.ts +9 -1
  24. package/components/icon/icon.component.d.ts +9 -6
  25. package/components/icon/index.d.ts +0 -2
  26. package/components/index.d.ts +8 -2
  27. package/components/main-navigation/main-navigation.model.d.ts +1 -0
  28. package/components/main-navigation-menu/main-navigation-menu.component.d.ts +1 -3
  29. package/components/modal/index.d.ts +1 -0
  30. package/components/modal/modal-trigger.directive.d.ts +8 -12
  31. package/components/modal/modal.service.d.ts +16 -0
  32. package/components/multi-select/checkbox-data.interface.d.ts +5 -0
  33. package/components/multi-select/index.d.ts +3 -0
  34. package/components/multi-select/multi-select.component.d.ts +27 -0
  35. package/components/multi-select/select-all-text.interface.d.ts +4 -0
  36. package/components/popover/index.d.ts +1 -0
  37. package/components/popover/popover-trigger.directive.d.ts +27 -0
  38. package/components/removable-pill/index.d.ts +1 -0
  39. package/components/removable-pill/removable-pill.component.d.ts +7 -0
  40. package/components/router-breadcrumbs/index.d.ts +1 -0
  41. package/components/router-breadcrumbs/router-breadcrumbs.component.d.ts +15 -0
  42. package/components/tooltip/tooltip.directive.d.ts +3 -2
  43. package/core/styles/ndw-styles.scss +184 -120
  44. package/core/styles/nwb-styles.scss +146 -114
  45. package/esm2022/components/alert/alert.component.mjs +34 -0
  46. package/esm2022/components/alert/alert.model.mjs +8 -0
  47. package/esm2022/components/alert/index.mjs +3 -0
  48. package/esm2022/components/badge/badge.component.mjs +2 -2
  49. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +15 -0
  50. package/esm2022/components/breadcrumb/index.mjs +2 -0
  51. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +21 -0
  52. package/esm2022/components/breadcrumb-group/index.mjs +2 -0
  53. package/esm2022/components/card/card-content/card-content.component.mjs +11 -0
  54. package/esm2022/components/card/card-content/index.mjs +2 -0
  55. package/esm2022/components/card/card-footer/card-footer.component.mjs +14 -0
  56. package/esm2022/components/card/card-footer/index.mjs +2 -0
  57. package/esm2022/components/card/card-header/card-header.component.mjs +20 -0
  58. package/esm2022/components/card/card-header/index.mjs +2 -0
  59. package/esm2022/components/card/card.component.mjs +22 -5
  60. package/esm2022/components/card/index.mjs +4 -1
  61. package/esm2022/components/collapsible/collapsible.animation.mjs +3 -3
  62. package/esm2022/components/collapsible/collapsible.component.mjs +3 -3
  63. package/esm2022/components/dropdown/dropdown.component.mjs +27 -7
  64. package/esm2022/components/dropdown/index.mjs +1 -2
  65. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +4 -11
  66. package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +7 -3
  67. package/esm2022/components/form-field/error/error.component.mjs +3 -3
  68. package/esm2022/components/form-field/form-field.component.mjs +10 -10
  69. package/esm2022/components/form-field/info/info.component.mjs +2 -2
  70. package/esm2022/components/form-field/input/input.directive.mjs +33 -2
  71. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +28 -10
  72. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +45 -5
  73. package/esm2022/components/icon/icon.component.mjs +33 -16
  74. package/esm2022/components/icon/index.mjs +1 -3
  75. package/esm2022/components/index.mjs +9 -3
  76. package/esm2022/components/main-navigation/main-navigation.component.mjs +3 -3
  77. package/esm2022/components/main-navigation/main-navigation.model.mjs +1 -1
  78. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +4 -8
  79. package/esm2022/components/modal/index.mjs +2 -1
  80. package/esm2022/components/modal/modal-trigger.directive.mjs +23 -54
  81. package/esm2022/components/modal/modal.service.mjs +57 -0
  82. package/esm2022/components/multi-select/checkbox-data.interface.mjs +2 -0
  83. package/esm2022/components/multi-select/index.mjs +4 -0
  84. package/esm2022/components/multi-select/multi-select.component.mjs +76 -0
  85. package/esm2022/components/multi-select/select-all-text.interface.mjs +2 -0
  86. package/esm2022/components/popover/index.mjs +2 -0
  87. package/esm2022/components/popover/popover-trigger.directive.mjs +183 -0
  88. package/esm2022/components/removable-pill/index.mjs +2 -0
  89. package/esm2022/components/removable-pill/removable-pill.component.mjs +21 -0
  90. package/esm2022/components/router-breadcrumbs/index.mjs +2 -0
  91. package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +37 -0
  92. package/esm2022/components/tab/tab.component.mjs +2 -2
  93. package/esm2022/components/tooltip/tooltip.component.mjs +2 -2
  94. package/esm2022/components/tooltip/tooltip.directive.mjs +4 -3
  95. package/fesm2022/ndwnu-design-system.mjs +642 -202
  96. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  97. package/package.json +4 -7
  98. package/assets/icons/icons.json +0 -878
  99. package/components/dropdown/dropdown-trigger.directive.d.ts +0 -23
  100. package/components/icon/icon.model.d.ts +0 -5
  101. package/components/icon/icon.service.d.ts +0 -9
  102. package/esm2022/components/dropdown/dropdown-trigger.directive.mjs +0 -95
  103. package/esm2022/components/icon/icon.model.mjs +0 -2
  104. package/esm2022/components/icon/icon.service.mjs +0 -26
@@ -0,0 +1,57 @@
1
+ import { Overlay } from '@angular/cdk/overlay';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import { DestroyRef, inject, Injectable } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { EMPTY, Subject } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export class ModalService {
8
+ constructor() {
9
+ this.destroyRef = inject(DestroyRef);
10
+ this.overlay = inject(Overlay);
11
+ this.isOpen$ = new Subject();
12
+ this.isOpen = false;
13
+ }
14
+ detach() {
15
+ this.overlayRef?.detach();
16
+ this.isOpen = false;
17
+ this.isOpen$.next(this.isOpen);
18
+ }
19
+ dispose() {
20
+ this.overlayRef?.dispose();
21
+ }
22
+ open(templateRef, viewContainerRef) {
23
+ if (this.isOpen) {
24
+ return;
25
+ }
26
+ const templatePortal = new TemplatePortal(templateRef, viewContainerRef);
27
+ this.overlayRef = this.overlay.create({
28
+ hasBackdrop: true,
29
+ backdropClass: 'ndw-overlay-backdrop',
30
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
31
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
32
+ });
33
+ this.overlayRef.attach(templatePortal);
34
+ this.isOpen = true;
35
+ this.isOpen$.next(this.isOpen);
36
+ this.actions()
37
+ .pipe(takeUntilDestroyed(this.destroyRef))
38
+ .subscribe(() => {
39
+ this.detach();
40
+ });
41
+ }
42
+ actions() {
43
+ if (!this.overlayRef) {
44
+ return EMPTY;
45
+ }
46
+ return this.overlayRef._outsidePointerEvents;
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ModalService, providedIn: 'root' }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ModalService, decorators: [{
52
+ type: Injectable,
53
+ args: [{
54
+ providedIn: 'root',
55
+ }]
56
+ }] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLbEQsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRWhDLFdBQU0sR0FBRyxLQUFLLENBQUM7S0E0Q3hCO0lBekNRLE1BQU07UUFDWCxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLElBQUksQ0FBQyxXQUFpQyxFQUFFLGdCQUFrQztRQUMvRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDcEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLHNCQUFzQjtZQUNyQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFO1NBQzNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztJQUMvQyxDQUFDOzhHQWpEVSxZQUFZO2tIQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuXG4gIHB1YmxpYyBpc09wZW4kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGlzT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuXG4gIHB1YmxpYyBkZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuJC5uZXh0KHRoaXMuaXNPcGVuKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW4odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnbmR3LW92ZXJsYXktYmFja2Ryb3AnLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGVtcGxhdGVQb3J0YWwpO1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbiQubmV4dCh0aGlzLmlzT3Blbik7XG5cbiAgICB0aGlzLmFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5kZXRhY2goKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3Rpb25zKCk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZi5fb3V0c2lkZVBvaW50ZXJFdmVudHM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZGF0YS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L2NoZWNrYm94LWRhdGEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoZWNrYm94RGF0YSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './checkbox-data.interface';
2
+ export * from './multi-select.component';
3
+ export * from './select-all-text.interface';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC1kYXRhLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL211bHRpLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtYWxsLXRleHQuaW50ZXJmYWNlJztcbiJdfQ==
@@ -0,0 +1,76 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input, model, viewChild, } from '@angular/core';
2
+ import { PopoverTriggerDirective } from '../popover';
3
+ import { CheckboxComponent, CheckboxGroupComponent, FormFieldComponent } from '../form-field';
4
+ import { CommonModule } from '@angular/common';
5
+ import { DropdownComponent } from '../dropdown';
6
+ import { IconComponent } from '../icon';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ export class MultiSelectComponent {
10
+ constructor() {
11
+ this.disabled = input(false);
12
+ this.dropdownTrigger = viewChild.required(PopoverTriggerDirective);
13
+ this.buttonText = input.required();
14
+ this.prefixIcon = input('');
15
+ this.chevron = input(false);
16
+ this.searchInputValue = model('');
17
+ this.searchPlaceholder = input('');
18
+ this.noResultText = input('');
19
+ this.selectAllText = input({ deselect: '', select: '' });
20
+ this.lastCheckedElementId = model();
21
+ this.selectAmount = computed(() => this.dataSource().filter((checkbox) => checkbox.value).length);
22
+ this.noSearchResults = computed(() => this.dataSource().filter((checkbox) => checkbox.label.toLowerCase().includes(this.searchInputValue().toLowerCase())).length === 0);
23
+ this.dataSource = model([]);
24
+ }
25
+ filterSearch(value) {
26
+ return value.toLowerCase().includes(this.searchInputValue().toLowerCase());
27
+ }
28
+ searchInputChanged(event) {
29
+ const input = event.target;
30
+ this.searchInputValue.set(input.value);
31
+ }
32
+ checkboxChanged(id) {
33
+ this.dataSource.update((checkboxes) => {
34
+ return checkboxes?.map((checkbox) => checkbox.id === id ? { ...checkbox, value: !checkbox.value } : checkbox);
35
+ });
36
+ }
37
+ toggleSelectAll(selectAll = true) {
38
+ this.dataSource.update((checkboxes) => {
39
+ return checkboxes.map((checkbox) => ({ ...checkbox, value: selectAll }));
40
+ });
41
+ }
42
+ isOpenChanged(isOpen) {
43
+ if (isOpen) {
44
+ this.dataSource.set(this.dataSource()
45
+ .slice()
46
+ .sort((a, b) => Number(b.value) - Number(a.value)));
47
+ this.searchInputValue.set('');
48
+ this.determineLastCheckedElement();
49
+ }
50
+ }
51
+ determineLastCheckedElement() {
52
+ if (this.dataSource().some((checkbox) => !checkbox.value)) {
53
+ const sourceList = [...this.dataSource()];
54
+ const lastChecked = sourceList.reverse().find((checkbox) => checkbox.value);
55
+ this.lastCheckedElementId.set(lastChecked ? lastChecked.id : null);
56
+ }
57
+ else {
58
+ this.lastCheckedElementId.set(null);
59
+ }
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: MultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: MultiSelectComponent, isStandalone: true, selector: "ndw-multi-select", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: true, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", isSignal: true, isRequired: false, transformFunction: null }, searchInputValue: { classPropertyName: "searchInputValue", publicName: "searchInputValue", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, selectAllText: { classPropertyName: "selectAllText", publicName: "selectAllText", isSignal: true, isRequired: false, transformFunction: null }, lastCheckedElementId: { classPropertyName: "lastCheckedElementId", publicName: "lastCheckedElementId", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchInputValue: "searchInputValueChange", lastCheckedElementId: "lastCheckedElementIdChange", dataSource: "dataSourceChange" }, viewQueries: [{ propertyName: "dropdownTrigger", first: true, predicate: PopoverTriggerDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ndw-dropdown\n prefixIcon=\"filter_alt\"\n [selectAmount]=\"selectAmount()\"\n (removablePillClicked)=\"toggleSelectAll(false)\"\n (isOpenChange)=\"isOpenChanged($event)\"\n [buttonText]=\"buttonText()\"\n [disabled]=\"disabled()\"\n [chevron]=\"chevron()\"\n [prefixIcon]=\"prefixIcon()\"\n>\n <ndw-form-field>\n <input\n ndwInput\n type=\"search\"\n [value]=\"searchInputValue()\"\n (input)=\"searchInputChanged($event)\"\n [placeholder]=\"searchPlaceholder()\"\n />\n </ndw-form-field>\n @if (noSearchResults()) {\n <div class=\"no-search-results\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n } @else {\n <ndw-checkbox-group class=\"multi-select-container\">\n @for (checkbox of dataSource(); track checkbox.id) {\n @if (filterSearch(checkbox.label)) {\n <ndw-checkbox\n [ngClass]=\"{ 'last-checked': lastCheckedElementId() === checkbox.id }\"\n [checked]=\"checkbox.value\"\n (checkedChange)=\"checkboxChanged(checkbox.id)\"\n >\n {{ checkbox.label }}\n </ndw-checkbox>\n }\n }\n </ndw-checkbox-group>\n }\n <div class=\"ndw-dialog-footer\">\n @if (selectAmount() === dataSource().length) {\n <a ndwLink tabindex=\"0\" (click)=\"toggleSelectAll(false)\" (keydown)=\"toggleSelectAll(false)\">\n {{ selectAllText().deselect }}\n </a>\n } @else {\n <a ndwLink tabindex=\"0\" (click)=\"toggleSelectAll(true)\" (keydown)=\"toggleSelectAll(true)\">\n {{ selectAllText().select }}\n </a>\n }\n <div class=\"ndw-dialog-footer-total\">\n Geselecteerd: <strong>{{ selectAmount() }}</strong>\n </div>\n </div>\n</ndw-dropdown>\n", styles: [".no-search-results{display:grid;justify-items:center;text-align:center;width:var(--multi-select-default-width);margin:auto;font-size:var(--ndw-font-size-sm);padding:0 var(--ndw-spacing-md);color:var(--ndw-color-grey-400)}.multi-select-container{max-height:var(--multi-select-default-width);min-width:var(--multi-select-default-width);overflow-y:auto}.multi-select-container ndw-checkbox.last-checked{width:100%;height:auto;padding-bottom:var(--ndw-spacing-sm);margin-bottom:var(--ndw-spacing-sm);border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.ndw-dialog-footer{display:flex;margin-top:var(--ndw-spacing-md);border-top:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);font-size:var(--ndw-font-size-xs);padding-top:var(--ndw-spacing-md)}.ndw-dialog-footer a[ndwLink]{cursor:pointer}.ndw-dialog-footer .ndw-dialog-footer-total{display:flex;flex:1;justify-content:end;gap:var(--ndw-spacing-2xs)}\n"], dependencies: [{ kind: "component", type: FormFieldComponent, selector: "ndw-form-field", inputs: ["label", "disabled", "error", "info", "tooltip"] }, { kind: "component", type: CheckboxComponent, selector: "ndw-checkbox", inputs: ["checked", "switch", "disabled", "error", "indeterminate", "required"], outputs: ["checkedChange"] }, { kind: "component", type: CheckboxGroupComponent, selector: "ndw-checkbox-group" }, { kind: "component", type: DropdownComponent, selector: "ndw-dropdown", inputs: ["disabled", "chevron", "buttonText", "prefixIcon", "selectAmount"], outputs: ["removablePillClicked", "isOpenChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["interactive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: MultiSelectComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'ndw-multi-select', standalone: true, imports: [
67
+ PopoverTriggerDirective,
68
+ FormFieldComponent,
69
+ CheckboxComponent,
70
+ CheckboxGroupComponent,
71
+ DropdownComponent,
72
+ CommonModule,
73
+ IconComponent,
74
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ndw-dropdown\n prefixIcon=\"filter_alt\"\n [selectAmount]=\"selectAmount()\"\n (removablePillClicked)=\"toggleSelectAll(false)\"\n (isOpenChange)=\"isOpenChanged($event)\"\n [buttonText]=\"buttonText()\"\n [disabled]=\"disabled()\"\n [chevron]=\"chevron()\"\n [prefixIcon]=\"prefixIcon()\"\n>\n <ndw-form-field>\n <input\n ndwInput\n type=\"search\"\n [value]=\"searchInputValue()\"\n (input)=\"searchInputChanged($event)\"\n [placeholder]=\"searchPlaceholder()\"\n />\n </ndw-form-field>\n @if (noSearchResults()) {\n <div class=\"no-search-results\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n } @else {\n <ndw-checkbox-group class=\"multi-select-container\">\n @for (checkbox of dataSource(); track checkbox.id) {\n @if (filterSearch(checkbox.label)) {\n <ndw-checkbox\n [ngClass]=\"{ 'last-checked': lastCheckedElementId() === checkbox.id }\"\n [checked]=\"checkbox.value\"\n (checkedChange)=\"checkboxChanged(checkbox.id)\"\n >\n {{ checkbox.label }}\n </ndw-checkbox>\n }\n }\n </ndw-checkbox-group>\n }\n <div class=\"ndw-dialog-footer\">\n @if (selectAmount() === dataSource().length) {\n <a ndwLink tabindex=\"0\" (click)=\"toggleSelectAll(false)\" (keydown)=\"toggleSelectAll(false)\">\n {{ selectAllText().deselect }}\n </a>\n } @else {\n <a ndwLink tabindex=\"0\" (click)=\"toggleSelectAll(true)\" (keydown)=\"toggleSelectAll(true)\">\n {{ selectAllText().select }}\n </a>\n }\n <div class=\"ndw-dialog-footer-total\">\n Geselecteerd: <strong>{{ selectAmount() }}</strong>\n </div>\n </div>\n</ndw-dropdown>\n", styles: [".no-search-results{display:grid;justify-items:center;text-align:center;width:var(--multi-select-default-width);margin:auto;font-size:var(--ndw-font-size-sm);padding:0 var(--ndw-spacing-md);color:var(--ndw-color-grey-400)}.multi-select-container{max-height:var(--multi-select-default-width);min-width:var(--multi-select-default-width);overflow-y:auto}.multi-select-container ndw-checkbox.last-checked{width:100%;height:auto;padding-bottom:var(--ndw-spacing-sm);margin-bottom:var(--ndw-spacing-sm);border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.ndw-dialog-footer{display:flex;margin-top:var(--ndw-spacing-md);border-top:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);font-size:var(--ndw-font-size-xs);padding-top:var(--ndw-spacing-md)}.ndw-dialog-footer a[ndwLink]{cursor:pointer}.ndw-dialog-footer .ndw-dialog-footer-total{display:flex;flex:1;justify-content:end;gap:var(--ndw-spacing-2xs)}\n"] }]
75
+ }] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBbUJ4QyxNQUFNLE9BQU8sb0JBQW9CO0lBaEJqQztRQWlCa0IsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3RDLGVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0Is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LEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDOzhHQWpFVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixncURBRXNCLHVCQUF1QixnRUNsQzlFLGt2REFzREEsMDlCRC9CSSxrQkFBa0Isc0hBQ2xCLGlCQUFpQixzS0FDakIsc0JBQXNCLCtEQUN0QixpQkFBaUIsd0xBQ2pCLFlBQVksNkhBQ1osYUFBYTs7MkZBSUosb0JBQW9CO2tCQWhCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQO3dCQUNQLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLGFBQWE7cUJBQ2QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9wb3BvdmVyJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50LCBDaGVja2JveEdyb3VwQ29tcG9uZW50LCBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7IENoZWNrYm94RGF0YSB9IGZyb20gJy4vY2hlY2tib3gtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24nO1xuaW1wb3J0IHsgU2VsZWN0QWxsVGV4dCB9IGZyb20gJy4vc2VsZWN0LWFsbC10ZXh0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25kdy1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJ211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtdWx0aS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlLFxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBDaGVja2JveEdyb3VwQ29tcG9uZW50LFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93blRyaWdnZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQoUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYnV0dG9uVGV4dCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHByZWZpeEljb24gPSBpbnB1dCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBjaGV2cm9uID0gaW5wdXQoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoSW5wdXRWYWx1ZSA9IG1vZGVsKCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaFBsYWNlaG9sZGVyID0gaW5wdXQoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRUZXh0ID0gaW5wdXQoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsVGV4dCA9IGlucHV0PFNlbGVjdEFsbFRleHQ+KHsgZGVzZWxlY3Q6ICcnLCBzZWxlY3Q6ICcnIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgbGFzdENoZWNrZWRFbGVtZW50SWQgPSBtb2RlbDxDaGVja2JveERhdGFbJ2lkJ10gfCBudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QW1vdW50ID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5kYXRhU291cmNlKCkuZmlsdGVyKChjaGVja2JveDogQ2hlY2tib3hEYXRhKSA9PiBjaGVja2JveC52YWx1ZSkubGVuZ3RoLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9TZWFyY2hSZXN1bHRzID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcigoY2hlY2tib3g6IENoZWNrYm94RGF0YSkgPT5cbiAgICAgICAgY2hlY2tib3gubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaElucHV0VmFsdWUoKS50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICkubGVuZ3RoID09PSAwLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IG1vZGVsPENoZWNrYm94RGF0YVtdPihbXSk7XG5cbiAgcHVibGljIGZpbHRlclNlYXJjaCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hJbnB1dFZhbHVlKCkudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoSW5wdXRDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5zZWFyY2hJbnB1dFZhbHVlLnNldChpbnB1dC52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tib3hDaGFuZ2VkKGlkOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlKChjaGVja2JveGVzOiBDaGVja2JveERhdGFbXSkgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrYm94ZXM/Lm1hcCgoY2hlY2tib3g6IENoZWNrYm94RGF0YSkgPT5cbiAgICAgICAgY2hlY2tib3guaWQgPT09IGlkID8geyAuLi5jaGVja2JveCwgdmFsdWU6ICFjaGVja2JveC52YWx1ZSB9IDogY2hlY2tib3gsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlbGVjdEFsbChzZWxlY3RBbGwgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZSgoY2hlY2tib3hlczogQ2hlY2tib3hEYXRhW10pID0+IHtcbiAgICAgIHJldHVybiBjaGVja2JveGVzLm1hcCgoY2hlY2tib3g6IENoZWNrYm94RGF0YSkgPT4gKHsgLi4uY2hlY2tib3gsIHZhbHVlOiBzZWxlY3RBbGwgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlzT3BlbkNoYW5nZWQoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzT3Blbikge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNldChcbiAgICAgICAgdGhpcy5kYXRhU291cmNlKClcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi52YWx1ZSkgLSBOdW1iZXIoYS52YWx1ZSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRWYWx1ZS5zZXQoJycpO1xuICAgICAgdGhpcy5kZXRlcm1pbmVMYXN0Q2hlY2tlZEVsZW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZUxhc3RDaGVja2VkRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKCkuc29tZSgoY2hlY2tib3gpID0+ICFjaGVja2JveC52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHNvdXJjZUxpc3QgPSBbLi4udGhpcy5kYXRhU291cmNlKCldO1xuICAgICAgY29uc3QgbGFzdENoZWNrZWQgPSBzb3VyY2VMaXN0LnJldmVyc2UoKS5maW5kKChjaGVja2JveCkgPT4gY2hlY2tib3gudmFsdWUpO1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZEVsZW1lbnRJZC5zZXQobGFzdENoZWNrZWQgPyBsYXN0Q2hlY2tlZC5pZCA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhc3RDaGVja2VkRWxlbWVudElkLnNldChudWxsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZHctZHJvcGRvd25cbiAgcHJlZml4SWNvbj1cImZpbHRlcl9hbHRcIlxuICBbc2VsZWN0QW1vdW50XT1cInNlbGVjdEFtb3VudCgpXCJcbiAgKHJlbW92YWJsZVBpbGxDbGlja2VkKT1cInRvZ2dsZVNlbGVjdEFsbChmYWxzZSlcIlxuICAoaXNPcGVuQ2hhbmdlKT1cImlzT3BlbkNoYW5nZWQoJGV2ZW50KVwiXG4gIFtidXR0b25UZXh0XT1cImJ1dHRvblRleHQoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW2NoZXZyb25dPVwiY2hldnJvbigpXCJcbiAgW3ByZWZpeEljb25dPVwicHJlZml4SWNvbigpXCJcbj5cbiAgPG5kdy1mb3JtLWZpZWxkPlxuICAgIDxpbnB1dFxuICAgICAgbmR3SW5wdXRcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgW3ZhbHVlXT1cInNlYXJjaElucHV0VmFsdWUoKVwiXG4gICAgICAoaW5wdXQpPVwic2VhcmNoSW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyKClcIlxuICAgIC8+XG4gIDwvbmR3LWZvcm0tZmllbGQ+XG4gIEBpZiAobm9TZWFyY2hSZXN1bHRzKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibm8tc2VhcmNoLXJlc3VsdHNcIj5cbiAgICAgIDxuZHctaWNvbj5zZW50aW1lbnRfZGlzc2F0aXNmaWVkPC9uZHctaWNvbj5cbiAgICAgIHt7IG5vUmVzdWx0VGV4dCgpIH19XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxuZHctY2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJtdWx0aS1zZWxlY3QtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChjaGVja2JveCBvZiBkYXRhU291cmNlKCk7IHRyYWNrIGNoZWNrYm94LmlkKSB7XG4gICAgICAgIEBpZiAoZmlsdGVyU2VhcmNoKGNoZWNrYm94LmxhYmVsKSkge1xuICAgICAgICAgIDxuZHctY2hlY2tib3hcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xhc3QtY2hlY2tlZCc6IGxhc3RDaGVja2VkRWxlbWVudElkKCkgPT09IGNoZWNrYm94LmlkIH1cIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tib3gudmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwiY2hlY2tib3hDaGFuZ2VkKGNoZWNrYm94LmlkKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgY2hlY2tib3gubGFiZWwgfX1cbiAgICAgICAgICA8L25kdy1jaGVja2JveD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvbmR3LWNoZWNrYm94LWdyb3VwPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJuZHctZGlhbG9nLWZvb3RlclwiPlxuICAgIEBpZiAoc2VsZWN0QW1vdW50KCkgPT09IGRhdGFTb3VyY2UoKS5sZW5ndGgpIHtcbiAgICAgIDxhIG5kd0xpbmsgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdEFsbChmYWxzZSlcIiAoa2V5ZG93bik9XCJ0b2dnbGVTZWxlY3RBbGwoZmFsc2UpXCI+XG4gICAgICAgIHt7IHNlbGVjdEFsbFRleHQoKS5kZXNlbGVjdCB9fVxuICAgICAgPC9hPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGEgbmR3TGluayB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwidG9nZ2xlU2VsZWN0QWxsKHRydWUpXCIgKGtleWRvd24pPVwidG9nZ2xlU2VsZWN0QWxsKHRydWUpXCI+XG4gICAgICAgIHt7IHNlbGVjdEFsbFRleHQoKS5zZWxlY3QgfX1cbiAgICAgIDwvYT5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cIm5kdy1kaWFsb2ctZm9vdGVyLXRvdGFsXCI+XG4gICAgICBHZXNlbGVjdGVlcmQ6IDxzdHJvbmc+e3sgc2VsZWN0QW1vdW50KCkgfX08L3N0cm9uZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25kdy1kcm9wZG93bj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFsbC10ZXh0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9tdWx0aS1zZWxlY3Qvc2VsZWN0LWFsbC10ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3RBbGxUZXh0IHtcbiAgZGVzZWxlY3Q6IHN0cmluZztcbiAgc2VsZWN0OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './popover-trigger.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvcG9wb3Zlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLXRyaWdnZXIuZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,183 @@
1
+ import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
2
+ import { Overlay } from '@angular/cdk/overlay';
3
+ import { TemplatePortal } from '@angular/cdk/portal';
4
+ import { DestroyRef, Directive, ElementRef, EventEmitter, HostListener, inject, input, model, Output, ViewContainerRef, } from '@angular/core';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { take } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ export class PopoverTriggerDirective {
9
+ constructor() {
10
+ this.popoverToggled = new EventEmitter();
11
+ this.popoverPosition = input('nextToTriggerButton');
12
+ this.popoverContent = input.required({ alias: 'ndwPopoverTrigger' });
13
+ this.toggleOnClick = input(true);
14
+ this.isOpen = model(false);
15
+ this.destroyRef = inject(DestroyRef);
16
+ this.elementRef = inject((ElementRef));
17
+ this.overlay = inject(Overlay);
18
+ this.viewContainerRef = inject(ViewContainerRef);
19
+ this.focusTrapFactory = inject(ConfigurableFocusTrapFactory);
20
+ }
21
+ toggle() {
22
+ if (!this.toggleOnClick()) {
23
+ return;
24
+ }
25
+ this.isOpen.set(!this.isOpen());
26
+ this.togglePopover();
27
+ }
28
+ ngOnDestroy() {
29
+ this.isOpen.set(false);
30
+ this.togglePopover();
31
+ }
32
+ togglePopover() {
33
+ if (this.isOpen()) {
34
+ this.open();
35
+ }
36
+ else {
37
+ this.close();
38
+ }
39
+ this.popoverToggled.emit(this.isOpen());
40
+ }
41
+ open() {
42
+ const positions = this.getPopoverPosition(this.popoverPosition());
43
+ const templatePortal = new TemplatePortal(this.popoverContent(), this.viewContainerRef);
44
+ this.overlayRef = this.overlay.create({
45
+ hasBackdrop: true,
46
+ backdropClass: 'cdk-overlay-transparent-backdrop',
47
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
48
+ positionStrategy: this.overlay
49
+ .position()
50
+ .flexibleConnectedTo(this.elementRef)
51
+ .withPositions(positions),
52
+ });
53
+ this.overlayRef.attach(templatePortal);
54
+ this.overlayRef.hostElement.addEventListener('click', (event) => {
55
+ const target = event.target;
56
+ if (this.nodeOrParentsHaveAttribute(target, 'ndwPopoverCloseTrigger')) {
57
+ this.isOpen.set(false);
58
+ this.togglePopover();
59
+ }
60
+ });
61
+ this.trapFocus(this.overlayRef);
62
+ this.closeOverlayOnEscapeKey(this.overlayRef);
63
+ this.closeOverlayOnBackdropClick(this.overlayRef);
64
+ }
65
+ trapFocus(overlayRef) {
66
+ this.focusTrapFactory.create(overlayRef.overlayElement);
67
+ }
68
+ closeOverlayOnEscapeKey(overlayRef) {
69
+ overlayRef.overlayElement.onkeydown = (event) => {
70
+ if (event.key === 'Escape') {
71
+ this.isOpen.set(false);
72
+ this.togglePopover();
73
+ }
74
+ };
75
+ }
76
+ nodeOrParentsHaveAttribute(node, attribute) {
77
+ let next = node;
78
+ while (next) {
79
+ if (next.hasAttribute(attribute)) {
80
+ return true;
81
+ }
82
+ next = next.parentElement;
83
+ }
84
+ return false;
85
+ }
86
+ closeOverlayOnBackdropClick(overlayRef) {
87
+ overlayRef
88
+ .backdropClick()
89
+ .pipe(takeUntilDestroyed(this.destroyRef), take(1))
90
+ .subscribe(() => {
91
+ this.isOpen.set(false);
92
+ this.togglePopover();
93
+ });
94
+ }
95
+ close() {
96
+ this.overlayRef?.dispose();
97
+ this.elementRef.nativeElement.focus();
98
+ }
99
+ getPopoverPosition(popoverPosition) {
100
+ if (popoverPosition === 'overTriggerButton') {
101
+ return [
102
+ {
103
+ originX: 'start',
104
+ originY: 'bottom',
105
+ overlayX: 'start',
106
+ overlayY: 'bottom',
107
+ panelClass: 'ndw-popover-panel',
108
+ },
109
+ {
110
+ originX: 'end',
111
+ originY: 'bottom',
112
+ overlayX: 'end',
113
+ overlayY: 'bottom',
114
+ panelClass: 'ndw-popover-panel',
115
+ },
116
+ {
117
+ originX: 'start',
118
+ originY: 'top',
119
+ overlayX: 'start',
120
+ overlayY: 'top',
121
+ panelClass: 'ndw-popover-panel',
122
+ },
123
+ {
124
+ originX: 'end',
125
+ originY: 'top',
126
+ overlayX: 'end',
127
+ overlayY: 'top',
128
+ panelClass: 'ndw-popover-panel',
129
+ },
130
+ ];
131
+ }
132
+ return [
133
+ {
134
+ originX: 'start',
135
+ originY: 'bottom',
136
+ overlayX: 'start',
137
+ overlayY: 'top',
138
+ offsetY: 4,
139
+ panelClass: 'ndw-popover-panel',
140
+ },
141
+ {
142
+ originX: 'end',
143
+ originY: 'bottom',
144
+ overlayX: 'end',
145
+ overlayY: 'top',
146
+ offsetY: 4,
147
+ panelClass: 'ndw-popover-panel',
148
+ },
149
+ {
150
+ originX: 'start',
151
+ originY: 'top',
152
+ overlayX: 'start',
153
+ overlayY: 'bottom',
154
+ offsetY: -4,
155
+ panelClass: 'ndw-popover-panel',
156
+ },
157
+ {
158
+ originX: 'end',
159
+ originY: 'top',
160
+ overlayX: 'end',
161
+ overlayY: 'bottom',
162
+ offsetY: -4,
163
+ panelClass: 'ndw-popover-panel',
164
+ },
165
+ ];
166
+ }
167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: PopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
168
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: PopoverTriggerDirective, isStandalone: true, selector: "[ndwPopoverTrigger]", inputs: { popoverPosition: { classPropertyName: "popoverPosition", publicName: "popoverPosition", isSignal: true, isRequired: false, transformFunction: null }, popoverContent: { classPropertyName: "popoverContent", publicName: "ndwPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, toggleOnClick: { classPropertyName: "toggleOnClick", publicName: "toggleOnClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { popoverToggled: "popoverToggled", isOpen: "isOpenChange" }, host: { listeners: { "click": "toggle()" } }, exportAs: ["ndwPopoverTrigger"], ngImport: i0 }); }
169
+ }
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
171
+ type: Directive,
172
+ args: [{
173
+ selector: '[ndwPopoverTrigger]',
174
+ standalone: true,
175
+ exportAs: 'ndwPopoverTrigger',
176
+ }]
177
+ }], propDecorators: { popoverToggled: [{
178
+ type: Output
179
+ }], toggle: [{
180
+ type: HostListener,
181
+ args: ['click']
182
+ }] } });
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFxQixPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUVOLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU81QixNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBTW1CLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN2RCxvQkFBZSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBdUIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFXckIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsTUFBTSxDQUEwQixDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FB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bUI7YUFDaEM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDWCxVQUFVLEVBQUUsbUJBQW1CO2FBQ2hDO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBM0tVLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs4QkFFa0IsY0FBYztzQkFBOUIsTUFBTTtnQkFPQSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25kd1BvcG92ZXJUcmlnZ2VyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnbmR3UG9wb3ZlclRyaWdnZXInLFxufSlcbmV4cG9ydCBjbGFzcyBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcG9wb3ZlclRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHB1YmxpYyBwb3BvdmVyUG9zaXRpb24gPSBpbnB1dCgnbmV4dFRvVHJpZ2dlckJ1dHRvbicpO1xuICBwdWJsaWMgcG9wb3ZlckNvbnRlbnQgPSBpbnB1dC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oeyBhbGlhczogJ25kd1BvcG92ZXJUcmlnZ2VyJyB9KTtcbiAgcHVibGljIHRvZ2dsZU9uQ2xpY2sgPSBpbnB1dCh0cnVlKTtcbiAgcHVibGljIGlzT3BlbiA9IG1vZGVsKGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvZ2dsZU9uQ2xpY2soKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzT3Blbi5zZXQoIXRoaXMuaXNPcGVuKCkpO1xuICAgIHRoaXMudG9nZ2xlUG9wb3ZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgZm9jdXNUcmFwRmFjdG9yeSA9IGluamVjdChDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5KTtcblxuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMudG9nZ2xlUG9wb3ZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLnBvcG92ZXJUb2dnbGVkLmVtaXQodGhpcy5pc09wZW4oKSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW4oKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gdGhpcy5nZXRQb3BvdmVyUG9zaXRpb24odGhpcy5wb3BvdmVyUG9zaXRpb24oKSk7XG4gICAgY29uc3QgdGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3BvdmVyQ29udGVudCgpLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKSxcbiAgICB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlUG9ydGFsKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICBpZiAodGhpcy5ub2RlT3JQYXJlbnRzSGF2ZUF0dHJpYnV0ZSh0YXJnZXQsICduZHdQb3BvdmVyQ2xvc2VUcmlnZ2VyJykpIHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYXBGb2N1cyh0aGlzLm92ZXJsYXlSZWYpO1xuICAgIHRoaXMuY2xvc2VPdmVybGF5T25Fc2NhcGVLZXkodGhpcy5vdmVybGF5UmVmKTtcbiAgICB0aGlzLmNsb3NlT3ZlcmxheU9uQmFja2Ryb3BDbGljayh0aGlzLm92ZXJsYXlSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFwRm9jdXMob3ZlcmxheVJlZjogT3ZlcmxheVJlZik6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUob3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3ZlcmxheU9uRXNjYXBlS2V5KG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50Lm9ua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbm9kZU9yUGFyZW50c0hhdmVBdHRyaWJ1dGUobm9kZTogSFRNTEVsZW1lbnQgfCBudWxsLCBhdHRyaWJ1dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBuZXh0ID0gbm9kZTtcbiAgICB3aGlsZSAobmV4dCkge1xuICAgICAgaWYgKG5leHQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBuZXh0ID0gbmV4dC5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3ZlcmxheU9uQmFja2Ryb3BDbGljayhvdmVybGF5UmVmOiBPdmVybGF5UmVmKTogdm9pZCB7XG4gICAgb3ZlcmxheVJlZlxuICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9wb3ZlclBvc2l0aW9uKHBvcG92ZXJQb3NpdGlvbjogc3RyaW5nKTogQ29ubmVjdGVkUG9zaXRpb25bXSB7XG4gICAgaWYgKHBvcG92ZXJQb3NpdGlvbiA9PT0gJ292ZXJUcmlnZ2VyQnV0dG9uJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICduZHctcG9wb3Zlci1wYW5lbCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICduZHctcG9wb3Zlci1wYW5lbCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnbmR3LXBvcG92ZXItcGFuZWwnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnbmR3LXBvcG92ZXItcGFuZWwnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9mZnNldFk6IDQsXG4gICAgICAgIHBhbmVsQ2xhc3M6ICduZHctcG9wb3Zlci1wYW5lbCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICBvZmZzZXRZOiA0LFxuICAgICAgICBwYW5lbENsYXNzOiAnbmR3LXBvcG92ZXItcGFuZWwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIG9mZnNldFk6IC00LFxuICAgICAgICBwYW5lbENsYXNzOiAnbmR3LXBvcG92ZXItcGFuZWwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgb2Zmc2V0WTogLTQsXG4gICAgICAgIHBhbmVsQ2xhc3M6ICduZHctcG9wb3Zlci1wYW5lbCcsXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './removable-pill.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvcmVtb3ZhYmxlLXBpbGwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmVtb3ZhYmxlLXBpbGwuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Component, HostBinding, input } from '@angular/core';
2
+ import { IconComponent } from '../icon';
3
+ import * as i0 from "@angular/core";
4
+ export class RemovablePillComponent {
5
+ constructor() {
6
+ this.disabled = input(false);
7
+ }
8
+ get tabindexAttr() {
9
+ return this.disabled() ? -1 : 0;
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RemovablePillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: RemovablePillComponent, isStandalone: true, selector: "ndw-removable-pill", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.tabindex": "this.tabindexAttr" } }, ngImport: i0, template: "<ng-content /> <ndw-icon>close</ndw-icon>\n", styles: [":host{border-radius:45px;padding:0 var(--ndw-spacing-2xs) 0 var(--ndw-spacing-xs);display:inline-grid;grid-template-columns:auto 1fr;cursor:pointer;background:var(--ndw-color-primary-050);border:var(--ndw-border-size-sm) solid var(--ndw-color-primary);color:var(--ndw-color-primary);font-size:var(--ndw-font-size-sm);outline:none;align-items:center;height:1.5rem;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{display:grid;font-size:var(--ndw-font-size-sm);width:var(--ndw-spacing-md)}:host:hover{background-color:var(--ndw-color-primary);border:var(--ndw-border-size-sm) solid var(--ndw-color-primary);color:var(--ndw-color-white)}:host:active,:host:focus{background-color:var(--ndw-color-primary-600);border:var(--ndw-border-size-sm) solid var(--ndw-color-link-400);color:var(--ndw-color-white)}:host[disabled]{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-400);color:var(--ndw-color-grey-400)}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["interactive"] }] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RemovablePillComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'ndw-removable-pill', standalone: true, imports: [IconComponent], template: "<ng-content /> <ndw-icon>close</ndw-icon>\n", styles: [":host{border-radius:45px;padding:0 var(--ndw-spacing-2xs) 0 var(--ndw-spacing-xs);display:inline-grid;grid-template-columns:auto 1fr;cursor:pointer;background:var(--ndw-color-primary-050);border:var(--ndw-border-size-sm) solid var(--ndw-color-primary);color:var(--ndw-color-primary);font-size:var(--ndw-font-size-sm);outline:none;align-items:center;height:1.5rem;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{display:grid;font-size:var(--ndw-font-size-sm);width:var(--ndw-spacing-md)}:host:hover{background-color:var(--ndw-color-primary);border:var(--ndw-border-size-sm) solid var(--ndw-color-primary);color:var(--ndw-color-white)}:host:active,:host:focus{background-color:var(--ndw-color-primary-600);border:var(--ndw-border-size-sm) solid var(--ndw-color-link-400);color:var(--ndw-color-white)}:host[disabled]{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-400);color:var(--ndw-color-grey-400)}\n"] }]
17
+ }], propDecorators: { tabindexAttr: [{
18
+ type: HostBinding,
19
+ args: ['attr.tabindex']
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZhYmxlLXBpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL3JlbW92YWJsZS1waWxsL3JlbW92YWJsZS1waWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9yZW1vdmFibGUtcGlsbC9yZW1vdmFibGUtcGlsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFTeEMsTUFBTSxPQUFPLHNCQUFzQjtJQVBuQztRQVFTLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FNaEM7SUFKQyxJQUNXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0FOVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyUkNWbkMsNkNBQ0EseWdDRE1ZLGFBQWE7OzJGQUdaLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUVQLENBQUMsYUFBYSxDQUFDOzhCQU9iLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25kdy1yZW1vdmFibGUtcGlsbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW1vdmFibGUtcGlsbC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtJY29uQ29tcG9uZW50XSxcbiAgc3R5bGVVcmw6ICcuL3JlbW92YWJsZS1waWxsLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVtb3ZhYmxlUGlsbENvbXBvbmVudCB7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBwdWJsaWMgZ2V0IHRhYmluZGV4QXR0cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkKCkgPyAtMSA6IDA7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IC8+IDxuZHctaWNvbj5jbG9zZTwvbmR3LWljb24+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './router-breadcrumbs.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvcm91dGVyLWJyZWFkY3J1bWJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JvdXRlci1icmVhZGNydW1icy5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,37 @@
1
+ import { AsyncPipe } from '@angular/common';
2
+ import { Component, inject } from '@angular/core';
3
+ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
4
+ import { filter, map } from 'rxjs';
5
+ import { BreadcrumbComponent } from '../breadcrumb';
6
+ import { BreadcrumbGroupComponent } from '../breadcrumb-group';
7
+ import * as i0 from "@angular/core";
8
+ export const breadcrumbRouteDataKey = 'breadcrumb';
9
+ export class RouterBreadcrumbsComponent {
10
+ constructor() {
11
+ this.route = inject(ActivatedRoute);
12
+ this.router = inject(Router);
13
+ this.breadcrumbs$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd), map(() => this.getBreadcrumbs()));
14
+ }
15
+ getBreadcrumbs() {
16
+ let route = this.route.snapshot;
17
+ const breadcrumbs = [];
18
+ while (route) {
19
+ const title = route.data[breadcrumbRouteDataKey];
20
+ const url = route.pathFromRoot
21
+ .flatMap((route) => route.url.filter((segment) => segment.path))
22
+ .join('/');
23
+ if (title && url) {
24
+ breadcrumbs.push({ url, title });
25
+ }
26
+ route = route.firstChild;
27
+ }
28
+ return breadcrumbs;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RouterBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: RouterBreadcrumbsComponent, isStandalone: true, selector: "ndw-router-breadcrumbs", ngImport: i0, template: "<ndw-breadcrumb-group>\n @for (breadcrumb of breadcrumbs$ | async; track breadcrumb.url) {\n <ndw-breadcrumb [link]=\"breadcrumb.url\">{{ breadcrumb.title }}</ndw-breadcrumb>\n }\n</ndw-breadcrumb-group>\n", dependencies: [{ kind: "component", type: BreadcrumbGroupComponent, selector: "ndw-breadcrumb-group" }, { kind: "component", type: BreadcrumbComponent, selector: "ndw-breadcrumb", inputs: ["link"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RouterBreadcrumbsComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ selector: 'ndw-router-breadcrumbs', standalone: true, imports: [BreadcrumbGroupComponent, BreadcrumbComponent, AsyncPipe], template: "<ndw-breadcrumb-group>\n @for (breadcrumb of breadcrumbs$ | async; track breadcrumb.url) {\n <ndw-breadcrumb [link]=\"breadcrumb.url\">{{ breadcrumb.title }}</ndw-breadcrumb>\n }\n</ndw-breadcrumb-group>\n" }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWJyZWFkY3J1bWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9yb3V0ZXItYnJlYWRjcnVtYnMvcm91dGVyLWJyZWFkY3J1bWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9yb3V0ZXItYnJlYWRjcnVtYnMvcm91dGVyLWJyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUEwQixhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUkvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxZQUFZLENBQUM7QUFRbkQsTUFBTSxPQUFPLDBCQUEwQjtJQU52QztRQU9tQixVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsaUJBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxFQUNqRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ2pDLENBQUM7S0FxQkg7SUFuQlMsY0FBYztRQUNwQixJQUFJLEtBQUssR0FBa0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUUxQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxZQUFZO2lCQUMzQixPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUViLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUVELEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzhHQTNCVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixrRkNqQnZDLG9OQUtBLDRDRFNZLHdCQUF3QixpRUFBRSxtQkFBbUIsd0VBQUUsU0FBUzs7MkZBR3ZELDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCcmVhZGNydW1iR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9icmVhZGNydW1iLWdyb3VwJztcblxudHlwZSBSb3V0ZUJyZWFkY3J1bWIgPSB7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH07XG5cbmV4cG9ydCBjb25zdCBicmVhZGNydW1iUm91dGVEYXRhS2V5ID0gJ2JyZWFkY3J1bWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctcm91dGVyLWJyZWFkY3J1bWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0JyZWFkY3J1bWJHcm91cENvbXBvbmVudCwgQnJlYWRjcnVtYkNvbXBvbmVudCwgQXN5bmNQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvdXRlci1icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlckJyZWFkY3J1bWJzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJyZWFkY3J1bWJzJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgbWFwKCgpID0+IHRoaXMuZ2V0QnJlYWRjcnVtYnMoKSksXG4gICk7XG5cbiAgcHJpdmF0ZSBnZXRCcmVhZGNydW1icygpOiBSb3V0ZUJyZWFkY3J1bWJbXSB7XG4gICAgbGV0IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCA9IHRoaXMucm91dGUuc25hcHNob3Q7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IFJvdXRlQnJlYWRjcnVtYltdID0gW107XG5cbiAgICB3aGlsZSAocm91dGUpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gcm91dGUuZGF0YVticmVhZGNydW1iUm91dGVEYXRhS2V5XTtcbiAgICAgIGNvbnN0IHVybCA9IHJvdXRlLnBhdGhGcm9tUm9vdFxuICAgICAgICAuZmxhdE1hcCgocm91dGUpID0+IHJvdXRlLnVybC5maWx0ZXIoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aCkpXG4gICAgICAgIC5qb2luKCcvJyk7XG5cbiAgICAgIGlmICh0aXRsZSAmJiB1cmwpIHtcbiAgICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IHVybCwgdGl0bGUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICByZXR1cm4gYnJlYWRjcnVtYnM7XG4gIH1cbn1cbiIsIjxuZHctYnJlYWRjcnVtYi1ncm91cD5cbiAgQGZvciAoYnJlYWRjcnVtYiBvZiBicmVhZGNydW1icyQgfCBhc3luYzsgdHJhY2sgYnJlYWRjcnVtYi51cmwpIHtcbiAgICA8bmR3LWJyZWFkY3J1bWIgW2xpbmtdPVwiYnJlYWRjcnVtYi51cmxcIj57eyBicmVhZGNydW1iLnRpdGxlIH19PC9uZHctYnJlYWRjcnVtYj5cbiAgfVxuPC9uZHctYnJlYWRjcnVtYi1ncm91cD5cbiJdfQ==
@@ -24,11 +24,11 @@ export class TabComponent {
24
24
  this.active.set(true);
25
25
  }
26
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabComponent, isStandalone: true, selector: "ndw-tab", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange" }, host: { listeners: { "click": "onClick($event)", "keydown": "onTabKeyDown($event)" }, properties: { "attr.active": "this.activeAttribute", "attr.role": "this.role", "attr.tabindex": "this.tabIndex" } }, ngImport: i0, template: "<ng-content />\n", styles: [":host{border-bottom:var(--ndw-border-size-lg) solid transparent;color:var(--ndw-color-grey-300);cursor:pointer;display:block;font-weight:700;padding:var(--ndw-spacing-md) 0;position:relative;transition:border-bottom .2s ease-out,color .2s ease-out}:host:hover{border-color:var(--ndw-color-grey-400);color:var(--ndw-color-grey-400)}:host:active,:host:focus{border-color:transparent;color:var(--ndw-color-grey-300)}:host[active]{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}:host[active]:hover{border-color:var(--ndw-color-primary-hover);color:var(--ndw-color-primary-hover)}:host[active]:active{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}\n"] }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabComponent, isStandalone: true, selector: "ndw-tab", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange" }, host: { listeners: { "click": "onClick($event)", "keydown": "onTabKeyDown($event)" }, properties: { "attr.active": "this.activeAttribute", "attr.role": "this.role", "attr.tabindex": "this.tabIndex" } }, ngImport: i0, template: "<ng-content />\n", styles: [":host{border-bottom:var(--ndw-border-size-lg) solid transparent;color:var(--ndw-color-grey-400);cursor:pointer;display:block;font-weight:700;padding:var(--ndw-spacing-md) 0;position:relative;transition:border-bottom .2s ease-out,color .2s ease-out}:host:hover{border-color:var(--ndw-color-grey-500);color:var(--ndw-color-grey-500)}:host:active,:host:focus{border-color:transparent;color:var(--ndw-color-grey-400)}:host[active]{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}:host[active]:hover{border-color:var(--ndw-color-primary-hover);color:var(--ndw-color-primary-hover)}:host[active]:active{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}\n"] }); }
28
28
  }
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabComponent, decorators: [{
30
30
  type: Component,
31
- args: [{ selector: 'ndw-tab', standalone: true, imports: [], template: "<ng-content />\n", styles: [":host{border-bottom:var(--ndw-border-size-lg) solid transparent;color:var(--ndw-color-grey-300);cursor:pointer;display:block;font-weight:700;padding:var(--ndw-spacing-md) 0;position:relative;transition:border-bottom .2s ease-out,color .2s ease-out}:host:hover{border-color:var(--ndw-color-grey-400);color:var(--ndw-color-grey-400)}:host:active,:host:focus{border-color:transparent;color:var(--ndw-color-grey-300)}:host[active]{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}:host[active]:hover{border-color:var(--ndw-color-primary-hover);color:var(--ndw-color-primary-hover)}:host[active]:active{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}\n"] }]
31
+ args: [{ selector: 'ndw-tab', standalone: true, imports: [], template: "<ng-content />\n", styles: [":host{border-bottom:var(--ndw-border-size-lg) solid transparent;color:var(--ndw-color-grey-400);cursor:pointer;display:block;font-weight:700;padding:var(--ndw-spacing-md) 0;position:relative;transition:border-bottom .2s ease-out,color .2s ease-out}:host:hover{border-color:var(--ndw-color-grey-500);color:var(--ndw-color-grey-500)}:host:active,:host:focus{border-color:transparent;color:var(--ndw-color-grey-400)}:host[active]{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}:host[active]:hover{border-color:var(--ndw-color-primary-hover);color:var(--ndw-color-primary-hover)}:host[active]:active{border-color:var(--ndw-color-primary);color:var(--ndw-color-primary)}\n"] }]
32
32
  }], propDecorators: { activeAttribute: [{
33
33
  type: HostBinding,
34
34
  args: ['attr.active']