@ndwnu/design-system 4.0.0 → 5.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 (130) hide show
  1. package/assets/images/dashboard-card-icons/contact.png +0 -0
  2. package/assets/images/dashboard-card-icons/faq.png +0 -0
  3. package/assets/images/dashboard-card-icons/manual.png +0 -0
  4. package/components/card/index.d.ts +2 -2
  5. package/components/dashboard-card/dashboard-card.component.d.ts +22 -0
  6. package/components/dashboard-card/index.d.ts +1 -0
  7. package/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.d.ts +8 -0
  8. package/components/form-field/autosuggest/autosuggest-add-option/index.d.ts +1 -0
  9. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.d.ts +19 -0
  10. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.d.ts +2 -0
  11. package/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.d.ts +27 -0
  12. package/components/form-field/autosuggest/autosuggest-option/index.d.ts +2 -0
  13. package/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.d.ts +39 -0
  14. package/components/form-field/autosuggest/autosuggest.directive.d.ts +72 -0
  15. package/components/form-field/autosuggest/index.d.ts +5 -5
  16. package/components/form-field/autosuggest/match-bold.pipe.d.ts +7 -0
  17. package/components/form-field/clear-search-button/clear-search-button.component.d.ts +15 -0
  18. package/components/form-field/form-field.component.d.ts +19 -24
  19. package/components/form-field/form-field.constant.d.ts +1 -0
  20. package/components/form-field/index.d.ts +2 -0
  21. package/components/form-field/input/input.directive.d.ts +0 -1
  22. package/components/form-field/input-button/index.d.ts +1 -0
  23. package/components/form-field/input-button/input-button.component.d.ts +12 -0
  24. package/components/form-field/input-icon/index.d.ts +1 -0
  25. package/components/form-field/input-icon/input-icon.component.d.ts +5 -0
  26. package/components/form-field/picker-button/picker-button.component.d.ts +14 -0
  27. package/components/icon/icon.component.d.ts +1 -0
  28. package/components/index.d.ts +3 -2
  29. package/components/main-navigation/main-navigation.component.d.ts +8 -3
  30. package/components/main-navigation/main-navigation.imports.d.ts +1 -1
  31. package/components/main-navigation/main-navigation.model.d.ts +1 -0
  32. package/components/main-navigation-menu/main-navigation-menu.component.d.ts +2 -2
  33. package/components/modal/index.d.ts +0 -1
  34. package/components/modal/modal-header/modal-header.component.d.ts +1 -1
  35. package/components/modal/modal-ref.d.ts +3 -0
  36. package/components/modal/modal.service.d.ts +13 -12
  37. package/core/{styles/ndw-styles.scss → style/styles.css} +488 -224
  38. package/core/{styles/nwb-styles.scss → style/styles.scss} +519 -223
  39. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  40. package/esm2022/components/accordion/accordion.service.mjs +3 -3
  41. package/esm2022/components/alert/alert.component.mjs +5 -5
  42. package/esm2022/components/badge/badge.component.mjs +4 -4
  43. package/esm2022/components/banner/banner.component.mjs +5 -5
  44. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +3 -3
  45. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +5 -5
  46. package/esm2022/components/button/button.directive.mjs +3 -3
  47. package/esm2022/components/card/card-content/card-content.component.mjs +3 -3
  48. package/esm2022/components/card/card-footer/card-footer.component.mjs +3 -3
  49. package/esm2022/components/card/card-header/card-header.component.mjs +3 -3
  50. package/esm2022/components/card/card.component.mjs +3 -3
  51. package/esm2022/components/collapsible/collapsible.component.mjs +3 -3
  52. package/esm2022/components/dashboard-card/dashboard-card.component.mjs +32 -0
  53. package/esm2022/components/dashboard-card/index.mjs +2 -0
  54. package/esm2022/components/dropdown/dropdown.component.mjs +3 -3
  55. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.mjs +29 -0
  56. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/index.mjs +2 -0
  57. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.mjs +45 -0
  58. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.mjs +2 -0
  59. package/esm2022/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.mjs +85 -0
  60. package/esm2022/components/form-field/autosuggest/autosuggest-option/index.mjs +3 -0
  61. package/esm2022/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.mjs +82 -0
  62. package/esm2022/components/form-field/autosuggest/autosuggest.directive.mjs +411 -0
  63. package/esm2022/components/form-field/autosuggest/index.mjs +6 -6
  64. package/esm2022/components/form-field/autosuggest/match-bold.pipe.mjs +21 -0
  65. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +6 -6
  66. package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +3 -3
  67. package/esm2022/components/form-field/clear-search-button/clear-search-button.component.mjs +37 -0
  68. package/esm2022/components/form-field/error/error.component.mjs +3 -3
  69. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +3 -3
  70. package/esm2022/components/form-field/form-field.component.mjs +24 -82
  71. package/esm2022/components/form-field/form-field.constant.mjs +2 -0
  72. package/esm2022/components/form-field/index.mjs +3 -1
  73. package/esm2022/components/form-field/info/info.component.mjs +3 -3
  74. package/esm2022/components/form-field/input/input.directive.mjs +5 -11
  75. package/esm2022/components/form-field/input-button/index.mjs +2 -0
  76. package/esm2022/components/form-field/input-button/input-button.component.mjs +23 -0
  77. package/esm2022/components/form-field/input-icon/index.mjs +2 -0
  78. package/esm2022/components/form-field/input-icon/input-icon.component.mjs +12 -0
  79. package/esm2022/components/form-field/month-input/month-input.component.mjs +5 -5
  80. package/esm2022/components/form-field/option-group/option-group.component.mjs +3 -3
  81. package/esm2022/components/form-field/option-group/option.component.mjs +3 -3
  82. package/esm2022/components/form-field/picker-button/picker-button.component.mjs +45 -0
  83. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +6 -6
  84. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +3 -3
  85. package/esm2022/components/form-field/success/success.component.mjs +3 -3
  86. package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +3 -3
  87. package/esm2022/components/icon/action-icon/action-icon.component.mjs +3 -3
  88. package/esm2022/components/icon/icon.component.mjs +12 -7
  89. package/esm2022/components/index.mjs +4 -3
  90. package/esm2022/components/layout/layout.component.mjs +5 -5
  91. package/esm2022/components/layout-banners/layout-banners.component.mjs +3 -3
  92. package/esm2022/components/loader/loader.component.mjs +3 -3
  93. package/esm2022/components/main-navigation/main-navigation.component.mjs +46 -24
  94. package/esm2022/components/main-navigation/main-navigation.model.mjs +1 -1
  95. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +8 -8
  96. package/esm2022/components/modal/index.mjs +1 -4
  97. package/esm2022/components/modal/modal-content/modal-content.component.mjs +3 -3
  98. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +3 -3
  99. package/esm2022/components/modal/modal-header/modal-header.component.mjs +7 -9
  100. package/esm2022/components/modal/modal-ref.mjs +4 -0
  101. package/esm2022/components/modal/modal.component.mjs +5 -6
  102. package/esm2022/components/modal/modal.service.mjs +20 -51
  103. package/esm2022/components/multi-select/multi-select.component.mjs +4 -4
  104. package/esm2022/components/pill/pill.component.mjs +3 -3
  105. package/esm2022/components/popover/popover-trigger.directive.mjs +3 -3
  106. package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +3 -3
  107. package/esm2022/components/tab/tab.component.mjs +3 -3
  108. package/esm2022/components/tab-group/tab-group.component.mjs +3 -3
  109. package/esm2022/components/tag/tag.component.mjs +3 -3
  110. package/esm2022/components/toast/toast.component.mjs +3 -3
  111. package/esm2022/components/toast/toast.service.mjs +3 -3
  112. package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
  113. package/esm2022/components/tooltip/tooltip.directive.mjs +3 -3
  114. package/fesm2022/ndwnu-design-system.mjs +948 -580
  115. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  116. package/package.json +1 -1
  117. package/components/form-field/autosuggest/autosuggest-highlight.pipe.d.ts +0 -7
  118. package/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.d.ts +0 -15
  119. package/components/form-field/autosuggest/autosuggest-trigger.directive.d.ts +0 -35
  120. package/components/form-field/autosuggest/autosuggest.component.d.ts +0 -30
  121. package/components/form-field/autosuggest/autosuggest.model.d.ts +0 -1
  122. package/components/form-field/autosuggest/autosuggest.utils.d.ts +0 -2
  123. package/components/modal/modal-trigger.directive.d.ts +0 -17
  124. package/esm2022/components/form-field/autosuggest/autosuggest-highlight.pipe.mjs +0 -21
  125. package/esm2022/components/form-field/autosuggest/autosuggest-item/autosuggest-item.component.mjs +0 -34
  126. package/esm2022/components/form-field/autosuggest/autosuggest-trigger.directive.mjs +0 -160
  127. package/esm2022/components/form-field/autosuggest/autosuggest.component.mjs +0 -82
  128. package/esm2022/components/form-field/autosuggest/autosuggest.model.mjs +0 -2
  129. package/esm2022/components/form-field/autosuggest/autosuggest.utils.mjs +0 -13
  130. package/esm2022/components/modal/modal-trigger.directive.mjs +0 -51
@@ -1,10 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class CardHeaderComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: CardHeaderComponent, isStandalone: true, selector: "ndw-card-header", ngImport: i0, template: "<ng-content />\n", styles: [":host{display:grid;align-items:center;font-size:var(--ndw-font-size-lg);font-weight:700;word-break:break-word}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CardHeaderComponent, isStandalone: true, selector: "ndw-card-header", ngImport: i0, template: "<ng-content />\n", styles: [":host{display:grid;align-items:center;font-size:var(--ndw-font-size-lg);font-weight:700;word-break:break-word}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CardHeaderComponent, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CardHeaderComponent, decorators: [{
8
8
  type: Component,
9
9
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ndw-card-header', standalone: true, template: "<ng-content />\n", styles: [":host{display:grid;align-items:center;font-size:var(--ndw-font-size-lg);font-weight:700;word-break:break-word}\n"] }]
10
10
  }] });
@@ -1,10 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class CardComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: CardComponent, isStandalone: true, selector: "ndw-card", ngImport: i0, template: "<ng-content />\n", styles: [":host{background-color:var(--ndw-color-white);border-radius:var(--ndw-border-radius-md);box-shadow:var(--ndw-elevation-content);display:grid;gap:var(--ndw-spacing-md);padding:var(--ndw-spacing-lg)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CardComponent, isStandalone: true, selector: "ndw-card", ngImport: i0, template: "<ng-content />\n", styles: [":host{background-color:var(--ndw-color-white);border-radius:var(--ndw-border-radius-md);box-shadow:var(--ndw-elevation-content);display:grid;gap:var(--ndw-spacing-md);padding:var(--ndw-spacing-lg)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CardComponent, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CardComponent, decorators: [{
8
8
  type: Component,
9
9
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ndw-card', standalone: true, template: "<ng-content />\n", styles: [":host{background-color:var(--ndw-color-white);border-radius:var(--ndw-border-radius-md);box-shadow:var(--ndw-elevation-content);display:grid;gap:var(--ndw-spacing-md);padding:var(--ndw-spacing-lg)}\n"] }]
10
10
  }] });
@@ -22,10 +22,10 @@ export class CollapsibleComponent {
22
22
  this.accordionService.setExpandedCollapsible(this.index());
23
23
  }
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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 }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", 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 }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CollapsibleComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CollapsibleComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{ animations: [collapsibleAnimation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
31
31
  '[class.expanded]': 'expanded()',
@@ -0,0 +1,32 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { CardContentComponent } from '../card/card-content/card-content.component';
3
+ import { CardComponent } from '../card/card.component';
4
+ import * as i0 from "@angular/core";
5
+ export class DashboardCardComponent {
6
+ constructor() {
7
+ /**
8
+ * The title of the card.
9
+ */
10
+ this.title = input.required();
11
+ /**
12
+ * The URL to the icon to display on the card. The icon is assumed to be rectangular.
13
+ */
14
+ this.imgSource = input.required();
15
+ /**
16
+ * The url to open in a new window when the card is clicked.
17
+ */
18
+ this.link = input.required();
19
+ /**
20
+ * Specifies where to open the linked document.
21
+ * Valid values are `_blank`, `_parent`, `_self`, or `_top`.
22
+ */
23
+ this.linkTarget = input('_blank');
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DashboardCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: DashboardCardComponent, isStandalone: true, selector: "ndw-dashboard-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, imgSource: { classPropertyName: "imgSource", publicName: "imgSource", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: true, transformFunction: null }, linkTarget: { classPropertyName: "linkTarget", publicName: "linkTarget", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<a [href]=\"link()\" [target]=\"linkTarget()\" rel=\"noreferrer noopener\" [title]=\"title()\">\n <ndw-card class=\"card\">\n <ndw-card-content class=\"card-content\">\n <img [src]=\"imgSource()\" [alt]=\"title()\" />\n <span class=\"ndw-heading-sm title\">{{ title() }}</span>\n <div class=\"ndw-paragraph-md description\"><ng-content /></div>\n </ndw-card-content>\n </ndw-card>\n</a>\n", styles: [":host{display:block}a{text-decoration:none}.card{padding:var(--ndw-spacing-3xl);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:hover{background-color:var(--ndw-color-secondary-050);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:hover .title{color:var(--ndw-color-secondary-500);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active{background-color:var(--ndw-color-secondary-100);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active .title{color:var(--ndw-color-secondary-600);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active .description{color:var(--ndw-color-grey-700);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card-content{display:flex;flex-direction:column;align-items:center;gap:var(--ndw-spacing-xs)}.card-content img{height:50px;width:50px;object-fit:contain}.card-content .title{text-align:center;color:var(--ndw-color-grey-700);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-content .description{text-align:center;color:var(--ndw-color-grey-500);width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;line-clamp:2;-webkit-line-clamp:2}\n"], dependencies: [{ kind: "component", type: CardComponent, selector: "ndw-card" }, { kind: "component", type: CardContentComponent, selector: "ndw-card-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DashboardCardComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [CardComponent, CardContentComponent], selector: 'ndw-dashboard-card', standalone: true, template: "<a [href]=\"link()\" [target]=\"linkTarget()\" rel=\"noreferrer noopener\" [title]=\"title()\">\n <ndw-card class=\"card\">\n <ndw-card-content class=\"card-content\">\n <img [src]=\"imgSource()\" [alt]=\"title()\" />\n <span class=\"ndw-heading-sm title\">{{ title() }}</span>\n <div class=\"ndw-paragraph-md description\"><ng-content /></div>\n </ndw-card-content>\n </ndw-card>\n</a>\n", styles: [":host{display:block}a{text-decoration:none}.card{padding:var(--ndw-spacing-3xl);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:hover{background-color:var(--ndw-color-secondary-050);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:hover .title{color:var(--ndw-color-secondary-500);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active{background-color:var(--ndw-color-secondary-100);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active .title{color:var(--ndw-color-secondary-600);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card:active .description{color:var(--ndw-color-grey-700);transition-property:color,background-color;transition-duration:var(--ndw-animation-speed-fast);transition-timing-function:ease-out}.card-content{display:flex;flex-direction:column;align-items:center;gap:var(--ndw-spacing-xs)}.card-content img{height:50px;width:50px;object-fit:contain}.card-content .title{text-align:center;color:var(--ndw-color-grey-700);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-content .description{text-align:center;color:var(--ndw-color-grey-500);width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;line-clamp:2;-webkit-line-clamp:2}\n"] }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Rhc2hib2FyZC1jYXJkL2Rhc2hib2FyZC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9kYXNoYm9hcmQtY2FyZC9kYXNoYm9hcmQtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBVXZELE1BQU0sT0FBTyxzQkFBc0I7SUFSbkM7UUFTRTs7V0FFRztRQUNhLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFakQ7O1dBRUc7UUFDYSxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRXJEOztXQUVHO1FBQ2EsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUVoRDs7O1dBR0c7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0tBQ3REOzhHQXJCWSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwra0JDWm5DLDZaQVNBLHlyRERIWSxhQUFhLHFEQUFFLG9CQUFvQjs7MkZBTWxDLHNCQUFzQjtrQkFSbEMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsYUFBYSxFQUFFLG9CQUFvQixDQUFDLFlBQ3BDLG9CQUFvQixjQUNsQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NhcmRDb21wb25lbnQsIENhcmRDb250ZW50Q29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZHctZGFzaGJvYXJkLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDYXJkQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2FyZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0aXRsZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogVGhlIFVSTCB0byB0aGUgaWNvbiB0byBkaXNwbGF5IG9uIHRoZSBjYXJkLiBUaGUgaWNvbiBpcyBhc3N1bWVkIHRvIGJlIHJlY3Rhbmd1bGFyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltZ1NvdXJjZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogVGhlIHVybCB0byBvcGVuIGluIGEgbmV3IHdpbmRvdyB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGluayA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXJlIHRvIG9wZW4gdGhlIGxpbmtlZCBkb2N1bWVudC5cbiAgICogVmFsaWQgdmFsdWVzIGFyZSBgX2JsYW5rYCwgYF9wYXJlbnRgLCBgX3NlbGZgLCBvciBgX3RvcGAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGlua1RhcmdldCA9IGlucHV0PHN0cmluZz4oJ19ibGFuaycpO1xufVxuIiwiPGEgW2hyZWZdPVwibGluaygpXCIgW3RhcmdldF09XCJsaW5rVGFyZ2V0KClcIiByZWw9XCJub3JlZmVycmVyIG5vb3BlbmVyXCIgW3RpdGxlXT1cInRpdGxlKClcIj5cbiAgPG5kdy1jYXJkIGNsYXNzPVwiY2FyZFwiPlxuICAgIDxuZHctY2FyZC1jb250ZW50IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICA8aW1nIFtzcmNdPVwiaW1nU291cmNlKClcIiBbYWx0XT1cInRpdGxlKClcIiAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZHctaGVhZGluZy1zbSB0aXRsZVwiPnt7IHRpdGxlKCkgfX08L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwibmR3LXBhcmFncmFwaC1tZCBkZXNjcmlwdGlvblwiPjxuZy1jb250ZW50IC8+PC9kaXY+XG4gICAgPC9uZHctY2FyZC1jb250ZW50PlxuICA8L25kdy1jYXJkPlxuPC9hPlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './dashboard-card.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZGFzaGJvYXJkLWNhcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkLWNhcmQuY29tcG9uZW50JztcbiJdfQ==
@@ -47,10 +47,10 @@ export class DropdownComponent {
47
47
  isOpenChanged(isOpen) {
48
48
  this.isOpenChange.emit(isOpen);
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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 }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", 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 }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DropdownComponent, decorators: [{
54
54
  type: Component,
55
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"] }]
56
56
  }] });
@@ -0,0 +1,29 @@
1
+ import { ChangeDetectionStrategy, Component, output } from '@angular/core';
2
+ import { IconComponent } from '../../../icon';
3
+ import { AutocompleteOptionSelectionChange, BaseAutosuggestOptionComponent, } from '../autosuggest-option';
4
+ import * as i0 from "@angular/core";
5
+ export class AutosuggestAddOptionComponent extends BaseAutosuggestOptionComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.addOption = output();
9
+ }
10
+ emitSelectionChangeEvent(isUserInput = false) {
11
+ this.addOption.emit(this.value());
12
+ this.selectionChange.emit(new AutocompleteOptionSelectionChange(this, isUserInput));
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestAddOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: AutosuggestAddOptionComponent, isStandalone: true, selector: "ndw-autosuggest-add-option", outputs: { addOption: "addOption" }, host: { attributes: { "role": "option" }, listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "class.ndw-autosuggest-option--active": "active", "class.ndw-autosuggest-option--selected": "selected", "attr.aria-selected": "selected" }, classAttribute: "ndw-autosuggest-option ndw-autosuggest-option--add" }, usesInheritance: true, ngImport: i0, template: "<ndw-icon [size]=\"'sm'\">add</ndw-icon> Voeg <span class=\"truncate\">'{{ value() }}'</span> toe\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;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);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestAddOptionComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'ndw-autosuggest-add-option', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [IconComponent], host: {
20
+ role: 'option',
21
+ class: 'ndw-autosuggest-option ndw-autosuggest-option--add',
22
+ '[class.ndw-autosuggest-option--active]': 'active',
23
+ '[class.ndw-autosuggest-option--selected]': 'selected',
24
+ '[attr.aria-selected]': 'selected',
25
+ '(click)': 'selectViaInteraction()',
26
+ '(keydown)': 'handleKeydown($event)',
27
+ }, template: "<ndw-icon [size]=\"'sm'\">add</ndw-icon> Voeg <span class=\"truncate\">'{{ value() }}'</span> toe\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;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);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"] }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbi9hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyw4QkFBOEIsR0FDL0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFtQi9CLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSw4QkFBOEI7SUFqQmpGOztRQWtCa0IsY0FBUyxHQUFHLE1BQU0sRUFBVSxDQUFDO0tBTTlDO0lBSlcsd0JBQXdCLENBQUMsV0FBVyxHQUFHLEtBQUs7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBWSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDOzhHQU5VLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG9mQ3hCMUMscUdBQ0EsbWhDRFVZLGFBQWE7OzJGQWFaLDZCQUE2QjtrQkFqQnpDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUNyQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGFBQWEsQ0FBQyxRQUdsQjt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxLQUFLLEVBQUUsb0RBQW9EO3dCQUMzRCx3Q0FBd0MsRUFBRSxRQUFRO3dCQUNsRCwwQ0FBMEMsRUFBRSxVQUFVO3dCQUN0RCxzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyxTQUFTLEVBQUUsd0JBQXdCO3dCQUNuQyxXQUFXLEVBQUUsdUJBQXVCO3FCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ljb24nO1xuaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0aW9uQ2hhbmdlLFxuICBCYXNlQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQsXG59IGZyb20gJy4uL2F1dG9zdWdnZXN0LW9wdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25kdy1hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4uL2F1dG9zdWdnZXN0LW9wdGlvbi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50LnNjc3MnLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ29wdGlvbicsXG4gICAgY2xhc3M6ICduZHctYXV0b3N1Z2dlc3Qtb3B0aW9uIG5kdy1hdXRvc3VnZ2VzdC1vcHRpb24tLWFkZCcsXG4gICAgJ1tjbGFzcy5uZHctYXV0b3N1Z2dlc3Qtb3B0aW9uLS1hY3RpdmVdJzogJ2FjdGl2ZScsXG4gICAgJ1tjbGFzcy5uZHctYXV0b3N1Z2dlc3Qtb3B0aW9uLS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdzZWxlY3RlZCcsXG4gICAgJyhjbGljayknOiAnc2VsZWN0VmlhSW50ZXJhY3Rpb24oKScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBhZGRPcHRpb24gPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCBlbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoaXNVc2VySW5wdXQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuYWRkT3B0aW9uLmVtaXQodGhpcy52YWx1ZSgpIGFzIHN0cmluZyk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChuZXcgQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGlzVXNlcklucHV0KSk7XG4gIH1cbn1cbiIsIjxuZHctaWNvbiBbc2l6ZV09XCInc20nXCI+YWRkPC9uZHctaWNvbj4gVm9lZyA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+J3t7IHZhbHVlKCkgfX0nPC9zcGFuPiB0b2VcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './autosuggest-add-option.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24uY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { BaseAutosuggestOptionComponent } from './base-autosuggest-option.component';
3
+ import { MatchBoldPipe } from '../match-bold.pipe';
4
+ import * as i0 from "@angular/core";
5
+ export class AutocompleteOptionSelectionChange {
6
+ constructor(source, isUserInput = false) {
7
+ this.source = source;
8
+ this.isUserInput = isUserInput;
9
+ }
10
+ }
11
+ export class AutosuggestOptionComponent extends BaseAutosuggestOptionComponent {
12
+ get viewValue() {
13
+ return (this.getHostElement().textContent ?? '').trim();
14
+ }
15
+ constructor() {
16
+ super();
17
+ this.searchTerm = input('');
18
+ this.label = input.required();
19
+ this.id = `ndw-option-${crypto.randomUUID()}`;
20
+ }
21
+ // getLabel is required in the FocusableOption interface, which is
22
+ // implemented by BaseAutosuggestOptionComponent
23
+ getLabel() {
24
+ return this.viewValue;
25
+ }
26
+ emitSelectionChangeEvent(isUserInput = false) {
27
+ this.selectionChange.emit(new AutocompleteOptionSelectionChange(this, isUserInput));
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: AutosuggestOptionComponent, isStandalone: true, selector: "ndw-autosuggest-option", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "option" }, listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "id": "id", "class.ndw-autosuggest-option--selected": "selected", "class.ndw-autosuggest-option--active": "active", "attr.aria-selected": "selected" }, classAttribute: "ndw-autosuggest-option" }, usesInheritance: true, ngImport: i0, template: "<span class=\"ndw-option-text\" [innerHTML]=\"label() | matchBold: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;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);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: MatchBoldPipe, name: "matchBold" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestOptionComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'ndw-autosuggest-option', standalone: true, imports: [MatchBoldPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
35
+ role: 'option',
36
+ '[id]': 'id',
37
+ class: 'ndw-autosuggest-option',
38
+ '[class.ndw-autosuggest-option--selected]': 'selected',
39
+ '[class.ndw-autosuggest-option--active]': 'active',
40
+ '[attr.aria-selected]': 'selected',
41
+ '(click)': 'selectViaInteraction()',
42
+ '(keydown)': 'handleKeydown($event)',
43
+ }, template: "<span class=\"ndw-option-text\" [innerHTML]=\"label() | matchBold: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;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);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"] }]
44
+ }], ctorParameters: () => [] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2F1dG9zdWdnZXN0L2F1dG9zdWdnZXN0LW9wdGlvbi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUMsWUFDUyxNQUFrRSxFQUNsRSxjQUFjLEtBQUs7UUFEbkIsV0FBTSxHQUFOLE1BQU0sQ0FBNEQ7UUFDbEUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFDekIsQ0FBQztDQUNMO0FBb0JELE1BQU0sT0FBTywwQkFBMkIsU0FBUSw4QkFBOEI7SUFNNUUsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBVk0sZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBVS9DLElBQUksQ0FBQyxFQUFFLEdBQUcsY0FBYyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLGdEQUFnRDtJQUN6QyxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxXQUFXLEdBQUcsS0FBSztRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBdkJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFzQkM5QnZDLDZGQUNBLDhnQ0RjWSxhQUFhOzsyRkFlWiwwQkFBMEI7a0JBbEJ0QyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxhQUFhLENBQUMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxNQUFNLEVBQUUsSUFBSTt3QkFDWixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQiwwQ0FBMEMsRUFBRSxVQUFVO3dCQUN0RCx3Q0FBd0MsRUFBRSxRQUFRO3dCQUNsRCxzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyxTQUFTLEVBQUUsd0JBQXdCO3dCQUNuQyxXQUFXLEVBQUUsdUJBQXVCO3FCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24nO1xuaW1wb3J0IHsgQmFzZUF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWF1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Y2hCb2xkUGlwZSB9IGZyb20gJy4uL21hdGNoLWJvbGQucGlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNvdXJjZTogQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCxcbiAgICBwdWJsaWMgaXNVc2VySW5wdXQgPSBmYWxzZSxcbiAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3Qtb3B0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdGNoQm9sZFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ29wdGlvbicsXG4gICAgJ1tpZF0nOiAnaWQnLFxuICAgIGNsYXNzOiAnbmR3LWF1dG9zdWdnZXN0LW9wdGlvbicsXG4gICAgJ1tjbGFzcy5uZHctYXV0b3N1Z2dlc3Qtb3B0aW9uLS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICdbY2xhc3MubmR3LWF1dG9zdWdnZXN0LW9wdGlvbi0tYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdzZWxlY3RlZCcsXG4gICAgJyhjbGljayknOiAnc2VsZWN0VmlhSW50ZXJhY3Rpb24oKScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hUZXJtID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5nZXRIb3N0RWxlbWVudCgpLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gYG5kdy1vcHRpb24tJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWA7XG4gIH1cblxuICAvLyBnZXRMYWJlbCBpcyByZXF1aXJlZCBpbiB0aGUgRm9jdXNhYmxlT3B0aW9uIGludGVyZmFjZSwgd2hpY2ggaXNcbiAgLy8gaW1wbGVtZW50ZWQgYnkgQmFzZUF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50XG4gIHB1YmxpYyBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZpZXdWYWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoaXNVc2VySW5wdXQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IEF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGlvbkNoYW5nZSh0aGlzLCBpc1VzZXJJbnB1dCkpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cIm5kdy1vcHRpb24tdGV4dFwiIFtpbm5lckhUTUxdPVwibGFiZWwoKSB8IG1hdGNoQm9sZDogc2VhcmNoVGVybSgpXCI+PC9zcGFuPlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3Qtb3B0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2F1dG9zdWdnZXN0LW9wdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQXV0b3N1Z2dlc3RPcHRpb24gPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbmV4cG9ydCB0eXBlIEF1dG9zdWdnZXN0T3B0aW9ucyA9IEFycmF5PEF1dG9zdWdnZXN0T3B0aW9uPjtcbiJdfQ==
@@ -0,0 +1,85 @@
1
+ import { ChangeDetectorRef, Component, ElementRef, ChangeDetectionStrategy, EventEmitter, inject, input, } from '@angular/core';
2
+ import { hasModifierKey } from '@angular/cdk/keycodes';
3
+ import * as i0 from "@angular/core";
4
+ export class BaseAutosuggestOptionComponent {
5
+ constructor() {
6
+ this.value = input();
7
+ this.selectionChange = new EventEmitter();
8
+ this._active = false;
9
+ this._selected = false;
10
+ this.element = inject(ElementRef);
11
+ this.changeDetectorRef = inject(ChangeDetectorRef);
12
+ }
13
+ get active() {
14
+ return this._active;
15
+ }
16
+ get selected() {
17
+ return this._selected;
18
+ }
19
+ // This method is used by FocusableOption
20
+ focus(_origin, options) {
21
+ const element = this.element.nativeElement;
22
+ if (typeof element.focus === 'function') {
23
+ element.focus(options);
24
+ }
25
+ }
26
+ // This method is used by the KeyManager
27
+ setActiveStyles() {
28
+ if (!this._active) {
29
+ this._active = true;
30
+ this.changeDetectorRef.markForCheck();
31
+ }
32
+ }
33
+ // This method is used by KeyManager
34
+ setInactiveStyles() {
35
+ if (this._active) {
36
+ this._active = false;
37
+ this.changeDetectorRef.markForCheck();
38
+ }
39
+ }
40
+ select(emitEvent = true) {
41
+ if (!this._selected) {
42
+ this._selected = true;
43
+ this.changeDetectorRef.markForCheck();
44
+ if (emitEvent) {
45
+ this.emitSelectionChangeEvent();
46
+ }
47
+ }
48
+ }
49
+ deselect(emitEvent = true) {
50
+ if (this._selected) {
51
+ this._selected = false;
52
+ this.changeDetectorRef.markForCheck();
53
+ if (emitEvent) {
54
+ this.emitSelectionChangeEvent();
55
+ }
56
+ }
57
+ }
58
+ handleKeydown(event) {
59
+ if ((event.key === 'Enter' || event.key === 'Space') && !hasModifierKey(event)) {
60
+ this.selectViaInteraction();
61
+ event.preventDefault();
62
+ }
63
+ }
64
+ selectViaInteraction() {
65
+ this._selected = true;
66
+ this.changeDetectorRef.markForCheck();
67
+ this.emitSelectionChangeEvent(true);
68
+ }
69
+ ngOnDestroy() {
70
+ this.selectionChange.complete();
71
+ }
72
+ getHostElement() {
73
+ return this.element.nativeElement;
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseAutosuggestOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: BaseAutosuggestOptionComponent, selector: "ng-component", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseAutosuggestOptionComponent, decorators: [{
79
+ type: Component,
80
+ args: [{
81
+ changeDetection: ChangeDetectionStrategy.OnPush,
82
+ template: '',
83
+ }]
84
+ }] });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2Jhc2UtYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPdkQsTUFBTSxPQUFnQiw4QkFBOEI7SUFKcEQ7UUFLa0IsVUFBSyxHQUFHLEtBQUssRUFBcUIsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBRTlFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVYLFlBQU8sR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBdUVoRTtJQWhGQyxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUtELHlDQUF5QztJQUNsQyxLQUFLLENBQUMsT0FBcUIsRUFBRSxPQUFzQjtRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUUzQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ2pDLGVBQWU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxvQ0FBb0M7SUFDN0IsaUJBQWlCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV0QyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSTtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFdEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBSU0sV0FBVztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxjQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDcEMsQ0FBQzs4R0F0Rm1CLDhCQUE4QjtrR0FBOUIsOEJBQThCLHdMQUZ4QyxFQUFFOzsyRkFFUSw4QkFBOEI7a0JBSm5ELFNBQVM7bUJBQUM7b0JBQ1QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQXV0b3N1Z2dlc3RPcHRpb24gfSBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZSA9IGlucHV0PEF1dG9zdWdnZXN0T3B0aW9uPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2U+KCk7XG5cbiAgcHJvdGVjdGVkIF9hY3RpdmUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgRm9jdXNhYmxlT3B0aW9uXG4gIHB1YmxpYyBmb2N1cyhfb3JpZ2luPzogRm9jdXNPcmlnaW4sIG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodHlwZW9mIGVsZW1lbnQuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgS2V5TWFuYWdlclxuICBwdWJsaWMgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IEtleU1hbmFnZXJcbiAgcHVibGljIHNldEluYWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0KGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdTcGFjZScpICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdFZpYUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudChpc1VzZXJJbnB1dD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './autosuggest-option.component';
2
+ export * from './base-autosuggest-option.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1vcHRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,82 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, output, signal, TemplateRef, viewChild, ViewChildren, } from '@angular/core';
2
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
3
+ import { IconComponent } from '../../../icon';
4
+ import { AutosuggestAddOptionComponent } from '../autosuggest-add-option';
5
+ import { AutosuggestOptionComponent } from '../autosuggest-option';
6
+ import { NgTemplateOutlet } from '@angular/common';
7
+ import * as i0 from "@angular/core";
8
+ const DEFAULTMAXRESULTS = 100;
9
+ const DEFAULTNORESULTTEXT = 'Geen resultaten gevonden. Probeer een andere zoekterm.';
10
+ export class AutosuggestPanelComponent {
11
+ constructor() {
12
+ // Inputs
13
+ this.suggestions = input([]);
14
+ this.enableAddOption = input(false);
15
+ this.maxResults = input(DEFAULTMAXRESULTS);
16
+ this.noResultText = input(DEFAULTNORESULTTEXT);
17
+ this.displayWith = input();
18
+ // Outputs
19
+ this.opened = output();
20
+ this.closed = output();
21
+ this.optionSelected = output();
22
+ this.addOption = output();
23
+ this.template = viewChild.required(TemplateRef);
24
+ this.panel = viewChild.required('panel');
25
+ // Variables & Signals
26
+ this.searchTerm = signal('');
27
+ this.slicedOptions = computed(() => this.suggestions().slice(0, this.maxResults()));
28
+ this.hasMoreResults = computed(() => this.suggestions().length > this.maxResults());
29
+ this.numberOfLeftOverResults = computed(() => this.suggestions().length - this.maxResults());
30
+ this.showPanel = false;
31
+ this.isOpen = false;
32
+ this.changeDetectorRef = inject(ChangeDetectorRef);
33
+ this.id = `ndw-autosuggest-${crypto.randomUUID()}`;
34
+ }
35
+ ngAfterViewInit() {
36
+ this.keyManager = new ActiveDescendantKeyManager(this.items)
37
+ .withPageUpDown()
38
+ .withWrap()
39
+ .withTypeAhead();
40
+ this.setVisibility();
41
+ }
42
+ ngOnDestroy() {
43
+ this.keyManager?.destroy();
44
+ }
45
+ // Methods
46
+ getLabelOption(option) {
47
+ const displayFn = this.displayWith();
48
+ return displayFn ? displayFn(option) : option;
49
+ }
50
+ setScrollTop(scrollTop) {
51
+ const panel = this.panel();
52
+ if (panel) {
53
+ panel.nativeElement.scrollTop = scrollTop;
54
+ }
55
+ }
56
+ setVisibility() {
57
+ this.showPanel = !!this.items?.length;
58
+ this.changeDetectorRef.markForCheck();
59
+ }
60
+ emitSelectEvent(option) {
61
+ this.optionSelected.emit(option.value() ?? null);
62
+ }
63
+ addNewOption(value) {
64
+ this.optionSelected.emit(value);
65
+ this.addOption.emit(value);
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AutosuggestPanelComponent, isStandalone: true, selector: "ndw-autosuggest", inputs: { suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, enableAddOption: { classPropertyName: "enableAddOption", publicName: "enableAddOption", isSignal: true, isRequired: false, transformFunction: null }, maxResults: { classPropertyName: "maxResults", publicName: "maxResults", isSignal: true, isRequired: false, transformFunction: null }, noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed", optionSelected: "optionSelected", addOption: "addOption" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "items", predicate: ["option"], descendants: true }], exportAs: ["apAutocomplete"], ngImport: i0, template: "<ng-template>\n @if (suggestions().length === 0 && !enableAddOption()) {\n <div class=\"ndw-autosuggest-panel\">\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n </div>\n } @else {\n <datalist #panel class=\"ndw-autosuggest-panel\">\n @for (option of slicedOptions(); track option) {\n <ndw-autosuggest-option\n #option\n [value]=\"option\"\n [label]=\"getLabelOption(option)\"\n [searchTerm]=\"searchTerm()\"\n />\n }\n\n @if (enableAddOption()) {\n @if (!!searchTerm().trim()) {\n <ndw-autosuggest-add-option\n #option\n [value]=\"searchTerm()\"\n (addOption)=\"addNewOption($event)\"\n />\n } @else if (!suggestions().length) {\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n }\n }\n\n @if (hasMoreResults()) {\n <p class=\"ndw-autosuggest-panel__more-results\">\n Er zijn nog {{ numberOfLeftOverResults() }} niet-getoonde resultaten, maak je zoekopdracht\n specifieker\n </p>\n }\n </datalist>\n }\n</ng-template>\n\n<ng-template #emptyResults>\n <div class=\"ndw-autosuggest-panel__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n</ng-template>\n", styles: [".ndw-autosuggest-panel{--dropdown-line-height: 26px;--dropdown-max-line-items: 7;--dropdown-max-height: calc(var(--dropdown-line-height) * var(--dropdown-max-line-items));display:block;overflow:auto;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;max-height:var(--dropdown-max-height);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-popover)}.ndw-autosuggest-panel>ndw-autosuggest-option:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest-panel__more-results{font-size:var(--ndw-font-size-sm);color:var(--ndw-color-grey-400);text-align:center}.ndw-autosuggest-panel__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);gap:var(--ndw-spacing-xs);max-width:300px;box-sizing:border-box;font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"], dependencies: [{ kind: "component", type: AutosuggestOptionComponent, selector: "ndw-autosuggest-option", inputs: ["searchTerm", "label"] }, { kind: "component", type: AutosuggestAddOptionComponent, selector: "ndw-autosuggest-add-option", outputs: ["addOption"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestPanelComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'ndw-autosuggest', standalone: true, imports: [
73
+ AutosuggestOptionComponent,
74
+ AutosuggestAddOptionComponent,
75
+ IconComponent,
76
+ NgTemplateOutlet,
77
+ ], changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'apAutocomplete', template: "<ng-template>\n @if (suggestions().length === 0 && !enableAddOption()) {\n <div class=\"ndw-autosuggest-panel\">\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n </div>\n } @else {\n <datalist #panel class=\"ndw-autosuggest-panel\">\n @for (option of slicedOptions(); track option) {\n <ndw-autosuggest-option\n #option\n [value]=\"option\"\n [label]=\"getLabelOption(option)\"\n [searchTerm]=\"searchTerm()\"\n />\n }\n\n @if (enableAddOption()) {\n @if (!!searchTerm().trim()) {\n <ndw-autosuggest-add-option\n #option\n [value]=\"searchTerm()\"\n (addOption)=\"addNewOption($event)\"\n />\n } @else if (!suggestions().length) {\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n }\n }\n\n @if (hasMoreResults()) {\n <p class=\"ndw-autosuggest-panel__more-results\">\n Er zijn nog {{ numberOfLeftOverResults() }} niet-getoonde resultaten, maak je zoekopdracht\n specifieker\n </p>\n }\n </datalist>\n }\n</ng-template>\n\n<ng-template #emptyResults>\n <div class=\"ndw-autosuggest-panel__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n</ng-template>\n", styles: [".ndw-autosuggest-panel{--dropdown-line-height: 26px;--dropdown-max-line-items: 7;--dropdown-max-height: calc(var(--dropdown-line-height) * var(--dropdown-max-line-items));display:block;overflow:auto;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;max-height:var(--dropdown-max-height);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-popover)}.ndw-autosuggest-panel>ndw-autosuggest-option:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest-panel__more-results{font-size:var(--ndw-font-size-sm);color:var(--ndw-color-grey-400);text-align:center}.ndw-autosuggest-panel__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);gap:var(--ndw-spacing-xs);max-width:300px;box-sizing:border-box;font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"] }]
78
+ }], ctorParameters: () => [], propDecorators: { items: [{
79
+ type: ViewChildren,
80
+ args: ['option']
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtcGFuZWwvYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtcGFuZWwvYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFFUixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyx3REFBd0QsQ0FBQztBQWdCckYsTUFBTSxPQUFPLHlCQUF5QjtJQXFDcEM7UUFwQ0EsU0FBUztRQUNPLGdCQUFXLEdBQUcsS0FBSyxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsaUJBQVksR0FBRyxLQUFLLENBQVMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLEtBQUssRUFBd0MsQ0FBQztRQUU1RSxVQUFVO1FBQ00sV0FBTSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQ3hCLFdBQU0sR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUN4QixtQkFBYyxHQUFHLE1BQU0sRUFBNEIsQ0FBQztRQUNwRCxjQUFTLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFLN0IsYUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsVUFBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTZCLE9BQU8sQ0FBQyxDQUFDO1FBRWhGLHNCQUFzQjtRQUNOLGVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRSxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLDRCQUF1QixHQUFHLFFBQVEsQ0FDaEQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQ3BELENBQUM7UUFLSyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFTCxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUc3RCxJQUFJLENBQUMsRUFBRSxHQUFHLG1CQUFtQixNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksMEJBQTBCLENBRTlDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDVixjQUFjLEVBQUU7YUFDaEIsUUFBUSxFQUFFO2FBQ1YsYUFBYSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVU7SUFDSCxjQUFjLENBQUMsTUFBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLE1BQWlCLENBQUM7SUFDNUQsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFpQjtRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBa0U7UUFDdkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQWpGVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwNkJBaUJVLFdBQVcsb1FDOUQzRCwyMENBNENBLHdpQ0RUSSwwQkFBMEIsb0dBQzFCLDZCQUE2QiwrRkFDN0IsYUFBYSx1RUFDYixnQkFBZ0I7OzJGQU9QLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxnQkFBZ0I7d0RBa0JuQixLQUFLO3NCQURYLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pY29uJztcbmltcG9ydCB7IEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbic7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9zdWdnZXN0LW9wdGlvbic7XG5pbXBvcnQge1xuICBBdXRvc3VnZ2VzdE9wdGlvbixcbiAgQXV0b3N1Z2dlc3RPcHRpb25zLFxufSBmcm9tICcuLi9hdXRvc3VnZ2VzdC1vcHRpb24vYXV0b3N1Z2dlc3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBERUZBVUxUTUFYUkVTVUxUUyA9IDEwMDtcbmNvbnN0IERFRkFVTFROT1JFU1VMVFRFWFQgPSAnR2VlbiByZXN1bHRhdGVuIGdldm9uZGVuLiBQcm9iZWVyIGVlbiBhbmRlcmUgem9la3Rlcm0uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmR3LWF1dG9zdWdnZXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50LFxuICAgIEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnYXBBdXRvY29tcGxldGUnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdFBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gSW5wdXRzXG4gIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9ucyA9IGlucHV0PEF1dG9zdWdnZXN0T3B0aW9ucz4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlQWRkT3B0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4UmVzdWx0cyA9IGlucHV0PG51bWJlcj4oREVGQVVMVE1BWFJFU1VMVFMpO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRUZXh0ID0gaW5wdXQ8c3RyaW5nPihERUZBVUxUTk9SRVNVTFRURVhUKTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlXaXRoID0gaW5wdXQ8KHZhbHVlOiBBdXRvc3VnZ2VzdE9wdGlvbikgPT4gc3RyaW5nPigpO1xuXG4gIC8vIE91dHB1dHNcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG91dHB1dDxBdXRvc3VnZ2VzdE9wdGlvbiB8IG51bGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRPcHRpb24gPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8vIFZpZXcgUmVmZXJlbmNlc1xuICBAVmlld0NoaWxkcmVuKCdvcHRpb24nKVxuICBwdWJsaWMgaXRlbXMhOiBRdWVyeUxpc3Q8QXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudD47XG4gIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChUZW1wbGF0ZVJlZik7XG4gIHB1YmxpYyByZWFkb25seSBwYW5lbCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3BhbmVsJyk7XG5cbiAgLy8gVmFyaWFibGVzICYgU2lnbmFsc1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IHNsaWNlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN1Z2dlc3Rpb25zKCkuc2xpY2UoMCwgdGhpcy5tYXhSZXN1bHRzKCkpKTtcbiAgcHVibGljIHJlYWRvbmx5IGhhc01vcmVSZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdWdnZXN0aW9ucygpLmxlbmd0aCA+IHRoaXMubWF4UmVzdWx0cygpKTtcbiAgcHVibGljIHJlYWRvbmx5IG51bWJlck9mTGVmdE92ZXJSZXN1bHRzID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5zdWdnZXN0aW9ucygpLmxlbmd0aCAtIHRoaXMubWF4UmVzdWx0cygpLFxuICApO1xuXG4gIHB1YmxpYyBrZXlNYW5hZ2VyOlxuICAgIHwgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8QXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHNob3dQYW5lbCA9IGZhbHNlO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gYG5kdy1hdXRvc3VnZ2VzdC0ke2NyeXB0by5yYW5kb21VVUlEKCl9YDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFxuICAgICAgQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudFxuICAgID4odGhpcy5pdGVtcylcbiAgICAgIC53aXRoUGFnZVVwRG93bigpXG4gICAgICAud2l0aFdyYXAoKVxuICAgICAgLndpdGhUeXBlQWhlYWQoKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIE1ldGhvZHNcbiAgcHVibGljIGdldExhYmVsT3B0aW9uKG9wdGlvbjogQXV0b3N1Z2dlc3RPcHRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpc3BsYXlGbiA9IHRoaXMuZGlzcGxheVdpdGgoKTtcbiAgICByZXR1cm4gZGlzcGxheUZuID8gZGlzcGxheUZuKG9wdGlvbikgOiAob3B0aW9uIGFzIHN0cmluZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnBhbmVsKCk7XG5cbiAgICBpZiAocGFuZWwpIHtcbiAgICAgIHBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1BhbmVsID0gISF0aGlzLml0ZW1zPy5sZW5ndGg7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U2VsZWN0RXZlbnQob3B0aW9uOiBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB8IEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgcHVibGljIGFkZE5ld09wdGlvbih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmFkZE9wdGlvbi5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlPlxuICBAaWYgKHN1Z2dlc3Rpb25zKCkubGVuZ3RoID09PSAwICYmICFlbmFibGVBZGRPcHRpb24oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJuZHctYXV0b3N1Z2dlc3QtcGFuZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRhdGFsaXN0ICNwYW5lbCBjbGFzcz1cIm5kdy1hdXRvc3VnZ2VzdC1wYW5lbFwiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIHNsaWNlZE9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgIDxuZHctYXV0b3N1Z2dlc3Qtb3B0aW9uXG4gICAgICAgICAgI29wdGlvblxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgIFtsYWJlbF09XCJnZXRMYWJlbE9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAvPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGVuYWJsZUFkZE9wdGlvbigpKSB7XG4gICAgICAgIEBpZiAoISFzZWFyY2hUZXJtKCkudHJpbSgpKSB7XG4gICAgICAgICAgPG5kdy1hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uXG4gICAgICAgICAgICAjb3B0aW9uXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGVybSgpXCJcbiAgICAgICAgICAgIChhZGRPcHRpb24pPVwiYWRkTmV3T3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKCFzdWdnZXN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc01vcmVSZXN1bHRzKCkpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJuZHctYXV0b3N1Z2dlc3QtcGFuZWxfX21vcmUtcmVzdWx0c1wiPlxuICAgICAgICAgIEVyIHppam4gbm9nIHt7IG51bWJlck9mTGVmdE92ZXJSZXN1bHRzKCkgfX0gbmlldC1nZXRvb25kZSByZXN1bHRhdGVuLCBtYWFrIGplIHpvZWtvcGRyYWNodFxuICAgICAgICAgIHNwZWNpZmlla2VyXG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICA8L2RhdGFsaXN0PlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UmVzdWx0cz5cbiAgPGRpdiBjbGFzcz1cIm5kdy1hdXRvc3VnZ2VzdC1wYW5lbF9fZW1wdHlcIj5cbiAgICA8bmR3LWljb24+c2VudGltZW50X2Rpc3NhdGlzZmllZDwvbmR3LWljb24+XG4gICAge3sgbm9SZXN1bHRUZXh0KCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19