mis-crystal-design-system 18.0.24 → 18.1.0-signal-test
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/action-list/action-list.component.d.ts +17 -15
- package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
- package/button/button.component.d.ts +35 -13
- package/button/button.directive.d.ts +10 -8
- package/checkbox/checkbox.component.d.ts +15 -12
- package/chip/chip.component.d.ts +9 -11
- package/datepicker_v2/models/dp-config.model.d.ts +1 -0
- package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
- package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
- package/dropdown/calculate-container-height.directive.d.ts +7 -8
- package/dropdown/dropdown.component.d.ts +41 -49
- package/dynamic-form/dynamic-form.component.d.ts +20 -16
- package/esm2022/action-list/action-list.component.mjs +112 -89
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +256 -326
- package/esm2022/button/button.component.mjs +55 -48
- package/esm2022/button/button.directive.mjs +36 -40
- package/esm2022/checkbox/checkbox.component.mjs +75 -70
- package/esm2022/chip/chip.component.mjs +20 -33
- package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +202 -172
- package/esm2022/datepicker_v2/utils/index.mjs +2 -1
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +282 -235
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
- package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
- package/esm2022/dropdown/dropdown.component.mjs +162 -186
- package/esm2022/dynamic-form/dynamic-form.component.mjs +118 -72
- package/esm2022/fab/fab.component.mjs +29 -33
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +60 -58
- package/esm2022/input/directives/input/input.directive.mjs +22 -26
- package/esm2022/input/mis-input.component.mjs +41 -45
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +40 -50
- package/esm2022/loader/loader.component.mjs +8 -11
- package/esm2022/mobile-filter/mobile-filter.component.mjs +61 -61
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
- package/esm2022/phone-input/phone-input.component.mjs +21 -43
- package/esm2022/radio-button/radio-button.component.mjs +15 -27
- package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
- package/esm2022/slider/slider.component.mjs +23 -33
- package/esm2022/slider/slider.module.mjs +4 -11
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
- package/esm2022/snackbar/snackbar.service.mjs +3 -2
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +230 -343
- package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
- package/esm2022/star-rating/star-rating.component.mjs +57 -71
- package/esm2022/switch/switch.component.mjs +34 -36
- package/esm2022/table/actions-cell/actions-cell.component.mjs +55 -54
- package/esm2022/table/custom-table-cell.directive.mjs +22 -18
- package/esm2022/table/filter/filter.component.mjs +60 -42
- package/esm2022/table/sort-icons.directive.mjs +16 -8
- package/esm2022/table/sub-table/sub-table.component.mjs +41 -44
- package/esm2022/table/table.component.mjs +181 -165
- package/esm2022/timepicker/timepicker.component.mjs +244 -159
- package/esm2022/timepicker/timepicker.directive.mjs +3 -2
- package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
- package/esm2022/toast/toast.component.mjs +6 -7
- package/esm2022/toast/toast.data.service.mjs +15 -9
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
- package/esm2022/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
- package/fab/fab.component.d.ts +12 -8
- package/fesm2022/mis-crystal-design-system-action-list.mjs +111 -88
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +253 -324
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +88 -85
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +242 -240
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +305 -283
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +183 -204
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +118 -72
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +28 -32
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +59 -57
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs +39 -49
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +60 -60
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +304 -445
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-star-rating.mjs +56 -70
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +365 -321
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +245 -159
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +18 -13
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +14 -14
- package/input/directives/input/input.directive.d.ts +6 -10
- package/input/mis-input.component.d.ts +12 -13
- package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
- package/loader/loader.component.d.ts +3 -6
- package/mobile-filter/mobile-filter.component.d.ts +15 -15
- package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
- package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
- package/package.json +17 -17
- package/phone-input/phone-input.component.d.ts +16 -18
- package/radio-button/radio-button.component.d.ts +9 -11
- package/ske-loader/ske-loader.component.d.ts +8 -11
- package/slider/slider.component.d.ts +8 -11
- package/slider/slider.module.d.ts +1 -2
- package/snackbar/snackbar/snackbar.component.d.ts +3 -3
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
- package/star-rating/star-rating.component.d.ts +18 -18
- package/switch/switch.component.d.ts +8 -10
- package/table/actions-cell/actions-cell.component.d.ts +14 -14
- package/table/custom-table-cell.directive.d.ts +3 -3
- package/table/filter/filter.component.d.ts +9 -9
- package/table/sub-table/sub-table.component.d.ts +5 -5
- package/table/table.component.d.ts +38 -35
- package/timepicker/timepicker.component.d.ts +29 -28
- package/timerangepicker/timerangepicker.component.d.ts +36 -33
- package/toast/toast.data.service.d.ts +1 -1
- package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
- package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import * as i1 from '@angular/cdk/overlay';
|
|
2
|
-
import { ConnectionPositionPair, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
3
|
-
import { TemplatePortal } from '@angular/cdk/portal';
|
|
4
1
|
import * as i0 from '@angular/core';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
2
|
+
import { inject, ElementRef, ViewContainerRef, input, output, signal, computed, effect, Component, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
4
|
+
import { Overlay, ConnectionPositionPair, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
5
|
+
import * as i1 from '@angular/common';
|
|
7
6
|
import { CommonModule } from '@angular/common';
|
|
8
|
-
import * as
|
|
7
|
+
import * as i2 from '@angular/forms';
|
|
9
8
|
import { FormsModule } from '@angular/forms';
|
|
10
|
-
import * as
|
|
9
|
+
import * as i3 from 'mis-crystal-design-system/checkbox';
|
|
11
10
|
import { CheckboxModule } from 'mis-crystal-design-system/checkbox';
|
|
12
|
-
import * as
|
|
11
|
+
import * as i4 from 'mis-crystal-design-system/button';
|
|
13
12
|
import { ButtonModule } from 'mis-crystal-design-system/button';
|
|
14
13
|
|
|
15
14
|
const _c0 = ["select"];
|
|
@@ -28,7 +27,7 @@ function NestedMultiSelectDropdownComponent_p_6_Template(rf, ctx) { if (rf & 1)
|
|
|
28
27
|
} if (rf & 2) {
|
|
29
28
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
30
29
|
i0.ɵɵadvance();
|
|
31
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedCount, " ");
|
|
30
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedCount(), " ");
|
|
32
31
|
} }
|
|
33
32
|
function NestedMultiSelectDropdownComponent_ng_template_9_div_1__svg_svg_1_Template(rf, ctx) { if (rf & 1) {
|
|
34
33
|
i0.ɵɵnamespaceSVG();
|
|
@@ -56,11 +55,11 @@ function NestedMultiSelectDropdownComponent_ng_template_9_div_1_Template(rf, ctx
|
|
|
56
55
|
} if (rf & 2) {
|
|
57
56
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
58
57
|
i0.ɵɵadvance();
|
|
59
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused);
|
|
58
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused());
|
|
60
59
|
i0.ɵɵadvance();
|
|
61
|
-
i0.ɵɵproperty("ngModel", ctx_r1.searchInput)("ngStyle", i0.ɵɵpureFunction3(5, _c6, ctx_r1.isSearchInputFocused ? "12px" : "45px", ctx_r1.isSearchInputFocused ? "1px solid #0937B2" : "1px solid #e0e0e0", ctx_r1.isSearchInputFocused ? "45px" : "10px"))("placeholder", ctx_r1.isSearchInputFocused ? "" :
|
|
60
|
+
i0.ɵɵproperty("ngModel", ctx_r1.searchInput())("ngStyle", i0.ɵɵpureFunction3(5, _c6, ctx_r1.isSearchInputFocused() ? "12px" : "45px", ctx_r1.isSearchInputFocused() ? "1px solid #0937B2" : "1px solid #e0e0e0", ctx_r1.isSearchInputFocused() ? "45px" : "10px"))("placeholder", ctx_r1.isSearchInputFocused() ? "" : ctx_r1.searchInputPlaceholder());
|
|
62
61
|
i0.ɵɵadvance();
|
|
63
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused);
|
|
62
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused());
|
|
64
63
|
} }
|
|
65
64
|
function NestedMultiSelectDropdownComponent_ng_template_9_div_3_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
66
65
|
i0.ɵɵelementStart(0, "div", 31);
|
|
@@ -143,7 +142,7 @@ function NestedMultiSelectDropdownComponent_ng_template_9_div_4_Template(rf, ctx
|
|
|
143
142
|
} if (rf & 2) {
|
|
144
143
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
145
144
|
i0.ɵɵadvance();
|
|
146
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput === "" ? ctx_r1.noDataMessage : "No results", " ");
|
|
145
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput() === "" ? ctx_r1.noDataMessage() : "No results", " ");
|
|
147
146
|
} }
|
|
148
147
|
function NestedMultiSelectDropdownComponent_ng_template_9_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
149
148
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
@@ -173,283 +172,271 @@ function NestedMultiSelectDropdownComponent_ng_template_9_Template(rf, ctx) { if
|
|
|
173
172
|
i0.ɵɵelementEnd();
|
|
174
173
|
} if (rf & 2) {
|
|
175
174
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
176
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c2, ctx_r1.dropdownListHeight, ctx_r1.dropdownListWidth))("ngClass", i0.ɵɵpureFunction2(9, _c5, ctx_r1.dropdownListPosition === "Left", ctx_r1.dropdownListPosition === "Right"));
|
|
175
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c2, ctx_r1.dropdownListHeight(), ctx_r1.dropdownListWidth()))("ngClass", i0.ɵɵpureFunction2(9, _c5, ctx_r1.dropdownListPosition() === "Left", ctx_r1.dropdownListPosition() === "Right"));
|
|
177
176
|
i0.ɵɵadvance();
|
|
178
|
-
i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled);
|
|
177
|
+
i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled());
|
|
179
178
|
i0.ɵɵadvance(2);
|
|
180
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.
|
|
179
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.displayData());
|
|
181
180
|
i0.ɵɵadvance();
|
|
182
|
-
i0.ɵɵproperty("ngIf",
|
|
181
|
+
i0.ɵɵproperty("ngIf", ctx_r1.displayData().length === 0);
|
|
183
182
|
i0.ɵɵadvance();
|
|
184
|
-
i0.ɵɵproperty("ngIf", ctx_r1.localData.length !== 0);
|
|
183
|
+
i0.ɵɵproperty("ngIf", ctx_r1.localData().length !== 0);
|
|
185
184
|
} }
|
|
186
185
|
class NestedMultiSelectDropdownComponent {
|
|
187
|
-
|
|
188
|
-
//
|
|
189
|
-
this.
|
|
186
|
+
constructor() {
|
|
187
|
+
// Dependencies Injection
|
|
188
|
+
this.eRef = inject(ElementRef);
|
|
189
|
+
this.overlay = inject(Overlay);
|
|
190
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
191
|
+
// Signal-based Inputs
|
|
192
|
+
this.data = input([]);
|
|
193
|
+
this.selectedItems = input([]);
|
|
194
|
+
this.label = input('Select');
|
|
195
|
+
this.height = input('');
|
|
196
|
+
this.width = input('');
|
|
197
|
+
this.dropdownListHeight = input('');
|
|
198
|
+
this.dropdownListWidth = input('');
|
|
199
|
+
this.dropdownListPosition = input('Left');
|
|
200
|
+
this.searchEnabled = input(true);
|
|
201
|
+
this.showSelectedCount = input(false);
|
|
202
|
+
this.noDataMessage = input('No Data');
|
|
203
|
+
this.searchInputPlaceholder = input('Search Keyword');
|
|
204
|
+
// Signal-based Output
|
|
205
|
+
this.onChange = output();
|
|
206
|
+
// Internal Signals for component state
|
|
207
|
+
this.isOpen = signal(false);
|
|
208
|
+
this.searchInput = signal('');
|
|
209
|
+
this.isSearchInputFocused = signal(false);
|
|
210
|
+
this.localData = signal([]);
|
|
211
|
+
/**
|
|
212
|
+
* Computed signal for the number of selected items.
|
|
213
|
+
*/
|
|
214
|
+
this.selectedCount = computed(() => {
|
|
215
|
+
let count = 0;
|
|
216
|
+
this.localData().forEach(parent => {
|
|
217
|
+
parent.children.forEach(child => {
|
|
218
|
+
if (child.checked) {
|
|
219
|
+
count++;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
return count;
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* Computed signal for data to be displayed in the dropdown.
|
|
227
|
+
* Filters based on search input and sorts the parents.
|
|
228
|
+
*/
|
|
229
|
+
this.displayData = computed(() => {
|
|
230
|
+
let dataToDisplay = this.searchEnabled() && this.searchInput() ?
|
|
231
|
+
this.filterByValue(this.localData(), this.searchInput()) :
|
|
232
|
+
this.localData();
|
|
233
|
+
return this.sortData(dataToDisplay);
|
|
234
|
+
});
|
|
235
|
+
// Effect to initialize and update local data based on external inputs
|
|
236
|
+
effect(() => {
|
|
237
|
+
const values = this.data();
|
|
238
|
+
const selected = this.selectedItems();
|
|
239
|
+
const formattedData = this.initializeData(values, selected);
|
|
240
|
+
this.localData.set(formattedData);
|
|
241
|
+
}, { allowSignalWrites: true });
|
|
242
|
+
// Effect to manage overlay open/close
|
|
243
|
+
effect(() => {
|
|
244
|
+
if (this.isOpen()) {
|
|
245
|
+
this.openDropdown(this.popupContainer, this.selectElement?.nativeElement);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
this.overlayRef?.detach();
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Initializes the data structure from inputs, setting checked states.
|
|
254
|
+
* @param data The input data array.
|
|
255
|
+
* @param selected The selected items from the parent.
|
|
256
|
+
*/
|
|
257
|
+
initializeData(data, selected) {
|
|
258
|
+
if (!data)
|
|
259
|
+
return [];
|
|
260
|
+
return data.map(parent => {
|
|
261
|
+
const parentSelected = selected.find(s => s.value === parent.value);
|
|
262
|
+
const children = parent.children.map(child => ({
|
|
263
|
+
...child,
|
|
264
|
+
checked: parentSelected?.children.some(c => c.value === child.value) ?? false
|
|
265
|
+
}));
|
|
190
266
|
return {
|
|
191
|
-
...
|
|
192
|
-
checked:
|
|
193
|
-
children
|
|
194
|
-
return {
|
|
195
|
-
...a,
|
|
196
|
-
checked: false
|
|
197
|
-
};
|
|
198
|
-
})
|
|
267
|
+
...parent,
|
|
268
|
+
checked: children.every(c => c.checked),
|
|
269
|
+
children
|
|
199
270
|
};
|
|
200
271
|
});
|
|
201
272
|
}
|
|
202
|
-
|
|
203
|
-
|
|
273
|
+
/**
|
|
274
|
+
* Filters the data based on search string, including children.
|
|
275
|
+
* @param array The data to filter.
|
|
276
|
+
* @param search The search string.
|
|
277
|
+
*/
|
|
278
|
+
filterByValue(array, search) {
|
|
279
|
+
const lowerCaseSearch = search.toLowerCase();
|
|
280
|
+
return array.filter(parent => parent.label.toLowerCase().includes(lowerCaseSearch) ||
|
|
281
|
+
parent.children.some(child => child.label.toLowerCase().includes(lowerCaseSearch))).map(parent => ({
|
|
282
|
+
...parent,
|
|
283
|
+
children: parent.children.filter(child => child.label.toLowerCase().includes(lowerCaseSearch))
|
|
284
|
+
}));
|
|
204
285
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
this.selectedCount = 0;
|
|
215
|
-
this.label = "Select";
|
|
216
|
-
this.height = "";
|
|
217
|
-
this.width = "";
|
|
218
|
-
this.dropdownListHeight = "";
|
|
219
|
-
this.dropdownListWidth = "";
|
|
220
|
-
this.dropdownListPosition = "Left";
|
|
221
|
-
this.searchEnabled = true;
|
|
222
|
-
this.showSelectedCount = false;
|
|
223
|
-
this.noDataMessage = "No Data";
|
|
224
|
-
this.onChange = new EventEmitter();
|
|
225
|
-
this.isSearchInputFocused = false;
|
|
286
|
+
/**
|
|
287
|
+
* Sorts the parent items, placing checked parents at the top.
|
|
288
|
+
* @param data The data to sort.
|
|
289
|
+
*/
|
|
290
|
+
sortData(data) {
|
|
291
|
+
const checkedParents = data.filter(a => a.checked);
|
|
292
|
+
const unCheckedParents = data.filter(a => !a.checked);
|
|
293
|
+
const sortFn = (a, b) => a.label > b.label ? 1 : -1;
|
|
294
|
+
return [...checkedParents.sort(sortFn), ...unCheckedParents.sort(sortFn)];
|
|
226
295
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
296
|
+
/**
|
|
297
|
+
* Toggles the dropdown's open/close state.
|
|
298
|
+
*/
|
|
299
|
+
toggleDropdown() {
|
|
300
|
+
this.isOpen.update(current => !current);
|
|
230
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Handles focus state of the search input.
|
|
304
|
+
* @param isFocused
|
|
305
|
+
*/
|
|
231
306
|
searchInputFocused(isFocused) {
|
|
232
|
-
this.isSearchInputFocused
|
|
307
|
+
this.isSearchInputFocused.set(isFocused);
|
|
233
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Clears the search input.
|
|
311
|
+
* @param event
|
|
312
|
+
*/
|
|
234
313
|
searchInputCanceled(event) {
|
|
235
314
|
event.stopPropagation();
|
|
236
|
-
this.searchInput
|
|
237
|
-
this.isSearchInputFocused
|
|
315
|
+
this.searchInput.set('');
|
|
316
|
+
this.isSearchInputFocused.set(false);
|
|
238
317
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
318
|
+
/**
|
|
319
|
+
* Handles the change event from the search input.
|
|
320
|
+
* @param newValue
|
|
321
|
+
*/
|
|
322
|
+
searchInputOnChange(newValue) {
|
|
323
|
+
this.searchInput.set(newValue);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Toggles the checked state of a specific item, handling parent-child relationships.
|
|
327
|
+
* @param event
|
|
328
|
+
* @param parent
|
|
329
|
+
* @param child
|
|
330
|
+
*/
|
|
331
|
+
toggleSelectedItems(event, parent, child) {
|
|
332
|
+
event.stopPropagation();
|
|
333
|
+
this.localData.update(currentData => {
|
|
334
|
+
return currentData.map(p => {
|
|
335
|
+
if (p.value === parent.value) {
|
|
336
|
+
if (child) {
|
|
337
|
+
// Case 1: Toggling a child item
|
|
338
|
+
const updatedChildren = p.children.map(c => {
|
|
339
|
+
return c.value === child.value ? { ...c, checked: !c.checked } : c;
|
|
340
|
+
});
|
|
341
|
+
return {
|
|
342
|
+
...p,
|
|
343
|
+
checked: updatedChildren.every(c => c.checked),
|
|
344
|
+
children: updatedChildren
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
// Case 2: Toggling a parent item
|
|
349
|
+
const newCheckedState = !p.checked;
|
|
350
|
+
const updatedChildren = p.children.map(c => ({
|
|
351
|
+
...c,
|
|
352
|
+
checked: newCheckedState
|
|
353
|
+
}));
|
|
354
|
+
return {
|
|
355
|
+
...p,
|
|
356
|
+
checked: newCheckedState,
|
|
357
|
+
children: updatedChildren
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return p;
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Emits the selected items and closes the dropdown.
|
|
367
|
+
*/
|
|
368
|
+
applyFilters() {
|
|
369
|
+
const selected = this.localData().filter(parent => parent.checked || parent.children.some(child => child.checked)).map(parent => ({
|
|
370
|
+
...parent,
|
|
371
|
+
children: parent.children.filter(child => child.checked)
|
|
372
|
+
}));
|
|
373
|
+
this.onChange.emit(selected);
|
|
374
|
+
this.onCancel();
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Resets all selections to empty.
|
|
378
|
+
*/
|
|
379
|
+
onReset() {
|
|
380
|
+
this.localData.update(data => data.map(parent => ({
|
|
381
|
+
...parent,
|
|
382
|
+
checked: false,
|
|
383
|
+
children: parent.children.map(child => ({ ...child, checked: false }))
|
|
384
|
+
})));
|
|
385
|
+
this.onChange.emit([]);
|
|
386
|
+
this.onCancel();
|
|
249
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Closes the dropdown and reverts any unapplied changes.
|
|
390
|
+
*/
|
|
391
|
+
onCancel() {
|
|
392
|
+
this.isOpen.set(false);
|
|
393
|
+
this.searchInput.set('');
|
|
394
|
+
this.isSearchInputFocused.set(false);
|
|
395
|
+
// This is crucial for reverting unsaved changes
|
|
396
|
+
const selected = this.selectedItems();
|
|
397
|
+
const formattedData = this.initializeData(this.data(), selected);
|
|
398
|
+
this.localData.set(formattedData);
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Creates and displays the overlay for the dropdown list.
|
|
402
|
+
* @param template
|
|
403
|
+
* @param origin
|
|
404
|
+
*/
|
|
250
405
|
openDropdown(template, origin) {
|
|
406
|
+
if (this.overlayRef?.hasAttached())
|
|
407
|
+
return;
|
|
251
408
|
const positionsBottom = [
|
|
252
|
-
new ConnectionPositionPair({ originX:
|
|
253
|
-
new ConnectionPositionPair({ originX:
|
|
409
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),
|
|
410
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4)
|
|
254
411
|
];
|
|
255
412
|
const positionsTop = [
|
|
256
|
-
new ConnectionPositionPair({ originX:
|
|
257
|
-
new ConnectionPositionPair({ originX:
|
|
413
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4),
|
|
414
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4)
|
|
258
415
|
];
|
|
259
416
|
const positionStrategy = this.overlay
|
|
260
417
|
.position()
|
|
261
418
|
.flexibleConnectedTo(origin)
|
|
262
419
|
.withPositions([
|
|
263
|
-
...(this.dropdownListPosition ===
|
|
264
|
-
...(this.dropdownListPosition ===
|
|
420
|
+
...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),
|
|
421
|
+
...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop)
|
|
265
422
|
])
|
|
266
423
|
.withPush(true);
|
|
267
424
|
const configs = new OverlayConfig({
|
|
268
425
|
hasBackdrop: true,
|
|
269
|
-
backdropClass:
|
|
426
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
270
427
|
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
271
428
|
positionStrategy,
|
|
272
429
|
width: origin.clientWidth
|
|
273
430
|
});
|
|
274
431
|
this.overlayRef = this.overlay.create(configs);
|
|
275
|
-
if (this.dropdownListWidth)
|
|
276
|
-
this.overlayRef.updateSize({ width: this.dropdownListWidth });
|
|
277
|
-
if (this.dropdownListHeight)
|
|
278
|
-
this.overlayRef.updateSize({ height: this.dropdownListHeight });
|
|
432
|
+
if (this.dropdownListWidth())
|
|
433
|
+
this.overlayRef.updateSize({ width: this.dropdownListWidth() });
|
|
434
|
+
if (this.dropdownListHeight())
|
|
435
|
+
this.overlayRef.updateSize({ height: this.dropdownListHeight() });
|
|
279
436
|
this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
|
|
280
|
-
this.overlayRef.backdropClick().subscribe(
|
|
281
|
-
this.onCancel();
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
// tslint:disable-next-line:variable-name
|
|
285
|
-
filterByValue(array, string) {
|
|
286
|
-
return array
|
|
287
|
-
.filter(o => o.label.toLowerCase().includes(string.toLowerCase()) || o.children?.some(g => g?.label?.toLowerCase().includes(string.toLowerCase())))
|
|
288
|
-
.map(v => {
|
|
289
|
-
return {
|
|
290
|
-
...v,
|
|
291
|
-
children: v?.children?.filter(l => l?.label?.toLowerCase().includes(string.toLowerCase()))
|
|
292
|
-
};
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
searchInputOnChange(newValue) {
|
|
296
|
-
this.searchInput = newValue;
|
|
297
|
-
if (newValue) {
|
|
298
|
-
this.searchData = this.filterByValue(this.localData, newValue);
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
this.searchData = [];
|
|
302
|
-
this.searchInput = "";
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
formatValues(array) {
|
|
306
|
-
const checkedValues = array
|
|
307
|
-
.filter(a => a.checked)
|
|
308
|
-
.sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0));
|
|
309
|
-
const unCheckedValues = array
|
|
310
|
-
.filter(a => !a.checked)
|
|
311
|
-
.sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0));
|
|
312
|
-
return [...checkedValues, ...unCheckedValues];
|
|
313
|
-
}
|
|
314
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
315
|
-
toggleSelectedItems(event, item, cItem) {
|
|
316
|
-
event.stopPropagation();
|
|
317
|
-
if (!cItem) {
|
|
318
|
-
if (item.checked) {
|
|
319
|
-
this.localData = [
|
|
320
|
-
...this.localData.map(a => {
|
|
321
|
-
if (a.value === item.value) {
|
|
322
|
-
return {
|
|
323
|
-
...a,
|
|
324
|
-
checked: false,
|
|
325
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
326
|
-
children: item.children.map(a => {
|
|
327
|
-
return {
|
|
328
|
-
...a,
|
|
329
|
-
checked: false
|
|
330
|
-
};
|
|
331
|
-
})
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
return a;
|
|
335
|
-
})
|
|
336
|
-
];
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
this.localData = [
|
|
340
|
-
...this.localData.map(a => {
|
|
341
|
-
if (a.value === item.value) {
|
|
342
|
-
return {
|
|
343
|
-
...a,
|
|
344
|
-
checked: true,
|
|
345
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
346
|
-
children: item.children.map(a => {
|
|
347
|
-
return {
|
|
348
|
-
...a,
|
|
349
|
-
checked: true
|
|
350
|
-
};
|
|
351
|
-
})
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
return a;
|
|
355
|
-
})
|
|
356
|
-
];
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
if (cItem.checked) {
|
|
361
|
-
this.localData = [
|
|
362
|
-
...this.localData.map(a => {
|
|
363
|
-
if (a.value === item.value) {
|
|
364
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
365
|
-
const children = a?.children.map(a => {
|
|
366
|
-
if (cItem?.value === a?.value) {
|
|
367
|
-
return {
|
|
368
|
-
...a,
|
|
369
|
-
checked: false
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
return a;
|
|
373
|
-
});
|
|
374
|
-
return {
|
|
375
|
-
...a,
|
|
376
|
-
checked: children.every(q => q.checked),
|
|
377
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
378
|
-
children
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
return a;
|
|
382
|
-
})
|
|
383
|
-
];
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
this.localData = [
|
|
387
|
-
...this.localData.map(a => {
|
|
388
|
-
if (a.value === item.value) {
|
|
389
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
390
|
-
const children = a?.children.map(a => {
|
|
391
|
-
if (cItem?.value === a?.value) {
|
|
392
|
-
return {
|
|
393
|
-
...a,
|
|
394
|
-
checked: true
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
return a;
|
|
398
|
-
});
|
|
399
|
-
return {
|
|
400
|
-
...a,
|
|
401
|
-
checked: children.every(q => q.checked),
|
|
402
|
-
// tslint:disable-next-line:no-shadowed-variable
|
|
403
|
-
children
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
return a;
|
|
407
|
-
})
|
|
408
|
-
];
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
if (this.searchEnabled) {
|
|
412
|
-
this.searchInputOnChange(this.searchInput);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
applyFilters() {
|
|
416
|
-
let localCount = 0;
|
|
417
|
-
this.localData.forEach(a => a?.children?.forEach(b => {
|
|
418
|
-
if (b.checked) {
|
|
419
|
-
localCount += 1;
|
|
420
|
-
}
|
|
421
|
-
}));
|
|
422
|
-
this.selectedCount = localCount;
|
|
423
|
-
const w = this.localData
|
|
424
|
-
.filter(r => !(!r.checked && !r?.children?.some(f => f?.checked)))
|
|
425
|
-
.map(a => {
|
|
426
|
-
return {
|
|
427
|
-
...a,
|
|
428
|
-
children: a?.children?.filter(s => s.checked)
|
|
429
|
-
};
|
|
430
|
-
});
|
|
431
|
-
this.onChange.emit(w);
|
|
432
|
-
this.onCancel();
|
|
433
|
-
}
|
|
434
|
-
onReset() {
|
|
435
|
-
this.isSearchInputFocused = false;
|
|
436
|
-
for (let item of this.localData) {
|
|
437
|
-
for (let child of item.children) {
|
|
438
|
-
child.checked = false;
|
|
439
|
-
}
|
|
440
|
-
item.checked = false;
|
|
441
|
-
}
|
|
442
|
-
this.onChange.emit([]);
|
|
443
|
-
this.isOpen = false;
|
|
444
|
-
this.searchInput = "";
|
|
445
|
-
}
|
|
446
|
-
onCancel() {
|
|
447
|
-
this.isSearchInputFocused = false;
|
|
448
|
-
this.isOpen = false;
|
|
449
|
-
this.overlayRef?.detach();
|
|
450
|
-
this.searchInput = "";
|
|
437
|
+
this.overlayRef.backdropClick().subscribe(() => this.onCancel());
|
|
451
438
|
}
|
|
452
|
-
static { this.ɵfac = function NestedMultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NestedMultiSelectDropdownComponent)(
|
|
439
|
+
static { this.ɵfac = function NestedMultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NestedMultiSelectDropdownComponent)(); }; }
|
|
453
440
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NestedMultiSelectDropdownComponent, selectors: [["mis-nested-multi-select-dropdown"]], viewQuery: function NestedMultiSelectDropdownComponent_Query(rf, ctx) { if (rf & 1) {
|
|
454
441
|
i0.ɵɵviewQuery(_c0, 5);
|
|
455
442
|
i0.ɵɵviewQuery(_c1, 5);
|
|
@@ -457,7 +444,7 @@ class NestedMultiSelectDropdownComponent {
|
|
|
457
444
|
let _t;
|
|
458
445
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectElement = _t.first);
|
|
459
446
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupContainer = _t.first);
|
|
460
|
-
} }, inputs: { data: "data", label: "label", height: "height", width: "width", dropdownListHeight: "dropdownListHeight", dropdownListWidth: "dropdownListWidth", dropdownListPosition: "dropdownListPosition", searchEnabled: "searchEnabled", showSelectedCount: "showSelectedCount", noDataMessage: "noDataMessage",
|
|
447
|
+
} }, inputs: { data: [1, "data"], selectedItems: [1, "selectedItems"], label: [1, "label"], height: [1, "height"], width: [1, "width"], dropdownListHeight: [1, "dropdownListHeight"], dropdownListWidth: [1, "dropdownListWidth"], dropdownListPosition: [1, "dropdownListPosition"], searchEnabled: [1, "searchEnabled"], showSelectedCount: [1, "showSelectedCount"], noDataMessage: [1, "noDataMessage"], searchInputPlaceholder: [1, "searchInputPlaceholder"] }, outputs: { onChange: "onChange" }, decls: 11, vars: 12, consts: [["select", ""], ["popupContainer", ""], [1, "container", 3, "ngStyle"], ["tabindex", "0", 1, "dropdown", 3, "keyup.enter", "click", "ngStyle"], [1, "label"], [1, "text"], ["class", "count", 4, "ngIf"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "handle", 3, "ngStyle"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z", "fill", "#181F33"], [1, "count"], [1, "popup-container", 3, "ngStyle", "ngClass"], ["class", "search-container", 4, "ngIf"], [1, "items"], ["tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["class", "noData", 4, "ngIf"], ["class", "actions-container", 4, "ngIf"], [1, "search-container"], ["class", "search-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 4, "ngIf"], [1, "search-input", 3, "ngModelChange", "focus", "ngModel", "ngStyle", "placeholder"], ["class", "cancel-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 3, "click", 4, "ngIf"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "search-icon"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z", "fill", "#6A737D"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "cancel-icon", 3, "click"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z", "fill", "#6A737D"], ["tabindex", "0", 3, "keyup.enter", "click"], [1, "item"], [1, "checkbox-container-wrapper"], [1, "checkbox-container"], [3, "checked"], ["class", "icon-container", 4, "ngIf"], ["class", "items sub", 3, "ngStyle", 4, "ngIf"], [1, "icon-container"], ["alt", "no img", 1, "icon", 3, "src"], [1, "items", "sub", 3, "ngStyle"], ["class", "item", "tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["tabindex", "0", 1, "item", 3, "keyup.enter", "click"], [1, "noData"], [1, "actions-container"], [3, "ngStyle"], [3, "click", "name", "type", "width"]], template: function NestedMultiSelectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
461
448
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
462
449
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3, 0);
|
|
463
450
|
i0.ɵɵlistener("keyup.enter", function NestedMultiSelectDropdownComponent_Template_div_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); })("click", function NestedMultiSelectDropdownComponent_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); });
|
|
@@ -472,50 +459,26 @@ class NestedMultiSelectDropdownComponent {
|
|
|
472
459
|
i0.ɵɵelementEnd()()();
|
|
473
460
|
i0.ɵɵtemplate(9, NestedMultiSelectDropdownComponent_ng_template_9_Template, 6, 12, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
474
461
|
} if (rf & 2) {
|
|
475
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height.length > 0 ? ctx.height : "", ctx.width.length > 0 ? ctx.width : ""));
|
|
462
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height().length > 0 ? ctx.height() : "", ctx.width().length > 0 ? ctx.width() : ""));
|
|
476
463
|
i0.ɵɵadvance();
|
|
477
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen ? "#E6EBF7" : ""));
|
|
464
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen() ? "#E6EBF7" : ""));
|
|
478
465
|
i0.ɵɵadvance(4);
|
|
479
|
-
i0.ɵɵtextInterpolate(ctx.label);
|
|
466
|
+
i0.ɵɵtextInterpolate(ctx.label());
|
|
480
467
|
i0.ɵɵadvance();
|
|
481
|
-
i0.ɵɵproperty("ngIf", ctx.showSelectedCount && ctx.selectedCount > 0);
|
|
468
|
+
i0.ɵɵproperty("ngIf", ctx.showSelectedCount() && ctx.selectedCount() > 0);
|
|
482
469
|
i0.ɵɵadvance();
|
|
483
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen ? "rotate(180deg)" : "rotate(0deg)"));
|
|
484
|
-
} }, dependencies: [
|
|
470
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen() ? "rotate(180deg)" : "rotate(0deg)"));
|
|
471
|
+
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CheckboxComponent, i4.ButtonComponent], styles: ["[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4}.container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]{height:inherit;border:1px solid #e0e0e0;border-radius:6px;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:hover, .container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:focus-visible{background-color:#f5f7fc;outline:none}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{background-color:#e0e0e0;border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .handle[_ngcontent-%COMP%]{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container[_ngcontent-%COMP%]{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:0;height:0}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%]{position:relative;box-sizing:border-box;padding:8px}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]{height:40px;width:100%;padding:12px;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:8px;outline:none;caret-color:#0937b2;font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:#181f33}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .cancel-icon[_ngcontent-%COMP%]{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px;height:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:10px}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .noData[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:hover, .popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:focus-visible{background-color:#f5f7fc;outline:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked ~ .checkmark[_ngcontent-%COMP%]:after{display:block}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:#0079f1;border:1px solid rgb(106,115,125)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid white;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;overflow:hidden}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{width:10%;display:flex;justify-content:flex-end}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:20px;height:20px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:#fff;border-top:1px solid #e0e0e0}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]:hover{background:#0937b20a}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .apply[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;color:#fff;font-size:16px;line-height:24px;background:#0937b2;border-radius:8px}"] }); }
|
|
485
472
|
}
|
|
486
473
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NestedMultiSelectDropdownComponent, [{
|
|
487
474
|
type: Component,
|
|
488
|
-
args: [{ selector: "mis-nested-multi-select-dropdown", template: "<div\n class=\"container\"\n [ngStyle]=\"{\n height: height.length > 0 ? height : '',\n width: width.length > 0 ? width : ''\n }\"\n>\n <div\n class=\"dropdown\"\n #select\n tabindex=\"0\"\n (keyup.enter)=\"toggleDropdown()\"\n (click)=\"toggleDropdown()\"\n [ngStyle]=\"{ background: isOpen ? '#E6EBF7' : '' }\"\n >\n <div class=\"label\">\n <p class=\"text\">{{ label }}</p>\n <p *ngIf=\"showSelectedCount && selectedCount > 0\" class=\"count\">\n {{ selectedCount }}\n </p>\n </div>\n <svg\n class=\"handle\"\n [ngStyle]=\"{ transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)' }\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z\"\n fill=\"#181F33\"\n />\n </svg>\n </div>\n</div>\n<ng-template #popupContainer>\n <div\n class=\"popup-container\"\n [ngStyle]=\"{\n height: dropdownListHeight,\n width: dropdownListWidth\n }\"\n [ngClass]=\"{\n 'position-left': dropdownListPosition === 'Left',\n 'position-right': dropdownListPosition === 'Right'\n }\"\n >\n <div *ngIf=\"searchEnabled\" class=\"search-container\">\n <svg\n *ngIf=\"!isSearchInputFocused\"\n class=\"search-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n <input\n [ngModel]=\"searchInput\"\n [ngStyle]=\"{\n paddingLeft: isSearchInputFocused ? '12px' : '45px',\n border: isSearchInputFocused ? '1px solid #0937B2' : '1px solid #e0e0e0',\n paddingRight: isSearchInputFocused ? '45px' : '10px'\n }\"\n (ngModelChange)=\"searchInputOnChange($event)\"\n [placeholder]=\"isSearchInputFocused ? '' : 'Search Keyword'\"\n (focus)=\"searchInputFocused(true)\"\n class=\"search-input\"\n />\n <svg\n *ngIf=\"isSearchInputFocused\"\n class=\"cancel-icon\"\n (click)=\"searchInputCanceled($event)\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div class=\"items\">\n <div\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of searchInput ? searchData : localData\"\n >\n <div class=\"item\">\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ item.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"item.icon\">\n <img class=\"icon\" [src]=\"item.icon\" alt=\"no img\" />\n </div>\n </div>\n <div *ngIf=\"item?.children?.length > 0\" class=\"items sub\" [ngStyle]=\"{'padding-right': '0'}\">\n <div\n class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item, cItem)\"\n (click)=\"toggleSelectedItems($event, item, cItem)\"\n *ngFor=\"let cItem of item?.children\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"cItem.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ cItem.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"cItem.icon\">\n <img class=\"icon\" [src]=\"cItem.icon\" alt=\"no img\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"noData\" *ngIf=\"(searchInput ? searchData : localData).length === 0\">\n {{ searchInput === \"\" ? noDataMessage : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"localData.length !== 0\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" (click)=\"onReset()\"></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" (click)=\"applyFilters()\"></mis-button>\n </div> \n </div>\n </div>\n</ng-template>\n", styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#9aa7b4}.container{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container .dropdown{height:inherit;border:1px solid #e0e0e0;border-radius:6px;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container .dropdown:hover,.container .dropdown:focus-visible{background-color:#f5f7fc;outline:none}.container .dropdown .label{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .count{background-color:#e0e0e0;border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:#181f33}.container .dropdown .handle{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container::-webkit-scrollbar{width:0;height:0}.popup-container .search-container{position:relative;box-sizing:border-box;padding:8px}.popup-container .search-container .search-icon{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container .search-container .search-input{height:40px;width:100%;padding:12px;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:8px;outline:none;caret-color:#0937b2;font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:#181f33}.popup-container .search-container .cancel-icon{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container .items{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container .items::-webkit-scrollbar{width:5px;height:0}.popup-container .items::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:10px}.popup-container .items .noData{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.popup-container .items .item{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container .items .item:hover,.popup-container .items .item:focus-visible{background-color:#f5f7fc;outline:none}.popup-container .items .item .checkbox-container-wrapper{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container .items .item .checkbox-container-wrapper .checkbox-container{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input:checked~.checkmark:after{display:block}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:#0079f1;border:1px solid rgb(106,115,125)}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid white;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container .items .item .checkbox-container-wrapper .label{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;overflow:hidden}.popup-container .items .item .icon-container{width:10%;display:flex;justify-content:flex-end}.popup-container .items .item .icon-container .icon{width:20px;height:20px}.popup-container .actions-container{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:#fff;border-top:1px solid #e0e0e0}.popup-container .actions-container .cancel{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container .actions-container .cancel:hover{background:#0937b20a}.popup-container .actions-container .apply{cursor:pointer;padding:10px 32px;text-align:center;color:#fff;font-size:16px;line-height:24px;background:#0937b2;border-radius:8px}\n"] }]
|
|
489
|
-
}], () => [
|
|
490
|
-
type: Input
|
|
491
|
-
}], label: [{
|
|
492
|
-
type: Input
|
|
493
|
-
}], height: [{
|
|
494
|
-
type: Input
|
|
495
|
-
}], width: [{
|
|
496
|
-
type: Input
|
|
497
|
-
}], dropdownListHeight: [{
|
|
498
|
-
type: Input
|
|
499
|
-
}], dropdownListWidth: [{
|
|
500
|
-
type: Input
|
|
501
|
-
}], dropdownListPosition: [{
|
|
502
|
-
type: Input
|
|
503
|
-
}], searchEnabled: [{
|
|
504
|
-
type: Input
|
|
505
|
-
}], showSelectedCount: [{
|
|
506
|
-
type: Input
|
|
507
|
-
}], noDataMessage: [{
|
|
508
|
-
type: Input
|
|
509
|
-
}], selectedItems: [{
|
|
510
|
-
type: Input
|
|
511
|
-
}], onChange: [{
|
|
512
|
-
type: Output
|
|
513
|
-
}], selectElement: [{
|
|
475
|
+
args: [{ selector: 'mis-nested-multi-select-dropdown', template: "<div\n class=\"container\"\n [ngStyle]=\"{\n height: height().length > 0 ? height() : '',\n width: width().length > 0 ? width() : ''\n }\"\n>\n <div\n class=\"dropdown\"\n #select\n tabindex=\"0\"\n (keyup.enter)=\"toggleDropdown()\"\n (click)=\"toggleDropdown()\"\n [ngStyle]=\"{ background: isOpen() ? '#E6EBF7' : '' }\"\n >\n <div class=\"label\">\n <p class=\"text\">{{ label() }}</p>\n <p *ngIf=\"showSelectedCount() && selectedCount() > 0\" class=\"count\">\n {{ selectedCount() }}\n </p>\n </div>\n <svg\n class=\"handle\"\n [ngStyle]=\"{ transform: isOpen() ? 'rotate(180deg)' : 'rotate(0deg)' }\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z\"\n fill=\"#181F33\"\n />\n </svg>\n </div>\n</div>\n<ng-template #popupContainer>\n <div\n class=\"popup-container\"\n [ngStyle]=\"{\n height: dropdownListHeight(),\n width: dropdownListWidth()\n }\"\n [ngClass]=\"{\n 'position-left': dropdownListPosition() === 'Left',\n 'position-right': dropdownListPosition() === 'Right'\n }\"\n >\n <div *ngIf=\"searchEnabled()\" class=\"search-container\">\n <svg\n *ngIf=\"!isSearchInputFocused()\"\n class=\"search-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n <input\n [ngModel]=\"searchInput()\"\n [ngStyle]=\"{\n paddingLeft: isSearchInputFocused() ? '12px' : '45px',\n border: isSearchInputFocused() ? '1px solid #0937B2' : '1px solid #e0e0e0',\n paddingRight: isSearchInputFocused() ? '45px' : '10px'\n }\"\n (ngModelChange)=\"searchInputOnChange($event)\"\n [placeholder]=\"isSearchInputFocused() ? '' : searchInputPlaceholder()\"\n (focus)=\"searchInputFocused(true)\"\n class=\"search-input\"\n />\n <svg\n *ngIf=\"isSearchInputFocused()\"\n class=\"cancel-icon\"\n (click)=\"searchInputCanceled($event)\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div class=\"items\">\n <div\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of displayData()\"\n >\n <div class=\"item\">\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ item.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"item.icon\">\n <img class=\"icon\" [src]=\"item.icon\" alt=\"no img\" />\n </div>\n </div>\n <div *ngIf=\"item?.children?.length > 0\" class=\"items sub\" [ngStyle]=\"{'padding-right': '0'}\">\n <div\n class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item, cItem)\"\n (click)=\"toggleSelectedItems($event, item, cItem)\"\n *ngFor=\"let cItem of item?.children\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"cItem.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ cItem.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"cItem.icon\">\n <img class=\"icon\" [src]=\"cItem.icon\" alt=\"no img\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"noData\" *ngIf=\"displayData().length === 0\">\n {{ searchInput() === \"\" ? noDataMessage() : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"localData().length !== 0\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" (click)=\"onReset()\"></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" (click)=\"applyFilters()\"></mis-button>\n </div>\n </div>\n </div>\n</ng-template>\n\n", styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#9aa7b4}.container{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container .dropdown{height:inherit;border:1px solid #e0e0e0;border-radius:6px;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container .dropdown:hover,.container .dropdown:focus-visible{background-color:#f5f7fc;outline:none}.container .dropdown .label{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .count{background-color:#e0e0e0;border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:#181f33}.container .dropdown .handle{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container::-webkit-scrollbar{width:0;height:0}.popup-container .search-container{position:relative;box-sizing:border-box;padding:8px}.popup-container .search-container .search-icon{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container .search-container .search-input{height:40px;width:100%;padding:12px;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:8px;outline:none;caret-color:#0937b2;font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:#181f33}.popup-container .search-container .cancel-icon{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container .items{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container .items::-webkit-scrollbar{width:5px;height:0}.popup-container .items::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:10px}.popup-container .items .noData{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.popup-container .items .item{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container .items .item:hover,.popup-container .items .item:focus-visible{background-color:#f5f7fc;outline:none}.popup-container .items .item .checkbox-container-wrapper{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container .items .item .checkbox-container-wrapper .checkbox-container{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input:checked~.checkmark:after{display:block}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:#0079f1;border:1px solid rgb(106,115,125)}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid white;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container .items .item .checkbox-container-wrapper .label{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;overflow:hidden}.popup-container .items .item .icon-container{width:10%;display:flex;justify-content:flex-end}.popup-container .items .item .icon-container .icon{width:20px;height:20px}.popup-container .actions-container{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:#fff;border-top:1px solid #e0e0e0}.popup-container .actions-container .cancel{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container .actions-container .cancel:hover{background:#0937b20a}.popup-container .actions-container .apply{cursor:pointer;padding:10px 32px;text-align:center;color:#fff;font-size:16px;line-height:24px;background:#0937b2;border-radius:8px}\n"] }]
|
|
476
|
+
}], () => [], { selectElement: [{
|
|
514
477
|
type: ViewChild,
|
|
515
|
-
args: [
|
|
478
|
+
args: ['select', { static: false }]
|
|
516
479
|
}], popupContainer: [{
|
|
517
480
|
type: ViewChild,
|
|
518
|
-
args: [
|
|
481
|
+
args: ['popupContainer', { static: false }]
|
|
519
482
|
}] }); })();
|
|
520
483
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NestedMultiSelectDropdownComponent, { className: "NestedMultiSelectDropdownComponent" }); })();
|
|
521
484
|
|