@fundamental-ngx/platform 0.49.0-rc.59 → 0.49.0-rc.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +5 -4
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +4 -3
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.49.0-rc.60.tgz +0 -0
- package/package.json +4 -4
- package/fundamental-ngx-platform-v0.49.0-rc.59.tgz +0 -0
|
@@ -5,7 +5,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
5
5
|
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
6
6
|
import { FormControlComponent, FormInputMessageGroupComponent, FormLabelComponent, FormMessageComponent } from '@fundamental-ngx/core/form';
|
|
7
7
|
import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';
|
|
8
|
-
import { ListGroupHeaderDirective } from '@fundamental-ngx/core/list';
|
|
8
|
+
import { ListGroupHeaderDirective, ListTitleDirective } from '@fundamental-ngx/core/list';
|
|
9
9
|
import { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';
|
|
10
10
|
import { TitleComponent } from '@fundamental-ngx/core/title';
|
|
11
11
|
import { FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
@@ -129,7 +129,7 @@ export class DefineTabComponent extends VhdBaseTab {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DefineTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
133
133
|
}
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DefineTabComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
@@ -142,6 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
142
142
|
SelectComponent,
|
|
143
143
|
FormsModule,
|
|
144
144
|
ListGroupHeaderDirective,
|
|
145
|
+
ListTitleDirective,
|
|
145
146
|
OptionComponent,
|
|
146
147
|
NgTemplateOutlet,
|
|
147
148
|
FormInputMessageGroupComponent,
|
|
@@ -150,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
150
151
|
ButtonComponent,
|
|
151
152
|
FormMessageComponent,
|
|
152
153
|
FdTranslatePipe
|
|
153
|
-
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"] }]
|
|
154
|
+
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"] }]
|
|
154
155
|
}], propDecorators: { titleId: [{
|
|
155
156
|
type: Input
|
|
156
157
|
}], selectedId: [{
|
|
@@ -166,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
166
167
|
}], conditionChange: [{
|
|
167
168
|
type: Output
|
|
168
169
|
}] } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3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c0JBRFosTUFBTTtnQkFLUCxlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLCBMYXlvdXRHcmlkQ29tcG9uZW50LCBMYXlvdXRHcmlkUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xheW91dC1ncmlkJztcbmltcG9ydCB7IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTUFYX0NIQVJBQ1RFUl9ISU5UX0NPVU5UIH0gZnJvbSAnLi4vLi4vY29uc3RhbnMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb24tY291bnQtbWVzc2FnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlRW50aXR5LFxuICAgIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lVHlwZSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRJbmNsdWRlZEVudGl0eVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5jbGFzcyBFeHRlbmRlZEJhc2VFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEluY2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEV4Y2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1kZWZpbmUtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RlZmluZS10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxuICAgICAgICBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVmaW5lVGFiQ29tcG9uZW50IGV4dGVuZHMgVmhkQmFzZVRhYiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdElkID0gYGZkLXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFNlbGVjdElkID0gYGZkLXNlbGVjdC10aXRsZS1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIHRpdGxlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRJZDtcblxuICAgIC8qKiBzZWVsY3RlZCB2YWx1ZSBpZCBmb3IgdGhlIHRhYmxlICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VsZWN0SWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29uZGl0aW9uczogRXh0ZW5kZWRCYXNlRW50aXR5W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzdHJhdGVneUxhYmVsczogeyBba2V5IGluIGtleW9mICh0eXBlb2YgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgdHlwZW9mIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSldPzogc3RyaW5nIH0gPVxuICAgICAgICB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW5jbHVkZUNoYW5nZTogRXZlbnRFbWl0dGVyPEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXhjbHVkZUNoYW5nZTogRXZlbnRFbWl0dGVyPEV4dGVuZGVkRXhjbHVkZWRFbnRpdHlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVuZGVkRXhjbHVkZWRFbnRpdHlbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgY29uZGl0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QmFzZUVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8QmFzZUVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZGl0aW9uczogRXh0ZW5kZWRCYXNlRW50aXR5W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmluZVBhbmVsU3RhdGUgPSB7XG4gICAgICAgIGluY2x1ZGVkOiBmYWxzZSxcbiAgICAgICAgZXhjbHVkZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3J1bGVzID0ge1xuICAgICAgICBtYXhDaGFyYWN0ZXJzSGludENvdW50OiBNQVhfQ0hBUkFDVEVSX0hJTlRfQ09VTlRcbiAgICB9O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcyA9IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N0cmF0ZWd5RXhjbHVkZVZhbHVlcyA9IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmluZVR5cGVzID0gVmhkRGVmaW5lVHlwZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luY2x1ZGVTdHJhdGVneTogU3RhdGVneUl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhjbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdjb25kaXRpb25zJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25kaXRpb25zID0gKHRoaXMuY29uZGl0aW9ucyBhcyBFeHRlbmRlZEluY2x1ZGVkRW50aXR5W10pIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbmRpdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWZyZXNoU3RyYXRlZ2llcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBtYWluIGRhdGEgKi9cbiAgICBfdHJhY2tCeUtleUFuZFR5cGUoXG4gICAgICAgIF9pbmRleDogbnVtYmVyLFxuICAgICAgICBpdGVtOiBFeHRlbmRlZEluY2x1ZGVkRW50aXR5IHwgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eVxuICAgICk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5pZCArIGl0ZW0ua2V5ICsgaXRlbS50eXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlbGVjdFN0cmF0ZWd5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25DaGFuZ2UuZW1pdCh0aGlzLl9jb25kaXRpb25zKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRFbXB0eUNvbmRpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBFeHRlbmRlZEJhc2VFbnRpdHkoKTtcbiAgICAgICAgaXRlbS52YWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLl9jb25kaXRpb25zLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbmRpdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbmRpdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5LCB2YWxpZDogYm9vbGVhbiB8IGJvb2xlYW5bXSk6IHZvaWQge1xuICAgICAgICBpdGVtLnZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWxpZCkgPyB2YWxpZC5ldmVyeShCb29sZWFuKSA6ICEhdmFsaWQ7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hTdHJhdGVnaWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5pbmNsdWRlXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVN0cmF0ZWd5ID0gT2JqZWN0LmtleXMoVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHR5cGU6IFZoZERlZmluZVR5cGUuZXhjbHVkZVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ29uZGl0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5Q29uZGl0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmludGVyZmFjZSBTdGF0ZWd5SXRlbSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdHlwZTogVmhkRGVmaW5lVHlwZTtcbn1cbiIsIjxoNSBbaWRdPVwidGl0bGVJZFwiIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjVcIiBmZC10aXRsZSBjbGFzcz1cImRlZmluZS1jb25kaXRpb24tdGl0bGVcIj5cbiAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVGl0bGUnIHwgZmRUcmFuc2xhdGUgfX1cbjwvaDU+XG5AZm9yIChpdGVtIG9mIF9jb25kaXRpb25zOyB0cmFjayBfdHJhY2tCeUtleUFuZFR5cGUoaSwgaXRlbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgPGZkLWxheW91dC1ncmlkIGNsYXNzPVwiY29uZGl0aW9uLXJvd1wiPlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCI0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGlkPVwiQ09ORElUSU9OUEFORUxfT1BFUkFUT1JfTEFCRUxcIiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19oaWRkZW5fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgQ09ORElUSU9OUEFORUxfT1BFUkFUT1JfTEFCRUxcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBbaWRdPVwic2VsZWN0ZWRJZFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvblNlbGVjdGVkVmFsdWVIaWRkZW5BMTF5TGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogaXRlbS5zdHJhdGVneSB9XG4gICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmhkLWNvbmRpdGlvbi1maWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgZmRMYXlvdXRHcmlkQ29sXG4gICAgICAgICAgICAgICAgICAgIGNvbEdyb3dcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNlbGVjdC1jdXN0b20tY2xhc3NdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAjc3R0clxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbFRlbXBsYXRlXT1cImN1c3RvbVNlbGVjdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctc3RyYXRlZ3ktJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uc3RyYXRlZ3lcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiX2ZpbHRlckNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtcm9sZWRlc2NyaXB0aW9uPVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cInRpdGxlSWQgKyAnICcgKyAnQ09ORElUSU9OUEFORUxfT1BFUkFUT1JfTEFCRUwnICsgJyAnICsgc2VsZWN0ZWRJZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKF9pbmNsdWRlU3RyYXRlZ3kubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvbnNHcm91cEhlYWRlckluY2x1ZGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzdHJhdGVneSBvZiBfaW5jbHVkZVN0cmF0ZWd5OyB0cmFjayBzdHJhdGVneSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cInN0cmF0ZWd5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbmRpdGlvblN0cmF0ZWd5T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6IF9kZWZpbmVUeXBlcy5pbmNsdWRlLCBzdHJhdGVneTogc3RyYXRlZ3kgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfZXhjbHVkZVN0cmF0ZWd5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJFeGNsdWRlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2V4Y2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuZXhjbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5lbXB0eSAmJiBpdGVtLnN0cmF0ZWd5ICE9PSBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzLm5vdF9lbXB0eSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzLmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwIFt0cmlnZ2Vyc109XCJbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkZyb21QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmcm9tTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1mcm9tLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZnJvbU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Ub1BsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ0b01vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdG8tJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sIFshIWZyb21Nb2RlbC52YWxpZCwgISF0b01vZGVsLnZhbGlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0b01vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlVG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVmFsdWVQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInZhbHVlTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy12YWx1ZS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgISF2YWx1ZU1vZGVsLnZhbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhbHVlTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodmFsdWVNb2RlbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29sXCIgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbn1cbjxmZC1sYXlvdXQtZ3JpZCBjbGFzcz1cImNvbmRpdGlvbi1yb3cgbmV3LWNvbmRpdGlvbi1yb3dcIiBbbm9HYXBdPVwidHJ1ZVwiPlxuICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PiZuYnNwOzwvZGl2PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjbGFzcz1cImFjdGlvbi1jb2xcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEVtcHR5Q29uZGl0aW9uKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZmQtbGF5b3V0LWdyaWQ+XG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblN0cmF0ZWd5T3B0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1zdHJhdGVneT1cInN0cmF0ZWd5XCI+XG4gICAgQHN3aXRjaCAoc3RyYXRlZ3kua2V5KSB7XG4gICAgICAgIEBjYXNlICgnY29udGFpbnMnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbENvbnRhaW5zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdiZXR3ZWVuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxCZXR3ZWVuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxTdGFydHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbmRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW5kc1dpdGgnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxMZXNzVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGVzc1RoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW4nKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmVhdGVyVGhhbkVxdWFsJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbkVxdWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbXB0eScpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW1wdHknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ25vdF9lcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbE5vdEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb3VudEVycm9yIGxldC1jb3VudD5cbiAgICBAaWYgKGNvdW50ICYmIGNvdW50ID4gNykge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbk1heENvdW50RXJyb3InIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IDcgfSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21TZWxlY3RUZW1wbGF0ZSBsZXQtdGV4dFZhbHVlPlxuICAgIHt7IHRleHRWYWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FB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YixLQUFLO2dCQU1OLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxuICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgRm9ybU1lc3NhZ2VDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgTGF5b3V0R3JpZENvbERpcmVjdGl2ZSwgTGF5b3V0R3JpZENvbXBvbmVudCwgTGF5b3V0R3JpZFJvd0RpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9sYXlvdXQtZ3JpZCc7XG5pbXBvcnQgeyBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTUFYX0NIQVJBQ1RFUl9ISU5UX0NPVU5UIH0gZnJvbSAnLi4vLi4vY29uc3RhbnMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb24tY291bnQtbWVzc2FnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlRW50aXR5LFxuICAgIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lVHlwZSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRJbmNsdWRlZEVudGl0eVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5jbGFzcyBFeHRlbmRlZEJhc2VFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEluY2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEV4Y2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1kZWZpbmUtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RlZmluZS10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTGlzdFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIENvbmRpdGlvbkNvdW50TWVzc2FnZURpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZpbmVUYWJDb21wb25lbnQgZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0SWQgPSBgZmQtdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0U2VsZWN0SWQgPSBgZmQtc2VsZWN0LXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogdGl0bGUgaWQgZm9yIHRoZSB0YWJsZSAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdElkO1xuXG4gICAgLyoqIHNlZWxjdGVkIHZhbHVlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZWxlY3RJZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0cmF0ZWd5TGFiZWxzOiB7IFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmcgfSA9XG4gICAgICAgIHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbmNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb25kaXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lUGFuZWxTdGF0ZSA9IHtcbiAgICAgICAgaW5jbHVkZWQ6IGZhbHNlLFxuICAgICAgICBleGNsdWRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnVsZXMgPSB7XG4gICAgICAgIG1heENoYXJhY3RlcnNIaW50Q291bnQ6IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVFxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzID0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzID0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lVHlwZXMgPSBWaGREZWZpbmVUeXBlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5jbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGNsdWRlU3RyYXRlZ3k6IFN0YXRlZ3lJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NvbmRpdGlvbnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRpdGlvbnMgPSAodGhpcy5jb25kaXRpb25zIGFzIEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXSkgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTdHJhdGVnaWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5S2V5QW5kVHlwZShcbiAgICAgICAgX2luZGV4OiBudW1iZXIsXG4gICAgICAgIGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5XG4gICAgKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkICsgaXRlbS5rZXkgKyBpdGVtLnR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VsZWN0U3RyYXRlZ3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2NvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEVtcHR5Q29uZGl0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gbmV3IEV4dGVuZGVkQmFzZUVudGl0eSgpO1xuICAgICAgICBpdGVtLnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbTogRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSB8IEV4dGVuZGVkRXhjbHVkZWRFbnRpdHksIHZhbGlkOiBib29sZWFuIHwgYm9vbGVhbltdKTogdm9pZCB7XG4gICAgICAgIGl0ZW0udmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbGlkKSA/IHZhbGlkLmV2ZXJ5KEJvb2xlYW4pIDogISF2YWxpZDtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFN0cmF0ZWdpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVTdHJhdGVneSA9IE9iamVjdC5rZXlzKFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB0eXBlOiBWaGREZWZpbmVUeXBlLmluY2x1ZGVcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLl9leGNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5leGNsdWRlXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVDb25kaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlDb25kaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaW50ZXJmYWNlIFN0YXRlZ3lJdGVtIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xufVxuIiwiPGg1IFtpZF09XCJ0aXRsZUlkXCIgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiIGZkLXRpdGxlIGNsYXNzPVwiZGVmaW5lLWNvbmRpdGlvbi10aXRsZVwiPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25UaXRsZScgfCBmZFRyYW5zbGF0ZSB9fVxuPC9oNT5cbkBmb3IgKGl0ZW0gb2YgX2NvbmRpdGlvbnM7IHRyYWNrIF90cmFja0J5S2V5QW5kVHlwZShpLCBpdGVtKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZmQtbGF5b3V0LWdyaWQgY2xhc3M9XCJjb25kaXRpb24tcm93XCI+XG4gICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RlZElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uU2VsZWN0ZWRWYWx1ZUhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBpdGVtLnN0cmF0ZWd5IH1cbiAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aGQtY29uZGl0aW9uLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBmZExheW91dEdyaWRDb2xcbiAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICNzdHRyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY3VzdG9tU2VsZWN0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1zdHJhdGVneS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zdHJhdGVneVwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfZmlsdGVyQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwidGl0bGVJZCArICcgJyArICdDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTCcgKyAnICcgKyBzZWxlY3RlZElkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2luY2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJJbmNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2luY2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuaW5jbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJFeGNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2V4Y2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuZXhjbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5lbXB0eSAmJiBpdGVtLnN0cmF0ZWd5ICE9PSBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzLm5vdF9lbXB0eSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzLmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwIFt0cmlnZ2Vyc109XCJbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkZyb21QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmcm9tTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1mcm9tLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZnJvbU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Ub1BsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ0b01vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdG8tJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sIFshIWZyb21Nb2RlbC52YWxpZCwgISF0b01vZGVsLnZhbGlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0b01vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlVG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVmFsdWVQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInZhbHVlTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy12YWx1ZS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgISF2YWx1ZU1vZGVsLnZhbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhbHVlTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodmFsdWVNb2RlbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29sXCIgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbn1cbjxmZC1sYXlvdXQtZ3JpZCBjbGFzcz1cImNvbmRpdGlvbi1yb3cgbmV3LWNvbmRpdGlvbi1yb3dcIiBbbm9HYXBdPVwidHJ1ZVwiPlxuICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PiZuYnNwOzwvZGl2PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjbGFzcz1cImFjdGlvbi1jb2xcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEVtcHR5Q29uZGl0aW9uKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZmQtbGF5b3V0LWdyaWQ+XG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblN0cmF0ZWd5T3B0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1zdHJhdGVneT1cInN0cmF0ZWd5XCI+XG4gICAgQHN3aXRjaCAoc3RyYXRlZ3kua2V5KSB7XG4gICAgICAgIEBjYXNlICgnY29udGFpbnMnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbENvbnRhaW5zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdiZXR3ZWVuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxCZXR3ZWVuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxTdGFydHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbmRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW5kc1dpdGgnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxMZXNzVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGVzc1RoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW4nKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmVhdGVyVGhhbkVxdWFsJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbkVxdWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbXB0eScpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW1wdHknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ25vdF9lcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbE5vdEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb3VudEVycm9yIGxldC1jb3VudD5cbiAgICBAaWYgKGNvdW50ICYmIGNvdW50ID4gNykge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbk1heENvdW50RXJyb3InIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IDcgfSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21TZWxlY3RUZW1wbGF0ZSBsZXQtdGV4dFZhbHVlPlxuICAgIHt7IHRleHRWYWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -9,7 +9,7 @@ import { NG_VALIDATORS, FormsModule } from '@angular/forms';
|
|
|
9
9
|
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
10
10
|
import { FormLabelComponent, FormInputMessageGroupComponent, FormControlComponent, FormMessageComponent } from '@fundamental-ngx/core/form';
|
|
11
11
|
import { LayoutGridComponent, LayoutGridRowDirective, LayoutGridColDirective } from '@fundamental-ngx/core/layout-grid';
|
|
12
|
-
import { ListGroupHeaderDirective,
|
|
12
|
+
import { ListGroupHeaderDirective, ListTitleDirective, ListLinkDirective, ListIconDirective } from '@fundamental-ngx/core/list';
|
|
13
13
|
import { SelectComponent, OptionComponent } from '@fundamental-ngx/core/select';
|
|
14
14
|
import { TitleComponent } from '@fundamental-ngx/core/title';
|
|
15
15
|
import { FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
@@ -423,7 +423,7 @@ class DefineTabComponent extends VhdBaseTab {
|
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DefineTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
426
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
426
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
427
427
|
}
|
|
428
428
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DefineTabComponent, decorators: [{
|
|
429
429
|
type: Component,
|
|
@@ -436,6 +436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
436
436
|
SelectComponent,
|
|
437
437
|
FormsModule,
|
|
438
438
|
ListGroupHeaderDirective,
|
|
439
|
+
ListTitleDirective,
|
|
439
440
|
OptionComponent,
|
|
440
441
|
NgTemplateOutlet,
|
|
441
442
|
FormInputMessageGroupComponent,
|
|
@@ -444,7 +445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
444
445
|
ButtonComponent,
|
|
445
446
|
FormMessageComponent,
|
|
446
447
|
FdTranslatePipe
|
|
447
|
-
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"] }]
|
|
448
|
+
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"] }]
|
|
448
449
|
}], propDecorators: { titleId: [{
|
|
449
450
|
type: Input
|
|
450
451
|
}], selectedId: [{
|