@ndwnu/design-system 3.0.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/components/alert/alert.component.d.ts +2 -5
  2. package/components/alert/alert.model.d.ts +0 -1
  3. package/components/banner/banner.component.d.ts +38 -0
  4. package/components/banner/banner.model.d.ts +4 -0
  5. package/components/banner/index.d.ts +2 -0
  6. package/components/breadcrumb-group/breadcrumb-group.component.d.ts +1 -1
  7. package/components/collapsible/collapsible.component.d.ts +0 -1
  8. package/components/dropdown/dropdown.component.d.ts +4 -4
  9. package/components/form-field/autosuggest/autosuggest-highlight.pipe.d.ts +7 -0
  10. package/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.d.ts +15 -0
  11. package/components/form-field/autosuggest/autosuggest-trigger.directive.d.ts +35 -0
  12. package/components/form-field/autosuggest/autosuggest.component.d.ts +30 -0
  13. package/components/form-field/autosuggest/autosuggest.model.d.ts +1 -0
  14. package/components/form-field/autosuggest/autosuggest.utils.d.ts +2 -0
  15. package/components/form-field/autosuggest/index.d.ts +5 -0
  16. package/components/form-field/checkbox/checkbox.component.d.ts +0 -3
  17. package/components/form-field/file-upload/file-upload.component.d.ts +4 -11
  18. package/components/form-field/form-field.component.d.ts +1 -0
  19. package/components/form-field/index.d.ts +1 -0
  20. package/components/form-field/radio-button/radio-button.component.d.ts +0 -2
  21. package/components/form-field/radio-group/radio-group.component.d.ts +0 -1
  22. package/components/index.d.ts +5 -1
  23. package/components/layout/index.d.ts +1 -0
  24. package/components/layout/layout.component.d.ts +11 -0
  25. package/components/layout-banners/index.d.ts +1 -0
  26. package/components/layout-banners/layout-banners.component.d.ts +5 -0
  27. package/components/loader/index.d.ts +1 -0
  28. package/components/loader/loader.component.d.ts +5 -0
  29. package/components/main-navigation/main-navigation.component.d.ts +0 -3
  30. package/components/main-navigation/main-navigation.imports.d.ts +1 -1
  31. package/components/modal/modal-trigger.directive.d.ts +3 -2
  32. package/components/modal/modal.component.d.ts +0 -3
  33. package/components/modal/modal.service.d.ts +1 -0
  34. package/components/pill/pill.component.d.ts +1 -3
  35. package/components/tab/tab.component.d.ts +0 -3
  36. package/components/tab-group/tab-group.component.d.ts +1 -2
  37. package/components/tag/index.d.ts +1 -0
  38. package/components/tag/tag.component.d.ts +18 -0
  39. package/core/styles/ndw-styles.scss +13 -1
  40. package/core/styles/nwb-styles.scss +13 -1
  41. package/esm2022/components/accordion/accordion.component.mjs +6 -6
  42. package/esm2022/components/alert/alert.component.mjs +10 -27
  43. package/esm2022/components/alert/alert.model.mjs +1 -1
  44. package/esm2022/components/badge/badge.component.mjs +4 -4
  45. package/esm2022/components/banner/banner.component.mjs +61 -0
  46. package/esm2022/components/banner/banner.model.mjs +6 -0
  47. package/esm2022/components/banner/index.mjs +3 -0
  48. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +4 -4
  49. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +8 -8
  50. package/esm2022/components/card/card-content/card-content.component.mjs +4 -4
  51. package/esm2022/components/card/card-footer/card-footer.component.mjs +4 -4
  52. package/esm2022/components/card/card-header/card-header.component.mjs +4 -5
  53. package/esm2022/components/card/card.component.mjs +4 -4
  54. package/esm2022/components/collapsible/collapsible.component.mjs +7 -12
  55. package/esm2022/components/dropdown/dropdown.component.mjs +9 -16
  56. package/esm2022/components/form-field/autosuggest/autosuggest-highlight.pipe.mjs +21 -0
  57. package/esm2022/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.mjs +34 -0
  58. package/esm2022/components/form-field/autosuggest/autosuggest-trigger.directive.mjs +160 -0
  59. package/esm2022/components/form-field/autosuggest/autosuggest.component.mjs +82 -0
  60. package/esm2022/components/form-field/autosuggest/autosuggest.model.mjs +2 -0
  61. package/esm2022/components/form-field/autosuggest/autosuggest.utils.mjs +13 -0
  62. package/esm2022/components/form-field/autosuggest/index.mjs +6 -0
  63. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +11 -25
  64. package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +4 -4
  65. package/esm2022/components/form-field/error/error.component.mjs +4 -4
  66. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +46 -91
  67. package/esm2022/components/form-field/form-field.component.mjs +13 -6
  68. package/esm2022/components/form-field/index.mjs +2 -1
  69. package/esm2022/components/form-field/info/info.component.mjs +4 -4
  70. package/esm2022/components/form-field/month-input/month-input.component.mjs +5 -6
  71. package/esm2022/components/form-field/option-group/option-group.component.mjs +4 -4
  72. package/esm2022/components/form-field/option-group/option.component.mjs +2 -3
  73. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +10 -20
  74. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +9 -11
  75. package/esm2022/components/form-field/success/success.component.mjs +4 -4
  76. package/esm2022/components/icon/action-icon/action-icon.component.mjs +2 -2
  77. package/esm2022/components/icon/icon.component.mjs +4 -4
  78. package/esm2022/components/index.mjs +6 -2
  79. package/esm2022/components/layout/index.mjs +2 -0
  80. package/esm2022/components/layout/layout.component.mjs +20 -0
  81. package/esm2022/components/layout-banners/index.mjs +2 -0
  82. package/esm2022/components/layout-banners/layout-banners.component.mjs +11 -0
  83. package/esm2022/components/loader/index.mjs +2 -0
  84. package/esm2022/components/loader/loader.component.mjs +11 -0
  85. package/esm2022/components/main-navigation/main-navigation.component.mjs +11 -29
  86. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +4 -4
  87. package/esm2022/components/modal/modal-content/modal-content.component.mjs +4 -4
  88. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +4 -4
  89. package/esm2022/components/modal/modal-header/modal-header.component.mjs +4 -4
  90. package/esm2022/components/modal/modal-trigger.directive.mjs +12 -7
  91. package/esm2022/components/modal/modal.component.mjs +9 -21
  92. package/esm2022/components/modal/modal.service.mjs +12 -2
  93. package/esm2022/components/multi-select/multi-select.component.mjs +8 -10
  94. package/esm2022/components/pill/pill.component.mjs +10 -18
  95. package/esm2022/components/popover/popover-trigger.directive.mjs +6 -6
  96. package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +4 -4
  97. package/esm2022/components/tab/tab.component.mjs +11 -27
  98. package/esm2022/components/tab-group/tab-group.component.mjs +8 -10
  99. package/esm2022/components/tag/index.mjs +2 -0
  100. package/esm2022/components/tag/tag.component.mjs +29 -0
  101. package/esm2022/components/toast/toast.component.mjs +4 -4
  102. package/esm2022/components/toast/toast.service.mjs +1 -1
  103. package/esm2022/components/tooltip/tooltip.component.mjs +5 -5
  104. package/esm2022/components/tooltip/tooltip.directive.mjs +8 -14
  105. package/esm2022/models/aria.model.mjs +2 -0
  106. package/esm2022/models/index.mjs +2 -0
  107. package/fesm2022/ndwnu-design-system.mjs +643 -392
  108. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  109. package/models/aria.model.d.ts +1 -0
  110. package/models/index.d.ts +1 -0
  111. package/package.json +1 -1
  112. package/components/removable-pill/index.d.ts +0 -1
  113. package/components/removable-pill/removable-pill.component.d.ts +0 -14
  114. package/esm2022/components/removable-pill/index.mjs +0 -2
  115. package/esm2022/components/removable-pill/removable-pill.component.mjs +0 -23
@@ -1,5 +1,4 @@
1
- import { NgClass } from '@angular/common';
2
- import { Component, HostBinding, computed, inject, input, model } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';
3
2
  import { AccordionService } from '../accordion';
4
3
  import { BadgeComponent } from '../badge';
5
4
  import { IconComponent } from '../icon';
@@ -17,9 +16,6 @@ export class CollapsibleComponent {
17
16
  this.sectionUuid = `section-${this.uuid}`;
18
17
  this.animationState = computed(() => (this.expanded() ? 'open' : 'closed'));
19
18
  }
20
- get expandedClass() {
21
- return this.expanded();
22
- }
23
19
  toggle() {
24
20
  this.expanded.set(!this.expanded());
25
21
  if (this.expanded()) {
@@ -27,13 +23,12 @@ export class CollapsibleComponent {
27
23
  }
28
24
  }
29
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CollapsibleComponent, isStandalone: true, selector: "ndw-collapsible", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.expanded": "this.expandedClass" } }, ngImport: i0, template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ndw-badge", inputs: ["value", "ariaLabel"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], animations: [collapsibleAnimation] }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CollapsibleComponent, isStandalone: true, selector: "ndw-collapsible", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.expanded": "expanded()" } }, ngImport: i0, template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);word-break:break-word;cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ndw-badge", inputs: ["value", "ariaLabel"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], animations: [collapsibleAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
27
  }
32
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, decorators: [{
33
29
  type: Component,
34
- args: [{ selector: 'ndw-collapsible', standalone: true, imports: [BadgeComponent, IconComponent, NgClass], animations: [collapsibleAnimation], template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"] }]
35
- }], propDecorators: { expandedClass: [{
36
- type: HostBinding,
37
- args: ['class.expanded']
38
- }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBVS9ELE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFTUyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXhCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBTzlDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FTL0U7SUFkQyxJQUNXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUlNLE1BQU07UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDOzhHQTFCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix5cUJDakJqQywyckJBOEJBLGl3Q0RsQlksY0FBYyxzRkFBRSxhQUFhLHlEQUczQixDQUFDLG9CQUFvQixDQUFDOzsyRkFFdkIsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLGNBR3JDLENBQUMsb0JBQW9CLENBQUM7OEJBZ0J2QixhQUFhO3NCQUR2QixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9iYWRnZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5cbmltcG9ydCB7IGNvbGxhcHNpYmxlQW5pbWF0aW9uIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS5hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctY29sbGFwc2libGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQmFkZ2VDb21wb25lbnQsIEljb25Db21wb25lbnQsIE5nQ2xhc3NdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50LnNjc3MnLFxuICBhbmltYXRpb25zOiBbY29sbGFwc2libGVBbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBpbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcHVibGljIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdmFsdWUgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgcHVibGljIGV4cGFuZGVkID0gbW9kZWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWNjb3JkaW9uU2VydmljZSA9IGluamVjdChBY2NvcmRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9nZ2xlVXVpZCA9IGB0b2dnbGUtJHt0aGlzLnV1aWR9YDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3Rpb25VdWlkID0gYHNlY3Rpb24tJHt0aGlzLnV1aWR9YDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGVkJylcbiAgcHVibGljIGdldCBleHBhbmRlZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkKCk7XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5leHBhbmRlZCgpID8gJ29wZW4nIDogJ2Nsb3NlZCcpKTtcblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KCF0aGlzLmV4cGFuZGVkKCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnNldEV4cGFuZGVkQ29sbGFwc2libGUodGhpcy5pbmRleCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZVwiPlxuICA8aDMgY2xhc3M9XCJjb2xsYXBzaWJsZV9faGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjb2xsYXBzaWJsZV9fYnV0dG9uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2lkXT1cInRvZ2dsZVV1aWRcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJzZWN0aW9uVXVpZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICA+XG4gICAgICB7eyB0aXRsZSgpIH19XG5cbiAgICAgIEBpZiAodmFsdWUoKTsgYXMgdmFsdWUpIHtcbiAgICAgICAgPG5kdy1iYWRnZSBbdmFsdWVdPVwidmFsdWVcIiAvPlxuICAgICAgfVxuXG4gICAgICA8bmR3LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbmR3LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvaDM+XG5cbiAgPHNlY3Rpb25cbiAgICByb2xlPVwicmVnaW9uXCJcbiAgICBjbGFzcz1cImNvbGxhcHNpYmxlX19zZWN0aW9uXCJcbiAgICBbaWRdPVwic2VjdGlvblV1aWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0b2dnbGVVdWlkXCJcbiAgICBbQGNvbGxhcHNpYmxlXT1cImFuaW1hdGlvblN0YXRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
30
+ args: [{ animations: [collapsibleAnimation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
31
+ '[class.expanded]': 'expanded()',
32
+ }, imports: [BadgeComponent, IconComponent], selector: 'ndw-collapsible', standalone: true, template: "<div class=\"collapsible\">\n <h3 class=\"collapsible__header\">\n <button\n class=\"collapsible__button\"\n type=\"button\"\n [id]=\"toggleUuid\"\n [attr.aria-controls]=\"sectionUuid\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n {{ title() }}\n\n @if (value(); as value) {\n <ndw-badge [value]=\"value\" />\n }\n\n <ndw-icon>keyboard_arrow_down</ndw-icon>\n </button>\n </h3>\n\n <section\n role=\"region\"\n class=\"collapsible__section\"\n [id]=\"sectionUuid\"\n [attr.aria-labelledby]=\"toggleUuid\"\n [@collapsible]=\"animationState()\"\n >\n <ng-content />\n </section>\n</div>\n", styles: [".collapsible{display:block;border-bottom:var(--ndw-border-size-sm) solid var(--ndw-color-grey-200)}.collapsible__header{margin:0}.collapsible__button{overflow:hidden;display:flex;gap:var(--ndw-spacing-xs);justify-content:space-between;align-items:center;padding:0;width:100%;padding-block:var(--ndw-spacing-md);border:none;font-size:var(--ndw-font-size-sm);font-family:var(--ndw-font-family-body);font-weight:var(--ndw-font-weight-bold);word-break:break-word;cursor:pointer;background-color:transparent;transition:color var(--ndw-animation-speed-fast) ease-in-out}.collapsible__button:hover{color:var(--ndw-color-primary)}.collapsible__button:focus-visible{box-shadow:var(--ndw-elevation-info);outline:none;color:var(--ndw-color-primary)}.collapsible__button ndw-icon{margin-left:auto;color:var(--ndw-color-primary);transition:transform var(--ndw-animation-speed-fast) ease-in-out;font-size:var(--ndw-spacing-lg)}.collapsible__section{display:none;height:fit-content;margin-block:0;overflow:hidden;transition:height var(--ndw-animation-speed-fast) ease-in-out}:host(.expanded) .collapsible__header ndw-icon{transform:rotate(-180deg)}:host(.expanded) .collapsible__section{display:block;margin-block:var(--ndw-spacing-sm) var(--ndw-spacing-md)}\n"] }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBWmpDO1FBYVMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUV4QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBUy9FO0lBUFEsTUFBTTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7OEdBckJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGlxQkNwQmpDLDJyQkE4QkEsdXhDRGhCWSxjQUFjLHNGQUFFLGFBQWEseURBTDNCLENBQUMsb0JBQW9CLENBQUM7OzJGQVd2QixvQkFBb0I7a0JBWmhDLFNBQVM7aUNBQ0ksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixrQkFBa0IsRUFBRSxZQUFZO3FCQUNqQyxXQUNRLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxZQUM5QixpQkFBaUIsY0FDZixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9iYWRnZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5cbmltcG9ydCB7IGNvbGxhcHNpYmxlQW5pbWF0aW9uIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS5hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgYW5pbWF0aW9uczogW2NvbGxhcHNpYmxlQW5pbWF0aW9uXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmV4cGFuZGVkXSc6ICdleHBhbmRlZCgpJyxcbiAgfSxcbiAgaW1wb3J0czogW0JhZGdlQ29tcG9uZW50LCBJY29uQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZHctY29sbGFwc2libGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBpbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcHVibGljIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdmFsdWUgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgcHVibGljIGV4cGFuZGVkID0gbW9kZWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWNjb3JkaW9uU2VydmljZSA9IGluamVjdChBY2NvcmRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9nZ2xlVXVpZCA9IGB0b2dnbGUtJHt0aGlzLnV1aWR9YDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3Rpb25VdWlkID0gYHNlY3Rpb24tJHt0aGlzLnV1aWR9YDtcblxuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5leHBhbmRlZCgpID8gJ29wZW4nIDogJ2Nsb3NlZCcpKTtcblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KCF0aGlzLmV4cGFuZGVkKCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnNldEV4cGFuZGVkQ29sbGFwc2libGUodGhpcy5pbmRleCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZVwiPlxuICA8aDMgY2xhc3M9XCJjb2xsYXBzaWJsZV9faGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjb2xsYXBzaWJsZV9fYnV0dG9uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2lkXT1cInRvZ2dsZVV1aWRcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJzZWN0aW9uVXVpZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICA+XG4gICAgICB7eyB0aXRsZSgpIH19XG5cbiAgICAgIEBpZiAodmFsdWUoKTsgYXMgdmFsdWUpIHtcbiAgICAgICAgPG5kdy1iYWRnZSBbdmFsdWVdPVwidmFsdWVcIiAvPlxuICAgICAgfVxuXG4gICAgICA8bmR3LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbmR3LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvaDM+XG5cbiAgPHNlY3Rpb25cbiAgICByb2xlPVwicmVnaW9uXCJcbiAgICBjbGFzcz1cImNvbGxhcHNpYmxlX19zZWN0aW9uXCJcbiAgICBbaWRdPVwic2VjdGlvblV1aWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0b2dnbGVVdWlkXCJcbiAgICBbQGNvbGxhcHNpYmxlXT1cImFuaW1hdGlvblN0YXRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -2,8 +2,7 @@ import { ChangeDetectionStrategy, Component, computed, input, output, viewChild,
2
2
  import { ButtonDirective } from '../button';
3
3
  import { IconComponent } from '../icon';
4
4
  import { PopoverTriggerDirective } from '../popover';
5
- import { CommonModule } from '@angular/common';
6
- import { RemovablePillComponent } from '../removable-pill';
5
+ import { TagComponent } from '../tag';
7
6
  import * as i0 from "@angular/core";
8
7
  export class DropdownComponent {
9
8
  constructor() {
@@ -12,15 +11,15 @@ export class DropdownComponent {
12
11
  this.buttonText = input.required();
13
12
  this.prefixIcon = input('');
14
13
  this.selectAmount = input(0);
15
- this.removablePillClicked = output();
14
+ this.tagClicked = output();
16
15
  this.isOpenChange = output();
17
16
  this.popoverTrigger = viewChild.required(PopoverTriggerDirective);
18
17
  this.dropdownButton = viewChild.required('dropdownButton');
19
18
  this.buttonIcon = computed(() => this.popoverTrigger().isOpen() ? 'keyboard_arrow_up' : 'keyboard_arrow_down');
20
19
  }
21
- onRemovablePillClicked($event) {
20
+ onTagClicked($event) {
22
21
  $event.stopPropagation();
23
- this.removablePillClicked.emit();
22
+ this.tagClicked.emit();
24
23
  }
25
24
  onKeyDown(event) {
26
25
  if (event.key === 'Escape') {
@@ -34,13 +33,13 @@ export class DropdownComponent {
34
33
  closeDropdown() {
35
34
  this.dropdownButton().nativeElement.focus();
36
35
  }
37
- onKeyDownRemovablePill(event) {
36
+ onTagKeyDown(event) {
38
37
  if (event.key !== 'Enter' || this.disabled()) {
39
38
  return;
40
39
  }
41
40
  event.stopPropagation();
42
41
  event.preventDefault();
43
- this.removablePillClicked.emit();
42
+ this.tagClicked.emit();
44
43
  setTimeout(() => {
45
44
  this.dropdownButton().nativeElement.focus();
46
45
  });
@@ -49,16 +48,10 @@ export class DropdownComponent {
49
48
  this.isOpenChange.emit(isOpen);
50
49
  }
51
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "ndw-dropdown", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", 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 }, selectAmount: { classPropertyName: "selectAmount", publicName: "selectAmount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removablePillClicked: "removablePillClicked", isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "popoverTrigger", first: true, predicate: PopoverTriggerDirective, descendants: true, isSignal: true }, { propertyName: "dropdownButton", first: true, predicate: ["dropdownButton"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-removable-pill\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onKeyDownRemovablePill($event)\"\n (onClick)=\"onRemovablePillClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-removable-pill>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[ndwButton]" }, { kind: "directive", type: PopoverTriggerDirective, selector: "[ndwPopoverTrigger]", inputs: ["popoverPosition", "ndwPopoverTrigger", "toggleOnClick", "isOpen"], outputs: ["popoverToggled", "isOpenChange"], exportAs: ["ndwPopoverTrigger"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: RemovablePillComponent, selector: "ndw-removable-pill", inputs: ["disabled", "removeAriaLabel"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "ndw-dropdown", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", 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 }, selectAmount: { classPropertyName: "selectAmount", publicName: "selectAmount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tagClicked: "tagClicked", isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "popoverTrigger", first: true, predicate: PopoverTriggerDirective, descendants: true, isSignal: true }, { propertyName: "dropdownButton", first: true, predicate: ["dropdownButton"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-tag\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onTagKeyDown($event)\"\n (onClick)=\"onTagClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-tag>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[ndwButton]" }, { kind: "directive", type: PopoverTriggerDirective, selector: "[ndwPopoverTrigger]", inputs: ["popoverPosition", "ndwPopoverTrigger", "toggleOnClick", "isOpen"], outputs: ["popoverToggled", "isOpenChange"], exportAs: ["ndwPopoverTrigger"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "component", type: TagComponent, selector: "ndw-tag", inputs: ["disabled", "suffixAriaLabel", "suffixIcon"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
52
  }
54
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, decorators: [{
55
54
  type: Component,
56
- args: [{ selector: 'ndw-dropdown', standalone: true, imports: [
57
- ButtonDirective,
58
- PopoverTriggerDirective,
59
- IconComponent,
60
- CommonModule,
61
- RemovablePillComponent,
62
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-removable-pill\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onKeyDownRemovablePill($event)\"\n (onClick)=\"onRemovablePillClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-removable-pill>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"] }]
55
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ButtonDirective, PopoverTriggerDirective, IconComponent, TagComponent], selector: 'ndw-dropdown', standalone: true, template: "<button\n type=\"button\"\n #dropdownButton\n ndwButton\n filter\n [ndwPopoverTrigger]=\"dropdownContent\"\n (isOpenChange)=\"isOpenChanged($event)\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"disabled()\"\n aria-haspopup=\"dialog\"\n>\n @if (prefixIcon(); as prefixIconName) {\n <ndw-icon class=\"dropdown-prefix-icon\">{{ prefixIconName }}</ndw-icon>\n }\n\n {{ buttonText() }}\n\n @if (selectAmount()) {\n <ndw-tag\n [attr.disabled]=\"disabled() ? true : null\"\n (keydown)=\"onTagKeyDown($event)\"\n (onClick)=\"onTagClicked($event)\"\n >\n {{ selectAmount() }}\n </ndw-tag>\n }\n\n @if (chevron()) {\n <ndw-icon class=\"button-icon\">{{ buttonIcon() }}</ndw-icon>\n }\n</button>\n\n<ng-template #dropdownContent>\n <div role=\"dialog\" (keydown.escape)=\"closeDropdown()\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{display:inline-block}button{width:100%;display:flex;justify-content:space-between}.dropdown-prefix-icon{color:var(--ndw-color-grey-300)}\n"] }]
63
56
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBZ0IzRCxNQUFNLE9BQU8saUJBQWlCO0lBZDlCO1FBZWtCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsWUFBTyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDdEMsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4Qix5QkFBb0IsR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELG1CQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUM3RSxDQUFDO0tBcUNIO0lBbkNRLHNCQUFzQixDQUFDLE1BQWE7UUFDekMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQW9CO1FBQ2hELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBZTtRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQW5EVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzM0JBVXdCLHVCQUF1QixtTEN2QzdFLGc2QkFxQ0EsME1EaEJJLGVBQWUsd0RBQ2YsdUJBQXVCLDJOQUN2QixhQUFhLHNFQUNiLFlBQVksK0JBQ1osc0JBQXNCOzsyRkFJYixpQkFBaUI7a0JBZDdCLFNBQVM7K0JBQ0UsY0FBYyxjQUdaLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLHNCQUFzQjtxQkFDdkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbic7XG5pbXBvcnQgeyBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3BvcG92ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlbW92YWJsZVBpbGxDb21wb25lbnQgfSBmcm9tICcuLi9yZW1vdmFibGUtcGlsbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25kdy1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJ1dHRvbkRpcmVjdGl2ZSxcbiAgICBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZW1vdmFibGVQaWxsQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjaGV2cm9uID0gaW5wdXQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGJ1dHRvblRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhJY29uID0gaW5wdXQoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QW1vdW50ID0gaW5wdXQoMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlbW92YWJsZVBpbGxDbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBpc09wZW5DaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcG9wb3ZlclRyaWdnZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQoUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZHJvcGRvd25CdXR0b24gPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2Ryb3Bkb3duQnV0dG9uJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJ1dHRvbkljb24gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucG9wb3ZlclRyaWdnZXIoKS5pc09wZW4oKSA/ICdrZXlib2FyZF9hcnJvd191cCcgOiAna2V5Ym9hcmRfYXJyb3dfZG93bicsXG4gICk7XG5cbiAgcHVibGljIG9uUmVtb3ZhYmxlUGlsbENsaWNrZWQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92YWJsZVBpbGxDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnBvcG92ZXJUcmlnZ2VyKCkudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkJ1dHRvbigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd25SZW1vdmFibGVQaWxsKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJyB8fCB0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5yZW1vdmFibGVQaWxsQ2xpY2tlZC5lbWl0KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyb3Bkb3duQnV0dG9uKCkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlzT3BlbkNoYW5nZWQoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICAjZHJvcGRvd25CdXR0b25cbiAgbmR3QnV0dG9uXG4gIGZpbHRlclxuICBbbmR3UG9wb3ZlclRyaWdnZXJdPVwiZHJvcGRvd25Db250ZW50XCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VkKCRldmVudClcIlxuICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4+XG4gIEBpZiAocHJlZml4SWNvbigpOyBhcyBwcmVmaXhJY29uTmFtZSkge1xuICAgIDxuZHctaWNvbiBjbGFzcz1cImRyb3Bkb3duLXByZWZpeC1pY29uXCI+e3sgcHJlZml4SWNvbk5hbWUgfX08L25kdy1pY29uPlxuICB9XG5cbiAge3sgYnV0dG9uVGV4dCgpIH19XG5cbiAgQGlmIChzZWxlY3RBbW91bnQoKSkge1xuICAgIDxuZHctcmVtb3ZhYmxlLXBpbGxcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd25SZW1vdmFibGVQaWxsKCRldmVudClcIlxuICAgICAgKG9uQ2xpY2spPVwib25SZW1vdmFibGVQaWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RBbW91bnQoKSB9fVxuICAgIDwvbmR3LXJlbW92YWJsZS1waWxsPlxuICB9XG5cbiAgQGlmIChjaGV2cm9uKCkpIHtcbiAgICA8bmR3LWljb24gY2xhc3M9XCJidXR0b24taWNvblwiPnt7IGJ1dHRvbkljb24oKSB9fTwvbmR3LWljb24+XG4gIH1cbjwvYnV0dG9uPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgPGRpdiByb2xlPVwiZGlhbG9nXCIgKGtleWRvd24uZXNjYXBlKT1cImNsb3NlRHJvcGRvd24oKVwiPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVV0QyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU2tCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsWUFBTyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDdEMsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixlQUFVLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDNUIsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxtQkFBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDN0UsQ0FBQztLQXFDSDtJQW5DUSxZQUFZLENBQUMsTUFBYTtRQUMvQixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFlO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBbkRVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGsyQkFVd0IsdUJBQXVCLG1MQ2hDN0UsczNCQXFDQSwwTURyQlksZUFBZSx3REFBRSx1QkFBdUIsMk5BQUUsYUFBYSx1RUFBRSxZQUFZOzsyRkFNcEUsaUJBQWlCO2tCQVI3QixTQUFTO3NDQUNTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxZQUN0RSxjQUFjLGNBR1osSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vcG9wb3Zlcic7XG5pbXBvcnQgeyBUYWdDb21wb25lbnQgfSBmcm9tICcuLi90YWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtCdXR0b25EaXJlY3RpdmUsIFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBUYWdDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ25kdy1kcm9wZG93bicsXG4gIHN0eWxlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJ2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjaGV2cm9uID0gaW5wdXQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGJ1dHRvblRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhJY29uID0gaW5wdXQoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QW1vdW50ID0gaW5wdXQoMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhZ0NsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzT3BlbkNoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwb3BvdmVyVHJpZ2dlciA9IHZpZXdDaGlsZC5yZXF1aXJlZChQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93bkJ1dHRvbiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignZHJvcGRvd25CdXR0b24nKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYnV0dG9uSWNvbiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLmlzT3BlbigpID8gJ2tleWJvYXJkX2Fycm93X3VwJyA6ICdrZXlib2FyZF9hcnJvd19kb3duJyxcbiAgKTtcblxuICBwdWJsaWMgb25UYWdDbGlja2VkKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50YWdDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wb3BvdmVyVHJpZ2dlcigpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnBvcG92ZXJUcmlnZ2VyKCkudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkJ1dHRvbigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhZ0tleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInIHx8IHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLnRhZ0NsaWNrZWQuZW1pdCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kcm9wZG93bkJ1dHRvbigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc09wZW5DaGFuZ2VkKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgI2Ryb3Bkb3duQnV0dG9uXG4gIG5kd0J1dHRvblxuICBmaWx0ZXJcbiAgW25kd1BvcG92ZXJUcmlnZ2VyXT1cImRyb3Bkb3duQ29udGVudFwiXG4gIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuPlxuICBAaWYgKHByZWZpeEljb24oKTsgYXMgcHJlZml4SWNvbk5hbWUpIHtcbiAgICA8bmR3LWljb24gY2xhc3M9XCJkcm9wZG93bi1wcmVmaXgtaWNvblwiPnt7IHByZWZpeEljb25OYW1lIH19PC9uZHctaWNvbj5cbiAgfVxuXG4gIHt7IGJ1dHRvblRleHQoKSB9fVxuXG4gIEBpZiAoc2VsZWN0QW1vdW50KCkpIHtcbiAgICA8bmR3LXRhZ1xuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSA/IHRydWUgOiBudWxsXCJcbiAgICAgIChrZXlkb3duKT1cIm9uVGFnS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uVGFnQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RBbW91bnQoKSB9fVxuICAgIDwvbmR3LXRhZz5cbiAgfVxuXG4gIEBpZiAoY2hldnJvbigpKSB7XG4gICAgPG5kdy1pY29uIGNsYXNzPVwiYnV0dG9uLWljb25cIj57eyBidXR0b25JY29uKCkgfX08L25kdy1pY29uPlxuICB9XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRlbnQ+XG4gIDxkaXYgcm9sZT1cImRpYWxvZ1wiIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZURyb3Bkb3duKClcIj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AutosuggestHighlightPipe {
4
+ transform(value, searchTerm) {
5
+ if (!searchTerm || typeof value !== 'string') {
6
+ return value;
7
+ }
8
+ const regex = new RegExp(`(${searchTerm})`, 'gi');
9
+ return value.replace(regex, '<b>$1</b>');
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, isStandalone: true, name: "ndwAutosuggestHighlight" }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestHighlightPipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'ndwAutosuggestHighlight',
18
+ standalone: true,
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtaGlnaGxpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1oaWdobGlnaHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFzQixNQUFNLGVBQWUsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLHdCQUF3QjtJQUM1QixTQUFTLENBQUMsS0FBdUIsRUFBRSxVQUFrQjtRQUMxRCxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksVUFBVSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQVJVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIHR5cGUgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICduZHdBdXRvc3VnZ2VzdEhpZ2hsaWdodCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9zdWdnZXN0SGlnaGxpZ2h0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCB1bmtub3duLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmtub3duIHtcbiAgICBpZiAoIXNlYXJjaFRlcm0gfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgKCR7c2VhcmNoVGVybX0pYCwgJ2dpJyk7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UocmVnZXgsICc8Yj4kMTwvYj4nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, } from '@angular/core';
2
+ import { AutosuggestHighlightPipe } from '../autosuggest-highlight.pipe';
3
+ import { getSuggestionLabel } from '../autosuggest.utils';
4
+ import * as i0 from "@angular/core";
5
+ export class AutosuggestItemComponent {
6
+ constructor() {
7
+ this.item = input('');
8
+ this.searchTerm = input('');
9
+ this.labelField = input(undefined);
10
+ this.isActive = signal(false);
11
+ this.getLabel = computed(() => {
12
+ return getSuggestionLabel(this.item(), this.labelField());
13
+ });
14
+ this.elementRef = inject(ElementRef);
15
+ }
16
+ setActiveStyles() {
17
+ this.isActive.set(true);
18
+ }
19
+ setInactiveStyles() {
20
+ this.isActive.set(false);
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: AutosuggestItemComponent, isStandalone: true, selector: "ndw-autosuggest-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "-1", "role": "option" }, properties: { "class.active": "isActive()", "attr.aria-selected": "isActive()" } }, ngImport: i0, template: "<span [innerHTML]=\"getLabel() | ndwAutosuggestHighlight: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;border:0;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm)}:host.active,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-050);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host:active{background-color:var(--ndw-color-secondary-100)}:host span{word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: AutosuggestHighlightPipe, name: "ndwAutosuggestHighlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestItemComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'ndw-autosuggest-item', standalone: true, imports: [AutosuggestHighlightPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
28
+ tabindex: '-1',
29
+ role: 'option',
30
+ '[class.active]': 'isActive()',
31
+ '[attr.aria-selected]': 'isActive()',
32
+ }, template: "<span [innerHTML]=\"getLabel() | ndwAutosuggestHighlight: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;border:0;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm)}:host.active,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-050);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host:active{background-color:var(--ndw-color-secondary-100)}:host span{word-break:break-word}\n"] }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1pdGVtL2F1dG9zdWdnZXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtaXRlbS9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBZ0IxRCxNQUFNLE9BQU8sd0JBQXdCO0lBZHJDO1FBZWtCLFNBQUksR0FBRyxLQUFLLENBQWEsRUFBRSxDQUFDLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUUzRCxhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO1FBRUksZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQVN4QztJQVBRLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQWxCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwrbUJDNUJyQyxvRkFDQSwwaUJEZ0JZLHdCQUF3Qjs7MkZBV3ZCLHdCQUF3QjtrQkFkcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsd0JBQXdCLENBQUMsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osUUFBUSxFQUFFLElBQUk7d0JBQ2QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZ0JBQWdCLEVBQUUsWUFBWTt3QkFDOUIsc0JBQXNCLEVBQUUsWUFBWTtxQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEhpZ2hsaWdodFBpcGUgfSBmcm9tICcuLi9hdXRvc3VnZ2VzdC1oaWdobGlnaHQucGlwZSc7XG5pbXBvcnQgeyBTdWdnZXN0aW9uIH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuaW1wb3J0IHsgZ2V0U3VnZ2VzdGlvbkxhYmVsIH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3QtaXRlbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBdXRvc3VnZ2VzdEhpZ2hsaWdodFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICB0YWJpbmRleDogJy0xJyxcbiAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAnW2NsYXNzLmFjdGl2ZV0nOiAnaXNBY3RpdmUoKScsXG4gICAgJ1thdHRyLmFyaWEtc2VsZWN0ZWRdJzogJ2lzQWN0aXZlKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBIaWdobGlnaHRhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGl0ZW0gPSBpbnB1dDxTdWdnZXN0aW9uPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hUZXJtID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBpc0FjdGl2ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBnZXRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbkxhYmVsKHRoaXMuaXRlbSgpLCB0aGlzLmxhYmVsRmllbGQoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHB1YmxpYyBzZXRBY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZS5zZXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SW5hY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZS5zZXQoZmFsc2UpO1xuICB9XG59XG4iLCI8c3BhbiBbaW5uZXJIVE1MXT1cImdldExhYmVsKCkgfCBuZHdBdXRvc3VnZ2VzdEhpZ2hsaWdodDogc2VhcmNoVGVybSgpXCI+PC9zcGFuPlxuIl19
@@ -0,0 +1,160 @@
1
+ import { ConnectionPositionPair, Overlay, } from '@angular/cdk/overlay';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, inject, input, output, signal, ViewContainerRef, } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { NgControl } from '@angular/forms';
6
+ import { filter, fromEvent, takeUntil } from 'rxjs';
7
+ import { getSuggestionLabel } from './autosuggest.utils';
8
+ import * as i0 from "@angular/core";
9
+ export class AutosuggestTriggerDirective {
10
+ constructor() {
11
+ this.ndwAutosuggest = input.required();
12
+ this.suggestionSelected = output();
13
+ this.suggestionsRequested = output();
14
+ this.isOpen = signal(false);
15
+ this.selectedSuggestion = signal('');
16
+ this.ngControl = inject(NgControl, { optional: true });
17
+ this.elementRef = inject(ElementRef);
18
+ this.viewContainerRef = inject(ViewContainerRef);
19
+ this.overlay = inject(Overlay);
20
+ this.destroyRef = inject(DestroyRef);
21
+ this.changeDetectorRef = inject(ChangeDetectorRef);
22
+ }
23
+ get control() {
24
+ return this.ngControl?.control;
25
+ }
26
+ get origin() {
27
+ return this.elementRef.nativeElement;
28
+ }
29
+ ngOnInit() {
30
+ this.handleInput();
31
+ this.handleAutosuggestResult();
32
+ }
33
+ handleKeydown(event) {
34
+ const shouldCloseDropdown = ['Escape', 'Tab'].includes(event.key);
35
+ if (shouldCloseDropdown) {
36
+ this.close();
37
+ }
38
+ else {
39
+ this.updateSearchTerm();
40
+ this.updateSuggestions();
41
+ this.openDropdown();
42
+ this.ndwAutosuggest().handleKeydown(event);
43
+ }
44
+ }
45
+ handleBlur() {
46
+ const forceSelection = this.ndwAutosuggest().forceSelection();
47
+ const selectedSuggestion = this.selectedSuggestion();
48
+ if (forceSelection && !selectedSuggestion) {
49
+ this.updateResult('');
50
+ this.ndwAutosuggest().searchTerm.set('');
51
+ this.ndwAutosuggest().keyManager?.setActiveItem(-1);
52
+ }
53
+ }
54
+ handleInput() {
55
+ fromEvent(this.origin, 'input')
56
+ .pipe(takeUntilDestroyed(this.destroyRef))
57
+ .subscribe(() => {
58
+ this.selectedSuggestion.set('');
59
+ const exactMatch = this.findMatchingSuggestion(this.origin.value);
60
+ if (exactMatch) {
61
+ this.updateResult(exactMatch);
62
+ }
63
+ this.updateSearchTerm();
64
+ this.updateSuggestions();
65
+ });
66
+ }
67
+ updateSuggestions() {
68
+ const searchTerm = this.origin.value;
69
+ this.suggestionsRequested.emit(searchTerm);
70
+ }
71
+ updateSearchTerm() {
72
+ const value = this.origin.value;
73
+ this.ndwAutosuggest().searchTerm.set(value);
74
+ }
75
+ findMatchingSuggestion(searchTerm) {
76
+ return this.ndwAutosuggest()
77
+ .suggestions()
78
+ .find((s) => getSuggestionLabel(s, this.ndwAutosuggest().labelField()).toLocaleLowerCase() ===
79
+ searchTerm.toLocaleLowerCase());
80
+ }
81
+ handleAutosuggestResult() {
82
+ this.ndwAutosuggest()
83
+ .resultSubject.pipe(takeUntilDestroyed(this.destroyRef))
84
+ .subscribe((suggestion) => {
85
+ this.updateResult(suggestion);
86
+ this.close();
87
+ });
88
+ }
89
+ updateResult(suggestion) {
90
+ const label = getSuggestionLabel(suggestion, this.ndwAutosuggest().labelField());
91
+ this.selectedSuggestion.set(suggestion);
92
+ this.control?.setValue(suggestion);
93
+ this.suggestionSelected.emit(suggestion);
94
+ this.origin.value = label;
95
+ this.changeDetectorRef.markForCheck();
96
+ }
97
+ openDropdown() {
98
+ if (this.overlayRef) {
99
+ return;
100
+ }
101
+ this.overlayRef = this.overlay.create({
102
+ width: this.origin.offsetWidth,
103
+ backdropClass: '',
104
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
105
+ positionStrategy: this.getOverlayPosition(),
106
+ });
107
+ const componentTemplate = this.ndwAutosuggest().template();
108
+ if (componentTemplate) {
109
+ const template = new TemplatePortal(componentTemplate, this.viewContainerRef);
110
+ this.overlayRef.attach(template);
111
+ this.isOpen.set(true);
112
+ this.overlayClickOutside(this.overlayRef, this.origin).subscribe(() => this.close());
113
+ this.changeDetectorRef.markForCheck();
114
+ }
115
+ }
116
+ close() {
117
+ if (this.overlayRef) {
118
+ this.overlayRef.detach();
119
+ this.overlayRef = undefined;
120
+ this.isOpen.set(false);
121
+ }
122
+ }
123
+ overlayClickOutside(overlayRef, origin) {
124
+ return fromEvent(document, 'click').pipe(takeUntilDestroyed(this.destroyRef), takeUntil(overlayRef.detachments()), filter((event) => {
125
+ const clickTarget = event.target;
126
+ const notOrigin = clickTarget !== origin;
127
+ const notOverlay = !!overlayRef && overlayRef.overlayElement.contains(clickTarget) === false;
128
+ return notOrigin && notOverlay;
129
+ }));
130
+ }
131
+ getOverlayPosition() {
132
+ const positions = [
133
+ new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),
134
+ ];
135
+ return this.overlay
136
+ .position()
137
+ .flexibleConnectedTo(this.origin)
138
+ .withPositions(positions)
139
+ .withFlexibleDimensions(false)
140
+ .withPush(false);
141
+ }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
143
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: AutosuggestTriggerDirective, isStandalone: true, selector: "input[ndwAutosuggest], textarea[ndwAutosuggest]", inputs: { ndwAutosuggest: { classPropertyName: "ndwAutosuggest", publicName: "ndwAutosuggest", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { suggestionSelected: "suggestionSelected", suggestionsRequested: "suggestionsRequested" }, host: { attributes: { "autocomplete": "off", "aria-autocomplete": "list", "aria-haspopup": "listbox" }, listeners: { "keydown": "handleKeydown($event)", "blur": "handleBlur()" } }, exportAs: ["ndwAutosuggest"], ngImport: i0 }); }
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestTriggerDirective, decorators: [{
146
+ type: Directive,
147
+ args: [{
148
+ selector: 'input[ndwAutosuggest], textarea[ndwAutosuggest]',
149
+ standalone: true,
150
+ exportAs: 'ndwAutosuggest',
151
+ host: {
152
+ autocomplete: 'off',
153
+ 'aria-autocomplete': 'list',
154
+ 'aria-haspopup': 'listbox',
155
+ '(keydown)': 'handleKeydown($event)',
156
+ '(blur)': 'handleBlur()',
157
+ },
158
+ }]
159
+ }] });
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBRXRCLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBY3pELE1BQU0sT0FBTywyQkFBMkI7SUFaeEM7UUFha0IsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF3QixDQUFDO1FBQ3hELHVCQUFrQixHQUFHLE1BQU0sRUFBYyxDQUFDO1FBQzFDLHlCQUFvQixHQUFHLE1BQU0sRUFBVSxDQUFDO1FBR3hDLFdBQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFL0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxF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MkI7OzJGQUEzQiwyQkFBMkI7a0JBWnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlEQUFpRDtvQkFDM0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRTt3QkFDSixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0IsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLFFBQVEsRUFBRSxjQUFjO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdENvbXBvbmVudCB9IGZyb20gJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFN1Z2dlc3Rpb24gfSBmcm9tICcuL2F1dG9zdWdnZXN0Lm1vZGVsJztcbmltcG9ydCB7IGdldFN1Z2dlc3Rpb25MYWJlbCB9IGZyb20gJy4vYXV0b3N1Z2dlc3QudXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtuZHdBdXRvc3VnZ2VzdF0sIHRleHRhcmVhW25kd0F1dG9zdWdnZXN0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnbmR3QXV0b3N1Z2dlc3QnLFxuICBob3N0OiB7XG4gICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbGlzdCcsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbGlzdGJveCcsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoYmx1ciknOiAnaGFuZGxlQmx1cigpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b3N1Z2dlc3RUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IG5kd0F1dG9zdWdnZXN0ID0gaW5wdXQucmVxdWlyZWQ8QXV0b3N1Z2dlc3RDb21wb25lbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uU2VsZWN0ZWQgPSBvdXRwdXQ8U3VnZ2VzdGlvbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25zUmVxdWVzdGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICBwdWJsaWMgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZFN1Z2dlc3Rpb24gPSBzaWduYWw8U3VnZ2VzdGlvbj4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcml2YXRlIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG9yaWdpbigpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJbnB1dCgpO1xuICAgIHRoaXMuaGFuZGxlQXV0b3N1Z2dlc3RSZXN1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkQ2xvc2VEcm9wZG93biA9IFsnRXNjYXBlJywgJ1RhYiddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG5cbiAgICBpZiAoc2hvdWxkQ2xvc2VEcm9wZG93bikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRlcm0oKTtcbiAgICAgIHRoaXMudXBkYXRlU3VnZ2VzdGlvbnMoKTtcblxuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JjZVNlbGVjdGlvbiA9IHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5mb3JjZVNlbGVjdGlvbigpO1xuICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbiA9IHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uKCk7XG5cbiAgICBpZiAoZm9yY2VTZWxlY3Rpb24gJiYgIXNlbGVjdGVkU3VnZ2VzdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVSZXN1bHQoJycpO1xuICAgICAgdGhpcy5uZHdBdXRvc3VnZ2VzdCgpLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKS5rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0KCk6IHZvaWQge1xuICAgIGZyb21FdmVudCh0aGlzLm9yaWdpbiwgJ2lucHV0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uLnNldCgnJyk7XG5cbiAgICAgICAgY29uc3QgZXhhY3RNYXRjaCA9IHRoaXMuZmluZE1hdGNoaW5nU3VnZ2VzdGlvbih0aGlzLm9yaWdpbi52YWx1ZSk7XG4gICAgICAgIGlmIChleGFjdE1hdGNoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSZXN1bHQoZXhhY3RNYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRlcm0oKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdWdnZXN0aW9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN1Z2dlc3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLm9yaWdpbi52YWx1ZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zUmVxdWVzdGVkLmVtaXQoc2VhcmNoVGVybSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlYXJjaFRlcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm9yaWdpbi52YWx1ZTtcbiAgICB0aGlzLm5kd0F1dG9zdWdnZXN0KCkuc2VhcmNoVGVybS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTWF0Y2hpbmdTdWdnZXN0aW9uKHNlYXJjaFRlcm06IHN0cmluZyk6IFN1Z2dlc3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZHdBdXRvc3VnZ2VzdCgpXG4gICAgICAuc3VnZ2VzdGlvbnMoKVxuICAgICAgLmZpbmQoXG4gICAgICAgIChzKSA9PlxuICAgICAgICAgIGdldFN1Z2dlc3Rpb25MYWJlbChzLCB0aGlzLm5kd0F1dG9zdWdnZXN0KCkubGFiZWxGaWVsZCgpKS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PVxuICAgICAgICAgIHNlYXJjaFRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUF1dG9zdWdnZXN0UmVzdWx0KCk6IHZvaWQge1xuICAgIHRoaXMubmR3QXV0b3N1Z2dlc3QoKVxuICAgICAgLnJlc3VsdFN1YmplY3QucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSZXN1bHQoc3VnZ2VzdGlvbik7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXN1bHQoc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbiB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbCA9IGdldFN1Z2dlc3Rpb25MYWJlbChzdWdnZXN0aW9uLCB0aGlzLm5kd0F1dG9zdWdnZXN0KCkubGFiZWxGaWVsZCgpKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uLnNldChzdWdnZXN0aW9uKTtcbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMuc3VnZ2VzdGlvblNlbGVjdGVkLmVtaXQoc3VnZ2VzdGlvbik7XG5cbiAgICB0aGlzLm9yaWdpbi52YWx1ZSA9IGxhYmVsO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICB3aWR0aDogdGhpcy5vcmlnaW4ub2Zmc2V0V2lkdGgsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldE92ZXJsYXlQb3NpdGlvbigpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcG9uZW50VGVtcGxhdGUgPSB0aGlzLm5kd0F1dG9zdWdnZXN0KCkudGVtcGxhdGUoKTtcblxuICAgIGlmIChjb21wb25lbnRUZW1wbGF0ZSkge1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBuZXcgVGVtcGxhdGVQb3J0YWwoY29tcG9uZW50VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlKTtcblxuICAgICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICAgICAgdGhpcy5vdmVybGF5Q2xpY2tPdXRzaWRlKHRoaXMub3ZlcmxheVJlZiwgdGhpcy5vcmlnaW4pLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvdmVybGF5Q2xpY2tPdXRzaWRlKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIG9yaWdpbjogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnY2xpY2snKS5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICB0YWtlVW50aWwob3ZlcmxheVJlZi5kZXRhY2htZW50cygpKSxcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG5vdE9yaWdpbiA9IGNsaWNrVGFyZ2V0ICE9PSBvcmlnaW47XG4gICAgICAgIGNvbnN0IG5vdE92ZXJsYXkgPVxuICAgICAgICAgICEhb3ZlcmxheVJlZiAmJiBvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSA9PT0gZmFsc2U7XG4gICAgICAgIHJldHVybiBub3RPcmlnaW4gJiYgbm90T3ZlcmxheTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMub3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,82 @@
1
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, input, signal, TemplateRef, viewChild, ViewChildren, } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { Subject } from 'rxjs';
6
+ import { IconComponent } from '../../icon/icon.component';
7
+ import { AutosuggestItemComponent } from './autosuggest-item/autosuggest-item.component';
8
+ import { getSuggestionLabel } from './autosuggest.utils';
9
+ import * as i0 from "@angular/core";
10
+ const DEFAULT_MAX_RESULTS = 7;
11
+ const DEFAULT_NO_RESULT_TEXT = 'Geen resultaten gevonden. Probeer een andere zoekterm.';
12
+ export class AutosuggestComponent {
13
+ constructor() {
14
+ this.noResultText = input(DEFAULT_NO_RESULT_TEXT);
15
+ this.maxResults = input(DEFAULT_MAX_RESULTS);
16
+ this.forceSelection = input(false);
17
+ this.labelField = input(undefined);
18
+ this.suggestions = input([], {
19
+ transform: (suggestions) => suggestions.slice(0, this.maxResults()),
20
+ });
21
+ this.template = viewChild.required(TemplateRef);
22
+ this.destroyRef = inject(DestroyRef);
23
+ this.changeDetectorRef = inject(ChangeDetectorRef);
24
+ this.searchTerm = signal('');
25
+ this.resultSubject = new Subject();
26
+ }
27
+ ngOnDestroy() {
28
+ this.keyManager?.destroy();
29
+ }
30
+ ngAfterViewInit() {
31
+ this.initializeKeyManager();
32
+ }
33
+ selectItem(suggestion, index) {
34
+ this.keyManager?.setActiveItem(index);
35
+ this.updateControlValue(suggestion);
36
+ }
37
+ trackBy(item) {
38
+ return getSuggestionLabel(item, this.labelField());
39
+ }
40
+ handleKeydown(event) {
41
+ if (event.key === 'Enter') {
42
+ const item = this.keyManager?.activeItem?.item();
43
+ this.updateControlValue(item);
44
+ }
45
+ else {
46
+ this.keyManager?.onKeydown(event);
47
+ }
48
+ this.changeDetectorRef.markForCheck();
49
+ }
50
+ initializeKeyManager() {
51
+ this.keyManager = new ActiveDescendantKeyManager(this.items)
52
+ .withWrap()
53
+ .withTypeAhead()
54
+ .withVerticalOrientation();
55
+ this.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((index) => {
56
+ this.scrollActiveOptionIntoView(index);
57
+ });
58
+ }
59
+ updateControlValue(value) {
60
+ this.resultSubject.next(value);
61
+ }
62
+ scrollActiveOptionIntoView(index) {
63
+ const activeOptionIndex = index || 0;
64
+ const activeOption = this.items.toArray()[activeOptionIndex];
65
+ if (activeOption) {
66
+ activeOption.elementRef.nativeElement.scrollIntoView({
67
+ behavior: 'smooth',
68
+ block: 'nearest',
69
+ });
70
+ }
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: AutosuggestComponent, isStandalone: true, selector: "ndw-autosuggest", inputs: { noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, maxResults: { classPropertyName: "maxResults", publicName: "maxResults", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "items", predicate: AutosuggestItemComponent, descendants: true }], ngImport: i0, template: "<ng-template>\n @if (suggestions().length > 0) {\n <div class=\"ndw-autosuggest\" role=\"listbox\" tabindex=\"-1\">\n @for (item of suggestions(); track trackBy(item); let i = $index) {\n <!-- Setting the active class here is needed because the angular CDK will not highlight the first option by default. -->\n <ndw-autosuggest-item\n [searchTerm]=\"searchTerm()\"\n [item]=\"item\"\n [labelField]=\"labelField()\"\n (click)=\"selectItem(item, i)\"\n tabindex=\"-1\"\n [class.active]=\"i === keyManager?.activeItemIndex\"\n />\n }\n </div>\n } @else if (!!searchTerm()) {\n <div class=\"ndw-autosuggest\">\n <div class=\"ndw-autosuggest__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n </div>\n }\n</ng-template>\n", styles: [":host{display:block;width:100%}.ndw-autosuggest{--dropdown-min-width: 300px;display:block;overflow:hidden;min-width:var(--dropdown-min-width);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-content)}.ndw-autosuggest>ndw-autocomplete-item:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AutosuggestItemComponent, selector: "ndw-autosuggest-item", inputs: ["item", "searchTerm", "labelField"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AutosuggestComponent, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: 'ndw-autosuggest', standalone: true, imports: [CommonModule, AutosuggestItemComponent, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n @if (suggestions().length > 0) {\n <div class=\"ndw-autosuggest\" role=\"listbox\" tabindex=\"-1\">\n @for (item of suggestions(); track trackBy(item); let i = $index) {\n <!-- Setting the active class here is needed because the angular CDK will not highlight the first option by default. -->\n <ndw-autosuggest-item\n [searchTerm]=\"searchTerm()\"\n [item]=\"item\"\n [labelField]=\"labelField()\"\n (click)=\"selectItem(item, i)\"\n tabindex=\"-1\"\n [class.active]=\"i === keyManager?.activeItemIndex\"\n />\n }\n </div>\n } @else if (!!searchTerm()) {\n <div class=\"ndw-autosuggest\">\n <div class=\"ndw-autosuggest__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n </div>\n }\n</ng-template>\n", styles: [":host{display:block;width:100%}.ndw-autosuggest{--dropdown-min-width: 300px;display:block;overflow:hidden;min-width:var(--dropdown-min-width);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-content)}.ndw-autosuggest>ndw-autocomplete-item:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"] }]
78
+ }], propDecorators: { items: [{
79
+ type: ViewChildren,
80
+ args: [AutosuggestItemComponent]
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXpELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sc0JBQXNCLEdBQUcsd0RBQXdELENBQUM7QUFVeEYsTUFBTSxPQUFPLG9CQUFvQjtJQVJqQztRQVNrQixpQkFBWSxHQUFHLEtBQUssQ0FBUyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELGVBQVUsR0FBRyxLQUFLLENB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LENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQXZFVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix5ekJBVU0sV0FBVywyRUFEbEMsd0JBQXdCLGdEQzVDeEMsaTNCQXdCQSwwc0JETVksWUFBWSwrQkFBRSx3QkFBd0IsK0dBQUUsYUFBYTs7MkZBS3BELG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLG1CQUcvQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQVdBLEtBQUs7c0JBQW5ELFlBQVk7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2F1dG9zdWdnZXN0LWl0ZW0vYXV0b3N1Z2dlc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuaW1wb3J0IHsgZ2V0U3VnZ2VzdGlvbkxhYmVsIH0gZnJvbSAnLi9hdXRvc3VnZ2VzdC51dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfTUFYX1JFU1VMVFMgPSA3O1xuY29uc3QgREVGQVVMVF9OT19SRVNVTFRfVEVYVCA9ICdHZWVuIHJlc3VsdGF0ZW4gZ2V2b25kZW4uIFByb2JlZXIgZWVuIGFuZGVyZSB6b2VrdGVybS4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQsIEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b3N1Z2dlc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRUZXh0ID0gaW5wdXQ8c3RyaW5nPihERUZBVUxUX05PX1JFU1VMVF9URVhUKTtcbiAgcHVibGljIHJlYWRvbmx5IG1heFJlc3VsdHMgPSBpbnB1dDxudW1iZXI+KERFRkFVTFRfTUFYX1JFU1VMVFMpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9yY2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VnZ2VzdGlvbnMgPSBpbnB1dDxTdWdnZXN0aW9uW10sIFN1Z2dlc3Rpb25bXT4oW10sIHtcbiAgICB0cmFuc2Zvcm06IChzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdKTogU3VnZ2VzdGlvbltdID0+IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIHRoaXMubWF4UmVzdWx0cygpKSxcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZHJlbihBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQpIHB1YmxpYyBpdGVtcyE6IFF1ZXJ5TGlzdDxBdXRvc3VnZ2VzdEl0ZW1Db21wb25lbnQ+O1xuICBwdWJsaWMgdGVtcGxhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoVGVtcGxhdGVSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHVibGljIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPEF1dG9zdWdnZXN0SXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZXN1bHRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3VnZ2VzdGlvbj4oKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUtleU1hbmFnZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RJdGVtKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnkoaXRlbTogU3VnZ2VzdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25MYWJlbChpdGVtLCB0aGlzLmxhYmVsRmllbGQoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0/Lml0ZW0oKTtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVLZXlNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLml0ZW1zKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC53aXRoVHlwZUFoZWFkKClcbiAgICAgIC53aXRoVmVydGljYWxPcmllbnRhdGlvbigpO1xuXG4gICAgdGhpcy5rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsQWN0aXZlT3B0aW9uSW50b1ZpZXcoaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUodmFsdWU6IFN1Z2dlc3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb25JbmRleCA9IGluZGV4IHx8IDA7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5pdGVtcy50b0FycmF5KClbYWN0aXZlT3B0aW9uSW5kZXhdO1xuICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgIGFjdGl2ZU9wdGlvbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgQGlmIChzdWdnZXN0aW9ucygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0XCIgcm9sZT1cImxpc3Rib3hcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIHN1Z2dlc3Rpb25zKCk7IHRyYWNrIHRyYWNrQnkoaXRlbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDwhLS0gU2V0dGluZyB0aGUgYWN0aXZlIGNsYXNzIGhlcmUgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIGFuZ3VsYXIgQ0RLIHdpbGwgbm90IGhpZ2hsaWdodCB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQuIC0tPlxuICAgICAgICA8bmR3LWF1dG9zdWdnZXN0LWl0ZW1cbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cImxhYmVsRmllbGQoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSwgaSlcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0ga2V5TWFuYWdlcj8uYWN0aXZlSXRlbUluZGV4XCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSBpZiAoISFzZWFyY2hUZXJtKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmR3LWF1dG9zdWdnZXN0X19lbXB0eVwiPlxuICAgICAgICA8bmR3LWljb24+c2VudGltZW50X2Rpc3NhdGlzZmllZDwvbmR3LWljb24+XG4gICAgICAgIHt7IG5vUmVzdWx0VGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbiA9IHN0cmluZyB8IHVua25vd247XG4iXX0=
@@ -0,0 +1,13 @@
1
+ export const getSuggestionLabel = (suggestion, field) => {
2
+ if (suggestion == null) {
3
+ return '';
4
+ }
5
+ if (typeof suggestion === 'string') {
6
+ return suggestion;
7
+ }
8
+ if (field && typeof suggestion === 'object') {
9
+ return suggestion[field];
10
+ }
11
+ return JSON.stringify(suggestion);
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQXNCLEVBQUUsS0FBYyxFQUFVLEVBQUU7SUFDbkYsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxLQUFLLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsS0FBZ0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgZ2V0U3VnZ2VzdGlvbkxhYmVsID0gKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24sIGZpZWxkPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHN1Z2dlc3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3VnZ2VzdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgfVxuXG4gIGlmIChmaWVsZCAmJiB0eXBlb2Ygc3VnZ2VzdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbltmaWVsZCBhcyBrZXlvZiB0eXBlb2Ygc3VnZ2VzdGlvbl07XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3VnZ2VzdGlvbik7XG59O1xuIl19
@@ -0,0 +1,6 @@
1
+ export * from './autosuggest-highlight.pipe';
2
+ export * from './autosuggest-item/autosuggest-item.component';
3
+ export * from './autosuggest-trigger.directive';
4
+ export * from './autosuggest.component';
5
+ export * from './autosuggest.model';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LWhpZ2hsaWdodC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QtaXRlbS9hdXRvc3VnZ2VzdC1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QubW9kZWwnO1xuIl19