novo-elements 7.3.0 → 7.4.0-next.3
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/elements/button/styles/button-dialogue.scss +3 -0
- package/elements/button/styles/button-icon.scss +3 -0
- package/elements/button/styles/button.scss +4 -2
- package/elements/chips/ChipList.scss +12 -0
- package/elements/chips/Chips.scss +1 -1
- package/elements/common/typography/text.mixins.scss +7 -2
- package/elements/expansion/_expansion-theme.scss +2 -2
- package/elements/expansion/expansion-panel-header.scss +11 -8
- package/elements/expansion/expansion-panel.scss +1 -1
- package/elements/field/field.scss +10 -1
- package/elements/icon/Icon.scss +16 -0
- package/elements/query-builder/condition-builder/condition-builder.component.scss +66 -0
- package/elements/query-builder/condition-group/condition-group.component.scss +12 -0
- package/elements/query-builder/criteria-builder/criteria-builder.component.scss +9 -0
- package/elements/search/SearchBox.scss +24 -2
- package/elements/select/Select.scss +1 -1
- package/elements/select-search/select-search.component.scss +13 -68
- package/esm2020/src/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +2 -2
- package/esm2020/src/elements/button/Button.mjs +2 -2
- package/esm2020/src/elements/card/Card.mjs +1 -1
- package/esm2020/src/elements/chips/Chip.mjs +2 -2
- package/esm2020/src/elements/chips/ChipList.mjs +8 -4
- package/esm2020/src/elements/chips/Chips.mjs +1 -1
- package/esm2020/src/elements/color-picker/color-input.component.mjs +1 -1
- package/esm2020/src/elements/common/common.module.mjs +13 -3
- package/esm2020/src/elements/common/directives/switch-cases.directive.mjs +43 -0
- package/esm2020/src/elements/common/directives/visible.directive.mjs +34 -0
- package/esm2020/src/elements/common/index.mjs +3 -1
- package/esm2020/src/elements/common/option/optgroup.component.mjs +2 -2
- package/esm2020/src/elements/common/option/option.component.mjs +2 -2
- package/esm2020/src/elements/common/overlay/Overlay.mjs +19 -9
- package/esm2020/src/elements/common/typography/base/base-text.component.mjs +29 -2
- package/esm2020/src/elements/common/typography/caption/caption.component.mjs +2 -2
- package/esm2020/src/elements/common/typography/label/label.component.mjs +2 -2
- package/esm2020/src/elements/common/typography/link/link.component.mjs +2 -2
- package/esm2020/src/elements/common/typography/text/text.component.mjs +2 -2
- package/esm2020/src/elements/common/typography/title/title.component.mjs +2 -2
- package/esm2020/src/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
- package/esm2020/src/elements/data-table/data-table-clear-button.component.mjs +26 -12
- package/esm2020/src/elements/data-table/data-table.component.mjs +17 -21
- package/esm2020/src/elements/data-table/data-table.source.mjs +2 -2
- package/esm2020/src/elements/data-table/interfaces.mjs +1 -1
- package/esm2020/src/elements/data-table/services/remote-data-table.service.mjs +1 -1
- package/esm2020/src/elements/data-table/services/static-data-table.service.mjs +2 -2
- package/esm2020/src/elements/data-table/sort-filter/sort-button.component.mjs +2 -2
- package/esm2020/src/elements/data-table/state/data-table-state.service.mjs +32 -3
- package/esm2020/src/elements/date-picker/DatePicker.mjs +18 -6
- package/esm2020/src/elements/date-picker/DatePickerInput.mjs +1 -1
- package/esm2020/src/elements/date-picker/DateRangeInput.mjs +1 -1
- package/esm2020/src/elements/date-picker/MultiDateInput.mjs +1 -1
- package/esm2020/src/elements/date-picker/date-picker.types.mjs +1 -1
- package/esm2020/src/elements/dropdown/Dropdown.mjs +1 -1
- package/esm2020/src/elements/expansion/expansion-animations.mjs +2 -2
- package/esm2020/src/elements/expansion/expansion-panel-header.mjs +3 -3
- package/esm2020/src/elements/expansion/expansion-panel.mjs +3 -3
- package/esm2020/src/elements/field/autocomplete/autocomplete.component.mjs +2 -5
- package/esm2020/src/elements/field/field.mjs +14 -4
- package/esm2020/src/elements/field/field.module.mjs +6 -1
- package/esm2020/src/elements/field/formats/base-format.mjs +7 -1
- package/esm2020/src/elements/field/formats/date-format.mjs +9 -18
- package/esm2020/src/elements/field/formats/date-range-format.mjs +142 -0
- package/esm2020/src/elements/field/formats/time-format.mjs +7 -10
- package/esm2020/src/elements/field/hint/hint.mjs +2 -2
- package/esm2020/src/elements/field/index.mjs +2 -1
- package/esm2020/src/elements/field/toggle/picker-toggle.component.mjs +29 -8
- package/esm2020/src/elements/form/DynamicForm.mjs +1 -1
- package/esm2020/src/elements/header/Header.mjs +7 -5
- package/esm2020/src/elements/icon/Icon.mjs +10 -4
- package/esm2020/src/elements/index.mjs +2 -1
- package/esm2020/src/elements/list/List.mjs +1 -1
- package/esm2020/src/elements/menu/menu-content.component.mjs +2 -2
- package/esm2020/src/elements/modal/modal-container.component.mjs +9 -4
- package/esm2020/src/elements/non-ideal-state/NonIdealState.mjs +6 -2
- package/esm2020/src/elements/picker/Picker.mjs +1 -1
- package/esm2020/src/elements/picker/Picker.module.mjs +5 -4
- package/esm2020/src/elements/picker/extras/base-picker-results/BasePickerResults.mjs +2 -2
- package/esm2020/src/elements/picker/extras/entity-picker-results/EntityPickerResults.mjs +34 -31
- package/esm2020/src/elements/picker/extras/picker-results/PickerResults.mjs +5 -4
- package/esm2020/src/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.mjs +7 -6
- package/esm2020/src/elements/query-builder/condition-builder/condition-builder.component.mjs +195 -0
- package/esm2020/src/elements/query-builder/condition-definitions/abstract-condition.definition.mjs +51 -0
- package/esm2020/src/elements/query-builder/condition-definitions/address-condition.definition.mjs +55 -0
- package/esm2020/src/elements/query-builder/condition-definitions/boolean-condition.definition.mjs +59 -0
- package/esm2020/src/elements/query-builder/condition-definitions/date-condition.definition.mjs +119 -0
- package/esm2020/src/elements/query-builder/condition-definitions/id-condition.definition.mjs +54 -0
- package/esm2020/src/elements/query-builder/condition-definitions/number-condition.definition.mjs +57 -0
- package/esm2020/src/elements/query-builder/condition-definitions/picker-condition.definition.mjs +66 -0
- package/esm2020/src/elements/query-builder/condition-definitions/string-condition.definition.mjs +127 -0
- package/esm2020/src/elements/query-builder/condition-group/condition-group.component.mjs +97 -0
- package/esm2020/src/elements/query-builder/criteria-builder/criteria-builder.component.mjs +158 -0
- package/esm2020/src/elements/query-builder/index.mjs +15 -0
- package/esm2020/src/elements/query-builder/query-builder.directives.mjs +101 -0
- package/esm2020/src/elements/query-builder/query-builder.module.mjs +172 -0
- package/esm2020/src/elements/query-builder/query-builder.service.mjs +87 -0
- package/esm2020/src/elements/query-builder/query-builder.tokens.mjs +5 -0
- package/esm2020/src/elements/query-builder/query-builder.types.mjs +7 -0
- package/esm2020/src/elements/quick-note/QuickNote.module.mjs +5 -4
- package/esm2020/src/elements/quick-note/extras/quick-note-results/QuickNoteResults.mjs +5 -4
- package/esm2020/src/elements/search/SearchBox.mjs +36 -8
- package/esm2020/src/elements/select/Select.mjs +10 -6
- package/esm2020/src/elements/select/Select.module.mjs +5 -1
- package/esm2020/src/elements/select-search/select-search.component.mjs +22 -20
- package/esm2020/src/elements/select-search/select-search.module.mjs +6 -2
- package/esm2020/src/elements/simple-table/table.mjs +2 -2
- package/esm2020/src/elements/stepper/step-header.component.mjs +1 -1
- package/esm2020/src/elements/stepper/step-status.component.mjs +1 -1
- package/esm2020/src/elements/switch/Switch.mjs +1 -1
- package/esm2020/src/elements/table/Table.mjs +1 -1
- package/esm2020/src/elements/time-picker/TimePickerInput.mjs +1 -1
- package/esm2020/src/elements/tip-well/TipWell.mjs +9 -5
- package/esm2020/src/elements/tooltip/Tooltip.directive.mjs +5 -2
- package/esm2020/src/elements/value/Value.mjs +1 -1
- package/esm2020/src/novo-elements.module.mjs +7 -3
- package/esm2020/src/pipes/Pipes.module.mjs +5 -4
- package/esm2020/src/pipes/highlight/Highlight.mjs +22 -0
- package/esm2020/src/pipes/highlight/index.mjs +2 -0
- package/esm2020/src/pipes/index.mjs +2 -1
- package/esm2020/src/services/novo-label-service.mjs +25 -1
- package/fesm2015/novo-elements.mjs +1928 -264
- package/fesm2015/novo-elements.mjs.map +1 -1
- package/fesm2020/novo-elements.mjs +1918 -264
- package/fesm2020/novo-elements.mjs.map +1 -1
- package/novo-elements.scss +4 -0
- package/package.json +1 -1
- package/src/elements/common/common.module.d.ts +5 -3
- package/src/elements/common/directives/switch-cases.directive.d.ts +16 -0
- package/src/elements/common/directives/visible.directive.d.ts +10 -0
- package/src/elements/common/index.d.ts +2 -0
- package/src/elements/common/overlay/Overlay.d.ts +3 -1
- package/src/elements/common/typography/base/base-text.component.d.ts +4 -1
- package/src/elements/data-table/data-table-clear-button.component.d.ts +3 -1
- package/src/elements/data-table/interfaces.d.ts +15 -1
- package/src/elements/data-table/services/remote-data-table.service.d.ts +4 -1
- package/src/elements/data-table/services/static-data-table.service.d.ts +4 -1
- package/src/elements/data-table/state/data-table-state.service.d.ts +5 -0
- package/src/elements/date-picker/DatePicker.d.ts +1 -0
- package/src/elements/date-picker/date-picker.types.d.ts +5 -1
- package/src/elements/field/field.d.ts +1 -0
- package/src/elements/field/field.module.d.ts +10 -9
- package/src/elements/field/formats/base-format.d.ts +5 -0
- package/src/elements/field/formats/date-format.d.ts +3 -7
- package/src/elements/field/formats/date-range-format.d.ts +35 -0
- package/src/elements/field/formats/time-format.d.ts +2 -2
- package/src/elements/field/index.d.ts +1 -0
- package/src/elements/field/toggle/picker-toggle.component.d.ts +7 -3
- package/src/elements/header/Header.d.ts +2 -1
- package/src/elements/icon/Icon.d.ts +2 -1
- package/src/elements/index.d.ts +1 -0
- package/src/elements/modal/modal-container.component.d.ts +2 -0
- package/src/elements/non-ideal-state/NonIdealState.d.ts +1 -1
- package/src/elements/picker/Picker.module.d.ts +8 -7
- package/src/elements/picker/extras/base-picker-results/BasePickerResults.d.ts +1 -1
- package/src/elements/picker/extras/entity-picker-results/EntityPickerResults.d.ts +1 -1
- package/src/elements/query-builder/condition-builder/condition-builder.component.d.ts +69 -0
- package/src/elements/query-builder/condition-definitions/abstract-condition.definition.d.ts +21 -0
- package/src/elements/query-builder/condition-definitions/address-condition.definition.d.ts +10 -0
- package/src/elements/query-builder/condition-definitions/boolean-condition.definition.d.ts +10 -0
- package/src/elements/query-builder/condition-definitions/date-condition.definition.d.ts +17 -0
- package/src/elements/query-builder/condition-definitions/id-condition.definition.d.ts +10 -0
- package/src/elements/query-builder/condition-definitions/number-condition.definition.d.ts +11 -0
- package/src/elements/query-builder/condition-definitions/picker-condition.definition.d.ts +10 -0
- package/src/elements/query-builder/condition-definitions/string-condition.definition.d.ts +19 -0
- package/src/elements/query-builder/condition-group/condition-group.component.d.ts +30 -0
- package/src/elements/query-builder/criteria-builder/criteria-builder.component.d.ts +38 -0
- package/src/elements/query-builder/index.d.ts +14 -0
- package/src/elements/query-builder/query-builder.directives.d.ts +66 -0
- package/src/elements/query-builder/query-builder.module.d.ts +39 -0
- package/src/elements/query-builder/query-builder.service.d.ts +51 -0
- package/src/elements/query-builder/query-builder.tokens.d.ts +4 -0
- package/src/elements/query-builder/query-builder.types.d.ts +42 -0
- package/src/elements/quick-note/QuickNote.module.d.ts +2 -1
- package/src/elements/search/SearchBox.d.ts +6 -1
- package/src/elements/select/Select.d.ts +3 -0
- package/src/elements/select/Select.module.d.ts +3 -2
- package/src/elements/select-search/select-search.module.d.ts +2 -1
- package/src/elements/tip-well/TipWell.d.ts +1 -1
- package/src/elements/tooltip/Tooltip.directive.d.ts +2 -2
- package/src/novo-elements.module.d.ts +2 -1
- package/src/pipes/Pipes.module.d.ts +7 -6
- package/src/pipes/highlight/Highlight.d.ts +9 -0
- package/src/pipes/highlight/index.d.ts +1 -0
- package/src/pipes/index.d.ts +1 -0
- package/src/services/novo-label-service.d.ts +24 -0
- package/styles/themes/light-test.scss +107 -0
package/esm2020/src/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.mjs
CHANGED
|
@@ -9,6 +9,7 @@ import * as i2 from "../../../loading/Loading";
|
|
|
9
9
|
import * as i3 from "../../../list/List";
|
|
10
10
|
import * as i4 from "@angular/common";
|
|
11
11
|
import * as i5 from "../../../common/directives/theme.directive";
|
|
12
|
+
import * as i6 from "../../../../pipes/highlight/Highlight";
|
|
12
13
|
export class SkillsSpecialtyPickerResults extends BasePickerResults {
|
|
13
14
|
constructor(element, labels, ref) {
|
|
14
15
|
super(element, ref);
|
|
@@ -55,10 +56,10 @@ SkillsSpecialtyPickerResults.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
55
56
|
[class.disabled]="preselected(match)"
|
|
56
57
|
>
|
|
57
58
|
<item-content>
|
|
58
|
-
<h6><span [innerHtml]="
|
|
59
|
+
<h6><span [innerHtml]="match.label | highlight:term"></span></h6>
|
|
59
60
|
<div class="category">
|
|
60
61
|
<i class="bhi-category-tags"></i
|
|
61
|
-
><span [innerHtml]="
|
|
62
|
+
><span [innerHtml]="match.data.categories || match.data.parentCategory.name | highlight:term"></span>
|
|
62
63
|
</div>
|
|
63
64
|
</item-content>
|
|
64
65
|
</novo-list-item>
|
|
@@ -69,7 +70,7 @@ SkillsSpecialtyPickerResults.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
69
70
|
</novo-list>
|
|
70
71
|
<p class="picker-error" *ngIf="hasError">{{ labels.pickerError }}</p>
|
|
71
72
|
<p class="picker-null" *ngIf="!isLoading && !matches.length && !hasError">{{ labels.pickerEmpty }}</p>
|
|
72
|
-
`, isInline: true, components: [{ type: i2.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }, { type: i3.NovoListElement, selector: "novo-list", inputs: ["theme", "direction"] }, { type: i3.NovoListItemElement, selector: "novo-list-item, a[list-item], button[list-item]" }, { type: i3.NovoItemContentElement, selector: "item-content, novo-item-content", inputs: ["direction"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThemeColorDirective, selector: "[theme]", inputs: ["theme"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
73
|
+
`, isInline: true, components: [{ type: i2.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }, { type: i3.NovoListElement, selector: "novo-list", inputs: ["theme", "direction"] }, { type: i3.NovoListItemElement, selector: "novo-list-item, a[list-item], button[list-item]" }, { type: i3.NovoItemContentElement, selector: "item-content, novo-item-content", inputs: ["direction"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThemeColorDirective, selector: "[theme]", inputs: ["theme"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "highlight": i6.HighlightPipe } });
|
|
73
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SkillsSpecialtyPickerResults, decorators: [{
|
|
74
75
|
type: Component,
|
|
75
76
|
args: [{
|
|
@@ -85,10 +86,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
85
86
|
[class.disabled]="preselected(match)"
|
|
86
87
|
>
|
|
87
88
|
<item-content>
|
|
88
|
-
<h6><span [innerHtml]="
|
|
89
|
+
<h6><span [innerHtml]="match.label | highlight:term"></span></h6>
|
|
89
90
|
<div class="category">
|
|
90
91
|
<i class="bhi-category-tags"></i
|
|
91
|
-
><span [innerHtml]="
|
|
92
|
+
><span [innerHtml]="match.data.categories || match.data.parentCategory.name | highlight:term"></span>
|
|
92
93
|
</div>
|
|
93
94
|
</item-content>
|
|
94
95
|
</novo-list-item>
|
|
@@ -105,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
105
106
|
type: HostBinding,
|
|
106
107
|
args: ['class.active']
|
|
107
108
|
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbGxzU3BlY2lhbHR5UGlja2VyUmVzdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3BpY2tlci9leHRyYXMvc2tpbGxzLXBpY2tlci1yZXN1bHRzL1NraWxsc1NwZWNpYWx0eVBpY2tlclJlc3VsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxNQUFNO0FBQ04sT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7O0FBK0I3RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsaUJBQWlCO0lBT2pFLFlBQW1CLE9BQW1CLEVBQVMsTUFBd0IsRUFBRSxHQUFzQjtRQUM3RixLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBREgsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBTHZFLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixVQUFLLEdBQVcsR0FBRyxDQUFDO0lBS3BCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FBQyxVQUFlO1FBQzVCLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN0QixJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN6QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzBIQWxDVSw0QkFBNEI7OEdBQTVCLDRCQUE0QixzSkEzQjdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJUOzRGQUVVLDRCQUE0QjtrQkE3QnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJUO2lCQUNGO2dLQUdDLE1BQU07c0JBREwsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTkcyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL25vdm8tbGFiZWwtc2VydmljZSc7XG4vLyBBcHBcbmltcG9ydCB7IEJhc2VQaWNrZXJSZXN1bHRzIH0gZnJvbSAnLi4vYmFzZS1waWNrZXItcmVzdWx0cy9CYXNlUGlja2VyUmVzdWx0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NraWxsLXNwZWNpYWx0eS1waWNrZXItcmVzdWx0cycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJwaWNrZXItbG9hZGluZ1wiICpuZ0lmPVwiaXNMb2FkaW5nICYmICFtYXRjaGVzPy5sZW5ndGhcIj48bm92by1sb2FkaW5nIHRoZW1lPVwibGluZVwiPjwvbm92by1sb2FkaW5nPjwvc2VjdGlvbj5cbiAgICA8bm92by1saXN0ICpuZ0lmPVwibWF0Y2hlcy5sZW5ndGggPiAwXCIgZGlyZWN0aW9uPVwidmVydGljYWxcIj5cbiAgICAgIDxub3ZvLWxpc3QtaXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgbWF0Y2ggb2YgbWF0Y2hlc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RNYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJtYXRjaCA9PT0gYWN0aXZlTWF0Y2hcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJzZWxlY3RBY3RpdmUobWF0Y2gpXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInByZXNlbGVjdGVkKG1hdGNoKVwiXG4gICAgICA+XG4gICAgICAgIDxpdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgPGg2PjxzcGFuIFtpbm5lckh0bWxdPVwibWF0Y2gubGFiZWwgfCBoaWdobGlnaHQ6dGVybVwiPjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJiaGktY2F0ZWdvcnktdGFnc1wiPjwvaVxuICAgICAgICAgICAgPjxzcGFuIFtpbm5lckh0bWxdPVwibWF0Y2guZGF0YS5jYXRlZ29yaWVzIHx8IG1hdGNoLmRhdGEucGFyZW50Q2F0ZWdvcnkubmFtZSB8IGhpZ2hsaWdodDp0ZXJtXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2l0ZW0tY29udGVudD5cbiAgICAgIDwvbm92by1saXN0LWl0ZW0+XG4gICAgICA8bm92by1saXN0LWl0ZW0gKm5nSWY9XCJsaW1pdGVkVG9cIlxuICAgICAgICA+PGRpdj57eyBsYWJlbHMuc2hvd2luZ1hvZlhSZXN1bHRzKGxpbWl0LCB0b3RhbCkgfX08L2Rpdj48L25vdm8tbGlzdC1pdGVtXG4gICAgICA+XG4gICAgICA8bm92by1sb2FkaW5nIHRoZW1lPVwibGluZVwiICpuZ0lmPVwiaXNMb2FkaW5nICYmIG1hdGNoZXMubGVuZ3RoID4gMFwiPjwvbm92by1sb2FkaW5nPlxuICAgIDwvbm92by1saXN0PlxuICAgIDxwIGNsYXNzPVwicGlja2VyLWVycm9yXCIgKm5nSWY9XCJoYXNFcnJvclwiPnt7IGxhYmVscy5waWNrZXJFcnJvciB9fTwvcD5cbiAgICA8cCBjbGFzcz1cInBpY2tlci1udWxsXCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFtYXRjaGVzLmxlbmd0aCAmJiAhaGFzRXJyb3JcIj57eyBsYWJlbHMucGlja2VyRW1wdHkgfX08L3A+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNraWxsc1NwZWNpYWx0eVBpY2tlclJlc3VsdHMgZXh0ZW5kcyBCYXNlUGlja2VyUmVzdWx0cyB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgYWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcbiAgbGltaXRlZFRvOiBib29sZWFuID0gZmFsc2U7XG4gIGxpbWl0OiBudW1iZXIgPSAyMDA7XG4gIHRvdGFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHB1YmxpYyBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UsIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihlbGVtZW50LCByZWYpO1xuICB9XG5cbiAgZ2V0TGlzdEVsZW1lbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignbm92by1saXN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogQG5hbWUgc3RydWN0dXJlQXJyYXlcbiAgICogQHBhcmFtIGNvbGxlY3Rpb24gLSB0aGUgZGF0YSBvbmNlIGdldERhdGEgcmVzb2x2ZXMgaXRcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gc3RydWN0dXJlcyBhbiBhcnJheSBvZiBub2RlcyBpbnRvIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBhXG4gICAqICduYW1lJyBmaWVsZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgc3RydWN0dXJlQXJyYXkoY29sbGVjdGlvbjogYW55KTogYW55IHtcbiAgICBsZXQgZGF0YSA9IGNvbGxlY3Rpb247XG4gICAgaWYgKGNvbGxlY3Rpb24uaGFzT3duUHJvcGVydHkoJ2RhdGEnKSkge1xuICAgICAgdGhpcy5saW1pdGVkVG8gPSBjb2xsZWN0aW9uLmxpbWl0ZWRUbzIwMDtcbiAgICAgIHRoaXMudG90YWwgPSBjb2xsZWN0aW9uLnRvdGFsO1xuICAgICAgZGF0YSA9IGNvbGxlY3Rpb24uZGF0YTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID4gdGhpcy5saW1pdCkge1xuICAgICAgdGhpcy5saW1pdGVkVG8gPSB0cnVlO1xuICAgICAgdGhpcy50b3RhbCA9IGRhdGEubGVuZ3RoO1xuICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMCwgdGhpcy5saW1pdCk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zdHJ1Y3R1cmVBcnJheShkYXRhKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Input, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, FormControl } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
import { QueryBuilderService } from '../query-builder.service';
|
|
6
|
+
import { NOVO_CONDITION_BUILDER } from '../query-builder.tokens';
|
|
7
|
+
import { NovoLabelService } from '../../../services';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../services";
|
|
10
|
+
import * as i2 from "../query-builder.service";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
import * as i4 from "../../flex/Grid";
|
|
13
|
+
import * as i5 from "../../field/field";
|
|
14
|
+
import * as i6 from "../../select/Select";
|
|
15
|
+
import * as i7 from "../../common/option/optgroup.component";
|
|
16
|
+
import * as i8 from "../../common/option/option.component";
|
|
17
|
+
import * as i9 from "../../select-search/select-search.component";
|
|
18
|
+
import * as i10 from "../../loading/Loading";
|
|
19
|
+
import * as i11 from "../../common/directives/space.directive";
|
|
20
|
+
import * as i12 from "@angular/common";
|
|
21
|
+
/**
|
|
22
|
+
* Provides a handle for the table to grab the view container's ng-container to insert data rows.
|
|
23
|
+
* @docs-private
|
|
24
|
+
*/
|
|
25
|
+
export class ConditionInputOutlet {
|
|
26
|
+
constructor(viewContainer, elementRef) {
|
|
27
|
+
this.viewContainer = viewContainer;
|
|
28
|
+
this.elementRef = elementRef;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ConditionInputOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionInputOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
32
|
+
ConditionInputOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ConditionInputOutlet, selector: "[conditionInputOutlet]", ngImport: i0 });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionInputOutlet, decorators: [{
|
|
34
|
+
type: Directive,
|
|
35
|
+
args: [{ selector: '[conditionInputOutlet]' }]
|
|
36
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });
|
|
37
|
+
/**
|
|
38
|
+
* Provides a handle for the table to grab the view container's ng-container to insert data rows.
|
|
39
|
+
* @docs-private
|
|
40
|
+
*/
|
|
41
|
+
export class ConditionOperatorOutlet {
|
|
42
|
+
constructor(viewContainer, elementRef) {
|
|
43
|
+
this.viewContainer = viewContainer;
|
|
44
|
+
this.elementRef = elementRef;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ConditionOperatorOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionOperatorOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
48
|
+
ConditionOperatorOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ConditionOperatorOutlet, selector: "[conditionOperatorOutlet]", ngImport: i0 });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionOperatorOutlet, decorators: [{
|
|
50
|
+
type: Directive,
|
|
51
|
+
args: [{ selector: '[conditionOperatorOutlet]' }]
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });
|
|
53
|
+
export class ConditionBuilderComponent {
|
|
54
|
+
constructor(labels, cdr, qbs, controlContainer) {
|
|
55
|
+
this.labels = labels;
|
|
56
|
+
this.cdr = cdr;
|
|
57
|
+
this.qbs = qbs;
|
|
58
|
+
this.controlContainer = controlContainer;
|
|
59
|
+
this.searchTerm = new FormControl();
|
|
60
|
+
this._lastContext = {};
|
|
61
|
+
/** Subject that emits when the component has been destroyed. */
|
|
62
|
+
this._onDestroy = new Subject();
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this.parentForm = this.controlContainer.control;
|
|
66
|
+
this.parentForm.valueChanges.subscribe((value) => {
|
|
67
|
+
Promise.resolve().then(() => this.onFieldSelect());
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
ngAfterContentInit() {
|
|
71
|
+
const { fields = [] } = this.qbs.config || {};
|
|
72
|
+
fields.length && this.changeFieldOptions(fields[0]);
|
|
73
|
+
this.searches = this.searchTerm.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((term) => {
|
|
74
|
+
// this.parentForm.get('field').setValue(null);
|
|
75
|
+
this.results$ = Promise.resolve(this.fieldConfig.options.filter((f) => f.name.toLowerCase().includes(term.toLowerCase()) || f.label?.toLowerCase().includes(term.toLowerCase())));
|
|
76
|
+
this.cdr.markForCheck();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
ngAfterViewInit() {
|
|
80
|
+
if (this.parentForm.value?.field !== null) {
|
|
81
|
+
Promise.resolve().then(() => this.onFieldSelect());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
ngOnDestroy() {
|
|
85
|
+
this.searches.unsubscribe();
|
|
86
|
+
// Clear all outlets and Maps
|
|
87
|
+
[this._operatorOutlet.viewContainer, this._inputOutlet.viewContainer].forEach((def) => {
|
|
88
|
+
def.clear();
|
|
89
|
+
});
|
|
90
|
+
// this._contentFieldTypeDefs = [];
|
|
91
|
+
// this._contentFieldDefs = [];
|
|
92
|
+
this._onDestroy.next();
|
|
93
|
+
this._onDestroy.complete();
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Updates the Conditions "Field" Options to Change base on new Scope
|
|
97
|
+
* @param fieldConfig
|
|
98
|
+
*/
|
|
99
|
+
changeFieldOptions(fieldConfig) {
|
|
100
|
+
// this.fields = entity.filter(term);
|
|
101
|
+
this.fieldConfig = fieldConfig;
|
|
102
|
+
this.searchTerm.setValue('');
|
|
103
|
+
this.results$ = Promise.resolve(this.fieldConfig.options);
|
|
104
|
+
}
|
|
105
|
+
getField() {
|
|
106
|
+
const { field } = this.parentForm?.value;
|
|
107
|
+
if (!field)
|
|
108
|
+
return null;
|
|
109
|
+
return this.fieldConfig.find(field);
|
|
110
|
+
}
|
|
111
|
+
getDefaultField() {
|
|
112
|
+
const fields = this.fieldConfig.options;
|
|
113
|
+
if (fields && fields.length) {
|
|
114
|
+
return fields[0].name;
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
onFieldSelect() {
|
|
119
|
+
const fieldConf = this.getField();
|
|
120
|
+
if (!fieldConf) {
|
|
121
|
+
this.parentForm.get('field').setValue(this.getDefaultField());
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.fieldDisplayWith = () => fieldConf.label || fieldConf.name;
|
|
126
|
+
}
|
|
127
|
+
const { field, operator } = this.parentForm.value;
|
|
128
|
+
if (this._lastContext.field !== field) {
|
|
129
|
+
if (!!this._lastContext.field) {
|
|
130
|
+
// only clearing operator/value is field was previously defined so we can preload values onto the form
|
|
131
|
+
this.parentForm.get('value').setValue(null);
|
|
132
|
+
this.parentForm.get('operator').setValue(null);
|
|
133
|
+
}
|
|
134
|
+
this.createFieldTemplates();
|
|
135
|
+
}
|
|
136
|
+
this._lastContext = { ...this.parentForm.value };
|
|
137
|
+
this.cdr.markForCheck();
|
|
138
|
+
}
|
|
139
|
+
findDefinitionForField(field) {
|
|
140
|
+
if (!field)
|
|
141
|
+
return;
|
|
142
|
+
const editType = this.qbs.editTypeFn(field);
|
|
143
|
+
// Don't look at dataSpecialization it is no good, this misses currency, and percent
|
|
144
|
+
const { name, inputType, dataType, type } = field;
|
|
145
|
+
const fieldDefsByName = this.qbs.getFieldDefsByName();
|
|
146
|
+
// Check Fields by priority for match Field Definition
|
|
147
|
+
const key = [name, editType?.toUpperCase(), 'DEFAULT'].find((it) => fieldDefsByName.has(it));
|
|
148
|
+
return fieldDefsByName.get(key);
|
|
149
|
+
}
|
|
150
|
+
createFieldTemplates() {
|
|
151
|
+
const definition = this.findDefinitionForField(this.getField());
|
|
152
|
+
if (!this.parentForm.get('operator').value) {
|
|
153
|
+
this.parentForm.get('operator').setValue(definition.defaultOperator);
|
|
154
|
+
}
|
|
155
|
+
this.createFieldOperators(definition);
|
|
156
|
+
this.createFieldInput(definition);
|
|
157
|
+
}
|
|
158
|
+
createFieldOperators(definition) {
|
|
159
|
+
this._operatorOutlet.viewContainer.clear();
|
|
160
|
+
if (definition) {
|
|
161
|
+
const context = { $implicit: this.parentForm, fieldMeta: this.getField() };
|
|
162
|
+
this._operatorOutlet.viewContainer.createEmbeddedView(definition.fieldOperators.template, context);
|
|
163
|
+
}
|
|
164
|
+
this.cdr.markForCheck();
|
|
165
|
+
}
|
|
166
|
+
createFieldInput(definition) {
|
|
167
|
+
this._inputOutlet.viewContainer.clear();
|
|
168
|
+
if (definition) {
|
|
169
|
+
const context = { $implicit: this.parentForm, fieldMeta: this.getField(), viewIndex: this.groupIndex.toString() + this.andIndex.toString() };
|
|
170
|
+
this._inputOutlet.viewContainer.createEmbeddedView(definition.fieldInput.template, context);
|
|
171
|
+
}
|
|
172
|
+
this.cdr.markForCheck();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
ConditionBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionBuilderComponent, deps: [{ token: i1.NovoLabelService }, { token: i0.ChangeDetectorRef }, { token: i2.QueryBuilderService }, { token: i3.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
+
ConditionBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ConditionBuilderComponent, selector: "novo-condition-builder", inputs: { label: "label", isFirst: "isFirst", andIndex: "andIndex", groupIndex: "groupIndex" }, providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], viewQueries: [{ propertyName: "_operatorOutlet", first: true, predicate: ConditionOperatorOutlet, descendants: true, static: true }, { propertyName: "_inputOutlet", first: true, predicate: ConditionInputOutlet, descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);grid-template-columns:minmax(fit-content,1fr);width:100%;width:-webkit-fill-available}:host .condition-operator::ng-deep .novo-select{min-width:13rem}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical{grid-template-columns:minmax(-webkit-fit-content,1fr);grid-template-columns:minmax(fit-content,1fr);width:-webkit-fill-available}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical .novo-input-element{width:100%}:host .condition-input::ng-deep novo-field{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}:host .condition-input::ng-deep novo-chips{border-bottom:none!important}:host .condition-input::ng-deep novo-chips input{padding-left:0!important}:host .and-or-filter-button{box-sizing:border-box;background:#fff;border:1px solid #ddd;color:#5691f5;display:inline-block;position:relative;cursor:pointer;margin:.4rem auto;align-items:center;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;white-space:nowrap;text-transform:uppercase;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}\n"], components: [{ type: i4.NovoGridElement, selector: "novo-grid", inputs: ["direction", "align", "justify", "columns"] }, { type: i5.NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: i6.NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: i7.NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { type: i8.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { type: i9.NovoSelectSearchComponent, selector: "novo-select-search", inputs: ["name", "placeholderLabel", "type", "noEntriesFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toogleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { type: i10.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.GapDirective, selector: "[gap]", inputs: ["gap"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ConditionOperatorOutlet, selector: "[conditionOperatorOutlet]" }, { type: ConditionInputOutlet, selector: "[conditionInputOutlet]" }], pipes: { "async": i12.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionBuilderComponent, decorators: [{
|
|
178
|
+
type: Component,
|
|
179
|
+
args: [{ selector: 'novo-condition-builder', providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);grid-template-columns:minmax(fit-content,1fr);width:100%;width:-webkit-fill-available}:host .condition-operator::ng-deep .novo-select{min-width:13rem}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical{grid-template-columns:minmax(-webkit-fit-content,1fr);grid-template-columns:minmax(fit-content,1fr);width:-webkit-fill-available}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical .novo-input-element{width:100%}:host .condition-input::ng-deep novo-field{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}:host .condition-input::ng-deep novo-chips{border-bottom:none!important}:host .condition-input::ng-deep novo-chips input{padding-left:0!important}:host .and-or-filter-button{box-sizing:border-box;background:#fff;border:1px solid #ddd;color:#5691f5;display:inline-block;position:relative;cursor:pointer;margin:.4rem auto;align-items:center;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;white-space:nowrap;text-transform:uppercase;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}\n"] }]
|
|
180
|
+
}], ctorParameters: function () { return [{ type: i1.NovoLabelService }, { type: i0.ChangeDetectorRef }, { type: i2.QueryBuilderService }, { type: i3.ControlContainer }]; }, propDecorators: { _operatorOutlet: [{
|
|
181
|
+
type: ViewChild,
|
|
182
|
+
args: [ConditionOperatorOutlet, { static: true }]
|
|
183
|
+
}], _inputOutlet: [{
|
|
184
|
+
type: ViewChild,
|
|
185
|
+
args: [ConditionInputOutlet, { static: true }]
|
|
186
|
+
}], label: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], isFirst: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], andIndex: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], groupIndex: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}] } });
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVyRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW1CLGFBQStCLEVBQVMsVUFBc0I7UUFBOUQsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7O2tI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QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFeEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUNvbmRpdGlvbkZpZWxkRGVmIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci5kaXJlY3RpdmVzJztcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTk9WT19DT05ESVRJT05fQlVJTERFUiB9IGZyb20gJy4uL3F1ZXJ5LWJ1aWxkZXIudG9rZW5zJztcbmltcG9ydCB7IEJhc2VGaWVsZERlZiwgRmllbGRDb25maWcsIFF1ZXJ5RmlsdGVyT3V0bGV0IH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgaGFuZGxlIGZvciB0aGUgdGFibGUgdG8gZ3JhYiB0aGUgdmlldyBjb250YWluZXIncyBuZy1jb250YWluZXIgdG8gaW5zZXJ0IGRhdGEgcm93cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2NvbmRpdGlvbklucHV0T3V0bGV0XScgfSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25JbnB1dE91dGxldCBpbXBsZW1lbnRzIFF1ZXJ5RmlsdGVyT3V0bGV0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgaGFuZGxlIGZvciB0aGUgdGFibGUgdG8gZ3JhYiB0aGUgdmlldyBjb250YWluZXIncyBuZy1jb250YWluZXIgdG8gaW5zZXJ0IGRhdGEgcm93cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2NvbmRpdGlvbk9wZXJhdG9yT3V0bGV0XScgfSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25PcGVyYXRvck91dGxldCBpbXBsZW1lbnRzIFF1ZXJ5RmlsdGVyT3V0bGV0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWNvbmRpdGlvbi1idWlsZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmRpdGlvbi1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOT1ZPX0NPTkRJVElPTl9CVUlMREVSLCB1c2VFeGlzdGluZzogQ29uZGl0aW9uQnVpbGRlckNvbXBvbmVudCB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9vcGVyYXRvck91dGxldDogQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQ7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uSW5wdXRPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9pbnB1dE91dGxldDogQ29uZGl0aW9uSW5wdXRPdXRsZXQ7XG5cbiAgQElucHV0KCkgbGFiZWw6IGFueTtcbiAgQElucHV0KCkgaXNGaXJzdDogYm9vbGVhbjtcbiAgQElucHV0KCkgYW5kSW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZ3JvdXBJbmRleDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwYXJlbnRGb3JtOiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBmaWVsZENvbmZpZzogRmllbGRDb25maWc8QmFzZUZpZWxkRGVmPjtcbiAgcHVibGljIHNlYXJjaGVzITogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgcmVzdWx0cyQ6IFByb21pc2U8YW55W10+O1xuICBwdWJsaWMgc2VhcmNoVGVybTogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgcHVibGljIGZpZWxkRGlzcGxheVdpdGg7XG5cbiAgcHJpdmF0ZSBfbGFzdENvbnRleHQ6IGFueSA9IHt9O1xuXG4gIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHFiczogUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcmVudEZvcm0gPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbDtcbiAgICB0aGlzLnBhcmVudEZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5vbkZpZWxkU2VsZWN0KCkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IHsgZmllbGRzID0gW10gfSA9IHRoaXMucWJzLmNvbmZpZyB8fCB7fTtcbiAgICBmaWVsZHMubGVuZ3RoICYmIHRoaXMuY2hhbmdlRmllbGRPcHRpb25zKGZpZWxkc1swXSk7XG4gICAgdGhpcy5zZWFyY2hlcyA9IHRoaXMuc2VhcmNoVGVybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XG4gICAgICAvLyB0aGlzLnBhcmVudEZvcm0uZ2V0KCdmaWVsZCcpLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgdGhpcy5maWVsZENvbmZpZy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAoZikgPT4gZi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSB8fCBmLmxhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybS52YWx1ZT8uZmllbGQgIT09IG51bGwpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5vbkZpZWxkU2VsZWN0KCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VhcmNoZXMudW5zdWJzY3JpYmUoKTtcbiAgICAvLyBDbGVhciBhbGwgb3V0bGV0cyBhbmQgTWFwc1xuICAgIFt0aGlzLl9vcGVyYXRvck91dGxldC52aWV3Q29udGFpbmVyLCB0aGlzLl9pbnB1dE91dGxldC52aWV3Q29udGFpbmVyXS5mb3JFYWNoKChkZWYpID0+IHtcbiAgICAgIGRlZi5jbGVhcigpO1xuICAgIH0pO1xuICAgIC8vIHRoaXMuX2NvbnRlbnRGaWVsZFR5cGVEZWZzID0gW107XG4gICAgLy8gdGhpcy5fY29udGVudEZpZWxkRGVmcyA9IFtdO1xuICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgQ29uZGl0aW9ucyBcIkZpZWxkXCIgT3B0aW9ucyB0byBDaGFuZ2UgYmFzZSBvbiBuZXcgU2NvcGVcbiAgICogQHBhcmFtIGZpZWxkQ29uZmlnXG4gICAqL1xuICBjaGFuZ2VGaWVsZE9wdGlvbnMoZmllbGRDb25maWc6IEZpZWxkQ29uZmlnPEJhc2VGaWVsZERlZj4pIHtcbiAgICAvLyB0aGlzLmZpZWxkcyA9IGVudGl0eS5maWx0ZXIodGVybSk7XG4gICAgdGhpcy5maWVsZENvbmZpZyA9IGZpZWxkQ29uZmlnO1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZSh0aGlzLmZpZWxkQ29uZmlnLm9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0RmllbGQoKSB7XG4gICAgY29uc3QgeyBmaWVsZCB9ID0gdGhpcy5wYXJlbnRGb3JtPy52YWx1ZTtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5maWVsZENvbmZpZy5maW5kKGZpZWxkKTtcbiAgfVxuXG4gIGdldERlZmF1bHRGaWVsZCgpIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkQ29uZmlnLm9wdGlvbnM7XG4gICAgaWYgKGZpZWxkcyAmJiBmaWVsZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmllbGRzWzBdLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgb25GaWVsZFNlbGVjdCgpIHtcbiAgICBjb25zdCBmaWVsZENvbmYgPSB0aGlzLmdldEZpZWxkKCk7XG4gICAgaWYgKCFmaWVsZENvbmYpIHtcbiAgICAgIHRoaXMucGFyZW50Rm9ybS5nZXQoJ2ZpZWxkJykuc2V0VmFsdWUodGhpcy5nZXREZWZhdWx0RmllbGQoKSk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGREaXNwbGF5V2l0aCA9ICgpID0+IGZpZWxkQ29uZi5sYWJlbCB8fCBmaWVsZENvbmYubmFtZTtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZCwgb3BlcmF0b3IgfSA9IHRoaXMucGFyZW50Rm9ybS52YWx1ZTtcblxuICAgIGlmICh0aGlzLl9sYXN0Q29udGV4dC5maWVsZCAhPT0gZmllbGQpIHtcbiAgICAgIGlmICghIXRoaXMuX2xhc3RDb250ZXh0LmZpZWxkKSB7XG4gICAgICAgIC8vIG9ubHkgY2xlYXJpbmcgb3BlcmF0b3IvdmFsdWUgaXMgZmllbGQgd2FzIHByZXZpb3VzbHkgZGVmaW5lZCBzbyB3ZSBjYW4gcHJlbG9hZCB2YWx1ZXMgb250byB0aGUgZm9ybVxuICAgICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5jcmVhdGVGaWVsZFRlbXBsYXRlcygpO1xuICAgIH1cblxuICAgIHRoaXMuX2xhc3RDb250ZXh0ID0geyAuLi50aGlzLnBhcmVudEZvcm0udmFsdWUgfTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZERlZmluaXRpb25Gb3JGaWVsZChmaWVsZCkge1xuICAgIGlmICghZmllbGQpIHJldHVybjtcbiAgICBjb25zdCBlZGl0VHlwZSA9IHRoaXMucWJzLmVkaXRUeXBlRm4oZmllbGQpO1xuICAgIC8vIERvbid0IGxvb2sgYXQgZGF0YVNwZWNpYWxpemF0aW9uIGl0IGlzIG5vIGdvb2QsIHRoaXMgbWlzc2VzIGN1cnJlbmN5LCBhbmQgcGVyY2VudFxuICAgIGNvbnN0IHsgbmFtZSwgaW5wdXRUeXBlLCBkYXRhVHlwZSwgdHlwZSB9ID0gZmllbGQ7XG4gICAgY29uc3QgZmllbGREZWZzQnlOYW1lID0gdGhpcy5xYnMuZ2V0RmllbGREZWZzQnlOYW1lKCk7XG4gICAgLy8gQ2hlY2sgRmllbGRzIGJ5IHByaW9yaXR5IGZvciBtYXRjaCBGaWVsZCBEZWZpbml0aW9uXG4gICAgY29uc3Qga2V5ID0gW25hbWUsIGVkaXRUeXBlPy50b1VwcGVyQ2FzZSgpLCAnREVGQVVMVCddLmZpbmQoKGl0KSA9PiBmaWVsZERlZnNCeU5hbWUuaGFzKGl0KSk7XG4gICAgcmV0dXJuIGZpZWxkRGVmc0J5TmFtZS5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRUZW1wbGF0ZXMoKSB7XG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMuZmluZERlZmluaXRpb25Gb3JGaWVsZCh0aGlzLmdldEZpZWxkKCkpO1xuXG4gICAgaWYgKCF0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnZhbHVlKSB7XG4gICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKGRlZmluaXRpb24uZGVmYXVsdE9wZXJhdG9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmNyZWF0ZUZpZWxkT3BlcmF0b3JzKGRlZmluaXRpb24pO1xuICAgIHRoaXMuY3JlYXRlRmllbGRJbnB1dChkZWZpbml0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRPcGVyYXRvcnMoZGVmaW5pdGlvbjogQmFzZUNvbmRpdGlvbkZpZWxkRGVmKSB7XG4gICAgdGhpcy5fb3BlcmF0b3JPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0geyAkaW1wbGljaXQ6IHRoaXMucGFyZW50Rm9ybSwgZmllbGRNZXRhOiB0aGlzLmdldEZpZWxkKCkgfTtcbiAgICAgIHRoaXMuX29wZXJhdG9yT3V0bGV0LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGRlZmluaXRpb24uZmllbGRPcGVyYXRvcnMudGVtcGxhdGUsIGNvbnRleHQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRJbnB1dChkZWZpbml0aW9uOiBCYXNlQ29uZGl0aW9uRmllbGREZWYpIHtcbiAgICB0aGlzLl9pbnB1dE91dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7ICRpbXBsaWNpdDogdGhpcy5wYXJlbnRGb3JtLCBmaWVsZE1ldGE6IHRoaXMuZ2V0RmllbGQoKSwgdmlld0luZGV4OiB0aGlzLmdyb3VwSW5kZXgudG9TdHJpbmcoKSArIHRoaXMuYW5kSW5kZXgudG9TdHJpbmcoKSB9O1xuICAgICAgdGhpcy5faW5wdXRPdXRsZXQudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZGVmaW5pdGlvbi5maWVsZElucHV0LnRlbXBsYXRlLCBjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwicGFyZW50Rm9ybVwiPlxuICA8bm92by1ncmlkIGdhcD1cIjFyZW1cIiBbY29sdW1uc109XCJpc0ZpcnN0ID8gJzIwcmVtIDEzcmVtIDFmcicgOiAnMTZyZW0gMTNyZW0gMWZyJ1wiIGFsaWduPVwiZW5kXCI+XG4gICAgPG5vdm8tZmllbGQgY2xhc3M9XCJjb25kaXRpb24tZmllbGRcIj5cbiAgICAgIDxub3ZvLXNlbGVjdFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLmNob29zZUFGaWVsZFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpZWxkXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmllbGRTZWxlY3QoKVwiXG4gICAgICAgIG92ZXJsYXlXaWR0aD1cIjI0cmVtXCJcbiAgICAgICAgb3ZlcmxheUhlaWdodD1cIjIwcmVtXCJcbiAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImZpZWxkRGlzcGxheVdpdGhcIlxuICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiMTYwXCJcbiAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImlzRmlyc3QgPyAyMDAgOiAxNjBcIj5cbiAgICAgICAgPG5vdm8tb3B0Z3JvdXAgY2xhc3M9XCJmaWx0ZXItc2VhcmNoLXJlc3VsdHNcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24+XG4gICAgICAgICAgICA8bm92by1zZWxlY3Qtc2VhcmNoIFtmb3JtQ29udHJvbF09XCJzZWFyY2hUZXJtXCIgW2NsZWFyU2VhcmNoSW5wdXRdPVwiZmFsc2VcIj48L25vdm8tc2VsZWN0LXNlYXJjaD5cbiAgICAgICAgICA8L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHRzJCB8IGFzeW5jIGFzIHJlc3VsdHM7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdHMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxub3ZvLW9wdGlvbiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcmVzdWx0c1wiIHZhbHVlPVwie3sgZmllbGQubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCB8fCBmaWVsZC5uYW1lIH19XG4gICAgICAgICAgICAgIDwvbm92by1vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9ub3ZvLW9wdGdyb3VwPlxuICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICA8L25vdm8tZmllbGQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLW9wZXJhdG9yXCI+XG4gICAgICA8bmctY29udGFpbmVyIGNvbmRpdGlvbk9wZXJhdG9yT3V0bGV0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbmRpdGlvbi1pbnB1dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBjb25kaXRpb25JbnB1dE91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9ub3ZvLWdyaWQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZm9ybT5cblxuPCEtLSBFTVBUWSBTVEFURSBURU1QTEFURSAtLT5cbjwhLS0gPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgPG5vdm8tbm9uLWlkZWFsLXN0YXRlPlxuICAgIDxub3ZvLWljb24gc2l6ZT1cInhsXCIgY29sb3I9XCJncmFwZWZydWl0XCI+c2VhcmNoPC9ub3ZvLWljb24+XG4gICAgPG5vdm8tdGl0bGU+Tm8gcmVzdWx0cyBmb3VuZC48L25vdm8tdGl0bGU+XG4gICAgPG5vdm8tdGV4dD5Zb3VyIHNlYXJjaCBkaWRuJ3QgZmluZCBhbnl0aGluZy4gVHJ5IHNlYXJjaGluZyBmb3Igc29tZXRoaW5nIGVsc2UuPC9ub3ZvLXRleHQ+XG4gIDwvbm92by1ub24taWRlYWwtc3RhdGU+XG48L25nLXRlbXBsYXRlPiAtLT5cblxuPCEtLSBMT0FESU5HIFRFTVBMQVRFIC0tPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8bm92by1sb2FkaW5nPjwvbm92by1sb2FkaW5nPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
package/esm2020/src/elements/query-builder/condition-definitions/abstract-condition.definition.mjs
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Directive, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { NovoLabelService } from '../../../services';
|
|
3
|
+
import { NovoConditionFieldDef } from '../query-builder.directives';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../services";
|
|
6
|
+
export class AbstractConditionFieldDef {
|
|
7
|
+
constructor(labels) {
|
|
8
|
+
this.labels = labels;
|
|
9
|
+
}
|
|
10
|
+
/** Column name that should be used to reference this column. */
|
|
11
|
+
get name() {
|
|
12
|
+
return this._name;
|
|
13
|
+
}
|
|
14
|
+
set name(name) {
|
|
15
|
+
this._name = name;
|
|
16
|
+
// With Ivy, inputs can be initialized before static query results are
|
|
17
|
+
// available. In that case, we defer the synchronization until "ngOnInit" fires.
|
|
18
|
+
this._syncFieldDefName();
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this._syncFieldDefName();
|
|
22
|
+
this._syncFieldDefOperatorValue();
|
|
23
|
+
// Need to add self to FilterBuilder because "ContentChildren won't find it"
|
|
24
|
+
this.fieldDef?.register();
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
this.fieldDef?.unregister();
|
|
28
|
+
}
|
|
29
|
+
/** Synchronizes the column definition name with the text column name. */
|
|
30
|
+
_syncFieldDefName() {
|
|
31
|
+
if (this.fieldDef) {
|
|
32
|
+
this.fieldDef.name = this.name;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
_syncFieldDefOperatorValue() {
|
|
36
|
+
if (this.fieldDef) {
|
|
37
|
+
this.fieldDef.defaultOperator = this.defaultOperator;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
AbstractConditionFieldDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractConditionFieldDef, deps: [{ token: i1.NovoLabelService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
42
|
+
AbstractConditionFieldDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: AbstractConditionFieldDef, inputs: { name: "name" }, viewQueries: [{ propertyName: "fieldDef", first: true, predicate: NovoConditionFieldDef, descendants: true, static: true }], ngImport: i0 });
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractConditionFieldDef, decorators: [{
|
|
44
|
+
type: Directive
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.NovoLabelService }]; }, propDecorators: { name: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], fieldDef: [{
|
|
48
|
+
type: ViewChild,
|
|
49
|
+
args: [NovoConditionFieldDef, { static: true }]
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9hYnN0cmFjdC1jb25kaXRpb24uZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFHcEUsTUFBTSxPQUFnQix5QkFBeUI7SUFrQjdDLFlBQW1CLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBQUcsQ0FBQztJQWpCL0MsZ0VBQWdFO0lBQ2hFLElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixzRUFBc0U7UUFDdEUsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFTRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCx5RUFBeUU7SUFDakUsaUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUN0RDtJQUNILENBQUM7O3VIQTFDbUIseUJBQXlCOzJHQUF6Qix5QkFBeUIsOEZBZ0JsQyxxQkFBcUI7NEZBaEJaLHlCQUF5QjtrQkFEOUMsU0FBUzt1R0FJSixJQUFJO3NCQURQLEtBQUs7Z0JBYzhDLFFBQVE7c0JBQTNELFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE5vdm9Db25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4uL3F1ZXJ5LWJ1aWxkZXIuZGlyZWN0aXZlcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29uZGl0aW9uRmllbGREZWYgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIC8qKiBDb2x1bW4gbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIGNvbHVtbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAvLyBXaXRoIEl2eSwgaW5wdXRzIGNhbiBiZSBpbml0aWFsaXplZCBiZWZvcmUgc3RhdGljIHF1ZXJ5IHJlc3VsdHMgYXJlXG4gICAgLy8gYXZhaWxhYmxlLiBJbiB0aGF0IGNhc2UsIHdlIGRlZmVyIHRoZSBzeW5jaHJvbml6YXRpb24gdW50aWwgXCJuZ09uSW5pdFwiIGZpcmVzLlxuICAgIHRoaXMuX3N5bmNGaWVsZERlZk5hbWUoKTtcbiAgfVxuICBfbmFtZTogc3RyaW5nO1xuXG4gIGRlZmF1bHRPcGVyYXRvcjogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoTm92b0NvbmRpdGlvbkZpZWxkRGVmLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWVsZERlZjogTm92b0NvbmRpdGlvbkZpZWxkRGVmO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3luY0ZpZWxkRGVmTmFtZSgpO1xuICAgIHRoaXMuX3N5bmNGaWVsZERlZk9wZXJhdG9yVmFsdWUoKTtcbiAgICAvLyBOZWVkIHRvIGFkZCBzZWxmIHRvIEZpbHRlckJ1aWxkZXIgYmVjYXVzZSBcIkNvbnRlbnRDaGlsZHJlbiB3b24ndCBmaW5kIGl0XCJcbiAgICB0aGlzLmZpZWxkRGVmPy5yZWdpc3RlcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5maWVsZERlZj8udW5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqIFN5bmNocm9uaXplcyB0aGUgY29sdW1uIGRlZmluaXRpb24gbmFtZSB3aXRoIHRoZSB0ZXh0IGNvbHVtbiBuYW1lLiAqL1xuICBwcml2YXRlIF9zeW5jRmllbGREZWZOYW1lKCkge1xuICAgIGlmICh0aGlzLmZpZWxkRGVmKSB7XG4gICAgICB0aGlzLmZpZWxkRGVmLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0ZpZWxkRGVmT3BlcmF0b3JWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5maWVsZERlZikge1xuICAgICAgdGhpcy5maWVsZERlZi5kZWZhdWx0T3BlcmF0b3IgPSB0aGlzLmRlZmF1bHRPcGVyYXRvcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2020/src/elements/query-builder/condition-definitions/address-condition.definition.mjs
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { AbstractConditionFieldDef } from './abstract-condition.definition';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../field/field";
|
|
5
|
+
import * as i2 from "../../select/Select";
|
|
6
|
+
import * as i3 from "../../common/option/option.component";
|
|
7
|
+
import * as i4 from "../query-builder.directives";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
/**
|
|
10
|
+
* Handle selection of field values when a list of options is provided.
|
|
11
|
+
*/
|
|
12
|
+
export class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.defaultOperator = 'includeAny';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
NovoDefaultAddressConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
NovoDefaultAddressConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultAddressConditionDef, selector: "novo-address-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
20
|
+
<ng-container novoConditionFieldDef>
|
|
21
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
22
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
23
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
24
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
25
|
+
<novo-option value="radius">{{ labels.radius }}</novo-option>
|
|
26
|
+
</novo-select>
|
|
27
|
+
</novo-field>
|
|
28
|
+
<novo-field *novoConditionInputDef="let formGroup; fieldMeta as meta" [formGroup]="formGroup">
|
|
29
|
+
<novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
|
|
30
|
+
</novo-field>
|
|
31
|
+
</ng-container>
|
|
32
|
+
`, isInline: true, components: [{ type: i1.NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: i2.NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: i3.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }], directives: [{ type: i4.NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: i4.NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NovoConditionInputDef, selector: "[novoConditionInputDef]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'novo-address-condition-def',
|
|
37
|
+
template: `
|
|
38
|
+
<ng-container novoConditionFieldDef>
|
|
39
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
40
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
41
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
42
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
43
|
+
<novo-option value="radius">{{ labels.radius }}</novo-option>
|
|
44
|
+
</novo-select>
|
|
45
|
+
</novo-field>
|
|
46
|
+
<novo-field *novoConditionInputDef="let formGroup; fieldMeta as meta" [formGroup]="formGroup">
|
|
47
|
+
<novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
|
|
48
|
+
</novo-field>
|
|
49
|
+
</ng-container>
|
|
50
|
+
`,
|
|
51
|
+
encapsulation: ViewEncapsulation.None,
|
|
52
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
53
|
+
}]
|
|
54
|
+
}] });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1jb25kaXRpb24uZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWRlZmluaXRpb25zL2FkZHJlc3MtY29uZGl0aW9uLmRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQUU1RTs7R0FFRztBQW9CSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEseUJBQXlCO0lBbkI3RTs7UUFvQkUsb0JBQWUsR0FBRyxZQUFZLENBQUM7S0FDaEM7OzRIQUZZLDhCQUE4QjtnSEFBOUIsOEJBQThCLHlGQWpCL0I7Ozs7Ozs7Ozs7Ozs7R0FhVDs0RkFJVSw4QkFBOEI7a0JBbkIxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4vYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuXG4vKipcbiAqIEhhbmRsZSBzZWxlY3Rpb24gb2YgZmllbGQgdmFsdWVzIHdoZW4gYSBsaXN0IG9mIG9wdGlvbnMgaXMgcHJvdmlkZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tYWRkcmVzcy1jb25kaXRpb24tZGVmJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIG5vdm9Db25kaXRpb25GaWVsZERlZj5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmPVwibGV0IGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxub3ZvLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLm9wZXJhdG9yXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlcmF0b3JcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJpbmNsdWRlQW55XCI+e3sgbGFiZWxzLmluY2x1ZGVBbnkgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImV4Y2x1ZGVBbnlcIj57eyBsYWJlbHMuZXhjbHVkZSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwicmFkaXVzXCI+e3sgbGFiZWxzLnJhZGl1cyB9fTwvbm92by1vcHRpb24+XG4gICAgICAgIDwvbm92by1zZWxlY3Q+XG4gICAgICA8L25vdm8tZmllbGQ+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbklucHV0RGVmPVwibGV0IGZvcm1Hcm91cDsgZmllbGRNZXRhIGFzIG1ldGFcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLnNlbGVjdFwiIFttdWx0aXBsZV09XCJ0cnVlXCI+IDwvbm92by1zZWxlY3Q+XG4gICAgICA8L25vdm8tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0RlZmF1bHRBZGRyZXNzQ29uZGl0aW9uRGVmIGV4dGVuZHMgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB7XG4gIGRlZmF1bHRPcGVyYXRvciA9ICdpbmNsdWRlQW55Jztcbn1cbiJdfQ==
|
package/esm2020/src/elements/query-builder/condition-definitions/boolean-condition.definition.mjs
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { AbstractConditionFieldDef } from './abstract-condition.definition';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../field/field";
|
|
5
|
+
import * as i2 from "../../select/Select";
|
|
6
|
+
import * as i3 from "../../common/option/option.component";
|
|
7
|
+
import * as i4 from "../query-builder.directives";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
/**
|
|
10
|
+
* When constructing a query using a field that is a boolean with only true/false as possible values.
|
|
11
|
+
*/
|
|
12
|
+
export class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.defaultOperator = 'include';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
NovoDefaultBooleanConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultBooleanConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
NovoDefaultBooleanConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultBooleanConditionDef, selector: "novo-boolean-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
20
|
+
<ng-container novoConditionFieldDef>
|
|
21
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
22
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
23
|
+
<novo-option value="include">{{ labels.equals }}</novo-option>
|
|
24
|
+
<novo-option value="exclude">{{ labels.doesNotEqual }}</novo-option>
|
|
25
|
+
</novo-select>
|
|
26
|
+
</novo-field>
|
|
27
|
+
<novo-field *novoConditionInputDef="let formGroup" [style.width.px]="100" [formGroup]="formGroup">
|
|
28
|
+
<novo-select [placeholder]="labels.value" formControlName="value">
|
|
29
|
+
<novo-option [value]="true">{{ labels.true }}</novo-option>
|
|
30
|
+
<novo-option [value]="false">{{ labels.false }}</novo-option>
|
|
31
|
+
</novo-select>
|
|
32
|
+
</novo-field>
|
|
33
|
+
</ng-container>
|
|
34
|
+
`, isInline: true, components: [{ type: i1.NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: i2.NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: i3.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }], directives: [{ type: i4.NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: i4.NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NovoConditionInputDef, selector: "[novoConditionInputDef]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultBooleanConditionDef, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{
|
|
38
|
+
selector: 'novo-boolean-condition-def',
|
|
39
|
+
template: `
|
|
40
|
+
<ng-container novoConditionFieldDef>
|
|
41
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
42
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
43
|
+
<novo-option value="include">{{ labels.equals }}</novo-option>
|
|
44
|
+
<novo-option value="exclude">{{ labels.doesNotEqual }}</novo-option>
|
|
45
|
+
</novo-select>
|
|
46
|
+
</novo-field>
|
|
47
|
+
<novo-field *novoConditionInputDef="let formGroup" [style.width.px]="100" [formGroup]="formGroup">
|
|
48
|
+
<novo-select [placeholder]="labels.value" formControlName="value">
|
|
49
|
+
<novo-option [value]="true">{{ labels.true }}</novo-option>
|
|
50
|
+
<novo-option [value]="false">{{ labels.false }}</novo-option>
|
|
51
|
+
</novo-select>
|
|
52
|
+
</novo-field>
|
|
53
|
+
</ng-container>
|
|
54
|
+
`,
|
|
55
|
+
encapsulation: ViewEncapsulation.None,
|
|
56
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
57
|
+
}]
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1jb25kaXRpb24uZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWRlZmluaXRpb25zL2Jvb2xlYW4tY29uZGl0aW9uLmRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQUU1RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEseUJBQXlCO0lBckI3RTs7UUFzQkUsb0JBQWUsR0FBRyxTQUFTLENBQUM7S0FDN0I7OzRIQUZZLDhCQUE4QjtnSEFBOUIsOEJBQThCLHlGQW5CL0I7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzRGQUlVLDhCQUE4QjtrQkFyQjFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7R0FlVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuL2Fic3RyYWN0LWNvbmRpdGlvbi5kZWZpbml0aW9uJztcblxuLyoqXG4gKiBXaGVuIGNvbnN0cnVjdGluZyBhIHF1ZXJ5IHVzaW5nIGEgZmllbGQgdGhhdCBpcyBhIGJvb2xlYW4gd2l0aCBvbmx5IHRydWUvZmFsc2UgYXMgcG9zc2libGUgdmFsdWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWJvb2xlYW4tY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5vcGVyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCI+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiaW5jbHVkZVwiPnt7IGxhYmVscy5lcXVhbHMgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImV4Y2x1ZGVcIj57eyBsYWJlbHMuZG9lc05vdEVxdWFsIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICAgIDwvbm92by1maWVsZD5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uSW5wdXREZWY9XCJsZXQgZm9ybUdyb3VwXCIgW3N0eWxlLndpZHRoLnB4XT1cIjEwMFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxub3ZvLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLnZhbHVlXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24gW3ZhbHVlXT1cInRydWVcIj57eyBsYWJlbHMudHJ1ZSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIFt2YWx1ZV09XCJmYWxzZVwiPnt7IGxhYmVscy5mYWxzZSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgIDwvbm92by1zZWxlY3Q+XG4gICAgICA8L25vdm8tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0RlZmF1bHRCb29sZWFuQ29uZGl0aW9uRGVmIGV4dGVuZHMgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB7XG4gIGRlZmF1bHRPcGVyYXRvciA9ICdpbmNsdWRlJztcbn1cbiJdfQ==
|