@acpaas-ui/ngx-forms 5.3.0 → 6.0.0-beta.0
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/README.md +0 -2
- package/esm2020/acpaas-ui-ngx-forms.mjs +5 -0
- package/esm2020/lib/auto-complete/auto-complete.module.mjs +25 -0
- package/esm2020/lib/auto-complete/components/auto-complete/auto-complete.component.mjs +370 -0
- package/esm2020/lib/auto-complete/public-api.mjs +3 -0
- package/esm2020/lib/datepicker/components/datepicker/datepicker.component.mjs +274 -0
- package/esm2020/lib/datepicker/datepicker.conf.mjs +9 -0
- package/esm2020/lib/datepicker/datepicker.module.mjs +55 -0
- package/esm2020/lib/datepicker/public-api.mjs +4 -0
- package/esm2020/lib/datepicker/types/datepicker.types.mjs +2 -0
- package/esm2020/lib/mask/directives/mask.directive.mjs +25 -0
- package/esm2020/lib/mask/mask.module.mjs +20 -0
- package/esm2020/lib/mask/public-api.mjs +3 -0
- package/esm2020/lib/range-slider/components/range-slider/range-slider.component.mjs +349 -0
- package/esm2020/lib/range-slider/public-api.mjs +3 -0
- package/esm2020/lib/range-slider/range-slider.module.mjs +20 -0
- package/esm2020/lib/range-slider/types/range-slider.types.mjs +2 -0
- package/esm2020/lib/search-filter/components/search-filter/search-filter.component.mjs +259 -0
- package/esm2020/lib/search-filter/public-api.mjs +3 -0
- package/esm2020/lib/search-filter/search-filter.module.mjs +22 -0
- package/esm2020/lib/search-filter/types/search-filter.types.mjs +2 -0
- package/esm2020/lib/shared/services/search.service.mjs +32 -0
- package/esm2020/lib/shared/types/search.types.mjs +2 -0
- package/esm2020/lib/timepicker/classes/timepicker.validators.mjs +49 -0
- package/esm2020/lib/timepicker/components/timepicker/timepicker.component.mjs +229 -0
- package/esm2020/lib/timepicker/public-api.mjs +5 -0
- package/esm2020/lib/timepicker/timepicker.module.mjs +22 -0
- package/esm2020/lib/timepicker/types/timepicker.types.mjs +7 -0
- package/esm2020/lib/upload/classes/uploader.class.mjs +112 -0
- package/esm2020/lib/upload/components/upload/upload.component.mjs +97 -0
- package/esm2020/lib/upload/components/upload-input/upload-input.component.mjs +56 -0
- package/esm2020/lib/upload/components/upload-queue/upload-queue.component.mjs +78 -0
- package/esm2020/lib/upload/components/upload-zone/upload-zone.component.mjs +252 -0
- package/esm2020/lib/upload/components/validation-list/validation-list.component.mjs +64 -0
- package/esm2020/lib/upload/public-api.mjs +10 -0
- package/esm2020/lib/upload/services/validation-messages.service.mjs +29 -0
- package/esm2020/lib/upload/types/upload.types.mjs +2 -0
- package/esm2020/lib/upload/upload.conf.mjs +12 -0
- package/esm2020/lib/upload/upload.module.mjs +45 -0
- package/esm2020/public-api.mjs +8 -0
- package/fesm2015/acpaas-ui-ngx-forms.mjs +2591 -0
- package/fesm2015/acpaas-ui-ngx-forms.mjs.map +1 -0
- package/fesm2020/acpaas-ui-ngx-forms.mjs +2402 -0
- package/fesm2020/acpaas-ui-ngx-forms.mjs.map +1 -0
- package/{acpaas-ui-ngx-forms.d.ts → index.d.ts} +1 -1
- package/lib/auto-complete/auto-complete.module.d.ts +10 -0
- package/lib/auto-complete/components/auto-complete/auto-complete.component.d.ts +5 -0
- package/lib/datepicker/components/datepicker/datepicker.component.d.ts +15 -8
- package/lib/datepicker/datepicker.module.d.ts +11 -1
- package/lib/datepicker/public-api.d.ts +1 -1
- package/lib/mask/directives/mask.directive.d.ts +3 -0
- package/lib/mask/mask.module.d.ts +6 -0
- package/lib/range-slider/components/range-slider/range-slider.component.d.ts +8 -2
- package/lib/range-slider/range-slider.module.d.ts +7 -0
- package/lib/search-filter/components/search-filter/search-filter.component.d.ts +10 -4
- package/lib/search-filter/search-filter.module.d.ts +9 -0
- package/lib/shared/services/search.service.d.ts +3 -0
- package/lib/timepicker/components/timepicker/timepicker.component.d.ts +9 -4
- package/lib/timepicker/timepicker.module.d.ts +8 -0
- package/lib/upload/components/upload/upload.component.d.ts +5 -0
- package/lib/upload/components/upload-input/upload-input.component.d.ts +3 -0
- package/lib/upload/components/upload-queue/upload-queue.component.d.ts +3 -0
- package/lib/upload/components/upload-zone/upload-zone.component.d.ts +7 -0
- package/lib/upload/components/validation-list/validation-list.component.d.ts +3 -0
- package/lib/upload/services/validation-messages.service.d.ts +3 -0
- package/lib/upload/upload.module.d.ts +14 -1
- package/package.json +37 -24
- package/public-api.d.ts +0 -1
- package/acpaas-ui-ngx-forms.metadata.json +0 -1
- package/bundles/acpaas-ui-ngx-forms.umd.js +0 -3854
- package/bundles/acpaas-ui-ngx-forms.umd.js.map +0 -1
- package/bundles/acpaas-ui-ngx-forms.umd.min.js +0 -2
- package/bundles/acpaas-ui-ngx-forms.umd.min.js.map +0 -1
- package/esm2015/acpaas-ui-ngx-forms.js +0 -11
- package/esm2015/lib/auto-complete/auto-complete.module.js +0 -36
- package/esm2015/lib/auto-complete/components/auto-complete/auto-complete.component.js +0 -416
- package/esm2015/lib/auto-complete/public-api.js +0 -8
- package/esm2015/lib/datepicker/components/datepicker/datepicker.component.js +0 -335
- package/esm2015/lib/datepicker/datepicker.conf.js +0 -18
- package/esm2015/lib/datepicker/datepicker.module.js +0 -59
- package/esm2015/lib/datepicker/public-api.js +0 -9
- package/esm2015/lib/datepicker/types/datepicker.types.js +0 -20
- package/esm2015/lib/mask/directives/mask.directive.js +0 -51
- package/esm2015/lib/mask/mask.module.js +0 -25
- package/esm2015/lib/mask/public-api.js +0 -8
- package/esm2015/lib/range-slider/components/range-slider/range-slider.component.js +0 -424
- package/esm2015/lib/range-slider/public-api.js +0 -8
- package/esm2015/lib/range-slider/range-slider.module.js +0 -26
- package/esm2015/lib/range-slider/types/range-slider.types.js +0 -16
- package/esm2015/lib/search-filter/components/search-filter/search-filter.component.js +0 -219
- package/esm2015/lib/search-filter/public-api.js +0 -8
- package/esm2015/lib/search-filter/search-filter.module.js +0 -30
- package/esm2015/lib/search-filter/types/search-filter.types.js +0 -16
- package/esm2015/lib/shared/services/search.service.js +0 -58
- package/esm2015/lib/shared/types/search.types.js +0 -20
- package/esm2015/lib/timepicker/classes/timepicker.validators.js +0 -84
- package/esm2015/lib/timepicker/components/timepicker/timepicker.component.js +0 -227
- package/esm2015/lib/timepicker/public-api.js +0 -10
- package/esm2015/lib/timepicker/timepicker.module.js +0 -29
- package/esm2015/lib/timepicker/types/timepicker.types.js +0 -13
- package/esm2015/lib/upload/classes/uploader.class.js +0 -189
- package/esm2015/lib/upload/components/upload/upload.component.js +0 -100
- package/esm2015/lib/upload/components/upload-input/upload-input.component.js +0 -67
- package/esm2015/lib/upload/components/upload-queue/upload-queue.component.js +0 -68
- package/esm2015/lib/upload/components/upload-zone/upload-zone.component.js +0 -219
- package/esm2015/lib/upload/components/validation-list/validation-list.component.js +0 -62
- package/esm2015/lib/upload/public-api.js +0 -15
- package/esm2015/lib/upload/services/validation-messages.service.js +0 -48
- package/esm2015/lib/upload/types/upload.types.js +0 -48
- package/esm2015/lib/upload/upload.conf.js +0 -21
- package/esm2015/lib/upload/upload.module.js +0 -62
- package/esm2015/lib/wysiwyg/components/wysiwyg/wysiwyg.component.js +0 -158
- package/esm2015/lib/wysiwyg/public-api.js +0 -9
- package/esm2015/lib/wysiwyg/wysiwyg.conf.js +0 -24
- package/esm2015/lib/wysiwyg/wysiwyg.module.js +0 -29
- package/esm2015/public-api.js +0 -14
- package/esm5/acpaas-ui-ngx-forms.js +0 -11
- package/esm5/lib/auto-complete/auto-complete.module.js +0 -40
- package/esm5/lib/auto-complete/components/auto-complete/auto-complete.component.js +0 -506
- package/esm5/lib/auto-complete/public-api.js +0 -8
- package/esm5/lib/datepicker/components/datepicker/datepicker.component.js +0 -384
- package/esm5/lib/datepicker/datepicker.conf.js +0 -18
- package/esm5/lib/datepicker/datepicker.module.js +0 -69
- package/esm5/lib/datepicker/public-api.js +0 -9
- package/esm5/lib/datepicker/types/datepicker.types.js +0 -20
- package/esm5/lib/mask/directives/mask.directive.js +0 -58
- package/esm5/lib/mask/mask.module.js +0 -29
- package/esm5/lib/mask/public-api.js +0 -8
- package/esm5/lib/range-slider/components/range-slider/range-slider.component.js +0 -514
- package/esm5/lib/range-slider/public-api.js +0 -8
- package/esm5/lib/range-slider/range-slider.module.js +0 -30
- package/esm5/lib/range-slider/types/range-slider.types.js +0 -16
- package/esm5/lib/search-filter/components/search-filter/search-filter.component.js +0 -256
- package/esm5/lib/search-filter/public-api.js +0 -8
- package/esm5/lib/search-filter/search-filter.module.js +0 -34
- package/esm5/lib/search-filter/types/search-filter.types.js +0 -16
- package/esm5/lib/shared/services/search.service.js +0 -68
- package/esm5/lib/shared/types/search.types.js +0 -20
- package/esm5/lib/timepicker/classes/timepicker.validators.js +0 -102
- package/esm5/lib/timepicker/components/timepicker/timepicker.component.js +0 -259
- package/esm5/lib/timepicker/public-api.js +0 -10
- package/esm5/lib/timepicker/timepicker.module.js +0 -33
- package/esm5/lib/timepicker/types/timepicker.types.js +0 -13
- package/esm5/lib/upload/classes/uploader.class.js +0 -249
- package/esm5/lib/upload/components/upload/upload.component.js +0 -117
- package/esm5/lib/upload/components/upload-input/upload-input.component.js +0 -84
- package/esm5/lib/upload/components/upload-queue/upload-queue.component.js +0 -78
- package/esm5/lib/upload/components/upload-zone/upload-zone.component.js +0 -264
- package/esm5/lib/upload/components/validation-list/validation-list.component.js +0 -81
- package/esm5/lib/upload/public-api.js +0 -15
- package/esm5/lib/upload/services/validation-messages.service.js +0 -47
- package/esm5/lib/upload/types/upload.types.js +0 -48
- package/esm5/lib/upload/upload.conf.js +0 -21
- package/esm5/lib/upload/upload.module.js +0 -71
- package/esm5/lib/wysiwyg/components/wysiwyg/wysiwyg.component.js +0 -199
- package/esm5/lib/wysiwyg/public-api.js +0 -9
- package/esm5/lib/wysiwyg/wysiwyg.conf.js +0 -24
- package/esm5/lib/wysiwyg/wysiwyg.module.js +0 -33
- package/esm5/public-api.js +0 -14
- package/fesm2015/acpaas-ui-ngx-forms.js +0 -3071
- package/fesm2015/acpaas-ui-ngx-forms.js.map +0 -1
- package/fesm5/acpaas-ui-ngx-forms.js +0 -3627
- package/fesm5/acpaas-ui-ngx-forms.js.map +0 -1
- package/lib/wysiwyg/components/wysiwyg/wysiwyg.component.d.ts +0 -43
- package/lib/wysiwyg/public-api.d.ts +0 -3
- package/lib/wysiwyg/wysiwyg.conf.d.ts +0 -18
- package/lib/wysiwyg/wysiwyg.module.d.ts +0 -2
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { debounce, get } from 'lodash-es';
|
|
4
|
+
import { FlyoutSize } from '@acpaas-ui/ngx-flyout';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@acpaas-ui/ngx-flyout";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
import * as i4 from "@acpaas-ui/ngx-icon";
|
|
10
|
+
const _c0 = function (a0, a1) { return { "a-button--l": a0, "a-button--s": a1 }; };
|
|
11
|
+
function SearchFilterComponent_button_8_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
13
|
+
i0.ɵɵelementStart(0, "button", 12);
|
|
14
|
+
i0.ɵɵlistener("click", function SearchFilterComponent_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.clear()); });
|
|
15
|
+
i0.ɵɵelement(1, "aui-icon", 13);
|
|
16
|
+
i0.ɵɵelementEnd();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c0, ctx_r0.size === "large", ctx_r0.size === "small"));
|
|
20
|
+
i0.ɵɵattribute("disabled", ctx_r0.isDisabled ? "" : null);
|
|
21
|
+
} }
|
|
22
|
+
function SearchFilterComponent_aui_icon_9_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelement(0, "aui-icon", 13);
|
|
24
|
+
} }
|
|
25
|
+
function SearchFilterComponent_p_11_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "p", 14);
|
|
27
|
+
i0.ɵɵtext(1);
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵadvance(1);
|
|
32
|
+
i0.ɵɵtextInterpolate(ctx_r2.labelResults);
|
|
33
|
+
} }
|
|
34
|
+
function SearchFilterComponent_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelement(0, "div", 15);
|
|
36
|
+
} }
|
|
37
|
+
function SearchFilterComponent_ul_13_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "li", 19)(1, "p", 20);
|
|
39
|
+
i0.ɵɵtext(2);
|
|
40
|
+
i0.ɵɵelementEnd()();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
43
|
+
i0.ɵɵadvance(2);
|
|
44
|
+
i0.ɵɵtextInterpolate(ctx_r7.labelNoResults);
|
|
45
|
+
} }
|
|
46
|
+
function SearchFilterComponent_ul_13_li_2_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
48
|
+
i0.ɵɵelementStart(0, "li", 19)(1, "div", 21)(2, "div", 22)(3, "input", 23);
|
|
49
|
+
i0.ɵɵlistener("change", function SearchFilterComponent_ul_13_li_2_Template_input_change_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r12); const choice_r9 = restoredCtx.$implicit; const ctx_r11 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r11.toggleSelected(choice_r9.label)); });
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
i0.ɵɵelementStart(4, "label", 24);
|
|
52
|
+
i0.ɵɵtext(5);
|
|
53
|
+
i0.ɵɵelementEnd()()()();
|
|
54
|
+
} if (rf & 2) {
|
|
55
|
+
const choice_r9 = ctx.$implicit;
|
|
56
|
+
const i_r10 = ctx.index;
|
|
57
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
58
|
+
i0.ɵɵadvance(3);
|
|
59
|
+
i0.ɵɵpropertyInterpolate("id", "checkbox--" + i_r10 + "--" + ctx_r8.id);
|
|
60
|
+
i0.ɵɵpropertyInterpolate("name", "checkbox--" + i_r10 + "--" + ctx_r8.id);
|
|
61
|
+
i0.ɵɵproperty("checked", ctx_r8.selectedItems.indexOf(choice_r9.label) >= 0);
|
|
62
|
+
i0.ɵɵattribute("disabled", ctx_r8.isDisabled ? true : null);
|
|
63
|
+
i0.ɵɵadvance(1);
|
|
64
|
+
i0.ɵɵpropertyInterpolate("for", "checkbox--" + i_r10 + "--" + ctx_r8.id);
|
|
65
|
+
i0.ɵɵadvance(1);
|
|
66
|
+
i0.ɵɵtextInterpolate(choice_r9.label);
|
|
67
|
+
} }
|
|
68
|
+
function SearchFilterComponent_ul_13_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "ul", 16);
|
|
70
|
+
i0.ɵɵtemplate(1, SearchFilterComponent_ul_13_li_1_Template, 3, 1, "li", 17);
|
|
71
|
+
i0.ɵɵtemplate(2, SearchFilterComponent_ul_13_li_2_Template, 6, 6, "li", 18);
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
} if (rf & 2) {
|
|
74
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
75
|
+
i0.ɵɵadvance(1);
|
|
76
|
+
i0.ɵɵproperty("ngIf", !ctx_r4.filteredChoices.length);
|
|
77
|
+
i0.ɵɵadvance(1);
|
|
78
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.filteredChoices);
|
|
79
|
+
} }
|
|
80
|
+
const _c1 = function (a0, a1, a2) { return { "a-input--l": a0, "a-input--s": a1, "has-icon-right": a2 }; };
|
|
81
|
+
export class SearchFilterComponent {
|
|
82
|
+
constructor() {
|
|
83
|
+
this.flyoutSize = FlyoutSize.Small;
|
|
84
|
+
this.labelDeselect = 'Alles deselecteren';
|
|
85
|
+
this.labelResults = 'Resultaten';
|
|
86
|
+
this.labelNoResults = 'Geen resultaten gevonden.';
|
|
87
|
+
this.choices = [];
|
|
88
|
+
this.placeholder = 'Zoeken';
|
|
89
|
+
this.inputDelay = 150;
|
|
90
|
+
this.onSelect = () => { };
|
|
91
|
+
this.onClear = () => { };
|
|
92
|
+
this.size = 'default';
|
|
93
|
+
this.search = new EventEmitter();
|
|
94
|
+
this.query = '';
|
|
95
|
+
this.selectedItems = [];
|
|
96
|
+
this.filteredChoices = [];
|
|
97
|
+
this.loading = false;
|
|
98
|
+
this.isDisabled = false;
|
|
99
|
+
this.updateModel = () => { };
|
|
100
|
+
this.filterDataFromSearch = debounce(this.filterData.bind(this), this.inputDelay);
|
|
101
|
+
}
|
|
102
|
+
writeValue(value) {
|
|
103
|
+
this.selectedItems = Array.isArray(value) ? value : [];
|
|
104
|
+
}
|
|
105
|
+
registerOnChange(onChange) {
|
|
106
|
+
this.updateModel = onChange;
|
|
107
|
+
}
|
|
108
|
+
registerOnTouched() { }
|
|
109
|
+
setDisabledState(isDisabled) {
|
|
110
|
+
this.isDisabled = isDisabled;
|
|
111
|
+
}
|
|
112
|
+
ngOnChanges(changes) {
|
|
113
|
+
const choices = get(changes, 'choices.currentValue', null);
|
|
114
|
+
if (!choices) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (this.remote) {
|
|
118
|
+
this.filteredChoices = [...choices];
|
|
119
|
+
this.loading = false;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.filterData();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
filterData() {
|
|
126
|
+
if (this.remote) {
|
|
127
|
+
this.loading = true;
|
|
128
|
+
return this.search.emit(this.query);
|
|
129
|
+
}
|
|
130
|
+
this.filterChoices();
|
|
131
|
+
}
|
|
132
|
+
clear() {
|
|
133
|
+
this.selectedItems = [];
|
|
134
|
+
this.query = '';
|
|
135
|
+
this.filterData();
|
|
136
|
+
this.updateModel(this.selectedItems);
|
|
137
|
+
this.onClear();
|
|
138
|
+
}
|
|
139
|
+
toggleSelected(choice) {
|
|
140
|
+
const selected = this.selectedItems.indexOf(choice);
|
|
141
|
+
if (selected < 0) {
|
|
142
|
+
this.selectedItems = this.selectedItems.concat(choice);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.selectedItems = [...this.selectedItems.slice(0, selected), ...this.selectedItems.slice(selected + 1)];
|
|
146
|
+
}
|
|
147
|
+
this.updateModel(this.selectedItems);
|
|
148
|
+
this.onSelect();
|
|
149
|
+
}
|
|
150
|
+
filterChoices() {
|
|
151
|
+
this.filteredChoices = this.choices.filter((choice) => {
|
|
152
|
+
return (this.selectedItems.indexOf(choice.value) < 0 &&
|
|
153
|
+
choice.label.toLowerCase().indexOf(this.query.toLowerCase()) >= 0);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
hasClose() {
|
|
157
|
+
return this.filteredChoices?.length && this.query?.length > 1;
|
|
158
|
+
}
|
|
159
|
+
getSelectedLabels() {
|
|
160
|
+
return this.selectedItems.length ? this.selectedItems.map((el) => el).join(', ') : null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** @nocollapse */ SearchFilterComponent.ɵfac = function SearchFilterComponent_Factory(t) { return new (t || SearchFilterComponent)(); };
|
|
164
|
+
/** @nocollapse */ SearchFilterComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SearchFilterComponent, selectors: [["aui-search-filter"]], inputs: { id: "id", name: "name", flyoutSize: "flyoutSize", flyoutAlign: "flyoutAlign", label: "label", description: "description", labelDeselect: "labelDeselect", labelResults: "labelResults", labelNoResults: "labelNoResults", choices: "choices", remote: "remote", placeholder: "placeholder", inputDelay: "inputDelay", onSelect: "onSelect", onClear: "onClear", size: "size" }, outputs: { search: "search" }, features: [i0.ɵɵProvidersFeature([
|
|
165
|
+
{
|
|
166
|
+
provide: NG_VALUE_ACCESSOR,
|
|
167
|
+
useExisting: forwardRef((() => SearchFilterComponent)),
|
|
168
|
+
multi: true,
|
|
169
|
+
},
|
|
170
|
+
]), i0.ɵɵNgOnChangesFeature], decls: 14, vars: 22, consts: [["aria-haspopup", "listbox", "auiFlyout", "", 1, "m-search-filter", 3, "align", "size"], [1, "a-input", 3, "ngClass"], [1, "a-input__label", 3, "for"], [1, "a-input__description", 3, "id"], [1, "m-search-filter__input"], ["aria-autocomplete", "list", "type", "text", "auiFlyoutAction", "", 3, "ngModel", "id", "name", "value", "input", "ngModelChange"], ["class", "a-button a-button--outlined has-icon m-search-filter__button a-button--danger", "aria-label", "Zoekopdracht wissen", "type", "button", 3, "ngClass", "click", 4, "ngIf"], ["name", "ai-close", 4, "ngIf"], ["auiFlyoutZone", "", 1, "m-search-filter__search", "m-search-filter__search--scroll"], ["class", "h6 m-search-filter__results-title u-margin-bottom-xs", 4, "ngIf"], ["class", "u-text-center u-padding a-spinner", 4, "ngIf"], ["class", "a-checkbox-list a-checkbox-list--flushed", 4, "ngIf"], ["aria-label", "Zoekopdracht wissen", "type", "button", 1, "a-button", "a-button--outlined", "has-icon", "m-search-filter__button", "a-button--danger", 3, "ngClass", "click"], ["name", "ai-close"], [1, "h6", "m-search-filter__results-title", "u-margin-bottom-xs"], [1, "u-text-center", "u-padding", "a-spinner"], [1, "a-checkbox-list", "a-checkbox-list--flushed"], ["class", "a-checkbox-list__item", 4, "ngIf"], ["class", "a-checkbox-list__item", 4, "ngFor", "ngForOf"], [1, "a-checkbox-list__item"], [1, "u-margin-xs"], [1, "a-input", "a-checkbox-list__checkbox"], [1, "a-input__checkbox"], ["type", "checkbox", 3, "checked", "id", "name", "change"], [3, "for"]], template: function SearchFilterComponent_Template(rf, ctx) { if (rf & 1) {
|
|
171
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "label", 2);
|
|
172
|
+
i0.ɵɵtext(3);
|
|
173
|
+
i0.ɵɵelementEnd();
|
|
174
|
+
i0.ɵɵelementStart(4, "small", 3);
|
|
175
|
+
i0.ɵɵtext(5, "Input description");
|
|
176
|
+
i0.ɵɵelementEnd();
|
|
177
|
+
i0.ɵɵelementStart(6, "div", 4)(7, "input", 5);
|
|
178
|
+
i0.ɵɵlistener("input", function SearchFilterComponent_Template_input_input_7_listener() { return ctx.filterDataFromSearch(); })("ngModelChange", function SearchFilterComponent_Template_input_ngModelChange_7_listener($event) { return ctx.query = $event; });
|
|
179
|
+
i0.ɵɵelementEnd();
|
|
180
|
+
i0.ɵɵtemplate(8, SearchFilterComponent_button_8_Template, 2, 5, "button", 6);
|
|
181
|
+
i0.ɵɵtemplate(9, SearchFilterComponent_aui_icon_9_Template, 1, 0, "aui-icon", 7);
|
|
182
|
+
i0.ɵɵelementEnd()();
|
|
183
|
+
i0.ɵɵelementStart(10, "div", 8);
|
|
184
|
+
i0.ɵɵtemplate(11, SearchFilterComponent_p_11_Template, 2, 1, "p", 9);
|
|
185
|
+
i0.ɵɵtemplate(12, SearchFilterComponent_div_12_Template, 1, 0, "div", 10);
|
|
186
|
+
i0.ɵɵtemplate(13, SearchFilterComponent_ul_13_Template, 3, 2, "ul", 11);
|
|
187
|
+
i0.ɵɵelementEnd()();
|
|
188
|
+
} if (rf & 2) {
|
|
189
|
+
i0.ɵɵproperty("align", ctx.flyoutAlign)("size", ctx.flyoutSize);
|
|
190
|
+
i0.ɵɵadvance(1);
|
|
191
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(18, _c1, ctx.size === "large", ctx.size === "small", ctx.hasClose));
|
|
192
|
+
i0.ɵɵadvance(1);
|
|
193
|
+
i0.ɵɵpropertyInterpolate("for", ctx.id + "-search");
|
|
194
|
+
i0.ɵɵadvance(1);
|
|
195
|
+
i0.ɵɵtextInterpolate(ctx.label);
|
|
196
|
+
i0.ɵɵadvance(1);
|
|
197
|
+
i0.ɵɵpropertyInterpolate("id", ctx.id + "-description");
|
|
198
|
+
i0.ɵɵadvance(3);
|
|
199
|
+
i0.ɵɵpropertyInterpolate("id", ctx.id + "-search");
|
|
200
|
+
i0.ɵɵpropertyInterpolate("name", ctx.name + "-search");
|
|
201
|
+
i0.ɵɵpropertyInterpolate("value", ctx.getSelectedLabels());
|
|
202
|
+
i0.ɵɵproperty("ngModel", ctx.query);
|
|
203
|
+
i0.ɵɵattribute("aria-labelledby", ctx.id + "-label")("placeholder", ctx.placeholder)("disabled", ctx.isDisabled ? "" : null);
|
|
204
|
+
i0.ɵɵadvance(1);
|
|
205
|
+
i0.ɵɵproperty("ngIf", ctx.hasClose);
|
|
206
|
+
i0.ɵɵadvance(1);
|
|
207
|
+
i0.ɵɵproperty("ngIf", !ctx.hasClose);
|
|
208
|
+
i0.ɵɵadvance(2);
|
|
209
|
+
i0.ɵɵproperty("ngIf", ctx.labelResults);
|
|
210
|
+
i0.ɵɵadvance(1);
|
|
211
|
+
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
212
|
+
i0.ɵɵadvance(1);
|
|
213
|
+
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
214
|
+
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.FlyoutActionDirective, i2.FlyoutZoneDirective, i2.FlyoutDirective, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.IconComponent], styles: [".m-search-filter[_ngcontent-%COMP%]{display:block}.m-search-filter__input[_ngcontent-%COMP%]{display:flex;padding:0}.m-search-filter__input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{border-right:none}.m-search-filter__button[_ngcontent-%COMP%]{display:inline-block;padding:0;position:relative;vertical-align:middle}.m-search-filter__button[_ngcontent-%COMP%] .ai[_ngcontent-%COMP%]{position:relative;transform:none!important;top:0}"] });
|
|
215
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchFilterComponent, [{
|
|
216
|
+
type: Component,
|
|
217
|
+
args: [{ selector: 'aui-search-filter', providers: [
|
|
218
|
+
{
|
|
219
|
+
provide: NG_VALUE_ACCESSOR,
|
|
220
|
+
useExisting: forwardRef((() => SearchFilterComponent)),
|
|
221
|
+
multi: true,
|
|
222
|
+
},
|
|
223
|
+
], template: "<div [align]=\"flyoutAlign\" [size]=\"flyoutSize\" aria-haspopup=\"listbox\" auiFlyout class=\"m-search-filter\">\n <div\n class=\"a-input\"\n [ngClass]=\"{\n 'a-input--l': size === 'large',\n 'a-input--s': size === 'small',\n 'has-icon-right': hasClose\n }\"\n >\n <label class=\"a-input__label\" for=\"{{ id + '-search' }}\">{{ label }}</label>\n <small class=\"a-input__description\" id=\"{{ id + '-description' }}\">Input description</small>\n <div class=\"m-search-filter__input\">\n <input\n (input)=\"filterDataFromSearch()\"\n [(ngModel)]=\"query\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.placeholder]=\"placeholder\"\n [attr.disabled]=\"isDisabled ? '' : null\"\n aria-autocomplete=\"list\"\n id=\"{{ id + '-search' }}\"\n name=\"{{ name + '-search' }}\"\n value=\"{{ getSelectedLabels() }}\"\n type=\"text\"\n auiFlyoutAction\n />\n <button\n *ngIf=\"hasClose\"\n [ngClass]=\"{\n 'a-button--l': size === 'large',\n 'a-button--s': size === 'small'\n }\"\n class=\"a-button a-button--outlined has-icon m-search-filter__button a-button--danger\"\n aria-label=\"Zoekopdracht wissen\"\n type=\"button\"\n (click)=\"clear()\"\n [attr.disabled]=\"isDisabled ? '' : null\"\n >\n <aui-icon name=\"ai-close\"></aui-icon>\n </button>\n <aui-icon *ngIf=\"!hasClose\" name=\"ai-close\"></aui-icon>\n </div>\n </div>\n <div auiFlyoutZone class=\"m-search-filter__search m-search-filter__search--scroll\">\n <p *ngIf=\"labelResults\" class=\"h6 m-search-filter__results-title u-margin-bottom-xs\">{{ labelResults }}</p>\n <div *ngIf=\"loading\" class=\"u-text-center u-padding a-spinner\"></div>\n <ul *ngIf=\"!loading\" class=\"a-checkbox-list a-checkbox-list--flushed\">\n <li *ngIf=\"!filteredChoices.length\" class=\"a-checkbox-list__item\">\n <p class=\"u-margin-xs\">{{ labelNoResults }}</p>\n </li>\n <li *ngFor=\"let choice of filteredChoices; index as i\" class=\"a-checkbox-list__item\">\n <div class=\"a-input a-checkbox-list__checkbox\">\n <div class=\"a-input__checkbox\">\n <input\n (change)=\"toggleSelected(choice.label)\"\n [attr.disabled]=\"isDisabled ? true : null\"\n [checked]=\"selectedItems.indexOf(choice.label) >= 0\"\n id=\"{{ 'checkbox--' + i + '--' + id }}\"\n name=\"{{ 'checkbox--' + i + '--' + id }}\"\n type=\"checkbox\"\n />\n <label for=\"{{ 'checkbox--' + i + '--' + id }}\">{{ choice.label }}</label>\n </div>\n </div>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".m-search-filter{display:block}.m-search-filter__input{display:flex;padding:0}.m-search-filter__input input{border-right:none}.m-search-filter__button{display:inline-block;padding:0;position:relative;vertical-align:middle}.m-search-filter__button .ai{position:relative;transform:none!important;top:0}\n"] }]
|
|
224
|
+
}], function () { return []; }, { id: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], name: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], flyoutSize: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], flyoutAlign: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], label: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], description: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], labelDeselect: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], labelResults: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], labelNoResults: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], choices: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], remote: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], placeholder: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], inputDelay: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}], onSelect: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], onClear: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], size: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], search: [{
|
|
257
|
+
type: Output
|
|
258
|
+
}] }); })();
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlYXJjaC1maWx0ZXIvY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyL3NlYXJjaC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWFyY2gtZmlsdGVyL2NvbXBvbmVudHMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0lDcUI3QyxrQ0FXQztJQUZDLHFLQUFTLGVBQUEsY0FBTyxDQUFBLElBQUM7SUFHakIsK0JBQXFDO0lBQ3ZDLGlCQUFTOzs7SUFYUCxzR0FHRTtJQUtGLHlEQUF3Qzs7O0lBSTFDLCtCQUF1RDs7O0lBSXpELDZCQUFxRjtJQUFBLFlBQWtCO0lBQUEsaUJBQUk7OztJQUF0QixlQUFrQjtJQUFsQix5Q0FBa0I7OztJQUN2RywwQkFBcUU7OztJQUVuRSw4QkFBa0UsWUFBQTtJQUN6QyxZQUFvQjtJQUFBLGlCQUFJLEVBQUE7OztJQUF4QixlQUFvQjtJQUFwQiwyQ0FBb0I7Ozs7SUFFN0MsOEJBQXFGLGNBQUEsY0FBQSxnQkFBQTtJQUk3RSx3T0FBVSxlQUFBLHVDQUE0QixDQUFBLElBQUM7SUFEekMsaUJBT0U7SUFDRixpQ0FBZ0Q7SUFBQSxZQUFrQjtJQUFBLGlCQUFRLEVBQUEs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a0I7UUFDaEIsZUFBYTtRQUFiLGtDQUFhO1FBQ2QsZUFBYztRQUFkLG1DQUFjOzt1RkR6QlYscUJBQXFCO2NBWmpDLFNBQVM7MkJBQ0UsbUJBQW1CLGFBR2xCO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDO3dCQUNwRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtzQ0FHZSxFQUFFO2tCQUFqQixLQUFLO1lBQ1UsSUFBSTtrQkFBbkIsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGNBQWM7a0JBQTdCLEtBQUs7WUFDVSxPQUFPO2tCQUF0QixLQUFLO1lBQ1UsTUFBTTtrQkFBckIsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxJQUFJO2tCQUFuQixLQUFLO1lBRVcsTUFBTTtrQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IEZseW91dFNpemUgfSBmcm9tICdAYWNwYWFzLXVpL25neC1mbHlvdXQnO1xuXG5pbXBvcnQgeyBTZWFyY2hGaWx0ZXJDaG9pY2UgfSBmcm9tICcuLi8uLi90eXBlcy9zZWFyY2gtZmlsdGVyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXNlYXJjaC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWFyY2hGaWx0ZXJDb21wb25lbnQpLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1mb3J3YXJkLXJlZlxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZmx5b3V0U2l6ZSA9IEZseW91dFNpemUuU21hbGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBmbHlvdXRBbGlnbjtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxEZXNlbGVjdCA9ICdBbGxlcyBkZXNlbGVjdGVyZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxSZXN1bHRzID0gJ1Jlc3VsdGF0ZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxOb1Jlc3VsdHMgPSAnR2VlbiByZXN1bHRhdGVuIGdldm9uZGVuLic7XG4gIEBJbnB1dCgpIHB1YmxpYyBjaG9pY2VzOiBTZWFyY2hGaWx0ZXJDaG9pY2VbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgcmVtb3RlOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnWm9la2VuJztcbiAgQElucHV0KCkgcHVibGljIGlucHV0RGVsYXkgPSAxNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBvblNlbGVjdDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBASW5wdXQoKSBwdWJsaWMgb25DbGVhcjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ2xhcmdlJyB8ICdkZWZhdWx0JyB8ICdzbWFsbCcgfCAndGlueScgPSAnZGVmYXVsdCc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHF1ZXJ5ID0gJyc7XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZmlsdGVyZWRDaG9pY2VzOiBTZWFyY2hGaWx0ZXJDaG9pY2VbXSA9IFtdO1xuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaWx0ZXJEYXRhRnJvbVNlYXJjaDogKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5maWx0ZXJEYXRhRnJvbVNlYXJjaCA9IGRlYm91bmNlKHRoaXMuZmlsdGVyRGF0YS5iaW5kKHRoaXMpLCB0aGlzLmlucHV0RGVsYXkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU1vZGVsOiAoXykgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IChfKSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsID0gb25DaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBjaG9pY2VzID0gZ2V0KGNoYW5nZXMsICdjaG9pY2VzLmN1cnJlbnRWYWx1ZScsIG51bGwpO1xuXG4gICAgaWYgKCFjaG9pY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVtb3RlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkQ2hvaWNlcyA9IFsuLi5jaG9pY2VzXTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlckRhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaC5lbWl0KHRoaXMucXVlcnkpO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyQ2hvaWNlcygpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICB0aGlzLmZpbHRlckRhdGEoKTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5vbkNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VsZWN0ZWQoY2hvaWNlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGNob2ljZSk7XG5cbiAgICBpZiAoc2VsZWN0ZWQgPCAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuY29uY2F0KGNob2ljZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgc2VsZWN0ZWQpLCAuLi50aGlzLnNlbGVjdGVkSXRlbXMuc2xpY2Uoc2VsZWN0ZWQgKyAxKV07XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMub25TZWxlY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ2hvaWNlcygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkQ2hvaWNlcyA9IHRoaXMuY2hvaWNlcy5maWx0ZXIoKGNob2ljZTogU2VhcmNoRmlsdGVyQ2hvaWNlKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihjaG9pY2UudmFsdWUpIDwgMCAmJlxuICAgICAgICBjaG9pY2UubGFiZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSkgPj0gMFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNDbG9zZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZENob2ljZXM/Lmxlbmd0aCAmJiB0aGlzLnF1ZXJ5Py5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTGFiZWxzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKChlbCkgPT4gZWwpLmpvaW4oJywgJykgOiBudWxsO1xuICB9XG59XG4iLCI8ZGl2IFthbGlnbl09XCJmbHlvdXRBbGlnblwiIFtzaXplXT1cImZseW91dFNpemVcIiBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIGF1aUZseW91dCBjbGFzcz1cIm0tc2VhcmNoLWZpbHRlclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhLWlucHV0XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYS1pbnB1dC0tbCc6IHNpemUgPT09ICdsYXJnZScsXG4gICAgICAnYS1pbnB1dC0tcyc6IHNpemUgPT09ICdzbWFsbCcsXG4gICAgICAnaGFzLWljb24tcmlnaHQnOiBoYXNDbG9zZVxuICAgIH1cIlxuICA+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1pbnB1dF9fbGFiZWxcIiBmb3I9XCJ7eyBpZCArICctc2VhcmNoJyB9fVwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8c21hbGwgY2xhc3M9XCJhLWlucHV0X19kZXNjcmlwdGlvblwiIGlkPVwie3sgaWQgKyAnLWRlc2NyaXB0aW9uJyB9fVwiPklucHV0IGRlc2NyaXB0aW9uPC9zbWFsbD5cbiAgICA8ZGl2IGNsYXNzPVwibS1zZWFyY2gtZmlsdGVyX19pbnB1dFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIChpbnB1dCk9XCJmaWx0ZXJEYXRhRnJvbVNlYXJjaCgpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctbGFiZWwnXCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCJcbiAgICAgICAgaWQ9XCJ7eyBpZCArICctc2VhcmNoJyB9fVwiXG4gICAgICAgIG5hbWU9XCJ7eyBuYW1lICsgJy1zZWFyY2gnIH19XCJcbiAgICAgICAgdmFsdWU9XCJ7eyBnZXRTZWxlY3RlZExhYmVscygpIH19XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdWlGbHlvdXRBY3Rpb25cbiAgICAgIC8+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiaGFzQ2xvc2VcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2EtYnV0dG9uLS1sJzogc2l6ZSA9PT0gJ2xhcmdlJyxcbiAgICAgICAgICAnYS1idXR0b24tLXMnOiBzaXplID09PSAnc21hbGwnXG4gICAgICAgIH1cIlxuICAgICAgICBjbGFzcz1cImEtYnV0dG9uIGEtYnV0dG9uLS1vdXRsaW5lZCBoYXMtaWNvbiBtLXNlYXJjaC1maWx0ZXJfX2J1dHRvbiBhLWJ1dHRvbi0tZGFuZ2VyXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlpvZWtvcGRyYWNodCB3aXNzZW5cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIG5hbWU9XCJhaS1jbG9zZVwiPjwvYXVpLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxhdWktaWNvbiAqbmdJZj1cIiFoYXNDbG9zZVwiIG5hbWU9XCJhaS1jbG9zZVwiPjwvYXVpLWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGF1aUZseW91dFpvbmUgY2xhc3M9XCJtLXNlYXJjaC1maWx0ZXJfX3NlYXJjaCBtLXNlYXJjaC1maWx0ZXJfX3NlYXJjaC0tc2Nyb2xsXCI+XG4gICAgPHAgKm5nSWY9XCJsYWJlbFJlc3VsdHNcIiBjbGFzcz1cImg2IG0tc2VhcmNoLWZpbHRlcl9fcmVzdWx0cy10aXRsZSB1LW1hcmdpbi1ib3R0b20teHNcIj57eyBsYWJlbFJlc3VsdHMgfX08L3A+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInUtdGV4dC1jZW50ZXIgdS1wYWRkaW5nIGEtc3Bpbm5lclwiPjwvZGl2PlxuICAgIDx1bCAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJhLWNoZWNrYm94LWxpc3QgYS1jaGVja2JveC1saXN0LS1mbHVzaGVkXCI+XG4gICAgICA8bGkgKm5nSWY9XCIhZmlsdGVyZWRDaG9pY2VzLmxlbmd0aFwiIGNsYXNzPVwiYS1jaGVja2JveC1saXN0X19pdGVtXCI+XG4gICAgICAgIDxwIGNsYXNzPVwidS1tYXJnaW4teHNcIj57eyBsYWJlbE5vUmVzdWx0cyB9fTwvcD5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNob2ljZSBvZiBmaWx0ZXJlZENob2ljZXM7IGluZGV4IGFzIGlcIiBjbGFzcz1cImEtY2hlY2tib3gtbGlzdF9faXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYS1pbnB1dCBhLWNoZWNrYm94LWxpc3RfX2NoZWNrYm94XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImEtaW5wdXRfX2NoZWNrYm94XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RlZChjaG9pY2UubGFiZWwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRJdGVtcy5pbmRleE9mKGNob2ljZS5sYWJlbCkgPj0gMFwiXG4gICAgICAgICAgICAgIGlkPVwie3sgJ2NoZWNrYm94LS0nICsgaSArICctLScgKyBpZCB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJ7eyAnY2hlY2tib3gtLScgKyBpICsgJy0tJyArIGlkIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwie3sgJ2NoZWNrYm94LS0nICsgaSArICctLScgKyBpZCB9fVwiPnt7IGNob2ljZS5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { SearchFilterComponent } from './components/search-filter/search-filter.component';
|
|
2
|
+
export { SearchFilterModule } from './search-filter.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VhcmNoLWZpbHRlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU2VhcmNoRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvc2VhcmNoLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2VhcmNoRmlsdGVyQ2hvaWNlIH0gZnJvbSAnLi90eXBlcy9zZWFyY2gtZmlsdGVyLnR5cGVzJztcbmV4cG9ydCB7IFNlYXJjaEZpbHRlck1vZHVsZSB9IGZyb20gJy4vc2VhcmNoLWZpbHRlci5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { FlyoutModule } from '@acpaas-ui/ngx-flyout';
|
|
5
|
+
import { IconModule } from '@acpaas-ui/ngx-icon';
|
|
6
|
+
import { SearchFilterComponent } from './components/search-filter/search-filter.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class SearchFilterModule {
|
|
9
|
+
}
|
|
10
|
+
/** @nocollapse */ SearchFilterModule.ɵfac = function SearchFilterModule_Factory(t) { return new (t || SearchFilterModule)(); };
|
|
11
|
+
/** @nocollapse */ SearchFilterModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: SearchFilterModule });
|
|
12
|
+
/** @nocollapse */ SearchFilterModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ imports: [CommonModule, FlyoutModule, FormsModule, IconModule] });
|
|
13
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchFilterModule, [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [CommonModule, FlyoutModule, FormsModule, IconModule],
|
|
17
|
+
declarations: [SearchFilterComponent],
|
|
18
|
+
exports: [SearchFilterComponent],
|
|
19
|
+
}]
|
|
20
|
+
}], null, null); })();
|
|
21
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SearchFilterModule, { declarations: [SearchFilterComponent], imports: [CommonModule, FlyoutModule, FormsModule, IconModule], exports: [SearchFilterComponent] }); })();
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlYXJjaC1maWx0ZXIvc2VhcmNoLWZpbHRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBTzNGLE1BQU0sT0FBTyxrQkFBa0I7O3VHQUFsQixrQkFBa0I7bUdBQWxCLGtCQUFrQjt1R0FKbkIsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVTt1RkFJbEQsa0JBQWtCO2NBTDlCLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7Z0JBQzlELFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzthQUNqQzs7d0ZBQ1ksa0JBQWtCLG1CQUhkLHFCQUFxQixhQUQxQixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLGFBRW5ELHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGbHlvdXRNb2R1bGUgfSBmcm9tICdAYWNwYWFzLXVpL25neC1mbHlvdXQnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LWljb24nO1xuaW1wb3J0IHsgU2VhcmNoRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvc2VhcmNoLWZpbHRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGbHlvdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBJY29uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbU2VhcmNoRmlsdGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1NlYXJjaEZpbHRlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpbHRlck1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VhcmNoLWZpbHRlci90eXBlcy9zZWFyY2gtZmlsdGVyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlYXJjaEZpbHRlckNob2ljZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SearchService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.matchItemWithSearchString = (item, searchString) => {
|
|
6
|
+
return String(item).toLowerCase().indexOf(searchString.toLowerCase()) > -1;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
search(data, options = {}) {
|
|
10
|
+
const query = options.hasOwnProperty('query') ? options.query : '';
|
|
11
|
+
const minLength = options.hasOwnProperty('minLength') ? options.minLength : 0;
|
|
12
|
+
const key = options.hasOwnProperty('key') ? options.key : '';
|
|
13
|
+
if ((!query && options.showAllByDefault) || query.length < minLength) {
|
|
14
|
+
return [...data];
|
|
15
|
+
}
|
|
16
|
+
return [...data].filter(item => {
|
|
17
|
+
if (key && !item.hasOwnProperty(key)) {
|
|
18
|
+
return console.error(`"${key}" does not exist in item ${JSON.stringify(item, null, 2)}`);
|
|
19
|
+
}
|
|
20
|
+
if (key) {
|
|
21
|
+
return this.matchItemWithSearchString(item[key], query);
|
|
22
|
+
}
|
|
23
|
+
return this.matchItemWithSearchString(item, query);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** @nocollapse */ SearchService.ɵfac = function SearchService_Factory(t) { return new (t || SearchService)(); };
|
|
28
|
+
/** @nocollapse */ SearchService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SearchService, factory: SearchService.ɵfac });
|
|
29
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchService, [{
|
|
30
|
+
type: Injectable
|
|
31
|
+
}], null, null); })();
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUQxQjtRQXdCVSw4QkFBeUIsR0FBRyxDQUFDLElBQVMsRUFBRSxZQUFZLEVBQVcsRUFBRTtZQUN2RSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFBO0tBQ0Y7SUF6QlEsTUFBTSxDQUFDLElBQVcsRUFBRSxVQUF5QixFQUFFO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTdELElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUNwRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNsQjtRQUVELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDMUY7WUFFRCxJQUFJLEdBQUcsRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDekQ7WUFFRCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs2RkFyQlUsYUFBYTtrR0FBYixhQUFhLFdBQWIsYUFBYTt1RkFBYixhQUFhO2NBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9zZWFyY2gudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gIHB1YmxpYyBzZWFyY2goZGF0YTogYW55W10sIG9wdGlvbnM6IFNlYXJjaE9wdGlvbnMgPSB7fSk6IGFueVtdIHtcbiAgICBjb25zdCBxdWVyeSA9IG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ3F1ZXJ5JykgPyBvcHRpb25zLnF1ZXJ5IDogJyc7XG4gICAgY29uc3QgbWluTGVuZ3RoID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbWluTGVuZ3RoJykgPyBvcHRpb25zLm1pbkxlbmd0aCA6IDA7XG4gICAgY29uc3Qga2V5ID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgna2V5JykgPyBvcHRpb25zLmtleSA6ICcnO1xuXG4gICAgaWYgKCghcXVlcnkgJiYgb3B0aW9ucy5zaG93QWxsQnlEZWZhdWx0KSB8fCBxdWVyeS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICAgIHJldHVybiBbLi4uZGF0YV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5kYXRhXS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBpZiAoa2V5ICYmICFpdGVtLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoYFwiJHtrZXl9XCIgZG9lcyBub3QgZXhpc3QgaW4gaXRlbSAke0pTT04uc3RyaW5naWZ5KGl0ZW0sIG51bGwsIDIpfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoSXRlbVdpdGhTZWFyY2hTdHJpbmcoaXRlbVtrZXldLCBxdWVyeSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm1hdGNoSXRlbVdpdGhTZWFyY2hTdHJpbmcoaXRlbSwgcXVlcnkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaEl0ZW1XaXRoU2VhcmNoU3RyaW5nID0gKGl0ZW06IGFueSwgc2VhcmNoU3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIFN0cmluZyhpdGVtKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaGFyZWQvdHlwZXMvc2VhcmNoLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlYXJjaE9wdGlvbnMge1xuICBrZXk/OiBzdHJpbmc7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIHNob3dBbGxCeURlZmF1bHQ/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class TimePickerValidators {
|
|
2
|
+
// time `hh:mm` 24h format
|
|
3
|
+
static minTime(time) {
|
|
4
|
+
const validator = (control) => {
|
|
5
|
+
const splittedControlValue = control.value.split(':');
|
|
6
|
+
const controlHours = parseInt(splittedControlValue[0], 10);
|
|
7
|
+
const controlMinutes = parseInt(splittedControlValue[1], 10);
|
|
8
|
+
const splittedMinTime = time.split(':');
|
|
9
|
+
const minHours = parseInt(splittedMinTime[0], 10);
|
|
10
|
+
const minMinutes = parseInt(splittedMinTime[1], 10);
|
|
11
|
+
// Don't throw error --> use Validator.required
|
|
12
|
+
if (isNaN(controlHours) || isNaN(controlMinutes) || isNaN(minHours) || isNaN(minMinutes)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
if (minHours < controlHours) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
if (minHours === controlHours && minMinutes <= controlMinutes) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return { minTime: { value: control.value } };
|
|
22
|
+
};
|
|
23
|
+
return validator;
|
|
24
|
+
}
|
|
25
|
+
// time `hh:mm` 24h format
|
|
26
|
+
static maxTime(time) {
|
|
27
|
+
const validator = (control) => {
|
|
28
|
+
const splittedControlValue = control.value.split(':');
|
|
29
|
+
const controlHours = parseInt(splittedControlValue[0], 10);
|
|
30
|
+
const controlMinutes = parseInt(splittedControlValue[1], 10);
|
|
31
|
+
const splittedMinTime = time.split(':');
|
|
32
|
+
const maxHours = parseInt(splittedMinTime[0], 10);
|
|
33
|
+
const maxMinutes = parseInt(splittedMinTime[1], 10);
|
|
34
|
+
// Don't throw error --> use Validator.required
|
|
35
|
+
if (isNaN(controlHours) || isNaN(controlMinutes) || isNaN(maxHours) || isNaN(maxMinutes)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
if (maxHours > controlHours) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (maxHours === controlHours && maxMinutes >= controlMinutes) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return { maxTime: { value: control.value } };
|
|
45
|
+
};
|
|
46
|
+
return validator;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90aW1lcGlja2VyL2NsYXNzZXMvdGltZXBpY2tlci52YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsMEJBQTBCO0lBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWTtRQUNoQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDckUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXBELCtDQUErQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDeEYsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksUUFBUSxHQUFHLFlBQVksRUFBRTtnQkFDM0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksUUFBUSxLQUFLLFlBQVksSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO2dCQUM3RCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWTtRQUNoQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDckUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXBELCtDQUErQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDeEYsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksUUFBUSxHQUFHLFlBQVksRUFBRTtnQkFDM0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksUUFBUSxLQUFLLFlBQVksSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO2dCQUM3RCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclZhbGlkYXRvcnMge1xuICAvLyB0aW1lIGBoaDptbWAgMjRoIGZvcm1hdFxuICBwdWJsaWMgc3RhdGljIG1pblRpbWUodGltZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGNvbnN0IHNwbGl0dGVkQ29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZS5zcGxpdCgnOicpO1xuICAgICAgY29uc3QgY29udHJvbEhvdXJzID0gcGFyc2VJbnQoc3BsaXR0ZWRDb250cm9sVmFsdWVbMF0sIDEwKTtcbiAgICAgIGNvbnN0IGNvbnRyb2xNaW51dGVzID0gcGFyc2VJbnQoc3BsaXR0ZWRDb250cm9sVmFsdWVbMV0sIDEwKTtcbiAgICAgIGNvbnN0IHNwbGl0dGVkTWluVGltZSA9IHRpbWUuc3BsaXQoJzonKTtcbiAgICAgIGNvbnN0IG1pbkhvdXJzID0gcGFyc2VJbnQoc3BsaXR0ZWRNaW5UaW1lWzBdLCAxMCk7XG4gICAgICBjb25zdCBtaW5NaW51dGVzID0gcGFyc2VJbnQoc3BsaXR0ZWRNaW5UaW1lWzFdLCAxMCk7XG5cbiAgICAgIC8vIERvbid0IHRocm93IGVycm9yIC0tPiB1c2UgVmFsaWRhdG9yLnJlcXVpcmVkXG4gICAgICBpZiAoaXNOYU4oY29udHJvbEhvdXJzKSB8fCBpc05hTihjb250cm9sTWludXRlcykgfHwgaXNOYU4obWluSG91cnMpIHx8IGlzTmFOKG1pbk1pbnV0ZXMpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAobWluSG91cnMgPCBjb250cm9sSG91cnMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5Ib3VycyA9PT0gY29udHJvbEhvdXJzICYmIG1pbk1pbnV0ZXMgPD0gY29udHJvbE1pbnV0ZXMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IG1pblRpbWU6IHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yO1xuICB9XG5cbiAgLy8gdGltZSBgaGg6bW1gIDI0aCBmb3JtYXRcbiAgcHVibGljIHN0YXRpYyBtYXhUaW1lKHRpbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBjb25zdCBzcGxpdHRlZENvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWUuc3BsaXQoJzonKTtcbiAgICAgIGNvbnN0IGNvbnRyb2xIb3VycyA9IHBhcnNlSW50KHNwbGl0dGVkQ29udHJvbFZhbHVlWzBdLCAxMCk7XG4gICAgICBjb25zdCBjb250cm9sTWludXRlcyA9IHBhcnNlSW50KHNwbGl0dGVkQ29udHJvbFZhbHVlWzFdLCAxMCk7XG4gICAgICBjb25zdCBzcGxpdHRlZE1pblRpbWUgPSB0aW1lLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBtYXhIb3VycyA9IHBhcnNlSW50KHNwbGl0dGVkTWluVGltZVswXSwgMTApO1xuICAgICAgY29uc3QgbWF4TWludXRlcyA9IHBhcnNlSW50KHNwbGl0dGVkTWluVGltZVsxXSwgMTApO1xuXG4gICAgICAvLyBEb24ndCB0aHJvdyBlcnJvciAtLT4gdXNlIFZhbGlkYXRvci5yZXF1aXJlZFxuICAgICAgaWYgKGlzTmFOKGNvbnRyb2xIb3VycykgfHwgaXNOYU4oY29udHJvbE1pbnV0ZXMpIHx8IGlzTmFOKG1heEhvdXJzKSB8fCBpc05hTihtYXhNaW51dGVzKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heEhvdXJzID4gY29udHJvbEhvdXJzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4SG91cnMgPT09IGNvbnRyb2xIb3VycyAmJiBtYXhNaW51dGVzID49IGNvbnRyb2xNaW51dGVzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBtYXhUaW1lOiB7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0gfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcbiAgfVxufVxuIl19
|