@churchillliving/se-ui-toolkit 6.54.49 → 6.54.51

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.
@@ -99,12 +99,12 @@ export class HeaderComponent {
99
99
  }
100
100
  }
101
101
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HeaderComponent, deps: [{ token: i1.AuthenticationService }, { token: i2.DatePipe }, { token: i3.HyperlinkService }], target: i0.ɵɵFactoryTarget.Component }); }
102
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: HeaderComponent, selector: "se-header", inputs: { headers: "headers" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }, { kind: "component", type: i6.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "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: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i10.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.CurrencyPipe, name: "currency" }] }); }
102
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: HeaderComponent, selector: "se-header", inputs: { headers: "headers" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b *ngIf=\"headerField.label?.length > 0\"\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a class=\"header-link\" tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}:host ::ng-deep .header-link{font-size:12px!important;font-weight:500!important;font-style:normal!important;font-stretch:normal!important;letter-spacing:.5px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }, { kind: "component", type: i6.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "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: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i10.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.CurrencyPipe, name: "currency" }] }); }
103
103
  }
104
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HeaderComponent, decorators: [{
105
105
  type: Component,
106
- args: [{ selector: 'se-header', template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}\n"] }]
106
+ args: [{ selector: 'se-header', template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b *ngIf=\"headerField.label?.length > 0\"\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a class=\"header-link\" tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}:host ::ng-deep .header-link{font-size:12px!important;font-weight:500!important;font-style:normal!important;font-stretch:normal!important;letter-spacing:.5px!important}\n"] }]
107
107
  }], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.DatePipe }, { type: i3.HyperlinkService }]; }, propDecorators: { headers: [{
108
108
  type: Input
109
109
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMvRSxNQUFNLE9BQU8sZUFBZTtJQU8xQixZQUFvQixXQUFrQyxFQUFTLFFBQWtCLEVBQVMsZ0JBQWtDO1FBQXhHLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSjVILGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzNCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFDckIsbUJBQWMsR0FBWSxLQUFLLENBQUM7SUFFK0YsQ0FBQztJQUVoSSxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1B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SUFBSTtnQ0FDeEMsQ0FBQyxzQkFBc0IsRUFDdkI7Z0NBQ0EsSUFBSSxPQUFPLEVBQUU7b0NBQ1gsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUNBQzdCO3FDQUFNO29DQUNMLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lDQUMzQjs2QkFDRjtpQ0FBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtnQ0FDbkQsSUFBSSxPQUFPLEVBQUU7b0NBQ1gsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO29DQUM5QixXQUFXLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQ0FDN0IsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUNBQzVCO3FDQUFNO29DQUNMLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2lDQUM3Qjs2QkFDRjt5QkFDRjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFFRCxXQUFXLEVBQUUsQ0FBQztnQkFFZCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7b0JBQ3RCLFlBQVksRUFBRSxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLFdBQVcsS0FBSyxZQUFZLENBQUM7U0FDdkU7SUFDSCxDQUFDO2lJQXpGVSxlQUFlO3FIQUFmLGVBQWUsc0dDYjVCLHNzTkE0TEE7OzJGRC9LYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVc7a0tBS1osT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElIZWFkZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaGVhZGVyLm1vZGVsJztcbmltcG9ydCB7IEVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRVBlcm1pc3Npb25UeXBlLCBJUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyLWluZm8ubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGhlYWRlcnM6IElIZWFkZXI7XG5cbiAgZHluYW1pY0Nhc2UgPSBFRm9ybUNvbnRyb2w7XG4gIHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc0hlYWRlckhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHVibGljIGRhdGVwaXBlOiBEYXRlUGlwZSwgcHVibGljIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlcyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclJvbGVzKCk7XG4gICAgLy8gYXBwbHkgdXNlciByb2xlIHBlcm1pc3Npb25zIG9uIGZvcm1cbiAgICB0aGlzLmFwcGx5VXNlclBlcm1pc3Npb25zKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJzICYmIHRoaXMuaGVhZGVycy5maWVsZHMpIHtcbiAgICAgIHRoaXMuaGVhZGVycy5maWVsZHMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBpZiAoIXguc2hvd1RpbWUgJiYgIXgudGltZU9ubHkgJiYgeC52YWx1ZT8udG9TdHJpbmcoKS5tYXRjaCgvWzAtOV0rLVxccz8vZykpIHtcbiAgICAgICAgICB4LnZhbHVlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oeC52YWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeC52YWx1ZT8udG9TdHJpbmcoKS5pbmNsdWRlcygnOicpICYmIHgudGltZU9ubHkpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHgudmFsdWUuaW5kZXhPZignOicpO1xuICAgICAgICAgIGNvbnN0IHRpbWUgPSB4LnZhbHVlLnN1YnN0cmluZyhpbmRleCAtIDIsIGluZGV4ICsgNik7XG4gICAgICAgICAgeC52YWx1ZSA9IHRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHguY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkhZUEVSTElOSyAmJiB4Lmh5cGVybGluaz8ubGlua0lkKSB7XG4gICAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKHguaHlwZXJsaW5rPy5saW5rSWQpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc1swXT8udXJsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybCh4Py5oeXBlcmxpbms/LnBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgICAgICAgeC5oeXBlcmxpbmtbJ2xpbmsnXSA9IG9yaWdpbmFsVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICBhcHBseVVzZXJQZXJtaXNzaW9ucygpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XG4gICAgICBsZXQgdG90YWxGaWVsZHM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuRmllbGRzOiBudW1iZXIgPSAwO1xuXG4gICAgICB0aGlzLmhlYWRlcnMuZmllbGRzLmZvckVhY2goKGhlYWRlckZpZWxkKSA9PiB7XG4gICAgICAgIGxldCBwZXJtaXNzaW9uczogYW55ID0gaGVhZGVyRmllbGQucGVybWlzc2lvbnM7XG4gICAgICAgIGlmICghcGVybWlzc2lvbnMpIHBlcm1pc3Npb25zID0gdGhpcy5oZWFkZXJzLnBlcm1pc3Npb25zO1xuICAgICAgICBsZXQgaGFzVmFsaWRFZGl0UGVybWlzc2lvbiA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwZXJtaXNzaW9ucyAmJiBwZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaCgocGVybWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ucm9sZXMgJiYgcGVybWlzc2lvbi5yb2xlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24ucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMucm9sZXMgJiYgdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24udHlwZSA9PT0gRVBlcm1pc3Npb25UeXBlLlZJRVcgJiZcbiAgICAgICAgICAgICAgICAhaGFzVmFsaWRFZGl0UGVybWlzc2lvblxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5FRElUKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbEZpZWxkcysrO1xuXG4gICAgICAgIGlmIChoZWFkZXJGaWVsZC5oaWRkZW4pIHtcbiAgICAgICAgICBoaWRkZW5GaWVsZHMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNIZWFkZXJIaWRkZW4gPSB0b3RhbEZpZWxkcyA+IDAgJiYgdG90YWxGaWVsZHMgPT09IGhpZGRlbkZpZWxkcztcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiAqbmdJZj1cIiFpc0hlYWRlckhpZGRlbiAmJiBoZWFkZXJzXCIgY2xhc3M9XCJjYXJkIHN0aWNreSBoZWFkZXItY29tcG9uZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbGlzdCBwLTEgZmxleFwiPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCInbWQ6Y29sLScgKyBoZWFkZXJGaWVsZC5jb2x1bW4gKyAnIHNtOmNvbC02IGNvbC0xMiBweS0wJ1wiXG4gICAgICBjbGFzcz1cImhlYWRlci1saXN0LWl0ZW0gc2VjdGlvbi13cmFwcGVyLWluLWhlYWRlclwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZGVyRmllbGQgb2YgaGVhZGVycy5maWVsZHNcIlxuICAgID5cbiAgICAgIDxkaXYgW25nU3dpdGNoXT1cImhlYWRlckZpZWxkLmNvbnRyb2xcIj5cbiAgICAgICAgPCEtLSBGb3IgRHJvcGRvd24gLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgc2VjdGlvbi13cmFwcGVyLWluLWhlYWRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkRST1BET1dOXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YlxuICAgICAgICAgICAgICA+PGxhYmVsIGZvcj1cIlwiPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD48L2JcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJoZWFkZXJGaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImhlYWRlckZpZWxkLmRhdGFcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhlYWRlckZpZWxkLm9uQ2xpY2sgPyBoZWFkZXJGaWVsZC5vbkNsaWNrKCkgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgXG4gICAgICAgIDwhLS0gRm9yIGxhYmVsICAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBzZWN0aW9uLXdyYXBwZXItaW4taGVhZGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuTEFCRUxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxiXG4gICAgICAgICAgICAgID48bGFiZWwgZm9yPVwiXCI+e3sgaGVhZGVyRmllbGQubGFiZWwgfX08L2xhYmVsPjwvYlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBmb3IgdmFsdWUgLS0+XG4gICAgICAgICAgICA8U3BhbiAqbmdJZj1cIiFoZWFkZXJGaWVsZC5mb3JtYXRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj57eyBoZWFkZXJGaWVsZC52YWx1ZSB9fTwvbGFiZWw+IFxuICAgICAgICAgIDwvU3Bhbj5cblxuICAgICAgICAgICAgIDwhLS0gZm9yIGN1cnJlbmN5IC0tPlxuICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLmZvcm1hdCAmJiBoZWFkZXJGaWVsZC5mb3JtYXQudHlwZSA9PT0gJ2N1cnJlbmN5J1xuICAgICAgICAgICAgIFwiXG4gICAgICAgICAgID5cbiAgICAgICAgICAgICA8bGFiZWw+e3tcbiAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLnZhbHVlXG4gICAgICAgICAgICAgICAgIHwgY3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICA6IChoZWFkZXJGaWVsZC5mb3JtYXQuZm9ybWF0UGFyYW1zICYmXG4gICAgICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5mb3JtYXQuZm9ybWF0UGFyYW1zLmN1cnJlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyRmllbGQuZm9ybWF0LmZvcm1hdFBhcmFtcy5jdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICA6ICdVU0QnKVxuICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgPCEtLSBmb3IgcGVyY2VudCAtLT5cbiAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlckZpZWxkLmZvcm1hdCAmJiBoZWFkZXJGaWVsZC5mb3JtYXQudHlwZSA9PT0gJ3BlcmNlbnQnXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCA+e3sgaGVhZGVyRmllbGQudmFsdWUgfX0lPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICA8IS0tIGZvciBkZWNpbWFsIC0tPlxuICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLmZvcm1hdCAmJiBoZWFkZXJGaWVsZC5mb3JtYXQudHlwZSA9PT0gJ2RlY2ltYWwnXG4gICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgIDxsYWJlbD57e1xuICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICA6IChoZWFkZXJGaWVsZC5mb3JtYXQuZm9ybWF0UGFyYW1zICYmXG4gICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLmZvcm1hdC5mb3JtYXRQYXJhbXMuZGlnaXRzSW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgID8gJzIuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5mb3JtYXQuZm9ybWF0UGFyYW1zLmRpZ2l0c0luZm8gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgJy04J1xuICAgICAgICAgICAgICAgICAgICAgICAgIDogJzIuMi04JylcbiAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIFRleHQgSW5wdXQgLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLklOUFVUXCI+XG4gICAgICAgICAgICA8YlxuICAgICAgICAgICAgICA+PGxhYmVsIGZvcj1cIlwiPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD48L2JcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTIgZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGVhZGVyRmllbGQub25DbGljayA/IGhlYWRlckZpZWxkLm9uQ2xpY2soKSA6ICcnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIE51bWJlciBJbnB1dCAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIiAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuTlVNRVJJQ1wiPlxuICAgICAgICAgICAgPGxhYmVsPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xIG1yLTIgZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWFkZXJGaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoZWFkZXJGaWVsZC5vbkNsaWNrID8gaGVhZGVyRmllbGQub25DbGljaygpIDogJydcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkNIRUNLQk9YXCI+XG4gICAgICAgICAgICA8bGFiZWw+e3sgaGVhZGVyRmllbGQubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICBiaW5hcnk9XCJ0cnVlXCJcbiAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgPCEtLSBoeXBlckxpbmsgLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkhZUEVSTElOS1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckZpZWxkLmh5cGVybGlua1wiPlxuICAgICAgICAgICAgICA8YSB0YWJpbmRleD1cIi0xXCIgW2hyZWZdPVwiaGVhZGVyRmllbGQuaHlwZXJsaW5rPy5saW5rXCIgW3RhcmdldF09XCJoZWFkZXJGaWVsZC5oeXBlcmxpbms/LnRhcmdldCA/IGhlYWRlckZpZWxkLmh5cGVybGluaz8udGFyZ2V0IDogJ19ibGFuaydcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGl0bGUtZWxlbWVudD1cInNlbGZcIj5cbiAgICAgICAgICAgICAgICB7eyBoZWFkZXJGaWVsZC5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gQ2FsZW5kYXIgLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkNBTEVOREFSXCI+XG4gICAgICAgICAgICA8bGFiZWw+e3sgaGVhZGVyRmllbGQubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3ctMSBtci0yXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImhlYWRlckZpZWxkLmxhYmVsXCJcbiAgICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwiIWhlYWRlckZpZWxkLnRpbWVPbmx5XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWFkZXJGaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgIGhvdXJGb3JtYXQ9XCIxMlwiXG4gICAgICAgICAgICAgIGRhdGFUeXBlPVwic3RyaW5nXCJcbiAgICAgICAgICAgICAgW3RpbWVPbmx5XT1cImhlYWRlckZpZWxkLnRpbWVPbmx5XCJcbiAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cImhlYWRlckZpZWxkLnNob3dUaW1lXCJcbiAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiaGVhZGVyRmllbGQuZm9ybWF0ID8gaGVhZGVyRmllbGQuZm9ybWF0LmRhdGVUeXBlIDogJ21tL2RkL3l5J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIE11bHRpLXNlbGVjdCAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIiAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuTVVMVElTRUxFQ1RcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBoZWFkZXJGaWVsZC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiaGVhZGVyRmllbGQuZGF0YVwiXG4gICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoZWFkZXJGaWVsZC5vbkNsaWNrID8gaGVhZGVyRmllbGQub25DbGljaygpIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBCdXR0b24gLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkJVVFRPTlwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGxhYmVsPVwie3sgaGVhZGVyRmllbGQubGFiZWwgfX1cIlxuICAgICAgICAgICAgICBjbGFzcz1cInt7IGhlYWRlckZpZWxkLmNsYXNzIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhlYWRlckZpZWxkLm9uQ2xpY2sgPyBoZWFkZXJGaWVsZC5vbkNsaWNrKCkgOiAnJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMvRSxNQUFNLE9BQU8sZUFBZTtJQU8xQixZQUFvQixXQUFrQyxFQUFTLFFBQWtCLEVBQVMsZ0JBQWtDO1FBQXhHLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSjVILGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzNCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFDckIsbUJBQWMsR0FBWSxLQUFLLENBQUM7SUFFK0YsQ0FBQztJQUVoSSxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1B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SUFBSTtnQ0FDeEMsQ0FBQyxzQkFBc0IsRUFDdkI7Z0NBQ0EsSUFBSSxPQUFPLEVBQUU7b0NBQ1gsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUNBQzdCO3FDQUFNO29DQUNMLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lDQUMzQjs2QkFDRjtpQ0FBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtnQ0FDbkQsSUFBSSxPQUFPLEVBQUU7b0NBQ1gsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO29DQUM5QixXQUFXLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQ0FDN0IsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUNBQzVCO3FDQUFNO29DQUNMLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2lDQUM3Qjs2QkFDRjt5QkFDRjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFFRCxXQUFXLEVBQUUsQ0FBQztnQkFFZCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7b0JBQ3RCLFlBQVksRUFBRSxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLFdBQVcsS0FBSyxZQUFZLENBQUM7U0FDdkU7SUFDSCxDQUFDO2lJQXpGVSxlQUFlO3FIQUFmLGVBQWUsc0dDYjVCLG93TkE0TEE7OzJGRC9LYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVc7a0tBS1osT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElIZWFkZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaGVhZGVyLm1vZGVsJztcbmltcG9ydCB7IEVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRVBlcm1pc3Npb25UeXBlLCBJUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyLWluZm8ubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGhlYWRlcnM6IElIZWFkZXI7XG5cbiAgZHluYW1pY0Nhc2UgPSBFRm9ybUNvbnRyb2w7XG4gIHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc0hlYWRlckhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHVibGljIGRhdGVwaXBlOiBEYXRlUGlwZSwgcHVibGljIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlcyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclJvbGVzKCk7XG4gICAgLy8gYXBwbHkgdXNlciByb2xlIHBlcm1pc3Npb25zIG9uIGZvcm1cbiAgICB0aGlzLmFwcGx5VXNlclBlcm1pc3Npb25zKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJzICYmIHRoaXMuaGVhZGVycy5maWVsZHMpIHtcbiAgICAgIHRoaXMuaGVhZGVycy5maWVsZHMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBpZiAoIXguc2hvd1RpbWUgJiYgIXgudGltZU9ubHkgJiYgeC52YWx1ZT8udG9TdHJpbmcoKS5tYXRjaCgvWzAtOV0rLVxccz8vZykpIHtcbiAgICAgICAgICB4LnZhbHVlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oeC52YWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeC52YWx1ZT8udG9TdHJpbmcoKS5pbmNsdWRlcygnOicpICYmIHgudGltZU9ubHkpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHgudmFsdWUuaW5kZXhPZignOicpO1xuICAgICAgICAgIGNvbnN0IHRpbWUgPSB4LnZhbHVlLnN1YnN0cmluZyhpbmRleCAtIDIsIGluZGV4ICsgNik7XG4gICAgICAgICAgeC52YWx1ZSA9IHRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHguY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkhZUEVSTElOSyAmJiB4Lmh5cGVybGluaz8ubGlua0lkKSB7XG4gICAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKHguaHlwZXJsaW5rPy5saW5rSWQpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc1swXT8udXJsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybCh4Py5oeXBlcmxpbms/LnBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgICAgICAgeC5oeXBlcmxpbmtbJ2xpbmsnXSA9IG9yaWdpbmFsVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICBhcHBseVVzZXJQZXJtaXNzaW9ucygpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XG4gICAgICBsZXQgdG90YWxGaWVsZHM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuRmllbGRzOiBudW1iZXIgPSAwO1xuXG4gICAgICB0aGlzLmhlYWRlcnMuZmllbGRzLmZvckVhY2goKGhlYWRlckZpZWxkKSA9PiB7XG4gICAgICAgIGxldCBwZXJtaXNzaW9uczogYW55ID0gaGVhZGVyRmllbGQucGVybWlzc2lvbnM7XG4gICAgICAgIGlmICghcGVybWlzc2lvbnMpIHBlcm1pc3Npb25zID0gdGhpcy5oZWFkZXJzLnBlcm1pc3Npb25zO1xuICAgICAgICBsZXQgaGFzVmFsaWRFZGl0UGVybWlzc2lvbiA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwZXJtaXNzaW9ucyAmJiBwZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaCgocGVybWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ucm9sZXMgJiYgcGVybWlzc2lvbi5yb2xlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24ucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMucm9sZXMgJiYgdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24udHlwZSA9PT0gRVBlcm1pc3Npb25UeXBlLlZJRVcgJiZcbiAgICAgICAgICAgICAgICAhaGFzVmFsaWRFZGl0UGVybWlzc2lvblxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5FRElUKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbEZpZWxkcysrO1xuXG4gICAgICAgIGlmIChoZWFkZXJGaWVsZC5oaWRkZW4pIHtcbiAgICAgICAgICBoaWRkZW5GaWVsZHMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNIZWFkZXJIaWRkZW4gPSB0b3RhbEZpZWxkcyA+IDAgJiYgdG90YWxGaWVsZHMgPT09IGhpZGRlbkZpZWxkcztcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiAqbmdJZj1cIiFpc0hlYWRlckhpZGRlbiAmJiBoZWFkZXJzXCIgY2xhc3M9XCJjYXJkIHN0aWNreSBoZWFkZXItY29tcG9uZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbGlzdCBwLTEgZmxleFwiPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCInbWQ6Y29sLScgKyBoZWFkZXJGaWVsZC5jb2x1bW4gKyAnIHNtOmNvbC02IGNvbC0xMiBweS0wJ1wiXG4gICAgICBjbGFzcz1cImhlYWRlci1saXN0LWl0ZW0gc2VjdGlvbi13cmFwcGVyLWluLWhlYWRlclwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZGVyRmllbGQgb2YgaGVhZGVycy5maWVsZHNcIlxuICAgID5cbiAgICAgIDxkaXYgW25nU3dpdGNoXT1cImhlYWRlckZpZWxkLmNvbnRyb2xcIj5cbiAgICAgICAgPCEtLSBGb3IgRHJvcGRvd24gLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgc2VjdGlvbi13cmFwcGVyLWluLWhlYWRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLkRST1BET1dOXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YlxuICAgICAgICAgICAgICA+PGxhYmVsIGZvcj1cIlwiPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD48L2JcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJoZWFkZXJGaWVsZC5sYWJlbFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImhlYWRlckZpZWxkLmRhdGFcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhlYWRlckZpZWxkLm9uQ2xpY2sgPyBoZWFkZXJGaWVsZC5vbkNsaWNrKCkgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgXG4gICAgICAgIDwhLS0gRm9yIGxhYmVsICAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBzZWN0aW9uLXdyYXBwZXItaW4taGVhZGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuTEFCRUxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxiICpuZ0lmPVwiaGVhZGVyRmllbGQubGFiZWw/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+PGxhYmVsIGZvcj1cIlwiPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD48L2JcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gZm9yIHZhbHVlIC0tPlxuICAgICAgICAgICAgPFNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuZm9ybWF0XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3sgaGVhZGVyRmllbGQudmFsdWUgfX08L2xhYmVsPiBcbiAgICAgICAgICA8L1NwYW4+XG5cbiAgICAgICAgICAgICA8IS0tIGZvciBjdXJyZW5jeSAtLT5cbiAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5mb3JtYXQgJiYgaGVhZGVyRmllbGQuZm9ybWF0LnR5cGUgPT09ICdjdXJyZW5jeSdcbiAgICAgICAgICAgICBcIlxuICAgICAgICAgICA+XG4gICAgICAgICAgICAgPGxhYmVsPnt7XG4gICAgICAgICAgICAgICBoZWFkZXJGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICB8IGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgICAgOiAoaGVhZGVyRmllbGQuZm9ybWF0LmZvcm1hdFBhcmFtcyAmJlxuICAgICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZm9ybWF0LmZvcm1hdFBhcmFtcy5jdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlckZpZWxkLmZvcm1hdC5mb3JtYXRQYXJhbXMuY3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgOiAnVVNEJylcbiAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgIDwhLS0gZm9yIHBlcmNlbnQgLS0+XG4gICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkZXJGaWVsZC5mb3JtYXQgJiYgaGVhZGVyRmllbGQuZm9ybWF0LnR5cGUgPT09ICdwZXJjZW50J1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgPnt7IGhlYWRlckZpZWxkLnZhbHVlIH19JTwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgPCEtLSBmb3IgZGVjaW1hbCAtLT5cbiAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5mb3JtYXQgJiYgaGVhZGVyRmllbGQuZm9ybWF0LnR5cGUgPT09ICdkZWNpbWFsJ1xuICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICA8bGFiZWw+e3tcbiAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQudmFsdWVcbiAgICAgICAgICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgICAgICAgICAgOiAoaGVhZGVyRmllbGQuZm9ybWF0LmZvcm1hdFBhcmFtcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZC5mb3JtYXQuZm9ybWF0UGFyYW1zLmRpZ2l0c0luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/ICcyLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGQuZm9ybWF0LmZvcm1hdFBhcmFtcy5kaWdpdHNJbmZvICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICctOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICA6ICcyLjItOCcpXG4gICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkZXJGaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJkeW5hbWljQ2FzZS5JTlBVVFwiPlxuICAgICAgICAgICAgPGJcbiAgICAgICAgICAgICAgPjxsYWJlbCBmb3I9XCJcIj57eyBoZWFkZXJGaWVsZC5sYWJlbCB9fTwvbGFiZWw+PC9iXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJtci0yIGZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhlYWRlckZpZWxkLm9uQ2xpY2sgPyBoZWFkZXJGaWVsZC5vbkNsaWNrKCkgOiAnJ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlYWRlckZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgKm5nU3dpdGNoQ2FzZT1cImR5bmFtaWNDYXNlLk5VTUVSSUNcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBoZWFkZXJGaWVsZC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3ctMSBtci0yIGZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGVhZGVyRmllbGQub25DbGljayA/IGhlYWRlckZpZWxkLm9uQ2xpY2soKSA6ICcnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIENoZWNrYm94IC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkZXJGaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiICpuZ1N3aXRjaENhc2U9XCJkeW5hbWljQ2FzZS5DSEVDS0JPWFwiPlxuICAgICAgICAgICAgPGxhYmVsPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgYmluYXJ5PVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgIDwhLS0gaHlwZXJMaW5rIC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkZXJGaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiICpuZ1N3aXRjaENhc2U9XCJkeW5hbWljQ2FzZS5IWVBFUkxJTktcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJGaWVsZC5oeXBlcmxpbmtcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJoZWFkZXItbGlua1wiIHRhYmluZGV4PVwiLTFcIiBbaHJlZl09XCJoZWFkZXJGaWVsZC5oeXBlcmxpbms/LmxpbmtcIiBbdGFyZ2V0XT1cImhlYWRlckZpZWxkLmh5cGVybGluaz8udGFyZ2V0ID8gaGVhZGVyRmllbGQuaHlwZXJsaW5rPy50YXJnZXQgOiAnX2JsYW5rJ1wiXG4gICAgICAgICAgICAgICAgZGF0YS10aXRsZS1lbGVtZW50PVwic2VsZlwiPlxuICAgICAgICAgICAgICAgIHt7IGhlYWRlckZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBDYWxlbmRhciAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIiAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuQ0FMRU5EQVJcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBoZWFkZXJGaWVsZC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xIG1yLTJcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaGVhZGVyRmllbGQubGFiZWxcIlxuICAgICAgICAgICAgICBbc2hvd0J1dHRvbkJhcl09XCIhaGVhZGVyRmllbGQudGltZU9ubHlcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgaG91ckZvcm1hdD1cIjEyXCJcbiAgICAgICAgICAgICAgZGF0YVR5cGU9XCJzdHJpbmdcIlxuICAgICAgICAgICAgICBbdGltZU9ubHldPVwiaGVhZGVyRmllbGQudGltZU9ubHlcIlxuICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiaGVhZGVyRmllbGQuc2hvd1RpbWVcIlxuICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJoZWFkZXJGaWVsZC5mb3JtYXQgPyBoZWFkZXJGaWVsZC5mb3JtYXQuZGF0ZVR5cGUgOiAnbW0vZGQveXknXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gTXVsdGktc2VsZWN0IC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkZXJGaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiICpuZ1N3aXRjaENhc2U9XCJkeW5hbWljQ2FzZS5NVUxUSVNFTEVDVFwiPlxuICAgICAgICAgICAgPGxhYmVsPnt7IGhlYWRlckZpZWxkLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJoZWFkZXJGaWVsZC5kYXRhXCJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhlYWRlckZpZWxkLm9uQ2xpY2sgPyBoZWFkZXJGaWVsZC5vbkNsaWNrKCkgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIEJ1dHRvbiAtLT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVyRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIiAqbmdTd2l0Y2hDYXNlPVwiZHluYW1pY0Nhc2UuQlVUVE9OXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBoZWFkZXJGaWVsZC5sYWJlbCB9fVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwie3sgaGVhZGVyRmllbGQuY2xhc3MgfX1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGVhZGVyRmllbGQub25DbGljayA/IGhlYWRlckZpZWxkLm9uQ2xpY2soKSA6ICcnXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -11323,11 +11323,11 @@ class HeaderComponent {
11323
11323
  }
11324
11324
  }
11325
11325
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HeaderComponent, deps: [{ token: AuthenticationService }, { token: i2$1.DatePipe }, { token: HyperlinkService }], target: i0.ɵɵFactoryTarget.Component }); }
11326
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: HeaderComponent, selector: "se-header", inputs: { headers: "headers" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$2.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }, { kind: "component", type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "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.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i4$1.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i18.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i2$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2$1.CurrencyPipe, name: "currency" }] }); }
11326
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: HeaderComponent, selector: "se-header", inputs: { headers: "headers" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b *ngIf=\"headerField.label?.length > 0\"\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a class=\"header-link\" tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}:host ::ng-deep .header-link{font-size:12px!important;font-weight:500!important;font-style:normal!important;font-stretch:normal!important;letter-spacing:.5px!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$2.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }, { kind: "component", type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "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.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i4$1.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i18.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i2$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2$1.CurrencyPipe, name: "currency" }] }); }
11327
11327
  }
11328
11328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: HeaderComponent, decorators: [{
11329
11329
  type: Component,
11330
- args: [{ selector: 'se-header', template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}\n"] }]
11330
+ args: [{ selector: 'se-header', template: "<div *ngIf=\"!isHeaderHidden && headers\" class=\"card sticky header-component\">\n <div class=\"header-list p-1 flex\">\n <div\n [class]=\"'md:col-' + headerField.column + ' sm:col-6 col-12 py-0'\"\n class=\"header-list-item section-wrapper-in-header\"\n *ngFor=\"let headerField of headers.fields\"\n >\n <div [ngSwitch]=\"headerField.control\">\n <!-- For Dropdown -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.DROPDOWN\"\n >\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <p-dropdown\n [placeholder]=\"headerField.label\"\n [options]=\"headerField.data\"\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-dropdown>\n </div>\n </span>\n \n <!-- For label -->\n <span *ngIf=\"!headerField.hidden\">\n <div\n class=\"flex flex-wrap section-wrapper-in-header align-items-center\"\n *ngSwitchCase=\"dynamicCase.LABEL\"\n >\n <b *ngIf=\"headerField.label?.length > 0\"\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <!-- for value -->\n <Span *ngIf=\"!headerField.format\">\n <label for=\"\">{{ headerField.value }}</label> \n </Span>\n\n <!-- for currency -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'currency'\n \"\n >\n <label>{{\n headerField.value\n | currency\n : (headerField.format.formatParams &&\n headerField.format.formatParams.currency\n ? headerField.format.formatParams.currency\n : 'USD')\n }}</label>\n </span>\n\n <!-- for percent -->\n <span *ngIf=\"headerField.format && headerField.format.type === 'percent'\">\n <label >{{ headerField.value }}%</label>\n </span>\n\n <!-- for decimal -->\n <span\n *ngIf=\"\n headerField.format && headerField.format.type === 'decimal'\n \"\n >\n <label>{{\n headerField.value\n | number\n : (headerField.format.formatParams &&\n headerField.format.formatParams.digitsInfo\n ? '2.' +\n headerField.format.formatParams.digitsInfo +\n '-8'\n : '2.2-8')\n }}</label>\n </span>\n </div>\n </span>\n\n <!-- Text Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div *ngSwitchCase=\"dynamicCase.INPUT\">\n <b\n ><label for=\"\">{{ headerField.label }}</label></b\n >\n <input\n class=\"mr-2 form-control\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Number Input -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.NUMERIC\">\n <label>{{ headerField.label }}</label>\n <input\n class=\"flex-grow-1 mr-2 form-control\"\n type=\"number\"\n pInputText\n [(ngModel)]=\"headerField.value\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n />\n </div>\n </span>\n\n <!-- Checkbox -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CHECKBOX\">\n <label>{{ headerField.label }}</label>\n <p-checkbox\n class=\"flex align-items-center\"\n [(ngModel)]=\"headerField.value\"\n binary=\"true\"\n ></p-checkbox>\n </div>\n </span>\n\n <!-- hyperLink -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.HYPERLINK\">\n <div *ngIf=\"headerField.hyperlink\">\n <a class=\"header-link\" tabindex=\"-1\" [href]=\"headerField.hyperlink?.link\" [target]=\"headerField.hyperlink?.target ? headerField.hyperlink?.target : '_blank'\"\n data-title-element=\"self\">\n {{ headerField.label }}\n </a>\n </div>\n </div>\n </span>\n\n <!-- Calendar -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.CALENDAR\">\n <label>{{ headerField.label }}</label>\n <p-calendar\n class=\"flex-grow-1 mr-2\"\n [placeholder]=\"headerField.label\"\n [showButtonBar]=\"!headerField.timeOnly\"\n [(ngModel)]=\"headerField.value\"\n hourFormat=\"12\"\n dataType=\"string\"\n [timeOnly]=\"headerField.timeOnly\"\n [showTime]=\"headerField.showTime\"\n [dateFormat]=\"headerField.format ? headerField.format.dateType : 'mm/dd/yy'\"\n >\n </p-calendar>\n </div>\n </span>\n\n <!-- Multi-select -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.MULTISELECT\">\n <label>{{ headerField.label }}</label>\n <p-multiSelect\n [(ngModel)]=\"headerField.value\"\n [options]=\"headerField.data\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n >\n </p-multiSelect>\n </div>\n </span>\n\n <!-- Button -->\n <span *ngIf=\"!headerField.hidden\">\n <div class=\"col-12 p-0\" *ngSwitchCase=\"dynamicCase.BUTTON\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"{{ headerField.label }}\"\n class=\"{{ headerField.class }}\"\n (click)=\"headerField.onClick ? headerField.onClick() : ''\"\n ></button>\n </div>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".header-list-item:after{content:\"\"}.header-list-item:last-child:after{display:none}.card.sticky{position:sticky;z-index:1;top:0}:host ::ng-deep .header-link{font-size:12px!important;font-weight:500!important;font-style:normal!important;font-stretch:normal!important;letter-spacing:.5px!important}\n"] }]
11331
11331
  }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: i2$1.DatePipe }, { type: HyperlinkService }]; }, propDecorators: { headers: [{
11332
11332
  type: Input
11333
11333
  }] } });