nira-falcon 0.1.40 → 0.1.41
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.
|
@@ -13,8 +13,9 @@ export class CoreSelectComponent {
|
|
|
13
13
|
this._defaultValue = data;
|
|
14
14
|
this.init();
|
|
15
15
|
}
|
|
16
|
-
constructor(cdr) {
|
|
16
|
+
constructor(cdr, elRef) {
|
|
17
17
|
this.cdr = cdr;
|
|
18
|
+
this.elRef = elRef;
|
|
18
19
|
this.selectedItem = {};
|
|
19
20
|
this.newItems = [];
|
|
20
21
|
this.isOpenMenu = false;
|
|
@@ -45,11 +46,11 @@ export class CoreSelectComponent {
|
|
|
45
46
|
};
|
|
46
47
|
});
|
|
47
48
|
}
|
|
48
|
-
openMenuClick() {
|
|
49
|
+
openMenuClick(canFocus) {
|
|
49
50
|
if (this.disabled)
|
|
50
51
|
return;
|
|
51
52
|
this.isOpenMenu = !this.isOpenMenu;
|
|
52
|
-
if (this.isOpenMenu) {
|
|
53
|
+
if (this.isOpenMenu && canFocus) {
|
|
53
54
|
setTimeout(() => {
|
|
54
55
|
const element = this.focusableElements.toArray();
|
|
55
56
|
element[0].nativeElement.focus();
|
|
@@ -90,20 +91,28 @@ export class CoreSelectComponent {
|
|
|
90
91
|
}
|
|
91
92
|
onEnterPress(e) {
|
|
92
93
|
if (e.key === 'Enter') {
|
|
93
|
-
this.openMenuClick();
|
|
94
|
+
this.openMenuClick(true);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
|
-
focusOut() {
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
focusOut(event) {
|
|
98
|
+
const nextFocusedElement = event.relatedTarget;
|
|
99
|
+
if (!nextFocusedElement ||
|
|
100
|
+
!this.elRef.nativeElement.contains(nextFocusedElement)) {
|
|
101
|
+
console.log('Focus has left the component!');
|
|
102
|
+
this.isOpenMenu = false;
|
|
103
|
+
this.inputFormControl.markAsTouched();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
console.log('Focus moved within the component.');
|
|
107
|
+
}
|
|
99
108
|
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid blue!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6}.dropdown .menu li:focus{border:1px solid blue!important;outline:none}.dropdown .menu .active{background:#ced4da}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
|
|
102
111
|
}
|
|
103
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, decorators: [{
|
|
104
113
|
type: Component,
|
|
105
|
-
args: [{ selector: 'core-select', template: "<div
|
|
106
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { titleKey: [{
|
|
114
|
+
args: [{ selector: 'core-select', template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid blue!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6}.dropdown .menu li:focus{border:1px solid blue!important;outline:none}.dropdown .menu .active{background:#ced4da}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
|
|
115
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { titleKey: [{
|
|
107
116
|
type: Input
|
|
108
117
|
}], valueKey: [{
|
|
109
118
|
type: Input
|
|
@@ -127,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
127
136
|
type: ViewChildren,
|
|
128
137
|
args: ['focusable']
|
|
129
138
|
}] } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtc2VsZWN0L2NvcmUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLXNlbGVjdC9jb3JlLXNlbGVjdC1mYWxjb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVU3RCxNQUFNLE9BQU8sbUJBQW1CO0lBWTlCLElBQWEsS0FBSyxDQUFDLElBQVM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQWEsWUFBWSxDQUFDLElBQU87UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQVFELFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBMUIxQyxpQkFBWSxHQUFnQixFQUFpQixDQUFDO1FBRzlDLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBQzdCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUlSLFNBQUksR0FBVyxPQUFPLENBQUM7UUFDdkIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBUy9CLFVBQUssR0FBVyxFQUFFLENBQUM7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LEtBQUs7Z0JBQ08sS0FBSztzQkFBakIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNxQixpQkFBaUI7c0JBQTNDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxudHlwZSBNZW51SXRlbTxUPiA9IHtcclxuICB0aXRsZTogVDtcclxuICB2YWx1ZTogVDtcclxufTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtc2VsZWN0JyArIGVudmlyb25tZW50LnRlbXBOYW1lLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtc2VsZWN0JyArIGVudmlyb25tZW50LnN0eWxlTmFtZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlU2VsZWN0Q29tcG9uZW50PFQ+IHtcclxuICBzZWxlY3RlZEl0ZW06IE1lbnVJdGVtPFQ+ID0ge30gYXMgTWVudUl0ZW08VD47XHJcbiAgdGl0bGVLZXlPYmplY3QhOiBrZXlvZiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgdmFsdWVLZXlPYmplY3QhOiBrZXlvZiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgbmV3SXRlbXM6IE1lbnVJdGVtPFQ+W10gPSBbXTtcclxuICBpc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgX2l0ZW1zOiBhbnkgPSBbXTtcclxuICBfZGVmYXVsdFZhbHVlITogVDtcclxuICBASW5wdXQoKSB0aXRsZUtleSE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZUtleSE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaXplOiBzdHJpbmcgPSAnc21hbGwnO1xyXG4gIEBJbnB1dCgpIGNhbkhpZ2hsaWdodEJhY2tncm91bmQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXQgaXRlbXMoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IGRhdGE7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGRlZmF1bHRWYWx1ZShkYXRhOiBUKSB7XHJcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkYXRhO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXSk7XHJcbiAgQFZpZXdDaGlsZHJlbignZm9jdXNhYmxlJykgZm9jdXNhYmxlRWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgY3VycmVudEluZGV4ID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG4gIGluaXQoKSB7XHJcbiAgICB0eXBlIE9iamVjdEtleSA9ICh0eXBlb2YgdGhpcy5faXRlbXMpWzBdO1xyXG4gICAgdGhpcy50aXRsZUtleU9iamVjdCA9IHRoaXMudGl0bGVLZXkgYXMgT2JqZWN0S2V5O1xyXG4gICAgdGhpcy52YWx1ZUtleU9iamVjdCA9IHRoaXMudmFsdWVLZXkgYXMgT2JqZWN0S2V5O1xyXG4gICAgdGhpcy5uZXdJdGVtcyA9IHRoaXMuY2hhbmdlSXRlbXNUeXBlKHRoaXMuX2l0ZW1zKTtcclxuICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kZWZhdWx0VmFsdWUpO1xyXG4gICAgdGhpcy5vbkl0ZW1TZWxlY3QoXHJcbiAgICAgIHRoaXMubmV3SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PSB0aGlzLl9kZWZhdWx0VmFsdWUpLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUl0ZW1zVHlwZShpdGVtczogYW55W10pOiBNZW51SXRlbTxUPltdIHtcclxuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogaXRlbVt0aGlzLnRpdGxlS2V5T2JqZWN0XSxcclxuICAgICAgICB2YWx1ZTogaXRlbVt0aGlzLnZhbHVlS2V5T2JqZWN0XSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1lbnVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmlzT3Blbk1lbnUgPSAhdGhpcy5pc09wZW5NZW51O1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuTWVudSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5mb2N1c2FibGVFbGVtZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgZWxlbWVudFswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH0sIDUwKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZm9jdXNhYmxlRWxlbWVudHMudG9BcnJheSgpO1xyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gKHRoaXMuY3VycmVudEluZGV4ICsgMSkgJSBlbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgIGVsZW1lbnRzW3RoaXMuY3VycmVudEluZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID1cclxuICAgICAgICAodGhpcy5jdXJyZW50SW5kZXggLSAxICsgZWxlbWVudHMubGVuZ3RoKSAlIGVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgZWxlbWVudHNbdGhpcy5jdXJyZW50SW5kZXhdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3Bkb3duSXRlbUtleXByZXNzKGV2ZW50OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLm9uSXRlbVNlbGVjdChpdGVtLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLmlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSXRlbVNlbGVjdChzZWxlY3RlZEl0ZW06IE1lbnVJdGVtPFQ+IHwgdW5kZWZpbmVkLCBpc0Zyb21VaTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRnJvbVVpKSB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5pc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgICBpZiAoIXNlbGVjdGVkSXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbTtcclxuICAgIGNvbnN0IG1haW5JdGVtID0gdGhpcy5faXRlbXMuZmluZChcclxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLnZhbHVlS2V5T2JqZWN0XSA9PT0gc2VsZWN0ZWRJdGVtLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkSXRlbS52YWx1ZSk7XHJcbiAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQobWFpbkl0ZW0pO1xyXG4gIH1cclxuICBvbkVudGVyUHJlc3MoZTogYW55KSB7XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5vcGVuTWVudUNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZvY3VzT3V0KCkge1xyXG4gICAgdGhpcy5pc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cImRyb3Bkb3duXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0KClcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdzZWxlY3QtY2xpY2tlZCc6IGlzT3Blbk1lbnUsXHJcbiAgICAgICdoaWdobGlnaHQtYmFja2dyb3VuZCc6XHJcbiAgICAgICAgY2FuSGlnaGxpZ2h0QmFja2dyb3VuZCAmJlxyXG4gICAgICAgIChzZWxlY3RlZEl0ZW0gfCBqc29uKSA9PT0gKHt9IHwganNvbikgJiZcclxuICAgICAgICAhKGlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCAmJiBpbnB1dEZvcm1Db250cm9sLmVycm9ycyksXHJcbiAgICAgIHNlbGVjdEVycm9yOiBpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgJiYgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnMgLFxyXG4gICAgICAnZGlzYWJsZS1zZWxlY3Rvcic6IGRpc2FibGVkLFxyXG5cclxuICAgIH1cIlxyXG4gICAgdGFiaW5kZXg9XCIwXCJcclxuICAgIChrZXlwcmVzcyk9XCJvbkVudGVyUHJlc3MoJGV2ZW50KVwiXHJcbiAgICAoY2xpY2spPVwib3Blbk1lbnVDbGljaygpXCJcclxuICA+XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cInBsYWNlaG9sZGVyLXRvcFwiXHJcbiAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbSB8IGpzb24pICE9ICh7fSB8IGpzb24pXCJcclxuICAgICAgPnt7IGxhYmVsIH19PC9zcGFuXHJcbiAgICA+XHJcbiAgICA8YXJyb3ctZG93bi1pY29uXHJcbiAgICAgIGNsYXNzPVwiY2FyZXQgZmlsbC1zZWNvbmRhcnktdGV4dC1jb2xvciBoLTZcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdjYXJldC1yb3RhdGUnOiBpc09wZW5NZW51IH1cIlxyXG4gICAgPjwvYXJyb3ctZG93bi1pY29uPlxyXG5cclxuICAgIDxzcGFuXHJcbiAgICAgIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICBsYWJlbC5sZW5ndGggPiAwICYmIChzZWxlY3RlZEl0ZW0gfCBqc29uKSA9PSAoe30gfCBqc29uKVxyXG4gICAgICAgICAgPyAncGxhY2Vob2xkZXInXHJcbiAgICAgICAgICA6ICdzZWxlY3RlZCdcclxuICAgICAgXVwiXHJcbiAgICAgID57e1xyXG4gICAgICAgIGxhYmVsLmxlbmd0aCA+IDAgJiYgKHNlbGVjdGVkSXRlbSB8IGpzb24pID09ICh7fSB8IGpzb24pXHJcbiAgICAgICAgICA/IGxhYmVsXHJcbiAgICAgICAgICA6IHNlbGVjdGVkSXRlbS50aXRsZVxyXG4gICAgICB9fTwvc3BhblxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDx1bFxyXG4gICAgY2xhc3M9XCJtZW51IGRyb3Bkb3duXCJcclxuICAgIChrZXlkb3duKT1cImhhbmRsZUtleSgkZXZlbnQpXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ21lbnUtb3Blbic6IGlzT3Blbk1lbnUgfVwiXHJcbiAgPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5ld0l0ZW1zXCJcclxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgI2ZvY3VzYWJsZVxyXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXRlbSA9PSBzZWxlY3RlZEl0ZW0gfVwiXHJcbiAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaXRlbSwgdHJ1ZSlcIlxyXG4gICAgICAoa2V5cHJlc3MpPVwiZHJvcGRvd25JdGVtS2V5cHJlc3MoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGl0ZW0udGl0bGUgfX1cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuICA8ZGl2IGNsYXNzPVwibGFiZWwtZXJyb3Igb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICA8c3BhblxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgaW5wdXRGb3JtQ29udHJvbC50b3VjaGVkICAmJlxyXG4gICAgICBpbnB1dEZvcm1Db250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgPtin24zZhiDZgduM2YTYryDYrtin2YTbjCDYp9iz2Ko8L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtc2VsZWN0L2NvcmUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLXNlbGVjdC9jb3JlLXNlbGVjdC1mYWxjb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVU3RCxNQUFNLE9BQU8sbUJBQW1CO0lBWTlCLElBQWEsS0FBSyxDQUFDLElBQVM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQWEsWUFBWSxDQUFDLElBQU87UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQVFELFlBQW9CLEdBQXNCLEVBQVUsS0FBaUI7UUFBakQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBMUJyRSxpQkFBWSxHQUFnQixFQUFpQixDQUFDO1FBRzlDLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBQzdCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUlSLFNBQUksR0FBVyxPQUFPLENBQUM7UUFDdkIsMkJBQXNCLEdBQUcs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QUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdkM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7K0dBcEhVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHViQ3RCaEMsMCtEQWtFQTs7NEZENUNhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhO2lJQVlkLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNFLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDcUIsaUJBQWlCO3NCQUEzQyxZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbnR5cGUgTWVudUl0ZW08VD4gPSB7XHJcbiAgdGl0bGU6IFQ7XHJcbiAgdmFsdWU6IFQ7XHJcbn07XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXNlbGVjdCcgKyBlbnZpcm9ubWVudC50ZW1wTmFtZSxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXNlbGVjdCcgKyBlbnZpcm9ubWVudC5zdHlsZU5hbWVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVNlbGVjdENvbXBvbmVudDxUPiB7XHJcbiAgc2VsZWN0ZWRJdGVtOiBNZW51SXRlbTxUPiA9IHt9IGFzIE1lbnVJdGVtPFQ+O1xyXG4gIHRpdGxlS2V5T2JqZWN0IToga2V5b2Ygc3RyaW5nIHwgbnVtYmVyO1xyXG4gIHZhbHVlS2V5T2JqZWN0IToga2V5b2Ygc3RyaW5nIHwgbnVtYmVyO1xyXG4gIG5ld0l0ZW1zOiBNZW51SXRlbTxUPltdID0gW107XHJcbiAgaXNPcGVuTWVudSA9IGZhbHNlO1xyXG4gIF9pdGVtczogYW55ID0gW107XHJcbiAgX2RlZmF1bHRWYWx1ZSE6IFQ7XHJcbiAgQElucHV0KCkgdGl0bGVLZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWVLZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nID0gJ3NtYWxsJztcclxuICBASW5wdXQoKSBjYW5IaWdobGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1zKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5faXRlbXMgPSBkYXRhO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0VmFsdWUoZGF0YTogVCkge1xyXG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGF0YTtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25JdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSBpbnB1dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW10pO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZvY3VzYWJsZScpIGZvY3VzYWJsZUVsZW1lbnRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIGN1cnJlbnRJbmRleCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikge31cclxuICBpbml0KCkge1xyXG4gICAgdHlwZSBPYmplY3RLZXkgPSAodHlwZW9mIHRoaXMuX2l0ZW1zKVswXTtcclxuICAgIHRoaXMudGl0bGVLZXlPYmplY3QgPSB0aGlzLnRpdGxlS2V5IGFzIE9iamVjdEtleTtcclxuICAgIHRoaXMudmFsdWVLZXlPYmplY3QgPSB0aGlzLnZhbHVlS2V5IGFzIE9iamVjdEtleTtcclxuICAgIHRoaXMubmV3SXRlbXMgPSB0aGlzLmNoYW5nZUl0ZW1zVHlwZSh0aGlzLl9pdGVtcyk7XHJcbiAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGVmYXVsdFZhbHVlKTtcclxuICAgIHRoaXMub25JdGVtU2VsZWN0KFxyXG4gICAgICB0aGlzLm5ld0l0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT0gdGhpcy5fZGVmYXVsdFZhbHVlKSxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VJdGVtc1R5cGUoaXRlbXM6IGFueVtdKTogTWVudUl0ZW08VD5bXSB7XHJcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdGl0bGU6IGl0ZW1bdGhpcy50aXRsZUtleU9iamVjdF0sXHJcbiAgICAgICAgdmFsdWU6IGl0ZW1bdGhpcy52YWx1ZUtleU9iamVjdF0sXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5NZW51Q2xpY2soY2FuRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmlzT3Blbk1lbnUgPSAhdGhpcy5pc09wZW5NZW51O1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuTWVudSAmJiBjYW5Gb2N1cykge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5mb2N1c2FibGVFbGVtZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgZWxlbWVudFswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH0sIDUwKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZm9jdXNhYmxlRWxlbWVudHMudG9BcnJheSgpO1xyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gKHRoaXMuY3VycmVudEluZGV4ICsgMSkgJSBlbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgIGVsZW1lbnRzW3RoaXMuY3VycmVudEluZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID1cclxuICAgICAgICAodGhpcy5jdXJyZW50SW5kZXggLSAxICsgZWxlbWVudHMubGVuZ3RoKSAlIGVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgZWxlbWVudHNbdGhpcy5jdXJyZW50SW5kZXhdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3Bkb3duSXRlbUtleXByZXNzKGV2ZW50OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLm9uSXRlbVNlbGVjdChpdGVtLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLmlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSXRlbVNlbGVjdChzZWxlY3RlZEl0ZW06IE1lbnVJdGVtPFQ+IHwgdW5kZWZpbmVkLCBpc0Zyb21VaTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRnJvbVVpKSB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5pc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgICBpZiAoIXNlbGVjdGVkSXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbTtcclxuICAgIGNvbnN0IG1haW5JdGVtID0gdGhpcy5faXRlbXMuZmluZChcclxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLnZhbHVlS2V5T2JqZWN0XSA9PT0gc2VsZWN0ZWRJdGVtLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkSXRlbS52YWx1ZSk7XHJcbiAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQobWFpbkl0ZW0pO1xyXG4gIH1cclxuICBvbkVudGVyUHJlc3MoZTogYW55KSB7XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5vcGVuTWVudUNsaWNrKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBmb2N1c091dChldmVudDogRm9jdXNFdmVudCkge1xyXG4gICAgY29uc3QgbmV4dEZvY3VzZWRFbGVtZW50ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICFuZXh0Rm9jdXNlZEVsZW1lbnQgfHxcclxuICAgICAgIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhuZXh0Rm9jdXNlZEVsZW1lbnQpXHJcbiAgICApIHtcclxuICAgICAgY29uc29sZS5sb2coJ0ZvY3VzIGhhcyBsZWZ0IHRoZSBjb21wb25lbnQhJyk7XHJcbiAgICAgIHRoaXMuaXNPcGVuTWVudSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ0ZvY3VzIG1vdmVkIHdpdGhpbiB0aGUgY29tcG9uZW50LicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGV2ZW50KVwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ3NlbGVjdC1jbGlja2VkJzogaXNPcGVuTWVudSxcclxuICAgICAgJ2hpZ2hsaWdodC1iYWNrZ3JvdW5kJzpcclxuICAgICAgICBjYW5IaWdobGlnaHRCYWNrZ3JvdW5kICYmXHJcbiAgICAgICAgKHNlbGVjdGVkSXRlbSB8IGpzb24pID09PSAoe30gfCBqc29uKSAmJlxyXG4gICAgICAgICEoaW5wdXRGb3JtQ29udHJvbC50b3VjaGVkICYmIGlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKSxcclxuICAgICAgc2VsZWN0RXJyb3I6IGlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCAmJiBpbnB1dEZvcm1Db250cm9sLmVycm9ycyAsXHJcbiAgICAgICdkaXNhYmxlLXNlbGVjdG9yJzogZGlzYWJsZWQsXHJcblxyXG4gICAgfVwiXHJcbiAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgKGtleXByZXNzKT1cIm9uRW50ZXJQcmVzcygkZXZlbnQpXCJcclxuICAgIChjbGljayk9XCJvcGVuTWVudUNsaWNrKGZhbHNlKVwiXHJcbiAgPlxyXG4gICAgPHNwYW5cclxuICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlci10b3BcIlxyXG4gICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW0gfCBqc29uKSAhPSAoe30gfCBqc29uKVwiXHJcbiAgICAgID57eyBsYWJlbCB9fTwvc3BhblxyXG4gICAgPlxyXG4gICAgPGFycm93LWRvd24taWNvblxyXG4gICAgICBjbGFzcz1cImNhcmV0IGZpbGwtc2Vjb25kYXJ5LXRleHQtY29sb3IgaC02XCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAnY2FyZXQtcm90YXRlJzogaXNPcGVuTWVudSB9XCJcclxuICAgID48L2Fycm93LWRvd24taWNvbj5cclxuXHJcbiAgICA8c3BhblxyXG4gICAgICBbbmdDbGFzc109XCJbXHJcbiAgICAgICAgbGFiZWwubGVuZ3RoID4gMCAmJiAoc2VsZWN0ZWRJdGVtIHwganNvbikgPT0gKHt9IHwganNvbilcclxuICAgICAgICAgID8gJ3BsYWNlaG9sZGVyJ1xyXG4gICAgICAgICAgOiAnc2VsZWN0ZWQnXHJcbiAgICAgIF1cIlxyXG4gICAgICA+e3tcclxuICAgICAgICBsYWJlbC5sZW5ndGggPiAwICYmIChzZWxlY3RlZEl0ZW0gfCBqc29uKSA9PSAoe30gfCBqc29uKVxyXG4gICAgICAgICAgPyBsYWJlbFxyXG4gICAgICAgICAgOiBzZWxlY3RlZEl0ZW0udGl0bGVcclxuICAgICAgfX08L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuICA8dWxcclxuICAgIGNsYXNzPVwibWVudSBkcm9wZG93blwiXHJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXkoJGV2ZW50KVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdtZW51LW9wZW4nOiBpc09wZW5NZW51IH1cIlxyXG4gID5cclxuICAgIDxsaVxyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBuZXdJdGVtc1wiXHJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICNmb2N1c2FibGVcclxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGl0ZW0gPT0gc2VsZWN0ZWRJdGVtIH1cIlxyXG4gICAgICAoY2xpY2spPVwib25JdGVtU2VsZWN0KGl0ZW0sIHRydWUpXCJcclxuICAgICAgKGtleXByZXNzKT1cImRyb3Bkb3duSXRlbUtleXByZXNzKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgPlxyXG4gICAgICB7eyBpdGVtLnRpdGxlIH19XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbiAgPGRpdiBjbGFzcz1cImxhYmVsLWVycm9yIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgPHNwYW5cclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgIGlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCAgJiZcclxuICAgICAgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgID7Yp9uM2YYg2YHbjNmE2K8g2K7Yp9mE24wg2KfYs9iqPC9zcGFuXHJcbiAgICA+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
package/fesm2022/nira-falcon.mjs
CHANGED
|
@@ -835,8 +835,9 @@ class CoreSelectComponent {
|
|
|
835
835
|
this._defaultValue = data;
|
|
836
836
|
this.init();
|
|
837
837
|
}
|
|
838
|
-
constructor(cdr) {
|
|
838
|
+
constructor(cdr, elRef) {
|
|
839
839
|
this.cdr = cdr;
|
|
840
|
+
this.elRef = elRef;
|
|
840
841
|
this.selectedItem = {};
|
|
841
842
|
this.newItems = [];
|
|
842
843
|
this.isOpenMenu = false;
|
|
@@ -867,11 +868,11 @@ class CoreSelectComponent {
|
|
|
867
868
|
};
|
|
868
869
|
});
|
|
869
870
|
}
|
|
870
|
-
openMenuClick() {
|
|
871
|
+
openMenuClick(canFocus) {
|
|
871
872
|
if (this.disabled)
|
|
872
873
|
return;
|
|
873
874
|
this.isOpenMenu = !this.isOpenMenu;
|
|
874
|
-
if (this.isOpenMenu) {
|
|
875
|
+
if (this.isOpenMenu && canFocus) {
|
|
875
876
|
setTimeout(() => {
|
|
876
877
|
const element = this.focusableElements.toArray();
|
|
877
878
|
element[0].nativeElement.focus();
|
|
@@ -912,20 +913,28 @@ class CoreSelectComponent {
|
|
|
912
913
|
}
|
|
913
914
|
onEnterPress(e) {
|
|
914
915
|
if (e.key === 'Enter') {
|
|
915
|
-
this.openMenuClick();
|
|
916
|
+
this.openMenuClick(true);
|
|
916
917
|
}
|
|
917
918
|
}
|
|
918
|
-
focusOut() {
|
|
919
|
-
|
|
920
|
-
|
|
919
|
+
focusOut(event) {
|
|
920
|
+
const nextFocusedElement = event.relatedTarget;
|
|
921
|
+
if (!nextFocusedElement ||
|
|
922
|
+
!this.elRef.nativeElement.contains(nextFocusedElement)) {
|
|
923
|
+
console.log('Focus has left the component!');
|
|
924
|
+
this.isOpenMenu = false;
|
|
925
|
+
this.inputFormControl.markAsTouched();
|
|
926
|
+
}
|
|
927
|
+
else {
|
|
928
|
+
console.log('Focus moved within the component.');
|
|
929
|
+
}
|
|
921
930
|
}
|
|
922
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
923
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div
|
|
931
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid blue!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6}.dropdown .menu li:focus{border:1px solid blue!important;outline:none}.dropdown .menu .active{background:#ced4da}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
|
|
924
933
|
}
|
|
925
934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, decorators: [{
|
|
926
935
|
type: Component,
|
|
927
|
-
args: [{ selector: 'core-select', template: "<div
|
|
928
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { titleKey: [{
|
|
936
|
+
args: [{ selector: 'core-select', template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid blue!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6}.dropdown .menu li:focus{border:1px solid blue!important;outline:none}.dropdown .menu .active{background:#ced4da}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
|
|
937
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { titleKey: [{
|
|
929
938
|
type: Input
|
|
930
939
|
}], valueKey: [{
|
|
931
940
|
type: Input
|