@ardium-ui/ui 4.1.2 → 4.2.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/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +1 -1
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +8 -14
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +4 -3
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +5 -4
- package/esm2022/lib/file-inputs/file-input-base.mjs +168 -5
- package/esm2022/lib/file-inputs/file-input-types.mjs +8 -2
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +1 -1
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +5 -5
- package/esm2022/lib/inputs/input/input.component.mjs +1 -1
- package/esm2022/lib/inputs/input/input.module.mjs +5 -5
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +1 -1
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +5 -5
- package/esm2022/lib/select/select.component.mjs +3 -3
- package/esm2022/lib/select/select.module.mjs +10 -10
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +2 -2
- package/fesm2022/ardium-ui-ui.mjs +208 -44
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +1 -1
- package/lib/file-inputs/file-input/file-input.module.d.ts +2 -1
- package/lib/file-inputs/file-input-base.d.ts +20 -2
- package/lib/file-inputs/file-input-types.d.ts +31 -0
- package/lib/inputs/date-input/date-input.module.d.ts +1 -1
- package/lib/inputs/input/input.module.d.ts +1 -1
- package/lib/inputs/number-input/number-input.module.d.ts +1 -1
- package/lib/select/select.module.d.ts +1 -1
- package/package.json +2 -2
- package/prebuilt-themes/default/inputs/file-input.css +23 -2
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/themes/default/inputs/file-input.scss +23 -2
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Directive, Input, input, output, signal, viewChild } from '@angular/core';
|
|
2
|
-
import { coerceBooleanProperty } from '@ardium-ui/devkit';
|
|
1
|
+
import { computed, Directive, inject, Input, input, output, signal, viewChild, } from '@angular/core';
|
|
2
|
+
import { coerceBooleanProperty, coerceNumberProperty, FileSystemMethod, FileSystemService, } from '@ardium-ui/devkit';
|
|
3
3
|
import { isDefined } from 'simple-bool';
|
|
4
4
|
import { _FormFieldComponentBase } from '../_internal/form-field-component';
|
|
5
|
+
import { FileInputFailedUploadReason } from './file-input-types';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
7
8
|
constructor() {
|
|
8
9
|
super(...arguments);
|
|
10
|
+
this._fileSystemService = inject(FileSystemService);
|
|
9
11
|
this.fileInputEl = viewChild('fileInput');
|
|
10
12
|
this.name = input('');
|
|
11
13
|
this._wasViewInit = false;
|
|
@@ -13,12 +15,57 @@ export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
13
15
|
this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
14
16
|
//! settings
|
|
15
17
|
this.multiple = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
18
|
+
this.maxFiles = input(null, { transform: v => coerceNumberProperty(v, null) });
|
|
19
|
+
this.maxFilesWithMultiple = computed(() => (this.multiple() ? this.maxFiles() ?? Infinity : 1));
|
|
16
20
|
this.blockAfterUpload = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
21
|
+
this.maxFileSizeBytes = input(null, { transform: v => coerceNumberProperty(v, null) });
|
|
22
|
+
this.accept = input('*');
|
|
23
|
+
this.directoryId = input(undefined);
|
|
24
|
+
this.startDirectory = input(undefined);
|
|
25
|
+
this.fileTypes = input(undefined);
|
|
26
|
+
this.acceptString = computed(() => {
|
|
27
|
+
const types = this.fileTypes();
|
|
28
|
+
if (types) {
|
|
29
|
+
const acceptEntries = [];
|
|
30
|
+
for (const type of types) {
|
|
31
|
+
if (type.accept) {
|
|
32
|
+
for (const mimeType in type.accept) {
|
|
33
|
+
const extensions = type.accept[mimeType];
|
|
34
|
+
if (extensions && extensions.length > 0) {
|
|
35
|
+
acceptEntries.push(...extensions);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return acceptEntries.join(',');
|
|
41
|
+
}
|
|
42
|
+
const accept = this.accept();
|
|
43
|
+
if (Array.isArray(accept)) {
|
|
44
|
+
return accept.join(',');
|
|
45
|
+
}
|
|
46
|
+
return accept;
|
|
47
|
+
});
|
|
48
|
+
this.acceptedMimeTypes = computed(() => {
|
|
49
|
+
const types = this.fileTypes();
|
|
50
|
+
if (types) {
|
|
51
|
+
const mimeTypes = [];
|
|
52
|
+
for (const type of types) {
|
|
53
|
+
if (type.accept) {
|
|
54
|
+
for (const mimeType in type.accept) {
|
|
55
|
+
mimeTypes.push({ mimeType, extensions: new Set(type.accept[mimeType]) });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return mimeTypes;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
});
|
|
17
63
|
//! value
|
|
18
64
|
this._value = null;
|
|
19
65
|
this.valueChange = output();
|
|
20
66
|
this.changeEvent = output({ alias: 'change' });
|
|
21
67
|
this.dragFilesEvent = output({ alias: 'dragFiles' });
|
|
68
|
+
this.failedUploadEvent = output({ alias: 'failedUpload' });
|
|
22
69
|
this._valueBeforeInit = null;
|
|
23
70
|
//! temporary value
|
|
24
71
|
//for drag event handling
|
|
@@ -84,6 +131,34 @@ export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
84
131
|
this.changeEvent.emit(v);
|
|
85
132
|
}
|
|
86
133
|
openBrowseDialog() {
|
|
134
|
+
if (this._fileSystemService.isFileSystemAPISupported('showOpenFilePicker') &&
|
|
135
|
+
(this.directoryId() || this.startDirectory() || this.fileTypes())) {
|
|
136
|
+
this._fileSystemService
|
|
137
|
+
.requestFileUpload({
|
|
138
|
+
method: FileSystemMethod.PreferFileSystem,
|
|
139
|
+
multiple: this.multiple(),
|
|
140
|
+
directoryId: this.directoryId() ?? undefined,
|
|
141
|
+
startDirectory: this.startDirectory() ?? undefined,
|
|
142
|
+
types: this.fileTypes() ?? undefined,
|
|
143
|
+
accept: this.accept() === '*' ? undefined : this.accept(),
|
|
144
|
+
})
|
|
145
|
+
.then(fileOrFiles => {
|
|
146
|
+
if (!fileOrFiles) {
|
|
147
|
+
this._writeValue(null);
|
|
148
|
+
this.currentViewState.set('idle');
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
|
|
152
|
+
if (files.length === 0) {
|
|
153
|
+
this._writeValue(null);
|
|
154
|
+
this.currentViewState.set('idle');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this._writeValue(files);
|
|
158
|
+
this.currentViewState.set('uploaded');
|
|
159
|
+
});
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
87
162
|
this.fileInputEl()?.nativeElement.click();
|
|
88
163
|
}
|
|
89
164
|
//! event handlers
|
|
@@ -124,8 +199,75 @@ export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
124
199
|
this.currentViewState.set('idle');
|
|
125
200
|
return;
|
|
126
201
|
}
|
|
202
|
+
const filteredFiles = [];
|
|
203
|
+
const failedFiles = [];
|
|
204
|
+
const acceptedMimeTypes = this.acceptedMimeTypes();
|
|
205
|
+
if (acceptedMimeTypes) {
|
|
206
|
+
let mimeTypeMatched = false;
|
|
207
|
+
fileLoop: for (const file of files) {
|
|
208
|
+
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
209
|
+
if (!shouldAccept) {
|
|
210
|
+
failedFiles.push({ file, reason: reason });
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
mimeTypeMatched = false;
|
|
214
|
+
for (const mimeTypeObj of acceptedMimeTypes) {
|
|
215
|
+
if (isMimeTypeMatching(file, mimeTypeObj.mimeType)) {
|
|
216
|
+
mimeTypeMatched = true;
|
|
217
|
+
const extension = '.' + file.name.split('.').pop()?.toLowerCase();
|
|
218
|
+
if (mimeTypeObj.extensions.size === 0 || mimeTypeObj.extensions.has('*') || mimeTypeObj.extensions.has(extension)) {
|
|
219
|
+
filteredFiles.push(file);
|
|
220
|
+
continue fileLoop;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (!mimeTypeMatched) {
|
|
225
|
+
failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidMimeType });
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
failedFiles.push({ file, reason: FileInputFailedUploadReason.MimeTypeFoundButExtensionNotAllowed });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const accept = this.accept();
|
|
234
|
+
let acceptEntries = [];
|
|
235
|
+
if (Array.isArray(accept)) {
|
|
236
|
+
acceptEntries = accept.map(e => e.trim().toLowerCase());
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
acceptEntries = accept.split(',').map(e => e.trim().toLowerCase());
|
|
240
|
+
}
|
|
241
|
+
if (typeof accept === 'string' && accept === '*') {
|
|
242
|
+
for (const file of files) {
|
|
243
|
+
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
244
|
+
if (!shouldAccept) {
|
|
245
|
+
failedFiles.push({ file, reason: reason });
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
fileLoop: for (const file of files) {
|
|
251
|
+
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
252
|
+
if (!shouldAccept) {
|
|
253
|
+
failedFiles.push({ file, reason: reason });
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
const extension = '.' + file.name.split('.').at(-1)?.toLowerCase();
|
|
257
|
+
for (const entry of acceptEntries) {
|
|
258
|
+
if (extension === entry) {
|
|
259
|
+
filteredFiles.push(file);
|
|
260
|
+
continue fileLoop;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidExtension });
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
this.dragFilesEvent.emit(filteredFiles);
|
|
268
|
+
this.failedUploadEvent.emit(failedFiles);
|
|
127
269
|
this.currentViewState.set('uploaded');
|
|
128
|
-
this._writeValue(
|
|
270
|
+
this._writeValue(filteredFiles.length > 0 ? filteredFiles : null);
|
|
129
271
|
}
|
|
130
272
|
onInputChange() {
|
|
131
273
|
const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);
|
|
@@ -138,6 +280,18 @@ export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
138
280
|
this.currentViewState.set('uploaded');
|
|
139
281
|
}
|
|
140
282
|
//! helpers
|
|
283
|
+
_filterFilesBasedOnSizeAndCount(file, existingFileCount) {
|
|
284
|
+
// check count
|
|
285
|
+
if (existingFileCount >= this.maxFilesWithMultiple()) {
|
|
286
|
+
return { shouldAccept: false, reason: FileInputFailedUploadReason.TooManyFiles };
|
|
287
|
+
}
|
|
288
|
+
// check size
|
|
289
|
+
if (file.size > 0 && this.maxFileSizeBytes() !== null && file.size > this.maxFileSizeBytes()) {
|
|
290
|
+
return { shouldAccept: false, reason: FileInputFailedUploadReason.FileTooBig };
|
|
291
|
+
}
|
|
292
|
+
// all good
|
|
293
|
+
return { shouldAccept: true };
|
|
294
|
+
}
|
|
141
295
|
_countDragenterFiles(data) {
|
|
142
296
|
if (!data)
|
|
143
297
|
return null;
|
|
@@ -159,11 +313,20 @@ export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
159
313
|
inputEl.files = dataTransfer.files;
|
|
160
314
|
}
|
|
161
315
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
162
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FileInputComponentBase, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, blockAfterUpload: { classPropertyName: "blockAfterUpload", publicName: "blockAfterUpload", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change", dragFilesEvent: "dragFiles" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
316
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FileInputComponentBase, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, maxFiles: { classPropertyName: "maxFiles", publicName: "maxFiles", isSignal: true, isRequired: false, transformFunction: null }, blockAfterUpload: { classPropertyName: "blockAfterUpload", publicName: "blockAfterUpload", isSignal: true, isRequired: false, transformFunction: null }, maxFileSizeBytes: { classPropertyName: "maxFileSizeBytes", publicName: "maxFileSizeBytes", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, directoryId: { classPropertyName: "directoryId", publicName: "directoryId", isSignal: true, isRequired: false, transformFunction: null }, startDirectory: { classPropertyName: "startDirectory", publicName: "startDirectory", isSignal: true, isRequired: false, transformFunction: null }, fileTypes: { classPropertyName: "fileTypes", publicName: "fileTypes", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change", dragFilesEvent: "dragFiles", failedUploadEvent: "failedUpload" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
163
317
|
}
|
|
164
318
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, decorators: [{
|
|
165
319
|
type: Directive
|
|
166
320
|
}], propDecorators: { value: [{
|
|
167
321
|
type: Input
|
|
168
322
|
}] } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUk1RSxNQUFNLE9BQWdCLHVCQUF3QixTQUFRLHVCQUF1QjtJQUQ3RTs7UUFNVyxnQkFBVyxHQUFHLFNBQVMsQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFFbkUsU0FBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQVl4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQU8vQixjQUFjO1FBQ0wsWUFBTyxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUYsWUFBWTtRQUNILGFBQVEsR0FBRyxLQUFLLENBQWUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLHFCQUFnQixHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFNckcsU0FBUztRQUNDLFdB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QUM7K0dBdExtQix1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFENUMsU0FBUzs4QkF5Q0osS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9ybS1maWVsZC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBfRmlsZUlucHV0QmFzZURlZmF1bHRzIH0gZnJvbSAnLi9maWxlLWlucHV0LWJhc2UuZGVmYXVsdHMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRmlsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0ZpbGVJbnB1dEJhc2VEZWZhdWx0cztcclxuXHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tcG9uZW50SWQ6IHN0cmluZztcclxuXHJcbiAgcmVhZG9ubHkgZmlsZUlucHV0RWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2ZpbGVJbnB1dCcpO1xyXG5cclxuICByZWFkb25seSBuYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIGlmICghKHdpbmRvdy5GaWxlICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5CbG9iKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgIGBBUkQtRlQke3RoaXMuY29tcG9uZW50SWR9MDogQ2Fubm90IHVzZSBBcmRpdW0gVUkgZmlsZSBmZWF0dXJlcyBiZWNhdXNlIHRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgaGFuZGxpbmchYFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvdGVjdGVkIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLl91cGRhdGVFbGVtZW50VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgLy8hIHNldHRpbmdzXHJcbiAgcmVhZG9ubHkgbXVsdGlwbGUgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgYmxvY2tBZnRlclVwbG9hZCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgZ2V0IHNob3VsZEJlQmxvY2tlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJsb2NrQWZ0ZXJVcGxvYWQoKSAmJiBpc0RlZmluZWQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWVcclxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBGaWxlW10gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZSgpOiBGaWxlW10gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxGaWxlW10gfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xyXG4gIHJlYWRvbmx5IGRyYWdGaWxlc0V2ZW50ID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KHsgYWxpYXM6ICdkcmFnRmlsZXMnIH0pO1xyXG5cclxuICBwcm90ZWN0ZWQgX3ZhbHVlQmVmb3JlSW5pdDogRmlsZVtdIHwgbnVsbCA9IG51bGw7XHJcbiAgd3JpdGVWYWx1ZSh2OiBGaWxlIHwgRmlsZVtdIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZSh2LCBmYWxzZSk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfd3JpdGVWYWx1ZSh2OiBGaWxlIHwgRmlsZVtdIHwgbnVsbCwgZW1pdEV2ZW50cyA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmICghKHYgaW5zdGFuY2VvZiBGaWxlKSAmJiAhQXJyYXkuaXNBcnJheSh2KSAmJiB2ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IobmV3IEVycm9yKGBBUkQtRlQke3RoaXMuY29tcG9uZW50SWR9MTogPGFyZC1maWxlLWlucHV0PidzIHZhbHVlIG11c3QgYmUgYSBGaWxlLCBhbiBhcnJheSBvZiBGaWxlcywgb3IgbnVsbC5gKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh2IGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICB2ID0gW3ZdO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgIXRoaXMubXVsdGlwbGUoKSAmJiB2Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuY29tcG9uZW50SWR9MjogPGFyZC1maWxlLWlucHV0PiByZWNlaXZlZCBhbiBhcnJheSBvZiBmaWxlcyBidXQgdGhlICdtdWx0aXBsZScgaW5wdXQgaXMgbm90IHNldCB0byB0cnVlLiBPbmx5IHRoZSBmaXJzdCBmaWxlIHdpbGwgYmUgdXNlZC5gXHJcbiAgICAgICk7XHJcbiAgICAgIHYgPSBbdlswXV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xyXG5cclxuICAgIGlmICh0aGlzLl93YXNWaWV3SW5pdCkgdGhpcy5fdXBkYXRlRWxlbWVudFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKGVtaXRFdmVudHMpIHtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh2KTtcclxuICB9XHJcblxyXG4gIG9wZW5Ccm93c2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8vISB0ZW1wb3JhcnkgdmFsdWVcclxuICAvL2ZvciBkcmFnIGV2ZW50IGhhbmRsaW5nXHJcbiAgcHJvdGVjdGVkIF9kcmFnZ2VkRmlsZXM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyEgdmlldyBzdGF0ZVxyXG4gIHJlYWRvbmx5IGN1cnJlbnRWaWV3U3RhdGUgPSBzaWduYWw8J2lkbGUnIHwgJ2RyYWdvdmVyJyB8ICd1cGxvYWRlZCc+KCdpZGxlJyk7XHJcbiAgcHJpdmF0ZSBfYmVmb3JlRHJhZ292ZXJTdGF0ZTogJ2lkbGUnIHwgJ3VwbG9hZGVkJyA9ICdpZGxlJztcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25EcmFnb3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSB7XHJcbiAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyKSByZXR1cm47XHJcblxyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpID09PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fZHJhZ2dlZEZpbGVzID0gdGhpcy5fY291bnREcmFnZW50ZXJGaWxlcyhldmVudC5kYXRhVHJhbnNmZXIpO1xyXG5cclxuICAgIGlmICghdGhpcy5fZHJhZ2dlZEZpbGVzKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fYmVmb3JlRHJhZ292ZXJTdGF0ZSA9IHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpIGFzICdpZGxlJyB8ICd1cGxvYWRlZCc7XHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuICBvbkRyYWdsZWF2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZEJlQmxvY2tlZCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpICE9PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCh0aGlzLl9iZWZvcmVEcmFnb3ZlclN0YXRlKTtcclxuICB9XHJcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZmlsZWxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xyXG4gICAgaWYgKCFmaWxlbGlzdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlbGlzdCk7XHJcbiAgICBpZiAoIWZpbGVzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ3VwbG9hZGVkJyk7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKGZpbGVzKTtcclxuICB9XHJcbiAgb25JbnB1dENoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuZmlsZXMgPz8gW10pO1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLl93cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dyaXRlVmFsdWUoZmlsZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgndXBsb2FkZWQnKTtcclxuICB9XHJcblxyXG4gIC8vISBoZWxwZXJzXHJcbiAgcHJvdGVjdGVkIF9jb3VudERyYWdlbnRlckZpbGVzKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGF0YS5pdGVtcykuZmlsdGVyKGl0ZW0gPT4gaXRlbS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdXBkYXRlRWxlbWVudFZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcblxyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuZmlsZUlucHV0RWwoKT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaW5wdXRFbCkgcmV0dXJuO1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIGlucHV0RWwuZmlsZXMgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHYpIHtcclxuICAgICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKTtcclxuICAgIH1cclxuICAgIGlucHV0RWwuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
323
|
+
function isMimeTypeMatching(file, mimeType) {
|
|
324
|
+
if (mimeType === '*')
|
|
325
|
+
return true;
|
|
326
|
+
if (mimeType.endsWith('/*')) {
|
|
327
|
+
const prefix = mimeType.slice(0, -2);
|
|
328
|
+
return file.type.startsWith(prefix);
|
|
329
|
+
}
|
|
330
|
+
return file.type === mimeType;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHNUUsT0FBTyxFQUF5QiwyQkFBMkIsRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx1QkFBdUI7SUFEN0U7O1FBSW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBSXZELGdCQUFXLEdBQUcsU0FBUyxDQUErQixXQUFXLENBQUMsQ0FBQztRQUVuRSxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBWXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTy9CLGNBQWM7UUFDTCxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1RixZQUFZO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxD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LENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDOytHQS9WbUIsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRDVDLFNBQVM7OEJBK0ZKLEtBQUs7c0JBRFIsS0FBSzs7QUFxUVIsU0FBUyxrQkFBa0IsQ0FBQyxJQUFVLEVBQUUsUUFBZ0I7SUFDdEQsSUFBSSxRQUFRLEtBQUssR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2xDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIGNvbXB1dGVkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBpbnB1dCxcclxuICBPbkluaXQsXHJcbiAgb3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5LFxyXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxyXG4gIEZpbGVTeXN0ZW1NZXRob2QsXHJcbiAgRmlsZVN5c3RlbVNlcnZpY2UsXHJcbiAgRmlsZVN5c3RlbVN0YXJ0RGlyZWN0b3J5LFxyXG59IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IF9GaWxlSW5wdXRCYXNlRGVmYXVsdHMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtYmFzZS5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEZpbGVJbnB1dEZhaWxlZFVwbG9hZCwgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLCBGaWxlSW5wdXRGaWxlVHlwZXMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtdHlwZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRmlsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0ZpbGVJbnB1dEJhc2VEZWZhdWx0cztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZVN5c3RlbVNlcnZpY2UgPSBpbmplY3QoRmlsZVN5c3RlbVNlcnZpY2UpO1xyXG5cclxuICBhYnN0cmFjdCByZWFkb25seSBjb21wb25lbnRJZDogc3RyaW5nO1xyXG5cclxuICByZWFkb25seSBmaWxlSW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZmlsZUlucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IG5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgaWYgKCEod2luZG93LkZpbGUgJiYgd2luZG93LkZpbGVSZWFkZXIgJiYgd2luZG93LkJsb2IpKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0wOiBDYW5ub3QgdXNlIEFyZGl1bSBVSSBmaWxlIGZlYXR1cmVzIGJlY2F1c2UgdGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBoYW5kbGluZyFgXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm90ZWN0ZWQgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd2FzVmlld0luaXQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgc2V0dGluZ3NcclxuICByZWFkb25seSBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBtYXhGaWxlcyA9IGlucHV0PE51bGxhYmxlPG51bWJlcj4sIGFueT4obnVsbCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgbnVsbCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVzV2l0aE11bHRpcGxlID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiAodGhpcy5tdWx0aXBsZSgpID8gdGhpcy5tYXhGaWxlcygpID8/IEluZmluaXR5IDogMSkpO1xyXG5cclxuICByZWFkb25seSBibG9ja0FmdGVyVXBsb2FkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBnZXQgc2hvdWxkQmVCbG9ja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmxvY2tBZnRlclVwbG9hZCgpICYmIGlzRGVmaW5lZCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplQnl0ZXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KG51bGwsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIG51bGwpIH0pO1xyXG5cclxuICByZWFkb25seSBhY2NlcHQgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJyonKTtcclxuICByZWFkb25seSBkaXJlY3RvcnlJZCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgc3RhcnREaXJlY3RvcnkgPSBpbnB1dDxOdWxsYWJsZTxGaWxlU3lzdGVtU3RhcnREaXJlY3Rvcnk+Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGZpbGVUeXBlcyA9IGlucHV0PE51bGxhYmxlPEZpbGVJbnB1dEZpbGVUeXBlcz4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xyXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmZpbGVUeXBlcygpO1xyXG4gICAgaWYgKHR5cGVzKSB7XHJcbiAgICAgIGNvbnN0IGFjY2VwdEVudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xyXG4gICAgICAgIGlmICh0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBtaW1lVHlwZSBpbiB0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb25zID0gdHlwZS5hY2NlcHRbbWltZVR5cGVdO1xyXG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBhY2NlcHRFbnRyaWVzLnB1c2goLi4uZXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjY2VwdEVudHJpZXMuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhY2NlcHQpKSB7XHJcbiAgICAgIHJldHVybiBhY2NlcHQuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY2NlcHQ7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdGVkTWltZVR5cGVzID0gY29tcHV0ZWQ8eyBtaW1lVHlwZTogc3RyaW5nOyBleHRlbnNpb25zOiBTZXQ8c3RyaW5nPiB9W10gfCBudWxsPigoKSA9PiB7XHJcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZmlsZVR5cGVzKCk7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgY29uc3QgbWltZVR5cGVzOiB7IG1pbWVUeXBlOiBzdHJpbmc7IGV4dGVuc2lvbnM6IFNldDxzdHJpbmc+IH1bXSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcclxuICAgICAgICBpZiAodHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgbWltZVR5cGUgaW4gdHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgICAgbWltZVR5cGVzLnB1c2goeyBtaW1lVHlwZSwgZXh0ZW5zaW9uczogbmV3IFNldCh0eXBlLmFjY2VwdFttaW1lVHlwZV0pIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbWltZVR5cGVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSk7XHJcblxyXG4gIC8vISB2YWx1ZVxyXG4gIHByb3RlY3RlZCBfdmFsdWU6IEZpbGVbXSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZhbHVlKCk6IEZpbGVbXSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodjogRmlsZSB8IEZpbGVbXSB8IG51bGwpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgY2hhbmdlRXZlbnQgPSBvdXRwdXQ8RmlsZVtdIHwgbnVsbD4oeyBhbGlhczogJ2NoYW5nZScgfSk7XHJcbiAgcmVhZG9ubHkgZHJhZ0ZpbGVzRXZlbnQgPSBvdXRwdXQ8RmlsZVtdPih7IGFsaWFzOiAnZHJhZ0ZpbGVzJyB9KTtcclxuICByZWFkb25seSBmYWlsZWRVcGxvYWRFdmVudCA9IG91dHB1dDxGaWxlSW5wdXRGYWlsZWRVcGxvYWRbXT4oeyBhbGlhczogJ2ZhaWxlZFVwbG9hZCcgfSk7XHJcblxyXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0OiBGaWxlW10gfCBudWxsID0gbnVsbDtcclxuICB3cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYsIGZhbHNlKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF93cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsLCBlbWl0RXZlbnRzID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKCEodiBpbnN0YW5jZW9mIEZpbGUpICYmICFBcnJheS5pc0FycmF5KHYpICYmIHYgIT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICBuZXcgRXJyb3IoYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0xOiA8YXJkLWZpbGUtaW5wdXQ+J3MgdmFsdWUgbXVzdCBiZSBhIEZpbGUsIGFuIGFycmF5IG9mIEZpbGVzLCBvciBudWxsLmApXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh2IGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICB2ID0gW3ZdO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgIXRoaXMubXVsdGlwbGUoKSAmJiB2Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuY29tcG9uZW50SWR9MjogPGFyZC1maWxlLWlucHV0PiByZWNlaXZlZCBhbiBhcnJheSBvZiBmaWxlcyBidXQgdGhlICdtdWx0aXBsZScgaW5wdXQgaXMgbm90IHNldCB0byB0cnVlLiBPbmx5IHRoZSBmaXJzdCBmaWxlIHdpbGwgYmUgdXNlZC5gXHJcbiAgICAgICk7XHJcbiAgICAgIHYgPSBbdlswXV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xyXG5cclxuICAgIGlmICh0aGlzLl93YXNWaWV3SW5pdCkgdGhpcy5fdXBkYXRlRWxlbWVudFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKGVtaXRFdmVudHMpIHtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh2KTtcclxuICB9XHJcblxyXG4gIG9wZW5Ccm93c2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1TZXJ2aWNlLmlzRmlsZVN5c3RlbUFQSVN1cHBvcnRlZCgnc2hvd09wZW5GaWxlUGlja2VyJykgJiZcclxuICAgICAgKHRoaXMuZGlyZWN0b3J5SWQoKSB8fCB0aGlzLnN0YXJ0RGlyZWN0b3J5KCkgfHwgdGhpcy5maWxlVHlwZXMoKSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9maWxlU3lzdGVtU2VydmljZVxyXG4gICAgICAgIC5yZXF1ZXN0RmlsZVVwbG9hZCh7XHJcbiAgICAgICAgICBtZXRob2Q6IEZpbGVTeXN0ZW1NZXRob2QuUHJlZmVyRmlsZVN5c3RlbSxcclxuICAgICAgICAgIG11bHRpcGxlOiB0aGlzLm11bHRpcGxlKCksXHJcbiAgICAgICAgICBkaXJlY3RvcnlJZDogdGhpcy5kaXJlY3RvcnlJZCgpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHN0YXJ0RGlyZWN0b3J5OiB0aGlzLnN0YXJ0RGlyZWN0b3J5KCkgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdHlwZXM6IHRoaXMuZmlsZVR5cGVzKCkgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYWNjZXB0OiB0aGlzLmFjY2VwdCgpID09PSAnKicgPyB1bmRlZmluZWQgOiB0aGlzLmFjY2VwdCgpLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZmlsZU9yRmlsZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKCFmaWxlT3JGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLl93cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuaXNBcnJheShmaWxlT3JGaWxlcykgPyBmaWxlT3JGaWxlcyA6IFtmaWxlT3JGaWxlc107XHJcbiAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3dyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZShmaWxlcyk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8vISB0ZW1wb3JhcnkgdmFsdWVcclxuICAvL2ZvciBkcmFnIGV2ZW50IGhhbmRsaW5nXHJcbiAgcHJvdGVjdGVkIF9kcmFnZ2VkRmlsZXM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyEgdmlldyBzdGF0ZVxyXG4gIHJlYWRvbmx5IGN1cnJlbnRWaWV3U3RhdGUgPSBzaWduYWw8J2lkbGUnIHwgJ2RyYWdvdmVyJyB8ICd1cGxvYWRlZCc+KCdpZGxlJyk7XHJcbiAgcHJpdmF0ZSBfYmVmb3JlRHJhZ292ZXJTdGF0ZTogJ2lkbGUnIHwgJ3VwbG9hZGVkJyA9ICdpZGxlJztcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25EcmFnb3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSB7XHJcbiAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyKSByZXR1cm47XHJcblxyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpID09PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fZHJhZ2dlZEZpbGVzID0gdGhpcy5fY291bnREcmFnZW50ZXJGaWxlcyhldmVudC5kYXRhVHJhbnNmZXIpO1xyXG5cclxuICAgIGlmICghdGhpcy5fZHJhZ2dlZEZpbGVzKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fYmVmb3JlRHJhZ292ZXJTdGF0ZSA9IHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpIGFzICdpZGxlJyB8ICd1cGxvYWRlZCc7XHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuICBvbkRyYWdsZWF2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZEJlQmxvY2tlZCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpICE9PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCh0aGlzLl9iZWZvcmVEcmFnb3ZlclN0YXRlKTtcclxuICB9XHJcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZmlsZWxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xyXG4gICAgaWYgKCFmaWxlbGlzdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlbGlzdCk7XHJcbiAgICBpZiAoIWZpbGVzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyZWRGaWxlczogRmlsZVtdID0gW107XHJcbiAgICBjb25zdCBmYWlsZWRGaWxlczogRmlsZUlucHV0RmFpbGVkVXBsb2FkW10gPSBbXTtcclxuICAgIGNvbnN0IGFjY2VwdGVkTWltZVR5cGVzID0gdGhpcy5hY2NlcHRlZE1pbWVUeXBlcygpO1xyXG4gICAgaWYgKGFjY2VwdGVkTWltZVR5cGVzKSB7XHJcbiAgICAgIGxldCBtaW1lVHlwZU1hdGNoZWQgPSBmYWxzZTtcclxuICAgICAgZmlsZUxvb3A6IGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgIGNvbnN0IHsgc2hvdWxkQWNjZXB0LCByZWFzb24gfSA9IHRoaXMuX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChmaWxlLCBmaWx0ZXJlZEZpbGVzLmxlbmd0aCk7XHJcbiAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IHJlYXNvbiEgfSk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1pbWVUeXBlTWF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgbWltZVR5cGVPYmogb2YgYWNjZXB0ZWRNaW1lVHlwZXMpIHtcclxuICAgICAgICAgIGlmIChpc01pbWVUeXBlTWF0Y2hpbmcoZmlsZSwgbWltZVR5cGVPYmoubWltZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIG1pbWVUeXBlTWF0Y2hlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAnLicgKyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuc2l6ZSA9PT0gMCB8fCBtaW1lVHlwZU9iai5leHRlbnNpb25zLmhhcygnKicpIHx8IG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuaGFzKGV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJlZEZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgICAgICAgICAgY29udGludWUgZmlsZUxvb3A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFtaW1lVHlwZU1hdGNoZWQpIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5JbnZhbGlkTWltZVR5cGUgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5NaW1lVHlwZUZvdW5kQnV0RXh0ZW5zaW9uTm90QWxsb3dlZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0KCk7XHJcbiAgICAgIGxldCBhY2NlcHRFbnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY2NlcHQpKSB7XHJcbiAgICAgICAgYWNjZXB0RW50cmllcyA9IGFjY2VwdC5tYXAoZSA9PiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhY2NlcHRFbnRyaWVzID0gYWNjZXB0LnNwbGl0KCcsJykubWFwKGUgPT4gZS50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiBhY2NlcHQgPT09ICdzdHJpbmcnICYmIGFjY2VwdCA9PT0gJyonKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHNob3VsZEFjY2VwdCwgcmVhc29uIH0gPSB0aGlzLl9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoZmlsZSwgZmlsdGVyZWRGaWxlcy5sZW5ndGgpO1xyXG4gICAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsZUxvb3A6IGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgY29uc3QgeyBzaG91bGRBY2NlcHQsIHJlYXNvbiB9ID0gdGhpcy5fZmlsdGVyRmlsZXNCYXNlZE9uU2l6ZUFuZENvdW50KGZpbGUsIGZpbHRlcmVkRmlsZXMubGVuZ3RoKTtcclxuICAgICAgICAgIGlmICghc2hvdWxkQWNjZXB0KSB7XHJcbiAgICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IHJlYXNvbiEgfSk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLmF0KC0xKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYWNjZXB0RW50cmllcykge1xyXG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSBlbnRyeSkge1xyXG4gICAgICAgICAgICAgIGZpbHRlcmVkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgICAgICAgICBjb250aW51ZSBmaWxlTG9vcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkludmFsaWRFeHRlbnNpb24gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcmFnRmlsZXNFdmVudC5lbWl0KGZpbHRlcmVkRmlsZXMpO1xyXG4gICAgdGhpcy5mYWlsZWRVcGxvYWRFdmVudC5lbWl0KGZhaWxlZEZpbGVzKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZShmaWx0ZXJlZEZpbGVzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEZpbGVzIDogbnVsbCk7XHJcbiAgfVxyXG4gIG9uSW5wdXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5maWxlSW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LmZpbGVzID8/IFtdKTtcclxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fd3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKGZpbGVzKTtcclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ3VwbG9hZGVkJyk7XHJcbiAgfVxyXG5cclxuICAvLyEgaGVscGVyc1xyXG4gIHByaXZhdGUgX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChcclxuICAgIGZpbGU6IEZpbGUsXHJcbiAgICBleGlzdGluZ0ZpbGVDb3VudDogbnVtYmVyXHJcbiAgKTogeyBzaG91bGRBY2NlcHQ6IGJvb2xlYW47IHJlYXNvbj86IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbiB9IHtcclxuICAgIC8vIGNoZWNrIGNvdW50XHJcbiAgICBpZiAoZXhpc3RpbmdGaWxlQ291bnQgPj0gdGhpcy5tYXhGaWxlc1dpdGhNdWx0aXBsZSgpKSB7XHJcbiAgICAgIHJldHVybiB7IHNob3VsZEFjY2VwdDogZmFsc2UsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLlRvb01hbnlGaWxlcyB9O1xyXG4gICAgfVxyXG4gICAgLy8gY2hlY2sgc2l6ZVxyXG4gICAgaWYgKGZpbGUuc2l6ZSA+IDAgJiYgdGhpcy5tYXhGaWxlU2l6ZUJ5dGVzKCkgIT09IG51bGwgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZUJ5dGVzKCkhKSB7XHJcbiAgICAgIHJldHVybiB7IHNob3VsZEFjY2VwdDogZmFsc2UsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkZpbGVUb29CaWcgfTtcclxuICAgIH1cclxuICAgIC8vIGFsbCBnb29kXHJcbiAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IHRydWUgfTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9jb3VudERyYWdlbnRlckZpbGVzKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGF0YS5pdGVtcykuZmlsdGVyKGl0ZW0gPT4gaXRlbS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdXBkYXRlRWxlbWVudFZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcblxyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuZmlsZUlucHV0RWwoKT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaW5wdXRFbCkgcmV0dXJuO1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIGlucHV0RWwuZmlsZXMgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHYpIHtcclxuICAgICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKTtcclxuICAgIH1cclxuICAgIGlucHV0RWwuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc01pbWVUeXBlTWF0Y2hpbmcoZmlsZTogRmlsZSwgbWltZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIGlmIChtaW1lVHlwZSA9PT0gJyonKSByZXR1cm4gdHJ1ZTtcclxuICBpZiAobWltZVR5cGUuZW5kc1dpdGgoJy8qJykpIHtcclxuICAgIGNvbnN0IHByZWZpeCA9IG1pbWVUeXBlLnNsaWNlKDAsIC0yKTtcclxuICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwcmVmaXgpO1xyXG4gIH1cclxuICByZXR1cm4gZmlsZS50eXBlID09PSBtaW1lVHlwZTtcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export const FileInputFailedUploadReason = {
|
|
2
|
+
InvalidMimeType: 'InvalidMimeType',
|
|
3
|
+
MimeTypeFoundButExtensionNotAllowed: 'MimeTypeFoundButExtensionNotAllowed',
|
|
4
|
+
InvalidExtension: 'InvalidExtension',
|
|
5
|
+
FileTooBig: 'FileTooBig',
|
|
6
|
+
TooManyFiles: 'TooManyFiles',
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZmlsZS1pbnB1dHMvZmlsZS1pbnB1dC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQ0EsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxtQ0FBbUMsRUFBRSxxQ0FBcUM7SUFDMUUsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFlBQVksRUFBRSxjQUFjO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGJyb3dzZTogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGaWxlQW1vdW50Q29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGFtb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEZpbGVzQ29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEZpbGVBbW91bnRDb250ZXh0IHtcclxuICAkaW1wbGljaXQ6IEZpbGVbXTtcclxuICBmaWxlczogRmlsZVtdO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGaWxlVHlwZSA9IHtcclxuICAvKipcclxuICAgKiBBbiBvcHRpb25hbCBkZXNjaXB0aW9uIG9mIHRoZSBjYXRlZ29yeSBvZiBmaWxlIHR5cGVzIGFsbG93ZWQuIERlZmF1bHQgdG8gYmUgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqL1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEFuIG9iamVjdCB3aXRoIHRoZSBrZXlzIHNldCB0byB0aGUgTUlNRSB0eXBlIGFuZCB0aGUgdmFsdWVzIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW5zaW9ucyAoc2VlIGJlbG93IGZvciBhbiBleGFtcGxlKS5cclxuICAgKiBgYGB0c1xyXG4gICAqIHJlYWRvbmx5IEZJTEVfVFlQRVMgPSBbXHJcbiAgICogICB7XHJcbiAgICogICAgIGRlc2NyaXB0aW9uOiBcIlRleHQgZmlsZVwiLFxyXG4gICAqICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L3BsYWluXCI6IFtcIi50eHRcIl0gfSxcclxuICAgKiAgIH0sXHJcbiAgICogXTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBhY2NlcHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVJbnB1dEZpbGVUeXBlcyA9IEZpbGVJbnB1dEZpbGVUeXBlW107XHJcblxyXG5leHBvcnQgY29uc3QgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uID0ge1xyXG4gIEludmFsaWRNaW1lVHlwZTogJ0ludmFsaWRNaW1lVHlwZScsXHJcbiAgTWltZVR5cGVGb3VuZEJ1dEV4dGVuc2lvbk5vdEFsbG93ZWQ6ICdNaW1lVHlwZUZvdW5kQnV0RXh0ZW5zaW9uTm90QWxsb3dlZCcsXHJcbiAgSW52YWxpZEV4dGVuc2lvbjogJ0ludmFsaWRFeHRlbnNpb24nLFxyXG4gIEZpbGVUb29CaWc6ICdGaWxlVG9vQmlnJyxcclxuICBUb29NYW55RmlsZXM6ICdUb29NYW55RmlsZXMnLFxyXG59IGFzIGNvbnN0O1xyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24gPSB0eXBlb2YgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uW2tleW9mIHR5cGVvZiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb25dO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWQge1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgcmVhc29uOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb247XHJcbn0iXX0=
|
|
@@ -339,7 +339,7 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
339
339
|
provide: _FormFieldComponentBase,
|
|
340
340
|
useExisting: ArdiumDateInputComponent,
|
|
341
341
|
},
|
|
342
|
-
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n />\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i4.
|
|
342
|
+
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n />\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i4.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: i5.ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: i6.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: i7.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
343
343
|
}
|
|
344
344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, decorators: [{
|
|
345
345
|
type: Component,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { ArdiumClickOutsideModule } from '@ardium-ui/devkit';
|
|
4
4
|
import { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';
|
|
5
5
|
import { ArdiumIconButtonModule } from '../../buttons/icon-button';
|
|
6
6
|
import { ArdiumCalendarModule } from '../../calendar';
|
|
@@ -13,14 +13,14 @@ export class ArdiumDateInputModule {
|
|
|
13
13
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputModule, declarations: [ArdiumDateInputComponent], imports: [CommonModule,
|
|
14
14
|
ArdiumFormFieldFrameModule,
|
|
15
15
|
ArdiumDropdownPanelModule,
|
|
16
|
-
|
|
16
|
+
ArdiumClickOutsideModule,
|
|
17
17
|
ArdiumCalendarModule,
|
|
18
18
|
ArdiumIconButtonModule,
|
|
19
19
|
ArdiumIconModule], exports: [ArdiumDateInputComponent] }); }
|
|
20
20
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputModule, imports: [CommonModule,
|
|
21
21
|
ArdiumFormFieldFrameModule,
|
|
22
22
|
ArdiumDropdownPanelModule,
|
|
23
|
-
|
|
23
|
+
ArdiumClickOutsideModule,
|
|
24
24
|
ArdiumCalendarModule,
|
|
25
25
|
ArdiumIconButtonModule,
|
|
26
26
|
ArdiumIconModule] }); }
|
|
@@ -36,7 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36
36
|
CommonModule,
|
|
37
37
|
ArdiumFormFieldFrameModule,
|
|
38
38
|
ArdiumDropdownPanelModule,
|
|
39
|
-
|
|
39
|
+
ArdiumClickOutsideModule,
|
|
40
40
|
ArdiumCalendarModule,
|
|
41
41
|
ArdiumIconButtonModule,
|
|
42
42
|
ArdiumIconModule,
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
47
47
|
],
|
|
48
48
|
}]
|
|
49
49
|
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFxQmxFLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQWpCOUIsd0JBQXdCLGFBSXhCLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGdCQUFnQixhQUdoQix3QkFBd0I7Z0hBSWYscUJBQXFCLFlBYjlCLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGdCQUFnQjs7NEZBT1AscUJBQXFCO2tCQW5CakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4QixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHNCQUFzQjtxQkFDdkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXJkaXVtQ2xpY2tPdXRzaWRlTW9kdWxlIH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBBcmRpdW1Ecm9wZG93blBhbmVsTW9kdWxlIH0gZnJvbSAnLi4vLi4vZHJvcGRvd24tcGFuZWwvZHJvcGRvd24tcGFuZWwubW9kdWxlJztcclxuXHJcbmltcG9ydCB7IEFyZGl1bUljb25CdXR0b25Nb2R1bGUgfSBmcm9tICcuLi8uLi9idXR0b25zL2ljb24tYnV0dG9uJztcclxuaW1wb3J0IHsgQXJkaXVtQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICcuLi8uLi9jYWxlbmRhcic7XHJcbmltcG9ydCB7IEFyZGl1bUZvcm1GaWVsZEZyYW1lTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC1mcmFtZS9mb3JtLWZpZWxkLWZyYW1lLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFyZGl1bUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9pY29uJztcclxuaW1wb3J0IHsgQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLWlucHV0LmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgLy90ZW1wbGF0ZSBkaXJlY3RpdmVzXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBBcmRpdW1Gb3JtRmllbGRGcmFtZU1vZHVsZSxcclxuICAgIEFyZGl1bURyb3Bkb3duUGFuZWxNb2R1bGUsXHJcbiAgICBBcmRpdW1DbGlja091dHNpZGVNb2R1bGUsXHJcbiAgICBBcmRpdW1DYWxlbmRhck1vZHVsZSxcclxuICAgIEFyZGl1bUljb25CdXR0b25Nb2R1bGUsXHJcbiAgICBBcmRpdW1JY29uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgLy90ZW1wYWxhdGUgZGlyZWN0aXZlc1xyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1EYXRlSW5wdXRNb2R1bGUge31cclxuIl19
|
|
@@ -245,7 +245,7 @@ export class ArdiumInputComponent extends _SimpleInputComponentBase {
|
|
|
245
245
|
provide: _FormFieldComponentBase,
|
|
246
246
|
useExisting: ArdiumInputComponent,
|
|
247
247
|
},
|
|
248
|
-
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i4.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.
|
|
248
|
+
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i4.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
249
249
|
}
|
|
250
250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumInputComponent, decorators: [{
|
|
251
251
|
type: Component,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { ArdiumClickOutsideModule } from '@ardium-ui/devkit';
|
|
4
4
|
import { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';
|
|
5
5
|
import { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';
|
|
6
6
|
import { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';
|
|
@@ -18,7 +18,7 @@ export class ArdiumInputModule {
|
|
|
18
18
|
ArdiumFormFieldFrameModule,
|
|
19
19
|
_ClearButtonModule,
|
|
20
20
|
ArdiumDropdownPanelModule,
|
|
21
|
-
|
|
21
|
+
ArdiumClickOutsideModule], exports: [ArdiumInputComponent,
|
|
22
22
|
ArdInputSuggestionTemplateDirective,
|
|
23
23
|
ArdInputPlaceholderTemplateDirective,
|
|
24
24
|
ArdInputLoadingTemplateDirective,
|
|
@@ -28,7 +28,7 @@ export class ArdiumInputModule {
|
|
|
28
28
|
ArdiumFormFieldFrameModule,
|
|
29
29
|
_ClearButtonModule,
|
|
30
30
|
ArdiumDropdownPanelModule,
|
|
31
|
-
|
|
31
|
+
ArdiumClickOutsideModule] }); }
|
|
32
32
|
}
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumInputModule, decorators: [{
|
|
34
34
|
type: NgModule,
|
|
@@ -46,7 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
46
46
|
ArdiumFormFieldFrameModule,
|
|
47
47
|
_ClearButtonModule,
|
|
48
48
|
ArdiumDropdownPanelModule,
|
|
49
|
-
|
|
49
|
+
ArdiumClickOutsideModule,
|
|
50
50
|
],
|
|
51
51
|
exports: [
|
|
52
52
|
ArdiumInputComponent,
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
58
58
|
],
|
|
59
59
|
}]
|
|
60
60
|
}] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvaW5wdXQvaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsb0NBQW9DLEVBQ3BDLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsbUNBQW1DLEdBQ3BDLE1BQU0sb0JBQW9CLENBQUM7O0FBMkI1QixNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkF2QjFCLG9CQUFvQjtZQUNwQixtQ0FBbUM7WUFDbkMsb0NBQW9DO1lBQ3BDLGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0IsK0JBQStCLGFBRy9CLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLHlCQUF5QjtZQUN6Qix3QkFBd0IsYUFHeEIsb0JBQW9CO1lBQ3BCLG1DQUFtQztZQUNuQyxvQ0FBb0M7WUFDcEMsZ0NBQWdDO1lBQ2hDLCtCQUErQjtZQUMvQiwrQkFBK0I7Z0hBR3RCLGlCQUFpQixZQWYxQixZQUFZO1lBQ1osMEJBQTBCO1lBQzFCLGtCQUFrQjtZQUNsQix5QkFBeUI7WUFDekIsd0JBQXdCOzs0RkFXZixpQkFBaUI7a0JBekI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1DQUFtQzt3QkFDbkMsb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7d0JBQ2hDLCtCQUErQjt3QkFDL0IsK0JBQStCO3FCQUNoQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWiwwQkFBMEI7d0JBQzFCLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLG1DQUFtQzt3QkFDbkMsb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7d0JBQ2hDLCtCQUErQjt3QkFDL0IsK0JBQStCO3FCQUNoQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFyZGl1bUNsaWNrT3V0c2lkZU1vZHVsZSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgX0NsZWFyQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2NsZWFyLWJ1dHRvbi9jbGVhci1idXR0b24ubW9kdWxlJztcclxuaW1wb3J0IHsgQXJkaXVtRHJvcGRvd25QYW5lbE1vZHVsZSB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duLXBhbmVsL2Ryb3Bkb3duLXBhbmVsLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFyZGl1bUZvcm1GaWVsZEZyYW1lTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC1mcmFtZS9mb3JtLWZpZWxkLWZyYW1lLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFyZGl1bUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIEFyZElucHV0TG9hZGluZ1RlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZElucHV0UGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZElucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkSW5wdXRTdWdnZXN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXHJcbn0gZnJvbSAnLi9pbnB1dC5kaXJlY3RpdmVzJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBBcmRpdW1JbnB1dENvbXBvbmVudCxcclxuICAgIEFyZElucHV0U3VnZ2VzdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgQXJkSW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgQXJkSW5wdXRMb2FkaW5nVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgICBBcmRJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgQXJkSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEFyZGl1bUZvcm1GaWVsZEZyYW1lTW9kdWxlLFxyXG4gICAgX0NsZWFyQnV0dG9uTW9kdWxlLFxyXG4gICAgQXJkaXVtRHJvcGRvd25QYW5lbE1vZHVsZSxcclxuICAgIEFyZGl1bUNsaWNrT3V0c2lkZU1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEFyZGl1bUlucHV0Q29tcG9uZW50LFxyXG4gICAgQXJkSW5wdXRTdWdnZXN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgICBBcmRJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgICBBcmRJbnB1dExvYWRpbmdUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICAgIEFyZElucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgICBBcmRJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1JbnB1dE1vZHVsZSB7fVxyXG4iXX0=
|
|
@@ -221,7 +221,7 @@ export class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
221
221
|
provide: _FormFieldComponentBase,
|
|
222
222
|
useExisting: ArdiumNumberInputComponent,
|
|
223
223
|
},
|
|
224
|
-
], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdNumberInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canDecrement() && onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"canDecrement() && onQuickChangeButtonClick(-1)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n inputmode=\"numeric\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canIncrement() && onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"canIncrement() && onQuickChangeButtonClick(1)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.
|
|
224
|
+
], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdNumberInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canDecrement() && onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"canDecrement() && onQuickChangeButtonClick(-1)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n inputmode=\"numeric\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canIncrement() && onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"canIncrement() && onQuickChangeButtonClick(1)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ArdiumHoldDirective, selector: "[ardHold]", inputs: ["ardHoldDisabled", "ardHoldDelay", "ardHoldRepeat", "ardAllowSpaceKey", "ardAllowEnterKey"], outputs: ["ardHold"] }, { kind: "component", type: i3.ArdiumButtonComponent, selector: "ard-button", inputs: ["icon", "variant", "alignIcon", "vertical"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
225
225
|
}
|
|
226
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumNumberInputComponent, decorators: [{
|
|
227
227
|
type: Component,
|