ecabs-components 1.1.10 → 1.1.12
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/README.md +2 -1
- package/esm2022/lib/base/services/ecabs-components.service.mjs +17 -4
- package/esm2022/lib/base/utils/object-utils.mjs +12 -1
- package/esm2022/lib/ecabs-select-v2/ecabs-select-v2.component.mjs +8 -5
- package/fesm2022/ecabs-components.mjs +93 -67
- package/fesm2022/ecabs-components.mjs.map +1 -1
- package/lib/base/utils/object-utils.d.ts +1 -0
- package/lib/ecabs-select-v2/ecabs-select-v2.component.d.ts +2 -1
- package/package.json +1 -1
- package/src/assets/styles/material/overrides/_expansion.scss +1 -0
package/README.md
CHANGED
|
@@ -68,4 +68,5 @@ v1.1.6 - accumulate all directives
|
|
|
68
68
|
v1.1.7 - Add message for alphanumeric-only validation.
|
|
69
69
|
v1.1.8 - Add directive show-on-truncated to directives.
|
|
70
70
|
v1.1.9 - Fixed i18n issue.
|
|
71
|
-
v1.1.10 - Added color styles for prompt title message.
|
|
71
|
+
v1.1.10 - Added color styles for prompt title message.
|
|
72
|
+
v1.1.12 - Extend @Input properties of `EcabsSelectV2` from `@ng-select` lib.
|
|
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import { errorMessages } from '../consts/error-messages.consts';
|
|
4
4
|
import { i18n } from '../consts/translations.consts';
|
|
5
|
+
import { mergeUniqueByKey } from '../utils/object-utils';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class EcabsComponentsService {
|
|
7
8
|
defaultConfig = {
|
|
@@ -23,9 +24,21 @@ export class EcabsComponentsService {
|
|
|
23
24
|
for (const key in currentConfig) {
|
|
24
25
|
if (Object.prototype.hasOwnProperty.call(currentConfig, key) &&
|
|
25
26
|
Object.prototype.hasOwnProperty.call(configUpdate, key)) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
if (key === 'claims' && Array.isArray(configUpdate.claims)) {
|
|
28
|
+
updatedConfig.claims = mergeUniqueByKey([...(currentConfig.claims || []), ...configUpdate.claims], 'claim');
|
|
29
|
+
}
|
|
30
|
+
else if (key === 'errorMessages' &&
|
|
31
|
+
Array.isArray(configUpdate.errorMessages)) {
|
|
32
|
+
updatedConfig.errorMessages = mergeUniqueByKey([
|
|
33
|
+
...(currentConfig.errorMessages || []),
|
|
34
|
+
...configUpdate.errorMessages,
|
|
35
|
+
], 'message');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
updatedConfig[key] = Array.isArray(currentConfig[key])
|
|
39
|
+
? mergeUniqueByKey([...currentConfig[key], ...configUpdate[key]])
|
|
40
|
+
: { ...currentConfig[key], ...configUpdate[key] };
|
|
41
|
+
}
|
|
29
42
|
}
|
|
30
43
|
else {
|
|
31
44
|
updatedConfig[key] = currentConfig[key];
|
|
@@ -61,4 +74,4 @@ export class GenericComponentConfig {
|
|
|
61
74
|
errorMessages = [];
|
|
62
75
|
i18n;
|
|
63
76
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2Uvc2VydmljZXMvZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUt6RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGFBQWEsR0FBMEI7UUFDckMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixhQUFhLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNqQyxJQUFJO1FBQ0osTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRU0sT0FBTyxHQUNiLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFakUsU0FBUyxDQUFDLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBbUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBMEIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRTFFLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFO1lBQy9CLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLEVBQ3ZEO2dCQUNBLElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDMUQsYUFBYSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDckMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFDekQsT0FBTyxDQUNSLENBQUM7aUJBQ0g7cUJBQU0sSUFDTCxHQUFHLEtBQUssZUFBZTtvQkFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQ3pDO29CQUNBLGFBQWEsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQzVDO3dCQUNFLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQzt3QkFDdEMsR0FBRyxZQUFZLENBQUMsYUFBYTtxQkFDOUIsRUFDRCxTQUFTLENBQ1YsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3BELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pFLENBQUMsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3JEO2FBQ0Y7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxnQkFBMEIsRUFBRTtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO2lCQUNULFFBQVEsRUFBRTtpQkFDVixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBdUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXpFVSxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQThGRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQVk7Q0FDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlcyB9IGZyb20gJy4uL2NvbnN0cy9lcnJvci1tZXNzYWdlcy5jb25zdHMnO1xyXG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vY29uc3RzL3RyYW5zbGF0aW9ucy5jb25zdHMnO1xyXG5pbXBvcnQgeyBVc2VyQ2xhaW0gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1jbGFpbS5tb2RlbHMnO1xyXG5pbXBvcnQgeyBtZXJnZVVuaXF1ZUJ5S2V5IH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LXV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic0NvbXBvbmVudHNTZXJ2aWNlIHtcclxuICBkZWZhdWx0Q29uZmlnOiBFY2Fic0NvbXBvbmVudHNDb25maWcgPSB7XHJcbiAgICBkZWZhdWx0Q291bnRyaWVzOiBbXSxcclxuICAgIGVycm9yTWVzc2FnZXM6IFsuLi5lcnJvck1lc3NhZ2VzXSxcclxuICAgIGkxOG4sXHJcbiAgICBjbGFpbXM6IFtdLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogQmVoYXZpb3JTdWJqZWN0PEVjYWJzQ29tcG9uZW50c0NvbmZpZz4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxFY2Fic0NvbXBvbmVudHNDb25maWc+KHRoaXMuZGVmYXVsdENvbmZpZyk7XHJcblxyXG4gIHNldENvbmZpZyhjb25maWc6IEVjYWJzQ29tcG9uZW50c0NvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnLm5leHQoY29uZmlnKTtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZygpOiBPYnNlcnZhYmxlPEVjYWJzQ29tcG9uZW50c0NvbmZpZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNvbmZpZyhjb25maWdVcGRhdGU6IEVjYWJzQ29tcG9uZW50c0NvbmZpZyk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuX2NvbmZpZy5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgdXBkYXRlZENvbmZpZzogRWNhYnNDb21wb25lbnRzQ29uZmlnID0gbmV3IEdlbmVyaWNDb21wb25lbnRDb25maWcoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50Q29uZmlnKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudENvbmZpZywga2V5KSAmJlxyXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb25maWdVcGRhdGUsIGtleSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYWltcycgJiYgQXJyYXkuaXNBcnJheShjb25maWdVcGRhdGUuY2xhaW1zKSkge1xyXG4gICAgICAgICAgdXBkYXRlZENvbmZpZy5jbGFpbXMgPSBtZXJnZVVuaXF1ZUJ5S2V5KFxyXG4gICAgICAgICAgICBbLi4uKGN1cnJlbnRDb25maWcuY2xhaW1zIHx8IFtdKSwgLi4uY29uZmlnVXBkYXRlLmNsYWltc10sXHJcbiAgICAgICAgICAgICdjbGFpbScsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBrZXkgPT09ICdlcnJvck1lc3NhZ2VzJyAmJlxyXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShjb25maWdVcGRhdGUuZXJyb3JNZXNzYWdlcylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHVwZGF0ZWRDb25maWcuZXJyb3JNZXNzYWdlcyA9IG1lcmdlVW5pcXVlQnlLZXkoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAuLi4oY3VycmVudENvbmZpZy5lcnJvck1lc3NhZ2VzIHx8IFtdKSxcclxuICAgICAgICAgICAgICAuLi5jb25maWdVcGRhdGUuZXJyb3JNZXNzYWdlcyxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdXBkYXRlZENvbmZpZ1trZXldID0gQXJyYXkuaXNBcnJheShjdXJyZW50Q29uZmlnW2tleV0pXHJcbiAgICAgICAgICAgID8gbWVyZ2VVbmlxdWVCeUtleShbLi4uY3VycmVudENvbmZpZ1trZXldLCAuLi5jb25maWdVcGRhdGVba2V5XV0pXHJcbiAgICAgICAgICAgIDogeyAuLi5jdXJyZW50Q29uZmlnW2tleV0sIC4uLmNvbmZpZ1VwZGF0ZVtrZXldIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZWRDb25maWdba2V5XSA9IGN1cnJlbnRDb25maWdba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2NvbmZpZy5uZXh0KHVwZGF0ZWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2xhaW0oYWxsb3dlZENsYWltczogc3RyaW5nW10gPSBbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlckNsYWltcyA9IHRoaXMuX2NvbmZpZy5nZXRWYWx1ZSgpLmNsYWltc1xyXG4gICAgICA/IHRoaXMuX2NvbmZpZ1xyXG4gICAgICAgICAgLmdldFZhbHVlKClcclxuICAgICAgICAgIC5jbGFpbXMubWFwKChhcHBVc2VyQ2xhaW06IFVzZXJDbGFpbSkgPT4gYXBwVXNlckNsYWltLmNsYWltKVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoYWxsb3dlZENsYWltcy5pbmNsdWRlcygnYWxsb3cnKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlckNsYWltcykge1xyXG4gICAgICByZXR1cm4gYWxsb3dlZENsYWltcy5ldmVyeSgoY2xhaW0pID0+IHVzZXJDbGFpbXMuaW5jbHVkZXMoY2xhaW0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVjYWJzQ29tcG9uZW50c0NvbmZpZyB7XHJcbiAgZGVmYXVsdENvdW50cmllcz86IHN0cmluZ1tdO1xyXG4gIGVycm9yTWVzc2FnZXM/OiBFcnJvck1lc3NhZ2VbXTtcclxuICBpMThuPzogRWNhYnNpMThuO1xyXG4gIGNsYWltcz86IFVzZXJDbGFpbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWVzc2FnZSB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWNhYnNpMThuIHtcclxuICBjYW5jZWxMYWJlbD86IHN0cmluZztcclxuICBjb25maXJtTGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ29tcG9uZW50Q29uZmlnIGltcGxlbWVudHMgRWNhYnNDb21wb25lbnRzQ29uZmlnIHtcclxuICBkZWZhdWx0Q291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XHJcbiAgaTE4bjogRWNhYnNpMThuO1xyXG59XHJcbiJdfQ==
|
|
@@ -56,4 +56,15 @@ export const removeEmpty = (o, exceptProperties = []) => {
|
|
|
56
56
|
}
|
|
57
57
|
return o;
|
|
58
58
|
};
|
|
59
|
-
|
|
59
|
+
export const mergeUniqueByKey = (arr, key) => {
|
|
60
|
+
const mergedMap = new Map();
|
|
61
|
+
arr.forEach((item) => {
|
|
62
|
+
if (!item[key]) {
|
|
63
|
+
mergedMap.set(item, item);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
mergedMap.set(item[key], item);
|
|
67
|
+
});
|
|
68
|
+
return Array.from(mergedMap.values());
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvdXRpbHMvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sUUFBUSxHQUFHLENBQUksR0FBTSxFQUFFLFVBQXFCLEVBQU8sRUFBRTtJQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZDLFFBQVEsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUMzQixLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUM7WUFFcEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ25EO1FBRUQsS0FBSyxRQUFRO1lBQ1gsT0FBUSxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXpDLEtBQUssUUFBUTtZQUNYLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFZLENBQUMsQ0FBQztRQUV0RTtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLElBQU8sRUFDUCxJQUFPLEVBQ1AsVUFBcUIsRUFDYixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLElBQUksTUFBTSxH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QUFTLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQztJQUN2QyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNkLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE9BQU87U0FDUjtRQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU29ydGVyPFQ+IHtcclxuICBwcm9wZXJ0eTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmcgfCBudW1iZXIgfCBEYXRlPjtcclxuICBpc0Rlc2NlbmRpbmc6IGJvb2xlYW47XHJcbiAgZGF0YVR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnO1xyXG59XHJcblxyXG5jb25zdCBnZXRWYWx1ZSA9IDxUPihvYmo6IFQsIHNvcnRQYXJhbXM6IFNvcnRlcjxUPik6IGFueSA9PiB7XHJcbiAgY29uc3QgdmFsdWUgPSBvYmpbc29ydFBhcmFtcy5wcm9wZXJ0eV07XHJcblxyXG4gIHN3aXRjaCAoc29ydFBhcmFtcy5kYXRhVHlwZSkge1xyXG4gICAgY2FzZSAnZGF0ZSc6IHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlIGFzIGFueSk7XHJcblxyXG4gICAgICByZXR1cm4gaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gMCA6IGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHJldHVybiAodmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiBwYXJzZUZsb2F0KHZhbHVlIGFzIGFueSk7XHJcblxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0R2VuZXJpYyA9IDxUPihcclxuICBvYmpYOiBULFxyXG4gIG9ialk6IFQsXHJcbiAgc29ydFBhcmFtczogU29ydGVyPFQ+LFxyXG4pOiBudW1iZXIgPT4ge1xyXG4gIGNvbnN0IHZhbHVlWCA9IGdldFZhbHVlKG9ialgsIHNvcnRQYXJhbXMpO1xyXG4gIGNvbnN0IHZhbHVlWSA9IGdldFZhbHVlKG9ialksIHNvcnRQYXJhbXMpO1xyXG5cclxuICBpZiAodmFsdWVYID4gdmFsdWVZKSB7XHJcbiAgICByZXR1cm4gc29ydFBhcmFtcy5pc0Rlc2NlbmRpbmcgPyAtMSA6IDE7XHJcbiAgfSBlbHNlIGlmICh2YWx1ZVggPCB2YWx1ZVkpIHtcclxuICAgIHJldHVybiBzb3J0UGFyYW1zLmlzRGVzY2VuZGluZyA/IDEgOiAtMTtcclxuICB9XHJcblxyXG4gIHJldHVybiAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZU51bGxVbmRlZmluZWRzID0gPFQ+KFxyXG4gIG9iaixcclxuICBleGNlcHRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdLFxyXG4pOiBUID0+IHtcclxuICBjb25zdCBuZXdPYmogPSB7fTtcclxuXHJcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgIGlmIChvYmpba2V5XSA9PT0gT2JqZWN0KG9ialtrZXldKSkge1xyXG4gICAgICBuZXdPYmpba2V5XSA9IHJlbW92ZU51bGxVbmRlZmluZWRzKG9ialtrZXldLCBleGNlcHRQcm9wZXJ0aWVzKTtcclxuICAgIH0gZWxzZSBpZiAob2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXHJcbiAgY29uc3QgcGlja0J5ID0gKG9iamVjdCwgcHJlZGljYXRlID0gKHYpID0+IHYpID0+XHJcbiAgICBPYmplY3QuZW50cmllcyhvYmplY3QpXHJcbiAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnNcclxuICAgICAgLmZpbHRlcigoW2ssIHZdKSA9PiBwcmVkaWNhdGUodikpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgW2ssIHZdKSA9PiAoeyAuLi5hY2MsIFtrXTogdiB9KSwge30pO1xyXG5cclxuICByZXR1cm4gcmVtb3ZlRW1wdHkoXHJcbiAgICBwaWNrQnkob2JqLCAodikgPT4gdiAhPT0gbnVsbCksXHJcbiAgICBleGNlcHRQcm9wZXJ0aWVzLFxyXG4gICkgYXMgVDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVFbXB0eSA9IDxUPihvLCBleGNlcHRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdKTogVCA9PiB7XHJcbiAgZm9yIChjb25zdCBrIGluIG8pIHtcclxuICAgIGlmIChcclxuICAgICAgIW9ba10gfHxcclxuICAgICAgdHlwZW9mIG9ba10gIT09ICdvYmplY3QnIHx8XHJcbiAgICAgIGV4Y2VwdFByb3BlcnRpZXMuZmluZEluZGV4KChwcm9wZXJ0eSkgPT4gcHJvcGVydHkgPT09IGspICE9PSAtMVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUVtcHR5KG9ba10pO1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKG9ba10pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlXHJcbiAgICAgIGRlbGV0ZSBvW2tdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG87XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbWVyZ2VVbmlxdWVCeUtleSA9IDxUPihhcnI6IFRbXSwga2V5Pzoga2V5b2YgVCk6IFRbXSA9PiB7XHJcbiAgY29uc3QgbWVyZ2VkTWFwID0gbmV3IE1hcDxzdHJpbmcsIFQ+KCk7XHJcbiAgYXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgIGlmICghaXRlbVtrZXldKSB7XHJcbiAgICAgIG1lcmdlZE1hcC5zZXQoaXRlbSBhcyBzdHJpbmcsIGl0ZW0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBtZXJnZWRNYXAuc2V0KGl0ZW1ba2V5XSBhcyBzdHJpbmcsIGl0ZW0pO1xyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1lcmdlZE1hcC52YWx1ZXMoKSk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -16,6 +16,7 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
16
16
|
destroyRef;
|
|
17
17
|
ngSelect;
|
|
18
18
|
appearance = 'outline';
|
|
19
|
+
appendTo = '';
|
|
19
20
|
items = [];
|
|
20
21
|
bindLabel = 'label';
|
|
21
22
|
bindValue = 'value';
|
|
@@ -60,7 +61,7 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
60
61
|
}
|
|
61
62
|
ngOnInit() {
|
|
62
63
|
this.initTrackBy();
|
|
63
|
-
this.placeholder = this.label;
|
|
64
|
+
this.placeholder = this.placeholder || this.label;
|
|
64
65
|
this.notFoundText = 'No data found';
|
|
65
66
|
this.selectAllLabel = 'All';
|
|
66
67
|
this.showLocalLoading = false; // hide default loading icon in ElementWrapper
|
|
@@ -150,13 +151,13 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
150
151
|
};
|
|
151
152
|
}
|
|
152
153
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
|
|
154
155
|
{
|
|
155
156
|
provide: NG_VALUE_ACCESSOR,
|
|
156
157
|
multi: true,
|
|
157
158
|
useExisting: EcabsSelectV2Component,
|
|
158
159
|
},
|
|
159
|
-
], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
160
|
+
], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
160
161
|
}
|
|
161
162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, decorators: [{
|
|
162
163
|
type: Component,
|
|
@@ -166,12 +167,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
166
167
|
multi: true,
|
|
167
168
|
useExisting: EcabsSelectV2Component,
|
|
168
169
|
},
|
|
169
|
-
], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
|
|
170
|
+
], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
|
|
170
171
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
|
|
171
172
|
type: ViewChild,
|
|
172
173
|
args: [NgSelectComponent, { static: true }]
|
|
173
174
|
}], appearance: [{
|
|
174
175
|
type: Input
|
|
176
|
+
}], appendTo: [{
|
|
177
|
+
type: Input
|
|
175
178
|
}], items: [{
|
|
176
179
|
type: Input
|
|
177
180
|
}], bindLabel: [{
|
|
@@ -213,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
213
216
|
}], othersLabel: [{
|
|
214
217
|
type: Input
|
|
215
218
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1QsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFjaEUsTUFBTSxPQUFPLHNCQUNYLFNBQVEseUJBQXlCO0lBMEZkO0lBQ0E7SUF2Rm5CLFFBQVEsQ0FBb0I7SUFHNUIsVUFBVSxHQUE0QixTQUFTLENBQUM7SUFHaEQsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFHMUIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUdwQixTQUFTLEdBQUcsT0FBTyxDQUFDO0lBR3BCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUczQixVQUFVLENBQVU7SUFHcEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLFlBQVksQ0FBUztJQUdyQixZQUFZLENBQVU7SUFHdEIsZ0JBQWdCLEdBQUcs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RFQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBOZ0NvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTZWxlY3RWYWx1ZSB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL2VsZW1lbnQubW9kZWxzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1zZWxlY3QtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLXNlbGVjdC12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1NlbGVjdFYyQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNTZWxlY3RWMkNvbXBvbmVudFxyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgT25Jbml0XHJcbntcclxuICBAVmlld0NoaWxkKE5nU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIG5nU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlYXJhbmNlOiAndW5kZXJsaW5lJyB8ICdvdXRsaW5lJyA9ICdvdXRsaW5lJztcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtczogU2VsZWN0VmFsdWVbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRMYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmluZFZhbHVlID0gJ3ZhbHVlJztcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZVNlYXJjaFRlcm0gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWFyY2hhYmxlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBub3RGb3VuZFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlU2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJPbkJhY2tzcGFjZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyU2VhcmNoT25BZGQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHJhY2tCeUZuOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluTGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlYWhlYWQ6IFN1YmplY3Q8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhckFsbFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RBbGxMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyTGFiZWwgPSAnT3RoZXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyc0xhYmVsID0gJ090aGVycyc7XHJcblxyXG4gIHRvdWNoZWQgPSBmYWxzZTtcclxuICB2YWw6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc09wZW46IGJvb2xlYW47XHJcbiAgZ3JvdXBCeUtleSA9ICdzZWxlY3RBbGxJZGVudGlmaWVyJztcclxuICBzZWxlY3RlZE11bHRpID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RWYWx1ZVtdO1xyXG4gIGlzVHlwZUFoZWFkOiBib29sZWFuO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5sYWJlbDtcclxuICAgIHRoaXMubm90Rm91bmRUZXh0ID0gJ05vIGRhdGEgZm91bmQnO1xyXG4gICAgdGhpcy5zZWxlY3RBbGxMYWJlbCA9ICdBbGwnO1xyXG4gICAgdGhpcy5zaG93TG9jYWxMb2FkaW5nID0gZmFsc2U7IC8vIGhpZGUgZGVmYXVsdCBsb2FkaW5nIGljb24gaW4gRWxlbWVudFdyYXBwZXJcclxuICAgIHRoaXMuY2xlYXJBbGxUZXh0ID0gJ0NsZWFyIGFsbCc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcblxyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XHJcblxyXG4gICAgdGhpcy50eXBlYWhlYWRcclxuICAgICAgPy5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxyXG4gICAgICAgIGZpbHRlcigodGVybSkgPT4gISF0ZXJtKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICB0aGlzLmlzVHlwZUFoZWFkID0gISF2YWw7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBpdGVtcywgbXVsdGlwbGUgfSA9IGNoYW5nZXMgPz8ge307XHJcblxyXG4gICAgaWYgKGl0ZW1zPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSB0aGlzLml0ZW1zO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbEZuKHRoaXMuaXRlbXNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobXVsdGlwbGU/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb3NlT25TZWxlY3QgPSB0aGlzLmNsb3NlT25TZWxlY3QgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2hPbkFkZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IG9uVG91Y2hlZDtcclxuICB9XHJcblxyXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCh0aGlzLnZhbHVlKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNUeXBlQWhlYWQgJiZcclxuICAgICAgIXRoaXMubmdTZWxlY3QuaXNPcGVuICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuc2VsZWN0ZWRNdWx0aTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbEZuKGl0ZW1zOiBTZWxlY3RWYWx1ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAoISFpdGVtcz8ubGVuZ3RoICYmIHRoaXMubXVsdGlwbGUgJiYgIXRoaXMudHlwZWFoZWFkKSB7XHJcbiAgICAgIGNvbnN0IGFsbFNlbGVjdCA9IChlbGVtZW50czogU2VsZWN0VmFsdWVbXSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IFNlbGVjdFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50W3RoaXMuZ3JvdXBCeUtleV0gPSAnJztcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGFsbFNlbGVjdChpdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkKGV2ZW50OiBTZWxlY3RWYWx1ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIWV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aSA9IGV2ZW50O1xyXG4gICAgICBjb25zdCB2YWx1ZXNUb0NoZWNrID0gbmV3IFNldChldmVudC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWRMaXN0ID1cclxuICAgICAgICB0aGlzLml0ZW1zPy5maWx0ZXIoKHsgdmFsdWU6IGl0ZW0gfSkgPT4gIXZhbHVlc1RvQ2hlY2suaGFzKGl0ZW0pKSB8fCBbXTtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSBbLi4udGhpcy5zZWxlY3RlZE11bHRpLCAuLi5maWx0ZXJlZExpc3RdO1xyXG5cclxuICAgICAgaWYgKGV2ZW50Py5sZW5ndGggPT09IHRoaXMuaXRlbXNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm5nU2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubmdTZWxlY3QuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpbml0VHJhY2tCeSgpIHtcclxuICAgIHRoaXMudHJhY2tCeUZuID0gKGl0ZW06IFNlbGVjdFZhbHVlKSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtPy52YWx1ZTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPG5nLXNlbGVjdCBjbGFzcz1cImZvcm0tZmllbGRfX3NlbGVjdFwiXHJcbiAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcclxuICAgICAgICAgICAgIFtsYWJlbEZvcklkXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWwgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZSB8fCBudWxsXCJcclxuICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBCeV09XCJncm91cEJ5S2V5XCJcclxuICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNMaXN0XCJcclxuICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCJtaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3R5cGVUb1NlYXJjaFRleHRdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJ0eXBlYWhlYWRcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxyXG4gICAgICAgICAgICAgW2VkaXRhYmxlU2VhcmNoVGVybV09XCJlZGl0YWJsZVNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgKG9wZW4pPVwidGhpcy5pc09wZW4gPSB0cnVlXCJcclxuICAgICAgICAgICAgIChjbG9zZSk9XCJ0aGlzLmlzT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcclxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0aGlzLmRpc2FibGVkXCI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIj5cclxuICAgICAgICB7eyBpdGVtPy5sYWJlbCB9fVxyXG4gICAgICA8L25nLW9wdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYmluZFZhbHVlICYmICEhYmluZExhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cclxuICAgICAgICA8IS0tI0N1c3RvbSBkaXNwbGF5IG9mIGZpcnN0IHNlbGVjdGVkIGl0ZW0gYW5kICgrMSBtb3JlKSBwYXR0ZXJuIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgc2xpY2U6MDoxXCI+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0/LlsnbGFiZWwnXSB9fSA8c3BhbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgKCt7eyBpdGVtcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIHt7IChpdGVtcz8ubGVuZ3RoID09PSAyID8gb3RoZXJMYWJlbCA6IG90aGVyc0xhYmVsKSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgPCEtLSNBZGQgc2VsZWN0QWxsIGFuZCBpbmRpdmlkdWFsIGNoZWNrYm94ZXMgZm9yIG11bHRpcGxlLWVuYWJsZWQgbGlzdCAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGdyb3VwLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWxlY3RBbGxMYWJlbFwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJpdGVtJD8uWydsYWJlbCddXCI+XHJcbiAgICAgICAgPC9lY2Ficy1jaGVja2JveD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctc2VsZWN0PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1QsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFjaEUsTUFBTSxPQUFPLHNCQUNYLFNBQVEseUJBQXlCO0lBNkZkO0lBQ0E7SUExRm5CLFFBQVEsQ0FBb0I7SUFHNUIsVUFBVSxHQUE0QixTQUFTLENBQUM7SUFHaEQsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUdkLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRzFCLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFHcEIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUdwQixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFHM0IsVUFBVSxDQUFVO0lBR3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUdqQixZQUFZLENBQVM7SUFHckIsWUFB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QURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5cclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuaW1wb3J0IHsgU2VsZWN0VmFsdWUgfSBmcm9tICcuLi9iYXNlL21vZGVscy9lbGVtZW50Lm1vZGVscyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtc2VsZWN0LXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNTZWxlY3RWMkNvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzU2VsZWN0VjJDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdFxyXG57XHJcbiAgQFZpZXdDaGlsZChOZ1NlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBuZ1NlbGVjdDogTmdTZWxlY3RDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBwZWFyYW5jZTogJ3VuZGVybGluZScgfCAnb3V0bGluZScgPSAnb3V0bGluZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBwZW5kVG8gPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtczogU2VsZWN0VmFsdWVbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRMYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmluZFZhbHVlID0gJ3ZhbHVlJztcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZVNlYXJjaFRlcm0gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWFyY2hhYmxlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBub3RGb3VuZFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlU2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJPbkJhY2tzcGFjZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyU2VhcmNoT25BZGQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHJhY2tCeUZuOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluTGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlYWhlYWQ6IFN1YmplY3Q8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhckFsbFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RBbGxMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyTGFiZWwgPSAnT3RoZXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyc0xhYmVsID0gJ090aGVycyc7XHJcblxyXG4gIHRvdWNoZWQgPSBmYWxzZTtcclxuICB2YWw6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc09wZW46IGJvb2xlYW47XHJcbiAgZ3JvdXBCeUtleSA9ICdzZWxlY3RBbGxJZGVudGlmaWVyJztcclxuICBzZWxlY3RlZE11bHRpID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RWYWx1ZVtdO1xyXG4gIGlzVHlwZUFoZWFkOiBib29sZWFuO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLmxhYmVsO1xyXG4gICAgdGhpcy5ub3RGb3VuZFRleHQgPSAnTm8gZGF0YSBmb3VuZCc7XHJcbiAgICB0aGlzLnNlbGVjdEFsbExhYmVsID0gJ0FsbCc7XHJcbiAgICB0aGlzLnNob3dMb2NhbExvYWRpbmcgPSBmYWxzZTsgLy8gaGlkZSBkZWZhdWx0IGxvYWRpbmcgaWNvbiBpbiBFbGVtZW50V3JhcHBlclxyXG4gICAgdGhpcy5jbGVhckFsbFRleHQgPSAnQ2xlYXIgYWxsJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuXHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuXHJcbiAgICB0aGlzLnR5cGVhaGVhZFxyXG4gICAgICA/LnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXHJcbiAgICAgICAgZmlsdGVyKCh0ZXJtKSA9PiAhIXRlcm0pLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNUeXBlQWhlYWQgPSAhIXZhbDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zLCBtdWx0aXBsZSB9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICBpZiAoaXRlbXM/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsRm4odGhpcy5pdGVtc0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtdWx0aXBsZT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VPblNlbGVjdCA9IHRoaXMuY2xvc2VPblNlbGVjdCB8fCBmYWxzZTtcclxuICAgICAgdGhpcy5jbGVhclNlYXJjaE9uQWRkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gb25Ub3VjaGVkO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKHRoaXMudmFsdWUpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pc1R5cGVBaGVhZCAmJlxyXG4gICAgICAhdGhpcy5uZ1NlbGVjdC5pc09wZW4gJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5zZWxlY3RlZE11bHRpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsRm4oaXRlbXM6IFNlbGVjdFZhbHVlW10pOiB2b2lkIHtcclxuICAgIGlmICghIWl0ZW1zPy5sZW5ndGggJiYgdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy50eXBlYWhlYWQpIHtcclxuICAgICAgY29uc3QgYWxsU2VsZWN0ID0gKGVsZW1lbnRzOiBTZWxlY3RWYWx1ZVtdKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRbdGhpcy5ncm91cEJ5S2V5XSA9ICcnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgYWxsU2VsZWN0KGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZWQoZXZlbnQ6IFNlbGVjdFZhbHVlW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5pdGVtcztcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpID0gZXZlbnQ7XHJcbiAgICAgIGNvbnN0IHZhbHVlc1RvQ2hlY2sgPSBuZXcgU2V0KGV2ZW50Lm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkpO1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPVxyXG4gICAgICAgIHRoaXMuaXRlbXM/LmZpbHRlcigoeyB2YWx1ZTogaXRlbSB9KSA9PiAhdmFsdWVzVG9DaGVjay5oYXMoaXRlbSkpIHx8IFtdO1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IFsuLi50aGlzLnNlbGVjdGVkTXVsdGksIC4uLmZpbHRlcmVkTGlzdF07XHJcblxyXG4gICAgICBpZiAoZXZlbnQ/Lmxlbmd0aCA9PT0gdGhpcy5pdGVtc0xpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubmdTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5uZ1NlbGVjdC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRUcmFja0J5KCkge1xyXG4gICAgdGhpcy50cmFja0J5Rm4gPSAoaXRlbTogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0/LnZhbHVlO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8bmctc2VsZWN0IGNsYXNzPVwiZm9ybS1maWVsZF9fc2VsZWN0XCJcclxuICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcclxuICAgICAgICAgICAgIFtsYWJlbEZvcklkXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWwgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZSB8fCBudWxsXCJcclxuICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBCeV09XCJncm91cEJ5S2V5XCJcclxuICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNMaXN0XCJcclxuICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCJtaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3R5cGVUb1NlYXJjaFRleHRdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJ0eXBlYWhlYWRcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxyXG4gICAgICAgICAgICAgW2VkaXRhYmxlU2VhcmNoVGVybV09XCJlZGl0YWJsZVNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgKG9wZW4pPVwidGhpcy5pc09wZW4gPSB0cnVlXCJcclxuICAgICAgICAgICAgIChjbG9zZSk9XCJ0aGlzLmlzT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcclxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0aGlzLmRpc2FibGVkXCI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIj5cclxuICAgICAgICB7eyBpdGVtPy5sYWJlbCB9fVxyXG4gICAgICA8L25nLW9wdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYmluZFZhbHVlICYmICEhYmluZExhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cclxuICAgICAgICA8IS0tI0N1c3RvbSBkaXNwbGF5IG9mIGZpcnN0IHNlbGVjdGVkIGl0ZW0gYW5kICgrMSBtb3JlKSBwYXR0ZXJuIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgc2xpY2U6MDoxXCI+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0/LlsnbGFiZWwnXSB9fSA8c3BhbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgKCt7eyBpdGVtcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIHt7IChpdGVtcz8ubGVuZ3RoID09PSAyID8gb3RoZXJMYWJlbCA6IG90aGVyc0xhYmVsKSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgPCEtLSNBZGQgc2VsZWN0QWxsIGFuZCBpbmRpdmlkdWFsIGNoZWNrYm94ZXMgZm9yIG11bHRpcGxlLWVuYWJsZWQgbGlzdCAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGdyb3VwLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWxlY3RBbGxMYWJlbFwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJpdGVtJD8uWydsYWJlbCddXCI+XHJcbiAgICAgICAgPC9lY2Ficy1jaGVja2JveD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctc2VsZWN0PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
|
|
@@ -419,6 +419,76 @@ const i18n = {
|
|
|
419
419
|
cancelLabel: 'ACTIONS.CANCEL',
|
|
420
420
|
};
|
|
421
421
|
|
|
422
|
+
const getValue = (obj, sortParams) => {
|
|
423
|
+
const value = obj[sortParams.property];
|
|
424
|
+
switch (sortParams.dataType) {
|
|
425
|
+
case 'date': {
|
|
426
|
+
const date = new Date(value);
|
|
427
|
+
return isNaN(date.getTime()) ? 0 : date.getTime();
|
|
428
|
+
}
|
|
429
|
+
case 'string':
|
|
430
|
+
return value.toLowerCase();
|
|
431
|
+
case 'number':
|
|
432
|
+
return typeof value === 'number' ? value : parseFloat(value);
|
|
433
|
+
default:
|
|
434
|
+
return value;
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
const sortGeneric = (objX, objY, sortParams) => {
|
|
438
|
+
const valueX = getValue(objX, sortParams);
|
|
439
|
+
const valueY = getValue(objY, sortParams);
|
|
440
|
+
if (valueX > valueY) {
|
|
441
|
+
return sortParams.isDescending ? -1 : 1;
|
|
442
|
+
}
|
|
443
|
+
else if (valueX < valueY) {
|
|
444
|
+
return sortParams.isDescending ? 1 : -1;
|
|
445
|
+
}
|
|
446
|
+
return 0;
|
|
447
|
+
};
|
|
448
|
+
const removeNullUndefineds = (obj, exceptProperties = []) => {
|
|
449
|
+
const newObj = {};
|
|
450
|
+
Object.keys(obj).forEach((key) => {
|
|
451
|
+
if (obj[key] === Object(obj[key])) {
|
|
452
|
+
newObj[key] = removeNullUndefineds(obj[key], exceptProperties);
|
|
453
|
+
}
|
|
454
|
+
else if (obj[key] !== undefined) {
|
|
455
|
+
newObj[key] = obj[key];
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
459
|
+
const pickBy = (object, predicate = (v) => v) => Object.entries(object)
|
|
460
|
+
//eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
|
|
461
|
+
.filter(([k, v]) => predicate(v))
|
|
462
|
+
.reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
|
|
463
|
+
return removeEmpty(pickBy(obj, (v) => v !== null), exceptProperties);
|
|
464
|
+
};
|
|
465
|
+
const removeEmpty = (o, exceptProperties = []) => {
|
|
466
|
+
for (const k in o) {
|
|
467
|
+
if (!o[k] ||
|
|
468
|
+
typeof o[k] !== 'object' ||
|
|
469
|
+
exceptProperties.findIndex((property) => property === k) !== -1) {
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
removeEmpty(o[k]);
|
|
473
|
+
if (Object.keys(o[k]).length === 0) {
|
|
474
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
475
|
+
delete o[k];
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return o;
|
|
479
|
+
};
|
|
480
|
+
const mergeUniqueByKey = (arr, key) => {
|
|
481
|
+
const mergedMap = new Map();
|
|
482
|
+
arr.forEach((item) => {
|
|
483
|
+
if (!item[key]) {
|
|
484
|
+
mergedMap.set(item, item);
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
mergedMap.set(item[key], item);
|
|
488
|
+
});
|
|
489
|
+
return Array.from(mergedMap.values());
|
|
490
|
+
};
|
|
491
|
+
|
|
422
492
|
class EcabsComponentsService {
|
|
423
493
|
defaultConfig = {
|
|
424
494
|
defaultCountries: [],
|
|
@@ -439,9 +509,21 @@ class EcabsComponentsService {
|
|
|
439
509
|
for (const key in currentConfig) {
|
|
440
510
|
if (Object.prototype.hasOwnProperty.call(currentConfig, key) &&
|
|
441
511
|
Object.prototype.hasOwnProperty.call(configUpdate, key)) {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
512
|
+
if (key === 'claims' && Array.isArray(configUpdate.claims)) {
|
|
513
|
+
updatedConfig.claims = mergeUniqueByKey([...(currentConfig.claims || []), ...configUpdate.claims], 'claim');
|
|
514
|
+
}
|
|
515
|
+
else if (key === 'errorMessages' &&
|
|
516
|
+
Array.isArray(configUpdate.errorMessages)) {
|
|
517
|
+
updatedConfig.errorMessages = mergeUniqueByKey([
|
|
518
|
+
...(currentConfig.errorMessages || []),
|
|
519
|
+
...configUpdate.errorMessages,
|
|
520
|
+
], 'message');
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
updatedConfig[key] = Array.isArray(currentConfig[key])
|
|
524
|
+
? mergeUniqueByKey([...currentConfig[key], ...configUpdate[key]])
|
|
525
|
+
: { ...currentConfig[key], ...configUpdate[key] };
|
|
526
|
+
}
|
|
445
527
|
}
|
|
446
528
|
else {
|
|
447
529
|
updatedConfig[key] = currentConfig[key];
|
|
@@ -1627,6 +1709,7 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
1627
1709
|
destroyRef;
|
|
1628
1710
|
ngSelect;
|
|
1629
1711
|
appearance = 'outline';
|
|
1712
|
+
appendTo = '';
|
|
1630
1713
|
items = [];
|
|
1631
1714
|
bindLabel = 'label';
|
|
1632
1715
|
bindValue = 'value';
|
|
@@ -1671,7 +1754,7 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
1671
1754
|
}
|
|
1672
1755
|
ngOnInit() {
|
|
1673
1756
|
this.initTrackBy();
|
|
1674
|
-
this.placeholder = this.label;
|
|
1757
|
+
this.placeholder = this.placeholder || this.label;
|
|
1675
1758
|
this.notFoundText = 'No data found';
|
|
1676
1759
|
this.selectAllLabel = 'All';
|
|
1677
1760
|
this.showLocalLoading = false; // hide default loading icon in ElementWrapper
|
|
@@ -1761,13 +1844,13 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
|
|
|
1761
1844
|
};
|
|
1762
1845
|
}
|
|
1763
1846
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1764
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
|
|
1847
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
|
|
1765
1848
|
{
|
|
1766
1849
|
provide: NG_VALUE_ACCESSOR,
|
|
1767
1850
|
multi: true,
|
|
1768
1851
|
useExisting: EcabsSelectV2Component,
|
|
1769
1852
|
},
|
|
1770
|
-
], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4$2.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4$2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4$2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4$2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
1853
|
+
], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4$2.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4$2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4$2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4$2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
1771
1854
|
}
|
|
1772
1855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, decorators: [{
|
|
1773
1856
|
type: Component,
|
|
@@ -1777,12 +1860,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1777
1860
|
multi: true,
|
|
1778
1861
|
useExisting: EcabsSelectV2Component,
|
|
1779
1862
|
},
|
|
1780
|
-
], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
|
|
1863
|
+
], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
|
|
1781
1864
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
|
|
1782
1865
|
type: ViewChild,
|
|
1783
1866
|
args: [NgSelectComponent, { static: true }]
|
|
1784
1867
|
}], appearance: [{
|
|
1785
1868
|
type: Input
|
|
1869
|
+
}], appendTo: [{
|
|
1870
|
+
type: Input
|
|
1786
1871
|
}], items: [{
|
|
1787
1872
|
type: Input
|
|
1788
1873
|
}], bindLabel: [{
|
|
@@ -6452,68 +6537,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6452
6537
|
}]
|
|
6453
6538
|
}] });
|
|
6454
6539
|
|
|
6455
|
-
const getValue = (obj, sortParams) => {
|
|
6456
|
-
const value = obj[sortParams.property];
|
|
6457
|
-
switch (sortParams.dataType) {
|
|
6458
|
-
case 'date': {
|
|
6459
|
-
const date = new Date(value);
|
|
6460
|
-
return isNaN(date.getTime()) ? 0 : date.getTime();
|
|
6461
|
-
}
|
|
6462
|
-
case 'string':
|
|
6463
|
-
return value.toLowerCase();
|
|
6464
|
-
case 'number':
|
|
6465
|
-
return typeof value === 'number' ? value : parseFloat(value);
|
|
6466
|
-
default:
|
|
6467
|
-
return value;
|
|
6468
|
-
}
|
|
6469
|
-
};
|
|
6470
|
-
const sortGeneric = (objX, objY, sortParams) => {
|
|
6471
|
-
const valueX = getValue(objX, sortParams);
|
|
6472
|
-
const valueY = getValue(objY, sortParams);
|
|
6473
|
-
if (valueX > valueY) {
|
|
6474
|
-
return sortParams.isDescending ? -1 : 1;
|
|
6475
|
-
}
|
|
6476
|
-
else if (valueX < valueY) {
|
|
6477
|
-
return sortParams.isDescending ? 1 : -1;
|
|
6478
|
-
}
|
|
6479
|
-
return 0;
|
|
6480
|
-
};
|
|
6481
|
-
const removeNullUndefineds = (obj, exceptProperties = []) => {
|
|
6482
|
-
const newObj = {};
|
|
6483
|
-
Object.keys(obj).forEach((key) => {
|
|
6484
|
-
if (obj[key] === Object(obj[key])) {
|
|
6485
|
-
newObj[key] = removeNullUndefineds(obj[key], exceptProperties);
|
|
6486
|
-
}
|
|
6487
|
-
else if (obj[key] !== undefined) {
|
|
6488
|
-
newObj[key] = obj[key];
|
|
6489
|
-
}
|
|
6490
|
-
});
|
|
6491
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
6492
|
-
const pickBy = (object, predicate = (v) => v) => Object.entries(object)
|
|
6493
|
-
//eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
|
|
6494
|
-
.filter(([k, v]) => predicate(v))
|
|
6495
|
-
.reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
|
|
6496
|
-
return removeEmpty(pickBy(obj, (v) => v !== null), exceptProperties);
|
|
6497
|
-
};
|
|
6498
|
-
const removeEmpty = (o, exceptProperties = []) => {
|
|
6499
|
-
for (const k in o) {
|
|
6500
|
-
if (!o[k] ||
|
|
6501
|
-
typeof o[k] !== 'object' ||
|
|
6502
|
-
exceptProperties.findIndex((property) => property === k) !== -1) {
|
|
6503
|
-
continue;
|
|
6504
|
-
}
|
|
6505
|
-
removeEmpty(o[k]);
|
|
6506
|
-
if (Object.keys(o[k]).length === 0) {
|
|
6507
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
6508
|
-
delete o[k];
|
|
6509
|
-
}
|
|
6510
|
-
}
|
|
6511
|
-
return o;
|
|
6512
|
-
};
|
|
6513
|
-
|
|
6514
6540
|
/**
|
|
6515
6541
|
* Generated bundle index. Do not edit.
|
|
6516
6542
|
*/
|
|
6517
6543
|
|
|
6518
|
-
export { ButtonsComponent, EcabsActiveStatusFilterComponent, EcabsActiveStatusFilterModule, EcabsAttachEmbeddedViewDirective, EcabsAttachEmbeddedViewDirectiveModule, EcabsBreadcrumbComponent, EcabsBreadcrumbModule, EcabsButtonsModule, EcabsCheckPermissionDirectiveModule, EcabsCheckPermissionsDirective, EcabsCheckboxToggleComponent, EcabsCheckboxToggleModule, EcabsComponentsService, EcabsDatePickerComponent, EcabsDatePickerHeaderComponent, EcabsDatePickerHeaderService, EcabsDatePickerModule, EcabsDateRangeModule, EcabsDateRangePickerComponent, EcabsDateRangePickerHeaderComponent, EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent, EcabsDateTimeRangePickerComponent, EcabsDateTimeRangePickerHeaderComponent, EcabsDatetimePickerModule, EcabsDatetimeRangePickerModule, EcabsDialogConfirmComponent, EcabsDialogConfirmModule, EcabsDialogMessageComponent, EcabsDialogMessageModule, EcabsDigitsOnlyDirective, EcabsDigitsOnlyDirectivesModule, EcabsDomObserverDirective, EcabsDomObserverDirectiveModule, EcabsDynamicBgColorDirective, EcabsDynamicBgColorDirectiveModule, EcabsElementMultiplierDirective, EcabsElementMultiplierDirectiveModule, EcabsEmptyPlaceholderComponent, EcabsEmptyPlaceholderModule, EcabsExpansionPanelComponent, EcabsExpansionPanelModule, EcabsFileDropDirective, EcabsFileDropDirectiveModule, EcabsHeaderComponent, EcabsHeaderModule, EcabsHintComponent, EcabsHintModule, EcabsIncrementComponent, EcabsIncrementModule, EcabsInputComponent, EcabsInputModule, EcabsLanguageSelectorComponent, EcabsLanguageSelectorModule, EcabsLoadingComponent, EcabsLoadingModule, EcabsLogoComponent, EcabsLogoModule, EcabsMaskDateDirective, EcabsMaskDateDirectiveModule, EcabsMaskTimeDirective, EcabsMaskTimeDirectiveModule, EcabsMaxDirective, EcabsMenuItemsComponent, EcabsMenuItemsModule, EcabsMinDirective, EcabsMinMaxDirectiveModule, EcabsMultipleDatesPickerComponent, EcabsMultipleDatesPickerModule, EcabsNoteComponent, EcabsNoteModule, EcabsNumberBorderDirective, EcabsNumberBorderDirectiveModule, EcabsPaginatorDirective, EcabsPaginatorDirectiveModule, EcabsPhoneComponent, EcabsPhoneModule, EcabsPipesModule, EcabsPlaceAutocompleteComponent, EcabsPlaceAutocompleteModule, EcabsProfileComponent, EcabsProfileModule, EcabsRadioButtonListComponent, EcabsRadioButtonListModule, EcabsSelectComponent, EcabsSelectModule, EcabsSelectV2Component, EcabsSelectV2Module, EcabsShowOnTruncatedDirective, EcabsShowOnTruncatedDirectiveModule, EcabsSidebarComponent, EcabsSidebarModule, EcabsSliderComponent, EcabsSliderModule, EcabsSpinnerComponent, EcabsTableFilterWrapperComponent, EcabsTableFilterWrapperModule, EcabsTableModule, EcabsTextAreaModule, EcabsTextareaComponent, EcabsTimeListPanelComponent, EcabsTimeRangeDirective, EcabsTimeRangeDirectiveModule, EcabsTimepickerComponent, EcabsTimepickerModule, EcabsTooltipIfTruncatedDirective, EcabsTooltipIfTruncatedDirectiveModule, EcabsTruncatePipe, EcabsUppercaseMaskDirective, EcabsUppercaseMaskDirectiveModule, EcabsValidationComponent, EcabsValidationModule, EcabsValidationViewModule, FormTimePickerService, GenericComponentConfig, HeaderService, MATERIAL_DATETIMEPICKER_FORMATS, TableComponent, UnsubscribeService, ValidationComponent, removeEmpty, removeNullUndefineds, scrollFactory, sortGeneric };
|
|
6544
|
+
export { ButtonsComponent, EcabsActiveStatusFilterComponent, EcabsActiveStatusFilterModule, EcabsAttachEmbeddedViewDirective, EcabsAttachEmbeddedViewDirectiveModule, EcabsBreadcrumbComponent, EcabsBreadcrumbModule, EcabsButtonsModule, EcabsCheckPermissionDirectiveModule, EcabsCheckPermissionsDirective, EcabsCheckboxToggleComponent, EcabsCheckboxToggleModule, EcabsComponentsService, EcabsDatePickerComponent, EcabsDatePickerHeaderComponent, EcabsDatePickerHeaderService, EcabsDatePickerModule, EcabsDateRangeModule, EcabsDateRangePickerComponent, EcabsDateRangePickerHeaderComponent, EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent, EcabsDateTimeRangePickerComponent, EcabsDateTimeRangePickerHeaderComponent, EcabsDatetimePickerModule, EcabsDatetimeRangePickerModule, EcabsDialogConfirmComponent, EcabsDialogConfirmModule, EcabsDialogMessageComponent, EcabsDialogMessageModule, EcabsDigitsOnlyDirective, EcabsDigitsOnlyDirectivesModule, EcabsDomObserverDirective, EcabsDomObserverDirectiveModule, EcabsDynamicBgColorDirective, EcabsDynamicBgColorDirectiveModule, EcabsElementMultiplierDirective, EcabsElementMultiplierDirectiveModule, EcabsEmptyPlaceholderComponent, EcabsEmptyPlaceholderModule, EcabsExpansionPanelComponent, EcabsExpansionPanelModule, EcabsFileDropDirective, EcabsFileDropDirectiveModule, EcabsHeaderComponent, EcabsHeaderModule, EcabsHintComponent, EcabsHintModule, EcabsIncrementComponent, EcabsIncrementModule, EcabsInputComponent, EcabsInputModule, EcabsLanguageSelectorComponent, EcabsLanguageSelectorModule, EcabsLoadingComponent, EcabsLoadingModule, EcabsLogoComponent, EcabsLogoModule, EcabsMaskDateDirective, EcabsMaskDateDirectiveModule, EcabsMaskTimeDirective, EcabsMaskTimeDirectiveModule, EcabsMaxDirective, EcabsMenuItemsComponent, EcabsMenuItemsModule, EcabsMinDirective, EcabsMinMaxDirectiveModule, EcabsMultipleDatesPickerComponent, EcabsMultipleDatesPickerModule, EcabsNoteComponent, EcabsNoteModule, EcabsNumberBorderDirective, EcabsNumberBorderDirectiveModule, EcabsPaginatorDirective, EcabsPaginatorDirectiveModule, EcabsPhoneComponent, EcabsPhoneModule, EcabsPipesModule, EcabsPlaceAutocompleteComponent, EcabsPlaceAutocompleteModule, EcabsProfileComponent, EcabsProfileModule, EcabsRadioButtonListComponent, EcabsRadioButtonListModule, EcabsSelectComponent, EcabsSelectModule, EcabsSelectV2Component, EcabsSelectV2Module, EcabsShowOnTruncatedDirective, EcabsShowOnTruncatedDirectiveModule, EcabsSidebarComponent, EcabsSidebarModule, EcabsSliderComponent, EcabsSliderModule, EcabsSpinnerComponent, EcabsTableFilterWrapperComponent, EcabsTableFilterWrapperModule, EcabsTableModule, EcabsTextAreaModule, EcabsTextareaComponent, EcabsTimeListPanelComponent, EcabsTimeRangeDirective, EcabsTimeRangeDirectiveModule, EcabsTimepickerComponent, EcabsTimepickerModule, EcabsTooltipIfTruncatedDirective, EcabsTooltipIfTruncatedDirectiveModule, EcabsTruncatePipe, EcabsUppercaseMaskDirective, EcabsUppercaseMaskDirectiveModule, EcabsValidationComponent, EcabsValidationModule, EcabsValidationViewModule, FormTimePickerService, GenericComponentConfig, HeaderService, MATERIAL_DATETIMEPICKER_FORMATS, TableComponent, UnsubscribeService, ValidationComponent, mergeUniqueByKey, removeEmpty, removeNullUndefineds, scrollFactory, sortGeneric };
|
|
6519
6545
|
//# sourceMappingURL=ecabs-components.mjs.map
|