primekit 0.0.93 → 1.0.1
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/lib/atomix-autocomplete/atomix-autocomplete.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-button/atomix-button.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-card/atomix-card.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-input/atomix-input.component.mjs +2 -2
- package/esm2022/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.mjs +10 -4
- package/fesm2022/primekit.mjs +22 -16
- package/fesm2022/primekit.mjs.map +1 -1
- package/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -53,7 +53,7 @@ export class AtomixAutocompleteComponent {
|
|
|
53
53
|
useExisting: forwardRef(() => AtomixAutocompleteComponent),
|
|
54
54
|
multi: true,
|
|
55
55
|
},
|
|
56
|
-
], ngImport: i0, template: "<label *ngIf=\"label\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<div [class]=\"autocompleteContainer + ' atomix-autocomplete-wrapper'\">\n <p-autoComplete\n [(ngModel)]=\"selectedValues\"\n [suggestions]=\"suggestions\"\n [placeholder]=\"placeholder\"\n [optionLabel]=\"optionLabel\"\n [showClear]=\"showClear\"\n [dropdown]=\"dropdown\"\n [name]=\"name\"\n [styleClass]=\"styleClass\"\n (completeMethod)=\"queryHandler.emit([$event, name])\"\n (onSelect)=\"selectOptionHandler.emit([$event, name])\"\n (onClear)=\"selectOptionHandler.emit([$event, name])\"\n [showEmptyMessage]=\"true\"\n appendTo=\"body\"\n\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [delay]=\"delay\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"autocomplete-item\">\n <div class=\"font-semibold\">{{ item[optionLabel] }}</div>\n <div class=\"text-xs text-gray-500\">\n {{ item[optionDescription] }}\n </div>\n </div>\n </ng-template>\n </p-autoComplete>\n</div>", styles: ["::ng-deep .p-autocomplete-dd .p-autocomplete-dropdown{border-radius:0
|
|
56
|
+
], ngImport: i0, template: "<label *ngIf=\"label\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<div [class]=\"autocompleteContainer + ' atomix-autocomplete-wrapper'\">\n <p-autoComplete\n [(ngModel)]=\"selectedValues\"\n [suggestions]=\"suggestions\"\n [placeholder]=\"placeholder\"\n [optionLabel]=\"optionLabel\"\n [showClear]=\"showClear\"\n [dropdown]=\"dropdown\"\n [name]=\"name\"\n [styleClass]=\"styleClass\"\n (completeMethod)=\"queryHandler.emit([$event, name])\"\n (onSelect)=\"selectOptionHandler.emit([$event, name])\"\n (onClear)=\"selectOptionHandler.emit([$event, name])\"\n [showEmptyMessage]=\"true\"\n appendTo=\"body\"\n\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [delay]=\"delay\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"autocomplete-item\">\n <div class=\"font-semibold\">{{ item[optionLabel] }}</div>\n <div class=\"text-xs text-gray-500\">\n {{ item[optionDescription] }}\n </div>\n </div>\n </ng-template>\n </p-autoComplete>\n</div>", styles: ["::ng-deep .p-autocomplete-dd .p-autocomplete-dropdown{border-radius:0 8px 8px 0!important}::ng-deep .atomix-autocomplete-wrapper{border-radius:8px}::ng-deep .atomix-autocomplete-wrapper .p-inputtext{background-color:var(--filter-inventory-bg)!important;padding:0rem 0rem 0rem 1rem!important;min-width:8rem;border-radius:8px 0 0 8px;padding-right:16px!important}::ng-deep .atomix-autocomplete-wrapper .p-autocomplete-dropdown{color:var(--primary-text-color)!important;border-radius:8px}::ng-deep .atomix-autocomplete-wrapper .p-inputtext:enabled:focus{box-shadow:none!important}::ng-deep .atomix-autocomplete-wrapper .p-autocomplete-clear-icon{right:3.3rem}::ng-deep .atomix-autocomplete-wrapper .font-semibold{font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }] });
|
|
57
57
|
}
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixAutocompleteComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
@@ -63,7 +63,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
63
63
|
useExisting: forwardRef(() => AtomixAutocompleteComponent),
|
|
64
64
|
multi: true,
|
|
65
65
|
},
|
|
66
|
-
], template: "<label *ngIf=\"label\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<div [class]=\"autocompleteContainer + ' atomix-autocomplete-wrapper'\">\n <p-autoComplete\n [(ngModel)]=\"selectedValues\"\n [suggestions]=\"suggestions\"\n [placeholder]=\"placeholder\"\n [optionLabel]=\"optionLabel\"\n [showClear]=\"showClear\"\n [dropdown]=\"dropdown\"\n [name]=\"name\"\n [styleClass]=\"styleClass\"\n (completeMethod)=\"queryHandler.emit([$event, name])\"\n (onSelect)=\"selectOptionHandler.emit([$event, name])\"\n (onClear)=\"selectOptionHandler.emit([$event, name])\"\n [showEmptyMessage]=\"true\"\n appendTo=\"body\"\n\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [delay]=\"delay\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"autocomplete-item\">\n <div class=\"font-semibold\">{{ item[optionLabel] }}</div>\n <div class=\"text-xs text-gray-500\">\n {{ item[optionDescription] }}\n </div>\n </div>\n </ng-template>\n </p-autoComplete>\n</div>", styles: ["::ng-deep .p-autocomplete-dd .p-autocomplete-dropdown{border-radius:0
|
|
66
|
+
], template: "<label *ngIf=\"label\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<div [class]=\"autocompleteContainer + ' atomix-autocomplete-wrapper'\">\n <p-autoComplete\n [(ngModel)]=\"selectedValues\"\n [suggestions]=\"suggestions\"\n [placeholder]=\"placeholder\"\n [optionLabel]=\"optionLabel\"\n [showClear]=\"showClear\"\n [dropdown]=\"dropdown\"\n [name]=\"name\"\n [styleClass]=\"styleClass\"\n (completeMethod)=\"queryHandler.emit([$event, name])\"\n (onSelect)=\"selectOptionHandler.emit([$event, name])\"\n (onClear)=\"selectOptionHandler.emit([$event, name])\"\n [showEmptyMessage]=\"true\"\n appendTo=\"body\"\n\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [delay]=\"delay\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"autocomplete-item\">\n <div class=\"font-semibold\">{{ item[optionLabel] }}</div>\n <div class=\"text-xs text-gray-500\">\n {{ item[optionDescription] }}\n </div>\n </div>\n </ng-template>\n </p-autoComplete>\n</div>", styles: ["::ng-deep .p-autocomplete-dd .p-autocomplete-dropdown{border-radius:0 8px 8px 0!important}::ng-deep .atomix-autocomplete-wrapper{border-radius:8px}::ng-deep .atomix-autocomplete-wrapper .p-inputtext{background-color:var(--filter-inventory-bg)!important;padding:0rem 0rem 0rem 1rem!important;min-width:8rem;border-radius:8px 0 0 8px;padding-right:16px!important}::ng-deep .atomix-autocomplete-wrapper .p-autocomplete-dropdown{color:var(--primary-text-color)!important;border-radius:8px}::ng-deep .atomix-autocomplete-wrapper .p-inputtext:enabled:focus{box-shadow:none!important}::ng-deep .atomix-autocomplete-wrapper .p-autocomplete-clear-icon{right:3.3rem}::ng-deep .atomix-autocomplete-wrapper .font-semibold{font-weight:600}\n"] }]
|
|
67
67
|
}], propDecorators: { suggestions: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}], placeholder: [{
|
|
@@ -18,11 +18,11 @@ export class AtomixButtonComponent {
|
|
|
18
18
|
this.buttonClick.emit(event); // Emit the event when button is clicked
|
|
19
19
|
}
|
|
20
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixButtonComponent, selector: "atomix-button", inputs: { label: "label", disabled: "disabled", loading: "loading", size: "size", buttonType: "buttonType", type: "type", class: "class", icon: "icon", iconPos: "iconPos", buttonData: "buttonData" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n pButton\n pRipple\n [label]=\"label\"\n [ngClass]=\"[\n class,\n buttonType === 'primary' ? 'p-button-primary' : '',\n buttonType === 'outlined' ? 'p-button-outlined' : '',\n buttonType === 'text' ? 'p-button-text' : '',\n buttonType === 'refresh' ? 'refresh-button' : ''\n]\" \n [disabled]=\"disabled\"\n [loading]=\"loading\"\n [size]=\"size\"\n [icon]=\"icon\"\n [iconPos]=\"iconPos\"\n (click)=\"onButtonClick($event)\" \n [type]=\"type\"\n></button>\n", styles: ["::ng-deep .p-button-primary{background-color:#63b77e;color:#fff!important;border-radius:
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixButtonComponent, selector: "atomix-button", inputs: { label: "label", disabled: "disabled", loading: "loading", size: "size", buttonType: "buttonType", type: "type", class: "class", icon: "icon", iconPos: "iconPos", buttonData: "buttonData" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n pButton\n pRipple\n [label]=\"label\"\n [ngClass]=\"[\n class,\n buttonType === 'primary' ? 'p-button-primary' : '',\n buttonType === 'outlined' ? 'p-button-outlined' : '',\n buttonType === 'text' ? 'p-button-text' : '',\n buttonType === 'refresh' ? 'refresh-button' : ''\n]\" \n [disabled]=\"disabled\"\n [loading]=\"loading\"\n [size]=\"size\"\n [icon]=\"icon\"\n [iconPos]=\"iconPos\"\n (click)=\"onButtonClick($event)\" \n [type]=\"type\"\n></button>\n", styles: ["::ng-deep .p-button-primary{background-color:#63b77e;color:#fff!important;border-radius:8px;height:40px;padding:10.5px 17.5px;font-size:14px;font-weight:700;line-height:17px;outline:none;border:none;cursor:pointer}:is():enabled:hover{background-color:#63b77e}:is():disabled .p-button-label{color:#00000061!important}::ng-deep .p-button-outlined{background-color:var(--button-outlined-bg)!important;color:var(--button-outlined-text)!important;border-radius:8px;height:40px;padding:10.5px 17.5px;font-size:14px;font-weight:700;outline:none;line-height:17px;cursor:pointer}::ng-deep .refresh-button{background-color:var(--button-outlined-bg)!important;border-radius:50%;height:40px;width:40px}::ng-deep .p-button-text{color:#424242;background:none;border-radius:1px solid gray}:is():disabled{background:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }] });
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixButtonComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'atomix-button', template: "<button\n pButton\n pRipple\n [label]=\"label\"\n [ngClass]=\"[\n class,\n buttonType === 'primary' ? 'p-button-primary' : '',\n buttonType === 'outlined' ? 'p-button-outlined' : '',\n buttonType === 'text' ? 'p-button-text' : '',\n buttonType === 'refresh' ? 'refresh-button' : ''\n]\" \n [disabled]=\"disabled\"\n [loading]=\"loading\"\n [size]=\"size\"\n [icon]=\"icon\"\n [iconPos]=\"iconPos\"\n (click)=\"onButtonClick($event)\" \n [type]=\"type\"\n></button>\n", styles: ["::ng-deep .p-button-primary{background-color:#63b77e;color:#fff!important;border-radius:
|
|
25
|
+
args: [{ selector: 'atomix-button', template: "<button\n pButton\n pRipple\n [label]=\"label\"\n [ngClass]=\"[\n class,\n buttonType === 'primary' ? 'p-button-primary' : '',\n buttonType === 'outlined' ? 'p-button-outlined' : '',\n buttonType === 'text' ? 'p-button-text' : '',\n buttonType === 'refresh' ? 'refresh-button' : ''\n]\" \n [disabled]=\"disabled\"\n [loading]=\"loading\"\n [size]=\"size\"\n [icon]=\"icon\"\n [iconPos]=\"iconPos\"\n (click)=\"onButtonClick($event)\" \n [type]=\"type\"\n></button>\n", styles: ["::ng-deep .p-button-primary{background-color:#63b77e;color:#fff!important;border-radius:8px;height:40px;padding:10.5px 17.5px;font-size:14px;font-weight:700;line-height:17px;outline:none;border:none;cursor:pointer}:is():enabled:hover{background-color:#63b77e}:is():disabled .p-button-label{color:#00000061!important}::ng-deep .p-button-outlined{background-color:var(--button-outlined-bg)!important;color:var(--button-outlined-text)!important;border-radius:8px;height:40px;padding:10.5px 17.5px;font-size:14px;font-weight:700;outline:none;line-height:17px;cursor:pointer}::ng-deep .refresh-button{background-color:var(--button-outlined-bg)!important;border-radius:50%;height:40px;width:40px}::ng-deep .p-button-text{color:#424242;background:none;border-radius:1px solid gray}:is():disabled{background:none!important}\n"] }]
|
|
26
26
|
}], propDecorators: { label: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}], disabled: [{
|
|
@@ -7,11 +7,11 @@ export class AtomixCardComponent {
|
|
|
7
7
|
content;
|
|
8
8
|
class;
|
|
9
9
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixCardComponent, selector: "atomix-card", inputs: { header: "header", footer: "footer", content: "content", class: "class" }, ngImport: i0, template: "<p-card [class]=\"class\">\n <ng-content></ng-content>\n</p-card>\n", styles: ["::ng-deep .p-card{box-shadow:0 2px 4px #0000001a;border-radius:
|
|
10
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixCardComponent, selector: "atomix-card", inputs: { header: "header", footer: "footer", content: "content", class: "class" }, ngImport: i0, template: "<p-card [class]=\"class\">\n <ng-content></ng-content>\n</p-card>\n", styles: ["::ng-deep .p-card{box-shadow:0 2px 4px #0000001a;border-radius:8px!important}\n"], dependencies: [{ kind: "component", type: i1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }] });
|
|
11
11
|
}
|
|
12
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixCardComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
|
-
args: [{ selector: 'atomix-card', template: "<p-card [class]=\"class\">\n <ng-content></ng-content>\n</p-card>\n", styles: ["::ng-deep .p-card{box-shadow:0 2px 4px #0000001a;border-radius:
|
|
14
|
+
args: [{ selector: 'atomix-card', template: "<p-card [class]=\"class\">\n <ng-content></ng-content>\n</p-card>\n", styles: ["::ng-deep .p-card{box-shadow:0 2px 4px #0000001a;border-radius:8px!important}\n"] }]
|
|
15
15
|
}], propDecorators: { header: [{
|
|
16
16
|
type: Input
|
|
17
17
|
}], footer: [{
|
|
@@ -600,11 +600,11 @@ export class AtomixDaterangeCalendarComponent {
|
|
|
600
600
|
return Array.from(new Set(calEls));
|
|
601
601
|
}
|
|
602
602
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixDaterangeCalendarComponent, deps: [{ token: i1.DatePipe }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
603
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixDaterangeCalendarComponent, selector: "atomix-daterange-calendar", inputs: { placeholder: "placeholder", styleClass: "styleClass", selectionMode: "selectionMode", inputStyleClass: "inputStyleClass", inline: "inline", disabled: "disabled", selectedDate: "selectedDate", maxDate: "maxDate", minDate: "minDate", defaultPreset: "defaultPreset", preservePreset: "preservePreset" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: ["overlayPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar button{background-color:transparent!important}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}::ng-deep .p-datepicker{border:none!important;border-radius:8px}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984;padding:1rem!important}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month{padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e;padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year{padding:1rem!important}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:var(--text-gray-700);font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .p-datepicker table td>span.p-highlight.start-range{border-top-left-radius:10px;border-bottom-left-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.end-range{border-top-right-radius:10px;border-bottom-right-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.between-range{background:#00c37dad!important}::ng-deep .p-monthpicker-month{width:50%!important}::ng-deep .p-yearpicker-year{width:50%!important}::ng-deep .inline-calendar .p-datepicker table td>span{width:2.4rem;height:2.4rem}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 2rem;text-align:center;border-right:1px solid #e5e5e5}.inline-calendar .overlay-left{padding-bottom:2rem}.input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:40px!important;border-radius:30px}.input-wrapper input{color:#000000de}.input-wrapper input::placeholder{color:#0009}.input-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:10px}.input-clear-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:27px}.preset-list{display:flex;flex-direction:column;gap:0}.preset-btn{justify-content:flex-start;text-align:left;padding-left:8px}.inline-calendar .preset-btn{padding:.3rem .8rem!important}.inline-calendar{gap:0}.preset-btn .p-button-label{display:inline-block}.preset-btn:not(.p-button-outlined){background-color:transparent;color:var(--text-gray-700)}.preset-btn:hover{background-color:#63b77e}.preset-btn.active,.preset-btn.p-button.active,.preset-btn.custom-active,.preset-btn.p-button.custom-active{background-color:#63b77e!important;color:#fff!important;font-weight:700;line-height:17px;border-radius:12px}.reset-link{text-align:left;cursor:pointer;margin-top:25px;padding:.3rem 1.4rem!important;color:#63b77e;font-weight:600}.atomix-date-range-overlay .overlay-left .reset-link{display:inline-block;margin-top:1rem;color:#2196f3;cursor:pointer}.overlay-right{flex:1;width:230px;max-width:230px}.overlay-inner.inline{flex-direction:row}:host ::ng-deep .p-column-filter-menu .overlay-inner.inline{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}:host ::ng-deep .p-overlaypanel .overlay-inner.inline{display:flex!important;flex-direction:row!important}.overlay-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.atomix-overlay-calendar ::ng-deep .p-datepicker{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i5.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
603
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixDaterangeCalendarComponent, selector: "atomix-daterange-calendar", inputs: { placeholder: "placeholder", styleClass: "styleClass", selectionMode: "selectionMode", inputStyleClass: "inputStyleClass", inline: "inline", disabled: "disabled", selectedDate: "selectedDate", maxDate: "maxDate", minDate: "minDate", defaultPreset: "defaultPreset", preservePreset: "preservePreset" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: ["overlayPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar button{background-color:transparent!important}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}::ng-deep .p-datepicker{border:none!important;border-radius:8px}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984;padding:1rem!important}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month{padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e;padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year{padding:1rem!important}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:var(--text-gray-700);font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .p-datepicker table td>span.p-highlight.start-range{border-top-left-radius:10px;border-bottom-left-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.end-range{border-top-right-radius:10px;border-bottom-right-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.between-range{background:#00c37dad!important}::ng-deep .p-monthpicker-month{width:50%!important}::ng-deep .p-yearpicker-year{width:50%!important}::ng-deep .inline-calendar .p-datepicker table td>span{width:2.4rem;height:2.4rem}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 2rem;text-align:center;border-right:1px solid #e5e5e5}.inline-calendar .overlay-left{padding-bottom:2rem}.input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:40px!important;border-radius:8px}.input-wrapper input{color:#000000de}.input-wrapper input::placeholder{color:#0009}.input-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:10px}.input-clear-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:27px}.preset-list{display:flex;flex-direction:column;gap:0}.preset-btn{justify-content:flex-start;text-align:left;padding-left:8px}.inline-calendar .preset-btn{padding:.3rem .8rem!important}.inline-calendar{gap:0}.preset-btn .p-button-label{display:inline-block}.preset-btn:not(.p-button-outlined){background-color:transparent;color:var(--text-gray-700)}.preset-btn:hover{background-color:#63b77e}.preset-btn.active,.preset-btn.p-button.active,.preset-btn.custom-active,.preset-btn.p-button.custom-active{background-color:#63b77e!important;color:#fff!important;font-weight:700;line-height:17px;border-radius:12px}.reset-link{text-align:left;cursor:pointer;margin-top:25px;padding:.3rem 1.4rem!important;color:#63b77e;font-weight:600}.atomix-date-range-overlay .overlay-left .reset-link{display:inline-block;margin-top:1rem;color:#2196f3;cursor:pointer}.overlay-right{flex:1;width:230px;max-width:230px}.overlay-inner.inline{flex-direction:row}:host ::ng-deep .p-column-filter-menu .overlay-inner.inline{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}:host ::ng-deep .p-overlaypanel .overlay-inner.inline{display:flex!important;flex-direction:row!important}.overlay-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.atomix-overlay-calendar ::ng-deep .p-datepicker{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i5.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
604
604
|
}
|
|
605
605
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixDaterangeCalendarComponent, decorators: [{
|
|
606
606
|
type: Component,
|
|
607
|
-
args: [{ selector: 'atomix-daterange-calendar', template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar button{background-color:transparent!important}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}::ng-deep .p-datepicker{border:none!important;border-radius:8px}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984;padding:1rem!important}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month{padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e;padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year{padding:1rem!important}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:var(--text-gray-700);font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .p-datepicker table td>span.p-highlight.start-range{border-top-left-radius:10px;border-bottom-left-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.end-range{border-top-right-radius:10px;border-bottom-right-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.between-range{background:#00c37dad!important}::ng-deep .p-monthpicker-month{width:50%!important}::ng-deep .p-yearpicker-year{width:50%!important}::ng-deep .inline-calendar .p-datepicker table td>span{width:2.4rem;height:2.4rem}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 2rem;text-align:center;border-right:1px solid #e5e5e5}.inline-calendar .overlay-left{padding-bottom:2rem}.input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:40px!important;border-radius:
|
|
607
|
+
args: [{ selector: 'atomix-daterange-calendar', template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n <i *ngIf=\"hasSelection\" class=\"pi pi-times input-clear-icon\" title=\"Clear\" tabindex=\"0\" (click)=\"clearAndStop($event)\" (keydown.enter)=\"clearAndStop($event)\" (keydown.space)=\"clearAndStop($event)\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" (onMonthChange)=\"onCalendarViewChanged($event)\" (onYearChange)=\"onCalendarViewChanged($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar button{background-color:transparent!important}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}::ng-deep .p-datepicker{border:none!important;border-radius:8px}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984;padding:1rem!important}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month{padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e;padding:1rem!important}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year{padding:1rem!important}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:var(--text-gray-700);font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .p-datepicker table td>span.p-highlight.start-range{border-top-left-radius:10px;border-bottom-left-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.end-range{border-top-right-radius:10px;border-bottom-right-radius:10px}::ng-deep .p-datepicker table td>span.p-highlight.between-range{background:#00c37dad!important}::ng-deep .p-monthpicker-month{width:50%!important}::ng-deep .p-yearpicker-year{width:50%!important}::ng-deep .inline-calendar .p-datepicker table td>span{width:2.4rem;height:2.4rem}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 2rem;text-align:center;border-right:1px solid #e5e5e5}.inline-calendar .overlay-left{padding-bottom:2rem}.input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:40px!important;border-radius:8px}.input-wrapper input{color:#000000de}.input-wrapper input::placeholder{color:#0009}.input-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:10px}.input-clear-icon{cursor:pointer;color:var(--primary-text-color)!important;position:absolute;right:27px}.preset-list{display:flex;flex-direction:column;gap:0}.preset-btn{justify-content:flex-start;text-align:left;padding-left:8px}.inline-calendar .preset-btn{padding:.3rem .8rem!important}.inline-calendar{gap:0}.preset-btn .p-button-label{display:inline-block}.preset-btn:not(.p-button-outlined){background-color:transparent;color:var(--text-gray-700)}.preset-btn:hover{background-color:#63b77e}.preset-btn.active,.preset-btn.p-button.active,.preset-btn.custom-active,.preset-btn.p-button.custom-active{background-color:#63b77e!important;color:#fff!important;font-weight:700;line-height:17px;border-radius:12px}.reset-link{text-align:left;cursor:pointer;margin-top:25px;padding:.3rem 1.4rem!important;color:#63b77e;font-weight:600}.atomix-date-range-overlay .overlay-left .reset-link{display:inline-block;margin-top:1rem;color:#2196f3;cursor:pointer}.overlay-right{flex:1;width:230px;max-width:230px}.overlay-inner.inline{flex-direction:row}:host ::ng-deep .p-column-filter-menu .overlay-inner.inline{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}:host ::ng-deep .p-overlaypanel .overlay-inner.inline{display:flex!important;flex-direction:row!important}.overlay-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.atomix-overlay-calendar ::ng-deep .p-datepicker{width:100%}\n"] }]
|
|
608
608
|
}], ctorParameters: () => [{ type: i1.DatePipe }, { type: i0.Renderer2 }], propDecorators: { placeholder: [{
|
|
609
609
|
type: Input
|
|
610
610
|
}], styleClass: [{
|
|
@@ -22,11 +22,11 @@ export class AtomixFormCalendarComponent {
|
|
|
22
22
|
return this.form.get(this.controlName);
|
|
23
23
|
}
|
|
24
24
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixFormCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixFormCalendarComponent, selector: "atomix-form-calendar", inputs: { controlName: "controlName", form: "form", view: "view", dateFormat: "dateFormat", label: "label", isLabelRequired: "isLabelRequired", maxDate: "maxDate", minDate: "minDate", selectionMode: "selectionMode", placeholder: "placeholder", styleClass: "styleClass", inputStyleClass: "inputStyleClass" }, outputs: { dateSelectHandler: "dateSelectHandler", dateChangeHandler: "dateChangeHandler" }, ngImport: i0, template: "<label *ngIf=\"label\" [for]=\"controlName\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<p-calendar\n [formControl]=\"control\"\n id=\"calendar\"\n tooltipPosition=\"top\"\n [view]=\"view\"\n [dateFormat]=\"dateFormat\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"true\"\n [placeholder]=\"placeholder\"\n (onClose)=\"dateSelectHandler.emit()\"\n [inputStyleClass]=\"inputStyleClass\"\n [styleClass]=\"styleClass+ ' form-calendar'\"\n appendTo=\"body\"\n (onSelect)=\"dateChangeHandler.emit($event)\"\n/>\n", styles: ["::ng-deep .form-calendar{width:100%}::ng-deep .form-calendar input{border-radius:
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixFormCalendarComponent, selector: "atomix-form-calendar", inputs: { controlName: "controlName", form: "form", view: "view", dateFormat: "dateFormat", label: "label", isLabelRequired: "isLabelRequired", maxDate: "maxDate", minDate: "minDate", selectionMode: "selectionMode", placeholder: "placeholder", styleClass: "styleClass", inputStyleClass: "inputStyleClass" }, outputs: { dateSelectHandler: "dateSelectHandler", dateChangeHandler: "dateChangeHandler" }, ngImport: i0, template: "<label *ngIf=\"label\" [for]=\"controlName\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<p-calendar\n [formControl]=\"control\"\n id=\"calendar\"\n tooltipPosition=\"top\"\n [view]=\"view\"\n [dateFormat]=\"dateFormat\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"true\"\n [placeholder]=\"placeholder\"\n (onClose)=\"dateSelectHandler.emit()\"\n [inputStyleClass]=\"inputStyleClass\"\n [styleClass]=\"styleClass+ ' form-calendar'\"\n appendTo=\"body\"\n (onSelect)=\"dateChangeHandler.emit($event)\"\n/>\n", styles: ["::ng-deep .form-calendar{width:100%}::ng-deep .form-calendar input{border-radius:8px!important;margin-top:.2rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixFormCalendarComponent, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
|
-
args: [{ selector: 'atomix-form-calendar', template: "<label *ngIf=\"label\" [for]=\"controlName\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<p-calendar\n [formControl]=\"control\"\n id=\"calendar\"\n tooltipPosition=\"top\"\n [view]=\"view\"\n [dateFormat]=\"dateFormat\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"true\"\n [placeholder]=\"placeholder\"\n (onClose)=\"dateSelectHandler.emit()\"\n [inputStyleClass]=\"inputStyleClass\"\n [styleClass]=\"styleClass+ ' form-calendar'\"\n appendTo=\"body\"\n (onSelect)=\"dateChangeHandler.emit($event)\"\n/>\n", styles: ["::ng-deep .form-calendar{width:100%}::ng-deep .form-calendar input{border-radius:
|
|
29
|
+
args: [{ selector: 'atomix-form-calendar', template: "<label *ngIf=\"label\" [for]=\"controlName\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span></label\n>\n<p-calendar\n [formControl]=\"control\"\n id=\"calendar\"\n tooltipPosition=\"top\"\n [view]=\"view\"\n [dateFormat]=\"dateFormat\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectionMode]=\"selectionMode\"\n [readonlyInput]=\"true\"\n [placeholder]=\"placeholder\"\n (onClose)=\"dateSelectHandler.emit()\"\n [inputStyleClass]=\"inputStyleClass\"\n [styleClass]=\"styleClass+ ' form-calendar'\"\n appendTo=\"body\"\n (onSelect)=\"dateChangeHandler.emit($event)\"\n/>\n", styles: ["::ng-deep .form-calendar{width:100%}::ng-deep .form-calendar input{border-radius:8px!important;margin-top:.2rem}\n"] }]
|
|
30
30
|
}], propDecorators: { controlName: [{
|
|
31
31
|
type: Input
|
|
32
32
|
}], form: [{
|
|
@@ -35,11 +35,11 @@ export class AtomixFormInputComponent {
|
|
|
35
35
|
this.changeValueHandler.emit(input.value);
|
|
36
36
|
}
|
|
37
37
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixFormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixFormInputComponent, selector: "atomix-form-input", inputs: { controlName: "controlName", form: "form", label: "label", max: "max", min: "min", placeholder: "placeholder", type: "type", tooltip: "tooltip", class: "class", style: "style", isLabelIconData: "isLabelIconData", isLabelIconRequired: "isLabelIconRequired", isLabelRequired: "isLabelRequired", tooltipPosition: "tooltipPosition", buttonText: "buttonText", buttonType: "buttonType" }, outputs: { changeValueHandler: "changeValueHandler", buttonClick: "buttonClick" }, ngImport: i0, template: "<label *ngIf=\"label\" [for]=\"controlName\" class=\"ml-2\"\n >{{ label }} <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span\n ><i\n *ngIf=\"isLabelIconRequired\"\n [class]=\"isLabelIconData?.iconClass + ' ml-2'\"\n [pTooltip]=\"isLabelIconData?.tooltip\"\n ></i\n></label>\n<div class=\"input-wrapper\">\n <input\n pInputText\n [id]=\"controlName\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [maxlength]=\"max\"\n [min]=\"min\"\n (input)=\"onInput($event)\"\n [pTooltip]=\"tooltip\"\n [type]=\"type\"\n [tooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"class + ' lib-input-field' + (buttonText ? ' with-button' : '')\"\n autocomplete=\"new-password\"\n [style]=\"style\"\n />\n <button *ngIf=\"buttonText\" (click)=\"buttonClick.emit()\" class=\"inline-button\" [type]=\"buttonType\">{{ buttonText }}</button>\n</div>\n", styles: ["::ng-deep .lib-input-field{border-radius:
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixFormInputComponent, selector: "atomix-form-input", inputs: { controlName: "controlName", form: "form", label: "label", max: "max", min: "min", placeholder: "placeholder", type: "type", tooltip: "tooltip", class: "class", style: "style", isLabelIconData: "isLabelIconData", isLabelIconRequired: "isLabelIconRequired", isLabelRequired: "isLabelRequired", tooltipPosition: "tooltipPosition", buttonText: "buttonText", buttonType: "buttonType" }, outputs: { changeValueHandler: "changeValueHandler", buttonClick: "buttonClick" }, ngImport: i0, template: "<label *ngIf=\"label\" [for]=\"controlName\" class=\"ml-2\"\n >{{ label }} <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span\n ><i\n *ngIf=\"isLabelIconRequired\"\n [class]=\"isLabelIconData?.iconClass + ' ml-2'\"\n [pTooltip]=\"isLabelIconData?.tooltip\"\n ></i\n></label>\n<div class=\"input-wrapper\">\n <input\n pInputText\n [id]=\"controlName\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [maxlength]=\"max\"\n [min]=\"min\"\n (input)=\"onInput($event)\"\n [pTooltip]=\"tooltip\"\n [type]=\"type\"\n [tooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"class + ' lib-input-field' + (buttonText ? ' with-button' : '')\"\n autocomplete=\"new-password\"\n [style]=\"style\"\n />\n <button *ngIf=\"buttonText\" (click)=\"buttonClick.emit()\" class=\"inline-button\" [type]=\"buttonType\">{{ buttonText }}</button>\n</div>\n", styles: ["::ng-deep .lib-input-field{border-radius:8px;margin-top:.2rem}::ng-deep .lib-input-field.with-button{padding-right:6rem}.error-asterisk{color:red}.input-wrapper{position:relative}.inline-button{position:absolute;right:5px;background-color:transparent;color:#63b77e;font-weight:700;border:none;cursor:pointer;font-size:.875rem;height:95%;margin-top:.2rem;border-left:1px solid grey}.inline-button:focus{outline:none}.inline-button:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
39
39
|
}
|
|
40
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixFormInputComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
|
-
args: [{ selector: 'atomix-form-input', template: "<label *ngIf=\"label\" [for]=\"controlName\" class=\"ml-2\"\n >{{ label }} <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span\n ><i\n *ngIf=\"isLabelIconRequired\"\n [class]=\"isLabelIconData?.iconClass + ' ml-2'\"\n [pTooltip]=\"isLabelIconData?.tooltip\"\n ></i\n></label>\n<div class=\"input-wrapper\">\n <input\n pInputText\n [id]=\"controlName\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [maxlength]=\"max\"\n [min]=\"min\"\n (input)=\"onInput($event)\"\n [pTooltip]=\"tooltip\"\n [type]=\"type\"\n [tooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"class + ' lib-input-field' + (buttonText ? ' with-button' : '')\"\n autocomplete=\"new-password\"\n [style]=\"style\"\n />\n <button *ngIf=\"buttonText\" (click)=\"buttonClick.emit()\" class=\"inline-button\" [type]=\"buttonType\">{{ buttonText }}</button>\n</div>\n", styles: ["::ng-deep .lib-input-field{border-radius:
|
|
42
|
+
args: [{ selector: 'atomix-form-input', template: "<label *ngIf=\"label\" [for]=\"controlName\" class=\"ml-2\"\n >{{ label }} <span *ngIf=\"isLabelRequired\" class=\"error-asterisk\">*</span\n ><i\n *ngIf=\"isLabelIconRequired\"\n [class]=\"isLabelIconData?.iconClass + ' ml-2'\"\n [pTooltip]=\"isLabelIconData?.tooltip\"\n ></i\n></label>\n<div class=\"input-wrapper\">\n <input\n pInputText\n [id]=\"controlName\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [maxlength]=\"max\"\n [min]=\"min\"\n (input)=\"onInput($event)\"\n [pTooltip]=\"tooltip\"\n [type]=\"type\"\n [tooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"class + ' lib-input-field' + (buttonText ? ' with-button' : '')\"\n autocomplete=\"new-password\"\n [style]=\"style\"\n />\n <button *ngIf=\"buttonText\" (click)=\"buttonClick.emit()\" class=\"inline-button\" [type]=\"buttonType\">{{ buttonText }}</button>\n</div>\n", styles: ["::ng-deep .lib-input-field{border-radius:8px;margin-top:.2rem}::ng-deep .lib-input-field.with-button{padding-right:6rem}.error-asterisk{color:red}.input-wrapper{position:relative}.inline-button{position:absolute;right:5px;background-color:transparent;color:#63b77e;font-weight:700;border:none;cursor:pointer;font-size:.875rem;height:95%;margin-top:.2rem;border-left:1px solid grey}.inline-button:focus{outline:none}.inline-button:hover{background-color:transparent}\n"] }]
|
|
43
43
|
}], propDecorators: { controlName: [{
|
|
44
44
|
type: Input
|
|
45
45
|
}], form: [{
|
|
@@ -50,11 +50,11 @@ export class AtomixInputComponent {
|
|
|
50
50
|
this.inputEl?.nativeElement?.focus();
|
|
51
51
|
}
|
|
52
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixInputComponent, selector: "atomix-input", inputs: { value: "value", name: "name", type: "type", placeholder: "placeholder", withSearchIcon: "withSearchIcon", searchIconPosition: "searchIconPosition", iconName: "iconName", containerClass: "containerClass", class: "class", disabled: "disabled", isCrossRequired: "isCrossRequired", label: "label", isLabelRequired: "isLabelRequired", autofocus: "autofocus" }, outputs: { valueChange: "valueChange", changeValueHandler: "changeValueHandler" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:var(--primary-text-color)!important;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:0}.with-search-icon-left{padding-left:30px!important;padding-right:30px!important}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:
|
|
53
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixInputComponent, selector: "atomix-input", inputs: { value: "value", name: "name", type: "type", placeholder: "placeholder", withSearchIcon: "withSearchIcon", searchIconPosition: "searchIconPosition", iconName: "iconName", containerClass: "containerClass", class: "class", disabled: "disabled", isCrossRequired: "isCrossRequired", label: "label", isLabelRequired: "isLabelRequired", autofocus: "autofocus" }, outputs: { valueChange: "valueChange", changeValueHandler: "changeValueHandler" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:var(--primary-text-color)!important;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:0}.with-search-icon-left{padding-left:30px!important;padding-right:30px!important}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant"] }] });
|
|
54
54
|
}
|
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixInputComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
|
-
args: [{ selector: 'atomix-input', template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:var(--primary-text-color)!important;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:0}.with-search-icon-left{padding-left:30px!important;padding-right:30px!important}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:
|
|
57
|
+
args: [{ selector: 'atomix-input', template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:var(--primary-text-color)!important;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:0}.with-search-icon-left{padding-left:30px!important;padding-right:30px!important}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:8px}\n"] }]
|
|
58
58
|
}], propDecorators: { inputEl: [{
|
|
59
59
|
type: ViewChild,
|
|
60
60
|
args: ['inputEl']
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
|
|
2
2
|
import { debounceTime, distinctUntilChanged, Subject, Subscription, } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -31,6 +31,7 @@ export class AtomixSearchDropdownComponent {
|
|
|
31
31
|
dropdownName = '';
|
|
32
32
|
label = '';
|
|
33
33
|
isLabelRequired = false;
|
|
34
|
+
isCustomFilter;
|
|
34
35
|
containerClass = 'billing-input-column-container search-filter-container';
|
|
35
36
|
searchValueChange = new EventEmitter();
|
|
36
37
|
dropdownValueChange = new EventEmitter();
|
|
@@ -59,6 +60,9 @@ export class AtomixSearchDropdownComponent {
|
|
|
59
60
|
onSearchInput(event) {
|
|
60
61
|
const input = event.target;
|
|
61
62
|
this.searchValue = input.value;
|
|
63
|
+
if (this.isCustomFilter) {
|
|
64
|
+
this.searchValueChange.emit(this.searchValue);
|
|
65
|
+
}
|
|
62
66
|
}
|
|
63
67
|
onSearchEnter() {
|
|
64
68
|
this.searchValueChange.emit(this.searchValue);
|
|
@@ -77,11 +81,11 @@ export class AtomixSearchDropdownComponent {
|
|
|
77
81
|
this.searchInputEl?.nativeElement?.focus();
|
|
78
82
|
}
|
|
79
83
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixSearchDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixSearchDropdownComponent, selector: "atomix-search-dropdown", inputs: { searchValue: "searchValue", searchPlaceholder: "searchPlaceholder", searchType: "searchType", searchDisabled: "searchDisabled", searchLabel: "searchLabel", searchIsLabelRequired: "searchIsLabelRequired", searchClass: "searchClass", searchIsCrossRequired: "searchIsCrossRequired", searchName: "searchName", dropdownOptions: "dropdownOptions", dropdownSelected: "dropdownSelected", dropdownPlaceholder: "dropdownPlaceholder", dropdownOptionLabel: "dropdownOptionLabel", dropdownOptionValue: "dropdownOptionValue", dropdownDisabled: "dropdownDisabled", dropdownShowClear: "dropdownShowClear", dropdownFilter: "dropdownFilter", dropdownLabel: "dropdownLabel", dropdownIsLabelRequired: "dropdownIsLabelRequired", dropdownStyleClass: "dropdownStyleClass", dropdownName: "dropdownName", label: "label", isLabelRequired: "isLabelRequired", containerClass: "containerClass" }, outputs: { searchValueChange: "searchValueChange", dropdownValueChange: "dropdownValueChange", dropdownFilterChange: "dropdownFilterChange" }, viewQueries: [{ propertyName: "searchInputEl", first: true, predicate: ["searchInputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"searchName\">\n {{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span>\n</label>\n\n<div [ngClass]=\"containerClass\">\n <div class=\"search-dropdown-container\">\n <input\n [id]=\"searchName\"\n type=\"text\"\n pInputText\n [value]=\"searchValue\"\n [attr.placeholder]=\"searchPlaceholder\"\n (input)=\"onSearchInput($event)\"\n (keydown.enter)=\"onSearchEnter()\"\n [ngClass]=\"searchClass + ' lib-input-field'\"\n autocomplete=\"new-password\"\n [disabled]=\"searchDisabled\"\n [type]=\"searchType\"\n #searchInputEl\n class=\"search-input\"\n />\n <span>\n \n <i\n class=\"pi pi-times filter-dropdown-icon\"\n style=\"cursor: pointer\"\n (click)=\"clearSearchValue()\"\n *ngIf=\"searchIsCrossRequired && searchValue !== ''\"\n ></i>\n </span>\n </div>\n\n <p-dropdown\n [options]=\"dropdownOptions\"\n [(ngModel)]=\"dropdownSelected\"\n (onChange)=\"onDropdownChange($event)\"\n [name]=\"dropdownName\"\n [optionValue]=\"dropdownOptionValue\"\n [optionLabel]=\"dropdownOptionLabel\"\n [showClear]=\"dropdownShowClear\"\n [filter]=\"dropdownFilter\"\n [filterBy]=\"dropdownOptionLabel\"\n appendTo=\"body\"\n [disabled]=\"dropdownDisabled\"\n [styleClass]=\"dropdownStyleClass\"\n (onFilter)=\"onDropdownFilter($event)\"\n [placeholder]=\"dropdownPlaceholder\"\n class=\"search-dropdown\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"custom-item\">\n <i\n [ngClass]=\"option.dropdownIcon\"\n class=\"dropdown-logo\"\n *ngIf=\"option.dropdownIcon\"\n ></i>\n <img\n [alt]=\"option.dropdownImage\"\n [src]=\"option.dropdownImage\"\n *ngIf=\"option.dropdownImage\"\n class=\"dropdown-image\"\n />\n\n <span>{{ option[dropdownOptionLabel] }}</span>\n </div>\n </ng-template>\n </p-dropdown>\n</div>", styles: ["input[type=search]::-webkit-search-cancel-button{display:none}input[type=search]::-moz-search-cancel-button{display:none}input[type=search]::-ms-clear{display:none}.lib-error-asterisk{color:red}.billing-input-column-container{display:flex}.filter-dropdown-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d;right:10px}.search-dropdown{border-top-left-radius:0!important;border-bottom-left-radius:0!important;width:max-content!important}.search-input{background-color:var(--filter-inventory-bg);border:1px solid var(--border-color)!important;margin-top:0!important;border-right:none!important;padding-right:
|
|
84
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AtomixSearchDropdownComponent, selector: "atomix-search-dropdown", inputs: { searchValue: "searchValue", searchPlaceholder: "searchPlaceholder", searchType: "searchType", searchDisabled: "searchDisabled", searchLabel: "searchLabel", searchIsLabelRequired: "searchIsLabelRequired", searchClass: "searchClass", searchIsCrossRequired: "searchIsCrossRequired", searchName: "searchName", dropdownOptions: "dropdownOptions", dropdownSelected: "dropdownSelected", dropdownPlaceholder: "dropdownPlaceholder", dropdownOptionLabel: "dropdownOptionLabel", dropdownOptionValue: "dropdownOptionValue", dropdownDisabled: "dropdownDisabled", dropdownShowClear: "dropdownShowClear", dropdownFilter: "dropdownFilter", dropdownLabel: "dropdownLabel", dropdownIsLabelRequired: "dropdownIsLabelRequired", dropdownStyleClass: "dropdownStyleClass", dropdownName: "dropdownName", label: "label", isLabelRequired: "isLabelRequired", isCustomFilter: "isCustomFilter", containerClass: "containerClass" }, outputs: { searchValueChange: "searchValueChange", dropdownValueChange: "dropdownValueChange", dropdownFilterChange: "dropdownFilterChange" }, viewQueries: [{ propertyName: "searchInputEl", first: true, predicate: ["searchInputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"searchName\">\n {{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span>\n</label>\n\n<div [ngClass]=\"containerClass\">\n <div class=\"search-dropdown-container\">\n <input\n [id]=\"searchName\"\n type=\"text\"\n pInputText\n [value]=\"searchValue\"\n [attr.placeholder]=\"searchPlaceholder\"\n (input)=\"onSearchInput($event)\"\n (keydown.enter)=\"onSearchEnter()\"\n [ngClass]=\"searchClass + ' lib-input-field'\"\n autocomplete=\"new-password\"\n [disabled]=\"searchDisabled\"\n [type]=\"searchType\"\n #searchInputEl\n class=\"search-input\"\n />\n <span>\n \n <i\n class=\"pi pi-times filter-dropdown-icon\"\n style=\"cursor: pointer\"\n (click)=\"clearSearchValue()\"\n *ngIf=\"searchIsCrossRequired && searchValue !== ''\"\n ></i>\n </span>\n </div>\n\n <p-dropdown\n [options]=\"dropdownOptions\"\n [(ngModel)]=\"dropdownSelected\"\n (onChange)=\"onDropdownChange($event)\"\n [name]=\"dropdownName\"\n [optionValue]=\"dropdownOptionValue\"\n [optionLabel]=\"dropdownOptionLabel\"\n [showClear]=\"dropdownShowClear\"\n [filter]=\"dropdownFilter\"\n [filterBy]=\"dropdownOptionLabel\"\n appendTo=\"body\"\n [disabled]=\"dropdownDisabled\"\n [styleClass]=\"dropdownStyleClass\"\n (onFilter)=\"onDropdownFilter($event)\"\n [placeholder]=\"dropdownPlaceholder\"\n class=\"search-dropdown\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"custom-item\">\n <i\n [ngClass]=\"option.dropdownIcon\"\n class=\"dropdown-logo\"\n *ngIf=\"option.dropdownIcon\"\n ></i>\n <img\n [alt]=\"option.dropdownImage\"\n [src]=\"option.dropdownImage\"\n *ngIf=\"option.dropdownImage\"\n class=\"dropdown-image\"\n />\n\n <span>{{ option[dropdownOptionLabel] }}</span>\n </div>\n </ng-template>\n </p-dropdown>\n</div>", styles: ["input[type=search]::-webkit-search-cancel-button{display:none}input[type=search]::-moz-search-cancel-button{display:none}input[type=search]::-ms-clear{display:none}.lib-error-asterisk{color:red}.billing-input-column-container{display:flex}.filter-dropdown-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d;right:10px}.search-dropdown{border-top-left-radius:0!important;border-bottom-left-radius:0!important;width:max-content!important}.search-input{background-color:var(--filter-inventory-bg);border:1px solid var(--border-color)!important;margin-top:0!important;border-right:none!important;padding-right:8px}.search-dropdown-container{position:relative;flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
81
85
|
}
|
|
82
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AtomixSearchDropdownComponent, decorators: [{
|
|
83
87
|
type: Component,
|
|
84
|
-
args: [{ selector: 'atomix-search-dropdown', template: "<label *ngIf=\"label\" for=\"searchName\">\n {{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span>\n</label>\n\n<div [ngClass]=\"containerClass\">\n <div class=\"search-dropdown-container\">\n <input\n [id]=\"searchName\"\n type=\"text\"\n pInputText\n [value]=\"searchValue\"\n [attr.placeholder]=\"searchPlaceholder\"\n (input)=\"onSearchInput($event)\"\n (keydown.enter)=\"onSearchEnter()\"\n [ngClass]=\"searchClass + ' lib-input-field'\"\n autocomplete=\"new-password\"\n [disabled]=\"searchDisabled\"\n [type]=\"searchType\"\n #searchInputEl\n class=\"search-input\"\n />\n <span>\n \n <i\n class=\"pi pi-times filter-dropdown-icon\"\n style=\"cursor: pointer\"\n (click)=\"clearSearchValue()\"\n *ngIf=\"searchIsCrossRequired && searchValue !== ''\"\n ></i>\n </span>\n </div>\n\n <p-dropdown\n [options]=\"dropdownOptions\"\n [(ngModel)]=\"dropdownSelected\"\n (onChange)=\"onDropdownChange($event)\"\n [name]=\"dropdownName\"\n [optionValue]=\"dropdownOptionValue\"\n [optionLabel]=\"dropdownOptionLabel\"\n [showClear]=\"dropdownShowClear\"\n [filter]=\"dropdownFilter\"\n [filterBy]=\"dropdownOptionLabel\"\n appendTo=\"body\"\n [disabled]=\"dropdownDisabled\"\n [styleClass]=\"dropdownStyleClass\"\n (onFilter)=\"onDropdownFilter($event)\"\n [placeholder]=\"dropdownPlaceholder\"\n class=\"search-dropdown\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"custom-item\">\n <i\n [ngClass]=\"option.dropdownIcon\"\n class=\"dropdown-logo\"\n *ngIf=\"option.dropdownIcon\"\n ></i>\n <img\n [alt]=\"option.dropdownImage\"\n [src]=\"option.dropdownImage\"\n *ngIf=\"option.dropdownImage\"\n class=\"dropdown-image\"\n />\n\n <span>{{ option[dropdownOptionLabel] }}</span>\n </div>\n </ng-template>\n </p-dropdown>\n</div>", styles: ["input[type=search]::-webkit-search-cancel-button{display:none}input[type=search]::-moz-search-cancel-button{display:none}input[type=search]::-ms-clear{display:none}.lib-error-asterisk{color:red}.billing-input-column-container{display:flex}.filter-dropdown-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d;right:10px}.search-dropdown{border-top-left-radius:0!important;border-bottom-left-radius:0!important;width:max-content!important}.search-input{background-color:var(--filter-inventory-bg);border:1px solid var(--border-color)!important;margin-top:0!important;border-right:none!important;padding-right:
|
|
88
|
+
args: [{ selector: 'atomix-search-dropdown', template: "<label *ngIf=\"label\" for=\"searchName\">\n {{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span>\n</label>\n\n<div [ngClass]=\"containerClass\">\n <div class=\"search-dropdown-container\">\n <input\n [id]=\"searchName\"\n type=\"text\"\n pInputText\n [value]=\"searchValue\"\n [attr.placeholder]=\"searchPlaceholder\"\n (input)=\"onSearchInput($event)\"\n (keydown.enter)=\"onSearchEnter()\"\n [ngClass]=\"searchClass + ' lib-input-field'\"\n autocomplete=\"new-password\"\n [disabled]=\"searchDisabled\"\n [type]=\"searchType\"\n #searchInputEl\n class=\"search-input\"\n />\n <span>\n \n <i\n class=\"pi pi-times filter-dropdown-icon\"\n style=\"cursor: pointer\"\n (click)=\"clearSearchValue()\"\n *ngIf=\"searchIsCrossRequired && searchValue !== ''\"\n ></i>\n </span>\n </div>\n\n <p-dropdown\n [options]=\"dropdownOptions\"\n [(ngModel)]=\"dropdownSelected\"\n (onChange)=\"onDropdownChange($event)\"\n [name]=\"dropdownName\"\n [optionValue]=\"dropdownOptionValue\"\n [optionLabel]=\"dropdownOptionLabel\"\n [showClear]=\"dropdownShowClear\"\n [filter]=\"dropdownFilter\"\n [filterBy]=\"dropdownOptionLabel\"\n appendTo=\"body\"\n [disabled]=\"dropdownDisabled\"\n [styleClass]=\"dropdownStyleClass\"\n (onFilter)=\"onDropdownFilter($event)\"\n [placeholder]=\"dropdownPlaceholder\"\n class=\"search-dropdown\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"custom-item\">\n <i\n [ngClass]=\"option.dropdownIcon\"\n class=\"dropdown-logo\"\n *ngIf=\"option.dropdownIcon\"\n ></i>\n <img\n [alt]=\"option.dropdownImage\"\n [src]=\"option.dropdownImage\"\n *ngIf=\"option.dropdownImage\"\n class=\"dropdown-image\"\n />\n\n <span>{{ option[dropdownOptionLabel] }}</span>\n </div>\n </ng-template>\n </p-dropdown>\n</div>", styles: ["input[type=search]::-webkit-search-cancel-button{display:none}input[type=search]::-moz-search-cancel-button{display:none}input[type=search]::-ms-clear{display:none}.lib-error-asterisk{color:red}.billing-input-column-container{display:flex}.filter-dropdown-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d;right:10px}.search-dropdown{border-top-left-radius:0!important;border-bottom-left-radius:0!important;width:max-content!important}.search-input{background-color:var(--filter-inventory-bg);border:1px solid var(--border-color)!important;margin-top:0!important;border-right:none!important;padding-right:8px}.search-dropdown-container{position:relative;flex:1}\n"] }]
|
|
85
89
|
}], ctorParameters: () => [], propDecorators: { searchInputEl: [{
|
|
86
90
|
type: ViewChild,
|
|
87
91
|
args: ['searchInputEl']
|
|
@@ -131,6 +135,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
131
135
|
type: Input
|
|
132
136
|
}], isLabelRequired: [{
|
|
133
137
|
type: Input
|
|
138
|
+
}], isCustomFilter: [{
|
|
139
|
+
type: Input
|
|
134
140
|
}], containerClass: [{
|
|
135
141
|
type: Input
|
|
136
142
|
}], searchValueChange: [{
|
|
@@ -140,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
140
146
|
}], dropdownFilterChange: [{
|
|
141
147
|
type: Output
|
|
142
148
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWl4LXNlYXJjaC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmltZWtpdC9zcmMvbGliL2xpYi9hdG9taXgtc2VhcmNoLWRyb3Bkb3duL2F0b21peC1zZWFyY2gtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbWVraXQvc3JjL2xpYi9saWIvYXRvbWl4LXNlYXJjaC1kcm9wZG93bi9hdG9taXgtc2VhcmNoLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPZCxNQUFNLE9BQU8sNkJBQTZCO0lBQ1osYUFBYSxDQUFnQztJQUVoRSxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGlCQUFpQixHQUFXLFFBQVEsQ0FBQztJQUNyQyxVQUFVLEdBQVcsUUFBUSxDQUFDO0lBQzlCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixxQkFBcUIsR0FBWSxLQUFLLENBQUM7SUFDdkMsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixxQkFBcUIsR0FBWSxJQUFJLENBQUM7SUFDdEMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4QixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLGdCQUFnQixDQUFNO0lBQ3RCLG1CQUFtQixHQUFXLFFBQVEsQ0FBQztJQUN2QyxtQkFBbUIsR0FBVyxTQUFTLENBQUM7SUFDeEMsbUJBQW1CLEdBQVcsRUFBRSxDQUFDO0lBQ2pDLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxpQkFBaUIsR0FBWSxJQUFJLENBQUM7SUFDbEMsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLHVCQUF1QixHQUFZLEtBQUssQ0FBQztJQUN6QyxrQkFBa0IsR0FBVyxFQUFFLENBQUM7SUFDaEMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUUxQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsY0FBYyxHQUFXLHdEQUF3RCxDQUFDO0lBRWpGLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDL0MsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUM5QyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUV6RTs7T0FFRztJQUNILG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0lBRXpEOztPQUVHO0lBQ0gsWUFBWSxHQUFHLEdBQUcsQ0FBQztJQUVuQjs7T0FFRztJQUNILHFCQUFxQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ25ELFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7SUFFRjs7T0FFRztJQUNILFlBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVoRDtRQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBMEI7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzdDLENBQUM7d0dBMUZVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDJxQ0NkMUMsMm5FQW9FTTs7NEZEdERPLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSx3QkFBd0I7d0RBS04sYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUVqQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyb3Bkb3duRmlsdGVyRXZlbnQgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0b21peC1zZWFyY2gtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXRvbWl4LXNlYXJjaC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F0b21peC1zZWFyY2gtZHJvcGRvd24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBdG9taXhTZWFyY2hEcm9wZG93bkNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWwnKSBzZWFyY2hJbnB1dEVsITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKSBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoVHlwZTogc3RyaW5nID0gJ3NlYXJjaCc7XG4gIEBJbnB1dCgpIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlYXJjaExhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VhcmNoSXNMYWJlbFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlYXJjaENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VhcmNoSXNDcm9zc1JlcXVpcmVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VhcmNoTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgZHJvcGRvd25PcHRpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBkcm9wZG93blNlbGVjdGVkOiBhbnk7XG4gIEBJbnB1dCgpIGRyb3Bkb3duUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdDb2x1bW4nO1xuICBASW5wdXQoKSBkcm9wZG93bk9wdGlvbkxhYmVsOiBzdHJpbmcgPSAnZGlzcGxheSc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duT3B0aW9uVmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkcm9wZG93bkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRyb3Bkb3duU2hvd0NsZWFyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZHJvcGRvd25GaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd25MYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duSXNMYWJlbFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRyb3Bkb3duU3R5bGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpc0xhYmVsUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJ2JpbGxpbmctaW5wdXQtY29sdW1uLWNvbnRhaW5lciBzZWFyY2gtZmlsdGVyLWNvbnRhaW5lcic7XG5cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBkcm9wZG93blZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkcm9wZG93bkZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcGRvd25GaWx0ZXJFdmVudD4oKTtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGZyb20gdGhlIHVzZXIgdXNlZCB0byBzZWFyY2ggZHJvcGRvd24gbGlzdFxuICAgKi9cbiAgZHJvcGRvd25GaWx0ZXJWYWx1ZSA9IG5ldyBTdWJqZWN0PERyb3Bkb3duRmlsdGVyRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1zIHRoYXQgaXQgdGFrZXMgdG8gcmVnaXN0ZXIgd2hlbiB1c2VyIGlzIGRvbmUgdHlwaW5nXG4gICAqL1xuICBkZWJvdW5jZVRpbWUgPSAzMDA7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmlnZ2VyIHRoYXQgdXNlcyB0aGUgZGVib3VuY2UgdGltZSB0byBjcmVhdGUgZGVsYXkgb2Ygd2hlbiB1c2VyIHR5cGVzIHRvIGFjdHVhbCBmaWx0ZXJpbmdcbiAgICovXG4gIGRyb3Bkb3duRmlsdGVyVHJpZ2dlciA9IHRoaXMuZHJvcGRvd25GaWx0ZXJWYWx1ZS5waXBlKFxuICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdHJpZ2dlclxuICAgKi9cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5kcm9wZG93bkZpbHRlclRyaWdnZXIuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkZpbHRlckNoYW5nZS5lbWl0KCRldmVudCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICB9XG5cbiAgb25TZWFyY2hFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cblxuICBjbGVhclNlYXJjaFZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cblxuICBvbkRyb3Bkb3duQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duVmFsdWVDaGFuZ2UuZW1pdChbZXZlbnQudmFsdWUsIHRoaXMuZHJvcGRvd25OYW1lXSk7XG4gIH1cblxuICBvbkRyb3Bkb3duRmlsdGVyKGV2ZW50OiBEcm9wZG93bkZpbHRlckV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkZpbHRlclZhbHVlLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgZm9jdXNTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dEVsPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG59IiwiPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBmb3I9XCJzZWFyY2hOYW1lXCI+XG4gIHt7IGxhYmVsIH19XG4gIDxzcGFuICpuZ0lmPVwiaXNMYWJlbFJlcXVpcmVkXCIgY2xhc3M9XCJsaWItZXJyb3ItYXN0ZXJpc2tcIj4qPC9zcGFuPlxuPC9sYWJlbD5cblxuPGRpdiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtZHJvcGRvd24tY29udGFpbmVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtpZF09XCJzZWFyY2hOYW1lXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hWYWx1ZVwiXG4gICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2VhcmNoRW50ZXIoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwic2VhcmNoQ2xhc3MgKyAnIGxpYi1pbnB1dC1maWVsZCdcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCJcbiAgICAgICAgICBbdHlwZV09XCJzZWFyY2hUeXBlXCJcbiAgICAgICAgICAjc2VhcmNoSW5wdXRFbFxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+XG4gICAgICBcbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwicGkgcGktdGltZXMgZmlsdGVyLWRyb3Bkb3duLWljb25cIlxuICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaFZhbHVlKClcIlxuICAgICAgICAgICAgICAqbmdJZj1cInNlYXJjaElzQ3Jvc3NSZXF1aXJlZCAmJiBzZWFyY2hWYWx1ZSAhPT0gJydcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gIDxwLWRyb3Bkb3duXG4gICAgW29wdGlvbnNdPVwiZHJvcGRvd25PcHRpb25zXCJcbiAgICBbKG5nTW9kZWwpXT1cImRyb3Bkb3duU2VsZWN0ZWRcIlxuICAgIChvbkNoYW5nZSk9XCJvbkRyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgIFtuYW1lXT1cImRyb3Bkb3duTmFtZVwiXG4gICAgW29wdGlvblZhbHVlXT1cImRyb3Bkb3duT3B0aW9uVmFsdWVcIlxuICAgIFtvcHRpb25MYWJlbF09XCJkcm9wZG93bk9wdGlvbkxhYmVsXCJcbiAgICBbc2hvd0NsZWFyXT1cImRyb3Bkb3duU2hvd0NsZWFyXCJcbiAgICBbZmlsdGVyXT1cImRyb3Bkb3duRmlsdGVyXCJcbiAgICBbZmlsdGVyQnldPVwiZHJvcGRvd25PcHRpb25MYWJlbFwiXG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBbZGlzYWJsZWRdPVwiZHJvcGRvd25EaXNhYmxlZFwiXG4gICAgW3N0eWxlQ2xhc3NdPVwiZHJvcGRvd25TdHlsZUNsYXNzXCJcbiAgICAob25GaWx0ZXIpPVwib25Ecm9wZG93bkZpbHRlcigkZXZlbnQpXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZHJvcGRvd25QbGFjZWhvbGRlclwiXG4gICAgY2xhc3M9XCJzZWFyY2gtZHJvcGRvd25cIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1vcHRpb24gcFRlbXBsYXRlPVwiaXRlbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pdGVtXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uLmRyb3Bkb3duSWNvblwiXG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1sb2dvXCJcbiAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5kcm9wZG93bkljb25cIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW2FsdF09XCJvcHRpb24uZHJvcGRvd25JbWFnZVwiXG4gICAgICAgICAgW3NyY109XCJvcHRpb24uZHJvcGRvd25JbWFnZVwiXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb24uZHJvcGRvd25JbWFnZVwiXG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pbWFnZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHNwYW4+e3sgb3B0aW9uW2Ryb3Bkb3duT3B0aW9uTGFiZWxdIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLWRyb3Bkb3duPlxuPC9kaXY+Il19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWl4LXNlYXJjaC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmltZWtpdC9zcmMvbGliL2xpYi9hdG9taXgtc2VhcmNoLWRyb3Bkb3duL2F0b21peC1zZWFyY2gtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbWVraXQvc3JjL2xpYi9saWIvYXRvbWl4LXNlYXJjaC1kcm9wZG93bi9hdG9taXgtc2VhcmNoLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPZCxNQUFNLE9BQU8sNkJBQTZCO0lBQ1osYUFBYSxDQUFnQztJQUVoRSxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGlCQUFpQixHQUFXLFFBQVEsQ0FBQztJQUNyQyxVQUFVLEdBQVcsUUFBUSxDQUFDO0lBQzlCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixxQkFBcUIsR0FBWSxLQUFLLENBQUM7SUFDdkMsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixxQkFBcUIsR0FBWSxJQUFJLENBQUM7SUFDdEMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4QixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLGdCQUFnQixDQUFNO0lBQ3RCLG1CQUFtQixHQUFXLFFBQVEsQ0FBQztJQUN2QyxtQkFBbUIsR0FBVyxTQUFTLENBQUM7SUFDeEMsbUJBQW1CLEdBQVcsRUFBRSxDQUFDO0lBQ2pDLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxpQkFBaUIsR0FBWSxJQUFJLENBQUM7SUFDbEMsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLHVCQUF1QixHQUFZLEtBQUssQ0FBQztJQUN6QyxrQkFBa0IsR0FBVyxFQUFFLENBQUM7SUFDaEMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUUxQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsY0FBYyxDQUFXO0lBRXpCLGNBQWMsR0FDckIsd0RBQXdELENBQUM7SUFFakQsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUMvQyxtQkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzlDLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO0lBRXpFOztPQUVHO0lBQ0gsbUJBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7SUFFekQ7O09BRUc7SUFDSCxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBRW5COztPQUVHO0lBQ0gscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDbkQsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztJQUVGOztPQUVHO0lBQ0gsWUFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWhEO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVk7UUFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBMEI7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzdDLENBQUM7d0dBaEdVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDZzQ0NyQjFDLDJuRUFvRU07OzRGRC9DTyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0Usd0JBQXdCO3dEQUtOLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFakIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFHSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJvcGRvd25GaWx0ZXJFdmVudCB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRvbWl4LXNlYXJjaC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdG9taXgtc2VhcmNoLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXRvbWl4LXNlYXJjaC1kcm9wZG93bi5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEF0b21peFNlYXJjaERyb3Bkb3duQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRFbCcpIHNlYXJjaElucHV0RWwhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2gnO1xuICBASW5wdXQoKSBzZWFyY2hUeXBlOiBzdHJpbmcgPSAnc2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoTGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWFyY2hJc0xhYmVsUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWFyY2hJc0Nyb3NzUmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzZWFyY2hOYW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBkcm9wZG93bk9wdGlvbnM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGRyb3Bkb3duU2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KCkgZHJvcGRvd25QbGFjZWhvbGRlcjogc3RyaW5nID0gJ0NvbHVtbic7XG4gIEBJbnB1dCgpIGRyb3Bkb3duT3B0aW9uTGFiZWw6IHN0cmluZyA9ICdkaXNwbGF5JztcbiAgQElucHV0KCkgZHJvcGRvd25PcHRpb25WYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd25TaG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBkcm9wZG93bkZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkcm9wZG93bkxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZHJvcGRvd25Jc0xhYmVsUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd25TdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZHJvcGRvd25OYW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlzTGFiZWxSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0N1c3RvbUZpbHRlcj86IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZyA9XG4gICAgJ2JpbGxpbmctaW5wdXQtY29sdW1uLWNvbnRhaW5lciBzZWFyY2gtZmlsdGVyLWNvbnRhaW5lcic7XG5cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBkcm9wZG93blZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkcm9wZG93bkZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcGRvd25GaWx0ZXJFdmVudD4oKTtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGZyb20gdGhlIHVzZXIgdXNlZCB0byBzZWFyY2ggZHJvcGRvd24gbGlzdFxuICAgKi9cbiAgZHJvcGRvd25GaWx0ZXJWYWx1ZSA9IG5ldyBTdWJqZWN0PERyb3Bkb3duRmlsdGVyRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1zIHRoYXQgaXQgdGFrZXMgdG8gcmVnaXN0ZXIgd2hlbiB1c2VyIGlzIGRvbmUgdHlwaW5nXG4gICAqL1xuICBkZWJvdW5jZVRpbWUgPSAzMDA7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmlnZ2VyIHRoYXQgdXNlcyB0aGUgZGVib3VuY2UgdGltZSB0byBjcmVhdGUgZGVsYXkgb2Ygd2hlbiB1c2VyIHR5cGVzIHRvIGFjdHVhbCBmaWx0ZXJpbmdcbiAgICovXG4gIGRyb3Bkb3duRmlsdGVyVHJpZ2dlciA9IHRoaXMuZHJvcGRvd25GaWx0ZXJWYWx1ZS5waXBlKFxuICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdHJpZ2dlclxuICAgKi9cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5kcm9wZG93bkZpbHRlclRyaWdnZXIuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkZpbHRlckNoYW5nZS5lbWl0KCRldmVudCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IGlucHV0LnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuaXNDdXN0b21GaWx0ZXIpIHtcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFZhbHVlKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25WYWx1ZUNoYW5nZS5lbWl0KFtldmVudC52YWx1ZSwgdGhpcy5kcm9wZG93bk5hbWVdKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25GaWx0ZXIoZXZlbnQ6IERyb3Bkb3duRmlsdGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duRmlsdGVyVmFsdWUubmV4dChldmVudCk7XG4gIH1cblxuICBmb2N1c1NlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0RWw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsXCIgZm9yPVwic2VhcmNoTmFtZVwiPlxuICB7eyBsYWJlbCB9fVxuICA8c3BhbiAqbmdJZj1cImlzTGFiZWxSZXF1aXJlZFwiIGNsYXNzPVwibGliLWVycm9yLWFzdGVyaXNrXCI+Kjwvc3Bhbj5cbjwvbGFiZWw+XG5cbjxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWRyb3Bkb3duLWNvbnRhaW5lclwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbaWRdPVwic2VhcmNoTmFtZVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaEVudGVyKClcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInNlYXJjaENsYXNzICsgJyBsaWItaW5wdXQtZmllbGQnXCJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiXG4gICAgICAgICAgW3R5cGVdPVwic2VhcmNoVHlwZVwiXG4gICAgICAgICAgI3NlYXJjaElucHV0RWxcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPlxuICAgICAgXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cInBpIHBpLXRpbWVzIGZpbHRlci1kcm9wZG93bi1pY29uXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hJc0Nyb3NzUmVxdWlyZWQgJiYgc2VhcmNoVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICA8cC1kcm9wZG93blxuICAgIFtvcHRpb25zXT1cImRyb3Bkb3duT3B0aW9uc1wiXG4gICAgWyhuZ01vZGVsKV09XCJkcm9wZG93blNlbGVjdGVkXCJcbiAgICAob25DaGFuZ2UpPVwib25Ecm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICBbbmFtZV09XCJkcm9wZG93bk5hbWVcIlxuICAgIFtvcHRpb25WYWx1ZV09XCJkcm9wZG93bk9wdGlvblZhbHVlXCJcbiAgICBbb3B0aW9uTGFiZWxdPVwiZHJvcGRvd25PcHRpb25MYWJlbFwiXG4gICAgW3Nob3dDbGVhcl09XCJkcm9wZG93blNob3dDbGVhclwiXG4gICAgW2ZpbHRlcl09XCJkcm9wZG93bkZpbHRlclwiXG4gICAgW2ZpbHRlckJ5XT1cImRyb3Bkb3duT3B0aW9uTGFiZWxcIlxuICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgW2Rpc2FibGVkXT1cImRyb3Bkb3duRGlzYWJsZWRcIlxuICAgIFtzdHlsZUNsYXNzXT1cImRyb3Bkb3duU3R5bGVDbGFzc1wiXG4gICAgKG9uRmlsdGVyKT1cIm9uRHJvcGRvd25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cImRyb3Bkb3duUGxhY2Vob2xkZXJcIlxuICAgIGNsYXNzPVwic2VhcmNoLWRyb3Bkb3duXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taXRlbVwiPlxuICAgICAgICA8aVxuICAgICAgICAgIFtuZ0NsYXNzXT1cIm9wdGlvbi5kcm9wZG93bkljb25cIlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbG9nb1wiXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb24uZHJvcGRvd25JY29uXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFthbHRdPVwib3B0aW9uLmRyb3Bkb3duSW1hZ2VcIlxuICAgICAgICAgIFtzcmNdPVwib3B0aW9uLmRyb3Bkb3duSW1hZ2VcIlxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uLmRyb3Bkb3duSW1hZ2VcIlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taW1hZ2VcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzcGFuPnt7IG9wdGlvbltkcm9wZG93bk9wdGlvbkxhYmVsXSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC1kcm9wZG93bj5cbjwvZGl2PiJdfQ==
|