@eui/components 16.1.0 → 16.1.1-snapshot-1691048797192
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/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +162 -127
- package/esm2022/eui-block-content/eui-block-content.component.mjs +2 -2
- package/esm2022/eui-file-upload/utils/eui-file-upload.validators.mjs +28 -2
- package/esm2022/layout/eui-language-selector/language-selector.component.mjs +2 -2
- package/esm2022/layout/eui-language-selector/modal-selector/modal-selector.component.mjs +2 -2
- package/eui-file-upload/utils/eui-file-upload.validators.d.ts +17 -1
- package/eui-file-upload/utils/eui-file-upload.validators.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-block-content.mjs +2 -2
- package/fesm2022/eui-components-eui-block-content.mjs.map +1 -1
- package/fesm2022/eui-components-eui-file-upload.mjs +28 -2
- package/fesm2022/eui-components-eui-file-upload.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +4 -4
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/package.json +14 -14
|
@@ -61,6 +61,9 @@
|
|
|
61
61
|
<tr>
|
|
62
62
|
<td class="col-md-4">
|
|
63
63
|
<ul class="index-list">
|
|
64
|
+
<li>
|
|
65
|
+
<a href="#asyncMimeTypeExtensionValidator" title="packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts" ><b>asyncMimeTypeExtensionValidator</b> (packages/.../eui-file-upload.validators.ts)</a>
|
|
66
|
+
</li>
|
|
64
67
|
<li>
|
|
65
68
|
<a href="#BaseComponentMixinBase" title="packages/eui/packages/components/shared/input.directive.ts" ><b>BaseComponentMixinBase</b> (packages/.../input.directive.ts)</a>
|
|
66
69
|
</li>
|
|
@@ -323,6 +326,165 @@
|
|
|
323
326
|
</table>
|
|
324
327
|
</section>
|
|
325
328
|
|
|
329
|
+
<h3>packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts</h3>
|
|
330
|
+
<section data-compodoc="block-properties">
|
|
331
|
+
<h3></h3> <table class="table table-sm table-bordered">
|
|
332
|
+
<tbody>
|
|
333
|
+
<tr>
|
|
334
|
+
<td class="col-md-4">
|
|
335
|
+
<a name="asyncMimeTypeExtensionValidator"></a>
|
|
336
|
+
<span class="name">
|
|
337
|
+
<span ><b>asyncMimeTypeExtensionValidator</b></span>
|
|
338
|
+
<a href="#asyncMimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
|
|
339
|
+
</span>
|
|
340
|
+
</td>
|
|
341
|
+
</tr>
|
|
342
|
+
<tr>
|
|
343
|
+
<td class="col-md-4">
|
|
344
|
+
<i>Default value : </i><code>(mimeTypes: MimeType[]): AsyncValidatorFn =>
|
|
345
|
+
(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {
|
|
346
|
+
if (control.value) {
|
|
347
|
+
const fileErrorObservables: Observable<ValidationErrors | null>[] = [];
|
|
348
|
+
// iterate over files
|
|
349
|
+
control.value.forEach((file: File) => {
|
|
350
|
+
// push observable which will check the mime validation type
|
|
351
|
+
fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
|
|
352
|
+
});
|
|
353
|
+
return zip(...fileErrorObservables).pipe(
|
|
354
|
+
map((fileErrors) => {
|
|
355
|
+
const errors = fileErrors.filter((fileError) => fileError !== null);
|
|
356
|
+
// Error should be { fileName: FileType }
|
|
357
|
+
return { invalidMimeFileType: errors };
|
|
358
|
+
})
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
return of(null);
|
|
362
|
+
}</code>
|
|
363
|
+
</td>
|
|
364
|
+
</tr>
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
</tbody>
|
|
368
|
+
</table>
|
|
369
|
+
<table class="table table-sm table-bordered">
|
|
370
|
+
<tbody>
|
|
371
|
+
<tr>
|
|
372
|
+
<td class="col-md-4">
|
|
373
|
+
<a name="maxFilesValidator"></a>
|
|
374
|
+
<span class="name">
|
|
375
|
+
<span ><b>maxFilesValidator</b></span>
|
|
376
|
+
<a href="#maxFilesValidator"><span class="icon ion-ios-link"></span></a>
|
|
377
|
+
</span>
|
|
378
|
+
</td>
|
|
379
|
+
</tr>
|
|
380
|
+
<tr>
|
|
381
|
+
<td class="col-md-4">
|
|
382
|
+
<i>Default value : </i><code>(maxFiles: number): ValidatorFn =>
|
|
383
|
+
(control: AbstractControl): { maxFiles: number } | null =>
|
|
384
|
+
control.value && control.value.length > maxFiles ? { maxFiles } : null</code>
|
|
385
|
+
</td>
|
|
386
|
+
</tr>
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
</tbody>
|
|
390
|
+
</table>
|
|
391
|
+
<table class="table table-sm table-bordered">
|
|
392
|
+
<tbody>
|
|
393
|
+
<tr>
|
|
394
|
+
<td class="col-md-4">
|
|
395
|
+
<a name="maxSizeValidator"></a>
|
|
396
|
+
<span class="name">
|
|
397
|
+
<span ><b>maxSizeValidator</b></span>
|
|
398
|
+
<a href="#maxSizeValidator"><span class="icon ion-ios-link"></span></a>
|
|
399
|
+
</span>
|
|
400
|
+
</td>
|
|
401
|
+
</tr>
|
|
402
|
+
<tr>
|
|
403
|
+
<td class="col-md-4">
|
|
404
|
+
<i>Default value : </i><code>(maxSize: number): ValidatorFn =>
|
|
405
|
+
(control: AbstractControl): { maxSize: number } | null => {
|
|
406
|
+
let totalSize = 0;
|
|
407
|
+
if (control.value) {
|
|
408
|
+
control.value.forEach((file: File) => {
|
|
409
|
+
totalSize += file.size;
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;
|
|
414
|
+
}</code>
|
|
415
|
+
</td>
|
|
416
|
+
</tr>
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
</tbody>
|
|
420
|
+
</table>
|
|
421
|
+
<table class="table table-sm table-bordered">
|
|
422
|
+
<tbody>
|
|
423
|
+
<tr>
|
|
424
|
+
<td class="col-md-4">
|
|
425
|
+
<a name="mimeTypeExtensionValidator"></a>
|
|
426
|
+
<span class="name">
|
|
427
|
+
<span ><b>mimeTypeExtensionValidator</b></span>
|
|
428
|
+
<a href="#mimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
|
|
429
|
+
</span>
|
|
430
|
+
</td>
|
|
431
|
+
</tr>
|
|
432
|
+
<tr>
|
|
433
|
+
<td class="col-md-4">
|
|
434
|
+
<i>Default value : </i><code>(mimeTypes: string[]): ValidatorFn =>
|
|
435
|
+
(control: AbstractControl): { invalidFileExtension: string[] } | null => {
|
|
436
|
+
const invalidFileExtension: string[] = [];
|
|
437
|
+
if (control.value) {
|
|
438
|
+
control.value.forEach((file: File) => {
|
|
439
|
+
if (mimeTypes.indexOf(file.type) === -1) {
|
|
440
|
+
invalidFileExtension.push(file.name);
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;
|
|
446
|
+
}</code>
|
|
447
|
+
</td>
|
|
448
|
+
</tr>
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
</tbody>
|
|
452
|
+
</table>
|
|
453
|
+
<table class="table table-sm table-bordered">
|
|
454
|
+
<tbody>
|
|
455
|
+
<tr>
|
|
456
|
+
<td class="col-md-4">
|
|
457
|
+
<a name="validateFileMimeType"></a>
|
|
458
|
+
<span class="name">
|
|
459
|
+
<span ><b>validateFileMimeType</b></span>
|
|
460
|
+
<a href="#validateFileMimeType"><span class="icon ion-ios-link"></span></a>
|
|
461
|
+
</span>
|
|
462
|
+
</td>
|
|
463
|
+
</tr>
|
|
464
|
+
<tr>
|
|
465
|
+
<td class="col-md-4">
|
|
466
|
+
<i>Default value : </i><code>(file: File, mimeTypes: MimeType[]): Observable<{ [key: string]: any }> => {
|
|
467
|
+
return new Observable<{ [p: string]: any }>((subscriber) => {
|
|
468
|
+
const reader = new FileReader();
|
|
469
|
+
reader.onloadend = (): void => {
|
|
470
|
+
const buffer = reader.result as ArrayBuffer;
|
|
471
|
+
const headerBytes = new Uint8Array(buffer).slice(0, 8);
|
|
472
|
+
const mime = getMimeType(headerBytes);
|
|
473
|
+
if (mimeTypes.indexOf(mime) === -1) {
|
|
474
|
+
subscriber.next({ [file.name]: mime });
|
|
475
|
+
}
|
|
476
|
+
subscriber.complete();
|
|
477
|
+
};
|
|
478
|
+
reader.readAsArrayBuffer(file);
|
|
479
|
+
});
|
|
480
|
+
}</code>
|
|
481
|
+
</td>
|
|
482
|
+
</tr>
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
</tbody>
|
|
486
|
+
</table>
|
|
487
|
+
</section>
|
|
326
488
|
<h3>packages/eui/packages/components/shared/input.directive.ts</h3>
|
|
327
489
|
<section data-compodoc="block-properties">
|
|
328
490
|
<h3></h3> <table class="table table-sm table-bordered">
|
|
@@ -2071,133 +2233,6 @@
|
|
|
2071
2233
|
</tr>
|
|
2072
2234
|
|
|
2073
2235
|
|
|
2074
|
-
</tbody>
|
|
2075
|
-
</table>
|
|
2076
|
-
</section>
|
|
2077
|
-
<h3>packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts</h3>
|
|
2078
|
-
<section data-compodoc="block-properties">
|
|
2079
|
-
<h3></h3> <table class="table table-sm table-bordered">
|
|
2080
|
-
<tbody>
|
|
2081
|
-
<tr>
|
|
2082
|
-
<td class="col-md-4">
|
|
2083
|
-
<a name="maxFilesValidator"></a>
|
|
2084
|
-
<span class="name">
|
|
2085
|
-
<span ><b>maxFilesValidator</b></span>
|
|
2086
|
-
<a href="#maxFilesValidator"><span class="icon ion-ios-link"></span></a>
|
|
2087
|
-
</span>
|
|
2088
|
-
</td>
|
|
2089
|
-
</tr>
|
|
2090
|
-
<tr>
|
|
2091
|
-
<td class="col-md-4">
|
|
2092
|
-
<i>Default value : </i><code>(maxFiles: number): ValidatorFn =>
|
|
2093
|
-
(control: AbstractControl): { maxFiles: number } | null =>
|
|
2094
|
-
control.value && control.value.length > maxFiles ? { maxFiles } : null</code>
|
|
2095
|
-
</td>
|
|
2096
|
-
</tr>
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
</tbody>
|
|
2100
|
-
</table>
|
|
2101
|
-
<table class="table table-sm table-bordered">
|
|
2102
|
-
<tbody>
|
|
2103
|
-
<tr>
|
|
2104
|
-
<td class="col-md-4">
|
|
2105
|
-
<a name="maxSizeValidator"></a>
|
|
2106
|
-
<span class="name">
|
|
2107
|
-
<span ><b>maxSizeValidator</b></span>
|
|
2108
|
-
<a href="#maxSizeValidator"><span class="icon ion-ios-link"></span></a>
|
|
2109
|
-
</span>
|
|
2110
|
-
</td>
|
|
2111
|
-
</tr>
|
|
2112
|
-
<tr>
|
|
2113
|
-
<td class="col-md-4">
|
|
2114
|
-
<i>Default value : </i><code>(maxSize: number): ValidatorFn =>
|
|
2115
|
-
(control: AbstractControl): { maxSize: number } | null => {
|
|
2116
|
-
let totalSize = 0;
|
|
2117
|
-
if (control.value) {
|
|
2118
|
-
control.value.forEach((file: File) => {
|
|
2119
|
-
totalSize += file.size;
|
|
2120
|
-
});
|
|
2121
|
-
}
|
|
2122
|
-
|
|
2123
|
-
return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;
|
|
2124
|
-
}</code>
|
|
2125
|
-
</td>
|
|
2126
|
-
</tr>
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
</tbody>
|
|
2130
|
-
</table>
|
|
2131
|
-
<table class="table table-sm table-bordered">
|
|
2132
|
-
<tbody>
|
|
2133
|
-
<tr>
|
|
2134
|
-
<td class="col-md-4">
|
|
2135
|
-
<a name="mimeTypeExtensionValidator"></a>
|
|
2136
|
-
<span class="name">
|
|
2137
|
-
<span ><b>mimeTypeExtensionValidator</b></span>
|
|
2138
|
-
<a href="#mimeTypeExtensionValidator"><span class="icon ion-ios-link"></span></a>
|
|
2139
|
-
</span>
|
|
2140
|
-
</td>
|
|
2141
|
-
</tr>
|
|
2142
|
-
<tr>
|
|
2143
|
-
<td class="col-md-4">
|
|
2144
|
-
<i>Default value : </i><code>(mimeTypes: MimeType[]): AsyncValidatorFn =>
|
|
2145
|
-
(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {
|
|
2146
|
-
if (control.value) {
|
|
2147
|
-
const fileErrorObservables: Observable<ValidationErrors | null>[] = [];
|
|
2148
|
-
// iterate over files
|
|
2149
|
-
control.value.forEach((file: File) => {
|
|
2150
|
-
// push observable which will check the mime validation type
|
|
2151
|
-
fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
|
|
2152
|
-
});
|
|
2153
|
-
return zip(...fileErrorObservables).pipe(
|
|
2154
|
-
map((fileErrors) => {
|
|
2155
|
-
const errors = fileErrors.filter((fileError) => fileError !== null);
|
|
2156
|
-
// Error should be { fileName: FileType }
|
|
2157
|
-
return { invalidMimeFileType: errors };
|
|
2158
|
-
})
|
|
2159
|
-
);
|
|
2160
|
-
}
|
|
2161
|
-
return of(null);
|
|
2162
|
-
}</code>
|
|
2163
|
-
</td>
|
|
2164
|
-
</tr>
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
</tbody>
|
|
2168
|
-
</table>
|
|
2169
|
-
<table class="table table-sm table-bordered">
|
|
2170
|
-
<tbody>
|
|
2171
|
-
<tr>
|
|
2172
|
-
<td class="col-md-4">
|
|
2173
|
-
<a name="validateFileMimeType"></a>
|
|
2174
|
-
<span class="name">
|
|
2175
|
-
<span ><b>validateFileMimeType</b></span>
|
|
2176
|
-
<a href="#validateFileMimeType"><span class="icon ion-ios-link"></span></a>
|
|
2177
|
-
</span>
|
|
2178
|
-
</td>
|
|
2179
|
-
</tr>
|
|
2180
|
-
<tr>
|
|
2181
|
-
<td class="col-md-4">
|
|
2182
|
-
<i>Default value : </i><code>(file: File, mimeTypes: MimeType[]): Observable<{ [key: string]: any }> => {
|
|
2183
|
-
return new Observable<{ [p: string]: any }>((subscriber) => {
|
|
2184
|
-
const reader = new FileReader();
|
|
2185
|
-
reader.onloadend = (): void => {
|
|
2186
|
-
const buffer = reader.result as ArrayBuffer;
|
|
2187
|
-
const headerBytes = new Uint8Array(buffer).slice(0, 8);
|
|
2188
|
-
const mime = getMimeType(headerBytes);
|
|
2189
|
-
if (mimeTypes.indexOf(mime) === -1) {
|
|
2190
|
-
subscriber.next({ [file.name]: mime });
|
|
2191
|
-
}
|
|
2192
|
-
subscriber.complete();
|
|
2193
|
-
};
|
|
2194
|
-
reader.readAsArrayBuffer(file);
|
|
2195
|
-
});
|
|
2196
|
-
}</code>
|
|
2197
|
-
</td>
|
|
2198
|
-
</tr>
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
2236
|
</tbody>
|
|
2202
2237
|
</table>
|
|
2203
2238
|
</section>
|
|
@@ -68,11 +68,11 @@ export class EuiBlockContentComponent extends BaseDirective {
|
|
|
68
68
|
return this.elRef.nativeElement.querySelector(':focus');
|
|
69
69
|
}
|
|
70
70
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative
|
|
71
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
|
-
args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative
|
|
75
|
+
args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
|
|
76
76
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { isBlocked: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}], cssClasses: [{
|
|
@@ -41,6 +41,32 @@ export const maxSizeValidator = (maxSize) => (control) => {
|
|
|
41
41
|
}
|
|
42
42
|
return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;
|
|
43
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* @description
|
|
46
|
+
* Validator that requires an array of mime type that can be uploaded.
|
|
47
|
+
*
|
|
48
|
+
* @usageNotes
|
|
49
|
+
* Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
|
|
50
|
+
*
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
|
|
53
|
+
* console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @returns A validator function that returns an error map with the
|
|
57
|
+
* `invalidFileExtension` if the validation check fails, otherwise `null`.
|
|
58
|
+
*/
|
|
59
|
+
export const mimeTypeExtensionValidator = (mimeTypes) => (control) => {
|
|
60
|
+
const invalidFileExtension = [];
|
|
61
|
+
if (control.value) {
|
|
62
|
+
control.value.forEach((file) => {
|
|
63
|
+
if (mimeTypes.indexOf(file.type) === -1) {
|
|
64
|
+
invalidFileExtension.push(file.name);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;
|
|
69
|
+
};
|
|
44
70
|
/**
|
|
45
71
|
* @description
|
|
46
72
|
* Validator that requires an array of mime type that can be uploaded.
|
|
@@ -56,7 +82,7 @@ export const maxSizeValidator = (maxSize) => (control) => {
|
|
|
56
82
|
* @returns An Async validator function that returns an error map with the
|
|
57
83
|
* `invalidMimeFileType` if the validation check fails, otherwise `null`.
|
|
58
84
|
*/
|
|
59
|
-
export const
|
|
85
|
+
export const asyncMimeTypeExtensionValidator = (mimeTypes) => (control) => {
|
|
60
86
|
if (control.value) {
|
|
61
87
|
const fileErrorObservables = [];
|
|
62
88
|
// iterate over files
|
|
@@ -87,4 +113,4 @@ const validateFileMimeType = (file, mimeTypes) => {
|
|
|
87
113
|
reader.readAsArrayBuffer(file);
|
|
88
114
|
});
|
|
89
115
|
};
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBRXJEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLENBQUMsUUFBZ0IsRUFBZSxFQUFFLENBQ2xDLENBQUMsT0FBd0IsRUFBK0IsRUFBRSxDQUN0RCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQ3pCLENBQUMsT0FBZSxFQUFlLEVBQUUsQ0FDakMsQ0FBQyxPQUF3QixFQUE4QixFQUFFO0lBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFTjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNuQyxDQUFDLFNBQXFCLEVBQW9CLEVBQUUsQ0FDNUMsQ0FBQyxPQUF3QixFQUEwRSxFQUFFO0lBQ2pHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNmLE1BQU0sb0JBQW9CLEdBQTBDLEVBQUUsQ0FBQztRQUN2RSxxQkFBcUI7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNqQyw0REFBNEQ7WUFDNUQsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDcEUseUNBQXlDO1lBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0tBQ0w7SUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFTixNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBVSxFQUFFLFNBQXFCLEVBQXNDLEVBQUU7SUFDbkcsT0FBTyxJQUFJLFVBQVUsQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBUyxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFxQixDQUFDO1lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDMUM7WUFDRCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE1pbWVUeXBlLCBNaW1lVHlwZSB9IGZyb20gJy4vbWltZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQgbWF4aW11bSAzIGZpbGVzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4RmlsZXNWYWxpZGF0b3IoMykpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heEZpbGVzOiAzIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhGaWxlc2AgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhGaWxlc1ZhbGlkYXRvciA9XG4gICAgKG1heEZpbGVzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IG1heEZpbGVzOiBudW1iZXIgfSB8IG51bGwgPT5cbiAgICAgICAgY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IG1heEZpbGVzID8geyBtYXhGaWxlcyB9IDogbnVsbDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBtYXhpbXVtIHNpemUgKGluIGJ5dGVzKSBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2ZSBhIHNpemUgdXAgdG8gMzAwS2I6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtYXhTaXplVmFsaWRhdG9yKDMwMDAwMCkpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heFNpemU6IDMwMDAwMCB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgbWF4U2l6ZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhTaXplVmFsaWRhdG9yID1cbiAgICAobWF4U2l6ZTogbnVtYmVyKTogVmFsaWRhdG9yRm4gPT5cbiAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhTaXplOiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICAgICAgICBsZXQgdG90YWxTaXplID0gMDtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIHRvdGFsU2l6ZSA+IG1heFNpemUgKiAxLjAyNCA/IHsgbWF4U2l6ZSB9IDogbnVsbDtcbiAgICB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgYW4gYXJyYXkgb2YgbWltZSB0eXBlIHRoYXQgY2FuIGJlIHVwbG9hZGVkLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKiBWYWxpZGF0ZSB0aGF0IHRoZSB1c2VyIGRvZXNuJ3Qgc2VsZWN0IGEgZmlsZSBoYXZpbmcgYW5vdGhlciBleHRlbnNpb24gdGhhbiAuanBnIG9yIC5qcGVnOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWltZVR5cGVFeHRlbnNpb25WYWxpZGF0b3IoWydpbWFnZS9qcGVnJ10pKSxcbiAqIGNvbnNvbGUubG9nKGZpbGVVcGxvYWQuZXJyb3JzKTsgLy8geyBpbnZhbGlkTWltZUZpbGVUeXBlOiBbJ2ltYWdlL2pwZWcnXSB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBbiBBc3luYyB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVycm9yIG1hcCB3aXRoIHRoZVxuICogYGludmFsaWRNaW1lRmlsZVR5cGVgIGlmIHRoZSB2YWxpZGF0aW9uIGNoZWNrIGZhaWxzLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgY29uc3QgbWltZVR5cGVFeHRlbnNpb25WYWxpZGF0b3IgPVxuICAgIChtaW1lVHlwZXM6IE1pbWVUeXBlW10pOiBBc3luY1ZhbGlkYXRvckZuID0+XG4gICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZUVycm9yT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+W10gPSBbXTtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBmaWxlc1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gcHVzaCBvYnNlcnZhYmxlIHdoaWNoIHdpbGwgY2hlY2sgdGhlIG1pbWUgdmFsaWRhdGlvbiB0eXBlXG4gICAgICAgICAgICAgICAgZmlsZUVycm9yT2JzZXJ2YWJsZXMucHVzaCh2YWxpZGF0ZUZpbGVNaW1lVHlwZShmaWxlLCBtaW1lVHlwZXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHppcCguLi5maWxlRXJyb3JPYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGZpbGVFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gZmlsZUVycm9ycy5maWx0ZXIoKGZpbGVFcnJvcikgPT4gZmlsZUVycm9yICE9PSBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3Igc2hvdWxkIGJlIHsgZmlsZU5hbWU6IEZpbGVUeXBlIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZE1pbWVGaWxlVHlwZTogZXJyb3JzIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH07XG5cbmNvbnN0IHZhbGlkYXRlRmlsZU1pbWVUeXBlID0gKGZpbGU6IEZpbGUsIG1pbWVUeXBlczogTWltZVR5cGVbXSk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4gPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx7IFtwOiBzdHJpbmddOiBhbnkgfT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJCeXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcikuc2xpY2UoMCwgOCk7XG4gICAgICAgICAgICBjb25zdCBtaW1lID0gZ2V0TWltZVR5cGUoaGVhZGVyQnl0ZXMpO1xuICAgICAgICAgICAgaWYgKG1pbWVUeXBlcy5pbmRleE9mKG1pbWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh7IFtmaWxlLm5hbWVdOiBtaW1lIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgfSk7XG59O1xuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBRXJEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLENBQUMsUUFBZ0IsRUFBZSxFQUFFLENBQ2xDLENBQUMsT0FBd0IsRUFBK0IsRUFBRSxDQUN0RCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQ3pCLENBQUMsT0FBZSxFQUFlLEVBQUUsQ0FDakMsQ0FBQyxPQUF3QixFQUE4QixFQUFFO0lBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxF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Q25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE1pbWVUeXBlLCBNaW1lVHlwZSB9IGZyb20gJy4vbWltZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQgbWF4aW11bSAzIGZpbGVzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4RmlsZXNWYWxpZGF0b3IoMykpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heEZpbGVzOiAzIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhGaWxlc2AgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhGaWxlc1ZhbGlkYXRvciA9XG4gICAgKG1heEZpbGVzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IG1heEZpbGVzOiBudW1iZXIgfSB8IG51bGwgPT5cbiAgICAgICAgY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IG1heEZpbGVzID8geyBtYXhGaWxlcyB9IDogbnVsbDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBtYXhpbXVtIHNpemUgKGluIGJ5dGVzKSBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2ZSBhIHNpemUgdXAgdG8gMzAwS2I6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtYXhTaXplVmFsaWRhdG9yKDMwMDAwMCkpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heFNpemU6IDMwMDAwMCB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgbWF4U2l6ZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhTaXplVmFsaWRhdG9yID1cbiAgICAobWF4U2l6ZTogbnVtYmVyKTogVmFsaWRhdG9yRm4gPT5cbiAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhTaXplOiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICAgICAgICBsZXQgdG90YWxTaXplID0gMDtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIHRvdGFsU2l6ZSA+IG1heFNpemUgKiAxLjAyNCA/IHsgbWF4U2l6ZSB9IDogbnVsbDtcbiAgICB9O1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGFuIGFycmF5IG9mIG1pbWUgdHlwZSB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2aW5nIGFub3RoZXIgZXh0ZW5zaW9uIHRoYW4gLmpwZyBvciAuanBlZzpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlVXBsb2FkID0gbmV3IEZvcm1Db250cm9sKG51bGwsIG1pbWVUeXBlRXh0ZW5zaW9uVmFsaWRhdG9yKFsnaW1hZ2UvanBlZyddKSksXG4gKiBjb25zb2xlLmxvZyhmaWxlVXBsb2FkLmVycm9ycyk7IC8vIHsgaW52YWxpZEZpbGVFeHRlbnNpb246IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBpbnZhbGlkRmlsZUV4dGVuc2lvbmAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvciA9XG4gICAgKG1pbWVUeXBlczogc3RyaW5nW10pOiBWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWRGaWxlRXh0ZW5zaW9uOiBzdHJpbmdbXSB9IHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGludmFsaWRGaWxlRXh0ZW5zaW9uOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbWVUeXBlcy5pbmRleE9mKGZpbGUudHlwZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRGaWxlRXh0ZW5zaW9uLnB1c2goZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIGludmFsaWRGaWxlRXh0ZW5zaW9uLmxlbmd0aCA+IDAgPyB7IGludmFsaWRGaWxlRXh0ZW5zaW9uIH0gOiBudWxsO1xuICAgIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhbiBhcnJheSBvZiBtaW1lIHR5cGUgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBzZWxlY3QgYSBmaWxlIGhhdmluZyBhbm90aGVyIGV4dGVuc2lvbiB0aGFuIC5qcGcgb3IgLmpwZWc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvcihbJ2ltYWdlL2pwZWcnXSkpLFxuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IGludmFsaWRNaW1lRmlsZVR5cGU6IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEFuIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgaW52YWxpZE1pbWVGaWxlVHlwZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBhc3luY01pbWVUeXBlRXh0ZW5zaW9uVmFsaWRhdG9yID1cbiAgICAobWltZVR5cGVzOiBNaW1lVHlwZVtdKTogQXN5bmNWYWxpZGF0b3JGbiA9PlxuICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVFcnJvck9ic2VydmFibGVzOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPltdID0gW107XG4gICAgICAgICAgICAvLyBpdGVyYXRlIG92ZXIgZmlsZXNcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHB1c2ggb2JzZXJ2YWJsZSB3aGljaCB3aWxsIGNoZWNrIHRoZSBtaW1lIHZhbGlkYXRpb24gdHlwZVxuICAgICAgICAgICAgICAgIGZpbGVFcnJvck9ic2VydmFibGVzLnB1c2godmFsaWRhdGVGaWxlTWltZVR5cGUoZmlsZSwgbWltZVR5cGVzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB6aXAoLi4uZmlsZUVycm9yT2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChmaWxlRXJyb3JzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IGZpbGVFcnJvcnMuZmlsdGVyKChmaWxlRXJyb3IpID0+IGZpbGVFcnJvciAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEVycm9yIHNob3VsZCBiZSB7IGZpbGVOYW1lOiBGaWxlVHlwZSB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRNaW1lRmlsZVR5cGU6IGVycm9ycyB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9O1xuXG5jb25zdCB2YWxpZGF0ZUZpbGVNaW1lVHlwZSA9IChmaWxlOiBGaWxlLCBtaW1lVHlwZXM6IE1pbWVUeXBlW10pOiBPYnNlcnZhYmxlPHsgW2tleTogc3RyaW5nXTogYW55IH0+ID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogYW55IH0+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSByZWFkZXIucmVzdWx0IGFzIEFycmF5QnVmZmVyO1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyQnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpLnNsaWNlKDAsIDgpO1xuICAgICAgICAgICAgY29uc3QgbWltZSA9IGdldE1pbWVUeXBlKGhlYWRlckJ5dGVzKTtcbiAgICAgICAgICAgIGlmIChtaW1lVHlwZXMuaW5kZXhPZihtaW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoeyBbZmlsZS5uYW1lXTogbWltZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgIH0pO1xufTtcbiJdfQ==
|
|
@@ -94,11 +94,11 @@ export class EuiLanguageSelectorComponent extends BaseDirective {
|
|
|
94
94
|
return this.languages.find((lang) => lang.code === languageCode);
|
|
95
95
|
}
|
|
96
96
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiLanguageSelectorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EuiDialogService }, { token: i2.UxAppShellService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
97
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiLanguageSelectorComponent, selector: "eui-language-selector", host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabindex" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-
|
|
97
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiLanguageSelectorComponent, selector: "eui-language-selector", host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabindex" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover"] }, { kind: "component", type: i5.EuiDropdownItemComponent, selector: "eui-dropdown-item, [euiDropdownItem]", inputs: ["subDropdown", "isActive"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
98
98
|
}
|
|
99
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiLanguageSelectorComponent, decorators: [{
|
|
100
100
|
type: Component,
|
|
101
|
-
args: [{ selector: 'eui-language-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-
|
|
101
|
+
args: [{ selector: 'eui-language-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"isShowDropDown\">\n <eui-dropdown>\n <button class=\"eui-language-selector-button\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-language-selector-menu\">\n <div\n *ngFor=\"let language of languages\"\n euiDropdownItem\n attr.data-e2e=\"eui-language-selector-item_{{ language.code }}\"\n class=\"eui-language-selector-menu-language-item\"\n (click)=\"onLanguageChanged(language)\">\n {{ language.label }} ({{ language.code }})\n </div>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-container>\n\n<ng-container *ngIf=\"isShowModal\">\n <button class=\"eui-language-selector-button\" (click)=\"open()\">\n <eui-icon-svg icon=\"eui-ecl-language\" size=\"l\" fillColor=\"white\"></eui-icon-svg>\n <span class=\"eui-language-selector-button__language-code\">\n {{ (appShellService.state$ | async).activeLanguage }}\n </span>\n </button>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
|
|
102
102
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EuiDialogService }, { type: i2.UxAppShellService }, { type: i3.TranslateService }]; }, propDecorators: { cssClasses: [{
|
|
103
103
|
type: HostBinding,
|
|
104
104
|
args: ['class']
|
|
@@ -46,11 +46,11 @@ export class EuiModalSelectorComponent {
|
|
|
46
46
|
return rows;
|
|
47
47
|
}
|
|
48
48
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiModalSelectorComponent, deps: [{ token: i1.EuiDialogService }, { token: DIALOG_COMPONENT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiModalSelectorComponent, selector: "eui-modal-selector", ngImport: i0, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-
|
|
49
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiModalSelectorComponent, selector: "eui-modal-selector", ngImport: i0, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
50
50
|
}
|
|
51
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiModalSelectorComponent, decorators: [{
|
|
52
52
|
type: Component,
|
|
53
|
-
args: [{ selector: 'eui-modal-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;color:var(--eui-base-color-
|
|
53
|
+
args: [{ selector: 'eui-modal-selector', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<h4 *ngIf=\"additionaLanguageRows?.length > 0\">EU official languages</h4>\n<div id=\"eu_languages\" *ngFor=\"let row of languageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n</div>\n<ng-container *ngIf=\"additionaLanguageRows?.length > 0\">\n <br />\n <h4>Non-EU Languages</h4>\n <div id=\"extra_languages\" *ngFor=\"let row of additionaLanguageRows\" class=\"row\">\n <div *ngFor=\"let language of row\" class=\"col-md-6 mb-2\">\n <button\n type=\"button\"\n e2eAttr=\"eui-language-selector-item_{{ language.code }}\"\n euiButton\n euiBlockButton\n [euiSecondary]=\"language.code !== config.selectedLanguage.code\"\n [euiPrimary]=\"language.code === config.selectedLanguage.code\"\n (click)=\"selectLanguage(language)\">\n {{ language.label }} ({{ language.code }})\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".eui-language-selector{align-items:center;cursor:pointer;display:inline-flex;position:relative}.eui-language-selector:not(.eui-app-toolbar__language-selector){margin-top:var(--eui-base-spacing-xs)}.eui-language-selector:not(.eui-app-toolbar__language-selector) .eui-icon-svg>svg{color:var(--eui-base-color-primary);fill:var(--eui-base-color-primary)}.eui-language-selector.eui-app-toolbar__language-selector{margin-right:var(--eui-base-spacing-m)}.eui-language-selector.eui-app-toolbar__language-selector .eui-language-selector-button__language-code{color:var(--eui-base-color-primary-100)}.eui-language-selector-button{justify-content:center;position:relative;align-items:center;display:flex;width:100%;padding:0;border:none;background:transparent}.eui-language-selector-button:focus,.eui-language-selector-button:active{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:0;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.eui-language-selector-button__language-code{align-items:center;bottom:50%;display:flex;color:var(--eui-base-color-white);font-size:var(--eui-base-font-size-s);font-style:normal;font-weight:700;position:absolute;text-transform:uppercase;top:40%}.eui-language-selector-menu-language-item{padding:var(--eui-base-spacing-m);border-bottom:1px solid var(--eui-base-color-grey-10);text-align:center;cursor:pointer}.eui-language-selector-menu-language-item:hover{background:var(--eui-base-color-grey-5)}.mat-menu-panel{min-width:8rem!important}.eui-language-selector--empty{display:none}.eui-language-selector--inverted .eui-language-selector-link__language-code{color:var(--eui-base-color-text)}\n"] }]
|
|
54
54
|
}], ctorParameters: function () { return [{ type: i1.EuiDialogService }, { type: undefined, decorators: [{
|
|
55
55
|
type: Inject,
|
|
56
56
|
args: [DIALOG_COMPONENT_CONFIG]
|
|
@@ -32,6 +32,22 @@ export declare const maxFilesValidator: (maxFiles: number) => ValidatorFn;
|
|
|
32
32
|
* `maxSize` if the validation check fails, otherwise `null`.
|
|
33
33
|
*/
|
|
34
34
|
export declare const maxSizeValidator: (maxSize: number) => ValidatorFn;
|
|
35
|
+
/**
|
|
36
|
+
* @description
|
|
37
|
+
* Validator that requires an array of mime type that can be uploaded.
|
|
38
|
+
*
|
|
39
|
+
* @usageNotes
|
|
40
|
+
* Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
|
|
41
|
+
*
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
|
|
44
|
+
* console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @returns A validator function that returns an error map with the
|
|
48
|
+
* `invalidFileExtension` if the validation check fails, otherwise `null`.
|
|
49
|
+
*/
|
|
50
|
+
export declare const mimeTypeExtensionValidator: (mimeTypes: string[]) => ValidatorFn;
|
|
35
51
|
/**
|
|
36
52
|
* @description
|
|
37
53
|
* Validator that requires an array of mime type that can be uploaded.
|
|
@@ -47,5 +63,5 @@ export declare const maxSizeValidator: (maxSize: number) => ValidatorFn;
|
|
|
47
63
|
* @returns An Async validator function that returns an error map with the
|
|
48
64
|
* `invalidMimeFileType` if the validation check fails, otherwise `null`.
|
|
49
65
|
*/
|
|
50
|
-
export declare const
|
|
66
|
+
export declare const asyncMimeTypeExtensionValidator: (mimeTypes: MimeType[]) => AsyncValidatorFn;
|
|
51
67
|
//# sourceMappingURL=eui-file-upload.validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-file-upload.validators.d.ts","sourceRoot":"","sources":["../../../eui-file-upload/utils/eui-file-upload.validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlG,OAAO,EAAe,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,aACf,MAAM,KAAG,WAEsD,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,YACf,MAAM,KAAG,WAUlB,CAAC;
|
|
1
|
+
{"version":3,"file":"eui-file-upload.validators.d.ts","sourceRoot":"","sources":["../../../eui-file-upload/utils/eui-file-upload.validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlG,OAAO,EAAe,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,aACf,MAAM,KAAG,WAEsD,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,YACf,MAAM,KAAG,WAUlB,CAAC;AACN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,cACvB,MAAM,EAAE,KAAG,WAYtB,CAAC;AAEN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B,cAC5B,QAAQ,EAAE,KAAG,gBAkBxB,CAAC"}
|
|
@@ -70,11 +70,11 @@ class EuiBlockContentComponent extends BaseDirective {
|
|
|
70
70
|
return this.elRef.nativeElement.querySelector(':focus');
|
|
71
71
|
}
|
|
72
72
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative
|
|
73
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
74
74
|
}
|
|
75
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: EuiBlockContentComponent, decorators: [{
|
|
76
76
|
type: Component,
|
|
77
|
-
args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative
|
|
77
|
+
args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
|
|
78
78
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { isBlocked: [{
|
|
79
79
|
type: Input
|
|
80
80
|
}], cssClasses: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-components-eui-block-content.mjs","sources":["../../eui-block-content/eui-block-content.component.ts","../../eui-block-content/eui-block-content.component.html","../../eui-block-content/eui-block-content.module.ts","../../eui-block-content/eui-components-eui-block-content.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n HostBinding,\n} from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'eui-block-content',\n templateUrl: './eui-block-content.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBlockContentComponent extends BaseDirective implements OnChanges {\n @Input()\n get isBlocked(): boolean {\n return this._isBlocked;\n }\n set isBlocked(value: BooleanInput) {\n this._isBlocked = coerceBooleanProperty(value);\n }\n private _isBlocked = false;\n\n /** keeps the state of the element that was focused before content was blocked */\n private lastActiveElement: HTMLElement = null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [this.isBlocked ? `eui-block-content--blocked` : ``, super.getCssClasses('eui-block-content')].join(' ').trim();\n }\n\n constructor(private elRef: ElementRef, private renderer: Renderer2) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isBlocked']) {\n const activeElement = this.getActiveElement();\n const isBlocking = this.isAboutToBlock(changes);\n\n if (isBlocking) {\n this.deactivateElement(activeElement);\n } else {\n this.reactivateElement(this.lastActiveElement);\n }\n }\n }\n\n /**\n * blur (un-focus) the focused element inside BlockContent\n */\n deactivateElement(activeElement: HTMLElement): void {\n if (activeElement) {\n this.renderer.selectRootElement(activeElement, true).blur();\n this.lastActiveElement = activeElement;\n } else {\n this.lastActiveElement = null;\n }\n }\n\n /**\n * focus on element if it was focused before content was blocked\n */\n reactivateElement(element: HTMLElement): void {\n if (element) {\n this.renderer.selectRootElement(element, true).focus();\n }\n }\n\n /**\n * returns where the element is about to block or not\n *\n * @param changes SimplyChanges\n */\n private isAboutToBlock(changes: SimpleChanges): boolean {\n const isBlockedChange = changes['isBlocked'];\n\n return isBlockedChange?.currentValue && !isBlockedChange.previousValue;\n }\n\n /**\n * finds the element which is focused inside the UxBlockContent\n */\n private getActiveElement(): HTMLElement {\n return this.elRef.nativeElement.querySelector(':focus');\n }\n}\n","<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiBlockContentComponent } from './eui-block-content.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBlockContentComponent],\n declarations: [EuiBlockContentComponent],\n})\nexport class EuiBlockContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAqBM,MAAO,wBAAyB,SAAQ,aAAa,CAAA;AACvD,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAClD;AAMD,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAA,0BAAA,CAA4B,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1H;IAED,WAAoB,CAAA,KAAiB,EAAU,QAAmB,EAAA;AAC9D,QAAA,KAAK,EAAE,CAAC;QADQ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAV1D,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;QAGnB,IAAiB,CAAA,iBAAA,GAAgB,IAAI,CAAC;KAS7C;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACtB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAEhD,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAClD,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,iBAAiB,CAAC,aAA0B,EAAA;AACxC,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACjC,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,iBAAiB,CAAC,OAAoB,EAAA;AAClC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1D,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,cAAc,CAAC,OAAsB,EAAA;AACzC,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAE7C,OAAO,eAAe,EAAE,YAAY,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;KAC1E;AAED;;AAEG;IACK,gBAAgB,GAAA;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC3D;iIAxEQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,+LCrBrC,8IAGA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"eui-components-eui-block-content.mjs","sources":["../../eui-block-content/eui-block-content.component.ts","../../eui-block-content/eui-block-content.component.html","../../eui-block-content/eui-block-content.module.ts","../../eui-block-content/eui-components-eui-block-content.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n HostBinding,\n} from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'eui-block-content',\n templateUrl: './eui-block-content.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBlockContentComponent extends BaseDirective implements OnChanges {\n @Input()\n get isBlocked(): boolean {\n return this._isBlocked;\n }\n set isBlocked(value: BooleanInput) {\n this._isBlocked = coerceBooleanProperty(value);\n }\n private _isBlocked = false;\n\n /** keeps the state of the element that was focused before content was blocked */\n private lastActiveElement: HTMLElement = null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [this.isBlocked ? `eui-block-content--blocked` : ``, super.getCssClasses('eui-block-content')].join(' ').trim();\n }\n\n constructor(private elRef: ElementRef, private renderer: Renderer2) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isBlocked']) {\n const activeElement = this.getActiveElement();\n const isBlocking = this.isAboutToBlock(changes);\n\n if (isBlocking) {\n this.deactivateElement(activeElement);\n } else {\n this.reactivateElement(this.lastActiveElement);\n }\n }\n }\n\n /**\n * blur (un-focus) the focused element inside BlockContent\n */\n deactivateElement(activeElement: HTMLElement): void {\n if (activeElement) {\n this.renderer.selectRootElement(activeElement, true).blur();\n this.lastActiveElement = activeElement;\n } else {\n this.lastActiveElement = null;\n }\n }\n\n /**\n * focus on element if it was focused before content was blocked\n */\n reactivateElement(element: HTMLElement): void {\n if (element) {\n this.renderer.selectRootElement(element, true).focus();\n }\n }\n\n /**\n * returns where the element is about to block or not\n *\n * @param changes SimplyChanges\n */\n private isAboutToBlock(changes: SimpleChanges): boolean {\n const isBlockedChange = changes['isBlocked'];\n\n return isBlockedChange?.currentValue && !isBlockedChange.previousValue;\n }\n\n /**\n * finds the element which is focused inside the UxBlockContent\n */\n private getActiveElement(): HTMLElement {\n return this.elRef.nativeElement.querySelector(':focus');\n }\n}\n","<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiBlockContentComponent } from './eui-block-content.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBlockContentComponent],\n declarations: [EuiBlockContentComponent],\n})\nexport class EuiBlockContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|