trm-tmpl 3.3.1 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/pages/components/constructor-form/constructor-form.component.mjs +3 -3
- package/esm2022/lib/app/pages/components/constructor-form/services/constructor-form.service.mjs +1 -1
- package/esm2022/lib/app/shared/components/trm-select/trm-select.component.mjs +3 -3
- package/fesm2022/trm-tmpl.mjs +4 -4
- package/fesm2022/trm-tmpl.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -167,7 +167,7 @@ export class TrmSelectComponent {
|
|
|
167
167
|
useExisting: forwardRef(() => TrmSelectComponent),
|
|
168
168
|
multi: true,
|
|
169
169
|
}
|
|
170
|
-
], queries: [{ propertyName: "labelTeplate", first: true, predicate: TrmSelectLabelTemplateDirective, descendants: true }], ngImport: i0, template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollbarSelectHeightDirective, selector: "ng-scrollbar[appScrollbarSelectHeight]" }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
170
|
+
], queries: [{ propertyName: "labelTeplate", first: true, predicate: TrmSelectLabelTemplateDirective, descendants: true }], ngImport: i0, template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}:host.constructor-field-inner .trm-select-value{min-height:44px;border-top-width:0;border-right-width:0;border-bottom-width:0;border-color:var(--trm-select-border-color)!important}@media (min-width: 768px){:host.constructor-field-inner .trm-select-value{min-height:48px}}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollbarSelectHeightDirective, selector: "ng-scrollbar[appScrollbarSelectHeight]" }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
171
171
|
}
|
|
172
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TrmSelectComponent, decorators: [{
|
|
173
173
|
type: Component,
|
|
@@ -177,7 +177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
177
177
|
useExisting: forwardRef(() => TrmSelectComponent),
|
|
178
178
|
multi: true,
|
|
179
179
|
}
|
|
180
|
-
], animations: [insertRemoveTrigger], standalone: true, imports: [NgTemplateOutlet, NgClass, ScrollbarSelectHeightDirective, NgScrollbar, FormsModule, ReactiveFormsModule, TranslateByKeyPipe], template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"] }]
|
|
180
|
+
], animations: [insertRemoveTrigger], standalone: true, imports: [NgTemplateOutlet, NgClass, ScrollbarSelectHeightDirective, NgScrollbar, FormsModule, ReactiveFormsModule, TranslateByKeyPipe], template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}:host.constructor-field-inner .trm-select-value{min-height:44px;border-top-width:0;border-right-width:0;border-bottom-width:0;border-color:var(--trm-select-border-color)!important}@media (min-width: 768px){:host.constructor-field-inner .trm-select-value{min-height:48px}}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"] }]
|
|
181
181
|
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
182
182
|
type: Input
|
|
183
183
|
}], hasBorder: [{
|
|
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
206
206
|
}], nameLabel: [{
|
|
207
207
|
type: Input
|
|
208
208
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJtLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9zaGFyZWQvY29tcG9uZW50cy90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdHJtLXNlbGVjdC90cm0tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFx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RkFBRSw4QkFBOEIsbUZBQUUsV0FBVywyR0FBRSxXQUFXLHNaQUFFLG1CQUFtQiw2TUFBRSxrQkFBa0IsZ0NBRjFILENBQUMsbUJBQW1CLENBQUM7OzJGQUl4QixrQkFBa0I7a0JBaEI5QixTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixjQUNXLENBQUMsbUJBQW1CLENBQUMsY0FDckIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7d0RBZTlILEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQVV3QyxZQUFZO3NCQUExRCxZQUFZO3VCQUFDLCtCQUErQjtnQkFLcEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBET0NVTUVOVCwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1zTW9kdWxlLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnNlcnRSZW1vdmVUcmlnZ2VyIH0gZnJvbSAnLi8uLi8uLi8uLi9oZWxwZXJzL2luc2VydFJlbW92ZVRyaWdnZXInO1xuaW1wb3J0IHsgSTE4Tl9LRVkgfSBmcm9tICcuLy4uLy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgVHJtU2VsZWN0TGFiZWxUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vdHJtLXNlbGVjdC1sYWJlbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi9zY3JvbGxiYXItc2VsZWN0LWhlaWdodC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdTY3JvbGxiYXIgfSBmcm9tICduZ3gtc2Nyb2xsYmFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS1ieS1rZXkucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRybS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cm0tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90cm0tc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHJtU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9XG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbaW5zZXJ0UmVtb3ZlVHJpZ2dlcl0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcywgU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0RGlyZWN0aXZlLCBOZ1Njcm9sbGJhciwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZUJ5S2V5UGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJtU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIHVuU3Vic2NyaWJlcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBJMThOX0tFWSA9IEkxOE5fS0VZO1xuXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGggPT09IDEgJiYgdGhpcy5zZWxlY3RlZCA9PT0gdGhpcy5nZXRJdGVtVmFsdWUodGhpcy5kYXRhWzBdKVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaGFzQm9yZGVyID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkYXRhOiBhbnlbXSB8IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcbiAgICBASW5wdXQoKSBuYW1lID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBzZWFyY2hhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBoYXNTY3JvbGxiYXIgPSB0cnVlO1xuICAgIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBAT3V0cHV0KCkgb3BlbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHNlbGVjdGVkOiBhbnk7XG4gICAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gICAgZmlsdGVyZWREYXRhID0gW107XG5cbiAgICBvbkNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIH07XG4gICAgb25Ub3VjaCA9ICgpID0+IHtcbiAgICB9O1xuXG4gICAgQENvbnRlbnRDaGlsZChUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlKSBsYWJlbFRlcGxhdGU6IFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmU7XG4gICAgZ2V0IGxhYmVsVHBsKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGFiZWxUZXBsYXRlPy50cGw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbmFtZUlkID0gJ2lkJztcbiAgICBASW5wdXQoKSBuYW1lTGFiZWwgPSAnbmFtZSc7XG4gICAgb3BlbmVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2KSA9PiB0aGlzLm9wZW5lZCAmJiAhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2LnRhcmdldCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlcilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGUoKSk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbT8uW3RoaXMubmFtZUxhYmVsXSB8fCB0aGlzLmdldEl0ZW1MYWJlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5TdWJzY3JpYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoKSA9PiB0aGlzLnRyaWdnZXJTZWFyY2goc2VhcmNoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbGlzdCgpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YT8uZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2FibGVFbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXhdJyk7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBjbG9zZWQgc2VsZWN0IHdoZW4gZm9jdXMgb3V0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gIXRoaXMuZm9jdXNlZCAmJiB0aGlzLnRvZ2dsZSgpLCAxMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoQXV0b2ZvY3VzVGltZXI6IG51bWJlcjtcblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3BlbmVkICYmICF0aGlzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoIXRoaXMuc2VhcmNoYWJsZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSAmJiB0aGlzLmRhdGE/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkID09PSB0aGlzLmRhdGFbMF0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoQXV0b2ZvY3VzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQXV0b2ZvY3VzVGltZXIgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LnNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudHJtLXNlbGVjdC1saXN0X19zZWFyY2ggaW5wdXQnKS5mb2N1cygpLFxuICAgICAgICAgICAgICAgICAgICAyMDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xuICAgICAgICB0aGlzLm9wZW4uZW1pdCh0aGlzLm9wZW5lZCk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRJdGVtVmFsdWUoaXRlbSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPT09IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRJdGVtVmFsdWUoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbT8uW3RoaXMubmFtZUlkXSB8fCBpdGVtO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpZCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlkID0gdGhpcy5nZXRJdGVtVmFsdWUoaWQpO1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRDb2xsZWN0aW9uSXRlbShpZCk7XG4gICAgICAgIHJldHVybiBpdGVtPy5bdGhpcy5uYW1lTGFiZWxdIHx8IGlkO1xuICAgIH1cblxuICAgIGdldENvbGxlY3Rpb25JdGVtKGlkKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maW5kKGYgPT4gdGhpcy5nZXRJdGVtVmFsdWUoZikgPT09IGlkKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoaXRlbSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCAhPT0gdGhpcy5nZXRJdGVtVmFsdWUoaXRlbSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRJdGVtVmFsdWUoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmdldEl0ZW1WYWx1ZShpdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmdldENvbGxlY3Rpb25JdGVtKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUVsLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0Q29sbGVjdGlvbkl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgdHJpZ2dlclNlYXJjaCh2YWx1ZSA9IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5TdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiQGlmIChsYWJlbCkge1xuICA8bGFiZWwgY2xhc3M9XCJ0cm0tbGFiZWxcIlxuICAgICAgICAgW2Zvcl09XCJuYW1lXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gID4ge3sgbGFiZWwgfX0gPC9sYWJlbD5cbn1cbjxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0XCJcbiAgICAgW2NsYXNzLnRybS1zZWxlY3QtLW5vQm9yZGVyZWRdPVwiIWhhc0JvcmRlclwiXG4gICAgIFtjbGFzcy50cm0tc2VsZWN0LS1vcGVuZWRdPVwib3BlbmVkXCJcbiAgICAgW2NsYXNzLnRybS1zZWxlY3QtLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICBbaWRdPVwibmFtZVwiXG4gICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZSgpXCJcbj5cbiAgQGlmIChsYWJlbFRwbCkge1xuICAgIDxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0LXZhbHVlXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICAgICAgQGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVHBsOyBjb250ZXh0OiB7aXRlbTogc2VsZWN0ZWRJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgICAgQGlmICghc2VsZWN0ZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cm0tc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInRybS1zZWxlY3QtdmFsdWVfX2Fycm93XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJtLXNlbGVjdC12YWx1ZV9fYXJyb3ctdG9wJzogb3BlbmVkfVwiPjwvc3Bhbj5cbiAgICAgIEBpZiAoZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRybS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChvcGVuZWQgJiYgaGFzU2Nyb2xsYmFyKSB7XG4gICAgICA8dWwgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RcIiBAaW5zZXJ0UmVtb3ZlPlxuICAgICAgICA8bmctc2Nyb2xsYmFyIGFwcGVhcmFuY2U9XCJjb21wYWN0XCIgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3Qtc2Nyb2xsYmFyXCIgYXBwU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgPC91bD5cbiAgICB9XG4gICAgQGlmIChvcGVuZWQgJiYgIWhhc1Njcm9sbGJhcikge1xuICAgICAgPHVsIGNsYXNzPVwidHJtLXNlbGVjdC1saXN0XCIgQGluc2VydFJlbW92ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdWw+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZSAjbGlzdFRwbD5cbiAgICAgIEBpZiAoc2VhcmNoYWJsZSkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2hcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0cm0tZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJJMThOX0tFWS5TRUxFQ1RfU0VBUkNIIHwgdHJhbnNcIlxuICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCI+XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICBAaWYgKHNlYXJjaGFibGUgJiYgc2VhcmNoQ29udHJvbC52YWx1ZSAmJiBsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2ggdHJtLXNlbGVjdC1saXN0X19zZWFyY2gtdGV4dFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBJMThOX0tFWS5TRUxFQ1RfRU1QVFlfTElTVCB8IHRyYW5zIH19XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICBAZm9yIChpdGVtIG9mIGxpc3Q7IHRyYWNrIGdldEl0ZW1WYWx1ZShpdGVtKSkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIj5cbiAgICAgICAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRwbDsgY29udGV4dDoge2l0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0LXZhbHVlXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGUoKVwiPlxuICAgICAge3sgc2VsZWN0ZWRMYWJlbCB9fVxuICAgICAgQGlmICghc2VsZWN0ZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cm0tc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInRybS1zZWxlY3QtdmFsdWVfX2Fycm93XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJtLXNlbGVjdC12YWx1ZV9fYXJyb3ctdG9wJzogb3BlbmVkfVwiPjwvc3Bhbj5cbiAgICAgIEBpZiAoZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRybS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChvcGVuZWQpIHtcbiAgICAgIDx1bCBjbGFzcz1cInRybS1zZWxlY3QtbGlzdFwiIEBpbnNlcnRSZW1vdmU+XG4gICAgICAgIDxuZy1zY3JvbGxiYXIgY2xhc3M9XCJnbS1zZWxlY3QtbGlzdC1zY3JvbGxiYXJcIiBhcHBTY3JvbGxiYXJTZWxlY3RIZWlnaHQ+XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2hcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidHJtLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIkkxOE5fS0VZLlNFTEVDVF9TRUFSQ0ggfCB0cmFuc1wiXG4gICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlICYmIHNlYXJjaENvbnRyb2wudmFsdWUgJiYgbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRybS1zZWxlY3QtbGlzdF9faXRlbSB0cm0tc2VsZWN0LWxpc3RfX3NlYXJjaCB0cm0tc2VsZWN0LWxpc3RfX3NlYXJjaC10ZXh0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgSTE4Tl9LRVkuU0VMRUNUX0VNUFRZX0xJU1QgfCB0cmFucyB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBsaXN0OyB0cmFjayBnZXRJdGVtVmFsdWUoaXRlbSkpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRybS1zZWxlY3QtbGlzdF9faXRlbVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIj5cbiAgICAgICAgICAgICAge3sgZ2V0SXRlbUxhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy1zY3JvbGxiYXI+XG4gICAgICA8L3VsPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCJbYXBwLXRybS1zZWxlY3QtaGludF1cIj48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJtLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9zaGFyZWQvY29tcG9uZW50cy90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdHJtLXNlbGVjdC90cm0tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQWtCdkUsTUFBTSxPQUFPLGtCQUFrQjtJQVMzQixJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkcsQ0FBQztJQXVCRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDO0lBQ2hDLENBQUM7SUFNRDtRQXpDUSxPQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9CLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBT1gsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JCLENBQUMsQ0FBQztRQUNGLFlBQU8sR0FBRyxHQUFHLEVBQUU7UUFDZixDQUFDLENBQUM7UUFPTyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsY0FBUyxHQUFHLE1BQU0sQ0FBQztRQUM1QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR1gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO2FBQzVCLElBQUksQ0FDRCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FDL0I7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhO2lCQUNiLFlBQVk7aUJBQ1osSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQzVCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FDcEI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELCtCQUErQjtRQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBSUQsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvRyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1RCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFDbkYsR0FBRyxDQUNOLENBQUM7WUFDTixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQUk7UUFDWCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDYixPQUFPLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQUU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNQLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztRQUMxQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQTdMUSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw4VUFYaEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUNqRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osb0VBc0NhLCtCQUErQixnRENqRmpELHkxSUFxSEEsOHBLRHZFYyxnQkFBZ0Isb0pBQUUsT0FBTyxvRkFBRSw4QkFBOEIsbUZBQUUsV0FBVywyR0FBRSxXQUFXLHNaQUFFLG1CQUFtQiw2TUFBRSxrQkFBa0IsZ0NBRjFILENBQUMsbUJBQW1CLENBQUM7OzJGQUl4QixrQkFBa0I7a0JBaEI5QixTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixjQUNXLENBQUMsbUJBQW1CLENBQUMsY0FDckIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7d0RBZTlILEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQVV3QyxZQUFZO3NCQUExRCxZQUFZO3VCQUFDLCtCQUErQjtnQkFLcEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBET0NVTUVOVCwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1zTW9kdWxlLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnNlcnRSZW1vdmVUcmlnZ2VyIH0gZnJvbSAnLi8uLi8uLi8uLi9oZWxwZXJzL2luc2VydFJlbW92ZVRyaWdnZXInO1xuaW1wb3J0IHsgSTE4Tl9LRVkgfSBmcm9tICcuLy4uLy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgVHJtU2VsZWN0TGFiZWxUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vdHJtLXNlbGVjdC1sYWJlbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi9zY3JvbGxiYXItc2VsZWN0LWhlaWdodC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdTY3JvbGxiYXIgfSBmcm9tICduZ3gtc2Nyb2xsYmFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS1ieS1rZXkucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRybS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cm0tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90cm0tc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHJtU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9XG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbaW5zZXJ0UmVtb3ZlVHJpZ2dlcl0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcywgU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0RGlyZWN0aXZlLCBOZ1Njcm9sbGJhciwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZUJ5S2V5UGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJtU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIHVuU3Vic2NyaWJlcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBJMThOX0tFWSA9IEkxOE5fS0VZO1xuXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGggPT09IDEgJiYgdGhpcy5zZWxlY3RlZCA9PT0gdGhpcy5nZXRJdGVtVmFsdWUodGhpcy5kYXRhWzBdKVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaGFzQm9yZGVyID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkYXRhOiBhbnlbXSB8IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcbiAgICBASW5wdXQoKSBuYW1lID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBzZWFyY2hhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBoYXNTY3JvbGxiYXIgPSB0cnVlO1xuICAgIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBAT3V0cHV0KCkgb3BlbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHNlbGVjdGVkOiBhbnk7XG4gICAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gICAgZmlsdGVyZWREYXRhID0gW107XG5cbiAgICBvbkNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIH07XG4gICAgb25Ub3VjaCA9ICgpID0+IHtcbiAgICB9O1xuXG4gICAgQENvbnRlbnRDaGlsZChUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlKSBsYWJlbFRlcGxhdGU6IFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmU7XG4gICAgZ2V0IGxhYmVsVHBsKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGFiZWxUZXBsYXRlPy50cGw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbmFtZUlkID0gJ2lkJztcbiAgICBASW5wdXQoKSBuYW1lTGFiZWwgPSAnbmFtZSc7XG4gICAgb3BlbmVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2KSA9PiB0aGlzLm9wZW5lZCAmJiAhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2LnRhcmdldCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlcilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGUoKSk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbT8uW3RoaXMubmFtZUxhYmVsXSB8fCB0aGlzLmdldEl0ZW1MYWJlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5TdWJzY3JpYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoKSA9PiB0aGlzLnRyaWdnZXJTZWFyY2goc2VhcmNoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbGlzdCgpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YT8uZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2FibGVFbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXhdJyk7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBjbG9zZWQgc2VsZWN0IHdoZW4gZm9jdXMgb3V0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gIXRoaXMuZm9jdXNlZCAmJiB0aGlzLnRvZ2dsZSgpLCAxMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoQXV0b2ZvY3VzVGltZXI6IG51bWJlcjtcblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3BlbmVkICYmICF0aGlzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoIXRoaXMuc2VhcmNoYWJsZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSAmJiB0aGlzLmRhdGE/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkID09PSB0aGlzLmRhdGFbMF0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoQXV0b2ZvY3VzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQXV0b2ZvY3VzVGltZXIgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LnNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudHJtLXNlbGVjdC1saXN0X19zZWFyY2ggaW5wdXQnKS5mb2N1cygpLFxuICAgICAgICAgICAgICAgICAgICAyMDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xuICAgICAgICB0aGlzLm9wZW4uZW1pdCh0aGlzLm9wZW5lZCk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRJdGVtVmFsdWUoaXRlbSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPT09IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRJdGVtVmFsdWUoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbT8uW3RoaXMubmFtZUlkXSB8fCBpdGVtO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpZCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlkID0gdGhpcy5nZXRJdGVtVmFsdWUoaWQpO1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRDb2xsZWN0aW9uSXRlbShpZCk7XG4gICAgICAgIHJldHVybiBpdGVtPy5bdGhpcy5uYW1lTGFiZWxdIHx8IGlkO1xuICAgIH1cblxuICAgIGdldENvbGxlY3Rpb25JdGVtKGlkKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maW5kKGYgPT4gdGhpcy5nZXRJdGVtVmFsdWUoZikgPT09IGlkKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoaXRlbSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCAhPT0gdGhpcy5nZXRJdGVtVmFsdWUoaXRlbSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRJdGVtVmFsdWUoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmdldEl0ZW1WYWx1ZShpdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmdldENvbGxlY3Rpb25JdGVtKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUVsLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0Q29sbGVjdGlvbkl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgdHJpZ2dlclNlYXJjaCh2YWx1ZSA9IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5TdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiQGlmIChsYWJlbCkge1xuICA8bGFiZWwgY2xhc3M9XCJ0cm0tbGFiZWxcIlxuICAgICAgICAgW2Zvcl09XCJuYW1lXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gID4ge3sgbGFiZWwgfX0gPC9sYWJlbD5cbn1cbjxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0XCJcbiAgICAgW2NsYXNzLnRybS1zZWxlY3QtLW5vQm9yZGVyZWRdPVwiIWhhc0JvcmRlclwiXG4gICAgIFtjbGFzcy50cm0tc2VsZWN0LS1vcGVuZWRdPVwib3BlbmVkXCJcbiAgICAgW2NsYXNzLnRybS1zZWxlY3QtLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICBbaWRdPVwibmFtZVwiXG4gICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZSgpXCJcbj5cbiAgQGlmIChsYWJlbFRwbCkge1xuICAgIDxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0LXZhbHVlXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICAgICAgQGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVHBsOyBjb250ZXh0OiB7aXRlbTogc2VsZWN0ZWRJdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgICAgQGlmICghc2VsZWN0ZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cm0tc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInRybS1zZWxlY3QtdmFsdWVfX2Fycm93XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJtLXNlbGVjdC12YWx1ZV9fYXJyb3ctdG9wJzogb3BlbmVkfVwiPjwvc3Bhbj5cbiAgICAgIEBpZiAoZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRybS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChvcGVuZWQgJiYgaGFzU2Nyb2xsYmFyKSB7XG4gICAgICA8dWwgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RcIiBAaW5zZXJ0UmVtb3ZlPlxuICAgICAgICA8bmctc2Nyb2xsYmFyIGFwcGVhcmFuY2U9XCJjb21wYWN0XCIgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3Qtc2Nyb2xsYmFyXCIgYXBwU2Nyb2xsYmFyU2VsZWN0SGVpZ2h0PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgPC91bD5cbiAgICB9XG4gICAgQGlmIChvcGVuZWQgJiYgIWhhc1Njcm9sbGJhcikge1xuICAgICAgPHVsIGNsYXNzPVwidHJtLXNlbGVjdC1saXN0XCIgQGluc2VydFJlbW92ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdWw+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZSAjbGlzdFRwbD5cbiAgICAgIEBpZiAoc2VhcmNoYWJsZSkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2hcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0cm0tZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJJMThOX0tFWS5TRUxFQ1RfU0VBUkNIIHwgdHJhbnNcIlxuICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCI+XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICBAaWYgKHNlYXJjaGFibGUgJiYgc2VhcmNoQ29udHJvbC52YWx1ZSAmJiBsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2ggdHJtLXNlbGVjdC1saXN0X19zZWFyY2gtdGV4dFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBJMThOX0tFWS5TRUxFQ1RfRU1QVFlfTElTVCB8IHRyYW5zIH19XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICBAZm9yIChpdGVtIG9mIGxpc3Q7IHRyYWNrIGdldEl0ZW1WYWx1ZShpdGVtKSkge1xuICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIj5cbiAgICAgICAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRwbDsgY29udGV4dDoge2l0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ0cm0tc2VsZWN0LXZhbHVlXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGUoKVwiPlxuICAgICAge3sgc2VsZWN0ZWRMYWJlbCB9fVxuICAgICAgQGlmICghc2VsZWN0ZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cm0tc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInRybS1zZWxlY3QtdmFsdWVfX2Fycm93XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJtLXNlbGVjdC12YWx1ZV9fYXJyb3ctdG9wJzogb3BlbmVkfVwiPjwvc3Bhbj5cbiAgICAgIEBpZiAoZGF0YSA9PT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRybS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChvcGVuZWQpIHtcbiAgICAgIDx1bCBjbGFzcz1cInRybS1zZWxlY3QtbGlzdFwiIEBpbnNlcnRSZW1vdmU+XG4gICAgICAgIDxuZy1zY3JvbGxiYXIgY2xhc3M9XCJnbS1zZWxlY3QtbGlzdC1zY3JvbGxiYXJcIiBhcHBTY3JvbGxiYXJTZWxlY3RIZWlnaHQ+XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0cm0tc2VsZWN0LWxpc3RfX2l0ZW0gdHJtLXNlbGVjdC1saXN0X19zZWFyY2hcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidHJtLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIkkxOE5fS0VZLlNFTEVDVF9TRUFSQ0ggfCB0cmFuc1wiXG4gICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlICYmIHNlYXJjaENvbnRyb2wudmFsdWUgJiYgbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRybS1zZWxlY3QtbGlzdF9faXRlbSB0cm0tc2VsZWN0LWxpc3RfX3NlYXJjaCB0cm0tc2VsZWN0LWxpc3RfX3NlYXJjaC10ZXh0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgSTE4Tl9LRVkuU0VMRUNUX0VNUFRZX0xJU1QgfCB0cmFucyB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBsaXN0OyB0cmFjayBnZXRJdGVtVmFsdWUoaXRlbSkpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRybS1zZWxlY3QtbGlzdF9faXRlbVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdChpdGVtKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIj5cbiAgICAgICAgICAgICAge3sgZ2V0SXRlbUxhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy1zY3JvbGxiYXI+XG4gICAgICA8L3VsPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCJbYXBwLXRybS1zZWxlY3QtaGludF1cIj48L25nLWNvbnRlbnQ+XG4iXX0=
|
package/fesm2022/trm-tmpl.mjs
CHANGED
|
@@ -4098,7 +4098,7 @@ class TrmSelectComponent {
|
|
|
4098
4098
|
useExisting: forwardRef(() => TrmSelectComponent),
|
|
4099
4099
|
multi: true,
|
|
4100
4100
|
}
|
|
4101
|
-
], queries: [{ propertyName: "labelTeplate", first: true, predicate: TrmSelectLabelTemplateDirective, descendants: true }], ngImport: i0, template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollbarSelectHeightDirective, selector: "ng-scrollbar[appScrollbarSelectHeight]" }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4101
|
+
], queries: [{ propertyName: "labelTeplate", first: true, predicate: TrmSelectLabelTemplateDirective, descendants: true }], ngImport: i0, template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}:host.constructor-field-inner .trm-select-value{min-height:44px;border-top-width:0;border-right-width:0;border-bottom-width:0;border-color:var(--trm-select-border-color)!important}@media (min-width: 768px){:host.constructor-field-inner .trm-select-value{min-height:48px}}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollbarSelectHeightDirective, selector: "ng-scrollbar[appScrollbarSelectHeight]" }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4102
4102
|
}
|
|
4103
4103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TrmSelectComponent, decorators: [{
|
|
4104
4104
|
type: Component,
|
|
@@ -4108,7 +4108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
4108
4108
|
useExisting: forwardRef(() => TrmSelectComponent),
|
|
4109
4109
|
multi: true,
|
|
4110
4110
|
}
|
|
4111
|
-
], animations: [insertRemoveTrigger], standalone: true, imports: [NgTemplateOutlet, NgClass, ScrollbarSelectHeightDirective, NgScrollbar, FormsModule, ReactiveFormsModule, TranslateByKeyPipe], template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"] }]
|
|
4111
|
+
], animations: [insertRemoveTrigger], standalone: true, imports: [NgTemplateOutlet, NgClass, ScrollbarSelectHeightDirective, NgScrollbar, FormsModule, ReactiveFormsModule, TranslateByKeyPipe], template: "@if (label) {\n <label class=\"trm-label\"\n [for]=\"name\"\n (click)=\"toggle()\"\n > {{ label }} </label>\n}\n<div class=\"trm-select\"\n [class.trm-select--noBordered]=\"!hasBorder\"\n [class.trm-select--opened]=\"opened\"\n [class.trm-select--disabled]=\"disabled\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\"\n [id]=\"name\"\n (keydown.enter)=\"toggle()\"\n>\n @if (labelTpl) {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\">\n @if (selected && selectedItem) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item: selectedItem}\"></ng-container>\n }\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened && hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar appearance=\"compact\" class=\"trm-select-list-scrollbar\" appScrollbarSelectHeight>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ng-scrollbar>\n </ul>\n }\n @if (opened && !hasScrollbar) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-container *ngTemplateOutlet=\"listTpl\"></ng-container>\n </ul>\n }\n <ng-template #listTpl>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation(); $event.preventDefault();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n [tabindex]=\"tabIndex\"\n (blur)=\"onBlur()\">\n @if (item) {\n <ng-container *ngTemplateOutlet=\"labelTpl; context: {item}\"></ng-container>\n }\n </li>\n }\n </ng-template>\n } @else {\n <div class=\"trm-select-value\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\">\n {{ selectedLabel }}\n @if (!selected) {\n <span class=\"trm-select-placeholder\">{{ placeholder }}</span>\n }\n <span class=\"trm-select-value__arrow\"\n [ngClass]=\"{'trm-select-value__arrow-top': opened}\"></span>\n @if (data === false) {\n <div class=\"trm-spinner\"></div>\n }\n </div>\n @if (opened) {\n <ul class=\"trm-select-list\" @insertRemove>\n <ng-scrollbar class=\"gm-select-list-scrollbar\" appScrollbarSelectHeight>\n @if (searchable) {\n <li class=\"trm-select-list__item trm-select-list__search\">\n <input class=\"trm-form-field\"\n [placeholder]=\"I18N_KEY.SELECT_SEARCH | trans\"\n [tabindex]=\"tabIndex\"\n (keydown.enter)=\"$event.stopPropagation();\"\n [formControl]=\"searchControl\">\n </li>\n }\n @if (searchable && searchControl.value && list.length === 0) {\n <li class=\"trm-select-list__item trm-select-list__search trm-select-list__search-text\"\n >\n {{ I18N_KEY.SELECT_EMPTY_LIST | trans }}\n </li>\n }\n @for (item of list; track getItemValue(item)) {\n <li class=\"trm-select-list__item\"\n [tabindex]=\"tabIndex\"\n (click)=\"select(item)\"\n (keydown.enter)=\"$event.stopPropagation(); select(item)\"\n (blur)=\"onBlur()\">\n {{ getItemLabel(item) }}\n </li>\n }\n </ng-scrollbar>\n </ul>\n }\n }\n</div>\n<ng-content select=\"[app-trm-select-hint]\"></ng-content>\n", styles: [":host{display:block;--trm-select-border-color: var(--color-base-200);--trm-select-border-color--hover: var(--color-base-250);--trm-select-border-color--focus: var(--color-primary-500);--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-primary-500);--trm-select-border-color--disabled: var(--color-base-200);--trm-select-bg-color--disabled: var(--color-base-50)}:host.ng-invalid.ng-touched.ng-dirty{--trm-select-border-color: var(--color-red-500);--trm-select-border-color--hover: var(--color-red-500);--trm-select-border-color--focus: transparent;--trm-select-arrow-color: var(--color-base-350);--trm-select-arrow-color--focus: var(--color-base-350)}:host.constructor-field-inner .trm-select-value{min-height:44px;border-top-width:0;border-right-width:0;border-bottom-width:0;border-color:var(--trm-select-border-color)!important}@media (min-width: 768px){:host.constructor-field-inner .trm-select-value{min-height:48px}}.trm-select{position:relative;background:var(--trm-select-bg-color, white)}.trm-select:hover .trm-select-value{border-color:var(--trm-select-border-color--hover)}.trm-select:focus,.trm-select:active,.trm-select.trm-select--opened{outline:none}.trm-select:focus .trm-select-value,.trm-select:active .trm-select-value,.trm-select.trm-select--opened .trm-select-value{box-shadow:0 0 0 2px var(--trm-select-border-color--focus);outline:none}.trm-select:focus .trm-select-value__arrow,.trm-select:active .trm-select-value__arrow,.trm-select.trm-select--opened .trm-select-value__arrow{background:var(--trm-select-arrow-color--focus)}.trm-select.trm-select--noBordered{background-color:transparent!important}.trm-select.trm-select--noBordered .trm-select-value{border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;min-height:30px}.trm-select.trm-select--disabled{pointer-events:none}.trm-select.trm-select--disabled .trm-select-value{background:var(--trm-select-bg-color--disabled);outline:none;border:1px solid var(--trm-select-border-color--disabled)}.trm-select.trm-select--disabled .trm-select-value__arrow{display:none}.trm-select-placeholder{font-weight:500;font-size:14px;line-height:20px;color:var(--color-base-350)}@media (min-width: 768px){.trm-select-placeholder{font-weight:500;font-size:15px;line-height:22px;color:var(--color-base-350)}}.trm-select-value{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center;border:1px solid var(--trm-select-border-color);border-radius:var(--trm-select-border-radius, 10px);width:100%;box-sizing:border-box;cursor:pointer;position:relative;min-height:46px;padding:0 var(--trm-select-padding-right, 30px) 0 13px;font-weight:500;font-size:14px;line-height:20px;color:#000}@media (min-width: 768px){.trm-select-value{min-height:50px;padding:0 var(--trm-select-padding-right, 30px) 0 15px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-value__arrow{mask-repeat:no-repeat;mask-size:contain;background:var(--trm-select-arrow-color, black);display:inline-block;height:6px;width:10px;position:absolute;right:var(--trm-select-arrow-right, 15px);top:50%;transform:translateY(-50%);transition:transform ease-in-out .2s}.trm-select-value__arrow-top{transform:translateY(-50%) rotate(180deg)}.trm-select-list{position:absolute;inset:auto auto -10px 0;min-width:100%;margin:0;list-style:none;z-index:100;border:1px solid var(--color-base-150);background:#fff;box-shadow:0 4px 18px #0000000d;border-radius:10px;transform:translateY(100%);box-sizing:border-box;padding:6px;overflow:auto}.trm-select-list__item{box-sizing:border-box;width:100%;padding:9px 10px;border-radius:4px;font-weight:500;font-size:15px;line-height:22px;color:#000;display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:center}.trm-select-list__item:hover:not(.trm-select-list__search),.trm-select-list__item:focus:not(.trm-select-list__search),.trm-select-list__item:active:not(.trm-select-list__search){cursor:pointer;background:var(--color-base-50);outline:none}.trm-select-list__item input.trm-form-field{-webkit-appearance:none;border:1px solid var(--trm-input-border-color);border-radius:10px;width:100%;box-sizing:border-box;min-height:46px;padding:12px 20px;font-weight:500;font-size:14px;line-height:20px;color:#000;--trm-input-border-color: var(--color-base-200);--trm-input-border-color--hover: var(--color-base-250);--trm-input-border-color--focus: var(--color-primary-500);--trm-input-border-color--disabled: var(--color-base-200);--trm-input-bg-color--disabled: var(--color-base-50)}@media (min-width: 768px){.trm-select-list__item input.trm-form-field{min-height:50px;padding:13px 20px;font-weight:500;font-size:15px;line-height:22px;color:#000}}.trm-select-list__item input.trm-form-field:hover{border-color:var(--trm-input-border-color--hover)}.trm-select-list__item input.trm-form-field:focus,.trm-select-list__item input.trm-form-field:active{box-shadow:0 0 0 2px var(--trm-input-border-color--focus);outline:none}.trm-select-list__item.trm-select-list__search-text{justify-content:center;opacity:.8;padding:20px}.trm-select-list-scrollbar{--scrollbar-padding: 0px}.trm-select .trm-spinner{margin-left:auto}\n"] }]
|
|
4112
4112
|
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
4113
4113
|
type: Input
|
|
4114
4114
|
}], hasBorder: [{
|
|
@@ -5873,14 +5873,14 @@ class ConstructorFormComponent {
|
|
|
5873
5873
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ConstructorFormComponent, isStandalone: true, selector: "app-constructor-form", inputs: { step: "step", error: "error", response: "response", feeLoading: "feeLoading", feeOptions: "feeOptions", currency: "currency", userCurrency: "userCurrency", loading: "loading", types: "types", canReturnToProject: "canReturnToProject", tabIndex: "tabIndex" }, outputs: { amountChanged: "amountChanged", back: "back", prepare: "prepare", confirm: "confirm", onPaymentChanged: "onPaymentChanged" }, providers: [
|
|
5874
5874
|
ConstructorFormService,
|
|
5875
5875
|
CountryTranslatePipe, CountriesSortPipe
|
|
5876
|
-
], viewQueries: [{ propertyName: "requisites", first: true, predicate: ["paymentRequisites"], descendants: true }, { propertyName: "hintMethod", first: true, predicate: ["hintMethod"], descendants: true }, { propertyName: "sdkList", predicate: CardSdkService, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form class=\"constructor\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submit()\"\n >\n @if (loading !== null) {\n @if (step === TERMINAL_STEP.Prepare) {\n <div class=\"constructor__fields\">\n @if (countrySearchString || countriesList.length > 1) {\n <div class=\"constructor__field\">\n <app-trm-select [data]=\"countriesList\"\n @insertRemove\n name=\"country\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_COUNTRY | trans\"\n formControlName=\"country\"\n class=\"c-field-select trm-form-field\"\n (search)=\"searchCountry($event)\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"fi\"\n [ngClass]=\"'fi-' + item.toLowerCase()\"></span>\n <span class=\"method__name\">{{item | country_translate: lang}}</span>\n </ng-template>\n </app-trm-select>\n </div>\n }\n @if (form.country.value) {\n <app-ps-select [methods]=\"methodsList\"\n @insertRemove\n formControlName=\"method\"\n [tabIndex]=\"tabIndex\"\n >\n @if (form.config?.description) {\n <div class=\"constructor__hint text--warn\"\n app-ps-select-hint\n #hintMethod\n @insertRemove\n >\n {{description | trans }}\n </div>\n }\n </app-ps-select>\n\n @if (\n form.method?.hasError('required') &&\n form.method.touched &&\n form.method.dirty\n ) {\n <div class=\"gm-error\" @insertRemove>\n {{ I18N_KEY.VALIDATION_REQUIRED | trans }}\n </div>\n }\n }\n\n @if (form.ready) {\n <div formGroupName=\"payment\"\n @insertRemove\n #paymentRequisites\n class=\"constructor__fields constructor__fields--reverse\">\n @if (form.method.value && form.amountDynamic) {\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {label: I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans, tabIndex: 0}\"></ng-container>\n }\n @for (field of form.fields; track field.name; let i = $index) {\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Iframe) {\n @if (form.payment.get(field.name)?.hasError('cde_error')) {\n <div class=\"constructor__hint cde-error\" @insertRemove>\n {{\n form.payment.get(field.name).getError('cde_error')\n | trans\n }}\n </div>\n }\n <app-constructor-field-iframe\n [formControlName]=\"field.name\"\n @insertRemove\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n </app-constructor-field-iframe>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Select) {\n <app-constructor-field-select\n @insertRemove\n [config]=\"field\"\n [items]=\"field?.options?.items\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n ></app-constructor-field-select>\n }\n @if ([CONSTRUCTOR_FIELD_TYPES.Text, CONSTRUCTOR_FIELD_TYPES.Number, CONSTRUCTOR_FIELD_TYPES.Email].includes(field.type)) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n (maskedValueChange)=\"changeTextFieldValue($event, field)\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-text>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Amount) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\">\n <app-method-amount-hint app-c-text-hint\n class=\"constructor__hint\"\n [loading]=\"feeLoading\"\n [options]=\"feeOptions || field.options\"\n ></app-method-amount-hint>\n <div app-c-text-suffix\n class=\"constructor__currency\"\n [class.constructor__currency--transparent]=\"form.isAmountEditable\"\n >\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {tabIndex: form.fields.length - i + tabIndex}\"></ng-container>\n </div>\n </app-constructor-field-text>\n @if (hasCurrencyMethodSelector) {\n <app-trm-select\n @insertRemove\n class=\"constructor-field\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans\"\n [formControl]=\"form.currency\"\n [searchable]=\"false\"\n [data]=\"currenciesList\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\" [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n }\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Date) {\n <app-constructor-field-date\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-date>\n }\n }\n <ng-template #currencyTpl let-label=\"label\" let-tabIndex=\"tabIndex\">\n <app-trm-select\n @insertRemove\n [label]=\"label\"\n [formControl]=\"form.userCurrency\"\n [searchable]=\"false\"\n [data]=\"userCurrenciesList\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\"\n [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n </ng-template>\n </div>\n } @else {\n <div class=\"trm-skeleton-fields\">\n @for (i of skeletonLength; track $index) {\n <div class=\"trm-skeleton-field\">\n <gm-skeleton [count]=\"1\" [shape]=\"'rect-md'\" [size]=\"18\"></gm-skeleton>\n <gm-skeleton [count]=\"1\" [size]=\"50\"></gm-skeleton>\n </div>\n }\n </div>\n }\n @if (error && !form.methodInfoLoading) {\n <div class=\"trm-error\"\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </div>\n }\n @if (step === TERMINAL_STEP.Confirmation) {\n <app-constructor-preparation\n @insertRemove\n [currency]=\"response?.currency\"\n [methodName]=\"form.getTypeNameById(response.typeId)\"\n [wallet]=\"response.wallet\"\n [maskedWallet]=\"maskedWallet\"\n [amount]=\"response.amount\"\n [total]=\"response.total\"\n [confirmationText]=\"form.config?.confirmation\"\n >\n @if (error && !form.payment.pending) {\n <div class=\"trm-error\"\n app-constructor-preparation-error\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </app-constructor-preparation>\n }\n <div class=\"constructor__actions\"\n @insertRemove>\n <button class=\"trm-button trm-button--primary constructor__actions-continue\"\n type=\"submit\"\n [tabindex]=\"form.fields.length + tabIndex\">\n {{I18N_KEY.CONSTRUCTOR_LABEL_CONTINUE | trans}}\n @if (loading) {\n <span class=\"trm-spinner trm-spinner-white\"></span>\n }\n </button>\n <button class=\"trm-button trm-button--secondary constructor__actions-back\"\n type=\"button\"\n [tabindex]=\"form.fields.length + tabIndex\"\n (click)=\"back.emit()\"> {{ backBtnLabel | trans}}</button>\n </div>\n } @else {\n <div class=\"trm-skeleton-group\">\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\n </div>\n }\n</form>\n", styles: [":host{display:block}.constructor{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.constructor__fields{display:flex;flex-direction:column;gap:20px;justify-content:flex-start;align-items:stretch}.constructor__fields--reverse{flex-direction:column-reverse}.constructor__fields .fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.constructor__fields .fi-other{border-color:transparent}.constructor__currency{--trm-select-border-radius: 0 10px 10px 0;display:flex;align-items:center;position:absolute;bottom:0;right:0;flex-shrink:0;min-height:46px}@media (min-width: 768px){.constructor__currency{min-height:50px}}.constructor__currency .trm-divider{margin:5px 0;align-self:stretch}.constructor__currency--transparent{--trm-select-bg-color: transparent;--trm-select-bg-color--disabled: transparent;--trm-select-border-color: transparent;--trm-select-border-color--hover: transparent;--trm-select-border-color--focus: transparent}.constructor__actions{display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.constructor__hint{font-weight:400;font-size:14px;line-height:22px;color:var(--color-base-350);margin-top:8px}.constructor__hint.cde-error{font-weight:500;font-size:14px;line-height:20px;color:var(--color-red-500)}.constructor .constructor__actions-continue{position:relative}.constructor .constructor__actions-continue .trm-spinner{position:absolute;right:15px}\n"], dependencies: [{ kind: "pipe", type: CountryTranslatePipe, name: "country_translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: TrmSelectComponent, selector: "app-trm-select", inputs: ["label", "hasBorder", "data", "tabIndex", "name", "placeholder", "searchable", "hasScrollbar", "nameId", "nameLabel"], outputs: ["open", "search"] }, { kind: "directive", type: TrmSelectLabelTemplateDirective, selector: "[trmSelectLabelTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PsSelectComponent, selector: "app-ps-select", inputs: ["methods", "tabIndex"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ConstructorFieldIframeComponent, selector: "app-constructor-field-iframe", inputs: ["tabIndex"] }, { kind: "component", type: ConstructorFieldSelectComponent, selector: "app-constructor-field-select", inputs: ["config", "items", "tabIndex"] }, { kind: "component", type: ConstructorFieldTextComponent, selector: "app-constructor-field-text", inputs: ["config", "matDatepicker", "tabIndex"], outputs: ["maskedValueChange"] }, { kind: "component", type: MethodAmountHintComponent, selector: "app-method-amount-hint", inputs: ["loading", "options"] }, { kind: "component", type: ConstructorFieldDateComponent, selector: "app-constructor-field-date", inputs: ["config", "tabIndex"] }, { kind: "component", type: ConstructorPreparationComponent, selector: "app-constructor-preparation", inputs: ["maskedWallet", "wallet", "confirmationText", "methodName", "currency", "amount", "total"] }, { kind: "directive", type: TabIndexFocusDirective, selector: "[tabindex]" }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5876
|
+
], viewQueries: [{ propertyName: "requisites", first: true, predicate: ["paymentRequisites"], descendants: true }, { propertyName: "hintMethod", first: true, predicate: ["hintMethod"], descendants: true }, { propertyName: "sdkList", predicate: CardSdkService, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form class=\"constructor\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submit()\"\n >\n @if (loading !== null) {\n @if (step === TERMINAL_STEP.Prepare) {\n <div class=\"constructor__fields\">\n @if (countrySearchString || countriesList.length > 1) {\n <div class=\"constructor__field\">\n <app-trm-select [data]=\"countriesList\"\n @insertRemove\n name=\"country\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_COUNTRY | trans\"\n formControlName=\"country\"\n class=\"c-field-select trm-form-field\"\n (search)=\"searchCountry($event)\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"fi\"\n [ngClass]=\"'fi-' + item.toLowerCase()\"></span>\n <span class=\"method__name\">{{item | country_translate: lang}}</span>\n </ng-template>\n </app-trm-select>\n </div>\n }\n @if (form.country.value) {\n <app-ps-select [methods]=\"methodsList\"\n @insertRemove\n formControlName=\"method\"\n [tabIndex]=\"tabIndex\"\n >\n @if (form.config?.description) {\n <div class=\"constructor__hint text--warn\"\n app-ps-select-hint\n #hintMethod\n @insertRemove\n >\n {{description | trans }}\n </div>\n }\n </app-ps-select>\n\n @if (\n form.method?.hasError('required') &&\n form.method.touched &&\n form.method.dirty\n ) {\n <div class=\"gm-error\" @insertRemove>\n {{ I18N_KEY.VALIDATION_REQUIRED | trans }}\n </div>\n }\n }\n\n @if (form.ready) {\n <div formGroupName=\"payment\"\n @insertRemove\n #paymentRequisites\n class=\"constructor__fields constructor__fields--reverse\">\n @if (form.method.value && form.amountDynamic) {\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {label: I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans, tabIndex: 0}\"></ng-container>\n }\n @for (field of form.fields; track field.name; let i = $index) {\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Iframe) {\n @if (form.payment.get(field.name)?.hasError('cde_error')) {\n <div class=\"constructor__hint cde-error\" @insertRemove>\n {{\n form.payment.get(field.name).getError('cde_error')\n | trans\n }}\n </div>\n }\n <app-constructor-field-iframe\n [formControlName]=\"field.name\"\n @insertRemove\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n </app-constructor-field-iframe>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Select) {\n <app-constructor-field-select\n @insertRemove\n [config]=\"field\"\n [items]=\"field?.options?.items\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n ></app-constructor-field-select>\n }\n @if ([CONSTRUCTOR_FIELD_TYPES.Text, CONSTRUCTOR_FIELD_TYPES.Number, CONSTRUCTOR_FIELD_TYPES.Email].includes(field.type)) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n (maskedValueChange)=\"changeTextFieldValue($event, field)\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-text>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Amount) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\">\n <app-method-amount-hint app-c-text-hint\n class=\"constructor__hint\"\n [loading]=\"feeLoading\"\n [options]=\"feeOptions || field.options\"\n ></app-method-amount-hint>\n @if (!hasCurrencyMethodSelector) {\n <div app-c-text-suffix\n class=\"constructor__currency\"\n [class.constructor__currency--transparent]=\"form.isAmountEditable\"\n >\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {tabIndex: form.fields.length - i + tabIndex}\"></ng-container>\n </div>\n }\n </app-constructor-field-text>\n @if (hasCurrencyMethodSelector) {\n <app-trm-select\n @insertRemove\n class=\"constructor-field\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans\"\n [formControl]=\"form.currency\"\n [searchable]=\"false\"\n [data]=\"currenciesList\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\" [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n }\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Date) {\n <app-constructor-field-date\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-date>\n }\n }\n <ng-template #currencyTpl let-label=\"label\" let-tabIndex=\"tabIndex\">\n <app-trm-select\n class=\"constructor-field-inner\"\n @insertRemove\n [label]=\"label\"\n [formControl]=\"form.userCurrency\"\n [searchable]=\"false\"\n [data]=\"userCurrenciesList\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\"\n [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n </ng-template>\n </div>\n } @else {\n <div class=\"trm-skeleton-fields\">\n @for (i of skeletonLength; track $index) {\n <div class=\"trm-skeleton-field\">\n <gm-skeleton [count]=\"1\" [shape]=\"'rect-md'\" [size]=\"18\"></gm-skeleton>\n <gm-skeleton [count]=\"1\" [size]=\"50\"></gm-skeleton>\n </div>\n }\n </div>\n }\n @if (error && !form.methodInfoLoading) {\n <div class=\"trm-error\"\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </div>\n }\n @if (step === TERMINAL_STEP.Confirmation) {\n <app-constructor-preparation\n @insertRemove\n [currency]=\"response?.currency\"\n [methodName]=\"form.getTypeNameById(response.typeId)\"\n [wallet]=\"response.wallet\"\n [maskedWallet]=\"maskedWallet\"\n [amount]=\"response.amount\"\n [total]=\"response.total\"\n [confirmationText]=\"form.config?.confirmation\"\n >\n @if (error && !form.payment.pending) {\n <div class=\"trm-error\"\n app-constructor-preparation-error\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </app-constructor-preparation>\n }\n <div class=\"constructor__actions\"\n @insertRemove>\n <button class=\"trm-button trm-button--primary constructor__actions-continue\"\n type=\"submit\"\n [tabindex]=\"form.fields.length + tabIndex\">\n {{I18N_KEY.CONSTRUCTOR_LABEL_CONTINUE | trans}}\n @if (loading) {\n <span class=\"trm-spinner trm-spinner-white\"></span>\n }\n </button>\n <button class=\"trm-button trm-button--secondary constructor__actions-back\"\n type=\"button\"\n [tabindex]=\"form.fields.length + tabIndex\"\n (click)=\"back.emit()\"> {{ backBtnLabel | trans}}</button>\n </div>\n } @else {\n <div class=\"trm-skeleton-group\">\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\n </div>\n }\n</form>\n", styles: [":host{display:block}.constructor{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.constructor__fields{display:flex;flex-direction:column;gap:20px;justify-content:flex-start;align-items:stretch}.constructor__fields--reverse{flex-direction:column-reverse}.constructor__fields .fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.constructor__fields .fi-other{border-color:transparent}.constructor__currency{--trm-select-border-radius: 0 10px 10px 0;display:flex;align-items:center;position:absolute;bottom:1px;right:1px;flex-shrink:0;min-height:44px}@media (min-width: 768px){.constructor__currency{min-height:48px}}.constructor__currency .trm-divider{margin:5px 0;align-self:stretch}.constructor__currency--transparent{--trm-select-bg-color: transparent;--trm-select-bg-color--disabled: transparent;--trm-select-border-color: transparent;--trm-select-border-color--hover: transparent;--trm-select-border-color--focus: transparent}.constructor__actions{display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.constructor__hint{font-weight:400;font-size:14px;line-height:22px;color:var(--color-base-350);margin-top:8px}.constructor__hint.cde-error{font-weight:500;font-size:14px;line-height:20px;color:var(--color-red-500)}.constructor .constructor__actions-continue{position:relative}.constructor .constructor__actions-continue .trm-spinner{position:absolute;right:15px}\n"], dependencies: [{ kind: "pipe", type: CountryTranslatePipe, name: "country_translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: TrmSelectComponent, selector: "app-trm-select", inputs: ["label", "hasBorder", "data", "tabIndex", "name", "placeholder", "searchable", "hasScrollbar", "nameId", "nameLabel"], outputs: ["open", "search"] }, { kind: "directive", type: TrmSelectLabelTemplateDirective, selector: "[trmSelectLabelTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PsSelectComponent, selector: "app-ps-select", inputs: ["methods", "tabIndex"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ConstructorFieldIframeComponent, selector: "app-constructor-field-iframe", inputs: ["tabIndex"] }, { kind: "component", type: ConstructorFieldSelectComponent, selector: "app-constructor-field-select", inputs: ["config", "items", "tabIndex"] }, { kind: "component", type: ConstructorFieldTextComponent, selector: "app-constructor-field-text", inputs: ["config", "matDatepicker", "tabIndex"], outputs: ["maskedValueChange"] }, { kind: "component", type: MethodAmountHintComponent, selector: "app-method-amount-hint", inputs: ["loading", "options"] }, { kind: "component", type: ConstructorFieldDateComponent, selector: "app-constructor-field-date", inputs: ["config", "tabIndex"] }, { kind: "component", type: ConstructorPreparationComponent, selector: "app-constructor-preparation", inputs: ["maskedWallet", "wallet", "confirmationText", "methodName", "currency", "amount", "total"] }, { kind: "directive", type: TabIndexFocusDirective, selector: "[tabindex]" }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }], animations: [insertRemoveTrigger], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5877
5877
|
}
|
|
5878
5878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ConstructorFormComponent, decorators: [{
|
|
5879
5879
|
type: Component,
|
|
5880
5880
|
args: [{ selector: 'app-constructor-form', changeDetection: ChangeDetectionStrategy.OnPush, animations: [insertRemoveTrigger], providers: [
|
|
5881
5881
|
ConstructorFormService,
|
|
5882
5882
|
CountryTranslatePipe, CountriesSortPipe
|
|
5883
|
-
], standalone: true, imports: [CountryTranslatePipe, CountriesSortPipe, FormsModule, ReactiveFormsModule, TrmSelectComponent, TrmSelectLabelTemplateDirective, NgClass, PsSelectComponent, NgTemplateOutlet, ConstructorFieldIframeComponent, ConstructorFieldSelectComponent, ConstructorFieldTextComponent, MethodAmountHintComponent, ConstructorFieldDateComponent, ConstructorPreparationComponent, TabIndexFocusDirective, CountryTranslatePipe, TranslateByKeyPipe, GmSkeletonComponent], template: "<form class=\"constructor\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submit()\"\n >\n @if (loading !== null) {\n @if (step === TERMINAL_STEP.Prepare) {\n <div class=\"constructor__fields\">\n @if (countrySearchString || countriesList.length > 1) {\n <div class=\"constructor__field\">\n <app-trm-select [data]=\"countriesList\"\n @insertRemove\n name=\"country\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_COUNTRY | trans\"\n formControlName=\"country\"\n class=\"c-field-select trm-form-field\"\n (search)=\"searchCountry($event)\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"fi\"\n [ngClass]=\"'fi-' + item.toLowerCase()\"></span>\n <span class=\"method__name\">{{item | country_translate: lang}}</span>\n </ng-template>\n </app-trm-select>\n </div>\n }\n @if (form.country.value) {\n <app-ps-select [methods]=\"methodsList\"\n @insertRemove\n formControlName=\"method\"\n [tabIndex]=\"tabIndex\"\n >\n @if (form.config?.description) {\n <div class=\"constructor__hint text--warn\"\n app-ps-select-hint\n #hintMethod\n @insertRemove\n >\n {{description | trans }}\n </div>\n }\n </app-ps-select>\n\n @if (\n form.method?.hasError('required') &&\n form.method.touched &&\n form.method.dirty\n ) {\n <div class=\"gm-error\" @insertRemove>\n {{ I18N_KEY.VALIDATION_REQUIRED | trans }}\n </div>\n }\n }\n\n @if (form.ready) {\n <div formGroupName=\"payment\"\n @insertRemove\n #paymentRequisites\n class=\"constructor__fields constructor__fields--reverse\">\n @if (form.method.value && form.amountDynamic) {\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {label: I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans, tabIndex: 0}\"></ng-container>\n }\n @for (field of form.fields; track field.name; let i = $index) {\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Iframe) {\n @if (form.payment.get(field.name)?.hasError('cde_error')) {\n <div class=\"constructor__hint cde-error\" @insertRemove>\n {{\n form.payment.get(field.name).getError('cde_error')\n | trans\n }}\n </div>\n }\n <app-constructor-field-iframe\n [formControlName]=\"field.name\"\n @insertRemove\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n </app-constructor-field-iframe>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Select) {\n <app-constructor-field-select\n @insertRemove\n [config]=\"field\"\n [items]=\"field?.options?.items\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n ></app-constructor-field-select>\n }\n @if ([CONSTRUCTOR_FIELD_TYPES.Text, CONSTRUCTOR_FIELD_TYPES.Number, CONSTRUCTOR_FIELD_TYPES.Email].includes(field.type)) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n (maskedValueChange)=\"changeTextFieldValue($event, field)\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-text>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Amount) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\">\n <app-method-amount-hint app-c-text-hint\n class=\"constructor__hint\"\n [loading]=\"feeLoading\"\n [options]=\"feeOptions || field.options\"\n ></app-method-amount-hint>\n <div app-c-text-suffix\n class=\"constructor__currency\"\n [class.constructor__currency--transparent]=\"form.isAmountEditable\"\n >\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {tabIndex: form.fields.length - i + tabIndex}\"></ng-container>\n </div>\n </app-constructor-field-text>\n @if (hasCurrencyMethodSelector) {\n <app-trm-select\n @insertRemove\n class=\"constructor-field\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans\"\n [formControl]=\"form.currency\"\n [searchable]=\"false\"\n [data]=\"currenciesList\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\" [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n }\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Date) {\n <app-constructor-field-date\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-date>\n }\n }\n <ng-template #currencyTpl let-label=\"label\" let-tabIndex=\"tabIndex\">\n <app-trm-select\n @insertRemove\n [label]=\"label\"\n [formControl]=\"form.userCurrency\"\n [searchable]=\"false\"\n [data]=\"userCurrenciesList\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\"\n [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n </ng-template>\n </div>\n } @else {\n <div class=\"trm-skeleton-fields\">\n @for (i of skeletonLength; track $index) {\n <div class=\"trm-skeleton-field\">\n <gm-skeleton [count]=\"1\" [shape]=\"'rect-md'\" [size]=\"18\"></gm-skeleton>\n <gm-skeleton [count]=\"1\" [size]=\"50\"></gm-skeleton>\n </div>\n }\n </div>\n }\n @if (error && !form.methodInfoLoading) {\n <div class=\"trm-error\"\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </div>\n }\n @if (step === TERMINAL_STEP.Confirmation) {\n <app-constructor-preparation\n @insertRemove\n [currency]=\"response?.currency\"\n [methodName]=\"form.getTypeNameById(response.typeId)\"\n [wallet]=\"response.wallet\"\n [maskedWallet]=\"maskedWallet\"\n [amount]=\"response.amount\"\n [total]=\"response.total\"\n [confirmationText]=\"form.config?.confirmation\"\n >\n @if (error && !form.payment.pending) {\n <div class=\"trm-error\"\n app-constructor-preparation-error\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </app-constructor-preparation>\n }\n <div class=\"constructor__actions\"\n @insertRemove>\n <button class=\"trm-button trm-button--primary constructor__actions-continue\"\n type=\"submit\"\n [tabindex]=\"form.fields.length + tabIndex\">\n {{I18N_KEY.CONSTRUCTOR_LABEL_CONTINUE | trans}}\n @if (loading) {\n <span class=\"trm-spinner trm-spinner-white\"></span>\n }\n </button>\n <button class=\"trm-button trm-button--secondary constructor__actions-back\"\n type=\"button\"\n [tabindex]=\"form.fields.length + tabIndex\"\n (click)=\"back.emit()\"> {{ backBtnLabel | trans}}</button>\n </div>\n } @else {\n <div class=\"trm-skeleton-group\">\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\n </div>\n }\n</form>\n", styles: [":host{display:block}.constructor{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.constructor__fields{display:flex;flex-direction:column;gap:20px;justify-content:flex-start;align-items:stretch}.constructor__fields--reverse{flex-direction:column-reverse}.constructor__fields .fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.constructor__fields .fi-other{border-color:transparent}.constructor__currency{--trm-select-border-radius: 0 10px 10px 0;display:flex;align-items:center;position:absolute;bottom:0;right:0;flex-shrink:0;min-height:46px}@media (min-width: 768px){.constructor__currency{min-height:50px}}.constructor__currency .trm-divider{margin:5px 0;align-self:stretch}.constructor__currency--transparent{--trm-select-bg-color: transparent;--trm-select-bg-color--disabled: transparent;--trm-select-border-color: transparent;--trm-select-border-color--hover: transparent;--trm-select-border-color--focus: transparent}.constructor__actions{display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.constructor__hint{font-weight:400;font-size:14px;line-height:22px;color:var(--color-base-350);margin-top:8px}.constructor__hint.cde-error{font-weight:500;font-size:14px;line-height:20px;color:var(--color-red-500)}.constructor .constructor__actions-continue{position:relative}.constructor .constructor__actions-continue .trm-spinner{position:absolute;right:15px}\n"] }]
|
|
5883
|
+
], standalone: true, imports: [CountryTranslatePipe, CountriesSortPipe, FormsModule, ReactiveFormsModule, TrmSelectComponent, TrmSelectLabelTemplateDirective, NgClass, PsSelectComponent, NgTemplateOutlet, ConstructorFieldIframeComponent, ConstructorFieldSelectComponent, ConstructorFieldTextComponent, MethodAmountHintComponent, ConstructorFieldDateComponent, ConstructorPreparationComponent, TabIndexFocusDirective, CountryTranslatePipe, TranslateByKeyPipe, GmSkeletonComponent], template: "<form class=\"constructor\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submit()\"\n >\n @if (loading !== null) {\n @if (step === TERMINAL_STEP.Prepare) {\n <div class=\"constructor__fields\">\n @if (countrySearchString || countriesList.length > 1) {\n <div class=\"constructor__field\">\n <app-trm-select [data]=\"countriesList\"\n @insertRemove\n name=\"country\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_COUNTRY | trans\"\n formControlName=\"country\"\n class=\"c-field-select trm-form-field\"\n (search)=\"searchCountry($event)\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"fi\"\n [ngClass]=\"'fi-' + item.toLowerCase()\"></span>\n <span class=\"method__name\">{{item | country_translate: lang}}</span>\n </ng-template>\n </app-trm-select>\n </div>\n }\n @if (form.country.value) {\n <app-ps-select [methods]=\"methodsList\"\n @insertRemove\n formControlName=\"method\"\n [tabIndex]=\"tabIndex\"\n >\n @if (form.config?.description) {\n <div class=\"constructor__hint text--warn\"\n app-ps-select-hint\n #hintMethod\n @insertRemove\n >\n {{description | trans }}\n </div>\n }\n </app-ps-select>\n\n @if (\n form.method?.hasError('required') &&\n form.method.touched &&\n form.method.dirty\n ) {\n <div class=\"gm-error\" @insertRemove>\n {{ I18N_KEY.VALIDATION_REQUIRED | trans }}\n </div>\n }\n }\n\n @if (form.ready) {\n <div formGroupName=\"payment\"\n @insertRemove\n #paymentRequisites\n class=\"constructor__fields constructor__fields--reverse\">\n @if (form.method.value && form.amountDynamic) {\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {label: I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans, tabIndex: 0}\"></ng-container>\n }\n @for (field of form.fields; track field.name; let i = $index) {\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Iframe) {\n @if (form.payment.get(field.name)?.hasError('cde_error')) {\n <div class=\"constructor__hint cde-error\" @insertRemove>\n {{\n form.payment.get(field.name).getError('cde_error')\n | trans\n }}\n </div>\n }\n <app-constructor-field-iframe\n [formControlName]=\"field.name\"\n @insertRemove\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n </app-constructor-field-iframe>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Select) {\n <app-constructor-field-select\n @insertRemove\n [config]=\"field\"\n [items]=\"field?.options?.items\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n ></app-constructor-field-select>\n }\n @if ([CONSTRUCTOR_FIELD_TYPES.Text, CONSTRUCTOR_FIELD_TYPES.Number, CONSTRUCTOR_FIELD_TYPES.Email].includes(field.type)) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n (maskedValueChange)=\"changeTextFieldValue($event, field)\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-text>\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Amount) {\n <app-constructor-field-text\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\">\n <app-method-amount-hint app-c-text-hint\n class=\"constructor__hint\"\n [loading]=\"feeLoading\"\n [options]=\"feeOptions || field.options\"\n ></app-method-amount-hint>\n @if (!hasCurrencyMethodSelector) {\n <div app-c-text-suffix\n class=\"constructor__currency\"\n [class.constructor__currency--transparent]=\"form.isAmountEditable\"\n >\n <ng-container *ngTemplateOutlet=\"currencyTpl; context: {tabIndex: form.fields.length - i + tabIndex}\"></ng-container>\n </div>\n }\n </app-constructor-field-text>\n @if (hasCurrencyMethodSelector) {\n <app-trm-select\n @insertRemove\n class=\"constructor-field\"\n [label]=\"I18N_KEY.CONSTRUCTOR_LABEL_CURRENCY | trans\"\n [formControl]=\"form.currency\"\n [searchable]=\"false\"\n [data]=\"currenciesList\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\" [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n }\n }\n @if (field.type === CONSTRUCTOR_FIELD_TYPES.Date) {\n <app-constructor-field-date\n @insertRemove\n [config]=\"field\"\n [formControlName]=\"field.name\"\n [tabIndex]=\"form.fields.length - i + tabIndex\"></app-constructor-field-date>\n }\n }\n <ng-template #currencyTpl let-label=\"label\" let-tabIndex=\"tabIndex\">\n <app-trm-select\n class=\"constructor-field-inner\"\n @insertRemove\n [label]=\"label\"\n [formControl]=\"form.userCurrency\"\n [searchable]=\"false\"\n [data]=\"userCurrenciesList\"\n [tabIndex]=\"tabIndex\"\n >\n <ng-template trmSelectLabelTemplate let-item=\"item\">\n <span class=\"trm-icon\"\n [ngClass]=\"'trm-curr-' + item.toLowerCase()\"\n [title]=\"item\"></span>\n {{item}}\n </ng-template>\n </app-trm-select>\n </ng-template>\n </div>\n } @else {\n <div class=\"trm-skeleton-fields\">\n @for (i of skeletonLength; track $index) {\n <div class=\"trm-skeleton-field\">\n <gm-skeleton [count]=\"1\" [shape]=\"'rect-md'\" [size]=\"18\"></gm-skeleton>\n <gm-skeleton [count]=\"1\" [size]=\"50\"></gm-skeleton>\n </div>\n }\n </div>\n }\n @if (error && !form.methodInfoLoading) {\n <div class=\"trm-error\"\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </div>\n }\n @if (step === TERMINAL_STEP.Confirmation) {\n <app-constructor-preparation\n @insertRemove\n [currency]=\"response?.currency\"\n [methodName]=\"form.getTypeNameById(response.typeId)\"\n [wallet]=\"response.wallet\"\n [maskedWallet]=\"maskedWallet\"\n [amount]=\"response.amount\"\n [total]=\"response.total\"\n [confirmationText]=\"form.config?.confirmation\"\n >\n @if (error && !form.payment.pending) {\n <div class=\"trm-error\"\n app-constructor-preparation-error\n @insertRemove\n >\n {{ error | trans }}\n </div>\n }\n </app-constructor-preparation>\n }\n <div class=\"constructor__actions\"\n @insertRemove>\n <button class=\"trm-button trm-button--primary constructor__actions-continue\"\n type=\"submit\"\n [tabindex]=\"form.fields.length + tabIndex\">\n {{I18N_KEY.CONSTRUCTOR_LABEL_CONTINUE | trans}}\n @if (loading) {\n <span class=\"trm-spinner trm-spinner-white\"></span>\n }\n </button>\n <button class=\"trm-button trm-button--secondary constructor__actions-back\"\n type=\"button\"\n [tabindex]=\"form.fields.length + tabIndex\"\n (click)=\"back.emit()\"> {{ backBtnLabel | trans}}</button>\n </div>\n } @else {\n <div class=\"trm-skeleton-group\">\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\n </div>\n }\n</form>\n", styles: [":host{display:block}.constructor{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.constructor__fields{display:flex;flex-direction:column;gap:20px;justify-content:flex-start;align-items:stretch}.constructor__fields--reverse{flex-direction:column-reverse}.constructor__fields .fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.constructor__fields .fi-other{border-color:transparent}.constructor__currency{--trm-select-border-radius: 0 10px 10px 0;display:flex;align-items:center;position:absolute;bottom:1px;right:1px;flex-shrink:0;min-height:44px}@media (min-width: 768px){.constructor__currency{min-height:48px}}.constructor__currency .trm-divider{margin:5px 0;align-self:stretch}.constructor__currency--transparent{--trm-select-bg-color: transparent;--trm-select-bg-color--disabled: transparent;--trm-select-border-color: transparent;--trm-select-border-color--hover: transparent;--trm-select-border-color--focus: transparent}.constructor__actions{display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.constructor__hint{font-weight:400;font-size:14px;line-height:22px;color:var(--color-base-350);margin-top:8px}.constructor__hint.cde-error{font-weight:500;font-size:14px;line-height:20px;color:var(--color-red-500)}.constructor .constructor__actions-continue{position:relative}.constructor .constructor__actions-continue .trm-spinner{position:absolute;right:15px}\n"] }]
|
|
5884
5884
|
}], propDecorators: { step: [{
|
|
5885
5885
|
type: Input
|
|
5886
5886
|
}], error: [{
|