@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.
- package/assets/images/dashboard-card-icons/contact.png +0 -0
- package/assets/images/dashboard-card-icons/faq.png +0 -0
- package/assets/images/dashboard-card-icons/manual.png +0 -0
- package/components/alert/alert.component.d.ts +2 -5
- package/components/alert/alert.model.d.ts +0 -1
- package/components/banner/banner.component.d.ts +38 -0
- package/components/banner/banner.model.d.ts +4 -0
- package/components/banner/index.d.ts +2 -0
- package/components/breadcrumb-group/breadcrumb-group.component.d.ts +1 -1
- package/components/card/index.d.ts +2 -2
- package/components/collapsible/collapsible.component.d.ts +0 -1
- package/components/dashboard-card/dashboard-card.component.d.ts +22 -0
- package/components/dashboard-card/index.d.ts +1 -0
- package/components/dropdown/dropdown.component.d.ts +4 -4
- package/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.d.ts +8 -0
- package/components/form-field/autosuggest/autosuggest-add-option/index.d.ts +1 -0
- package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.d.ts +19 -0
- package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.d.ts +2 -0
- package/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.d.ts +27 -0
- package/components/form-field/autosuggest/autosuggest-option/index.d.ts +2 -0
- package/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.d.ts +39 -0
- package/components/form-field/autosuggest/autosuggest.directive.d.ts +72 -0
- package/components/form-field/autosuggest/index.d.ts +5 -0
- package/components/form-field/autosuggest/match-bold.pipe.d.ts +7 -0
- package/components/form-field/checkbox/checkbox.component.d.ts +0 -3
- package/components/form-field/clear-search-button/clear-search-button.component.d.ts +15 -0
- package/components/form-field/file-upload/file-upload.component.d.ts +4 -11
- package/components/form-field/form-field.component.d.ts +19 -23
- package/components/form-field/form-field.constant.d.ts +1 -0
- package/components/form-field/index.d.ts +3 -0
- package/components/form-field/input/input.directive.d.ts +0 -1
- package/components/form-field/input-button/index.d.ts +1 -0
- package/components/form-field/input-button/input-button.component.d.ts +12 -0
- package/components/form-field/input-icon/index.d.ts +1 -0
- package/components/form-field/input-icon/input-icon.component.d.ts +5 -0
- package/components/form-field/picker-button/picker-button.component.d.ts +14 -0
- package/components/form-field/radio-button/radio-button.component.d.ts +0 -2
- package/components/form-field/radio-group/radio-group.component.d.ts +0 -1
- package/components/icon/icon.component.d.ts +1 -0
- package/components/index.d.ts +7 -2
- package/components/layout/index.d.ts +1 -0
- package/components/layout/layout.component.d.ts +11 -0
- package/components/layout-banners/index.d.ts +1 -0
- package/components/layout-banners/layout-banners.component.d.ts +5 -0
- package/components/loader/index.d.ts +1 -0
- package/components/loader/loader.component.d.ts +5 -0
- package/components/main-navigation/main-navigation.component.d.ts +8 -6
- package/components/main-navigation/main-navigation.imports.d.ts +1 -1
- package/components/main-navigation/main-navigation.model.d.ts +1 -0
- package/components/main-navigation-menu/main-navigation-menu.component.d.ts +2 -2
- package/components/modal/index.d.ts +0 -1
- package/components/modal/modal-header/modal-header.component.d.ts +1 -1
- package/components/modal/modal-ref.d.ts +3 -0
- package/components/modal/modal.component.d.ts +0 -3
- package/components/modal/modal.service.d.ts +13 -11
- package/components/pill/pill.component.d.ts +1 -3
- package/components/tab/tab.component.d.ts +0 -3
- package/components/tab-group/tab-group.component.d.ts +1 -2
- package/components/tag/index.d.ts +1 -0
- package/components/tag/tag.component.d.ts +18 -0
- package/core/{styles/ndw-styles.scss → style/styles.css} +495 -219
- package/core/{styles/nwb-styles.scss → style/styles.scss} +526 -218
- package/esm2022/components/accordion/accordion.component.mjs +8 -8
- package/esm2022/components/accordion/accordion.service.mjs +3 -3
- package/esm2022/components/alert/alert.component.mjs +12 -29
- package/esm2022/components/alert/alert.model.mjs +1 -1
- package/esm2022/components/badge/badge.component.mjs +6 -6
- package/esm2022/components/banner/banner.component.mjs +61 -0
- package/esm2022/components/banner/banner.model.mjs +6 -0
- package/esm2022/components/banner/index.mjs +3 -0
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +6 -6
- package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +10 -10
- package/esm2022/components/button/button.directive.mjs +3 -3
- package/esm2022/components/card/card-content/card-content.component.mjs +6 -6
- package/esm2022/components/card/card-footer/card-footer.component.mjs +6 -6
- package/esm2022/components/card/card-header/card-header.component.mjs +6 -7
- package/esm2022/components/card/card.component.mjs +6 -6
- package/esm2022/components/collapsible/collapsible.component.mjs +9 -14
- package/esm2022/components/dashboard-card/dashboard-card.component.mjs +32 -0
- package/esm2022/components/dashboard-card/index.mjs +2 -0
- package/esm2022/components/dropdown/dropdown.component.mjs +11 -18
- package/esm2022/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.mjs +29 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-add-option/index.mjs +2 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.mjs +45 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.mjs +2 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.mjs +85 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-option/index.mjs +3 -0
- package/esm2022/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.mjs +82 -0
- package/esm2022/components/form-field/autosuggest/autosuggest.directive.mjs +411 -0
- package/esm2022/components/form-field/autosuggest/index.mjs +6 -0
- package/esm2022/components/form-field/autosuggest/match-bold.pipe.mjs +21 -0
- package/esm2022/components/form-field/checkbox/checkbox.component.mjs +13 -27
- package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +6 -6
- package/esm2022/components/form-field/clear-search-button/clear-search-button.component.mjs +37 -0
- package/esm2022/components/form-field/error/error.component.mjs +6 -6
- package/esm2022/components/form-field/file-upload/file-upload.component.mjs +48 -93
- package/esm2022/components/form-field/form-field.component.mjs +25 -76
- package/esm2022/components/form-field/form-field.constant.mjs +2 -0
- package/esm2022/components/form-field/index.mjs +4 -1
- package/esm2022/components/form-field/info/info.component.mjs +6 -6
- package/esm2022/components/form-field/input/input.directive.mjs +5 -11
- package/esm2022/components/form-field/input-button/index.mjs +2 -0
- package/esm2022/components/form-field/input-button/input-button.component.mjs +23 -0
- package/esm2022/components/form-field/input-icon/index.mjs +2 -0
- package/esm2022/components/form-field/input-icon/input-icon.component.mjs +12 -0
- package/esm2022/components/form-field/month-input/month-input.component.mjs +8 -9
- package/esm2022/components/form-field/option-group/option-group.component.mjs +6 -6
- package/esm2022/components/form-field/option-group/option.component.mjs +5 -6
- package/esm2022/components/form-field/picker-button/picker-button.component.mjs +45 -0
- package/esm2022/components/form-field/radio-button/radio-button.component.mjs +12 -22
- package/esm2022/components/form-field/radio-group/radio-group.component.mjs +11 -13
- package/esm2022/components/form-field/success/success.component.mjs +6 -6
- package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +3 -3
- package/esm2022/components/icon/action-icon/action-icon.component.mjs +5 -5
- package/esm2022/components/icon/icon.component.mjs +15 -10
- package/esm2022/components/index.mjs +8 -3
- package/esm2022/components/layout/index.mjs +2 -0
- package/esm2022/components/layout/layout.component.mjs +20 -0
- package/esm2022/components/layout-banners/index.mjs +2 -0
- package/esm2022/components/layout-banners/layout-banners.component.mjs +11 -0
- package/esm2022/components/loader/index.mjs +2 -0
- package/esm2022/components/loader/loader.component.mjs +11 -0
- package/esm2022/components/main-navigation/main-navigation.component.mjs +52 -48
- package/esm2022/components/main-navigation/main-navigation.model.mjs +1 -1
- package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +9 -9
- package/esm2022/components/modal/index.mjs +1 -4
- package/esm2022/components/modal/modal-content/modal-content.component.mjs +6 -6
- package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +6 -6
- package/esm2022/components/modal/modal-header/modal-header.component.mjs +9 -11
- package/esm2022/components/modal/modal-ref.mjs +4 -0
- package/esm2022/components/modal/modal.component.mjs +10 -23
- package/esm2022/components/modal/modal.service.mjs +20 -41
- package/esm2022/components/multi-select/multi-select.component.mjs +10 -12
- package/esm2022/components/pill/pill.component.mjs +12 -20
- package/esm2022/components/popover/popover-trigger.directive.mjs +9 -9
- package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +6 -6
- package/esm2022/components/tab/tab.component.mjs +13 -29
- package/esm2022/components/tab-group/tab-group.component.mjs +10 -12
- package/esm2022/components/tag/index.mjs +2 -0
- package/esm2022/components/tag/tag.component.mjs +29 -0
- package/esm2022/components/toast/toast.component.mjs +6 -6
- package/esm2022/components/toast/toast.service.mjs +4 -4
- package/esm2022/components/tooltip/tooltip.component.mjs +7 -7
- package/esm2022/components/tooltip/tooltip.directive.mjs +10 -16
- package/esm2022/models/aria.model.mjs +2 -0
- package/esm2022/models/index.mjs +2 -0
- package/fesm2022/ndwnu-design-system.mjs +1279 -660
- package/fesm2022/ndwnu-design-system.mjs.map +1 -1
- package/models/aria.model.d.ts +1 -0
- package/models/index.d.ts +1 -0
- package/package.json +1 -1
- package/components/modal/modal-trigger.directive.d.ts +0 -16
- package/components/removable-pill/index.d.ts +0 -1
- package/components/removable-pill/removable-pill.component.d.ts +0 -14
- package/esm2022/components/modal/modal-trigger.directive.mjs +0 -46
- package/esm2022/components/removable-pill/index.mjs +0 -2
- package/esm2022/components/removable-pill/removable-pill.component.mjs +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component,
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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.
|
|
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
|
-
|
|
151
|
-
|
|
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.
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
169
149
|
type: Component,
|
|
170
|
-
args: [{
|
|
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
|
-
}]
|
|
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 {
|
|
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.
|
|
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.
|
|
30
|
-
this.
|
|
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
|
-
|
|
92
|
-
|
|
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.
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
120
68
|
type: Component,
|
|
121
|
-
args: [{
|
|
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
|
-
|
|
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,
|
|
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.
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.
|
|
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.
|
|
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,
|
|
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,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9pbmZvL2luZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5mby9pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU25FLE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7a0dBQWIsYUFBYSxvRUNUMUIsa0JBQ0E7OzJGRFFhLGFBQWE7a0JBUHpCLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxVQUFVLGNBQ1IsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzZWxlY3RvcjogJ25kdy1pbmZvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2luZm8uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEluZm9Db21wb25lbnQge31cbiIsIjxuZy1jb250ZW50IC8+XG4iXX0=
|