@ndwnu/design-system 3.0.1 → 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 (157) 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/alert/alert.component.d.ts +2 -5
  5. package/components/alert/alert.model.d.ts +0 -1
  6. package/components/banner/banner.component.d.ts +38 -0
  7. package/components/banner/banner.model.d.ts +4 -0
  8. package/components/banner/index.d.ts +2 -0
  9. package/components/breadcrumb-group/breadcrumb-group.component.d.ts +1 -1
  10. package/components/card/index.d.ts +2 -2
  11. package/components/collapsible/collapsible.component.d.ts +0 -1
  12. package/components/dashboard-card/dashboard-card.component.d.ts +22 -0
  13. package/components/dashboard-card/index.d.ts +1 -0
  14. package/components/dropdown/dropdown.component.d.ts +4 -4
  15. package/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.d.ts +8 -0
  16. package/components/form-field/autosuggest/autosuggest-add-option/index.d.ts +1 -0
  17. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.d.ts +19 -0
  18. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.d.ts +2 -0
  19. package/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.d.ts +27 -0
  20. package/components/form-field/autosuggest/autosuggest-option/index.d.ts +2 -0
  21. package/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.d.ts +39 -0
  22. package/components/form-field/autosuggest/autosuggest.directive.d.ts +72 -0
  23. package/components/form-field/autosuggest/index.d.ts +5 -0
  24. package/components/form-field/autosuggest/match-bold.pipe.d.ts +7 -0
  25. package/components/form-field/checkbox/checkbox.component.d.ts +0 -3
  26. package/components/form-field/clear-search-button/clear-search-button.component.d.ts +15 -0
  27. package/components/form-field/file-upload/file-upload.component.d.ts +4 -11
  28. package/components/form-field/form-field.component.d.ts +19 -23
  29. package/components/form-field/form-field.constant.d.ts +1 -0
  30. package/components/form-field/index.d.ts +3 -0
  31. package/components/form-field/input/input.directive.d.ts +0 -1
  32. package/components/form-field/input-button/index.d.ts +1 -0
  33. package/components/form-field/input-button/input-button.component.d.ts +12 -0
  34. package/components/form-field/input-icon/index.d.ts +1 -0
  35. package/components/form-field/input-icon/input-icon.component.d.ts +5 -0
  36. package/components/form-field/picker-button/picker-button.component.d.ts +14 -0
  37. package/components/form-field/radio-button/radio-button.component.d.ts +0 -2
  38. package/components/form-field/radio-group/radio-group.component.d.ts +0 -1
  39. package/components/icon/icon.component.d.ts +1 -0
  40. package/components/index.d.ts +7 -2
  41. package/components/layout/index.d.ts +1 -0
  42. package/components/layout/layout.component.d.ts +11 -0
  43. package/components/layout-banners/index.d.ts +1 -0
  44. package/components/layout-banners/layout-banners.component.d.ts +5 -0
  45. package/components/loader/index.d.ts +1 -0
  46. package/components/loader/loader.component.d.ts +5 -0
  47. package/components/main-navigation/main-navigation.component.d.ts +8 -6
  48. package/components/main-navigation/main-navigation.imports.d.ts +1 -1
  49. package/components/main-navigation/main-navigation.model.d.ts +1 -0
  50. package/components/main-navigation-menu/main-navigation-menu.component.d.ts +2 -2
  51. package/components/modal/index.d.ts +0 -1
  52. package/components/modal/modal-header/modal-header.component.d.ts +1 -1
  53. package/components/modal/modal-ref.d.ts +3 -0
  54. package/components/modal/modal.component.d.ts +0 -3
  55. package/components/modal/modal.service.d.ts +13 -11
  56. package/components/pill/pill.component.d.ts +1 -3
  57. package/components/tab/tab.component.d.ts +0 -3
  58. package/components/tab-group/tab-group.component.d.ts +1 -2
  59. package/components/tag/index.d.ts +1 -0
  60. package/components/tag/tag.component.d.ts +18 -0
  61. package/core/{styles/ndw-styles.scss → style/styles.css} +495 -219
  62. package/core/{styles/nwb-styles.scss → style/styles.scss} +526 -218
  63. package/esm2022/components/accordion/accordion.component.mjs +8 -8
  64. package/esm2022/components/accordion/accordion.service.mjs +3 -3
  65. package/esm2022/components/alert/alert.component.mjs +12 -29
  66. package/esm2022/components/alert/alert.model.mjs +1 -1
  67. package/esm2022/components/badge/badge.component.mjs +6 -6
  68. package/esm2022/components/banner/banner.component.mjs +61 -0
  69. package/esm2022/components/banner/banner.model.mjs +6 -0
  70. package/esm2022/components/banner/index.mjs +3 -0
  71. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +6 -6
  72. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +10 -10
  73. package/esm2022/components/button/button.directive.mjs +3 -3
  74. package/esm2022/components/card/card-content/card-content.component.mjs +6 -6
  75. package/esm2022/components/card/card-footer/card-footer.component.mjs +6 -6
  76. package/esm2022/components/card/card-header/card-header.component.mjs +6 -7
  77. package/esm2022/components/card/card.component.mjs +6 -6
  78. package/esm2022/components/collapsible/collapsible.component.mjs +9 -14
  79. package/esm2022/components/dashboard-card/dashboard-card.component.mjs +32 -0
  80. package/esm2022/components/dashboard-card/index.mjs +2 -0
  81. package/esm2022/components/dropdown/dropdown.component.mjs +11 -18
  82. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.mjs +29 -0
  83. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/index.mjs +2 -0
  84. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.mjs +45 -0
  85. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.mjs +2 -0
  86. package/esm2022/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.mjs +85 -0
  87. package/esm2022/components/form-field/autosuggest/autosuggest-option/index.mjs +3 -0
  88. package/esm2022/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.mjs +82 -0
  89. package/esm2022/components/form-field/autosuggest/autosuggest.directive.mjs +411 -0
  90. package/esm2022/components/form-field/autosuggest/index.mjs +6 -0
  91. package/esm2022/components/form-field/autosuggest/match-bold.pipe.mjs +21 -0
  92. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +13 -27
  93. package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +6 -6
  94. package/esm2022/components/form-field/clear-search-button/clear-search-button.component.mjs +37 -0
  95. package/esm2022/components/form-field/error/error.component.mjs +6 -6
  96. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +48 -93
  97. package/esm2022/components/form-field/form-field.component.mjs +25 -76
  98. package/esm2022/components/form-field/form-field.constant.mjs +2 -0
  99. package/esm2022/components/form-field/index.mjs +4 -1
  100. package/esm2022/components/form-field/info/info.component.mjs +6 -6
  101. package/esm2022/components/form-field/input/input.directive.mjs +5 -11
  102. package/esm2022/components/form-field/input-button/index.mjs +2 -0
  103. package/esm2022/components/form-field/input-button/input-button.component.mjs +23 -0
  104. package/esm2022/components/form-field/input-icon/index.mjs +2 -0
  105. package/esm2022/components/form-field/input-icon/input-icon.component.mjs +12 -0
  106. package/esm2022/components/form-field/month-input/month-input.component.mjs +8 -9
  107. package/esm2022/components/form-field/option-group/option-group.component.mjs +6 -6
  108. package/esm2022/components/form-field/option-group/option.component.mjs +5 -6
  109. package/esm2022/components/form-field/picker-button/picker-button.component.mjs +45 -0
  110. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +12 -22
  111. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +11 -13
  112. package/esm2022/components/form-field/success/success.component.mjs +6 -6
  113. package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +3 -3
  114. package/esm2022/components/icon/action-icon/action-icon.component.mjs +5 -5
  115. package/esm2022/components/icon/icon.component.mjs +15 -10
  116. package/esm2022/components/index.mjs +8 -3
  117. package/esm2022/components/layout/index.mjs +2 -0
  118. package/esm2022/components/layout/layout.component.mjs +20 -0
  119. package/esm2022/components/layout-banners/index.mjs +2 -0
  120. package/esm2022/components/layout-banners/layout-banners.component.mjs +11 -0
  121. package/esm2022/components/loader/index.mjs +2 -0
  122. package/esm2022/components/loader/loader.component.mjs +11 -0
  123. package/esm2022/components/main-navigation/main-navigation.component.mjs +52 -48
  124. package/esm2022/components/main-navigation/main-navigation.model.mjs +1 -1
  125. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +9 -9
  126. package/esm2022/components/modal/index.mjs +1 -4
  127. package/esm2022/components/modal/modal-content/modal-content.component.mjs +6 -6
  128. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +6 -6
  129. package/esm2022/components/modal/modal-header/modal-header.component.mjs +9 -11
  130. package/esm2022/components/modal/modal-ref.mjs +4 -0
  131. package/esm2022/components/modal/modal.component.mjs +10 -23
  132. package/esm2022/components/modal/modal.service.mjs +20 -41
  133. package/esm2022/components/multi-select/multi-select.component.mjs +10 -12
  134. package/esm2022/components/pill/pill.component.mjs +12 -20
  135. package/esm2022/components/popover/popover-trigger.directive.mjs +9 -9
  136. package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +6 -6
  137. package/esm2022/components/tab/tab.component.mjs +13 -29
  138. package/esm2022/components/tab-group/tab-group.component.mjs +10 -12
  139. package/esm2022/components/tag/index.mjs +2 -0
  140. package/esm2022/components/tag/tag.component.mjs +29 -0
  141. package/esm2022/components/toast/toast.component.mjs +6 -6
  142. package/esm2022/components/toast/toast.service.mjs +4 -4
  143. package/esm2022/components/tooltip/tooltip.component.mjs +7 -7
  144. package/esm2022/components/tooltip/tooltip.directive.mjs +10 -16
  145. package/esm2022/models/aria.model.mjs +2 -0
  146. package/esm2022/models/index.mjs +2 -0
  147. package/fesm2022/ndwnu-design-system.mjs +1279 -660
  148. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  149. package/models/aria.model.d.ts +1 -0
  150. package/models/index.d.ts +1 -0
  151. package/package.json +1 -1
  152. package/components/modal/modal-trigger.directive.d.ts +0 -16
  153. package/components/removable-pill/index.d.ts +0 -1
  154. package/components/removable-pill/removable-pill.component.d.ts +0 -14
  155. package/esm2022/components/modal/modal-trigger.directive.mjs +0 -46
  156. package/esm2022/components/removable-pill/index.mjs +0 -2
  157. package/esm2022/components/removable-pill/removable-pill.component.mjs +0 -23
@@ -1,6 +1,6 @@
1
- import { Component, HostBinding, HostListener, viewChild, input, model, computed, } from '@angular/core';
2
- import { IconComponent } from '../../icon';
1
+ import { Component, viewChild, input, model, computed, ChangeDetectionStrategy, } from '@angular/core';
3
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { IconComponent } from '../../icon';
4
4
  import * as i0 from "@angular/core";
5
5
  export class FileUploadComponent {
6
6
  constructor() {
@@ -19,27 +19,6 @@ export class FileUploadComponent {
19
19
  this.incorrectFileSize = model(false);
20
20
  this.canEdit = computed(() => !this.selectedFile() && !this.disabled() && !this.readonly());
21
21
  }
22
- get tabindexAttr() {
23
- return !this.canEdit() ? -1 : 0;
24
- }
25
- get hasError() {
26
- return this.error();
27
- }
28
- get hasSuccess() {
29
- return this.success();
30
- }
31
- get isDisabled() {
32
- return this.disabled();
33
- }
34
- get isReadonly() {
35
- return this.readonly();
36
- }
37
- get isDragging() {
38
- return this.draggingOver();
39
- }
40
- get hasSelectedFile() {
41
- return this.selectedFile() ? true : false;
42
- }
43
22
  onKeyDown(event) {
44
23
  if (event.key !== 'Enter' && event.key !== ' ') {
45
24
  return;
@@ -118,24 +97,34 @@ export class FileUploadComponent {
118
97
  }
119
98
  }
120
99
  }
100
+ writeValue(value) {
101
+ this.selectedFile.set(value);
102
+ }
103
+ registerOnChange(fn) {
104
+ this.selectedFile.subscribe(fn);
105
+ }
106
+ registerOnTouched() {
107
+ // noop
108
+ }
121
109
  selectFile(file) {
122
- if (file) {
123
- if (!this.correctFileType(file.type)) {
124
- this.resetFile();
125
- this.incorrectFileSize.set(false);
126
- this.incorrectFileType.set(true);
127
- return;
128
- }
129
- if (!this.correctFileSize(file.size)) {
130
- this.resetFile();
131
- this.incorrectFileType.set(false);
132
- this.incorrectFileSize.set(true);
133
- return;
134
- }
110
+ if (!file) {
111
+ return;
112
+ }
113
+ if (!this.correctFileType(file.type)) {
114
+ this.resetFile();
135
115
  this.incorrectFileSize.set(false);
116
+ this.incorrectFileType.set(true);
117
+ return;
118
+ }
119
+ if (!this.correctFileSize(file.size)) {
120
+ this.resetFile();
136
121
  this.incorrectFileType.set(false);
137
- this.selectedFile.set(file);
122
+ this.incorrectFileSize.set(true);
123
+ return;
138
124
  }
125
+ this.incorrectFileSize.set(false);
126
+ this.incorrectFileType.set(false);
127
+ this.selectedFile.set(file);
139
128
  }
140
129
  resetFile() {
141
130
  this.selectedFile.set(null);
@@ -147,71 +136,37 @@ export class FileUploadComponent {
147
136
  correctFileType(fileType) {
148
137
  return this.allowedFileTypeRegex()?.test(fileType) ? true : false;
149
138
  }
150
- writeValue(value) {
151
- this.selectedFile.set(value);
152
- }
153
- registerOnChange(fn) {
154
- this.selectedFile.subscribe(fn);
155
- }
156
- registerOnTouched() {
157
- // noop
158
- }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FileUploadComponent, isStandalone: true, selector: "ndw-file-upload", inputs: { allowedFileTypeRegex: { classPropertyName: "allowedFileTypeRegex", publicName: "allowedFileTypeRegex", isSignal: true, isRequired: false, transformFunction: null }, fileUploadText: { classPropertyName: "fileUploadText", publicName: "fileUploadText", isSignal: true, isRequired: false, transformFunction: null }, uploadDate: { classPropertyName: "uploadDate", publicName: "uploadDate", isSignal: true, isRequired: false, transformFunction: null }, maxFileSizeInBytes: { classPropertyName: "maxFileSizeInBytes", publicName: "maxFileSizeInBytes", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, draggingOver: { classPropertyName: "draggingOver", publicName: "draggingOver", isSignal: true, isRequired: false, transformFunction: null }, selectedFile: { classPropertyName: "selectedFile", publicName: "selectedFile", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, incorrectFileType: { classPropertyName: "incorrectFileType", publicName: "incorrectFileType", isSignal: true, isRequired: false, transformFunction: null }, incorrectFileSize: { classPropertyName: "incorrectFileSize", publicName: "incorrectFileSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { draggingOver: "draggingOverChange", selectedFile: "selectedFileChange", error: "errorChange", success: "successChange", incorrectFileType: "incorrectFileTypeChange", incorrectFileSize: "incorrectFileSizeChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "click": "onClick()", "dragleave": "onDragLeave($event)", "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)", "drop": "onDrop($event)" }, properties: { "attr.tabindex": "this.tabindexAttr", "class.error": "this.hasError", "class.success": "this.hasSuccess", "class.disabled": "this.isDisabled", "class.readonly": "this.isReadonly", "class.dragging": "this.isDragging", "class.file-selected": "this.hasSelectedFile" } }, providers: [
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: FileUploadComponent, isStandalone: true, selector: "ndw-file-upload", inputs: { allowedFileTypeRegex: { classPropertyName: "allowedFileTypeRegex", publicName: "allowedFileTypeRegex", isSignal: true, isRequired: false, transformFunction: null }, fileUploadText: { classPropertyName: "fileUploadText", publicName: "fileUploadText", isSignal: true, isRequired: false, transformFunction: null }, uploadDate: { classPropertyName: "uploadDate", publicName: "uploadDate", isSignal: true, isRequired: false, transformFunction: null }, maxFileSizeInBytes: { classPropertyName: "maxFileSizeInBytes", publicName: "maxFileSizeInBytes", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, draggingOver: { classPropertyName: "draggingOver", publicName: "draggingOver", isSignal: true, isRequired: false, transformFunction: null }, selectedFile: { classPropertyName: "selectedFile", publicName: "selectedFile", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, incorrectFileType: { classPropertyName: "incorrectFileType", publicName: "incorrectFileType", isSignal: true, isRequired: false, transformFunction: null }, incorrectFileSize: { classPropertyName: "incorrectFileSize", publicName: "incorrectFileSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { draggingOver: "draggingOverChange", selectedFile: "selectedFileChange", error: "errorChange", success: "successChange", incorrectFileType: "incorrectFileTypeChange", incorrectFileSize: "incorrectFileSizeChange" }, host: { listeners: { "click": "onClick()", "dragenter": "onDragEnter($event)", "dragleave": "onDragLeave($event)", "dragover": "onDragOver($event)", "drop": "onDrop($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "!this.canEdit() ? -1 : 0", "class.disabled": "disabled()", "class.dragging": "draggingOver()", "class.error": "error()", "class.file-selected": "!!selectedFile()", "class.readonly": "readonly()", "class.success": "success()" } }, providers: [
161
141
  {
162
142
  provide: NG_VALUE_ACCESSOR,
163
143
  useExisting: FileUploadComponent,
164
144
  multi: true,
165
145
  },
166
- ], viewQueries: [{ propertyName: "fileInputElement", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!draggingOver() && !selectedFile()) {\n <ndw-icon>cloud_upload</ndw-icon>\n} @else if (draggingOver() && !selectedFile()) {\n <ndw-icon>pageless</ndw-icon>\n}\n\n{{ displayText() }}\n\n@if (selectedFile()) {\n <div class=\"file-name\">\n <button\n class=\"file-name-text\"\n (click)=\"onDownloadFileClick()\"\n (keydown.enter)=\"onDownloadFileClick()\"\n >\n {{ selectedFile()?.name }}\n </button>\n\n <div class=\"file-delete-icon\">\n <button (click)=\"onDeleteClick($event)\" (keydown.enter)=\"onDeleteClick($event)\">\n <ndw-icon>delete</ndw-icon>\n </button>\n </div>\n </div>\n\n <p class=\"file-date\">\n {{ uploadDate() }}\n </p>\n}\n\n<input type=\"file\" #fileInput hidden aria-hidden=\"true\" (change)=\"onFileSelected($event)\" />\n", styles: [":host{display:grid;align-items:center;border-radius:var(--ndw-border-radius-sm);border:var(--ndw-border-size-sm) dashed var(--ndw-color-secondary-500);background-color:var(--ndw-color-secondary-050);color:var(--ndw-color-secondary-500);padding:var(--ndw-spacing-lg);text-align:center;cursor:pointer;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{color:var(--ndw-color-secondary-500);font-size:var(--ndw-font-size-md);pointer-events:none}:host.dragging,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-100);outline:none}:host.success.file-selected{background-color:var(--ndw-color-positive-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-positive-500);color:var(--ndw-color-positive-500)}:host.error{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error ndw-icon{color:var(--ndw-color-critical-500);pointer-events:none}:host.error.file-selected{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error.file-selected ndw-icon{color:var(--ndw-color-secondary-500);pointer-events:all}:host.disabled,:host.readonly{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-grey-500);color:var(--ndw-color-grey-500);cursor:not-allowed}:host.disabled ndw-icon,:host.readonly ndw-icon{color:var(--ndw-color-grey-500);pointer-events:none}:host.disabled.file-selected .file-name,:host.readonly.file-selected .file-name{color:var(--ndw-color-secondary-500)}:host.disabled.file-selected .file-name .file-name-text:hover,:host.readonly.file-selected .file-name .file-name-text:hover{text-decoration:none}:host.disabled.file-selected .file-delete-icon,:host.readonly.file-selected .file-delete-icon{display:none}:host.file-selected{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-spacing-sm);align-items:baseline;word-break:break-all;cursor:auto;text-align:left}:host.file-selected .file-name{display:flex;align-items:center}:host.file-selected .file-name .file-name-text{background:transparent;border:none;padding:0;color:var(--ndw-color-secondary-500);cursor:pointer}:host.file-selected .file-name .file-name-text:hover,:host.file-selected .file-name .file-name-text:focus{text-decoration:underline;outline:none}:host.file-selected .file-date{font-size:var(--ndw-font-size-xs);color:var(--ndw-color-grey-500);margin:0}:host.file-selected .file-delete-icon{display:flex;flex:1;justify-content:end;pointer-events:all}:host.file-selected .file-delete-icon button{background:transparent;border:none;cursor:pointer;padding:var(--ndw-spacing-2xs);border-radius:var(--ndw-border-radius-md);transition:background-color .15s ease-in-out}:host.file-selected .file-delete-icon button:hover{background-color:var(--ndw-alpha-black-007)}:host.file-selected .file-delete-icon button:active,:host.file-selected .file-delete-icon button:focus,:host.file-selected .file-delete-icon button:focus-visible{background-color:var(--ndw-alpha-black-015)}:host.file-selected .file-delete-icon button:focus-visible{color:var(--ndw-color-primary);outline-color:var(--ndw-color-secondary-500)}:host.file-selected .file-delete-icon ndw-icon{pointer-events:all}:host.file-selected .file-delete-icon ndw-icon:focus{color:var(--ndw-color-secondary-500);outline:none}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }] }); }
146
+ ], viewQueries: [{ propertyName: "fileInputElement", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!draggingOver() && !selectedFile()) {\n <ndw-icon>cloud_upload</ndw-icon>\n} @else if (draggingOver() && !selectedFile()) {\n <ndw-icon>pageless</ndw-icon>\n}\n\n{{ displayText() }}\n\n@if (selectedFile()) {\n <div class=\"file-name\">\n <button\n class=\"file-name-text\"\n (click)=\"onDownloadFileClick()\"\n (keydown.enter)=\"onDownloadFileClick()\"\n >\n {{ selectedFile()?.name }}\n </button>\n\n <div class=\"file-delete-icon\">\n <button (click)=\"onDeleteClick($event)\" (keydown.enter)=\"onDeleteClick($event)\">\n <ndw-icon>delete</ndw-icon>\n </button>\n </div>\n </div>\n\n <p class=\"file-date\">\n {{ uploadDate() }}\n </p>\n}\n\n<input type=\"file\" #fileInput hidden aria-hidden=\"true\" (change)=\"onFileSelected($event)\" />\n", styles: [":host{display:grid;align-items:center;border-radius:var(--ndw-border-radius-sm);border:var(--ndw-border-size-sm) dashed var(--ndw-color-secondary-500);background-color:var(--ndw-color-secondary-050);color:var(--ndw-color-secondary-500);padding:var(--ndw-spacing-lg);text-align:center;cursor:pointer;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{color:var(--ndw-color-secondary-500);font-size:var(--ndw-font-size-md);pointer-events:none}:host.dragging,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-100);outline:none}:host.success.file-selected{background-color:var(--ndw-color-positive-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-positive-500);color:var(--ndw-color-positive-500)}:host.error{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error ndw-icon{color:var(--ndw-color-critical-500);pointer-events:none}:host.error.file-selected{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error.file-selected ndw-icon{color:var(--ndw-color-secondary-500);pointer-events:all}:host.disabled,:host.readonly{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-grey-500);color:var(--ndw-color-grey-500);cursor:not-allowed}:host.disabled ndw-icon,:host.readonly ndw-icon{color:var(--ndw-color-grey-500);pointer-events:none}:host.disabled.file-selected .file-name,:host.readonly.file-selected .file-name{color:var(--ndw-color-secondary-500)}:host.disabled.file-selected .file-name .file-name-text:hover,:host.readonly.file-selected .file-name .file-name-text:hover{text-decoration:none}:host.disabled.file-selected .file-delete-icon,:host.readonly.file-selected .file-delete-icon{display:none}:host.file-selected{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-spacing-sm);align-items:baseline;word-break:break-all;cursor:auto;text-align:left}:host.file-selected .file-name{display:flex;align-items:center}:host.file-selected .file-name .file-name-text{background:transparent;border:none;padding:0;color:var(--ndw-color-secondary-500);cursor:pointer}:host.file-selected .file-name .file-name-text:hover,:host.file-selected .file-name .file-name-text:focus{text-decoration:underline;outline:none}:host.file-selected .file-date{font-size:var(--ndw-font-size-xs);color:var(--ndw-color-grey-500);margin:0}:host.file-selected .file-delete-icon{display:flex;flex:1;justify-content:end;pointer-events:all}:host.file-selected .file-delete-icon button{background:transparent;border:none;cursor:pointer;padding:var(--ndw-spacing-2xs);border-radius:var(--ndw-border-radius-md);transition:background-color .15s ease-in-out}:host.file-selected .file-delete-icon button:hover{background-color:var(--ndw-alpha-black-007)}:host.file-selected .file-delete-icon button:active,:host.file-selected .file-delete-icon button:focus,:host.file-selected .file-delete-icon button:focus-visible{background-color:var(--ndw-alpha-black-015)}:host.file-selected .file-delete-icon button:focus-visible{color:var(--ndw-color-primary);outline-color:var(--ndw-color-secondary-500)}:host.file-selected .file-delete-icon ndw-icon{pointer-events:all}:host.file-selected .file-delete-icon ndw-icon:focus{color:var(--ndw-color-secondary-500);outline:none}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
167
147
  }
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FileUploadComponent, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FileUploadComponent, decorators: [{
169
149
  type: Component,
170
- args: [{ selector: 'ndw-file-upload', standalone: true, imports: [IconComponent], providers: [
150
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, host: {
151
+ '[attr.tabindex]': '!this.canEdit() ? -1 : 0',
152
+ '[class.disabled]': 'disabled()',
153
+ '[class.dragging]': 'draggingOver()',
154
+ '[class.error]': 'error()',
155
+ '[class.file-selected]': '!!selectedFile()',
156
+ '[class.readonly]': 'readonly()',
157
+ '[class.success]': 'success()',
158
+ '(click)': 'onClick()',
159
+ '(dragenter)': 'onDragEnter($event)',
160
+ '(dragleave)': 'onDragLeave($event)',
161
+ '(dragover)': 'onDragOver($event)',
162
+ '(drop)': 'onDrop($event)',
163
+ '(keydown)': 'onKeyDown($event)',
164
+ }, imports: [IconComponent], providers: [
171
165
  {
172
166
  provide: NG_VALUE_ACCESSOR,
173
167
  useExisting: FileUploadComponent,
174
168
  multi: true,
175
169
  },
176
- ], template: "@if (!draggingOver() && !selectedFile()) {\n <ndw-icon>cloud_upload</ndw-icon>\n} @else if (draggingOver() && !selectedFile()) {\n <ndw-icon>pageless</ndw-icon>\n}\n\n{{ displayText() }}\n\n@if (selectedFile()) {\n <div class=\"file-name\">\n <button\n class=\"file-name-text\"\n (click)=\"onDownloadFileClick()\"\n (keydown.enter)=\"onDownloadFileClick()\"\n >\n {{ selectedFile()?.name }}\n </button>\n\n <div class=\"file-delete-icon\">\n <button (click)=\"onDeleteClick($event)\" (keydown.enter)=\"onDeleteClick($event)\">\n <ndw-icon>delete</ndw-icon>\n </button>\n </div>\n </div>\n\n <p class=\"file-date\">\n {{ uploadDate() }}\n </p>\n}\n\n<input type=\"file\" #fileInput hidden aria-hidden=\"true\" (change)=\"onFileSelected($event)\" />\n", styles: [":host{display:grid;align-items:center;border-radius:var(--ndw-border-radius-sm);border:var(--ndw-border-size-sm) dashed var(--ndw-color-secondary-500);background-color:var(--ndw-color-secondary-050);color:var(--ndw-color-secondary-500);padding:var(--ndw-spacing-lg);text-align:center;cursor:pointer;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{color:var(--ndw-color-secondary-500);font-size:var(--ndw-font-size-md);pointer-events:none}:host.dragging,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-100);outline:none}:host.success.file-selected{background-color:var(--ndw-color-positive-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-positive-500);color:var(--ndw-color-positive-500)}:host.error{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error ndw-icon{color:var(--ndw-color-critical-500);pointer-events:none}:host.error.file-selected{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error.file-selected ndw-icon{color:var(--ndw-color-secondary-500);pointer-events:all}:host.disabled,:host.readonly{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-grey-500);color:var(--ndw-color-grey-500);cursor:not-allowed}:host.disabled ndw-icon,:host.readonly ndw-icon{color:var(--ndw-color-grey-500);pointer-events:none}:host.disabled.file-selected .file-name,:host.readonly.file-selected .file-name{color:var(--ndw-color-secondary-500)}:host.disabled.file-selected .file-name .file-name-text:hover,:host.readonly.file-selected .file-name .file-name-text:hover{text-decoration:none}:host.disabled.file-selected .file-delete-icon,:host.readonly.file-selected .file-delete-icon{display:none}:host.file-selected{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-spacing-sm);align-items:baseline;word-break:break-all;cursor:auto;text-align:left}:host.file-selected .file-name{display:flex;align-items:center}:host.file-selected .file-name .file-name-text{background:transparent;border:none;padding:0;color:var(--ndw-color-secondary-500);cursor:pointer}:host.file-selected .file-name .file-name-text:hover,:host.file-selected .file-name .file-name-text:focus{text-decoration:underline;outline:none}:host.file-selected .file-date{font-size:var(--ndw-font-size-xs);color:var(--ndw-color-grey-500);margin:0}:host.file-selected .file-delete-icon{display:flex;flex:1;justify-content:end;pointer-events:all}:host.file-selected .file-delete-icon button{background:transparent;border:none;cursor:pointer;padding:var(--ndw-spacing-2xs);border-radius:var(--ndw-border-radius-md);transition:background-color .15s ease-in-out}:host.file-selected .file-delete-icon button:hover{background-color:var(--ndw-alpha-black-007)}:host.file-selected .file-delete-icon button:active,:host.file-selected .file-delete-icon button:focus,:host.file-selected .file-delete-icon button:focus-visible{background-color:var(--ndw-alpha-black-015)}:host.file-selected .file-delete-icon button:focus-visible{color:var(--ndw-color-primary);outline-color:var(--ndw-color-secondary-500)}:host.file-selected .file-delete-icon ndw-icon{pointer-events:all}:host.file-selected .file-delete-icon ndw-icon:focus{color:var(--ndw-color-secondary-500);outline:none}\n"] }]
177
- }], propDecorators: { tabindexAttr: [{
178
- type: HostBinding,
179
- args: ['attr.tabindex']
180
- }], hasError: [{
181
- type: HostBinding,
182
- args: ['class.error']
183
- }], hasSuccess: [{
184
- type: HostBinding,
185
- args: ['class.success']
186
- }], isDisabled: [{
187
- type: HostBinding,
188
- args: ['class.disabled']
189
- }], isReadonly: [{
190
- type: HostBinding,
191
- args: ['class.readonly']
192
- }], isDragging: [{
193
- type: HostBinding,
194
- args: ['class.dragging']
195
- }], hasSelectedFile: [{
196
- type: HostBinding,
197
- args: ['class.file-selected']
198
- }], onKeyDown: [{
199
- type: HostListener,
200
- args: ['keydown', ['$event']]
201
- }], onClick: [{
202
- type: HostListener,
203
- args: ['click']
204
- }], onDragLeave: [{
205
- type: HostListener,
206
- args: ['dragleave', ['$event']]
207
- }], onDragOver: [{
208
- type: HostListener,
209
- args: ['dragover', ['$event']]
210
- }], onDragEnter: [{
211
- type: HostListener,
212
- args: ['dragenter', ['$event']]
213
- }], onDrop: [{
214
- type: HostListener,
215
- args: ['drop', ['$event']]
216
- }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUVMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFnQnpFLE1BQU0sT0FBTyxtQkFBbUI7SUFkaEM7UUFla0IscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFDakYseUJBQW9CLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxLQUFLLENBQWlCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxlQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsaUJBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsaUJBQVks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LFxuICBIb3N0TGlzdGVuZXIsXG4gIHZpZXdDaGlsZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBFbGVtZW50UmVmLFxuICBjb21wdXRlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkVGV4dCB9IGZyb20gJy4vZmlsZS11cGxvYWQtdGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctZmlsZS11cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZUlucHV0RWxlbWVudCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZmlsZUlucHV0Jyk7XG4gIHB1YmxpYyByZWFkb25seSBhbGxvd2VkRmlsZVR5cGVSZWdleCA9IGlucHV0PFJlZ0V4cD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGVVcGxvYWRUZXh0ID0gaW5wdXQ8RmlsZVVwbG9hZFRleHQ+KHsgZHJhZ1RleHQ6ICcnLCBkcmFnT3ZlclRleHQ6ICcnIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBsb2FkRGF0ZSA9IGlucHV0KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplSW5CeXRlcyA9IGlucHV0KDEwMDAwMDApO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSByZWFkb25seSA9IGlucHV0KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRyYWdnaW5nT3ZlciA9IG1vZGVsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkRmlsZSA9IG1vZGVsPEZpbGUgfCBudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZXJyb3IgPSBtb2RlbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzdWNjZXNzID0gbW9kZWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5jb3JyZWN0RmlsZVR5cGUgPSBtb2RlbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpbmNvcnJlY3RGaWxlU2l6ZSA9IG1vZGVsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYW5FZGl0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gIXRoaXMuc2VsZWN0ZWRGaWxlKCkgJiYgIXRoaXMuZGlzYWJsZWQoKSAmJiAhdGhpcy5yZWFkb25seSgpLFxuICApO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIHB1YmxpYyBnZXQgdGFiaW5kZXhBdHRyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICF0aGlzLmNhbkVkaXQoKSA/IC0xIDogMDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXJyb3InKVxuICBwdWJsaWMgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnN1Y2Nlc3MnKVxuICBwdWJsaWMgZ2V0IGhhc1N1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3VjY2VzcygpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkb25seScpXG4gIHB1YmxpYyBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmFnZ2luZycpXG4gIHB1YmxpYyBnZXQgaXNEcmFnZ2luZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2luZ092ZXIoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZS1zZWxlY3RlZCcpXG4gIHB1YmxpYyBnZXQgaGFzU2VsZWN0ZWRGaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmlsZSgpID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmIGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbkVkaXQoKSkge1xuICAgICAgdGhpcy5maWxlSW5wdXRFbGVtZW50KCkubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuRWRpdCgpKSB7XG4gICAgICB0aGlzLmZpbGVJbnB1dEVsZW1lbnQoKS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmRyYWdnaW5nT3Zlci5zZXQoZmFsc2UpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuY2FuRWRpdCgpKSB7XG4gICAgICB0aGlzLmRyYWdnaW5nT3Zlci5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmdPdmVyLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgfCB1bmRlZmluZWQgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzWzBdO1xuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RGaWxlKGZpbGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcmFnZ2luZ092ZXIuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Eb3dubG9hZEZpbGVDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLnNlbGVjdGVkRmlsZSgpISk7XG4gICAgY29uc3QgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGlua0VsZW1lbnQuaHJlZiA9IHVybDtcbiAgICBsaW5rRWxlbWVudC5kb3dubG9hZCA9IHRoaXMuc2VsZWN0ZWRGaWxlKCkhLm5hbWU7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7XG4gICAgbGlua0VsZW1lbnQuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmtFbGVtZW50KTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVzZXRGaWxlKCk7XG4gICAgdGhpcy5pbmNvcnJlY3RGaWxlVHlwZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaW5jb3JyZWN0RmlsZVNpemUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpbGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZHJhZ2dpbmdPdmVyKClcbiAgICAgICAgPyB0aGlzLmZpbGVVcGxvYWRUZXh0KCkuZHJhZ092ZXJUZXh0XG4gICAgICAgIDogdGhpcy5maWxlVXBsb2FkVGV4dCgpLmRyYWdUZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkVkaXQoKSkge1xuICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoaW5wdXRFbGVtZW50LmZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBpbnB1dEVsZW1lbnQuZmlsZXNbMF07XG4gICAgICAgIHRoaXMuc2VsZWN0RmlsZShmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBpZiAoIXRoaXMuY29ycmVjdEZpbGVUeXBlKGZpbGUudHlwZSkpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpbGUoKTtcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RGaWxlU2l6ZS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmluY29ycmVjdEZpbGVUeXBlLnNldCh0cnVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuY29ycmVjdEZpbGVTaXplKGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpbGUoKTtcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RGaWxlVHlwZS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmluY29ycmVjdEZpbGVTaXplLnNldCh0cnVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluY29ycmVjdEZpbGVTaXplLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmluY29ycmVjdEZpbGVUeXBlLnNldChmYWxzZSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG4gICAgdGhpcy5maWxlSW5wdXRFbGVtZW50KCkubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3JyZWN0RmlsZVNpemUoZmlsZVNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1heEZpbGVTaXplSW5CeXRlcygpID4gZmlsZVNpemU7XG4gIH1cblxuICBwcml2YXRlIGNvcnJlY3RGaWxlVHlwZShmaWxlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dlZEZpbGVUeXBlUmVnZXgoKT8udGVzdChmaWxlVHlwZSkgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGaWxlIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnN1YnNjcmliZShmbik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7XG4gICAgLy8gbm9vcFxuICB9XG59XG4iLCJAaWYgKCFkcmFnZ2luZ092ZXIoKSAmJiAhc2VsZWN0ZWRGaWxlKCkpIHtcbiAgPG5kdy1pY29uPmNsb3VkX3VwbG9hZDwvbmR3LWljb24+XG59IEBlbHNlIGlmIChkcmFnZ2luZ092ZXIoKSAmJiAhc2VsZWN0ZWRGaWxlKCkpIHtcbiAgPG5kdy1pY29uPnBhZ2VsZXNzPC9uZHctaWNvbj5cbn1cblxue3sgZGlzcGxheVRleHQoKSB9fVxuXG5AaWYgKHNlbGVjdGVkRmlsZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJmaWxlLW5hbWVcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImZpbGUtbmFtZS10ZXh0XCJcbiAgICAgIChjbGljayk9XCJvbkRvd25sb2FkRmlsZUNsaWNrKClcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25Eb3dubG9hZEZpbGVDbGljaygpXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RlZEZpbGUoKT8ubmFtZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtZGVsZXRlLWljb25cIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cIm9uRGVsZXRlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8bmR3LWljb24+ZGVsZXRlPC9uZHctaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cCBjbGFzcz1cImZpbGUtZGF0ZVwiPlxuICAgIHt7IHVwbG9hZERhdGUoKSB9fVxuICA8L3A+XG59XG5cbjxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgaGlkZGVuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIC8+XG4iXX0=
170
+ ], selector: 'ndw-file-upload', standalone: true, template: "@if (!draggingOver() && !selectedFile()) {\n <ndw-icon>cloud_upload</ndw-icon>\n} @else if (draggingOver() && !selectedFile()) {\n <ndw-icon>pageless</ndw-icon>\n}\n\n{{ displayText() }}\n\n@if (selectedFile()) {\n <div class=\"file-name\">\n <button\n class=\"file-name-text\"\n (click)=\"onDownloadFileClick()\"\n (keydown.enter)=\"onDownloadFileClick()\"\n >\n {{ selectedFile()?.name }}\n </button>\n\n <div class=\"file-delete-icon\">\n <button (click)=\"onDeleteClick($event)\" (keydown.enter)=\"onDeleteClick($event)\">\n <ndw-icon>delete</ndw-icon>\n </button>\n </div>\n </div>\n\n <p class=\"file-date\">\n {{ uploadDate() }}\n </p>\n}\n\n<input type=\"file\" #fileInput hidden aria-hidden=\"true\" (change)=\"onFileSelected($event)\" />\n", styles: [":host{display:grid;align-items:center;border-radius:var(--ndw-border-radius-sm);border:var(--ndw-border-size-sm) dashed var(--ndw-color-secondary-500);background-color:var(--ndw-color-secondary-050);color:var(--ndw-color-secondary-500);padding:var(--ndw-spacing-lg);text-align:center;cursor:pointer;transition:var(--ndw-animation-speed-fast) ease-out}:host ndw-icon{color:var(--ndw-color-secondary-500);font-size:var(--ndw-font-size-md);pointer-events:none}:host.dragging,:host:hover,:host:focus{background-color:var(--ndw-color-secondary-100);outline:none}:host.success.file-selected{background-color:var(--ndw-color-positive-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-positive-500);color:var(--ndw-color-positive-500)}:host.error{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error ndw-icon{color:var(--ndw-color-critical-500);pointer-events:none}:host.error.file-selected{background-color:var(--ndw-color-critical-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-critical-500);color:var(--ndw-color-critical-500)}:host.error.file-selected ndw-icon{color:var(--ndw-color-secondary-500);pointer-events:all}:host.disabled,:host.readonly{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) dashed var(--ndw-color-grey-500);color:var(--ndw-color-grey-500);cursor:not-allowed}:host.disabled ndw-icon,:host.readonly ndw-icon{color:var(--ndw-color-grey-500);pointer-events:none}:host.disabled.file-selected .file-name,:host.readonly.file-selected .file-name{color:var(--ndw-color-secondary-500)}:host.disabled.file-selected .file-name .file-name-text:hover,:host.readonly.file-selected .file-name .file-name-text:hover{text-decoration:none}:host.disabled.file-selected .file-delete-icon,:host.readonly.file-selected .file-delete-icon{display:none}:host.file-selected{background-color:var(--ndw-color-grey-100);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-spacing-sm);align-items:baseline;word-break:break-all;cursor:auto;text-align:left}:host.file-selected .file-name{display:flex;align-items:center}:host.file-selected .file-name .file-name-text{background:transparent;border:none;padding:0;color:var(--ndw-color-secondary-500);cursor:pointer}:host.file-selected .file-name .file-name-text:hover,:host.file-selected .file-name .file-name-text:focus{text-decoration:underline;outline:none}:host.file-selected .file-date{font-size:var(--ndw-font-size-xs);color:var(--ndw-color-grey-500);margin:0}:host.file-selected .file-delete-icon{display:flex;flex:1;justify-content:end;pointer-events:all}:host.file-selected .file-delete-icon button{background:transparent;border:none;cursor:pointer;padding:var(--ndw-spacing-2xs);border-radius:var(--ndw-border-radius-md);transition:background-color .15s ease-in-out}:host.file-selected .file-delete-icon button:hover{background-color:var(--ndw-alpha-black-007)}:host.file-selected .file-delete-icon button:active,:host.file-selected .file-delete-icon button:focus,:host.file-selected .file-delete-icon button:focus-visible{background-color:var(--ndw-alpha-black-015)}:host.file-selected .file-delete-icon button:focus-visible{color:var(--ndw-color-primary);outline-color:var(--ndw-color-secondary-500)}:host.file-selected .file-delete-icon ndw-icon{pointer-events:all}:host.file-selected .file-delete-icon ndw-icon:focus{color:var(--ndw-color-secondary-500);outline:none}\n"] }]
171
+ }] });
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFFTCxRQUFRLEVBQ1IsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQWtDM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTlCaEM7UUErQmtCLHFCQUFnQixHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQStCLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLHlCQUFvQixHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsS0FBSyxDQUFpQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0UsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2Qix1QkFBa0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcs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QyxhQUNiO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcscUJBQXFCOzRCQUNoQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixZQUNTLGlCQUFpQixjQUNmLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIHZpZXdDaGlsZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBFbGVtZW50UmVmLFxuICBjb21wdXRlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbic7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRUZXh0IH0gZnJvbSAnLi9maWxlLXVwbG9hZC10ZXh0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbYXR0ci50YWJpbmRleF0nOiAnIXRoaXMuY2FuRWRpdCgpID8gLTEgOiAwJyxcbiAgICAnW2NsYXNzLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAnW2NsYXNzLmRyYWdnaW5nXSc6ICdkcmFnZ2luZ092ZXIoKScsXG4gICAgJ1tjbGFzcy5lcnJvcl0nOiAnZXJyb3IoKScsXG4gICAgJ1tjbGFzcy5maWxlLXNlbGVjdGVkXSc6ICchIXNlbGVjdGVkRmlsZSgpJyxcbiAgICAnW2NsYXNzLnJlYWRvbmx5XSc6ICdyZWFkb25seSgpJyxcbiAgICAnW2NsYXNzLnN1Y2Nlc3NdJzogJ3N1Y2Nlc3MoKScsXG4gICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICAnKGRyYWdlbnRlciknOiAnb25EcmFnRW50ZXIoJGV2ZW50KScsXG4gICAgJyhkcmFnbGVhdmUpJzogJ29uRHJhZ0xlYXZlKCRldmVudCknLFxuICAgICcoZHJhZ292ZXIpJzogJ29uRHJhZ092ZXIoJGV2ZW50KScsXG4gICAgJyhkcm9wKSc6ICdvbkRyb3AoJGV2ZW50KScsXG4gICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gIH0sXG4gIGltcG9ydHM6IFtJY29uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnbmR3LWZpbGUtdXBsb2FkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGVJbnB1dEVsZW1lbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2ZpbGVJbnB1dCcpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dlZEZpbGVUeXBlUmVnZXggPSBpbnB1dDxSZWdFeHA+KCk7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlVXBsb2FkVGV4dCA9IGlucHV0PEZpbGVVcGxvYWRUZXh0Pih7IGRyYWdUZXh0OiAnJywgZHJhZ092ZXJUZXh0OiAnJyB9KTtcbiAgcHVibGljIHJlYWRvbmx5IHVwbG9hZERhdGUgPSBpbnB1dCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBtYXhGaWxlU2l6ZUluQnl0ZXMgPSBpbnB1dCgxMDAwMDAwKTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcmFnZ2luZ092ZXIgPSBtb2RlbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZEZpbGUgPSBtb2RlbDxGaWxlIHwgbnVsbD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGVycm9yID0gbW9kZWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VjY2VzcyA9IG1vZGVsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGluY29ycmVjdEZpbGVUeXBlID0gbW9kZWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5jb3JyZWN0RmlsZVNpemUgPSBtb2RlbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FuRWRpdCA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLnNlbGVjdGVkRmlsZSgpICYmICF0aGlzLmRpc2FibGVkKCkgJiYgIXRoaXMucmVhZG9ubHkoKSxcbiAgKTtcblxuICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJyAmJiBldmVudC5rZXkgIT09ICcgJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0RWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0RWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZHJhZ2dpbmdPdmVyLnNldChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuY2FuRWRpdCgpKSB7XG4gICAgICB0aGlzLmRyYWdnaW5nT3Zlci5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmdPdmVyLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLmNhbkVkaXQoKSkge1xuICAgICAgY29uc3QgZmlsZTogRmlsZSB8IHVuZGVmaW5lZCA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXNbMF07XG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdEZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmRyYWdnaW5nT3Zlci5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRvd25sb2FkRmlsZUNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuc2VsZWN0ZWRGaWxlKCkhKTtcbiAgICBjb25zdCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rRWxlbWVudC5ocmVmID0gdXJsO1xuICAgIGxpbmtFbGVtZW50LmRvd25sb2FkID0gdGhpcy5zZWxlY3RlZEZpbGUoKSEubmFtZTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTtcbiAgICBsaW5rRWxlbWVudC5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW1lbnQpO1xuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldEZpbGUoKTtcbiAgICB0aGlzLmluY29ycmVjdEZpbGVUeXBlLnNldChmYWxzZSk7XG4gICAgdGhpcy5pbmNvcnJlY3RGaWxlU2l6ZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRmlsZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kcmFnZ2luZ092ZXIoKVxuICAgICAgICA/IHRoaXMuZmlsZVVwbG9hZFRleHQoKS5kcmFnT3ZlclRleHRcbiAgICAgICAgOiB0aGlzLmZpbGVVcGxvYWRUZXh0KCkuZHJhZ1RleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuRWRpdCgpKSB7XG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGlucHV0RWxlbWVudC5maWxlc1swXTtcbiAgICAgICAgdGhpcy5zZWxlY3RGaWxlKGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IEZpbGUgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb3JyZWN0RmlsZVR5cGUoZmlsZS50eXBlKSkge1xuICAgICAgdGhpcy5yZXNldEZpbGUoKTtcbiAgICAgIHRoaXMuaW5jb3JyZWN0RmlsZVNpemUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuaW5jb3JyZWN0RmlsZVR5cGUuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb3JyZWN0RmlsZVNpemUoZmlsZS5zaXplKSkge1xuICAgICAgdGhpcy5yZXNldEZpbGUoKTtcbiAgICAgIHRoaXMuaW5jb3JyZWN0RmlsZVR5cGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuaW5jb3JyZWN0RmlsZVNpemUuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5jb3JyZWN0RmlsZVNpemUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmluY29ycmVjdEZpbGVUeXBlLnNldChmYWxzZSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQoZmlsZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG4gICAgdGhpcy5maWxlSW5wdXRFbGVtZW50KCkubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3JyZWN0RmlsZVNpemUoZmlsZVNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1heEZpbGVTaXplSW5CeXRlcygpID4gZmlsZVNpemU7XG4gIH1cblxuICBwcml2YXRlIGNvcnJlY3RGaWxlVHlwZShmaWxlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dlZEZpbGVUeXBlUmVnZXgoKT8udGVzdChmaWxlVHlwZSkgPyB0cnVlIDogZmFsc2U7XG4gIH1cbn1cbiIsIkBpZiAoIWRyYWdnaW5nT3ZlcigpICYmICFzZWxlY3RlZEZpbGUoKSkge1xuICA8bmR3LWljb24+Y2xvdWRfdXBsb2FkPC9uZHctaWNvbj5cbn0gQGVsc2UgaWYgKGRyYWdnaW5nT3ZlcigpICYmICFzZWxlY3RlZEZpbGUoKSkge1xuICA8bmR3LWljb24+cGFnZWxlc3M8L25kdy1pY29uPlxufVxuXG57eyBkaXNwbGF5VGV4dCgpIH19XG5cbkBpZiAoc2VsZWN0ZWRGaWxlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImZpbGUtbmFtZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZmlsZS1uYW1lLXRleHRcIlxuICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRGaWxlQ2xpY2soKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkRvd25sb2FkRmlsZUNsaWNrKClcIlxuICAgID5cbiAgICAgIHt7IHNlbGVjdGVkRmlsZSgpPy5uYW1lIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1kZWxldGUtaWNvblwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25EZWxldGVDbGljaygkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwib25EZWxldGVDbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxuZHctaWNvbj5kZWxldGU8L25kdy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwIGNsYXNzPVwiZmlsZS1kYXRlXCI+XG4gICAge3sgdXBsb2FkRGF0ZSgpIH19XG4gIDwvcD5cbn1cblxuPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgLz5cbiJdfQ==
@@ -1,41 +1,44 @@
1
- import { NgClass, NgTemplateOutlet } from '@angular/common';
2
- import { Component, computed, contentChild, effect, input } from '@angular/core';
3
- import { ButtonDirective } from '../button';
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, contentChild, effect, input, } from '@angular/core';
4
3
  import { IconComponent } from '../icon';
5
4
  import { TooltipDirective } from '../tooltip';
5
+ import { ClearSearchButtonComponent } from './clear-search-button/clear-search-button.component';
6
6
  import { ErrorComponent } from './error';
7
7
  import { FormFieldElement } from './form-field.model';
8
8
  import { InfoComponent } from './info';
9
9
  import { InputDirective, InputType } from './input';
10
+ import { InputIconComponent } from './input-icon';
10
11
  import { MonthInputComponent } from './month-input';
12
+ import { PickerButtonComponent } from './picker-button/picker-button.component';
11
13
  import { SuccessComponent } from './success';
14
+ import { INPUT_CONTAINER_CLASS } from './form-field.constant';
12
15
  import * as i0 from "@angular/core";
13
- const inputTypesWithPrefixIcon = [InputType.Search];
14
- const inputTypesWithSuffixButton = [InputType.Date, InputType.Time];
15
16
  export class FormFieldComponent {
16
17
  constructor() {
17
- this.monthInput = contentChild(MonthInputComponent);
18
- this.regularInput = contentChild(InputDirective);
19
- this.input = computed(() => this.regularInput() ?? this.monthInput()?.input());
20
18
  this.label = input.required();
21
- this.clearSearchAriaLabel = input();
22
- this.suffixButtonAriaLabel = input();
19
+ this.suffixAriaLabel = input('');
23
20
  this.hideLabel = input(false);
24
21
  this.disabled = input(false);
25
22
  this.error = input();
26
23
  this.success = input();
27
24
  this.info = input();
28
25
  this.tooltip = input('');
29
- this.inputPrefix = computed(() => this.setInputPrefix());
30
- this.inputSuffix = computed(() => this.setInputSuffix());
26
+ this.monthInput = contentChild(MonthInputComponent);
27
+ this.regularInput = contentChild(InputDirective);
28
+ this.input = computed(() => this.regularInput() ?? this.monthInput()?.input());
29
+ this.inputType = computed(() => this.input()?.element.type);
30
+ this.isSearchInput = computed(() => this.inputType() === InputType.Search);
31
+ this.hasPickerButton = computed(() => this.inputType() === InputType.Date ||
32
+ this.inputType() === InputType.Time ||
33
+ this.input()?.element.nodeName.toLowerCase() === FormFieldElement.Select);
31
34
  this.uuid = crypto.randomUUID();
32
35
  this.descriptionUuid = crypto.randomUUID();
36
+ this.inputContainerClass = INPUT_CONTAINER_CLASS;
33
37
  effect(() => {
34
38
  const input = this.input();
35
39
  if (!input) {
36
40
  return;
37
41
  }
38
- this.addInputTypeBasedClass(input);
39
42
  this.setInputDisabledState(input);
40
43
  this.setInputErrorState(input);
41
44
  this.setInputSuccessState(input);
@@ -43,36 +46,6 @@ export class FormFieldComponent {
43
46
  this.setAriaDescribedBy(input);
44
47
  });
45
48
  }
46
- clearInput() {
47
- const input = this.input();
48
- if (input) {
49
- input.element.value = '';
50
- // Trigger 'ndw-changed' attribute update on the input element
51
- input.element.dispatchEvent(new Event('input'));
52
- }
53
- }
54
- onSuffixButtonClick() {
55
- const inputElement = this.input()?.element;
56
- if (!inputElement) {
57
- return;
58
- }
59
- inputElement.focus();
60
- if ('showPicker' in inputElement) {
61
- inputElement.showPicker();
62
- }
63
- }
64
- addInputTypeBasedClass(input) {
65
- const element = input.element;
66
- if (!element) {
67
- return;
68
- }
69
- inputTypesWithPrefixIcon.includes(element.type)
70
- ? element.classList.add('prefix-icon')
71
- : element.classList.remove('prefix-icon');
72
- inputTypesWithSuffixButton.includes(element.type)
73
- ? element.classList.add('suffix-button')
74
- : element.classList.remove('suffix-button');
75
- }
76
49
  setInputDisabledState(input) {
77
50
  input.disabled = this.disabled();
78
51
  }
@@ -88,45 +61,21 @@ export class FormFieldComponent {
88
61
  setAriaDescribedBy(input) {
89
62
  input.ariaDescribedBy = this.descriptionUuid;
90
63
  }
91
- setInputPrefix() {
92
- const input = this.input();
93
- if (!input) {
94
- return;
95
- }
96
- // Set the input icon for search inputs
97
- return inputTypesWithPrefixIcon.includes(input.element.type)
98
- ? 'search'
99
- : undefined;
100
- }
101
- setInputSuffix() {
102
- const input = this.input();
103
- if (!input) {
104
- return;
105
- }
106
- // Set the input icon for date inputs
107
- if (inputTypesWithSuffixButton.includes(input.element.type)) {
108
- return input.element.type === InputType.Time ? 'schedule' : 'calendar_month';
109
- }
110
- // Set the input icon for select inputs
111
- if (input.element.nodeName.toLowerCase() === FormFieldElement.Select) {
112
- return 'keyboard_arrow_down';
113
- }
114
- return undefined;
115
- }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FormFieldComponent, isStandalone: true, selector: "ndw-form-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, clearSearchAriaLabel: { classPropertyName: "clearSearchAriaLabel", publicName: "clearSearchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, suffixButtonAriaLabel: { classPropertyName: "suffixButtonAriaLabel", publicName: "suffixButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, hideLabel: { classPropertyName: "hideLabel", publicName: "hideLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "monthInput", first: true, predicate: MonthInputComponent, descendants: true, isSignal: true }, { propertyName: "regularInput", first: true, predicate: InputDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (input() === undefined) {\n <fieldset>\n <legend ndwLabel [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </legend>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n </fieldset>\n} @else {\n <label ndwLabel [attr.for]=\"input() ? 'input-' + uuid : null\" [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </label>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n}\n\n<ng-template #fieldTemplate>\n @if (inputPrefix(); as icon) {\n <ndw-icon class=\"input-prefix-icon\" [ngClass]=\"{ disabled: disabled() }\">\n {{ icon }}\n </ndw-icon>\n }\n @if (inputSuffix(); as icon) {\n <button\n ndwButton\n extra-small\n tertiary\n class=\"input-suffix-button\"\n [ngClass]=\"{ disabled: disabled() }\"\n [ariaLabel]=\"suffixButtonAriaLabel() ?? ''\"\n (click)=\"onSuffixButtonClick()\"\n >\n <ndw-icon>{{ icon }}</ndw-icon>\n </button>\n }\n\n @if (input()?.element?.type === 'search' && input()?.element?.value !== '') {\n <button\n ndwButton\n alternative\n extra-small\n tertiary\n class=\"input-suffix-button\"\n [ariaLabel]=\"clearSearchAriaLabel() ?? ''\"\n (click)=\"clearInput()\"\n >\n <ndw-icon>close</ndw-icon>\n </button>\n }\n\n <ng-content />\n\n @if (info(); as info) {\n <ndw-info [id]=\"descriptionUuid\">{{ info }}</ndw-info>\n }\n @if (error(); as error) {\n <ndw-error role=\"alert\" aria-live=\"polite\">{{ error }}</ndw-error>\n }\n @if (success(); as success) {\n <ndw-success role=\"alert\" aria-live=\"polite\">{{ success }}</ndw-success>\n }\n</ng-template>\n\n<ng-template #labelTemplate>\n <span class=\"required-label required\"> * </span>\n {{ label() }}\n @if (tooltip(); as tooltip) {\n <ndw-icon [ndwTooltip]=\"tooltip\">info</ndw-icon>\n }\n</ng-template>\n", styles: [":host{position:relative;display:grid;margin-bottom:var(--ndw-spacing-md);color:var(--ndw-color-grey-700);font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-sm)}:host .required-label{display:none}:host:has([required]) .required-label{display:inline}fieldset{border:0;margin:0;padding:0}fieldset legend{padding-inline:0}ndw-error,ndw-success,ndw-info{margin-top:var(--ndw-spacing-2xs)}.input-prefix-icon,.input-suffix-button{position:absolute;z-index:1}.input-prefix-icon.disabled,.input-suffix-button.disabled{color:var(--ndw-color-grey-300)}.input-prefix-icon{color:var(--ndw-color-grey-400);font-size:var(--ndw-font-size-lg);left:var(--ndw-spacing-sm);top:.625rem}label:not(.sr-only)~.input-prefix-icon{top:2.125rem}.input-suffix-button{top:.5rem;right:var(--ndw-spacing-xs)}label:not(.sr-only)~.input-suffix-button{top:2rem}\n"], dependencies: [{ kind: "directive", type: ButtonDirective, selector: "[ndwButton]" }, { kind: "component", type: ErrorComponent, selector: "ndw-error" }, { kind: "component", type: SuccessComponent, selector: "ndw-success" }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "component", type: InfoComponent, selector: "ndw-info" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TooltipDirective, selector: "[ndwTooltip]", inputs: ["ndwTooltip"] }] }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: FormFieldComponent, isStandalone: true, selector: "ndw-form-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, suffixAriaLabel: { classPropertyName: "suffixAriaLabel", publicName: "suffixAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, hideLabel: { classPropertyName: "hideLabel", publicName: "hideLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "monthInput", first: true, predicate: MonthInputComponent, descendants: true, isSignal: true }, { propertyName: "regularInput", first: true, predicate: InputDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (input() === undefined) {\n <fieldset>\n <legend ndwLabel [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </legend>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n </fieldset>\n} @else {\n <label ndwLabel [attr.for]=\"input() ? 'input-' + uuid : null\" [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </label>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n}\n\n<ng-template #fieldTemplate>\n <div\n [class]=\"inputContainerClass\"\n [attr.success]=\"success() ? true : null\"\n [attr.error]=\"error() ? true : null\"\n [attr.disabled]=\"disabled() ? true : null\"\n [attr.readonly]=\"input()?.element?.hasAttribute('readonly') ? true : null\"\n >\n @if (isSearchInput()) {\n <ndw-input-icon>search</ndw-input-icon>\n }\n\n <ng-content />\n\n @if (isSearchInput()) {\n <ndw-clear-search-button\n [input]=\"input()\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"suffixAriaLabel()\"\n />\n }\n @if (hasPickerButton()) {\n <ndw-picker-button\n [input]=\"input()\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"suffixAriaLabel()\"\n />\n }\n </div>\n\n @if (info(); as info) {\n <ndw-info [id]=\"descriptionUuid\">{{ info }}</ndw-info>\n }\n @if (error(); as error) {\n <ndw-error role=\"alert\" aria-live=\"polite\">{{ error }}</ndw-error>\n }\n @if (success(); as success) {\n <ndw-success role=\"alert\" aria-live=\"polite\">{{ success }}</ndw-success>\n }\n</ng-template>\n\n<ng-template #labelTemplate>\n <span class=\"required-label required\"> * </span>\n {{ label() }}\n @if (tooltip(); as tooltip) {\n <ndw-icon [ndwTooltip]=\"tooltip\">info</ndw-icon>\n }\n</ng-template>\n", styles: [":host{position:relative;display:grid;color:var(--ndw-color-grey-700);font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-sm)}:host .required-label{display:none}:host:has([required]) .required-label{display:inline}fieldset{border:0;margin:0;padding:0}fieldset legend{padding-inline:0;word-break:break-word}label{word-break:break-word}ndw-error,ndw-success,ndw-info{margin-top:var(--ndw-spacing-2xs)}\n"], dependencies: [{ kind: "component", type: ErrorComponent, selector: "ndw-error" }, { kind: "component", type: SuccessComponent, selector: "ndw-success" }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "component", type: InfoComponent, selector: "ndw-info" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TooltipDirective, selector: "[ndwTooltip]", inputs: ["ndwTooltip"] }, { kind: "component", type: InputIconComponent, selector: "ndw-input-icon" }, { kind: "component", type: ClearSearchButtonComponent, selector: "ndw-clear-search-button", inputs: ["disabled", "input", "ariaLabel"] }, { kind: "component", type: PickerButtonComponent, selector: "ndw-picker-button", inputs: ["disabled", "input", "ariaLabel", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
118
66
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FormFieldComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FormFieldComponent, decorators: [{
120
68
  type: Component,
121
- args: [{ selector: 'ndw-form-field', standalone: true, imports: [
122
- ButtonDirective,
69
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [
123
70
  ErrorComponent,
124
71
  SuccessComponent,
125
72
  IconComponent,
126
73
  InfoComponent,
127
- NgClass,
128
74
  NgTemplateOutlet,
129
75
  TooltipDirective,
130
- ], template: "@if (input() === undefined) {\n <fieldset>\n <legend ndwLabel [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </legend>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n </fieldset>\n} @else {\n <label ndwLabel [attr.for]=\"input() ? 'input-' + uuid : null\" [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </label>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n}\n\n<ng-template #fieldTemplate>\n @if (inputPrefix(); as icon) {\n <ndw-icon class=\"input-prefix-icon\" [ngClass]=\"{ disabled: disabled() }\">\n {{ icon }}\n </ndw-icon>\n }\n @if (inputSuffix(); as icon) {\n <button\n ndwButton\n extra-small\n tertiary\n class=\"input-suffix-button\"\n [ngClass]=\"{ disabled: disabled() }\"\n [ariaLabel]=\"suffixButtonAriaLabel() ?? ''\"\n (click)=\"onSuffixButtonClick()\"\n >\n <ndw-icon>{{ icon }}</ndw-icon>\n </button>\n }\n\n @if (input()?.element?.type === 'search' && input()?.element?.value !== '') {\n <button\n ndwButton\n alternative\n extra-small\n tertiary\n class=\"input-suffix-button\"\n [ariaLabel]=\"clearSearchAriaLabel() ?? ''\"\n (click)=\"clearInput()\"\n >\n <ndw-icon>close</ndw-icon>\n </button>\n }\n\n <ng-content />\n\n @if (info(); as info) {\n <ndw-info [id]=\"descriptionUuid\">{{ info }}</ndw-info>\n }\n @if (error(); as error) {\n <ndw-error role=\"alert\" aria-live=\"polite\">{{ error }}</ndw-error>\n }\n @if (success(); as success) {\n <ndw-success role=\"alert\" aria-live=\"polite\">{{ success }}</ndw-success>\n }\n</ng-template>\n\n<ng-template #labelTemplate>\n <span class=\"required-label required\"> * </span>\n {{ label() }}\n @if (tooltip(); as tooltip) {\n <ndw-icon [ndwTooltip]=\"tooltip\">info</ndw-icon>\n }\n</ng-template>\n", styles: [":host{position:relative;display:grid;margin-bottom:var(--ndw-spacing-md);color:var(--ndw-color-grey-700);font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-sm)}:host .required-label{display:none}:host:has([required]) .required-label{display:inline}fieldset{border:0;margin:0;padding:0}fieldset legend{padding-inline:0}ndw-error,ndw-success,ndw-info{margin-top:var(--ndw-spacing-2xs)}.input-prefix-icon,.input-suffix-button{position:absolute;z-index:1}.input-prefix-icon.disabled,.input-suffix-button.disabled{color:var(--ndw-color-grey-300)}.input-prefix-icon{color:var(--ndw-color-grey-400);font-size:var(--ndw-font-size-lg);left:var(--ndw-spacing-sm);top:.625rem}label:not(.sr-only)~.input-prefix-icon{top:2.125rem}.input-suffix-button{top:.5rem;right:var(--ndw-spacing-xs)}label:not(.sr-only)~.input-suffix-button{top:2rem}\n"] }]
76
+ InputIconComponent,
77
+ ClearSearchButtonComponent,
78
+ PickerButtonComponent,
79
+ ], selector: 'ndw-form-field', standalone: true, template: "@if (input() === undefined) {\n <fieldset>\n <legend ndwLabel [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </legend>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n </fieldset>\n} @else {\n <label ndwLabel [attr.for]=\"input() ? 'input-' + uuid : null\" [class.sr-only]=\"hideLabel()\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </label>\n <ng-container *ngTemplateOutlet=\"fieldTemplate\" />\n}\n\n<ng-template #fieldTemplate>\n <div\n [class]=\"inputContainerClass\"\n [attr.success]=\"success() ? true : null\"\n [attr.error]=\"error() ? true : null\"\n [attr.disabled]=\"disabled() ? true : null\"\n [attr.readonly]=\"input()?.element?.hasAttribute('readonly') ? true : null\"\n >\n @if (isSearchInput()) {\n <ndw-input-icon>search</ndw-input-icon>\n }\n\n <ng-content />\n\n @if (isSearchInput()) {\n <ndw-clear-search-button\n [input]=\"input()\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"suffixAriaLabel()\"\n />\n }\n @if (hasPickerButton()) {\n <ndw-picker-button\n [input]=\"input()\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"suffixAriaLabel()\"\n />\n }\n </div>\n\n @if (info(); as info) {\n <ndw-info [id]=\"descriptionUuid\">{{ info }}</ndw-info>\n }\n @if (error(); as error) {\n <ndw-error role=\"alert\" aria-live=\"polite\">{{ error }}</ndw-error>\n }\n @if (success(); as success) {\n <ndw-success role=\"alert\" aria-live=\"polite\">{{ success }}</ndw-success>\n }\n</ng-template>\n\n<ng-template #labelTemplate>\n <span class=\"required-label required\"> * </span>\n {{ label() }}\n @if (tooltip(); as tooltip) {\n <ndw-icon [ndwTooltip]=\"tooltip\">info</ndw-icon>\n }\n</ng-template>\n", styles: [":host{position:relative;display:grid;color:var(--ndw-color-grey-700);font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-sm)}:host .required-label{display:none}:host:has([required]) .required-label{display:inline}fieldset{border:0;margin:0;padding:0}fieldset legend{padding-inline:0;word-break:break-word}label{word-break:break-word}ndw-error,ndw-success,ndw-info{margin-top:var(--ndw-spacing-2xs)}\n"] }]
131
80
  }], ctorParameters: () => [] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRTdDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEQsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUks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QUNoQixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBjb250ZW50Q2hpbGQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwJztcblxuaW1wb3J0IHsgRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IEZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgSW5mb0NvbXBvbmVudCB9IGZyb20gJy4vaW5mbyc7XG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSwgSW5wdXRUeXBlIH0gZnJvbSAnLi9pbnB1dCc7XG5pbXBvcnQgeyBNb250aElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tb250aC1pbnB1dCc7XG5pbXBvcnQgeyBTdWNjZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9zdWNjZXNzJztcblxuY29uc3QgaW5wdXRUeXBlc1dpdGhQcmVmaXhJY29uID0gW0lucHV0VHlwZS5TZWFyY2hdO1xuY29uc3QgaW5wdXRUeXBlc1dpdGhTdWZmaXhCdXR0b24gPSBbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5UaW1lXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmR3LWZvcm0tZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQnV0dG9uRGlyZWN0aXZlLFxuICAgIEVycm9yQ29tcG9uZW50LFxuICAgIFN1Y2Nlc3NDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbmZvQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IG1vbnRoSW5wdXQgPSBjb250ZW50Q2hpbGQoTW9udGhJbnB1dENvbXBvbmVudCk7XG4gIHB1YmxpYyByZWFkb25seSByZWd1bGFySW5wdXQgPSBjb250ZW50Q2hpbGQoSW5wdXREaXJlY3RpdmUpO1xuICBwdWJsaWMgaW5wdXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlZ3VsYXJJbnB1dCgpID8/IHRoaXMubW9udGhJbnB1dCgpPy5pbnB1dCgpKTtcblxuICBwdWJsaWMgbGFiZWwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBjbGVhclNlYXJjaEFyaWFMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHVibGljIHN1ZmZpeEJ1dHRvbkFyaWFMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHVibGljIGhpZGVMYWJlbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyBlcnJvciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHVibGljIHN1Y2Nlc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBpbmZvID0gaW5wdXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdG9vbHRpcCA9IGlucHV0KCcnKTtcblxuICBwdWJsaWMgaW5wdXRQcmVmaXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNldElucHV0UHJlZml4KCkpO1xuICBwdWJsaWMgaW5wdXRTdWZmaXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNldElucHV0U3VmZml4KCkpO1xuXG4gIHB1YmxpYyB1dWlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgcHVibGljIGRlc2NyaXB0aW9uVXVpZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXQoKTtcbiAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFkZElucHV0VHlwZUJhc2VkQ2xhc3MoaW5wdXQpO1xuICAgICAgdGhpcy5zZXRJbnB1dERpc2FibGVkU3RhdGUoaW5wdXQpO1xuICAgICAgdGhpcy5zZXRJbnB1dEVycm9yU3RhdGUoaW5wdXQpO1xuICAgICAgdGhpcy5zZXRJbnB1dFN1Y2Nlc3NTdGF0ZShpbnB1dCk7XG4gICAgICB0aGlzLnNldElucHV0SWQoaW5wdXQpO1xuICAgICAgdGhpcy5zZXRBcmlhRGVzY3JpYmVkQnkoaW5wdXQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFySW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0KCk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpbnB1dC5lbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAvLyBUcmlnZ2VyICduZHctY2hhbmdlZCcgYXR0cmlidXRlIHVwZGF0ZSBvbiB0aGUgaW5wdXQgZWxlbWVudFxuICAgICAgaW5wdXQuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uU3VmZml4QnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5pbnB1dCgpPy5lbGVtZW50O1xuICAgIGlmICghaW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5wdXRFbGVtZW50LmZvY3VzKCk7XG5cbiAgICBpZiAoJ3Nob3dQaWNrZXInIGluIGlucHV0RWxlbWVudCkge1xuICAgICAgaW5wdXRFbGVtZW50LnNob3dQaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZElucHV0VHlwZUJhc2VkQ2xhc3MoaW5wdXQ6IElucHV0RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGlucHV0LmVsZW1lbnQ7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5wdXRUeXBlc1dpdGhQcmVmaXhJY29uLmluY2x1ZGVzKGVsZW1lbnQudHlwZSBhcyBJbnB1dFR5cGUpXG4gICAgICA/IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncHJlZml4LWljb24nKVxuICAgICAgOiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3ByZWZpeC1pY29uJyk7XG5cbiAgICBpbnB1dFR5cGVzV2l0aFN1ZmZpeEJ1dHRvbi5pbmNsdWRlcyhlbGVtZW50LnR5cGUgYXMgSW5wdXRUeXBlKVxuICAgICAgPyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3N1ZmZpeC1idXR0b24nKVxuICAgICAgOiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3N1ZmZpeC1idXR0b24nKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXREaXNhYmxlZFN0YXRlKGlucHV0OiBJbnB1dERpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGlucHV0LmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dEVycm9yU3RhdGUoaW5wdXQ6IElucHV0RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgaW5wdXQuZXJyb3IgPSAhIXRoaXMuZXJyb3IoKT8ubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dFN1Y2Nlc3NTdGF0ZShpbnB1dDogSW5wdXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBpbnB1dC5zdWNjZXNzID0gISF0aGlzLnN1Y2Nlc3MoKT8ubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dElkKGlucHV0OiBJbnB1dERpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGlucHV0LmlkID0gYGlucHV0LSR7dGhpcy51dWlkfWA7XG4gIH1cblxuICBwcml2YXRlIHNldEFyaWFEZXNjcmliZWRCeShpbnB1dDogSW5wdXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBpbnB1dC5hcmlhRGVzY3JpYmVkQnkgPSB0aGlzLmRlc2NyaXB0aW9uVXVpZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRQcmVmaXgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXQoKTtcbiAgICBpZiAoIWlucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBpbnB1dCBpY29uIGZvciBzZWFyY2ggaW5wdXRzXG4gICAgcmV0dXJuIGlucHV0VHlwZXNXaXRoUHJlZml4SWNvbi5pbmNsdWRlcyhpbnB1dC5lbGVtZW50LnR5cGUgYXMgSW5wdXRUeXBlKVxuICAgICAgPyAnc2VhcmNoJ1xuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHNldElucHV0U3VmZml4KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0KCk7XG4gICAgaWYgKCFpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgaW5wdXQgaWNvbiBmb3IgZGF0ZSBpbnB1dHNcbiAgICBpZiAoaW5wdXRUeXBlc1dpdGhTdWZmaXhCdXR0b24uaW5jbHVkZXMoaW5wdXQuZWxlbWVudC50eXBlIGFzIElucHV0VHlwZSkpIHtcbiAgICAgIHJldHVybiBpbnB1dC5lbGVtZW50LnR5cGUgPT09IElucHV0VHlwZS5UaW1lID8gJ3NjaGVkdWxlJyA6ICdjYWxlbmRhcl9tb250aCc7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBpbnB1dCBpY29uIGZvciBzZWxlY3QgaW5wdXRzXG4gICAgaWYgKGlucHV0LmVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gRm9ybUZpZWxkRWxlbWVudC5TZWxlY3QpIHtcbiAgICAgIHJldHVybiAna2V5Ym9hcmRfYXJyb3dfZG93bic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiQGlmIChpbnB1dCgpID09PSB1bmRlZmluZWQpIHtcbiAgPGZpZWxkc2V0PlxuICAgIDxsZWdlbmQgbmR3TGFiZWwgW2NsYXNzLnNyLW9ubHldPVwiaGlkZUxhYmVsKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlXCIgLz5cbiAgICA8L2xlZ2VuZD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZVwiIC8+XG4gIDwvZmllbGRzZXQ+XG59IEBlbHNlIHtcbiAgPGxhYmVsIG5kd0xhYmVsIFthdHRyLmZvcl09XCJpbnB1dCgpID8gJ2lucHV0LScgKyB1dWlkIDogbnVsbFwiIFtjbGFzcy5zci1vbmx5XT1cImhpZGVMYWJlbCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGVcIiAvPlxuICA8L2xhYmVsPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZVwiIC8+XG59XG5cbjxuZy10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZT5cbiAgQGlmIChpbnB1dFByZWZpeCgpOyBhcyBpY29uKSB7XG4gICAgPG5kdy1pY29uIGNsYXNzPVwiaW5wdXQtcHJlZml4LWljb25cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCgpIH1cIj5cbiAgICAgIHt7IGljb24gfX1cbiAgICA8L25kdy1pY29uPlxuICB9XG4gIEBpZiAoaW5wdXRTdWZmaXgoKTsgYXMgaWNvbikge1xuICAgIDxidXR0b25cbiAgICAgIG5kd0J1dHRvblxuICAgICAgZXh0cmEtc21hbGxcbiAgICAgIHRlcnRpYXJ5XG4gICAgICBjbGFzcz1cImlucHV0LXN1ZmZpeC1idXR0b25cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZWQoKSB9XCJcbiAgICAgIFthcmlhTGFiZWxdPVwic3VmZml4QnV0dG9uQXJpYUxhYmVsKCkgPz8gJydcIlxuICAgICAgKGNsaWNrKT1cIm9uU3VmZml4QnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPG5kdy1pY29uPnt7IGljb24gfX08L25kdy1pY29uPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgQGlmIChpbnB1dCgpPy5lbGVtZW50Py50eXBlID09PSAnc2VhcmNoJyAmJiBpbnB1dCgpPy5lbGVtZW50Py52YWx1ZSAhPT0gJycpIHtcbiAgICA8YnV0dG9uXG4gICAgICBuZHdCdXR0b25cbiAgICAgIGFsdGVybmF0aXZlXG4gICAgICBleHRyYS1zbWFsbFxuICAgICAgdGVydGlhcnlcbiAgICAgIGNsYXNzPVwiaW5wdXQtc3VmZml4LWJ1dHRvblwiXG4gICAgICBbYXJpYUxhYmVsXT1cImNsZWFyU2VhcmNoQXJpYUxhYmVsKCkgPz8gJydcIlxuICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXQoKVwiXG4gICAgPlxuICAgICAgPG5kdy1pY29uPmNsb3NlPC9uZHctaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIDxuZy1jb250ZW50IC8+XG5cbiAgQGlmIChpbmZvKCk7IGFzIGluZm8pIHtcbiAgICA8bmR3LWluZm8gW2lkXT1cImRlc2NyaXB0aW9uVXVpZFwiPnt7IGluZm8gfX08L25kdy1pbmZvPlxuICB9XG4gIEBpZiAoZXJyb3IoKTsgYXMgZXJyb3IpIHtcbiAgICA8bmR3LWVycm9yIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGVycm9yIH19PC9uZHctZXJyb3I+XG4gIH1cbiAgQGlmIChzdWNjZXNzKCk7IGFzIHN1Y2Nlc3MpIHtcbiAgICA8bmR3LXN1Y2Nlc3Mgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwicG9saXRlXCI+e3sgc3VjY2VzcyB9fTwvbmR3LXN1Y2Nlc3M+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1sYWJlbCByZXF1aXJlZFwiPiAqIDwvc3Bhbj5cbiAge3sgbGFiZWwoKSB9fVxuICBAaWYgKHRvb2x0aXAoKTsgYXMgdG9vbHRpcCkge1xuICAgIDxuZHctaWNvbiBbbmR3VG9vbHRpcF09XCJ0b29sdGlwXCI+aW5mbzwvbmR3LWljb24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFC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LEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBcUI7UUFDOUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7OEdBOURVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHluQ0FXZ0IsbUJBQW1CLCtGQUNqQixjQUFjLGdFQ3REL0QsMHlEQThEQSw0ZERuQ0ksY0FBYyxzREFDZCxnQkFBZ0Isd0RBQ2hCLGFBQWEsdUVBQ2IsYUFBYSxxREFDYixnQkFBZ0Isb0pBQ2hCLGdCQUFnQixpRkFDaEIsa0JBQWtCLDJEQUNsQiwwQkFBMEIsZ0hBQzFCLHFCQUFxQjs7MkZBT1osa0JBQWtCO2tCQWxCOUIsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7cUJBQ3RCLFlBQ1MsZ0JBQWdCLGNBQ2QsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgZWZmZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwJztcblxuaW1wb3J0IHsgQ2xlYXJTZWFyY2hCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NsZWFyLXNlYXJjaC1idXR0b24vY2xlYXItc2VhcmNoLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IEZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgSW5mb0NvbXBvbmVudCB9IGZyb20gJy4vaW5mbyc7XG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSwgSW5wdXRUeXBlIH0gZnJvbSAnLi9pbnB1dCc7XG5pbXBvcnQgeyBJbnB1dEljb25Db21wb25lbnQgfSBmcm9tICcuL2lucHV0LWljb24nO1xuaW1wb3J0IHsgTW9udGhJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbW9udGgtaW5wdXQnO1xuaW1wb3J0IHsgUGlja2VyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItYnV0dG9uL3BpY2tlci1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFN1Y2Nlc3NDb21wb25lbnQgfSBmcm9tICcuL3N1Y2Nlc3MnO1xuaW1wb3J0IHsgSU5QVVRfQ09OVEFJTkVSX0NMQVNTIH0gZnJvbSAnLi9mb3JtLWZpZWxkLmNvbnN0YW50JztcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgRXJyb3JDb21wb25lbnQsXG4gICAgU3VjY2Vzc0NvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIEluZm9Db21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIElucHV0SWNvbkNvbXBvbmVudCxcbiAgICBDbGVhclNlYXJjaEJ1dHRvbkNvbXBvbmVudCxcbiAgICBQaWNrZXJCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHNlbGVjdG9yOiAnbmR3LWZvcm0tZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VmZml4QXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBoaWRlTGFiZWwgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZXJyb3IgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzdWNjZXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5mbyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRvb2x0aXAgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRoSW5wdXQgPSBjb250ZW50Q2hpbGQoTW9udGhJbnB1dENvbXBvbmVudCk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZWd1bGFySW5wdXQgPSBjb250ZW50Q2hpbGQoSW5wdXREaXJlY3RpdmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlZ3VsYXJJbnB1dCgpID8/IHRoaXMubW9udGhJbnB1dCgpPy5pbnB1dCgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0VHlwZSA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuaW5wdXQoKT8uZWxlbWVudC50eXBlIGFzIElucHV0VHlwZSB8IHVuZGVmaW5lZCxcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU2VhcmNoSW5wdXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0VHlwZSgpID09PSBJbnB1dFR5cGUuU2VhcmNoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1BpY2tlckJ1dHRvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICB0aGlzLmlucHV0VHlwZSgpID09PSBJbnB1dFR5cGUuRGF0ZSB8fFxuICAgICAgdGhpcy5pbnB1dFR5cGUoKSA9PT0gSW5wdXRUeXBlLlRpbWUgfHxcbiAgICAgIHRoaXMuaW5wdXQoKT8uZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBGb3JtRmllbGRFbGVtZW50LlNlbGVjdCxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXVpZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXNjcmlwdGlvblV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRDb250YWluZXJDbGFzcyA9IElOUFVUX0NPTlRBSU5FUl9DTEFTUztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0SW5wdXREaXNhYmxlZFN0YXRlKGlucHV0KTtcbiAgICAgIHRoaXMuc2V0SW5wdXRFcnJvclN0YXRlKGlucHV0KTtcbiAgICAgIHRoaXMuc2V0SW5wdXRTdWNjZXNzU3RhdGUoaW5wdXQpO1xuICAgICAgdGhpcy5zZXRJbnB1dElkKGlucHV0KTtcbiAgICAgIHRoaXMuc2V0QXJpYURlc2NyaWJlZEJ5KGlucHV0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXREaXNhYmxlZFN0YXRlKGlucHV0OiBJbnB1dERpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGlucHV0LmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dEVycm9yU3RhdGUoaW5wdXQ6IElucHV0RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgaW5wdXQuZXJyb3IgPSAhIXRoaXMuZXJyb3IoKT8ubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dFN1Y2Nlc3NTdGF0ZShpbnB1dDogSW5wdXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBpbnB1dC5zdWNjZXNzID0gISF0aGlzLnN1Y2Nlc3MoKT8ubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dElkKGlucHV0OiBJbnB1dERpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGlucHV0LmlkID0gYGlucHV0LSR7dGhpcy51dWlkfWA7XG4gIH1cblxuICBwcml2YXRlIHNldEFyaWFEZXNjcmliZWRCeShpbnB1dDogSW5wdXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBpbnB1dC5hcmlhRGVzY3JpYmVkQnkgPSB0aGlzLmRlc2NyaXB0aW9uVXVpZDtcbiAgfVxufVxuIiwiQGlmIChpbnB1dCgpID09PSB1bmRlZmluZWQpIHtcbiAgPGZpZWxkc2V0PlxuICAgIDxsZWdlbmQgbmR3TGFiZWwgW2NsYXNzLnNyLW9ubHldPVwiaGlkZUxhYmVsKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlXCIgLz5cbiAgICA8L2xlZ2VuZD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZVwiIC8+XG4gIDwvZmllbGRzZXQ+XG59IEBlbHNlIHtcbiAgPGxhYmVsIG5kd0xhYmVsIFthdHRyLmZvcl09XCJpbnB1dCgpID8gJ2lucHV0LScgKyB1dWlkIDogbnVsbFwiIFtjbGFzcy5zci1vbmx5XT1cImhpZGVMYWJlbCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGVcIiAvPlxuICA8L2xhYmVsPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZVwiIC8+XG59XG5cbjxuZy10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIFtjbGFzc109XCJpbnB1dENvbnRhaW5lckNsYXNzXCJcbiAgICBbYXR0ci5zdWNjZXNzXT1cInN1Y2Nlc3MoKSA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5lcnJvcl09XCJlcnJvcigpID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgW2F0dHIucmVhZG9ubHldPVwiaW5wdXQoKT8uZWxlbWVudD8uaGFzQXR0cmlidXRlKCdyZWFkb25seScpID8gdHJ1ZSA6IG51bGxcIlxuICA+XG4gICAgQGlmIChpc1NlYXJjaElucHV0KCkpIHtcbiAgICAgIDxuZHctaW5wdXQtaWNvbj5zZWFyY2g8L25kdy1pbnB1dC1pY29uPlxuICAgIH1cblxuICAgIDxuZy1jb250ZW50IC8+XG5cbiAgICBAaWYgKGlzU2VhcmNoSW5wdXQoKSkge1xuICAgICAgPG5kdy1jbGVhci1zZWFyY2gtYnV0dG9uXG4gICAgICAgIFtpbnB1dF09XCJpbnB1dCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cInN1ZmZpeEFyaWFMYWJlbCgpXCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBpZiAoaGFzUGlja2VyQnV0dG9uKCkpIHtcbiAgICAgIDxuZHctcGlja2VyLWJ1dHRvblxuICAgICAgICBbaW5wdXRdPVwiaW5wdXQoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJzdWZmaXhBcmlhTGFiZWwoKVwiXG4gICAgICAvPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmIChpbmZvKCk7IGFzIGluZm8pIHtcbiAgICA8bmR3LWluZm8gW2lkXT1cImRlc2NyaXB0aW9uVXVpZFwiPnt7IGluZm8gfX08L25kdy1pbmZvPlxuICB9XG4gIEBpZiAoZXJyb3IoKTsgYXMgZXJyb3IpIHtcbiAgICA8bmR3LWVycm9yIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGVycm9yIH19PC9uZHctZXJyb3I+XG4gIH1cbiAgQGlmIChzdWNjZXNzKCk7IGFzIHN1Y2Nlc3MpIHtcbiAgICA8bmR3LXN1Y2Nlc3Mgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwicG9saXRlXCI+e3sgc3VjY2VzcyB9fTwvbmR3LXN1Y2Nlc3M+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1sYWJlbCByZXF1aXJlZFwiPiAqIDwvc3Bhbj5cbiAge3sgbGFiZWwoKSB9fVxuICBAaWYgKHRvb2x0aXAoKTsgYXMgdG9vbHRpcCkge1xuICAgIDxuZHctaWNvbiBbbmR3VG9vbHRpcF09XCJ0b29sdGlwXCI+aW5mbzwvbmR3LWljb24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export const INPUT_CONTAINER_CLASS = 'input-container';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSU5QVVRfQ09OVEFJTkVSX0NMQVNTID0gJ2lucHV0LWNvbnRhaW5lcic7XG4iXX0=
@@ -1,3 +1,4 @@
1
+ export * from './autosuggest';
1
2
  export * from './checkbox';
2
3
  export * from './checkbox-group';
3
4
  export * from './error';
@@ -6,9 +7,11 @@ export * from './form-field.component';
6
7
  export * from './form-field.model';
7
8
  export * from './info';
8
9
  export * from './input';
10
+ export * from './input-button';
11
+ export * from './input-icon';
9
12
  export * from './month-input';
10
13
  export * from './option-group';
11
14
  export * from './radio-button';
12
15
  export * from './radio-group';
13
16
  export * from './textarea';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gtZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdXBsb2FkJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vaW5mbyc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbW9udGgtaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb24tZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhJztcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0b3N1Z2dlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94LWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2luZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LWljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9tb250aC1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL29wdGlvbi1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3JhZGlvLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL3JhZGlvLWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEnO1xuIl19
@@ -1,11 +1,11 @@
1
- import { Component } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class InfoComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: InfoComponent, isStandalone: true, selector: "ndw-info", ngImport: i0, template: "<ng-content />\n", styles: [":host{align-items:center;color:var(--ndw-color-grey-500);display:grid;font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-xs)}\n"] }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: InfoComponent, isStandalone: true, selector: "ndw-info", ngImport: i0, template: "<ng-content />\n", styles: [":host{align-items:center;color:var(--ndw-color-grey-500);display:grid;font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-xs);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: InfoComponent, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: InfoComponent, decorators: [{
8
8
  type: Component,
9
- args: [{ selector: 'ndw-info', standalone: true, imports: [], template: "<ng-content />\n", styles: [":host{align-items:center;color:var(--ndw-color-grey-500);display:grid;font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-xs)}\n"] }]
9
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ndw-info', standalone: true, template: "<ng-content />\n", styles: [":host{align-items:center;color:var(--ndw-color-grey-500);display:grid;font-family:var(--ndw-font-family-body);font-size:var(--ndw-font-size-xs);word-break:break-word}\n"] }]
10
10
  }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9pbmZvL2luZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5mby9pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzFDLE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7a0dBQWIsYUFBYSxvRUNUMUIsa0JBQ0E7OzJGRFFhLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUCxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25kdy1pbmZvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2luZm8uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZvQ29tcG9uZW50IHt9XG4iLCI8bmctY29udGVudCAvPlxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9pbmZvL2luZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5mby9pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU25FLE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7a0dBQWIsYUFBYSxvRUNUMUIsa0JBQ0E7OzJGRFFhLGFBQWE7a0JBUHpCLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxVQUFVLGNBQ1IsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzZWxlY3RvcjogJ25kdy1pbmZvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2luZm8uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEluZm9Db21wb25lbnQge31cbiIsIjxuZy1jb250ZW50IC8+XG4iXX0=