novo-elements 7.3.0-next.4 → 7.4.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +15 -3
- 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 +1925 -261
- package/fesm2015/novo-elements.mjs.map +1 -1
- package/fesm2020/novo-elements.mjs +1915 -261
- 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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { ControlContainer, FormBuilder, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
3
|
+
import { merge, Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { QueryBuilderService } from '../query-builder.service';
|
|
6
|
+
import { Conjunction } from '../query-builder.types';
|
|
7
|
+
import { NovoLabelService } from '../../../services/novo-label-service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../query-builder.service";
|
|
10
|
+
import * as i2 from "../../../services/novo-label-service";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
import * as i4 from "../../flex/Flex";
|
|
13
|
+
import * as i5 from "../../dropdown/Dropdown";
|
|
14
|
+
import * as i6 from "../../button/Button";
|
|
15
|
+
import * as i7 from "../../common/option/optgroup.component";
|
|
16
|
+
import * as i8 from "../../common/option/option.component";
|
|
17
|
+
import * as i9 from "../../common/typography/label/label.component";
|
|
18
|
+
import * as i10 from "../condition-builder/condition-builder.component";
|
|
19
|
+
import * as i11 from "../../common/directives/space.directive";
|
|
20
|
+
import * as i12 from "@angular/common";
|
|
21
|
+
import * as i13 from "../../common/directives/theme.directive";
|
|
22
|
+
const EMPTY_CONDITION = {
|
|
23
|
+
field: null,
|
|
24
|
+
operator: null,
|
|
25
|
+
value: null,
|
|
26
|
+
};
|
|
27
|
+
export class ConditionGroupComponent {
|
|
28
|
+
constructor(qbs, labels, controlContainer, formBuilder, cdr) {
|
|
29
|
+
this.qbs = qbs;
|
|
30
|
+
this.labels = labels;
|
|
31
|
+
this.controlContainer = controlContainer;
|
|
32
|
+
this.formBuilder = formBuilder;
|
|
33
|
+
this.cdr = cdr;
|
|
34
|
+
this.controlName = '$' + Conjunction.AND;
|
|
35
|
+
/** Subject that emits when the component has been destroyed. */
|
|
36
|
+
this._onDestroy = new Subject();
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
this.parentForm = this.controlContainer.control;
|
|
40
|
+
this.controlName = Object.keys(this.parentForm.controls)[0];
|
|
41
|
+
merge(this.parentForm.parent.valueChanges, this.qbs.stateChanges)
|
|
42
|
+
.pipe(takeUntil(this._onDestroy))
|
|
43
|
+
.subscribe(() => this.cdr.markForCheck());
|
|
44
|
+
}
|
|
45
|
+
ngOnDestroy() {
|
|
46
|
+
this._onDestroy.next();
|
|
47
|
+
this._onDestroy.complete();
|
|
48
|
+
}
|
|
49
|
+
updateControlName(value) {
|
|
50
|
+
const name = `$${value.replace('$', '')}`;
|
|
51
|
+
if (name !== this.controlName) {
|
|
52
|
+
const current = this.parentForm.get(this.controlName).value;
|
|
53
|
+
this.parentForm.controls[name] = this.parentForm.controls[this.controlName];
|
|
54
|
+
delete this.parentForm.controls[this.controlName];
|
|
55
|
+
this.controlName = name;
|
|
56
|
+
this.parentForm.get(this.controlName).setValue(current);
|
|
57
|
+
this.cdr.markForCheck();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
get root() {
|
|
61
|
+
return this.parentForm.get(this.controlName);
|
|
62
|
+
}
|
|
63
|
+
addCondition(data) {
|
|
64
|
+
const conditon = this.newCondition(data);
|
|
65
|
+
this.root.push(conditon);
|
|
66
|
+
this.cdr.markForCheck();
|
|
67
|
+
}
|
|
68
|
+
removeCondition(index) {
|
|
69
|
+
this.root.removeAt(index);
|
|
70
|
+
this.cdr.markForCheck();
|
|
71
|
+
}
|
|
72
|
+
newCondition({ field, operator, value } = EMPTY_CONDITION) {
|
|
73
|
+
return this.formBuilder.group({
|
|
74
|
+
field: [field, Validators.required],
|
|
75
|
+
operator: [operator, Validators.required],
|
|
76
|
+
value: [value, Validators.required],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
cantRemoveRow(isFirst) {
|
|
80
|
+
if (this.parentForm.parent.length > 1)
|
|
81
|
+
return false;
|
|
82
|
+
return this.root.length <= 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
ConditionGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionGroupComponent, deps: [{ token: i1.QueryBuilderService }, { token: i2.NovoLabelService }, { token: i3.ControlContainer }, { token: i3.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
+
ConditionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ConditionGroupComponent, selector: "novo-condition-group", inputs: { controlName: "controlName", groupIndex: "groupIndex" }, host: { classAttribute: "novo-condition-group" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }], ngImport: i0, template: "<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" align=\"end\" gap=\"sm\">\n <novo-dropdown *ngIf=\"!isFirst && qbs.allowedGroupings.length > 1; else labeledGroup\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [isFirst]=\"isFirst\"></novo-condition-builder>\n <novo-button theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\"\n [disabled]=\"cantRemoveRow(isFirst)\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button theme=\"dialogue\" data-automation-id=\"add-advanced-search-condition\" icon=\"add-thin\" side=\"left\" size=\"sm\" uppercase padding=\"sm\" (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n\n\n <!-- <button class=\"and-or-button\" theme=\"secondary\" size=\"sm\" (click)=\"addRootCondition()\">{{ addCriteriaLabel }}</button> -->\n</div>", styles: [":host{position:relative;display:block;border:1px solid var(--border);border-radius:var(--border-radius-round);padding:var(--spacing-md);width:100%}:host .condition-row{width:100%}\n"], components: [{ type: i4.NovoStackElement, selector: "novo-stack,novo-column", inputs: ["direction", "align"] }, { type: i4.NovoFlexElement, selector: "novo-flex,novo-row", inputs: ["direction", "align", "justify", "wrap", "gap"] }, { type: i5.NovoDropdownElement, selector: "novo-dropdown", inputs: ["parentScrollSelector", "parentScrollAction", "containerClass", "side", "scrollStrategy", "keepOpen", "height", "width", "appendToBody", "multiple"], outputs: ["toggled"] }, { type: i6.NovoButtonElement, selector: "novo-button,button[theme]", inputs: ["color", "side", "size", "theme", "loading", "icon", "disabled"] }, { 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.NovoLabel, selector: "novo-label,[novo-label]" }, { type: i10.ConditionBuilderComponent, selector: "novo-condition-builder", inputs: ["label", "isFirst", "andIndex", "groupIndex"] }], directives: [{ 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.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.ThemeColorDirective, selector: "[theme]", inputs: ["theme"] }, { type: i11.PaddingDirective, selector: "[p],[padding],[paddingTop],[paddingRight],[paddingBottom],[paddingLeft],[paddingX],[paddingY],[pt],[pr],[pb],[pl],[px],[py]", inputs: ["padding", "p", "paddingLeft", "pl", "paddingRight", "pr", "paddingTop", "pt", "paddingBottom", "pb", "paddingX", "px", "paddingY", "py"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionGroupComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'novo-condition-group', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }], host: {
|
|
90
|
+
class: 'novo-condition-group',
|
|
91
|
+
}, template: "<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" align=\"end\" gap=\"sm\">\n <novo-dropdown *ngIf=\"!isFirst && qbs.allowedGroupings.length > 1; else labeledGroup\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [isFirst]=\"isFirst\"></novo-condition-builder>\n <novo-button theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\"\n [disabled]=\"cantRemoveRow(isFirst)\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button theme=\"dialogue\" data-automation-id=\"add-advanced-search-condition\" icon=\"add-thin\" side=\"left\" size=\"sm\" uppercase padding=\"sm\" (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n\n\n <!-- <button class=\"and-or-button\" theme=\"secondary\" size=\"sm\" (click)=\"addRootCondition()\">{{ addCriteriaLabel }}</button> -->\n</div>", styles: [":host{position:relative;display:block;border:1px solid var(--border);border-radius:var(--border-radius-round);padding:var(--spacing-md);width:100%}:host .condition-row{width:100%}\n"] }]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i1.QueryBuilderService }, { type: i2.NovoLabelService }, { type: i3.ControlContainer }, { type: i3.FormBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { controlName: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], groupIndex: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}] } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWdyb3VwL2NvbmRpdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1ncm91cC9jb25kaXRpb24tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWEsV0FBVyxFQUFhLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUV4RSxNQUFNLGVBQWUsR0FBYztJQUNqQyxLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBV0YsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUNTLEdBQXdCLEVBQ3hCLE1BQXdCLEVBQ3ZCLGdCQUFrQyxF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LFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDekMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixJQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7O3FIQXBFVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixtS0FMdkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLDBCQ2xCbEgsMjBEQThCTTs0RkRQTyx1QkFBdUI7a0JBVm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUMxRzt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5QjtrT0FHUSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZGl0aW9uLCBDb25qdW5jdGlvbiB9IGZyb20gJy4uL3F1ZXJ5LWJ1aWxkZXIudHlwZXMnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdm8tbGFiZWwtc2VydmljZSc7XG5cbmNvbnN0IEVNUFRZX0NPTkRJVElPTjogQ29uZGl0aW9uID0ge1xuICBmaWVsZDogbnVsbCxcbiAgb3BlcmF0b3I6IG51bGwsXG4gIHZhbHVlOiBudWxsLFxufTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tY29uZGl0aW9uLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmRpdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmRpdGlvbi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29uZGl0aW9uR3JvdXBDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbm92by1jb25kaXRpb24tZ3JvdXAnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY29udHJvbE5hbWU6IHN0cmluZyA9ICckJyArIENvbmp1bmN0aW9uLkFORDtcbiAgQElucHV0KCkgZ3JvdXBJbmRleDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwYXJlbnRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBpbm5lckZvcm06IEZvcm1Hcm91cDtcbiAgLyoqIFN1YmplY3QgdGhhdCBlbWl0cyB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gZGVzdHJveWVkLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBxYnM6IFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHVibGljIGxhYmVsczogTm92b0xhYmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXJlbnRGb3JtID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICAgIHRoaXMuY29udHJvbE5hbWUgPSBPYmplY3Qua2V5cyh0aGlzLnBhcmVudEZvcm0uY29udHJvbHMpWzBdO1xuICAgIG1lcmdlKHRoaXMucGFyZW50Rm9ybS5wYXJlbnQudmFsdWVDaGFuZ2VzLCB0aGlzLnFicy5zdGF0ZUNoYW5nZXMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbnRyb2xOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuYW1lID0gYCQke3ZhbHVlLnJlcGxhY2UoJyQnLCAnJyl9YDtcbiAgICBpZiAobmFtZSAhPT0gdGhpcy5jb250cm9sTmFtZSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMucGFyZW50Rm9ybS5nZXQodGhpcy5jb250cm9sTmFtZSkudmFsdWU7XG4gICAgICB0aGlzLnBhcmVudEZvcm0uY29udHJvbHNbbmFtZV0gPSB0aGlzLnBhcmVudEZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sTmFtZV07XG4gICAgICBkZWxldGUgdGhpcy5wYXJlbnRGb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbE5hbWVdO1xuICAgICAgdGhpcy5jb250cm9sTmFtZSA9IG5hbWU7XG4gICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KHRoaXMuY29udHJvbE5hbWUpLnNldFZhbHVlKGN1cnJlbnQpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvb3QoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRGb3JtLmdldCh0aGlzLmNvbnRyb2xOYW1lKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBhZGRDb25kaXRpb24oZGF0YT86IGFueSkge1xuICAgIGNvbnN0IGNvbmRpdG9uID0gdGhpcy5uZXdDb25kaXRpb24oZGF0YSk7XG4gICAgdGhpcy5yb290LnB1c2goY29uZGl0b24pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnJvb3QucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmV3Q29uZGl0aW9uKHsgZmllbGQsIG9wZXJhdG9yLCB2YWx1ZSB9OiBDb25kaXRpb24gPSBFTVBUWV9DT05ESVRJT04pOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGZpZWxkOiBbZmllbGQsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb3BlcmF0b3I6IFtvcGVyYXRvciwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZTogW3ZhbHVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbnRSZW1vdmVSb3coaXNGaXJzdDogYm9vbGVhbikge1xuICAgIGlmICgodGhpcy5wYXJlbnRGb3JtLnBhcmVudCBhcyBGb3JtQXJyYXkpLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5yb290Lmxlbmd0aCA8PSAxO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwicGFyZW50Rm9ybVwiIGNsYXNzPVwiY29uZGl0aW9uLWdyb3VwLWNvbnRhaW5lclwiPlxuICA8bm92by1zdGFjayBbZm9ybUFycmF5TmFtZV09XCJjb250cm9sTmFtZVwiIGdhcD1cIm1kXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGFuZEdyb3VwIG9mIHJvb3QuY29udHJvbHM7IGxldCBhbmRJbmRleCA9IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0O2xldCBpc0xhc3QgPSBsYXN0O1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJhbmRJbmRleFwiPlxuICAgICAgICA8bm92by1mbGV4IGNsYXNzPVwiY29uZGl0aW9uLXJvd1wiIGFsaWduPVwiZW5kXCIgZ2FwPVwic21cIj5cbiAgICAgICAgICA8bm92by1kcm9wZG93biAqbmdJZj1cIiFpc0ZpcnN0ICYmIHFicy5hbGxvd2VkR3JvdXBpbmdzLmxlbmd0aCA+IDE7IGVsc2UgbGFiZWxlZEdyb3VwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHRoZW1lPVwiZGlhbG9ndWVcIiBpY29uPVwiY29sbGFwc2VcIiBzaXplPVwic21cIj57e3Ficy5nZXRDb25qdW5jdGlvbkxhYmVsKGNvbnRyb2xOYW1lKX19PC9idXR0b24+XG4gICAgICAgICAgICA8bm92by1vcHRncm91cD5cbiAgICAgICAgICAgICAgPG5vdm8tb3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIHFicy5hbGxvd2VkR3JvdXBpbmdzXCIgKGNsaWNrKT1cInVwZGF0ZUNvbnRyb2xOYW1lKGMpXCI+XG4gICAgICAgICAgICAgICAge3txYnMuZ2V0Q29uanVuY3Rpb25MYWJlbChjKX19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICAgIDwvbm92by1vcHRncm91cD5cbiAgICAgICAgICA8L25vdm8tZHJvcGRvd24+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbGVkR3JvdXA+XG4gICAgICAgICAgICA8bm92by1sYWJlbCAqbmdJZj1cIiFpc0ZpcnN0XCIgY29sb3I9XCJhc2hcIiBzaXplPVwieHNcIiB1cHBlcmNhc2UgcGFkZGluZz1cInNtXCI+XG4gICAgICAgICAgICAgIHt7cWJzLmdldENvbmp1bmN0aW9uTGFiZWwoY29udHJvbE5hbWUpfX08L25vdm8tbGFiZWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bm92by1jb25kaXRpb24tYnVpbGRlciBbZ3JvdXBJbmRleF09XCJncm91cEluZGV4XCIgW2FuZEluZGV4XT1cImFuZEluZGV4XCIgW2lzRmlyc3RdPVwiaXNGaXJzdFwiPjwvbm92by1jb25kaXRpb24tYnVpbGRlcj5cbiAgICAgICAgICA8bm92by1idXR0b24gdGhlbWU9XCJpY29uXCIgaWNvbj1cImRlbGV0ZS1vXCIgY29sb3I9XCJuZWdhdGl2ZVwiIChjbGljayk9XCJyZW1vdmVDb25kaXRpb24oYW5kSW5kZXgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYW50UmVtb3ZlUm93KGlzRmlyc3QpXCI+XG4gICAgICAgICAgPC9ub3ZvLWJ1dHRvbj5cbiAgICAgICAgPC9ub3ZvLWZsZXg+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uIHRoZW1lPVwiZGlhbG9ndWVcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGQtYWR2YW5jZWQtc2VhcmNoLWNvbmRpdGlvblwiIGljb249XCJhZGQtdGhpblwiIHNpZGU9XCJsZWZ0XCIgc2l6ZT1cInNtXCIgdXBwZXJjYXNlIHBhZGRpbmc9XCJzbVwiIChjbGljayk9XCJhZGRDb25kaXRpb24oKVwiPlxuICAgICAge3sgbGFiZWxzLmFkZENvbmRpdGlvbiB9fTwvYnV0dG9uPlxuICA8L25vdm8tc3RhY2s+XG5cblxuICA8IS0tIDxidXR0b24gY2xhc3M9XCJhbmQtb3ItYnV0dG9uXCIgdGhlbWU9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiAoY2xpY2spPVwiYWRkUm9vdENvbmRpdGlvbigpXCI+e3sgYWRkQ3JpdGVyaWFMYWJlbCB9fTwvYnV0dG9uPiAtLT5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, forwardRef, Input, QueryList, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, FormBuilder, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
3
|
+
import { interval, Subject } from 'rxjs';
|
|
4
|
+
import { debounce, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { NovoConditionFieldDef } from '../query-builder.directives';
|
|
6
|
+
import { QueryBuilderService } from '../query-builder.service';
|
|
7
|
+
import { NOVO_CRITERIA_BUILDER } from '../query-builder.tokens';
|
|
8
|
+
import { Conjunction } from '../query-builder.types';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
import * as i2 from "../query-builder.service";
|
|
12
|
+
import * as i3 from "../../flex/Flex";
|
|
13
|
+
import * as i4 from "../../common/typography/label/label.component";
|
|
14
|
+
import * as i5 from "../condition-group/condition-group.component";
|
|
15
|
+
import * as i6 from "../condition-definitions/id-condition.definition";
|
|
16
|
+
import * as i7 from "../condition-definitions/date-condition.definition";
|
|
17
|
+
import * as i8 from "../condition-definitions/string-condition.definition";
|
|
18
|
+
import * as i9 from "../condition-definitions/number-condition.definition";
|
|
19
|
+
import * as i10 from "../condition-definitions/address-condition.definition";
|
|
20
|
+
import * as i11 from "../condition-definitions/boolean-condition.definition";
|
|
21
|
+
import * as i12 from "../condition-definitions/picker-condition.definition";
|
|
22
|
+
import * as i13 from "@angular/common";
|
|
23
|
+
import * as i14 from "../../common/directives/space.directive";
|
|
24
|
+
const EMPTY_CONDITION = {
|
|
25
|
+
field: null,
|
|
26
|
+
operator: null,
|
|
27
|
+
value: null,
|
|
28
|
+
};
|
|
29
|
+
export class CriteriaBuilderComponent {
|
|
30
|
+
constructor(controlContainer, formBuilder, cdr, qbs) {
|
|
31
|
+
this.controlContainer = controlContainer;
|
|
32
|
+
this.formBuilder = formBuilder;
|
|
33
|
+
this.cdr = cdr;
|
|
34
|
+
this.qbs = qbs;
|
|
35
|
+
this.allowedGroupings = [Conjunction.AND, Conjunction.OR, Conjunction.NOT];
|
|
36
|
+
/** Subject that emits when the component has been destroyed. */
|
|
37
|
+
this._onDestroy = new Subject();
|
|
38
|
+
}
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
this.parentForm = this.controlContainer.control;
|
|
41
|
+
this.innerForm = this.formBuilder.group({
|
|
42
|
+
criteria: this.formBuilder.array([]),
|
|
43
|
+
});
|
|
44
|
+
this.parentForm.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {
|
|
45
|
+
Promise.resolve().then(() => {
|
|
46
|
+
this.setInitalValue(value[this.controlName]);
|
|
47
|
+
this.cdr.markForCheck();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
this.innerForm.valueChanges
|
|
51
|
+
.pipe(debounce(() => interval(10)), takeUntil(this._onDestroy))
|
|
52
|
+
.subscribe((value) => {
|
|
53
|
+
const result = value.criteria.filter((it, i) => {
|
|
54
|
+
const key = Object.keys(it)[0];
|
|
55
|
+
if (it[key].length === 0) {
|
|
56
|
+
this.removeConditionGroupAt(i);
|
|
57
|
+
}
|
|
58
|
+
return it[key].length > 0;
|
|
59
|
+
});
|
|
60
|
+
Promise.resolve().then(() => {
|
|
61
|
+
this.parentForm.get(this.controlName).setValue(result, { emitEvent: false });
|
|
62
|
+
this.cdr.markForCheck();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
ngAfterContentChecked() {
|
|
67
|
+
this._configureQueryBuilderService();
|
|
68
|
+
this.cdr.detectChanges();
|
|
69
|
+
}
|
|
70
|
+
ngAfterViewInit() {
|
|
71
|
+
this._registerFieldDefs();
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
this._onDestroy.next();
|
|
75
|
+
this._onDestroy.complete();
|
|
76
|
+
}
|
|
77
|
+
isConditionGroup(group) {
|
|
78
|
+
return Object.keys(group).every((key) => ['$and', '$or', '$not'].includes(key));
|
|
79
|
+
}
|
|
80
|
+
setInitalValue(value) {
|
|
81
|
+
if (value.length && this.isConditionGroup(value[0])) {
|
|
82
|
+
value.forEach((it) => this.addConditionGroup(it));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.addConditionGroup({ $and: value });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
get root() {
|
|
89
|
+
return this.innerForm.get('criteria');
|
|
90
|
+
}
|
|
91
|
+
addConditionGroup(data = { $and: [EMPTY_CONDITION] }) {
|
|
92
|
+
this.root.push(this.newConditionGroup(data));
|
|
93
|
+
this.cdr.markForCheck();
|
|
94
|
+
}
|
|
95
|
+
newConditionGroup(data) {
|
|
96
|
+
const controls = Object.entries(data).reduce((obj, [key, val]) => {
|
|
97
|
+
return {
|
|
98
|
+
...obj,
|
|
99
|
+
[key]: this.formBuilder.array(val.map((it) => this.newCondition(it))),
|
|
100
|
+
};
|
|
101
|
+
}, {});
|
|
102
|
+
return this.formBuilder.group(controls);
|
|
103
|
+
}
|
|
104
|
+
newCondition({ field, operator, value } = EMPTY_CONDITION) {
|
|
105
|
+
return this.formBuilder.group({
|
|
106
|
+
field: [field, Validators.required],
|
|
107
|
+
operator: [operator, Validators.required],
|
|
108
|
+
value: [value, Validators.required],
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
removeConditionGroupAt(index) {
|
|
112
|
+
this.root.removeAt(index, { emitEvent: false });
|
|
113
|
+
}
|
|
114
|
+
clearAllConditions() {
|
|
115
|
+
while (this.root.length) {
|
|
116
|
+
this.root.removeAt(0);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
_configureQueryBuilderService() {
|
|
120
|
+
this.qbs.config = this.config;
|
|
121
|
+
this.qbs.editTypeFn = this.editTypeFn;
|
|
122
|
+
this.qbs.allowedGroupings = this.allowedGroupings;
|
|
123
|
+
}
|
|
124
|
+
_registerFieldDefs() {
|
|
125
|
+
const defs = [...Array.from(this._contentFieldDefs)];
|
|
126
|
+
defs.forEach((fieldDef) => {
|
|
127
|
+
this.qbs.registerFieldDef(fieldDef);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
CriteriaBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CriteriaBuilderComponent, deps: [{ token: i1.ControlContainer }, { token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.QueryBuilderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
132
|
+
CriteriaBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CriteriaBuilderComponent, selector: "novo-criteria-builder", inputs: { config: "config", controlName: "controlName", allowedGroupings: "allowedGroupings", editTypeFn: "editTypeFn" }, host: { classAttribute: "novo-criteria-builder" }, providers: [
|
|
133
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },
|
|
134
|
+
{ provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },
|
|
135
|
+
{ provide: QueryBuilderService, useClass: QueryBuilderService },
|
|
136
|
+
], queries: [{ propertyName: "_contentFieldDefs", predicate: NovoConditionFieldDef, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{qbs.getConjunctionLabel('and')}}\n </novo-label>\n <novo-condition-group [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\"></novo-condition-group>\n </ng-container>\n </novo-stack>\n</form>\n<novo-id-condition-def name=\"ID\"></novo-id-condition-def>\n<novo-date-condition-def name=\"TIMESTAMP\"></novo-date-condition-def>\n<novo-string-condition-def name=\"STRING\"></novo-string-condition-def>\n<novo-number-condition-def name=\"FLOAT\"></novo-number-condition-def>\n<novo-number-condition-def name=\"INTEGER\"></novo-number-condition-def>\n<novo-number-condition-def name=\"BIGDECIMAL\"></novo-number-condition-def>\n<novo-number-condition-def name=\"DOUBLE\"></novo-number-condition-def>\n<novo-address-condition-def name=\"ADDRESS\"></novo-address-condition-def>\n<novo-boolean-condition-def name=\"BOOLEAN\"></novo-boolean-condition-def>\n<novo-picker-condition-def name=\"SELECT\"></novo-picker-condition-def>\n<novo-string-condition-def name=\"DEFAULT\"></novo-string-condition-def>\n\n<!-- \n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->", styles: [":host{position:relative;display:block;width:76rem}:host .criteria-builder-inner{padding-bottom:1rem}\n"], components: [{ type: i3.NovoStackElement, selector: "novo-stack,novo-column", inputs: ["direction", "align"] }, { type: i4.NovoLabel, selector: "novo-label,[novo-label]" }, { type: i5.ConditionGroupComponent, selector: "novo-condition-group", inputs: ["controlName", "groupIndex"] }, { type: i6.NovoDefaultIdConditionDef, selector: "novo-id-condition-def" }, { type: i7.NovoDefaultDateConditionDef, selector: "novo-date-condition-def" }, { type: i8.NovoDefaultStringConditionDef, selector: "novo-string-condition-def" }, { type: i9.NovoDefaultNumberConditionDef, selector: "novo-number-condition-def" }, { type: i10.NovoDefaultAddressConditionDef, selector: "novo-address-condition-def" }, { type: i11.NovoDefaultBooleanConditionDef, selector: "novo-boolean-condition-def" }, { type: i12.NovoDefaultPickerConditionDef, selector: "novo-picker-condition-def" }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.PaddingDirective, selector: "[p],[padding],[paddingTop],[paddingRight],[paddingBottom],[paddingLeft],[paddingX],[paddingY],[pt],[pr],[pb],[pl],[px],[py]", inputs: ["padding", "p", "paddingLeft", "pl", "paddingRight", "pr", "paddingTop", "pt", "paddingBottom", "pb", "paddingX", "px", "paddingY", "py"] }, { type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CriteriaBuilderComponent, decorators: [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'novo-criteria-builder', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
140
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CriteriaBuilderComponent), multi: true },
|
|
141
|
+
{ provide: NOVO_CRITERIA_BUILDER, useExisting: CriteriaBuilderComponent },
|
|
142
|
+
{ provide: QueryBuilderService, useClass: QueryBuilderService },
|
|
143
|
+
], host: {
|
|
144
|
+
class: 'novo-criteria-builder',
|
|
145
|
+
}, template: "<form [formGroup]=\"innerForm\">\n <novo-stack [formArrayName]=\"controlName\" class=\"criteria-builder-inner\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLastAnd = last;\">\n <novo-label *ngIf=\"!isFirst\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">{{qbs.getConjunctionLabel('and')}}\n </novo-label>\n <novo-condition-group [groupIndex]=\"andIndex\" [formGroupName]=\"andIndex\"></novo-condition-group>\n </ng-container>\n </novo-stack>\n</form>\n<novo-id-condition-def name=\"ID\"></novo-id-condition-def>\n<novo-date-condition-def name=\"TIMESTAMP\"></novo-date-condition-def>\n<novo-string-condition-def name=\"STRING\"></novo-string-condition-def>\n<novo-number-condition-def name=\"FLOAT\"></novo-number-condition-def>\n<novo-number-condition-def name=\"INTEGER\"></novo-number-condition-def>\n<novo-number-condition-def name=\"BIGDECIMAL\"></novo-number-condition-def>\n<novo-number-condition-def name=\"DOUBLE\"></novo-number-condition-def>\n<novo-address-condition-def name=\"ADDRESS\"></novo-address-condition-def>\n<novo-boolean-condition-def name=\"BOOLEAN\"></novo-boolean-condition-def>\n<novo-picker-condition-def name=\"SELECT\"></novo-picker-condition-def>\n<novo-string-condition-def name=\"DEFAULT\"></novo-string-condition-def>\n\n<!-- \n {\n $and: [{\n $or: [{\n entity: 'JobOrder'\n field: 'categories',\n operator: 'doesNotContain',\n value: 'Healthcare'\n }]\n }]\n }\n -->", styles: [":host{position:relative;display:block;width:76rem}:host .criteria-builder-inner{padding-bottom:1rem}\n"] }]
|
|
146
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }, { type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.QueryBuilderService }]; }, propDecorators: { config: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], controlName: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], allowedGroupings: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], editTypeFn: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], _contentFieldDefs: [{
|
|
155
|
+
type: ContentChildren,
|
|
156
|
+
args: [NovoConditionFieldDef, { descendants: true }]
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NyaXRlcmlhLWJ1aWxkZXIvY3JpdGVyaWEtYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NyaXRlcmlhLWJ1aWxkZXIvY3JpdGVyaWEtYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxXQUFXLEVBQWEsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQTJDLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRTlGLE1BQU0sZUFBZSxHQUFjO0lBQ2pDLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxLQUFLLEVB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QkFBbUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7cUJBQ2hFLFFBQ0s7d0JBQ0osS0FBSyxFQUFFLHVCQUF1QjtxQkFDL0I7bU1BR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRXlELGlCQUFpQjtzQkFBL0UsZUFBZTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb3ZvQ29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uL3F1ZXJ5LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOT1ZPX0NSSVRFUklBX0JVSUxERVIgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnRva2Vucyc7XG5pbXBvcnQgeyBCYXNlRmllbGREZWYsIENvbmRpdGlvbiwgQ29uZGl0aW9uR3JvdXAsIENvbmp1bmN0aW9uIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5cbmNvbnN0IEVNUFRZX0NPTkRJVElPTjogQ29uZGl0aW9uID0ge1xuICBmaWVsZDogbnVsbCxcbiAgb3BlcmF0b3I6IG51bGwsXG4gIHZhbHVlOiBudWxsLFxufTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tY3JpdGVyaWEtYnVpbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JpdGVyaWEtYnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3JpdGVyaWFCdWlsZGVyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5PVk9fQ1JJVEVSSUFfQlVJTERFUiwgdXNlRXhpc3Rpbmc6IENyaXRlcmlhQnVpbGRlckNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogUXVlcnlCdWlsZGVyU2VydmljZSwgdXNlQ2xhc3M6IFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbm92by1jcml0ZXJpYS1idWlsZGVyJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JpdGVyaWFCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgQElucHV0KCkgY29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dlZEdyb3VwaW5ncyA9IFtDb25qdW5jdGlvbi5BTkQsIENvbmp1bmN0aW9uLk9SLCBDb25qdW5jdGlvbi5OT1RdO1xuICBASW5wdXQoKSBlZGl0VHlwZUZuOiAoZmllbGQ6IEJhc2VGaWVsZERlZikgPT4gc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTm92b0NvbmRpdGlvbkZpZWxkRGVmLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9jb250ZW50RmllbGREZWZzOiBRdWVyeUxpc3Q8Tm92b0NvbmRpdGlvbkZpZWxkRGVmPjtcblxuICBwdWJsaWMgcGFyZW50Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgaW5uZXJGb3JtOiBGb3JtR3JvdXA7XG4gIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBxYnM6IFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcmVudEZvcm0gPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5pbm5lckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGNyaXRlcmlhOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKSxcbiAgICB9KTtcblxuICAgIHRoaXMucGFyZW50Rm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGFsVmFsdWUodmFsdWVbdGhpcy5jb250cm9sTmFtZV0pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuaW5uZXJGb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlKCgpID0+IGludGVydmFsKDEwKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUuY3JpdGVyaWEuZmlsdGVyKChpdCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGl0KVswXTtcbiAgICAgICAgICBpZiAoaXRba2V5XS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ29uZGl0aW9uR3JvdXBBdChpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0W2tleV0ubGVuZ3RoID4gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXJlbnRGb3JtLmdldCh0aGlzLmNvbnRyb2xOYW1lKS5zZXRWYWx1ZShyZXN1bHQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25maWd1cmVRdWVyeUJ1aWxkZXJTZXJ2aWNlKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdGVyRmllbGREZWZzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbmRpdGlvbkdyb3VwKGdyb3VwOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwKS5ldmVyeSgoa2V5KSA9PiBbJyRhbmQnLCAnJG9yJywgJyRub3QnXS5pbmNsdWRlcyhrZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGFsVmFsdWUodmFsdWU6IENvbmRpdGlvbkdyb3VwW10gfCBDb25kaXRpb25bXSkge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgdGhpcy5pc0NvbmRpdGlvbkdyb3VwKHZhbHVlWzBdKSkge1xuICAgICAgdmFsdWUuZm9yRWFjaCgoaXQpID0+IHRoaXMuYWRkQ29uZGl0aW9uR3JvdXAoaXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRDb25kaXRpb25Hcm91cCh7ICRhbmQ6IHZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb290KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJGb3JtLmdldCgnY3JpdGVyaWEnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBhZGRDb25kaXRpb25Hcm91cChkYXRhOiBhbnkgPSB7ICRhbmQ6IFtFTVBUWV9DT05ESVRJT05dIH0pIHtcbiAgICB0aGlzLnJvb3QucHVzaCh0aGlzLm5ld0NvbmRpdGlvbkdyb3VwKGRhdGEpKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5ld0NvbmRpdGlvbkdyb3VwKGRhdGE6IENvbmRpdGlvbkdyb3VwKTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCBjb250cm9scyA9IE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgob2JqLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmosXG4gICAgICAgIFtrZXldOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KHZhbC5tYXAoKGl0KSA9PiB0aGlzLm5ld0NvbmRpdGlvbihpdCkpKSxcbiAgICAgIH07XG4gICAgfSwge30pO1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGNvbnRyb2xzKTtcbiAgfVxuXG4gIG5ld0NvbmRpdGlvbih7IGZpZWxkLCBvcGVyYXRvciwgdmFsdWUgfTogQ29uZGl0aW9uID0gRU1QVFlfQ09ORElUSU9OKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBmaWVsZDogW2ZpZWxkLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG9wZXJhdG9yOiBbb3BlcmF0b3IsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdmFsdWU6IFt2YWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVDb25kaXRpb25Hcm91cEF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnJvb3QucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIGNsZWFyQWxsQ29uZGl0aW9ucygpIHtcbiAgICB3aGlsZSAodGhpcy5yb290Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yb290LnJlbW92ZUF0KDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZVF1ZXJ5QnVpbGRlclNlcnZpY2UoKSB7XG4gICAgdGhpcy5xYnMuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgdGhpcy5xYnMuZWRpdFR5cGVGbiA9IHRoaXMuZWRpdFR5cGVGbjtcbiAgICB0aGlzLnFicy5hbGxvd2VkR3JvdXBpbmdzID0gdGhpcy5hbGxvd2VkR3JvdXBpbmdzIGFzIENvbmp1bmN0aW9uW107XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckZpZWxkRGVmcygpIHtcbiAgICBjb25zdCBkZWZzID0gWy4uLkFycmF5LmZyb20odGhpcy5fY29udGVudEZpZWxkRGVmcyldO1xuICAgIGRlZnMuZm9yRWFjaCgoZmllbGREZWYpID0+IHtcbiAgICAgIHRoaXMucWJzLnJlZ2lzdGVyRmllbGREZWYoZmllbGREZWYpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybVwiPlxuICA8bm92by1zdGFjayBbZm9ybUFycmF5TmFtZV09XCJjb250cm9sTmFtZVwiIGNsYXNzPVwiY3JpdGVyaWEtYnVpbGRlci1pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCBhbmRHcm91cCBvZiByb290LmNvbnRyb2xzOyBsZXQgYW5kSW5kZXggPSBpbmRleDsgbGV0IGlzRmlyc3QgPSBmaXJzdDtsZXQgaXNMYXN0QW5kID0gbGFzdDtcIj5cbiAgICAgIDxub3ZvLWxhYmVsICpuZ0lmPVwiIWlzRmlyc3RcIiBjb2xvcj1cImFzaFwiIHNpemU9XCJ4c1wiIHVwcGVyY2FzZSBwYWRkaW5nPVwic21cIj57e3Ficy5nZXRDb25qdW5jdGlvbkxhYmVsKCdhbmQnKX19XG4gICAgICA8L25vdm8tbGFiZWw+XG4gICAgICA8bm92by1jb25kaXRpb24tZ3JvdXAgW2dyb3VwSW5kZXhdPVwiYW5kSW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJhbmRJbmRleFwiPjwvbm92by1jb25kaXRpb24tZ3JvdXA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbm92by1zdGFjaz5cbjwvZm9ybT5cbjxub3ZvLWlkLWNvbmRpdGlvbi1kZWYgbmFtZT1cIklEXCI+PC9ub3ZvLWlkLWNvbmRpdGlvbi1kZWY+XG48bm92by1kYXRlLWNvbmRpdGlvbi1kZWYgbmFtZT1cIlRJTUVTVEFNUFwiPjwvbm92by1kYXRlLWNvbmRpdGlvbi1kZWY+XG48bm92by1zdHJpbmctY29uZGl0aW9uLWRlZiBuYW1lPVwiU1RSSU5HXCI+PC9ub3ZvLXN0cmluZy1jb25kaXRpb24tZGVmPlxuPG5vdm8tbnVtYmVyLWNvbmRpdGlvbi1kZWYgbmFtZT1cIkZMT0FUXCI+PC9ub3ZvLW51bWJlci1jb25kaXRpb24tZGVmPlxuPG5vdm8tbnVtYmVyLWNvbmRpdGlvbi1kZWYgbmFtZT1cIklOVEVHRVJcIj48L25vdm8tbnVtYmVyLWNvbmRpdGlvbi1kZWY+XG48bm92by1udW1iZXItY29uZGl0aW9uLWRlZiBuYW1lPVwiQklHREVDSU1BTFwiPjwvbm92by1udW1iZXItY29uZGl0aW9uLWRlZj5cbjxub3ZvLW51bWJlci1jb25kaXRpb24tZGVmIG5hbWU9XCJET1VCTEVcIj48L25vdm8tbnVtYmVyLWNvbmRpdGlvbi1kZWY+XG48bm92by1hZGRyZXNzLWNvbmRpdGlvbi1kZWYgbmFtZT1cIkFERFJFU1NcIj48L25vdm8tYWRkcmVzcy1jb25kaXRpb24tZGVmPlxuPG5vdm8tYm9vbGVhbi1jb25kaXRpb24tZGVmIG5hbWU9XCJCT09MRUFOXCI+PC9ub3ZvLWJvb2xlYW4tY29uZGl0aW9uLWRlZj5cbjxub3ZvLXBpY2tlci1jb25kaXRpb24tZGVmIG5hbWU9XCJTRUxFQ1RcIj48L25vdm8tcGlja2VyLWNvbmRpdGlvbi1kZWY+XG48bm92by1zdHJpbmctY29uZGl0aW9uLWRlZiBuYW1lPVwiREVGQVVMVFwiPjwvbm92by1zdHJpbmctY29uZGl0aW9uLWRlZj5cblxuPCEtLSBcbiAge1xuICAgICRhbmQ6IFt7XG4gICAgICAkb3I6IFt7XG4gICAgICAgIGVudGl0eTogJ0pvYk9yZGVyJ1xuICAgICAgICBmaWVsZDogJ2NhdGVnb3JpZXMnLFxuICAgICAgICBvcGVyYXRvcjogJ2RvZXNOb3RDb250YWluJyxcbiAgICAgICAgdmFsdWU6ICdIZWFsdGhjYXJlJ1xuICAgICAgfV1cbiAgICB9XVxuICB9XG4gLS0+Il19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './condition-builder/condition-builder.component';
|
|
2
|
+
export * from './condition-definitions/abstract-condition.definition';
|
|
3
|
+
export * from './condition-definitions/address-condition.definition';
|
|
4
|
+
export * from './condition-definitions/boolean-condition.definition';
|
|
5
|
+
export * from './condition-definitions/date-condition.definition';
|
|
6
|
+
export * from './condition-definitions/id-condition.definition';
|
|
7
|
+
export * from './condition-definitions/number-condition.definition';
|
|
8
|
+
export * from './condition-definitions/picker-condition.definition';
|
|
9
|
+
export * from './condition-definitions/string-condition.definition';
|
|
10
|
+
export * from './criteria-builder/criteria-builder.component';
|
|
11
|
+
export * from './query-builder.directives';
|
|
12
|
+
export * from './query-builder.module';
|
|
13
|
+
export * from './query-builder.tokens';
|
|
14
|
+
export * from './query-builder.types';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWJ1aWxkZXIvY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWRlZmluaXRpb25zL2Fic3RyYWN0LWNvbmRpdGlvbi5kZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWRlZmluaXRpb25zL2FkZHJlc3MtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb25kaXRpb24tZGVmaW5pdGlvbnMvYm9vbGVhbi1jb25kaXRpb24uZGVmaW5pdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9kYXRlLWNvbmRpdGlvbi5kZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWRlZmluaXRpb25zL2lkLWNvbmRpdGlvbi5kZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWRlZmluaXRpb25zL251bWJlci1jb25kaXRpb24uZGVmaW5pdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9waWNrZXItY29uZGl0aW9uLmRlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb25kaXRpb24tZGVmaW5pdGlvbnMvc3RyaW5nLWNvbmRpdGlvbi5kZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY3JpdGVyaWEtYnVpbGRlci9jcml0ZXJpYS1idWlsZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXIuZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcXVlcnktYnVpbGRlci50b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWVyeS1idWlsZGVyLnR5cGVzJztcbiJdfQ==
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';
|
|
2
|
+
import { QueryBuilderService } from './query-builder.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./query-builder.service";
|
|
5
|
+
/**
|
|
6
|
+
* Contained within a novoConditionField definition describing what input should be
|
|
7
|
+
* used to capture the compare value of the Condtion
|
|
8
|
+
*/
|
|
9
|
+
export class NovoConditionInputDef {
|
|
10
|
+
constructor(/** @docs-private */ template) {
|
|
11
|
+
this.template = template;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
NovoConditionInputDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionInputDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
15
|
+
NovoConditionInputDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: NovoConditionInputDef, selector: "[novoConditionInputDef]", ngImport: i0 });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionInputDef, decorators: [{
|
|
17
|
+
type: Directive,
|
|
18
|
+
args: [{ selector: '[novoConditionInputDef]' }]
|
|
19
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
20
|
+
/**
|
|
21
|
+
* Contained within a novoConditionField definition describing what operators should be available.
|
|
22
|
+
*/
|
|
23
|
+
export class NovoConditionOperatorsDef {
|
|
24
|
+
constructor(/** @docs-private */ template) {
|
|
25
|
+
this.template = template;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
NovoConditionOperatorsDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionOperatorsDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
|
+
NovoConditionOperatorsDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]", ngImport: i0 });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionOperatorsDef, decorators: [{
|
|
31
|
+
type: Directive,
|
|
32
|
+
args: [{ selector: '[novoConditionOperatorsDef]' }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
34
|
+
/**
|
|
35
|
+
* Field Field definition for the QueryBuilder.
|
|
36
|
+
* Defines the inputType and operators to use for the query builder.
|
|
37
|
+
*/
|
|
38
|
+
export class BaseConditionFieldDef {
|
|
39
|
+
constructor() { }
|
|
40
|
+
/** Unique name for this field. */
|
|
41
|
+
get name() {
|
|
42
|
+
return this._name;
|
|
43
|
+
}
|
|
44
|
+
set name(name) {
|
|
45
|
+
this._setNameInput(name);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Overridable method that sets the css classes that will be added to every cell in this
|
|
49
|
+
* column.
|
|
50
|
+
* In the future, columnCssClassName will change from type string[] to string and this
|
|
51
|
+
* will set a single string value.
|
|
52
|
+
* @docs-private
|
|
53
|
+
*/
|
|
54
|
+
_updateFieldCssClassName() {
|
|
55
|
+
this._fieldCssClassName = [`novo-filter-field-${this.cssClassFriendlyName}`];
|
|
56
|
+
}
|
|
57
|
+
_setNameInput(value) {
|
|
58
|
+
// If the directive is set without a name (updated programmatically), then this setter will
|
|
59
|
+
// trigger with an empty string and should not overwrite the programmatically set value.
|
|
60
|
+
if (value) {
|
|
61
|
+
this._name = value;
|
|
62
|
+
this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');
|
|
63
|
+
this._updateFieldCssClassName();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
BaseConditionFieldDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseConditionFieldDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
BaseConditionFieldDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: BaseConditionFieldDef, inputs: { name: ["novoFilterFieldDef", "name"] }, queries: [{ propertyName: "fieldInput", first: true, predicate: NovoConditionInputDef, descendants: true }, { propertyName: "fieldOperators", first: true, predicate: NovoConditionOperatorsDef, descendants: true }], ngImport: i0 });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseConditionFieldDef, decorators: [{
|
|
70
|
+
type: Directive
|
|
71
|
+
}], ctorParameters: function () { return []; }, propDecorators: { name: [{
|
|
72
|
+
type: Input,
|
|
73
|
+
args: ['novoFilterFieldDef']
|
|
74
|
+
}], fieldInput: [{
|
|
75
|
+
type: ContentChild,
|
|
76
|
+
args: [NovoConditionInputDef]
|
|
77
|
+
}], fieldOperators: [{
|
|
78
|
+
type: ContentChild,
|
|
79
|
+
args: [NovoConditionOperatorsDef]
|
|
80
|
+
}] } });
|
|
81
|
+
export class NovoConditionFieldDef extends BaseConditionFieldDef {
|
|
82
|
+
constructor(qbs) {
|
|
83
|
+
super();
|
|
84
|
+
this.qbs = qbs;
|
|
85
|
+
}
|
|
86
|
+
register() {
|
|
87
|
+
this.qbs.registerFieldDef(this);
|
|
88
|
+
}
|
|
89
|
+
unregister() {
|
|
90
|
+
this.qbs.unregisterFieldDef(this);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
NovoConditionFieldDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionFieldDef, deps: [{ token: i1.QueryBuilderService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
94
|
+
NovoConditionFieldDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: NovoConditionFieldDef, selector: "[novoConditionFieldDef]", usesInheritance: true, ngImport: i0 });
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoConditionFieldDef, decorators: [{
|
|
96
|
+
type: Directive,
|
|
97
|
+
args: [{
|
|
98
|
+
selector: '[novoConditionFieldDef]',
|
|
99
|
+
}]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i1.QueryBuilderService }]; } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLmRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBTzlEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBWSxvQkFBb0IsQ0FBUSxRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7O21IQUQzRCxxQkFBcUI7dUdBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFOztBQUtsRDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBWSxvQkFBb0IsQ0FBUSxRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7O3VIQUQzRCx5QkFBeUI7MkdBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQURyQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFOztBQUt0RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxnQkFBZSxDQUFDO0lBdkJoQixrQ0FBa0M7SUFDbEMsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQWtCRDs7Ozs7O09BTUc7SUFDTyx3QkFBd0I7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMscUJBQXFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVTLGFBQWEsQ0FBQyxLQUFhO1FBQ25DLDJGQUEyRjtRQUMzRix3RkFBd0Y7UUFDeEYsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDOzttSEE3Q1UscUJBQXFCO3VHQUFyQixxQkFBcUIsb0hBV2xCLHFCQUFxQixpRkFDckIseUJBQXlCOzRGQVo1QixxQkFBcUI7a0JBRGpDLFNBQVM7MEVBSUosSUFBSTtzQkFEUCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFTVSxVQUFVO3NCQUE5QyxZQUFZO3VCQUFDLHFCQUFxQjtnQkFDTSxjQUFjO3NCQUF0RCxZQUFZO3VCQUFDLHlCQUF5Qjs7QUF1Q3pDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxxQkFBcUI7SUFDOUQsWUFBb0IsR0FBd0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFxQjtJQUU1QyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O21IQVRVLHFCQUFxQjt1R0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuXG4vKiogQmFzZSBpbnRlcmZhY2UgZm9yIGEgY29uZGlkYXRpb24gdGVtcGxhdGUgZGlyZWN0aXZlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uRGVmIHtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG59XG5cbi8qKlxuICogQ29udGFpbmVkIHdpdGhpbiBhIG5vdm9Db25kaXRpb25GaWVsZCBkZWZpbml0aW9uIGRlc2NyaWJpbmcgd2hhdCBpbnB1dCBzaG91bGQgYmVcbiAqIHVzZWQgdG8gY2FwdHVyZSB0aGUgY29tcGFyZSB2YWx1ZSBvZiB0aGUgQ29uZHRpb25cbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25vdm9Db25kaXRpb25JbnB1dERlZl0nIH0pXG5leHBvcnQgY2xhc3MgTm92b0NvbmRpdGlvbklucHV0RGVmIGltcGxlbWVudHMgQ29uZGl0aW9uRGVmIHtcbiAgY29uc3RydWN0b3IoLyoqIEBkb2NzLXByaXZhdGUgKi8gcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG4vKipcbiAqIENvbnRhaW5lZCB3aXRoaW4gYSBub3ZvQ29uZGl0aW9uRmllbGQgZGVmaW5pdGlvbiBkZXNjcmliaW5nIHdoYXQgb3BlcmF0b3JzIHNob3VsZCBiZSBhdmFpbGFibGUuXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tub3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmXScgfSlcbmV4cG9ydCBjbGFzcyBOb3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmIGltcGxlbWVudHMgQ29uZGl0aW9uRGVmIHtcbiAgY29uc3RydWN0b3IoLyoqIEBkb2NzLXByaXZhdGUgKi8gcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG4vKipcbiAqIEZpZWxkIEZpZWxkIGRlZmluaXRpb24gZm9yIHRoZSBRdWVyeUJ1aWxkZXIuXG4gKiBEZWZpbmVzIHRoZSBpbnB1dFR5cGUgYW5kIG9wZXJhdG9ycyB0byB1c2UgZm9yIHRoZSBxdWVyeSBidWlsZGVyLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlQ29uZGl0aW9uRmllbGREZWYge1xuICAvKiogVW5pcXVlIG5hbWUgZm9yIHRoaXMgZmllbGQuICovXG4gIEBJbnB1dCgnbm92b0ZpbHRlckZpZWxkRGVmJylcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXROYW1lSW5wdXQobmFtZSk7XG4gIH1cbiAgcHJvdGVjdGVkIF9uYW1lOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZChOb3ZvQ29uZGl0aW9uSW5wdXREZWYpIGZpZWxkSW5wdXQ6IE5vdm9Db25kaXRpb25JbnB1dERlZjtcbiAgQENvbnRlbnRDaGlsZChOb3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmKSBmaWVsZE9wZXJhdG9yczogTm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZjtcblxuICAvKipcbiAgICogVHJhbnNmb3JtZWQgdmVyc2lvbiBvZiB0aGUgY29sdW1uIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCBhcyBwYXJ0IG9mIGEgQ1NTIGNsYXNzbmFtZS4gRXhjbHVkZXNcbiAgICogYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIHNwZWNpYWwgY2hhcmFjdGVycyAnLScgYW5kICdfJy4gQW55IGNoYXJhY3RlcnMgdGhhdFxuICAgKiBkbyBub3QgbWF0Y2ggYXJlIHJlcGxhY2VkIGJ5IHRoZSAnLScgY2hhcmFjdGVyLlxuICAgKi9cbiAgY3NzQ2xhc3NGcmllbmRseU5hbWU6IHN0cmluZztcbiAgX2ZpZWxkQ3NzQ2xhc3NOYW1lOiBzdHJpbmdbXTtcblxuICBkZWZhdWx0T3BlcmF0b3I6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRhYmxlIG1ldGhvZCB0aGF0IHNldHMgdGhlIGNzcyBjbGFzc2VzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byBldmVyeSBjZWxsIGluIHRoaXNcbiAgICogY29sdW1uLlxuICAgKiBJbiB0aGUgZnV0dXJlLCBjb2x1bW5Dc3NDbGFzc05hbWUgd2lsbCBjaGFuZ2UgZnJvbSB0eXBlIHN0cmluZ1tdIHRvIHN0cmluZyBhbmQgdGhpc1xuICAgKiB3aWxsIHNldCBhIHNpbmdsZSBzdHJpbmcgdmFsdWUuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByb3RlY3RlZCBfdXBkYXRlRmllbGRDc3NDbGFzc05hbWUoKSB7XG4gICAgdGhpcy5fZmllbGRDc3NDbGFzc05hbWUgPSBbYG5vdm8tZmlsdGVyLWZpZWxkLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0TmFtZUlucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBJZiB0aGUgZGlyZWN0aXZlIGlzIHNldCB3aXRob3V0IGEgbmFtZSAodXBkYXRlZCBwcm9ncmFtbWF0aWNhbGx5KSwgdGhlbiB0aGlzIHNldHRlciB3aWxsXG4gICAgLy8gdHJpZ2dlciB3aXRoIGFuIGVtcHR5IHN0cmluZyBhbmQgc2hvdWxkIG5vdCBvdmVyd3JpdGUgdGhlIHByb2dyYW1tYXRpY2FsbHkgc2V0IHZhbHVlLlxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZSA9IHZhbHVlLnJlcGxhY2UoL1teYS16MC05Xy1dL2dpLCAnLScpO1xuICAgICAgdGhpcy5fdXBkYXRlRmllbGRDc3NDbGFzc05hbWUoKTtcbiAgICB9XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25vdm9Db25kaXRpb25GaWVsZERlZl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvQ29uZGl0aW9uRmllbGREZWYgZXh0ZW5kcyBCYXNlQ29uZGl0aW9uRmllbGREZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHFiczogUXVlcnlCdWlsZGVyU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgcmVnaXN0ZXIoKSB7XG4gICAgdGhpcy5xYnMucmVnaXN0ZXJGaWVsZERlZih0aGlzKTtcbiAgfVxuICB1bnJlZ2lzdGVyKCkge1xuICAgIHRoaXMucWJzLnVucmVnaXN0ZXJGaWVsZERlZih0aGlzKTtcbiAgfVxufVxuIl19
|