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/query-builder/condition-definitions/date-condition.definition.mjs
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { NovoPickerToggleElement } from './../../field/toggle/picker-toggle.component';
|
|
3
|
+
import { AbstractConditionFieldDef } from './abstract-condition.definition';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../field/field";
|
|
6
|
+
import * as i2 from "../../select/Select";
|
|
7
|
+
import * as i3 from "../../common/option/option.component";
|
|
8
|
+
import * as i4 from "../../field/toggle/picker-toggle.component";
|
|
9
|
+
import * as i5 from "../../date-picker/DatePicker";
|
|
10
|
+
import * as i6 from "../query-builder.directives";
|
|
11
|
+
import * as i7 from "@angular/forms";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
import * as i9 from "../../common/directives/switch-cases.directive";
|
|
14
|
+
import * as i10 from "../../field/input";
|
|
15
|
+
import * as i11 from "../../field/formats/date-format";
|
|
16
|
+
import * as i12 from "../../field/picker.directive";
|
|
17
|
+
import * as i13 from "../../field/formats/date-range-format";
|
|
18
|
+
/**
|
|
19
|
+
* Most complicated of the default conditions defs, a date needs to provide a different
|
|
20
|
+
* input type depending on the operator selected.
|
|
21
|
+
*/
|
|
22
|
+
export class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.defaultOperator = 'within';
|
|
26
|
+
}
|
|
27
|
+
onOperatorSelect(formGroup) {
|
|
28
|
+
formGroup.get('value').setValue(null);
|
|
29
|
+
}
|
|
30
|
+
closePanel(event, viewIndex) {
|
|
31
|
+
const overlay = this.overlayChildren.find(item => item.overlayId === viewIndex);
|
|
32
|
+
overlay.closePanel(event);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
NovoDefaultDateConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultDateConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
NovoDefaultDateConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultDateConditionDef, selector: "novo-date-condition-def", viewQueries: [{ propertyName: "overlayChildren", predicate: NovoPickerToggleElement, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
37
|
+
<ng-container novoConditionFieldDef="DATE">
|
|
38
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
39
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
|
|
40
|
+
<novo-option value="before">{{ labels.before }}</novo-option>
|
|
41
|
+
<novo-option value="after">{{ labels.after }}</novo-option>
|
|
42
|
+
<novo-option value="between">{{ labels.between }}</novo-option>
|
|
43
|
+
<novo-option value="within">{{ labels.within }}</novo-option>
|
|
44
|
+
</novo-select>
|
|
45
|
+
</novo-field>
|
|
46
|
+
<ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex">
|
|
47
|
+
<ng-container [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
|
|
48
|
+
<novo-field *novoSwitchCases="['before', 'after']">
|
|
49
|
+
<input novoInput dateFormat="iso8601" [picker]="datepicker" formControlName="value" />
|
|
50
|
+
<novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" novoSuffix icon="calendar">
|
|
51
|
+
<novo-date-picker (onSelect)="closePanel($event, viewIndex)" #datepicker></novo-date-picker>
|
|
52
|
+
</novo-picker-toggle>
|
|
53
|
+
</novo-field>
|
|
54
|
+
<novo-field *novoSwitchCases="['between']">
|
|
55
|
+
<input novoInput dateRangeFormat="date" [picker]="daterangepicker" formControlName="value" />
|
|
56
|
+
<novo-picker-toggle [for]="daterangepicker" triggerOnFocus [overlayId]="viewIndex" novoSuffix icon="calendar">
|
|
57
|
+
<novo-date-picker #daterangepicker (onSelect)="closePanel($event, viewIndex)" mode="range" numberOfMonths="2"></novo-date-picker>
|
|
58
|
+
</novo-picker-toggle>
|
|
59
|
+
</novo-field>
|
|
60
|
+
<novo-field *novoSwitchCases="['within']">
|
|
61
|
+
<novo-select [placeholder]="labels.selectDateRange" formControlName="value">
|
|
62
|
+
<novo-option value="7">{{ labels.next7Days }}</novo-option>
|
|
63
|
+
<novo-option value="-7">{{ labels.past7Days }}</novo-option>
|
|
64
|
+
<novo-option value="-30">{{ labels.past30Days }}</novo-option>
|
|
65
|
+
<novo-option value="-90">{{ labels.past90Days }}</novo-option>
|
|
66
|
+
</novo-select>
|
|
67
|
+
</novo-field>
|
|
68
|
+
</ng-container>
|
|
69
|
+
</ng-container>
|
|
70
|
+
</ng-container>
|
|
71
|
+
`, 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"] }, { type: i4.NovoPickerToggleElement, selector: "novo-picker-toggle", inputs: ["for", "icon", "tabIndex", "aria-label", "triggerOnFocus", "overlayId", "disabled"], exportAs: ["novoPickerToggle"] }, { type: i5.NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }], directives: [{ type: i6.NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: i6.NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NovoConditionInputDef, selector: "[novoConditionInputDef]" }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.SwitchCasesDirective, selector: "[novoSwitchCases]", inputs: ["novoSwitchCases"] }, { type: i10.NovoInput, selector: "input[novoInput], textarea[novoInput], select[novoInput]", inputs: ["disabled", "id", "placeholder", "required", "type", "value", "readonly"] }, { type: i11.NovoDateFormatDirective, selector: "input[dateFormat]", inputs: ["dateFormat"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i12.NovoPickerDirective, selector: "input[picker]", inputs: ["picker", "autocomplete"] }, { type: i1.NovoFieldSuffixDirective, selector: "[novoSuffix]" }, { type: i13.NovoDateRangeFormatDirective, selector: "input[dateRangeFormat]", inputs: ["dateRangeFormat"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultDateConditionDef, decorators: [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: 'novo-date-condition-def',
|
|
76
|
+
template: `
|
|
77
|
+
<ng-container novoConditionFieldDef="DATE">
|
|
78
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
79
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
|
|
80
|
+
<novo-option value="before">{{ labels.before }}</novo-option>
|
|
81
|
+
<novo-option value="after">{{ labels.after }}</novo-option>
|
|
82
|
+
<novo-option value="between">{{ labels.between }}</novo-option>
|
|
83
|
+
<novo-option value="within">{{ labels.within }}</novo-option>
|
|
84
|
+
</novo-select>
|
|
85
|
+
</novo-field>
|
|
86
|
+
<ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex">
|
|
87
|
+
<ng-container [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
|
|
88
|
+
<novo-field *novoSwitchCases="['before', 'after']">
|
|
89
|
+
<input novoInput dateFormat="iso8601" [picker]="datepicker" formControlName="value" />
|
|
90
|
+
<novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" novoSuffix icon="calendar">
|
|
91
|
+
<novo-date-picker (onSelect)="closePanel($event, viewIndex)" #datepicker></novo-date-picker>
|
|
92
|
+
</novo-picker-toggle>
|
|
93
|
+
</novo-field>
|
|
94
|
+
<novo-field *novoSwitchCases="['between']">
|
|
95
|
+
<input novoInput dateRangeFormat="date" [picker]="daterangepicker" formControlName="value" />
|
|
96
|
+
<novo-picker-toggle [for]="daterangepicker" triggerOnFocus [overlayId]="viewIndex" novoSuffix icon="calendar">
|
|
97
|
+
<novo-date-picker #daterangepicker (onSelect)="closePanel($event, viewIndex)" mode="range" numberOfMonths="2"></novo-date-picker>
|
|
98
|
+
</novo-picker-toggle>
|
|
99
|
+
</novo-field>
|
|
100
|
+
<novo-field *novoSwitchCases="['within']">
|
|
101
|
+
<novo-select [placeholder]="labels.selectDateRange" formControlName="value">
|
|
102
|
+
<novo-option value="7">{{ labels.next7Days }}</novo-option>
|
|
103
|
+
<novo-option value="-7">{{ labels.past7Days }}</novo-option>
|
|
104
|
+
<novo-option value="-30">{{ labels.past30Days }}</novo-option>
|
|
105
|
+
<novo-option value="-90">{{ labels.past90Days }}</novo-option>
|
|
106
|
+
</novo-select>
|
|
107
|
+
</novo-field>
|
|
108
|
+
</ng-container>
|
|
109
|
+
</ng-container>
|
|
110
|
+
</ng-container>
|
|
111
|
+
`,
|
|
112
|
+
encapsulation: ViewEncapsulation.None,
|
|
113
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
114
|
+
}]
|
|
115
|
+
}], propDecorators: { overlayChildren: [{
|
|
116
|
+
type: ViewChildren,
|
|
117
|
+
args: [NovoPickerToggleElement]
|
|
118
|
+
}] } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb25kaXRpb24uZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXIvY29uZGl0aW9uLWRlZmluaXRpb25zL2RhdGUtY29uZGl0aW9uLmRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFhLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFOzs7R0FHRztBQTBDSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEseUJBQXlCO0lBekMxRTs7UUE2Q0Usb0JBQWUsR0FBRyxRQUFRLENBQUM7S0FVNUI7SUFSQyxnQkFBZ0IsQ0FBQyxTQUFvQjtRQUNuQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNoRixPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7O3lIQWJVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLG1HQUN4Qix1QkFBdUIsdUVBeEMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1Q7NEZBSVUsMkJBQTJCO2tCQXpDdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQ7OEJBR0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5vdm9QaWNrZXJUb2dnbGVFbGVtZW50IH0gZnJvbSAnLi8uLi8uLi9maWVsZC90b2dnbGUvcGlja2VyLXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4vYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuXG4vKipcbiAqIE1vc3QgY29tcGxpY2F0ZWQgb2YgdGhlIGRlZmF1bHQgY29uZGl0aW9ucyBkZWZzLCBhIGRhdGUgbmVlZHMgdG8gcHJvdmlkZSBhIGRpZmZlcmVudFxuICogaW5wdXQgdHlwZSBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yIHNlbGVjdGVkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWRhdGUtY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY9XCJEQVRFXCI+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5vcGVyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCIgKG9uU2VsZWN0KT1cIm9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwKVwiPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPnt7IGxhYmVscy5iZWZvcmUgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+e3sgbGFiZWxzLmFmdGVyIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJiZXR3ZWVuXCI+e3sgbGFiZWxzLmJldHdlZW4gfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cIndpdGhpblwiPnt7IGxhYmVscy53aXRoaW4gfX08L25vdm8tb3B0aW9uPlxuICAgICAgICA8L25vdm8tc2VsZWN0PlxuICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbm92b0NvbmRpdGlvbklucHV0RGVmPVwibGV0IGZvcm1Hcm91cDsgdmlld0luZGV4IGFzIHZpZXdJbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmb3JtR3JvdXAudmFsdWUub3BlcmF0b3JcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICAgIDxub3ZvLWZpZWxkICpub3ZvU3dpdGNoQ2FzZXM9XCJbJ2JlZm9yZScsICdhZnRlciddXCI+XG4gICAgICAgICAgICA8aW5wdXQgbm92b0lucHV0IGRhdGVGb3JtYXQ9XCJpc284NjAxXCIgW3BpY2tlcl09XCJkYXRlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5vdm8tcGlja2VyLXRvZ2dsZSB0cmlnZ2VyT25Gb2N1cyBbb3ZlcmxheUlkXT1cInZpZXdJbmRleFwiIG5vdm9TdWZmaXggaWNvbj1cImNhbGVuZGFyXCI+XG4gICAgICAgICAgICAgIDxub3ZvLWRhdGUtcGlja2VyIChvblNlbGVjdCk9XCJjbG9zZVBhbmVsKCRldmVudCwgdmlld0luZGV4KVwiICNkYXRlcGlja2VyPjwvbm92by1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvbm92by1waWNrZXItdG9nZ2xlPlxuICAgICAgICAgIDwvbm92by1maWVsZD5cbiAgICAgICAgICA8bm92by1maWVsZCAqbm92b1N3aXRjaENhc2VzPVwiWydiZXR3ZWVuJ11cIj5cbiAgICAgICAgICAgIDxpbnB1dCBub3ZvSW5wdXQgZGF0ZVJhbmdlRm9ybWF0PVwiZGF0ZVwiIFtwaWNrZXJdPVwiZGF0ZXJhbmdlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5vdm8tcGlja2VyLXRvZ2dsZSBbZm9yXT1cImRhdGVyYW5nZXBpY2tlclwiIHRyaWdnZXJPbkZvY3VzIFtvdmVybGF5SWRdPVwidmlld0luZGV4XCIgbm92b1N1ZmZpeCBpY29uPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgICAgICAgPG5vdm8tZGF0ZS1waWNrZXIgI2RhdGVyYW5nZXBpY2tlciAob25TZWxlY3QpPVwiY2xvc2VQYW5lbCgkZXZlbnQsIHZpZXdJbmRleClcIiBtb2RlPVwicmFuZ2VcIiBudW1iZXJPZk1vbnRocz1cIjJcIj48L25vdm8tZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8L25vdm8tcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICA8L25vdm8tZmllbGQ+XG4gICAgICAgICAgPG5vdm8tZmllbGQgKm5vdm9Td2l0Y2hDYXNlcz1cIlsnd2l0aGluJ11cIj5cbiAgICAgICAgICAgIDxub3ZvLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLnNlbGVjdERhdGVSYW5nZVwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCI+XG4gICAgICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cIjdcIj57eyBsYWJlbHMubmV4dDdEYXlzIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiLTdcIj57eyBsYWJlbHMucGFzdDdEYXlzIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiLTMwXCI+e3sgbGFiZWxzLnBhc3QzMERheXMgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCItOTBcIj57eyBsYWJlbHMucGFzdDkwRGF5cyB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgICA8L25vdm8tc2VsZWN0PlxuICAgICAgICAgIDwvbm92by1maWVsZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvRGVmYXVsdERhdGVDb25kaXRpb25EZWYgZXh0ZW5kcyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIHtcbiAgQFZpZXdDaGlsZHJlbihOb3ZvUGlja2VyVG9nZ2xlRWxlbWVudClcbiAgb3ZlcmxheUNoaWxkcmVuOiBRdWVyeUxpc3Q8Tm92b1BpY2tlclRvZ2dsZUVsZW1lbnQ+O1xuXG4gIGRlZmF1bHRPcGVyYXRvciA9ICd3aXRoaW4nO1xuXG4gIG9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgY2xvc2VQYW5lbChldmVudCwgdmlld0luZGV4KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheUNoaWxkcmVuLmZpbmQoaXRlbSA9PiBpdGVtLm92ZXJsYXlJZCA9PT0gdmlld0luZGV4KTtcbiAgICBvdmVybGF5LmNsb3NlUGFuZWwoZXZlbnQpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
import * as i6 from "../../field/input";
|
|
10
|
+
/**
|
|
11
|
+
* Any condition that has a type of ID usually only is queried by ID.
|
|
12
|
+
*/
|
|
13
|
+
export class NovoDefaultIdConditionDef extends AbstractConditionFieldDef {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.defaultOperator = 'equalTo';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
NovoDefaultIdConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultIdConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
NovoDefaultIdConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultIdConditionDef, selector: "novo-id-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
21
|
+
<ng-container novoConditionFieldDef>
|
|
22
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
23
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
24
|
+
<novo-option value="equalTo">{{ labels.equalTo }}</novo-option>
|
|
25
|
+
<ng-content></ng-content>
|
|
26
|
+
</novo-select>
|
|
27
|
+
</novo-field>
|
|
28
|
+
<novo-field *novoConditionInputDef="let formGroup" [formGroup]="formGroup">
|
|
29
|
+
<input novoInput type="number" min="1" step="1" formControlName="value" />
|
|
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]" }, { type: i6.NovoInput, selector: "input[novoInput], textarea[novoInput], select[novoInput]", inputs: ["disabled", "id", "placeholder", "required", "type", "value", "readonly"] }, { type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultIdConditionDef, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'novo-id-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="equalTo">{{ labels.equalTo }}</novo-option>
|
|
42
|
+
<ng-content></ng-content>
|
|
43
|
+
</novo-select>
|
|
44
|
+
</novo-field>
|
|
45
|
+
<novo-field *novoConditionInputDef="let formGroup" [formGroup]="formGroup">
|
|
46
|
+
<input novoInput type="number" min="1" step="1" formControlName="value" />
|
|
47
|
+
</novo-field>
|
|
48
|
+
</ng-container>
|
|
49
|
+
`,
|
|
50
|
+
encapsulation: ViewEncapsulation.None,
|
|
51
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
52
|
+
}]
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtY29uZGl0aW9uLmRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9pZC1jb25kaXRpb24uZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7OztBQUU1RTs7R0FFRztBQW1CSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEseUJBQXlCO0lBbEJ4RTs7UUFtQkUsb0JBQWUsR0FBRyxTQUFTLENBQUM7S0FDN0I7O3VIQUZZLHlCQUF5QjsyR0FBekIseUJBQXlCLG9GQWhCMUI7Ozs7Ozs7Ozs7OztHQVlUOzRGQUlVLHlCQUF5QjtrQkFsQnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7R0FZVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuL2Fic3RyYWN0LWNvbmRpdGlvbi5kZWZpbml0aW9uJztcblxuLyoqXG4gKiBBbnkgY29uZGl0aW9uIHRoYXQgaGFzIGEgdHlwZSBvZiBJRCB1c3VhbGx5IG9ubHkgaXMgcXVlcmllZCBieSBJRC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1pZC1jb25kaXRpb24tZGVmJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIG5vdm9Db25kaXRpb25GaWVsZERlZj5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmPVwibGV0IGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxub3ZvLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLm9wZXJhdG9yXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlcmF0b3JcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJlcXVhbFRvXCI+e3sgbGFiZWxzLmVxdWFsVG8gfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICAgIDwvbm92by1maWVsZD5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uSW5wdXREZWY9XCJsZXQgZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgICAgPGlucHV0IG5vdm9JbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMVwiIHN0ZXA9XCIxXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAvPlxuICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9EZWZhdWx0SWRDb25kaXRpb25EZWYgZXh0ZW5kcyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIHtcbiAgZGVmYXVsdE9wZXJhdG9yID0gJ2VxdWFsVG8nO1xufVxuIl19
|
package/esm2020/src/elements/query-builder/condition-definitions/number-condition.definition.mjs
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
import * as i6 from "../../field/input";
|
|
10
|
+
/**
|
|
11
|
+
* When constructing a query using a field that is an Int, Double, Number ...etc.
|
|
12
|
+
* TODO: Do we implment currency formation here potentially>.?
|
|
13
|
+
*/
|
|
14
|
+
export class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.defaultOperator = 'equalTo';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
NovoDefaultNumberConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultNumberConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
NovoDefaultNumberConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultNumberConditionDef, selector: "novo-number-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
22
|
+
<ng-container novoConditionFieldDef>
|
|
23
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
24
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
25
|
+
<novo-option value="greaterThan">{{ labels.greaterThan }}</novo-option>
|
|
26
|
+
<novo-option value="lessThan">{{ labels.lessThan }}</novo-option>
|
|
27
|
+
<novo-option value="equalTo">{{ labels.equalTo }}</novo-option>
|
|
28
|
+
</novo-select>
|
|
29
|
+
</novo-field>
|
|
30
|
+
<novo-field *novoConditionInputDef="let formGroup" [formGroup]="formGroup">
|
|
31
|
+
<input novoInput type="number" formControlName="value" />
|
|
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]" }, { type: i6.NovoInput, selector: "input[novoInput], textarea[novoInput], select[novoInput]", inputs: ["disabled", "id", "placeholder", "required", "type", "value", "readonly"] }, { type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultNumberConditionDef, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{
|
|
38
|
+
selector: 'novo-number-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="greaterThan">{{ labels.greaterThan }}</novo-option>
|
|
44
|
+
<novo-option value="lessThan">{{ labels.lessThan }}</novo-option>
|
|
45
|
+
<novo-option value="equalTo">{{ labels.equalTo }}</novo-option>
|
|
46
|
+
</novo-select>
|
|
47
|
+
</novo-field>
|
|
48
|
+
<novo-field *novoConditionInputDef="let formGroup" [formGroup]="formGroup">
|
|
49
|
+
<input novoInput type="number" formControlName="value" />
|
|
50
|
+
</novo-field>
|
|
51
|
+
</ng-container>
|
|
52
|
+
`,
|
|
53
|
+
encapsulation: ViewEncapsulation.None,
|
|
54
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
55
|
+
}]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWNvbmRpdGlvbi5kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tZGVmaW5pdGlvbnMvbnVtYmVyLWNvbmRpdGlvbi5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBRTVFOzs7R0FHRztBQW9CSCxNQUFNLE9BQU8sNkJBQThCLFNBQVEseUJBQXlCO0lBbkI1RTs7UUFvQkUsb0JBQWUsR0FBRyxTQUFTLENBQUM7S0FDN0I7OzJIQUZZLDZCQUE2QjsrR0FBN0IsNkJBQTZCLHdGQWpCOUI7Ozs7Ozs7Ozs7Ozs7R0FhVDs0RkFJVSw2QkFBNkI7a0JBbkJ6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4vYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuXG4vKipcbiAqIFdoZW4gY29uc3RydWN0aW5nIGEgcXVlcnkgdXNpbmcgYSBmaWVsZCB0aGF0IGlzIGFuIEludCwgRG91YmxlLCBOdW1iZXIgLi4uZXRjLlxuICogVE9ETzogRG8gd2UgaW1wbG1lbnQgY3VycmVuY3kgZm9ybWF0aW9uIGhlcmUgcG90ZW50aWFsbHk+Lj9cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1udW1iZXItY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5vcGVyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCI+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiZ3JlYXRlclRoYW5cIj57eyBsYWJlbHMuZ3JlYXRlclRoYW4gfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImxlc3NUaGFuXCI+e3sgbGFiZWxzLmxlc3NUaGFuIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJlcXVhbFRvXCI+e3sgbGFiZWxzLmVxdWFsVG8gfX08L25vdm8tb3B0aW9uPlxuICAgICAgICA8L25vdm8tc2VsZWN0PlxuICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgICAgPG5vdm8tZmllbGQgKm5vdm9Db25kaXRpb25JbnB1dERlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8aW5wdXQgbm92b0lucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIC8+XG4gICAgICA8L25vdm8tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0RlZmF1bHROdW1iZXJDb25kaXRpb25EZWYgZXh0ZW5kcyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIHtcbiAgZGVmYXVsdE9wZXJhdG9yID0gJ2VxdWFsVG8nO1xufVxuIl19
|
package/esm2020/src/elements/query-builder/condition-definitions/picker-condition.definition.mjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
import * as i6 from "@angular/common";
|
|
10
|
+
/**
|
|
11
|
+
* Handle selection of field values when a list of options is provided.
|
|
12
|
+
*/
|
|
13
|
+
export class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.defaultOperator = 'includeAny';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
NovoDefaultPickerConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultPickerConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
NovoDefaultPickerConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultPickerConditionDef, selector: "novo-picker-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
21
|
+
<ng-container novoConditionFieldDef>
|
|
22
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
23
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
24
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
25
|
+
<novo-option value="includeAll">{{ labels.includeAll }}</novo-option>
|
|
26
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
27
|
+
</novo-select>
|
|
28
|
+
</novo-field>
|
|
29
|
+
<novo-field *novoConditionInputDef="let formGroup; fieldMeta as meta" [formGroup]="formGroup">
|
|
30
|
+
<novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true">
|
|
31
|
+
<!-- WHat about optionUrl/optionType -->
|
|
32
|
+
<novo-option *ngFor="let option of meta?.options" [value]="option.value">
|
|
33
|
+
{{ option.label }}
|
|
34
|
+
</novo-option>
|
|
35
|
+
</novo-select>
|
|
36
|
+
</novo-field>
|
|
37
|
+
</ng-container>
|
|
38
|
+
`, 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]" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultPickerConditionDef, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: 'novo-picker-condition-def',
|
|
43
|
+
template: `
|
|
44
|
+
<ng-container novoConditionFieldDef>
|
|
45
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
46
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
47
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
48
|
+
<novo-option value="includeAll">{{ labels.includeAll }}</novo-option>
|
|
49
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
50
|
+
</novo-select>
|
|
51
|
+
</novo-field>
|
|
52
|
+
<novo-field *novoConditionInputDef="let formGroup; fieldMeta as meta" [formGroup]="formGroup">
|
|
53
|
+
<novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true">
|
|
54
|
+
<!-- WHat about optionUrl/optionType -->
|
|
55
|
+
<novo-option *ngFor="let option of meta?.options" [value]="option.value">
|
|
56
|
+
{{ option.label }}
|
|
57
|
+
</novo-option>
|
|
58
|
+
</novo-select>
|
|
59
|
+
</novo-field>
|
|
60
|
+
</ng-container>
|
|
61
|
+
`,
|
|
62
|
+
encapsulation: ViewEncapsulation.None,
|
|
63
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
64
|
+
}]
|
|
65
|
+
}] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLWNvbmRpdGlvbi5kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tZGVmaW5pdGlvbnMvcGlja2VyLWNvbmRpdGlvbi5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBRTVFOztHQUVHO0FBeUJILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSx5QkFBeUI7SUF4QjVFOztRQXlCRSxvQkFBZSxHQUFHLFlBQVksQ0FBQztLQUNoQzs7MkhBRlksNkJBQTZCOytHQUE3Qiw2QkFBNkIsd0ZBdEI5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUOzRGQUlVLDZCQUE2QjtrQkF4QnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNqRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIH0gZnJvbSAnLi9hYnN0cmFjdC1jb25kaXRpb24uZGVmaW5pdGlvbic7XG5cbi8qKlxuICogSGFuZGxlIHNlbGVjdGlvbiBvZiBmaWVsZCB2YWx1ZXMgd2hlbiBhIGxpc3Qgb2Ygb3B0aW9ucyBpcyBwcm92aWRlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1waWNrZXItY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbk9wZXJhdG9yc0RlZj1cImxldCBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5vcGVyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCI+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiaW5jbHVkZUFueVwiPnt7IGxhYmVscy5pbmNsdWRlQW55IH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJpbmNsdWRlQWxsXCI+e3sgbGFiZWxzLmluY2x1ZGVBbGwgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImV4Y2x1ZGVBbnlcIj57eyBsYWJlbHMuZXhjbHVkZSB9fTwvbm92by1vcHRpb24+XG4gICAgICAgIDwvbm92by1zZWxlY3Q+XG4gICAgICA8L25vdm8tZmllbGQ+XG4gICAgICA8bm92by1maWVsZCAqbm92b0NvbmRpdGlvbklucHV0RGVmPVwibGV0IGZvcm1Hcm91cDsgZmllbGRNZXRhIGFzIG1ldGFcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bm92by1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLnNlbGVjdFwiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgPCEtLSBXSGF0IGFib3V0IG9wdGlvblVybC9vcHRpb25UeXBlIC0tPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG1ldGE/Lm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L25vdm8tb3B0aW9uPlxuICAgICAgICA8L25vdm8tc2VsZWN0PlxuICAgICAgPC9ub3ZvLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9EZWZhdWx0UGlja2VyQ29uZGl0aW9uRGVmIGV4dGVuZHMgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB7XG4gIGRlZmF1bHRPcGVyYXRvciA9ICdpbmNsdWRlQW55Jztcbn1cbiJdfQ==
|
package/esm2020/src/elements/query-builder/condition-definitions/string-condition.definition.mjs
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { AbstractConditionFieldDef } from './abstract-condition.definition';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../field/field";
|
|
6
|
+
import * as i2 from "../../select/Select";
|
|
7
|
+
import * as i3 from "../../common/option/option.component";
|
|
8
|
+
import * as i4 from "../../chips/ChipList";
|
|
9
|
+
import * as i5 from "../../chips/Chip";
|
|
10
|
+
import * as i6 from "../../icon/Icon";
|
|
11
|
+
import * as i7 from "../../field/autocomplete/autocomplete.component";
|
|
12
|
+
import * as i8 from "../query-builder.directives";
|
|
13
|
+
import * as i9 from "@angular/forms";
|
|
14
|
+
import * as i10 from "@angular/common";
|
|
15
|
+
import * as i11 from "../../chips/ChipInput";
|
|
16
|
+
/**
|
|
17
|
+
* Contruction filters against String fields can be complex. Each "chip" added to the
|
|
18
|
+
* condition can be used to indendantly used to query a database. Not all systems support
|
|
19
|
+
* quering within a text column, ie sql unless LIKE is enabled. This could result in a
|
|
20
|
+
* performance penalty.
|
|
21
|
+
*/
|
|
22
|
+
export class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.separatorKeysCodes = [ENTER, COMMA];
|
|
26
|
+
this.defaultOperator = 'includeAny';
|
|
27
|
+
this.model = '';
|
|
28
|
+
}
|
|
29
|
+
getValue(formGroup) {
|
|
30
|
+
return formGroup.value?.value || [];
|
|
31
|
+
}
|
|
32
|
+
add(event, formGroup) {
|
|
33
|
+
const input = event.input;
|
|
34
|
+
input.value = '';
|
|
35
|
+
const valueToAdd = event.value;
|
|
36
|
+
if (valueToAdd !== '') {
|
|
37
|
+
const current = this.getValue(formGroup);
|
|
38
|
+
if (!Array.isArray(current)) {
|
|
39
|
+
formGroup.get('value').setValue([valueToAdd]);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
formGroup.get('value').setValue([...current, valueToAdd]);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
remove(valueToRemove, formGroup) {
|
|
47
|
+
const current = this.getValue(formGroup);
|
|
48
|
+
const index = current.indexOf(valueToRemove);
|
|
49
|
+
if (index >= 0) {
|
|
50
|
+
const oldValue = [...current];
|
|
51
|
+
oldValue.splice(index, 1);
|
|
52
|
+
formGroup.get('value').setValue(oldValue);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
NovoDefaultStringConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultStringConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
NovoDefaultStringConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultStringConditionDef, selector: "novo-string-condition-def", usesInheritance: true, ngImport: i0, template: `
|
|
58
|
+
<!-- fieldTypes should be UPPERCASE -->
|
|
59
|
+
<ng-container novoConditionFieldDef="STRING">
|
|
60
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
61
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
62
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
63
|
+
<novo-option value="includeAll">{{ labels.includeAll }}</novo-option>
|
|
64
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
65
|
+
</novo-select>
|
|
66
|
+
</novo-field>
|
|
67
|
+
<novo-field *novoConditionInputDef="let formGroup">
|
|
68
|
+
<novo-chip-list #chipList aria-label="filter value">
|
|
69
|
+
<novo-chip *ngFor="let chip of formGroup.value?.value || []" [value]="chip" (removed)="remove(chip, formGroup)">
|
|
70
|
+
{{ chip }}
|
|
71
|
+
<novo-icon novoChipRemove>close</novo-icon>
|
|
72
|
+
</novo-chip>
|
|
73
|
+
<input
|
|
74
|
+
novoChipInput
|
|
75
|
+
[(ngModel)]="model"
|
|
76
|
+
[placeholder]="labels.typeToAddChips"
|
|
77
|
+
autocomplete="off"
|
|
78
|
+
(novoChipInputTokenEnd)="add($event, formGroup)"
|
|
79
|
+
/>
|
|
80
|
+
</novo-chip-list>
|
|
81
|
+
<novo-autocomplete></novo-autocomplete>
|
|
82
|
+
</novo-field>
|
|
83
|
+
</ng-container>
|
|
84
|
+
`, 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"] }, { type: i4.NovoChipList, selector: "novo-chip-list", inputs: ["errorStateMatcher", "multiple", "stacked", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["novoChipList"] }, { type: i5.NovoChipElement, selector: "novo-chip, [novo-chip]", inputs: ["color", "tabIndex", "size", "type", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"] }, { type: i6.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { type: i7.NovoAutocompleteElement, selector: "novo-autocomplete", inputs: ["tabIndex", "triggerOn", "displayWith", "aria-label", "multiple", "disabled"], outputs: ["optionSelected", "optionActivated"], exportAs: ["novoAutocomplete"] }], directives: [{ type: i8.NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: i8.NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i8.NovoConditionInputDef, selector: "[novoConditionInputDef]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NovoChipRemove, selector: "[novoChipRemove]" }, { type: i11.NovoChipInput, selector: "input[novoChipInput]", inputs: ["novoChipInputAddOnBlur", "novoChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["novoChipInputTokenEnd"], exportAs: ["novoChipInput", "novoChipInputFor"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultStringConditionDef, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{
|
|
88
|
+
selector: 'novo-string-condition-def',
|
|
89
|
+
template: `
|
|
90
|
+
<!-- fieldTypes should be UPPERCASE -->
|
|
91
|
+
<ng-container novoConditionFieldDef="STRING">
|
|
92
|
+
<novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
|
|
93
|
+
<novo-select [placeholder]="labels.operator" formControlName="operator">
|
|
94
|
+
<novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
|
|
95
|
+
<novo-option value="includeAll">{{ labels.includeAll }}</novo-option>
|
|
96
|
+
<novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
|
|
97
|
+
</novo-select>
|
|
98
|
+
</novo-field>
|
|
99
|
+
<novo-field *novoConditionInputDef="let formGroup">
|
|
100
|
+
<novo-chip-list #chipList aria-label="filter value">
|
|
101
|
+
<novo-chip *ngFor="let chip of formGroup.value?.value || []" [value]="chip" (removed)="remove(chip, formGroup)">
|
|
102
|
+
{{ chip }}
|
|
103
|
+
<novo-icon novoChipRemove>close</novo-icon>
|
|
104
|
+
</novo-chip>
|
|
105
|
+
<input
|
|
106
|
+
novoChipInput
|
|
107
|
+
[(ngModel)]="model"
|
|
108
|
+
[placeholder]="labels.typeToAddChips"
|
|
109
|
+
autocomplete="off"
|
|
110
|
+
(novoChipInputTokenEnd)="add($event, formGroup)"
|
|
111
|
+
/>
|
|
112
|
+
</novo-chip-list>
|
|
113
|
+
<novo-autocomplete></novo-autocomplete>
|
|
114
|
+
</novo-field>
|
|
115
|
+
</ng-container>
|
|
116
|
+
`,
|
|
117
|
+
encapsulation: ViewEncapsulation.None,
|
|
118
|
+
// Change detection is intentionally not set to OnPush. This component's template will be provided
|
|
119
|
+
// to the table to be inserted into its view. This is problematic when change detection runs since
|
|
120
|
+
// the bindings in this template will be evaluated _after_ the table's view is evaluated, which
|
|
121
|
+
// mean's the template in the table's view will not have the updated value (and in fact will cause
|
|
122
|
+
// an ExpressionChangedAfterItHasBeenCheckedError).
|
|
123
|
+
// tslint:disable-next-line:validate-decorators
|
|
124
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
125
|
+
}]
|
|
126
|
+
}] });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWNvbmRpdGlvbi5kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tZGVmaW5pdGlvbnMvc3RyaW5nLWNvbmRpdGlvbi5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUU1RTs7Ozs7R0FLRztBQXdDSCxNQUFNLE9BQU8sNkJBQThCLFNBQVEseUJBQXlCO0lBdkM1RTs7UUF3Q0UsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxZQUFZLENBQUM7UUFDL0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQTZCWjtJQTNCQyxRQUFRLENBQUMsU0FBMEI7UUFDakMsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFVLEVBQUUsU0FBMEI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDL0M7aUJBQU07Z0JBQ0wsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQzNEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQXFCLEVBQUUsU0FBMEI7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQTtZQUM3QixRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7OzJIQS9CVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qix3RkFyQzlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7NEZBVVUsNkJBQTZCO2tCQXZDekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsa0dBQWtHO29CQUNsRyxrR0FBa0c7b0JBQ2xHLCtGQUErRjtvQkFDL0Ysa0dBQWtHO29CQUNsRyxtREFBbUQ7b0JBQ25ELCtDQUErQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiB9IGZyb20gJy4vYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24nO1xuXG4vKipcbiAqIENvbnRydWN0aW9uIGZpbHRlcnMgYWdhaW5zdCBTdHJpbmcgZmllbGRzIGNhbiBiZSBjb21wbGV4LiBFYWNoIFwiY2hpcFwiIGFkZGVkIHRvIHRoZVxuICogY29uZGl0aW9uIGNhbiBiZSB1c2VkIHRvIGluZGVuZGFudGx5IHVzZWQgdG8gcXVlcnkgYSBkYXRhYmFzZS4gIE5vdCBhbGwgc3lzdGVtcyBzdXBwb3J0XG4gKiBxdWVyaW5nIHdpdGhpbiBhIHRleHQgY29sdW1uLCBpZSBzcWwgdW5sZXNzIExJS0UgaXMgZW5hYmxlZC4gVGhpcyBjb3VsZCByZXN1bHQgaW4gYVxuICogcGVyZm9ybWFuY2UgcGVuYWx0eS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1zdHJpbmctY29uZGl0aW9uLWRlZicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPCEtLSBmaWVsZFR5cGVzIHNob3VsZCBiZSBVUFBFUkNBU0UgLS0+XG4gICAgPG5nLWNvbnRhaW5lciBub3ZvQ29uZGl0aW9uRmllbGREZWY9XCJTVFJJTkdcIj5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmPVwibGV0IGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxub3ZvLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLm9wZXJhdG9yXCIgZm9ybUNvbnRyb2xOYW1lPVwib3BlcmF0b3JcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24gdmFsdWU9XCJpbmNsdWRlQW55XCI+e3sgbGFiZWxzLmluY2x1ZGVBbnkgfX08L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbiB2YWx1ZT1cImluY2x1ZGVBbGxcIj57eyBsYWJlbHMuaW5jbHVkZUFsbCB9fTwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5vdm8tb3B0aW9uIHZhbHVlPVwiZXhjbHVkZUFueVwiPnt7IGxhYmVscy5leGNsdWRlIH19PC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICAgIDwvbm92by1maWVsZD5cbiAgICAgIDxub3ZvLWZpZWxkICpub3ZvQ29uZGl0aW9uSW5wdXREZWY9XCJsZXQgZm9ybUdyb3VwXCI+XG4gICAgICAgIDxub3ZvLWNoaXAtbGlzdCAjY2hpcExpc3QgYXJpYS1sYWJlbD1cImZpbHRlciB2YWx1ZVwiPlxuICAgICAgICAgIDxub3ZvLWNoaXAgKm5nRm9yPVwibGV0IGNoaXAgb2YgZm9ybUdyb3VwLnZhbHVlPy52YWx1ZSB8fCBbXVwiIFt2YWx1ZV09XCJjaGlwXCIgKHJlbW92ZWQpPVwicmVtb3ZlKGNoaXAsIGZvcm1Hcm91cClcIj5cbiAgICAgICAgICAgIHt7IGNoaXAgfX1cbiAgICAgICAgICAgIDxub3ZvLWljb24gbm92b0NoaXBSZW1vdmU+Y2xvc2U8L25vdm8taWNvbj5cbiAgICAgICAgICA8L25vdm8tY2hpcD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG5vdm9DaGlwSW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVscy50eXBlVG9BZGRDaGlwc1wiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgKG5vdm9DaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGQoJGV2ZW50LCBmb3JtR3JvdXApXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25vdm8tY2hpcC1saXN0PlxuICAgICAgICA8bm92by1hdXRvY29tcGxldGU+PC9ub3ZvLWF1dG9jb21wbGV0ZT5cbiAgICAgIDwvbm92by1maWVsZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgLy8gQ2hhbmdlIGRldGVjdGlvbiBpcyBpbnRlbnRpb25hbGx5IG5vdCBzZXQgdG8gT25QdXNoLiBUaGlzIGNvbXBvbmVudCdzIHRlbXBsYXRlIHdpbGwgYmUgcHJvdmlkZWRcbiAgLy8gdG8gdGhlIHRhYmxlIHRvIGJlIGluc2VydGVkIGludG8gaXRzIHZpZXcuIFRoaXMgaXMgcHJvYmxlbWF0aWMgd2hlbiBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bnMgc2luY2VcbiAgLy8gdGhlIGJpbmRpbmdzIGluIHRoaXMgdGVtcGxhdGUgd2lsbCBiZSBldmFsdWF0ZWQgX2FmdGVyXyB0aGUgdGFibGUncyB2aWV3IGlzIGV2YWx1YXRlZCwgd2hpY2hcbiAgLy8gbWVhbidzIHRoZSB0ZW1wbGF0ZSBpbiB0aGUgdGFibGUncyB2aWV3IHdpbGwgbm90IGhhdmUgdGhlIHVwZGF0ZWQgdmFsdWUgKGFuZCBpbiBmYWN0IHdpbGwgY2F1c2VcbiAgLy8gYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcikuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YWxpZGF0ZS1kZWNvcmF0b3JzXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0RlZmF1bHRTdHJpbmdDb25kaXRpb25EZWYgZXh0ZW5kcyBBYnN0cmFjdENvbmRpdGlvbkZpZWxkRGVmIHtcbiAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xuICBkZWZhdWx0T3BlcmF0b3IgPSAnaW5jbHVkZUFueSc7XG4gIG1vZGVsID0gJyc7XG5cbiAgZ2V0VmFsdWUoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cC52YWx1ZT8udmFsdWUgfHwgW107XG4gIH1cblxuICBhZGQoZXZlbnQ6IGFueSwgZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LmlucHV0O1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgY29uc3QgdmFsdWVUb0FkZCA9IGV2ZW50LnZhbHVlO1xuICAgIGlmICh2YWx1ZVRvQWRkICE9PSAnJykge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0VmFsdWUoZm9ybUdyb3VwKTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKFt2YWx1ZVRvQWRkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKFsuLi5jdXJyZW50LCB2YWx1ZVRvQWRkXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKHZhbHVlVG9SZW1vdmU6IHN0cmluZywgZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXRWYWx1ZShmb3JtR3JvdXApO1xuICAgIGNvbnN0IGluZGV4ID0gY3VycmVudC5pbmRleE9mKHZhbHVlVG9SZW1vdmUpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IFsuLi5jdXJyZW50XVxuICAgICAgb2xkVmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUob2xkVmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIl19
|