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,22 +1,21 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { inject, ElementRef, ViewContainerRef, input, output, signal, computed, effect, Component, ViewChild, NgModule } from '@angular/core';
|
|
3
3
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import * as i2 from '@angular/common';
|
|
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"];
|
|
16
15
|
const _c1 = ["popupContainer"];
|
|
17
16
|
const _c2 = (a0, a1) => ({ height: a0, width: a1 });
|
|
18
|
-
const _c3 = a0 => ({ background: a0 });
|
|
19
|
-
const _c4 = a0 => ({ transform: a0 });
|
|
17
|
+
const _c3 = a0 => ({ "background": a0 });
|
|
18
|
+
const _c4 = a0 => ({ "transform": a0 });
|
|
20
19
|
const _c5 = (a0, a1) => ({ "height": a0, width: a1 });
|
|
21
20
|
const _c6 = (a0, a1) => ({ "position-left": a0, "position-right": a1 });
|
|
22
21
|
const _c7 = (a0, a1, a2) => ({ paddingLeft: a0, border: a1, paddingRight: a2 });
|
|
@@ -29,7 +28,7 @@ function MultiSelectDropdownComponent_ng_container_4_p_3_Template(rf, ctx) { if
|
|
|
29
28
|
} if (rf & 2) {
|
|
30
29
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
31
30
|
i0.ɵɵadvance();
|
|
32
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.
|
|
31
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.internalSelectedItems().length, " ");
|
|
33
32
|
} }
|
|
34
33
|
function MultiSelectDropdownComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
35
34
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -41,9 +40,9 @@ function MultiSelectDropdownComponent_ng_container_4_Template(rf, ctx) { if (rf
|
|
|
41
40
|
} if (rf & 2) {
|
|
42
41
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
43
42
|
i0.ɵɵadvance(2);
|
|
44
|
-
i0.ɵɵtextInterpolate(ctx_r1.label);
|
|
43
|
+
i0.ɵɵtextInterpolate(ctx_r1.label());
|
|
45
44
|
i0.ɵɵadvance();
|
|
46
|
-
i0.ɵɵproperty("ngIf", ctx_r1.showSelectedCount &&
|
|
45
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showSelectedCount() && ctx_r1.internalSelectedItems().length > 0);
|
|
47
46
|
} }
|
|
48
47
|
function MultiSelectDropdownComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
49
48
|
i0.ɵɵelementContainer(0);
|
|
@@ -55,7 +54,7 @@ function MultiSelectDropdownComponent_ng_container_5_Template(rf, ctx) { if (rf
|
|
|
55
54
|
} if (rf & 2) {
|
|
56
55
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
57
56
|
i0.ɵɵadvance();
|
|
58
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.customLabelTemplate);
|
|
57
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.customLabelTemplate());
|
|
59
58
|
} }
|
|
60
59
|
function MultiSelectDropdownComponent_ng_template_8_div_1__svg_svg_1_Template(rf, ctx) { if (rf & 1) {
|
|
61
60
|
i0.ɵɵnamespaceSVG();
|
|
@@ -83,11 +82,11 @@ function MultiSelectDropdownComponent_ng_template_8_div_1_Template(rf, ctx) { if
|
|
|
83
82
|
} if (rf & 2) {
|
|
84
83
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
85
84
|
i0.ɵɵadvance();
|
|
86
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused);
|
|
85
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused());
|
|
87
86
|
i0.ɵɵadvance();
|
|
88
|
-
i0.ɵɵproperty("ngModel", ctx_r1.searchInput)("ngStyle", i0.ɵɵpureFunction3(5, _c7, 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);
|
|
87
|
+
i0.ɵɵproperty("ngModel", ctx_r1.searchInput())("ngStyle", i0.ɵɵpureFunction3(5, _c7, 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());
|
|
89
88
|
i0.ɵɵadvance();
|
|
90
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused);
|
|
89
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused());
|
|
91
90
|
} }
|
|
92
91
|
function MultiSelectDropdownComponent_ng_template_8_div_3_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
93
92
|
i0.ɵɵelementStart(0, "div", 31);
|
|
@@ -127,7 +126,7 @@ function MultiSelectDropdownComponent_ng_template_8_div_4_Template(rf, ctx) { if
|
|
|
127
126
|
} if (rf & 2) {
|
|
128
127
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
129
128
|
i0.ɵɵadvance();
|
|
130
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput === "" ? ctx_r1.noDataMessage : "No results", " ");
|
|
129
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput() === "" ? ctx_r1.noDataMessage() : "No results", " ");
|
|
131
130
|
} }
|
|
132
131
|
function MultiSelectDropdownComponent_ng_template_8_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
133
132
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
@@ -159,262 +158,251 @@ function MultiSelectDropdownComponent_ng_template_8_Template(rf, ctx) { if (rf &
|
|
|
159
158
|
i0.ɵɵelementEnd();
|
|
160
159
|
} if (rf & 2) {
|
|
161
160
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
162
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c5, ctx_r1.dropdownListHeight, ctx_r1.dropdownListWidth))("ngClass", i0.ɵɵpureFunction2(9, _c6, ctx_r1.dropdownListPosition === "Left", ctx_r1.dropdownListPosition === "Right"));
|
|
161
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c5, ctx_r1.dropdownListHeight(), ctx_r1.dropdownListWidth()))("ngClass", i0.ɵɵpureFunction2(9, _c6, ctx_r1.dropdownListPosition() === "Left", ctx_r1.dropdownListPosition() === "Right"));
|
|
163
162
|
i0.ɵɵadvance();
|
|
164
|
-
i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled);
|
|
163
|
+
i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled());
|
|
165
164
|
i0.ɵɵadvance(2);
|
|
166
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.
|
|
165
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.displayData());
|
|
167
166
|
i0.ɵɵadvance();
|
|
168
|
-
i0.ɵɵproperty("ngIf",
|
|
167
|
+
i0.ɵɵproperty("ngIf", ctx_r1.displayData().length === 0);
|
|
169
168
|
i0.ɵɵadvance();
|
|
170
|
-
i0.ɵɵproperty("ngIf", ctx_r1.
|
|
169
|
+
i0.ɵɵproperty("ngIf", ctx_r1.internalData().length !== 0 && !ctx_r1.hideApplyButton());
|
|
171
170
|
} }
|
|
172
171
|
class MultiSelectDropdownComponent {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
this.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
this.
|
|
183
|
-
this.
|
|
184
|
-
this.
|
|
185
|
-
this.
|
|
186
|
-
this.
|
|
187
|
-
this.
|
|
188
|
-
this.
|
|
189
|
-
this.
|
|
190
|
-
this.
|
|
191
|
-
this.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
this.
|
|
195
|
-
this.
|
|
196
|
-
this.
|
|
197
|
-
|
|
198
|
-
this.
|
|
199
|
-
|
|
200
|
-
this.
|
|
201
|
-
this.
|
|
202
|
-
this.
|
|
203
|
-
this.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
172
|
+
constructor() {
|
|
173
|
+
// Dependencies Injection
|
|
174
|
+
this.eRef = inject(ElementRef);
|
|
175
|
+
this.overlay = inject(Overlay);
|
|
176
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
177
|
+
// Signal-based Inputs
|
|
178
|
+
this.data = input([]);
|
|
179
|
+
this.selectedItems = input([]);
|
|
180
|
+
this.label = input('Select');
|
|
181
|
+
this.height = input('');
|
|
182
|
+
this.width = input('');
|
|
183
|
+
this.dropdownListHeight = input('');
|
|
184
|
+
this.dropdownListWidth = input('');
|
|
185
|
+
this.dropdownListPosition = input('Left');
|
|
186
|
+
this.enableSelectAll = input(false);
|
|
187
|
+
this.searchEnabled = input(true);
|
|
188
|
+
this.showSelectedCount = input(false);
|
|
189
|
+
this.noDataMessage = input('No Data');
|
|
190
|
+
this.options = input({
|
|
191
|
+
sortLabels: true,
|
|
192
|
+
});
|
|
193
|
+
this.hideApplyButton = input(false);
|
|
194
|
+
this.searchInputPlaceholder = input('Search Keyword');
|
|
195
|
+
this.customLabelTemplate = input();
|
|
196
|
+
// Signal-based Output
|
|
197
|
+
this.onChange = output();
|
|
198
|
+
// Internal Signals for component state
|
|
199
|
+
this.isOpen = signal(false);
|
|
200
|
+
this.searchInput = signal('');
|
|
201
|
+
this.isSearchInputFocused = signal(false);
|
|
202
|
+
this.internalSelectedItems = signal([]);
|
|
203
|
+
this.internalData = signal([]);
|
|
204
|
+
// Constants
|
|
205
|
+
this.SELECT_ALL_ENUM = 'SELECT_ALL_ENABLED';
|
|
206
|
+
/**
|
|
207
|
+
* Computed signal for the data to be displayed in the dropdown list.
|
|
208
|
+
* Filters based on search input and sorts if the option is enabled.
|
|
209
|
+
*/
|
|
210
|
+
this.displayData = computed(() => {
|
|
211
|
+
let dataToDisplay = this.searchEnabled() && this.searchInput() ?
|
|
212
|
+
this.filterByValue(this.internalData(), this.searchInput()) :
|
|
213
|
+
this.internalData();
|
|
214
|
+
if (this.options().sortLabels) {
|
|
215
|
+
dataToDisplay = this.sortData(dataToDisplay);
|
|
216
216
|
}
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
return dataToDisplay;
|
|
218
|
+
});
|
|
219
|
+
effect(() => {
|
|
220
|
+
this.handleInputChanges();
|
|
221
|
+
}, { allowSignalWrites: true });
|
|
222
|
+
effect(() => {
|
|
223
|
+
if (this.isOpen()) {
|
|
224
|
+
this.openDropdown(this.popupContainer, this.selectElement?.nativeElement);
|
|
219
225
|
}
|
|
220
226
|
else {
|
|
221
|
-
|
|
222
|
-
|
|
227
|
+
this.overlayRef?.detach();
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Effect to manage the component's internal state based on external inputs.
|
|
233
|
+
*/
|
|
234
|
+
handleInputChanges() {
|
|
235
|
+
const values = this.data();
|
|
236
|
+
const selected = this.selectedItems();
|
|
237
|
+
const formattedData = values?.map(item => ({
|
|
238
|
+
...item,
|
|
239
|
+
checked: selected?.some(s => s.value === item.value) ?? false
|
|
240
|
+
})) || [];
|
|
241
|
+
this.internalData.set(formattedData);
|
|
242
|
+
this.internalSelectedItems.set(selected);
|
|
243
|
+
// Apply the 'select all' logic
|
|
244
|
+
this.internalData.update(currentData => {
|
|
245
|
+
const isSelectAll = this.enableSelectAll() && currentData.every(item => item.checked || item.value === this.SELECT_ALL_ENUM);
|
|
246
|
+
const selectAllItem = {
|
|
247
|
+
label: 'Select all',
|
|
248
|
+
value: this.SELECT_ALL_ENUM,
|
|
249
|
+
checked: isSelectAll
|
|
250
|
+
};
|
|
251
|
+
const hasSelectAll = currentData.some(t => t.value === this.SELECT_ALL_ENUM);
|
|
252
|
+
if (this.enableSelectAll()) {
|
|
253
|
+
if (!hasSelectAll) {
|
|
254
|
+
return [selectAllItem, ...currentData];
|
|
223
255
|
}
|
|
224
256
|
else {
|
|
225
|
-
return item;
|
|
257
|
+
return currentData.map(item => item.value === this.SELECT_ALL_ENUM ? selectAllItem : item);
|
|
226
258
|
}
|
|
227
259
|
}
|
|
228
|
-
|
|
229
|
-
|
|
260
|
+
else {
|
|
261
|
+
return currentData.filter(item => item.value !== this.SELECT_ALL_ENUM);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
230
264
|
}
|
|
231
|
-
|
|
232
|
-
|
|
265
|
+
/**
|
|
266
|
+
* Helper function to sort the data.
|
|
267
|
+
*/
|
|
268
|
+
sortData(data) {
|
|
269
|
+
const checkedValues = data.filter(a => a.checked);
|
|
270
|
+
const unCheckedValues = data.filter(a => !a.checked);
|
|
271
|
+
const sortFn = (a, b) => a.label > b.label ? 1 : -1;
|
|
272
|
+
return [
|
|
273
|
+
...checkedValues.sort(sortFn),
|
|
274
|
+
...unCheckedValues.sort(sortFn)
|
|
275
|
+
].filter(t => t.value !== this.SELECT_ALL_ENUM);
|
|
233
276
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
277
|
+
/**
|
|
278
|
+
* Helper function to filter the data.
|
|
279
|
+
*/
|
|
280
|
+
filterByValue(array, search) {
|
|
281
|
+
return array.filter(o => o?.label?.toLowerCase().includes(search.toLowerCase())) || [];
|
|
238
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Toggles the dropdown's open/close state.
|
|
285
|
+
*/
|
|
239
286
|
toggleDropdown() {
|
|
240
|
-
this.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
287
|
+
this.isOpen.update(current => !current);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Toggles the checked state of a specific item.
|
|
291
|
+
* Handles the 'Select All' logic.
|
|
292
|
+
*/
|
|
293
|
+
toggleSelectedItems(event, item) {
|
|
294
|
+
event?.stopPropagation();
|
|
295
|
+
if (this.enableSelectAll() && item.value === this.SELECT_ALL_ENUM) {
|
|
296
|
+
this.internalData.update(items => items.map(t => ({ ...t, checked: !item.checked })));
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
this.internalData.update(items => {
|
|
300
|
+
const updatedItems = items.map(a => a.value === item.value ? { ...a, checked: !a.checked } : a);
|
|
301
|
+
const allChecked = updatedItems
|
|
302
|
+
.filter(r => r.value !== this.SELECT_ALL_ENUM)
|
|
303
|
+
.every(t => t.checked);
|
|
304
|
+
return updatedItems.map(a => a.value === this.SELECT_ALL_ENUM ? { ...a, checked: allChecked } : a);
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
if (this.hideApplyButton()) {
|
|
308
|
+
this.applyFilters();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Emits the selected items and closes the dropdown.
|
|
313
|
+
*/
|
|
314
|
+
applyFilters() {
|
|
315
|
+
const selected = this.internalData()
|
|
316
|
+
.filter(a => a.checked && a.value !== this.SELECT_ALL_ENUM)
|
|
317
|
+
.map(item => {
|
|
318
|
+
const { checked, ...data } = item;
|
|
319
|
+
return data;
|
|
250
320
|
});
|
|
321
|
+
// Use the signal output's emit method
|
|
322
|
+
this.onChange.emit(selected);
|
|
323
|
+
this.internalSelectedItems.set(selected);
|
|
324
|
+
if (!this.hideApplyButton()) {
|
|
325
|
+
this.isOpen.set(false);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Resets the dropdown to an empty state.
|
|
330
|
+
*/
|
|
331
|
+
onReset() {
|
|
332
|
+
this.internalData.update(items => items.map(item => ({ ...item, checked: false })));
|
|
333
|
+
this.applyFilters();
|
|
334
|
+
this.isOpen.set(false);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Closes the dropdown and reverts any changes.
|
|
338
|
+
*/
|
|
339
|
+
onCancel() {
|
|
340
|
+
this.isOpen.set(false);
|
|
341
|
+
this.searchInput.set('');
|
|
342
|
+
// Revert internal data to match the last selected items
|
|
343
|
+
this.handleInputChanges();
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Toggles the focus state of the search input.
|
|
347
|
+
*/
|
|
348
|
+
searchInputFocused(isFocused) {
|
|
349
|
+
this.isSearchInputFocused.set(isFocused);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Clears the search input and unfocuses it.
|
|
353
|
+
*/
|
|
354
|
+
searchInputCanceled(event) {
|
|
355
|
+
event.stopPropagation();
|
|
356
|
+
this.searchInput.set('');
|
|
357
|
+
this.isSearchInputFocused.set(false);
|
|
251
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Handles the change event from the search input.
|
|
361
|
+
*/
|
|
362
|
+
searchInputOnChange(newValue) {
|
|
363
|
+
this.searchInput.set(newValue);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Creates and displays the overlay for the dropdown list.
|
|
367
|
+
*/
|
|
252
368
|
openDropdown(template, origin) {
|
|
369
|
+
if (this.overlayRef && this.overlayRef.hasAttached()) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
253
372
|
const positionsBottom = [
|
|
254
|
-
new ConnectionPositionPair({ originX:
|
|
255
|
-
new ConnectionPositionPair({ originX:
|
|
373
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),
|
|
374
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4),
|
|
256
375
|
];
|
|
257
376
|
const positionsTop = [
|
|
258
|
-
new ConnectionPositionPair({ originX:
|
|
259
|
-
new ConnectionPositionPair({ originX:
|
|
377
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4),
|
|
378
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4),
|
|
260
379
|
];
|
|
261
380
|
const positionStrategy = this.overlay
|
|
262
381
|
.position()
|
|
263
382
|
.flexibleConnectedTo(origin)
|
|
264
383
|
.withPositions([
|
|
265
|
-
...(this.dropdownListPosition ===
|
|
266
|
-
...(this.dropdownListPosition ===
|
|
384
|
+
...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),
|
|
385
|
+
...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop),
|
|
267
386
|
])
|
|
268
387
|
.withPush(true);
|
|
269
388
|
const configs = new OverlayConfig({
|
|
270
389
|
hasBackdrop: true,
|
|
271
|
-
backdropClass:
|
|
390
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
272
391
|
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
273
392
|
positionStrategy,
|
|
274
|
-
width: origin?.clientWidth
|
|
393
|
+
width: origin?.clientWidth,
|
|
275
394
|
});
|
|
276
395
|
this.overlayRef = this.overlay.create(configs);
|
|
277
|
-
if (this.dropdownListWidth)
|
|
278
|
-
this.overlayRef
|
|
279
|
-
if (this.dropdownListHeight)
|
|
280
|
-
this.overlayRef?.updateSize({ height: this.dropdownListHeight });
|
|
281
|
-
this.overlayRef?.attach(new TemplatePortal(template, this.viewContainerRef));
|
|
282
|
-
this.overlayRef?.backdropClick()?.subscribe(res => {
|
|
283
|
-
this.onCancel();
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
filterByValue(array, string) {
|
|
287
|
-
return array?.filter(o => o?.label?.toLowerCase()?.includes(string?.toLowerCase())) || [];
|
|
288
|
-
}
|
|
289
|
-
searchInputOnChange(newValue) {
|
|
290
|
-
this.searchInput = newValue;
|
|
291
|
-
if (newValue) {
|
|
292
|
-
this.searchData = this.filterByValue(this.localData, newValue);
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
this.searchData = [];
|
|
296
|
-
this.searchInput = "";
|
|
396
|
+
if (this.dropdownListWidth()) {
|
|
397
|
+
this.overlayRef.updateSize({ width: this.dropdownListWidth() });
|
|
297
398
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
let sortedArray = array || [];
|
|
301
|
-
if (this.options?.sortLabels) {
|
|
302
|
-
const checkedValues = array
|
|
303
|
-
?.filter(a => a?.checked)
|
|
304
|
-
?.sort((a, b) => (a?.label > b?.label ? 1 : b?.label > a?.label ? -1 : 0)) || [];
|
|
305
|
-
const unCheckedValues = array
|
|
306
|
-
?.filter(a => !a?.checked)
|
|
307
|
-
?.sort((a, b) => (a?.label > b?.label ? 1 : b?.label > a?.label ? -1 : 0)) || [];
|
|
308
|
-
sortedArray = [...checkedValues, ...unCheckedValues]?.filter(t => t?.value !== this.SELECT_ALL_ENUM) || [];
|
|
309
|
-
}
|
|
310
|
-
if (!sortedArray?.some(option => option?.value === this.SELECT_ALL_ENUM) && this.enableSelectAll && sortedArray?.length > 0) {
|
|
311
|
-
sortedArray?.unshift({
|
|
312
|
-
label: "Select all",
|
|
313
|
-
value: this.SELECT_ALL_ENUM,
|
|
314
|
-
checked: sortedArray?.every(y => y?.checked)
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
return sortedArray;
|
|
318
|
-
}
|
|
319
|
-
toggleSelectedItems(event, item) {
|
|
320
|
-
event?.stopPropagation();
|
|
321
|
-
if (this.enableSelectAll && item?.value === this.SELECT_ALL_ENUM) {
|
|
322
|
-
this.localData = this.localData?.map(t => ({
|
|
323
|
-
...t,
|
|
324
|
-
checked: !item?.checked
|
|
325
|
-
})) || [];
|
|
326
|
-
if (this.hideApplyButton) {
|
|
327
|
-
this.applyFilters();
|
|
328
|
-
}
|
|
329
|
-
return;
|
|
399
|
+
if (this.dropdownListHeight()) {
|
|
400
|
+
this.overlayRef.updateSize({ height: this.dropdownListHeight() });
|
|
330
401
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
...this.localData?.map(a => {
|
|
334
|
-
if (a?.value === item?.value || a?.value === this.SELECT_ALL_ENUM) {
|
|
335
|
-
return {
|
|
336
|
-
...a,
|
|
337
|
-
checked: false
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
return a;
|
|
341
|
-
}) || []
|
|
342
|
-
];
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
this.localData = [
|
|
346
|
-
...this.localData?.map(a => {
|
|
347
|
-
if (a?.value === item?.value) {
|
|
348
|
-
return {
|
|
349
|
-
...a,
|
|
350
|
-
checked: true
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
return a;
|
|
354
|
-
}) || []
|
|
355
|
-
];
|
|
356
|
-
if (this.enableSelectAll && this.localData?.filter(r => r?.value !== this.SELECT_ALL_ENUM)?.every(t => t?.checked)) {
|
|
357
|
-
this.localData = [
|
|
358
|
-
...this.localData?.map(a => {
|
|
359
|
-
if (a?.value === this.SELECT_ALL_ENUM) {
|
|
360
|
-
return {
|
|
361
|
-
...a,
|
|
362
|
-
checked: true
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
return a;
|
|
366
|
-
}) || []
|
|
367
|
-
];
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
if (this.searchEnabled) {
|
|
371
|
-
this.searchInputOnChange(this.searchInput);
|
|
372
|
-
}
|
|
373
|
-
if (this.hideApplyButton) {
|
|
374
|
-
this.applyFilters();
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
applyFilters() {
|
|
378
|
-
this.onChange?.emit(this.localData
|
|
379
|
-
?.filter(a => {
|
|
380
|
-
return a?.checked && a?.value !== this.SELECT_ALL_ENUM;
|
|
381
|
-
})
|
|
382
|
-
?.map(item => {
|
|
383
|
-
const { checked, ...data } = item || {};
|
|
384
|
-
return data;
|
|
385
|
-
}) || []);
|
|
386
|
-
if (!this.hideApplyButton) {
|
|
387
|
-
this.onCancel();
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
onReset() {
|
|
391
|
-
this.isSearchInputFocused = false;
|
|
392
|
-
this.onChange?.emit([]);
|
|
393
|
-
this.isOpen = false;
|
|
394
|
-
this.searchInput = "";
|
|
395
|
-
}
|
|
396
|
-
onCancel() {
|
|
397
|
-
this.isSearchInputFocused = false;
|
|
398
|
-
this.localData = this.localData?.map(a => {
|
|
399
|
-
if (this.localSelectedItems?.some(b => b?.value === a?.value && String(b?.checked) !== String(a?.checked))) {
|
|
400
|
-
return a;
|
|
401
|
-
}
|
|
402
|
-
else {
|
|
403
|
-
if (a?.value !== this.SELECT_ALL_ENUM && this.hideApplyButton) {
|
|
404
|
-
return {
|
|
405
|
-
...a,
|
|
406
|
-
checked: false
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
return a;
|
|
410
|
-
}
|
|
411
|
-
}) || [];
|
|
412
|
-
this.isOpen = false;
|
|
413
|
-
this.searchInput = "";
|
|
414
|
-
this.overlayRef?.detach();
|
|
415
|
-
this.searchInput = "";
|
|
402
|
+
this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
|
|
403
|
+
this.overlayRef.backdropClick().subscribe(() => this.onCancel());
|
|
416
404
|
}
|
|
417
|
-
static { this.ɵfac = function MultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MultiSelectDropdownComponent)(
|
|
405
|
+
static { this.ɵfac = function MultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MultiSelectDropdownComponent)(); }; }
|
|
418
406
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MultiSelectDropdownComponent, selectors: [["mis-multi-select-dropdown"]], viewQuery: function MultiSelectDropdownComponent_Query(rf, ctx) { if (rf & 1) {
|
|
419
407
|
i0.ɵɵviewQuery(_c0, 5);
|
|
420
408
|
i0.ɵɵviewQuery(_c1, 5);
|
|
@@ -422,7 +410,7 @@ class MultiSelectDropdownComponent {
|
|
|
422
410
|
let _t;
|
|
423
411
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectElement = _t.first);
|
|
424
412
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupContainer = _t.first);
|
|
425
|
-
} }, inputs: { data: "data", label: "label", height: "height", width: "width", dropdownListHeight: "dropdownListHeight", dropdownListWidth: "dropdownListWidth", dropdownListPosition: "dropdownListPosition", enableSelectAll: "enableSelectAll", searchEnabled: "searchEnabled", showSelectedCount: "showSelectedCount", noDataMessage: "noDataMessage", options: "options",
|
|
413
|
+
} }, 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"], enableSelectAll: [1, "enableSelectAll"], searchEnabled: [1, "searchEnabled"], showSelectedCount: [1, "showSelectedCount"], noDataMessage: [1, "noDataMessage"], options: [1, "options"], hideApplyButton: [1, "hideApplyButton"], searchInputPlaceholder: [1, "searchInputPlaceholder"], customLabelTemplate: [1, "customLabelTemplate"] }, outputs: { onChange: "onChange" }, decls: 10, vars: 12, consts: [["select", ""], ["popupContainer", ""], [1, "container", 3, "ngStyle"], ["tabindex", "0", 1, "dropdown", 3, "keyup.enter", "click", "ngStyle"], [1, "label"], [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, "text"], ["class", "count", 4, "ngIf"], [1, "count"], [4, "ngTemplateOutlet"], [1, "popup-container", 3, "ngStyle", "ngClass"], ["class", "search-container", 4, "ngIf"], [1, "items"], ["class", "item", "tabindex", "0", 3, "ngClass", "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", 1, "item", 3, "keyup.enter", "click", "ngClass"], [1, "checkbox-container-wrapper"], [1, "checkbox-container"], ["tabindex", "-1", 3, "checked"], ["class", "icon-container", 4, "ngIf"], [1, "icon-container"], ["alt", "no img", 1, "icon", 3, "src"], [1, "noData"], [1, "actions-container"], [3, "click", "ngStyle"], [3, "name", "type", "width"]], template: function MultiSelectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
426
414
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
427
415
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3, 0);
|
|
428
416
|
i0.ɵɵlistener("keyup.enter", function MultiSelectDropdownComponent_Template_div_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); })("click", function MultiSelectDropdownComponent_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); });
|
|
@@ -435,60 +423,26 @@ class MultiSelectDropdownComponent {
|
|
|
435
423
|
i0.ɵɵelementEnd()()();
|
|
436
424
|
i0.ɵɵtemplate(8, MultiSelectDropdownComponent_ng_template_8_Template, 6, 12, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
437
425
|
} if (rf & 2) {
|
|
438
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height.length > 0 ? ctx.height : "", ctx.width.length > 0 ? ctx.width : ""));
|
|
426
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height().length > 0 ? ctx.height() : "", ctx.width().length > 0 ? ctx.width() : ""));
|
|
439
427
|
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen ? "#E6EBF7" : ""));
|
|
428
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen() ? "#E6EBF7" : ""));
|
|
441
429
|
i0.ɵɵadvance(3);
|
|
442
|
-
i0.ɵɵproperty("ngIf", !ctx.customLabelTemplate);
|
|
430
|
+
i0.ɵɵproperty("ngIf", !ctx.customLabelTemplate());
|
|
443
431
|
i0.ɵɵadvance();
|
|
444
|
-
i0.ɵɵproperty("ngIf", ctx.customLabelTemplate);
|
|
432
|
+
i0.ɵɵproperty("ngIf", ctx.customLabelTemplate());
|
|
445
433
|
i0.ɵɵadvance();
|
|
446
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen ? "rotate(180deg)" : "rotate(0deg)"));
|
|
447
|
-
} }, dependencies: [
|
|
434
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen() ? "rotate(180deg)" : "rotate(0deg)"));
|
|
435
|
+
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CheckboxComponent, i4.ButtonComponent], styles: [".container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;height:32px;width:256px;font-family:Lato,sans-serif!important}.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%]{width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start}.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}.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%] .disabled[_ngcontent-%COMP%]{pointer-events:none;opacity:.5}.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;line-height:20px;font-size:14px;font-style:normal;font-weight:400;letter-spacing:.2;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;margin-top:auto}.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}"] }); }
|
|
448
436
|
}
|
|
449
437
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiSelectDropdownComponent, [{
|
|
450
438
|
type: Component,
|
|
451
|
-
args: [{ selector: "mis-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 <ng-container *ngIf=\"!customLabelTemplate\">\n <p class=\"text\">{{ label }}</p>\n <p *ngIf=\"showSelectedCount && localSelectedItems?.length > 0\" class=\"count\">\n {{ localSelectedItems?.length }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate\">\n </ng-container>\n </ng-container>\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 class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of searchInput ? searchData : localData\"\n [ngClass]=\"{'disabled':item.disabled}\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\" tabindex=\"-1\"></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 class=\"noData\" *ngIf=\"(searchInput ? searchData : localData).length === 0\">\n {{ searchInput === \"\" ? noDataMessage : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"localData.length !== 0 && !hideApplyButton\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\" (click)=\"onReset()\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" ></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\" (click)=\"applyFilters()\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" ></mis-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".container{position:relative;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;height:32px;width:256px;font-family:Lato,sans-serif!important}.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{width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start}.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}.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 .disabled{pointer-events:none;opacity:.5}.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;line-height:20px;font-size:14px;font-style:normal;font-weight:400;letter-spacing:.2;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;margin-top:auto}.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"] }]
|
|
452
|
-
}], () => [
|
|
453
|
-
type: Input
|
|
454
|
-
}], label: [{
|
|
455
|
-
type: Input
|
|
456
|
-
}], height: [{
|
|
457
|
-
type: Input
|
|
458
|
-
}], width: [{
|
|
459
|
-
type: Input
|
|
460
|
-
}], dropdownListHeight: [{
|
|
461
|
-
type: Input
|
|
462
|
-
}], dropdownListWidth: [{
|
|
463
|
-
type: Input
|
|
464
|
-
}], dropdownListPosition: [{
|
|
465
|
-
type: Input
|
|
466
|
-
}], enableSelectAll: [{
|
|
467
|
-
type: Input
|
|
468
|
-
}], searchEnabled: [{
|
|
469
|
-
type: Input
|
|
470
|
-
}], showSelectedCount: [{
|
|
471
|
-
type: Input
|
|
472
|
-
}], noDataMessage: [{
|
|
473
|
-
type: Input
|
|
474
|
-
}], options: [{
|
|
475
|
-
type: Input
|
|
476
|
-
}], selectedItems: [{
|
|
477
|
-
type: Input
|
|
478
|
-
}], hideApplyButton: [{
|
|
479
|
-
type: Input
|
|
480
|
-
}], searchInputPlaceholder: [{
|
|
481
|
-
type: Input
|
|
482
|
-
}], customLabelTemplate: [{
|
|
483
|
-
type: Input
|
|
484
|
-
}], onChange: [{
|
|
485
|
-
type: Output
|
|
486
|
-
}], selectElement: [{
|
|
439
|
+
args: [{ selector: 'mis-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 <ng-container *ngIf=\"!customLabelTemplate()\">\n <p class=\"text\">{{ label() }}</p>\n <p *ngIf=\"showSelectedCount() && internalSelectedItems().length > 0\" class=\"count\">\n {{ internalSelectedItems().length }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"customLabelTemplate()\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate()\">\n </ng-container>\n </ng-container>\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 class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of displayData()\"\n [ngClass]=\"{'disabled':item.disabled}\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\" tabindex=\"-1\"></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 class=\"noData\" *ngIf=\"displayData().length === 0\">\n {{ searchInput() === \"\" ? noDataMessage() : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"internalData().length !== 0 && !hideApplyButton()\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\" (click)=\"onReset()\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" ></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\" (click)=\"applyFilters()\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" ></mis-button>\n </div>\n </div>\n </div>\n</ng-template>\n\n\n", styles: [".container{position:relative;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;height:32px;width:256px;font-family:Lato,sans-serif!important}.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{width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start}.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}.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 .disabled{pointer-events:none;opacity:.5}.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;line-height:20px;font-size:14px;font-style:normal;font-weight:400;letter-spacing:.2;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;margin-top:auto}.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"] }]
|
|
440
|
+
}], () => [], { selectElement: [{
|
|
487
441
|
type: ViewChild,
|
|
488
|
-
args: [
|
|
442
|
+
args: ['select', { static: false }]
|
|
489
443
|
}], popupContainer: [{
|
|
490
444
|
type: ViewChild,
|
|
491
|
-
args: [
|
|
445
|
+
args: ['popupContainer', { static: false }]
|
|
492
446
|
}] }); })();
|
|
493
447
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiSelectDropdownComponent, { className: "MultiSelectDropdownComponent" }); })();
|
|
494
448
|
|