cats-data-grid 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/check-white.svg +3 -0
- package/assets/images/minus-blue.svg +3 -0
- package/assets/images/pin.svg +4 -0
- package/assets/images/sort_down.svg +6 -6
- package/assets/images/sort_up.svg +6 -6
- package/assets/images/t-arrow-down.svg +4 -0
- package/assets/images/t-arrow-up.svg +4 -0
- package/assets/images/t-choose-column.svg +3 -0
- package/assets/images/t-data-pipeline.svg +13 -0
- package/assets/images/t-filter-applied.svg +4 -0
- package/assets/images/t-filter.svg +3 -0
- package/assets/images/t-gripper.svg +8 -0
- package/assets/images/t-group-by-name.svg +3 -0
- package/assets/images/t-more-vertical.svg +5 -0
- package/assets/images/t-move.svg +15 -0
- package/assets/images/t-x.svg +4 -0
- package/fesm2022/cats-data-grid.mjs +1404 -138
- package/fesm2022/cats-data-grid.mjs.map +1 -1
- package/index.d.ts +421 -5
- package/package.json +3 -3
- package/styles/base/_reset.scss +1 -1
- package/styles/component/_form.scss +331 -204
- package/styles/sass-utils/_mixin.scss +31 -0
- package/styles/sass-utils/_variable.scss +77 -55
- package/lib/cats-data-grid.component.d.ts +0 -241
- package/lib/directives/outside-click.directive.d.ts +0 -10
- package/lib/directives/renderer-parser.directive.d.ts +0 -15
- package/lib/pipes/add-class.pipe.d.ts +0 -7
- package/lib/services/cats-data-grid.service.d.ts +0 -6
- package/public-api.d.ts +0 -2
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Pipe, EventEmitter,
|
|
2
|
+
import { Injectable, Pipe, EventEmitter, Output, Directive, Input, HostListener, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { CommonModule, DatePipe } from '@angular/common';
|
|
5
5
|
import * as i2 from '@angular/forms';
|
|
6
|
-
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
7
7
|
|
|
8
8
|
class CatsDataGridService {
|
|
9
9
|
constructor() { }
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridService, providedIn: 'root' });
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridService, decorators: [{
|
|
14
14
|
type: Injectable,
|
|
15
15
|
args: [{
|
|
16
16
|
providedIn: 'root'
|
|
@@ -24,10 +24,10 @@ class AddClassPipe {
|
|
|
24
24
|
}
|
|
25
25
|
return '';
|
|
26
26
|
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
28
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, isStandalone: true, name: "addClass" });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, decorators: [{
|
|
31
31
|
type: Pipe,
|
|
32
32
|
args: [{
|
|
33
33
|
name: 'addClass'
|
|
@@ -40,21 +40,22 @@ class OutsideClickDirective {
|
|
|
40
40
|
constructor(elementRef) {
|
|
41
41
|
this.elementRef = elementRef;
|
|
42
42
|
}
|
|
43
|
-
onClick(event) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
if (!targetElement) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const clickInside = this.elementRef.nativeElement.contains(targetElement);
|
|
50
|
-
if (!clickInside) {
|
|
43
|
+
onClick = (event) => {
|
|
44
|
+
const target = event.target;
|
|
45
|
+
if (!this.elementRef.nativeElement.contains(target)) {
|
|
51
46
|
this.clickOutside.emit(event);
|
|
52
47
|
}
|
|
48
|
+
};
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
document.addEventListener('click', this.onClick, true);
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
document.removeEventListener('click', this.onClick, true);
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OutsideClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
56
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: OutsideClickDirective, isStandalone: true, selector: "[appOutsideClick]", outputs: { clickOutside: "clickOutside" }, ngImport: i0 });
|
|
56
57
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OutsideClickDirective, decorators: [{
|
|
58
59
|
type: Directive,
|
|
59
60
|
args: [{
|
|
60
61
|
selector: '[appOutsideClick]',
|
|
@@ -62,9 +63,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
62
63
|
}]
|
|
63
64
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutside: [{
|
|
64
65
|
type: Output
|
|
65
|
-
}], onClick: [{
|
|
66
|
-
type: HostListener,
|
|
67
|
-
args: ['document:click', ['$event']]
|
|
68
66
|
}] } });
|
|
69
67
|
|
|
70
68
|
class RendererParserDirective {
|
|
@@ -85,7 +83,7 @@ class RendererParserDirective {
|
|
|
85
83
|
data: this.rowParam,
|
|
86
84
|
value: this.currentValue,
|
|
87
85
|
cellParams: this.col?.cellRendererParams,
|
|
88
|
-
col: this.col
|
|
86
|
+
col: this.col,
|
|
89
87
|
};
|
|
90
88
|
if (this.col?.cellRenderer?.prototype &&
|
|
91
89
|
this.col.cellRenderer.prototype?.constructor == this.col.cellRenderer) {
|
|
@@ -109,10 +107,10 @@ class RendererParserDirective {
|
|
|
109
107
|
this.er.nativeElement.appendChild(toltipDiv);
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
113
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RendererParserDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
111
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: RendererParserDirective, isStandalone: true, selector: "[appRendererParser]", inputs: { rowParam: "rowParam", col: "col", api: "api", currentValue: "currentValue" }, ngImport: i0 });
|
|
114
112
|
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RendererParserDirective, decorators: [{
|
|
116
114
|
type: Directive,
|
|
117
115
|
args: [{
|
|
118
116
|
selector: '[appRendererParser]',
|
|
@@ -127,20 +125,770 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
127
125
|
type: Input
|
|
128
126
|
}] } });
|
|
129
127
|
|
|
128
|
+
class CommonInputComponent {
|
|
129
|
+
options = [];
|
|
130
|
+
selectedValue;
|
|
131
|
+
placeholder = 'Select';
|
|
132
|
+
elementType = 'dropdown';
|
|
133
|
+
valueChange = new EventEmitter();
|
|
134
|
+
showDropdown = false;
|
|
135
|
+
toggleDropdown() {
|
|
136
|
+
this.showDropdown = !this.showDropdown;
|
|
137
|
+
}
|
|
138
|
+
selectOption(option) {
|
|
139
|
+
this.selectedValue = option.value;
|
|
140
|
+
this.valueChange.emit(option.value);
|
|
141
|
+
this.showDropdown = false;
|
|
142
|
+
}
|
|
143
|
+
get selectedLabel() {
|
|
144
|
+
return (this.options.find((o) => o.value === this.selectedValue)?.label ||
|
|
145
|
+
this.placeholder);
|
|
146
|
+
}
|
|
147
|
+
// optional: close on outside click
|
|
148
|
+
closeOnOutsideClick(event) {
|
|
149
|
+
const target = event.target;
|
|
150
|
+
if (!target.closest('.text_filter_section')) {
|
|
151
|
+
this.showDropdown = false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CommonInputComponent, isStandalone: true, selector: "lib-common-input", inputs: { options: "options", selectedValue: "selectedValue", placeholder: "placeholder", elementType: "elementType" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:click": "closeOnOutsideClick($event)" } }, ngImport: i0, template: "<!-- dropdown -->\r\n@if(elementType === 'dropdown'){\r\n<div class=\"text_filter_section\">\r\n <div class=\"single_select_dropdown\" (click)=\"toggleDropdown()\">\r\n <div class=\"left_details\">\r\n <span class=\"placeholderColor textTruncate\">\r\n {{ selectedLabel }}\r\n </span>\r\n </div>\r\n\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list\" id=\"container_scroll\">\r\n <ul>\r\n @for (option of options; track option.value) {\r\n <li (click)=\"selectOption(option)\">\r\n <span class=\"textTruncate\">{{ option.label }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n", styles: [".d-none{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
156
|
+
}
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonInputComponent, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{ selector: 'lib-common-input', imports: [CommonModule], template: "<!-- dropdown -->\r\n@if(elementType === 'dropdown'){\r\n<div class=\"text_filter_section\">\r\n <div class=\"single_select_dropdown\" (click)=\"toggleDropdown()\">\r\n <div class=\"left_details\">\r\n <span class=\"placeholderColor textTruncate\">\r\n {{ selectedLabel }}\r\n </span>\r\n </div>\r\n\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list\" id=\"container_scroll\">\r\n <ul>\r\n @for (option of options; track option.value) {\r\n <li (click)=\"selectOption(option)\">\r\n <span class=\"textTruncate\">{{ option.label }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n", styles: [".d-none{display:none}\n"] }]
|
|
160
|
+
}], propDecorators: { options: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], selectedValue: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], placeholder: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], elementType: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], valueChange: [{
|
|
169
|
+
type: Output
|
|
170
|
+
}], closeOnOutsideClick: [{
|
|
171
|
+
type: HostListener,
|
|
172
|
+
args: ['document:click', ['$event']]
|
|
173
|
+
}] } });
|
|
174
|
+
|
|
175
|
+
class AdaptivePositionDirective {
|
|
176
|
+
host;
|
|
177
|
+
dropdown;
|
|
178
|
+
trigger;
|
|
179
|
+
parentContainer;
|
|
180
|
+
matchWidth = true;
|
|
181
|
+
closeOnOutside = true;
|
|
182
|
+
isAction = false;
|
|
183
|
+
isColumnActionMenu = false;
|
|
184
|
+
resizeObserver;
|
|
185
|
+
isOpen = false;
|
|
186
|
+
menuItems = [];
|
|
187
|
+
focusedIndex = -1;
|
|
188
|
+
constructor(host) {
|
|
189
|
+
this.host = host;
|
|
190
|
+
}
|
|
191
|
+
ngAfterViewInit() {
|
|
192
|
+
this.setupBaseStyles();
|
|
193
|
+
this.observeResize();
|
|
194
|
+
}
|
|
195
|
+
// @HostListener('click', ['$event'])
|
|
196
|
+
// toggle(event: Event) {
|
|
197
|
+
// event.stopPropagation();
|
|
198
|
+
// this.isOpen ? this.close() : this.open();
|
|
199
|
+
// }
|
|
200
|
+
open() {
|
|
201
|
+
this.isOpen = true;
|
|
202
|
+
this.dropdown.classList.remove('hidden');
|
|
203
|
+
this.dropdown.setAttribute('role', 'listbox');
|
|
204
|
+
this.host.nativeElement.setAttribute('aria-expanded', 'true');
|
|
205
|
+
this.prepareItems();
|
|
206
|
+
this.positionDropdown();
|
|
207
|
+
if (this.closeOnOutside)
|
|
208
|
+
document.addEventListener('click', this.handleOutsideClick);
|
|
209
|
+
}
|
|
210
|
+
close() {
|
|
211
|
+
this.isOpen = false;
|
|
212
|
+
this.dropdown.classList.add('hidden');
|
|
213
|
+
this.host.nativeElement.setAttribute('aria-expanded', 'false');
|
|
214
|
+
document.removeEventListener('click', this.handleOutsideClick);
|
|
215
|
+
this.focusedIndex = -1;
|
|
216
|
+
}
|
|
217
|
+
positionDropdown() {
|
|
218
|
+
if (!this.trigger)
|
|
219
|
+
return;
|
|
220
|
+
const dropdown = this.host.nativeElement;
|
|
221
|
+
const parent = this.parentContainer ||
|
|
222
|
+
this.trigger.closest('.table_wrapper') ||
|
|
223
|
+
document.body ||
|
|
224
|
+
this.trigger.offsetParent;
|
|
225
|
+
if (!parent)
|
|
226
|
+
return;
|
|
227
|
+
const t = this.trigger.getBoundingClientRect();
|
|
228
|
+
const p = parent.getBoundingClientRect();
|
|
229
|
+
const dH = dropdown.offsetHeight;
|
|
230
|
+
const dW = dropdown.offsetWidth;
|
|
231
|
+
const spaceBelow = p.bottom - t.bottom;
|
|
232
|
+
const spaceAbove = t.top - p.top;
|
|
233
|
+
const spaceRight = p.right - t.left;
|
|
234
|
+
const spaceLeft = t.right - p.left;
|
|
235
|
+
if (spaceBelow < dH && spaceAbove > dH) {
|
|
236
|
+
dropdown.style.bottom = `${this.trigger.offsetHeight}px`;
|
|
237
|
+
dropdown.style.top = 'auto';
|
|
238
|
+
dropdown.classList.add('drop-up');
|
|
239
|
+
dropdown.classList.remove('drop-down');
|
|
240
|
+
}
|
|
241
|
+
if (spaceRight < dW && spaceLeft > dW) {
|
|
242
|
+
dropdown.style.right = '0';
|
|
243
|
+
dropdown.style.left = 'auto';
|
|
244
|
+
dropdown.classList.add('align-right');
|
|
245
|
+
if (this.isColumnActionMenu)
|
|
246
|
+
dropdown.style.right = '0';
|
|
247
|
+
}
|
|
248
|
+
if (this.isAction)
|
|
249
|
+
dropdown.style.right = '70px';
|
|
250
|
+
if (this.matchWidth)
|
|
251
|
+
dropdown.style.width = `${this.trigger.offsetWidth}px`;
|
|
252
|
+
}
|
|
253
|
+
handleKeys(e) {
|
|
254
|
+
if (!this.isOpen)
|
|
255
|
+
return;
|
|
256
|
+
switch (e.key) {
|
|
257
|
+
case 'ArrowDown':
|
|
258
|
+
this.moveFocus(1);
|
|
259
|
+
e.preventDefault();
|
|
260
|
+
break;
|
|
261
|
+
case 'ArrowUp':
|
|
262
|
+
this.moveFocus(-1);
|
|
263
|
+
e.preventDefault();
|
|
264
|
+
break;
|
|
265
|
+
case 'Home':
|
|
266
|
+
this.focusItem(0);
|
|
267
|
+
e.preventDefault();
|
|
268
|
+
break;
|
|
269
|
+
case 'End':
|
|
270
|
+
this.focusItem(this.menuItems.length - 1);
|
|
271
|
+
e.preventDefault();
|
|
272
|
+
break;
|
|
273
|
+
case 'Enter':
|
|
274
|
+
case ' ':
|
|
275
|
+
this.selectFocused();
|
|
276
|
+
e.preventDefault();
|
|
277
|
+
break;
|
|
278
|
+
case 'Escape':
|
|
279
|
+
this.close();
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
moveFocus(delta) {
|
|
284
|
+
this.focusedIndex =
|
|
285
|
+
(this.focusedIndex + delta + this.menuItems.length) %
|
|
286
|
+
this.menuItems.length;
|
|
287
|
+
this.focusItem(this.focusedIndex);
|
|
288
|
+
}
|
|
289
|
+
focusItem(index) {
|
|
290
|
+
this.focusedIndex = index;
|
|
291
|
+
this.menuItems.forEach((i) => i.classList.remove('focused'));
|
|
292
|
+
const item = this.menuItems[index];
|
|
293
|
+
item.classList.add('focused');
|
|
294
|
+
item.scrollIntoView({ block: 'nearest' });
|
|
295
|
+
}
|
|
296
|
+
selectFocused() {
|
|
297
|
+
if (this.focusedIndex >= 0)
|
|
298
|
+
this.menuItems[this.focusedIndex].click();
|
|
299
|
+
this.close();
|
|
300
|
+
}
|
|
301
|
+
prepareItems() {
|
|
302
|
+
this.menuItems = Array.from(this.dropdown.querySelectorAll('[role="option"], li, div'));
|
|
303
|
+
this.menuItems.forEach((el) => el.setAttribute('tabindex', '-1'));
|
|
304
|
+
}
|
|
305
|
+
handleOutsideClick = (e) => {
|
|
306
|
+
const target = e.target;
|
|
307
|
+
if (!(target instanceof Node) ||
|
|
308
|
+
(!this.host.nativeElement.contains(target) &&
|
|
309
|
+
!this.dropdown.contains(target))) {
|
|
310
|
+
this.close();
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
setupBaseStyles() {
|
|
314
|
+
const dropdown = this.host.nativeElement;
|
|
315
|
+
dropdown.style.position = 'absolute';
|
|
316
|
+
this.host.nativeElement.setAttribute('role', 'button');
|
|
317
|
+
this.positionDropdown();
|
|
318
|
+
}
|
|
319
|
+
observeResize() {
|
|
320
|
+
const parent = this.parentContainer || this.host.nativeElement.offsetParent;
|
|
321
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
322
|
+
if (this.isOpen)
|
|
323
|
+
this.positionDropdown();
|
|
324
|
+
});
|
|
325
|
+
this.resizeObserver.observe(this.host.nativeElement);
|
|
326
|
+
this.resizeObserver.observe(this.trigger);
|
|
327
|
+
if (parent)
|
|
328
|
+
this.resizeObserver.observe(parent);
|
|
329
|
+
}
|
|
330
|
+
ngOnDestroy() {
|
|
331
|
+
this.resizeObserver?.disconnect();
|
|
332
|
+
document.removeEventListener('click', this.handleOutsideClick);
|
|
333
|
+
}
|
|
334
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdaptivePositionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
335
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: AdaptivePositionDirective, isStandalone: true, selector: "[adaptivePosition]", inputs: { dropdown: ["adaptive", "dropdown"], trigger: "trigger", parentContainer: "parentContainer", matchWidth: "matchWidth", closeOnOutside: "closeOnOutside", isAction: "isAction", isColumnActionMenu: "isColumnActionMenu" }, host: { listeners: { "keydown": "handleKeys($event)" } }, ngImport: i0 });
|
|
336
|
+
}
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdaptivePositionDirective, decorators: [{
|
|
338
|
+
type: Directive,
|
|
339
|
+
args: [{
|
|
340
|
+
selector: '[adaptivePosition]',
|
|
341
|
+
}]
|
|
342
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { dropdown: [{
|
|
343
|
+
type: Input,
|
|
344
|
+
args: ['adaptive']
|
|
345
|
+
}], trigger: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], parentContainer: [{
|
|
348
|
+
type: Input
|
|
349
|
+
}], matchWidth: [{
|
|
350
|
+
type: Input
|
|
351
|
+
}], closeOnOutside: [{
|
|
352
|
+
type: Input
|
|
353
|
+
}], isAction: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], isColumnActionMenu: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], handleKeys: [{
|
|
358
|
+
type: HostListener,
|
|
359
|
+
args: ['keydown', ['$event']]
|
|
360
|
+
}] } });
|
|
361
|
+
|
|
362
|
+
class CommonCalendarComponent {
|
|
363
|
+
cd;
|
|
364
|
+
datePipe;
|
|
365
|
+
dateTimeSelected = new EventEmitter();
|
|
366
|
+
dateConfig;
|
|
367
|
+
minDate;
|
|
368
|
+
maxDate;
|
|
369
|
+
preSelectedValue;
|
|
370
|
+
selectedDateTime;
|
|
371
|
+
currentDate = new Date();
|
|
372
|
+
currentMonth = this.currentDate.getMonth();
|
|
373
|
+
currentYear = this.currentDate.getFullYear();
|
|
374
|
+
selectedDate = null;
|
|
375
|
+
selectedTime = null;
|
|
376
|
+
calendar = [];
|
|
377
|
+
timeSlots = [];
|
|
378
|
+
rangeStart = null;
|
|
379
|
+
rangeEnd = null;
|
|
380
|
+
selectedMonth;
|
|
381
|
+
selectedYear;
|
|
382
|
+
control;
|
|
383
|
+
disableControl = false;
|
|
384
|
+
date = '';
|
|
385
|
+
calendarView = 'defaultView';
|
|
386
|
+
yearRange = [];
|
|
387
|
+
daysInMonth = [];
|
|
388
|
+
selectedDay = 0;
|
|
389
|
+
selectedStartDate;
|
|
390
|
+
selectedEndDate;
|
|
391
|
+
isOpen = false;
|
|
392
|
+
showYearSelector = false;
|
|
393
|
+
monthRange = {
|
|
394
|
+
'0': 'JAN',
|
|
395
|
+
'01': 'FEB',
|
|
396
|
+
'02': 'MAR',
|
|
397
|
+
'03': 'APR',
|
|
398
|
+
'04': 'MAY',
|
|
399
|
+
'05': 'JUN',
|
|
400
|
+
'06': 'JUL',
|
|
401
|
+
'07': 'AUG',
|
|
402
|
+
'08': 'SEP',
|
|
403
|
+
'09': 'OCT',
|
|
404
|
+
'10': 'NOV',
|
|
405
|
+
'11': 'DEC',
|
|
406
|
+
};
|
|
407
|
+
constructor(
|
|
408
|
+
// @Inject(LOCALE_ID) private locale: string,
|
|
409
|
+
cd, datePipe) {
|
|
410
|
+
this.cd = cd;
|
|
411
|
+
this.datePipe = datePipe;
|
|
412
|
+
}
|
|
413
|
+
ngOnChanges(_changes) {
|
|
414
|
+
if (!_changes['selectedDateTime']?.currentValue) {
|
|
415
|
+
this.selectedDateTime = [];
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
this.writeValue(this.control?.value);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
ngOnInit() {
|
|
422
|
+
this.generateYearRange();
|
|
423
|
+
// this.generateCalendar();
|
|
424
|
+
this.generateTimeRanges();
|
|
425
|
+
if (this.preSelectedValue) {
|
|
426
|
+
this.initializeCalendar();
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
onTouchedCallback = () => { };
|
|
430
|
+
onChangeCallback = () => { };
|
|
431
|
+
writeValue(value) {
|
|
432
|
+
if (value) {
|
|
433
|
+
this.selectedDateTime = value;
|
|
434
|
+
this.onChangeCallback(value);
|
|
435
|
+
this.cd.markForCheck();
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
registerOnChange(fn) {
|
|
439
|
+
this.onChangeCallback = fn;
|
|
440
|
+
}
|
|
441
|
+
registerOnTouched(fn) {
|
|
442
|
+
this.onTouchedCallback = fn;
|
|
443
|
+
}
|
|
444
|
+
setDisabledState(isDisabled) {
|
|
445
|
+
if (this.control) {
|
|
446
|
+
isDisabled ? this.control.disable() : this.control.enable();
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* @description Validates date time picker component
|
|
451
|
+
* @author Shiva Kant
|
|
452
|
+
* @param control
|
|
453
|
+
* @returns validate
|
|
454
|
+
*/
|
|
455
|
+
validate(control) {
|
|
456
|
+
this.control = control;
|
|
457
|
+
const selected = this.date ? new Date(this.date) : null;
|
|
458
|
+
// Check required manually
|
|
459
|
+
const isRequired = control.validator && control.validator(control)?.['required'];
|
|
460
|
+
if ((isRequired || control.hasError('required')) &&
|
|
461
|
+
(!this.date || !this.selectedDay)) {
|
|
462
|
+
return { required: true };
|
|
463
|
+
}
|
|
464
|
+
else if (this.minDate && selected && selected < new Date(this.minDate)) {
|
|
465
|
+
return { minDate: true };
|
|
466
|
+
}
|
|
467
|
+
else if (this.maxDate && selected && selected > new Date(this.maxDate)) {
|
|
468
|
+
return { maxDate: true };
|
|
469
|
+
}
|
|
470
|
+
return null;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* @description method to toggleCalendar
|
|
474
|
+
* @author Shiva Kant
|
|
475
|
+
*/
|
|
476
|
+
toggleCalendar() {
|
|
477
|
+
this.isOpen = !this.isOpen;
|
|
478
|
+
if (this.date && this.isOpen) {
|
|
479
|
+
this.currentDate = new Date(this.date);
|
|
480
|
+
this.selectedDay = this.currentDate.getDate();
|
|
481
|
+
}
|
|
482
|
+
this.calendarView = 'defaultView';
|
|
483
|
+
this.generateCalendar();
|
|
484
|
+
if (this.isOpen) {
|
|
485
|
+
let ele = document.getElementsByClassName('calendar-footer');
|
|
486
|
+
setTimeout(() => {
|
|
487
|
+
ele[0]?.scrollIntoView();
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* @description Closes calendar
|
|
493
|
+
* @author Shiva Kant
|
|
494
|
+
*/
|
|
495
|
+
closeCalendar() {
|
|
496
|
+
this.isOpen = false;
|
|
497
|
+
this.calendarView = 'defaultView';
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* @description Method to Gets month year
|
|
501
|
+
* @author Shiva Kant
|
|
502
|
+
* @returns month year
|
|
503
|
+
*/
|
|
504
|
+
getMonthYear() {
|
|
505
|
+
return {
|
|
506
|
+
month: this.currentDate.toLocaleString('default', {
|
|
507
|
+
month: 'long',
|
|
508
|
+
}),
|
|
509
|
+
year: this.currentDate.toLocaleString('default', {
|
|
510
|
+
year: 'numeric',
|
|
511
|
+
}),
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* @description Method to Updates current year month
|
|
516
|
+
* @author Shiva Kant
|
|
517
|
+
*/
|
|
518
|
+
updateCurrentYearMonth() {
|
|
519
|
+
this.currentYear = this.currentDate.getFullYear();
|
|
520
|
+
this.currentMonth = this.currentDate.getMonth();
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* @description Method to Selects year
|
|
524
|
+
* @author Shiva Kant
|
|
525
|
+
* @param year
|
|
526
|
+
*/
|
|
527
|
+
selectYear(year) {
|
|
528
|
+
this.currentDate.setFullYear(year);
|
|
529
|
+
this.updateCurrentYearMonth();
|
|
530
|
+
this.showYearSelector = false;
|
|
531
|
+
this.calendarView = 'defaultView';
|
|
532
|
+
this.selectedDay = 0;
|
|
533
|
+
this.generateCalendar();
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* @description Method to Selects month
|
|
537
|
+
* @author Shiva Kant
|
|
538
|
+
* @param month
|
|
539
|
+
*/
|
|
540
|
+
selectMonth(month) {
|
|
541
|
+
this.currentDate.setMonth(month);
|
|
542
|
+
this.updateCurrentYearMonth();
|
|
543
|
+
this.calendarView = 'defaultView';
|
|
544
|
+
this.selectedDay = 0;
|
|
545
|
+
this.generateCalendar();
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* @description Method to Previous year range
|
|
549
|
+
* @author Shiva Kant
|
|
550
|
+
*/
|
|
551
|
+
previousYearRange() {
|
|
552
|
+
this.yearRange = this.yearRange.map((year) => year - 18);
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* @description Method to Next year range
|
|
556
|
+
* @author Shiva Kant
|
|
557
|
+
*/
|
|
558
|
+
nextYearRange() {
|
|
559
|
+
this.yearRange = this.yearRange.map((year) => year + 18);
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* @description Method to Toggles year selector
|
|
563
|
+
* @author Shiva Kant
|
|
564
|
+
*/
|
|
565
|
+
toggleYearSelector() {
|
|
566
|
+
this.showYearSelector = !this.showYearSelector;
|
|
567
|
+
this.generateYearRange();
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* @description Method to Generates year range
|
|
571
|
+
* @author Shiva Kant
|
|
572
|
+
*/
|
|
573
|
+
generateYearRange() {
|
|
574
|
+
const currentYear = this.currentDate.getFullYear();
|
|
575
|
+
const startYear = currentYear - (currentYear % 20);
|
|
576
|
+
this.yearRange = Array.from({ length: 18 }, (_, i) => startYear + i);
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* @description Method to Determines whether date selectable is
|
|
580
|
+
* @author Shiva Kant
|
|
581
|
+
* @param date
|
|
582
|
+
* @returns true if date selectable
|
|
583
|
+
*/
|
|
584
|
+
isDateSelectable(date) {
|
|
585
|
+
const min = this.minDate ? new Date(this.minDate) : null;
|
|
586
|
+
const max = this.maxDate ? new Date(this.maxDate) : null;
|
|
587
|
+
if (min && date < min)
|
|
588
|
+
return false;
|
|
589
|
+
if (max && date > max)
|
|
590
|
+
return false;
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* @description Method to Determines whether day disabled is
|
|
595
|
+
* @author Shiva Kant
|
|
596
|
+
* @param day
|
|
597
|
+
* @returns true if day disabled
|
|
598
|
+
*/
|
|
599
|
+
isDayDisabled(day) {
|
|
600
|
+
const date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), day);
|
|
601
|
+
return !this.isDateSelectable(date);
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* @description Method to Generates calendar
|
|
605
|
+
* @author Shiva Kant
|
|
606
|
+
*/
|
|
607
|
+
generateCalendar() {
|
|
608
|
+
const year = this.currentDate.getFullYear();
|
|
609
|
+
const month = this.currentDate.getMonth();
|
|
610
|
+
const firstDayOfMonth = new Date(year, month, 1);
|
|
611
|
+
const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0
|
|
612
|
+
const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();
|
|
613
|
+
const daysInPreviousMonth = new Date(year, month, 0).getDate();
|
|
614
|
+
const totalCells = 42; // 6 rows of 7 days
|
|
615
|
+
const calendarDays = [];
|
|
616
|
+
// Fill previous month days
|
|
617
|
+
for (let i = firstWeekDay - 1; i >= 0; i--) {
|
|
618
|
+
const day = daysInPreviousMonth - i;
|
|
619
|
+
const date = new Date(year, month - 1, day);
|
|
620
|
+
calendarDays.push({ day, date, isCurrentMonth: false });
|
|
621
|
+
}
|
|
622
|
+
// Fill current month days
|
|
623
|
+
for (let day = 1; day <= daysInCurrentMonth; day++) {
|
|
624
|
+
const date = new Date(year, month, day);
|
|
625
|
+
calendarDays.push({ day, date, isCurrentMonth: true });
|
|
626
|
+
}
|
|
627
|
+
// Fill next month days
|
|
628
|
+
const remaining = totalCells - calendarDays.length;
|
|
629
|
+
for (let day = 1; day <= remaining; day++) {
|
|
630
|
+
const date = new Date(year, month + 1, day);
|
|
631
|
+
calendarDays.push({ day, date, isCurrentMonth: false });
|
|
632
|
+
}
|
|
633
|
+
this.daysInMonth = calendarDays;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* @description Method to Previous month
|
|
637
|
+
* @author Shiva Kant
|
|
638
|
+
*/
|
|
639
|
+
previousMonth() {
|
|
640
|
+
this.currentDate.setMonth(this.currentDate.getMonth() - 1);
|
|
641
|
+
this.updateCurrentYearMonth();
|
|
642
|
+
this.selectedDay = 0;
|
|
643
|
+
this.generateCalendar();
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* @description Method to Next month
|
|
647
|
+
* @author Shiva Kant
|
|
648
|
+
*/
|
|
649
|
+
nextMonth() {
|
|
650
|
+
this.currentDate.setMonth(this.currentDate.getMonth() + 1);
|
|
651
|
+
this.updateCurrentYearMonth();
|
|
652
|
+
this.selectedDay = 0;
|
|
653
|
+
this.generateCalendar();
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* @description Method to Initializes calendar when preSelectedValue date
|
|
657
|
+
* @author Shiva Kant
|
|
658
|
+
* @returns calendar
|
|
659
|
+
*/
|
|
660
|
+
initializeCalendar() {
|
|
661
|
+
if (!this.preSelectedValue)
|
|
662
|
+
return;
|
|
663
|
+
// Case 1: Single date (string or Date)
|
|
664
|
+
if (typeof this.preSelectedValue === 'string' ||
|
|
665
|
+
this.preSelectedValue instanceof Date) {
|
|
666
|
+
const date = new Date(this.preSelectedValue);
|
|
667
|
+
this.selectedDate = date.getDate();
|
|
668
|
+
this.selectedMonth = date.getMonth();
|
|
669
|
+
this.selectedYear = date.getFullYear();
|
|
670
|
+
this.selectedTime = this.formatTime(date);
|
|
671
|
+
// Update current view to show the month/year
|
|
672
|
+
this.currentDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDate);
|
|
673
|
+
this.generateCalendar();
|
|
674
|
+
}
|
|
675
|
+
// Case 2: Range of dates
|
|
676
|
+
else if (this.preSelectedValue.start && this.preSelectedValue.end) {
|
|
677
|
+
const startDate = new Date(this.preSelectedValue.start);
|
|
678
|
+
const endDate = new Date(this.preSelectedValue.end);
|
|
679
|
+
// Patch component state
|
|
680
|
+
this.rangeStart = startDate.getDate();
|
|
681
|
+
this.rangeEnd = endDate.getDate();
|
|
682
|
+
this.selectedStartDate = startDate;
|
|
683
|
+
this.selectedEndDate = endDate;
|
|
684
|
+
this.selectedMonth = startDate.getMonth();
|
|
685
|
+
this.selectedYear = startDate.getFullYear();
|
|
686
|
+
// Set the current calendar view to the start month/year
|
|
687
|
+
this.currentDate = new Date(this.selectedYear, this.selectedMonth, 1);
|
|
688
|
+
this.generateCalendar();
|
|
689
|
+
// Optional: If your calendar requires a single selectedTime for range, you could pick start or end
|
|
690
|
+
this.selectedTime = this.formatTime(startDate);
|
|
691
|
+
// Emit initial range value
|
|
692
|
+
this.emitDateTime();
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* @description Method to Selects date
|
|
697
|
+
* @author Shiva Kant
|
|
698
|
+
* @param date
|
|
699
|
+
*/
|
|
700
|
+
selectDate(date) {
|
|
701
|
+
const selectedFullDate = new Date(this.currentYear, this.currentMonth, date);
|
|
702
|
+
selectedFullDate.setHours(0, 0, 0, 0);
|
|
703
|
+
this.selectedMonth = this.currentMonth;
|
|
704
|
+
this.selectedYear = this.currentYear;
|
|
705
|
+
if (this.dateConfig.selectionMode === 'single') {
|
|
706
|
+
this.selectedDate = date;
|
|
707
|
+
this.rangeStart = null;
|
|
708
|
+
this.rangeEnd = null;
|
|
709
|
+
}
|
|
710
|
+
else {
|
|
711
|
+
if (!this.rangeStart || this.rangeEnd) {
|
|
712
|
+
this.rangeStart = date;
|
|
713
|
+
this.rangeEnd = null;
|
|
714
|
+
}
|
|
715
|
+
else {
|
|
716
|
+
this.rangeEnd = date < this.rangeStart ? this.rangeStart : date;
|
|
717
|
+
this.rangeStart = date < this.rangeStart ? date : this.rangeStart;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
this.emitDateTime();
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* @description Method to Selects time
|
|
724
|
+
* @author Shiva Kant
|
|
725
|
+
* @param time
|
|
726
|
+
*/
|
|
727
|
+
selectTime(time) {
|
|
728
|
+
this.selectedTime = time;
|
|
729
|
+
this.emitDateTime();
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* @description Method to Determines whether selected date is
|
|
733
|
+
* @author Shiva Kant
|
|
734
|
+
* @param date
|
|
735
|
+
* @returns
|
|
736
|
+
*/
|
|
737
|
+
isSelectedDate(date, month, year) {
|
|
738
|
+
if (this.dateConfig.selectionMode === 'single') {
|
|
739
|
+
// Check if the day, month, and year match
|
|
740
|
+
return (this.selectedDate === date &&
|
|
741
|
+
this.selectedMonth === month &&
|
|
742
|
+
this.selectedYear === year);
|
|
743
|
+
}
|
|
744
|
+
else if (this.dateConfig.selectionMode === 'range') {
|
|
745
|
+
// Range selection checks, ensuring both start and end dates are within the same month and year
|
|
746
|
+
return !!((this.rangeStart &&
|
|
747
|
+
this.rangeStart === date &&
|
|
748
|
+
this.selectedMonth === month &&
|
|
749
|
+
this.selectedYear === year) ||
|
|
750
|
+
(this.rangeEnd &&
|
|
751
|
+
this.rangeEnd === date &&
|
|
752
|
+
this.selectedMonth === month &&
|
|
753
|
+
this.selectedYear === year) ||
|
|
754
|
+
(this.rangeStart &&
|
|
755
|
+
this.rangeEnd &&
|
|
756
|
+
date > this.rangeStart &&
|
|
757
|
+
date < this.rangeEnd &&
|
|
758
|
+
this.selectedMonth === month &&
|
|
759
|
+
this.selectedYear === year));
|
|
760
|
+
}
|
|
761
|
+
return false;
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* @description Method to Generates time ranges
|
|
765
|
+
* @author Shiva Kant
|
|
766
|
+
*/
|
|
767
|
+
generateTimeRanges() {
|
|
768
|
+
const startTime = new Date();
|
|
769
|
+
startTime.setHours(0, 0, 0, 0);
|
|
770
|
+
this.timeSlots = Array.from({ length: 48 }, (_, i) => {
|
|
771
|
+
const time = new Date(startTime.getTime() + i * 30 * 60 * 1000);
|
|
772
|
+
return { value: time, label: this.formatTime(time) };
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* @description Method to Formats time
|
|
777
|
+
* @author Shiva Kant
|
|
778
|
+
* @param date
|
|
779
|
+
* @returns time
|
|
780
|
+
*/
|
|
781
|
+
formatTime(date) {
|
|
782
|
+
return date.toLocaleTimeString('en-US', {
|
|
783
|
+
hour: '2-digit',
|
|
784
|
+
minute: '2-digit',
|
|
785
|
+
hour12: true,
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
/**
|
|
789
|
+
* @description Method to Formats date time
|
|
790
|
+
* @author Shiva Kant
|
|
791
|
+
* @param fullDate
|
|
792
|
+
* @param selectedTime
|
|
793
|
+
* @returns date time
|
|
794
|
+
*/
|
|
795
|
+
formatDateTime(fullDate, selectedTime) {
|
|
796
|
+
const date = new Date(fullDate);
|
|
797
|
+
if (!selectedTime) {
|
|
798
|
+
// Only date formatting when time not required
|
|
799
|
+
return this.datePipe.transform(date, 'MM/dd/yyyy');
|
|
800
|
+
}
|
|
801
|
+
const [time, period] = selectedTime.split(' ');
|
|
802
|
+
let [hours, minutes] = time.split(':').map(Number);
|
|
803
|
+
// Convert 12-hour → 24-hour
|
|
804
|
+
if (period === 'PM' && hours !== 12)
|
|
805
|
+
hours += 12;
|
|
806
|
+
if (period === 'AM' && hours === 12)
|
|
807
|
+
hours = 0;
|
|
808
|
+
date.setHours(hours, minutes, 0, 0);
|
|
809
|
+
return this.datePipe.transform(date, 'yyyy/MM/dd hh:mm a');
|
|
810
|
+
}
|
|
811
|
+
/**
|
|
812
|
+
* @description Method to Emits date time
|
|
813
|
+
* @author Shiva Kant
|
|
814
|
+
* @returns date time
|
|
815
|
+
*/
|
|
816
|
+
emitDateTime() {
|
|
817
|
+
if (this.dateConfig.enableTime && !this.selectedTime) {
|
|
818
|
+
return; // wait until user selects time
|
|
819
|
+
}
|
|
820
|
+
if (this.dateConfig.selectionMode === 'single') {
|
|
821
|
+
if (!this.selectedDate)
|
|
822
|
+
return;
|
|
823
|
+
const fullDate = new Date(this.currentYear, this.currentMonth, this.selectedDate);
|
|
824
|
+
this.selectedDateTime = this.formatDateTime(fullDate || '', this.dateConfig.enableTime ? this.selectedTime : null);
|
|
825
|
+
this.writeValue(this.selectedDateTime);
|
|
826
|
+
this.date = this.selectedDate;
|
|
827
|
+
this.dateTimeSelected.emit(this.selectedDateTime);
|
|
828
|
+
this.closeCalendar();
|
|
829
|
+
return;
|
|
830
|
+
}
|
|
831
|
+
if (this.dateConfig.selectionMode === 'range') {
|
|
832
|
+
if (!this.rangeStart || !this.rangeEnd)
|
|
833
|
+
return;
|
|
834
|
+
const startDate = new Date(this.currentYear, this.currentMonth, this.rangeStart);
|
|
835
|
+
const endDate = new Date(this.currentYear, this.currentMonth, this.rangeEnd);
|
|
836
|
+
const startDateTime = this.formatDateTime(startDate, this.dateConfig.enableTime ? this.selectedTime : null);
|
|
837
|
+
const endDateTime = this.formatDateTime(endDate, this.dateConfig.enableTime ? this.selectedTime : null);
|
|
838
|
+
const rangeResult = { start: startDateTime, end: endDateTime };
|
|
839
|
+
this.writeValue(rangeResult);
|
|
840
|
+
this.dateTimeSelected.emit(rangeResult);
|
|
841
|
+
this.closeCalendar();
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonCalendarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
845
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CommonCalendarComponent, isStandalone: true, selector: "lib-common-calendar", inputs: { dateConfig: "dateConfig", minDate: "minDate", maxDate: "maxDate", preSelectedValue: "preSelectedValue" }, outputs: { dateTimeSelected: "dateTimeSelected" }, providers: [
|
|
846
|
+
{
|
|
847
|
+
provide: NG_VALUE_ACCESSOR,
|
|
848
|
+
useExisting: CommonCalendarComponent,
|
|
849
|
+
multi: true,
|
|
850
|
+
},
|
|
851
|
+
DatePipe,
|
|
852
|
+
], usesOnChanges: true, ngImport: i0, template: "<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n appOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <div class=\"calendar_container\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }},</span\r\n >\r\n <div class=\"year\" (click)=\"calendarView = 'yearView'\">\r\n <span>\r\n {{ getMonthYear().year }}\r\n </span>\r\n <img src=\"images/chevron-down.svg\" class=\"year_arrow\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"arrow_container\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/arrow-up.svg\" alt=\"\" />\r\n </span>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/arrow-down.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index)\r\n {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null &&\r\n rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"bottom_btn\">\r\n <div class=\"btn\">Clear</div>\r\n <div class=\"btn\">Today</div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n <div class=\"time-picker\">\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <!-- center selection indicator -->\r\n <div class=\"center-highlight\"></div>\r\n </div>\r\n\r\n <!-- @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n } -->\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-50: #f7fafe;--blue-100: #eaf3fd;--blue-200: #dfecfc;--blue-300: #c8dff9;--blue-400: #92bff4;--blue-600: #2680ea;--blue-700: #1c60af;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #e1eee2;--green-400: #9bc69d;--green-600: #388e3c;--green-700: #2a6a2d;--red: #ff0000;--red-50: #fdf7f7;--red-100: #faeaea;--red-200: #f7dfdf;--red-300: #f0c9c9;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff9e7;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}#container_scroll::-webkit-scrollbar{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}#container_scroll::-webkit-scrollbar-track{background-color:var(--neutral-200);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-thumb{background-color:var(--neutral-500);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-corner{background:transparent}#container_scroll::-webkit-scrollbar-button{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-100);border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;display:none;background-repeat:no-repeat;background-position:center;background-size:calc(.8333333333rem / var(--scale))}#container_scroll::-webkit-scrollbar-button:hover{background-color:var(--neutral-300)}#container_scroll::-webkit-scrollbar-button:single-button:vertical:decrement{background-image:url(/images/chevron-up.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:vertical:increment{background-image:url(/images/chevron-down.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:decrement{background-image:url(/images/chevron-left.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:increment{background-image:url(/images/chevron-right.svg);display:block}sup{color:var(--error-red)}.radio_option{display:flex;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_option [type=radio]:not(:checked)+label:before,.radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background:var(--white)}.radio_option [type=radio]:checked,.radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_option [type=radio]:checked+label,.radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2rem / var(--scale));cursor:pointer;display:inline-block;color:var(--neutral-600);line-height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:checked+label:before{border:calc(.125rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_option [type=radio]:not(:checked)+label:before{border:calc(.125rem / var(--scale)) solid var(--neutral-200);border-radius:100%}.radio_option [type=radio]:checked+label:after,.radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.5rem / var(--scale));height:calc(.5rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.4166666667rem / var(--scale));left:calc(.4166666667rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}.checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.checkbox_container input[type=checkbox][disabled],.checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.checkbox_container input[type=checkbox][disabled]+span,.checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));min-width:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.0833333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background-size:auto;background-repeat:no-repeat;background-position:center}.checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/check-white.svg)}.checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--white)}.checkbox_container input[type=checkbox]:indeterminate:after{display:block;top:0;background-image:url(/images/minus-blue.svg)}.text_filter_section{position:relative;width:100%}.text_filter_section .single_select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--neutral-600);cursor:pointer}.text_filter_section .single_select_dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 1.6666666667rem / var(--scale));height:\"\"}.text_filter_section .single_select_dropdown .arrow_icon img{max-width:calc(1.6666666667rem / var(--scale))}.text_filter_section .dropdown_list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));width:100%;position:absolute;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(3.3333333333rem / var(--scale))}.text_filter_section .dropdown_list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.3333333333rem / var(--scale)) 0}.text_filter_section .dropdown_list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.text_filter_section .dropdown_list ul li{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));cursor:pointer;color:var(--neutral-600)}.text_filter_section .dropdown_list ul li:hover{background-color:var(--neutral-50)}.text_filter_section .dropdown_list ul li.disabled_option{opacity:.3;pointer-events:none}.search_input{position:relative;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--white);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.search_input input::placeholder{color:var(--neutral-500)}.switch_wrapper{display:flex}.switch_wrapper .switch{position:relative;display:inline-block;width:calc(2.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.switch_wrapper .switch input{display:none}.switch_wrapper .switch .slider{position:absolute;cursor:pointer;background-color:var(--neutral-100);border-radius:calc(1.3333333333rem / var(--scale));inset:0;transition:.3s}.switch_wrapper .switch .slider:before{content:\"\";position:absolute;width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));left:calc(.1666666667rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));background-color:var(--white);border-radius:50%;transition:.3s;box-shadow:0 calc(.0666666667rem / var(--scale)) calc(.2rem / var(--scale)) 0 var(--box-shadow)}.switch_wrapper .switch input:checked+.slider{background-color:var(--blue-600)}.switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1rem / var(--scale)))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch{width:calc(3.1666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1.5rem / var(--scale)))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}.calendar_wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\";position:relative;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .pe-none{pointer-events:none}.calendar_wrapper .date_box{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0;height:calc(3.3333333333rem / var(--scale))}.calendar_wrapper .date_box input{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;width:100%;height:100%;cursor:pointer;border:0 solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-family:inherit}.calendar_wrapper .date_box input::placeholder{color:var(--neutral-500)}.calendar_wrapper .date_box img{max-width:calc(1.3333333333rem / var(--scale));margin-right:calc(1rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup{display:flex;position:absolute;top:calc(3.3333333333rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--box-shadow);width:100%;min-width:calc(27.8333333333rem / var(--scale));min-height:calc(30.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_container{flex:1;margin:calc(.25rem / var(--scale)) 0}.calendar_wrapper .calendar-popup .calendar-header{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .arrow_container{display:flex;flex-direction:row;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .arrow_container .navigation-button{cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .arrow_container .navigation-button img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex}.calendar_wrapper .calendar-popup .calendar-header .month-year .year,.calendar_wrapper .calendar-popup .calendar-header .month-year .month{padding-right:calc(.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .month-year .year img,.calendar_wrapper .calendar-popup .calendar-header .month-year .month img{max-width:calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year .year.selected,.calendar_wrapper .calendar-popup .calendar-header .month-year .month.selected{color:var(--blue-700)}.calendar_wrapper .calendar-popup .year-selector{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .year-selector .year-grid{width:100%}.calendar_wrapper .calendar-popup .year-selector img{max-width:calc(1.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid,.calendar_wrapper .calendar-popup .month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:500;height:calc(27.0833333333rem / var(--scale));color:var(--neutral-600)}.calendar_wrapper .calendar-popup .year-grid .month,.calendar_wrapper .calendar-popup .year-grid .year,.calendar_wrapper .calendar-popup .month-grid .month,.calendar_wrapper .calendar-popup .month-grid .year{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;border-radius:calc(.3333333333rem / var(--scale));transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .month.selected,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .year-grid .year.selected,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .month.selected,.calendar_wrapper .calendar-popup .month-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .year.selected{color:var(--white);background-color:var(--blue-600)}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .year:hover{background-color:var(--blue-100);color:var(--blue-700)}.calendar_wrapper .calendar-popup .calendar_body{display:flex;flex-direction:column;justify-content:space-between;align-items:\"\";flex-wrap:nowrap;gap:\"\"}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;min-width:calc(27.8333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .days_name{height:calc(3.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end,.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{background-color:var(--blue-600);color:var(--white);border-radius:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day{border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;width:calc(3.975rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:600;color:var(--neutral-600)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active{background-color:var(--blue-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:hover{background-color:var(--blue-100);color:var(--blue-700);transition:ease-in-out .3s}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.selected{background-color:var(--orange-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.disabled{color:var(--neutral-400);pointer-events:none;background:var(--neutral-200)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth{cursor:default;color:var(--neutral-400)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth:hover{background-color:transparent}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.range_between_active{color:var(--blue-600);background-color:var(--blue-100)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end{border-top-right-radius:calc(.3333333333rem / var(--scale));border-bottom-right-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .bottom_btn{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .bottom_btn .btn{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--blue-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer}.calendar_wrapper .calendar-popup .time-picker{position:relative;display:grid;grid-template-columns:repeat(3,1fr);height:360px;overflow:hidden;background:#fff}.calendar_wrapper .calendar-popup .time-column{display:flex;flex-direction:column;align-items:center;overflow-y:auto;scroll-snap-type:y mandatory}.calendar_wrapper .calendar-popup .time-column::-webkit-scrollbar{width:0}.calendar_wrapper .calendar-popup .span_time.active{background:#2f80ed;color:#fff;border-radius:4px;width:70%}.calendar_wrapper .calendar-popup .center-highlight{position:absolute;top:50%;left:0;width:100%;height:40px;transform:translateY(-50%);border-top:1px solid red;border-bottom:1px solid red;pointer-events:none}.calendar_wrapper .calendar-popup .times{min-width:calc(14.6666666667rem / var(--scale));max-height:calc(30.3333333333rem / var(--scale));overflow-y:auto;overflow-x:hidden;border-left:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));box-shadow:-3px 0 8px 2px #0a0d121f;border-top-right-radius:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .times .span_time{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-600);display:inline-block;width:calc(4rem / var(--scale)) calc(3.3333333333rem / var(--scale));height:100%;max-width:calc(4rem / var(--scale));text-align:center;cursor:pointer;scroll-snap-align:center}.calendar_wrapper .calendar-popup .times .span_time:hover,.calendar_wrapper .calendar-popup .times .span_time.active{background-color:var(--blue-100);color:var(--blue-700);transition:ease-in-out .3s}@media only screen and (min-width: 1024px) and (max-width: 1280px){.calendar-grid{display:grid;grid-template-columns:repeat(4,1fr)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: OutsideClickDirective, selector: "[appOutsideClick]", outputs: ["clickOutside"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
|
|
853
|
+
}
|
|
854
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonCalendarComponent, decorators: [{
|
|
855
|
+
type: Component,
|
|
856
|
+
args: [{ selector: 'lib-common-calendar', imports: [CommonModule, OutsideClickDirective], providers: [
|
|
857
|
+
{
|
|
858
|
+
provide: NG_VALUE_ACCESSOR,
|
|
859
|
+
useExisting: CommonCalendarComponent,
|
|
860
|
+
multi: true,
|
|
861
|
+
},
|
|
862
|
+
DatePipe,
|
|
863
|
+
], template: "<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n appOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <div class=\"calendar_container\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }},</span\r\n >\r\n <div class=\"year\" (click)=\"calendarView = 'yearView'\">\r\n <span>\r\n {{ getMonthYear().year }}\r\n </span>\r\n <img src=\"images/chevron-down.svg\" class=\"year_arrow\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"arrow_container\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/arrow-up.svg\" alt=\"\" />\r\n </span>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/arrow-down.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index)\r\n {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null &&\r\n rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"bottom_btn\">\r\n <div class=\"btn\">Clear</div>\r\n <div class=\"btn\">Today</div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n <div class=\"time-picker\">\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <!-- center selection indicator -->\r\n <div class=\"center-highlight\"></div>\r\n </div>\r\n\r\n <!-- @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n } -->\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-50: #f7fafe;--blue-100: #eaf3fd;--blue-200: #dfecfc;--blue-300: #c8dff9;--blue-400: #92bff4;--blue-600: #2680ea;--blue-700: #1c60af;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #e1eee2;--green-400: #9bc69d;--green-600: #388e3c;--green-700: #2a6a2d;--red: #ff0000;--red-50: #fdf7f7;--red-100: #faeaea;--red-200: #f7dfdf;--red-300: #f0c9c9;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff9e7;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}#container_scroll::-webkit-scrollbar{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}#container_scroll::-webkit-scrollbar-track{background-color:var(--neutral-200);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-thumb{background-color:var(--neutral-500);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-corner{background:transparent}#container_scroll::-webkit-scrollbar-button{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-100);border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;display:none;background-repeat:no-repeat;background-position:center;background-size:calc(.8333333333rem / var(--scale))}#container_scroll::-webkit-scrollbar-button:hover{background-color:var(--neutral-300)}#container_scroll::-webkit-scrollbar-button:single-button:vertical:decrement{background-image:url(/images/chevron-up.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:vertical:increment{background-image:url(/images/chevron-down.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:decrement{background-image:url(/images/chevron-left.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:increment{background-image:url(/images/chevron-right.svg);display:block}sup{color:var(--error-red)}.radio_option{display:flex;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_option [type=radio]:not(:checked)+label:before,.radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background:var(--white)}.radio_option [type=radio]:checked,.radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_option [type=radio]:checked+label,.radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2rem / var(--scale));cursor:pointer;display:inline-block;color:var(--neutral-600);line-height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:checked+label:before{border:calc(.125rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_option [type=radio]:not(:checked)+label:before{border:calc(.125rem / var(--scale)) solid var(--neutral-200);border-radius:100%}.radio_option [type=radio]:checked+label:after,.radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.5rem / var(--scale));height:calc(.5rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.4166666667rem / var(--scale));left:calc(.4166666667rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}.checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.checkbox_container input[type=checkbox][disabled],.checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.checkbox_container input[type=checkbox][disabled]+span,.checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));min-width:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.0833333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background-size:auto;background-repeat:no-repeat;background-position:center}.checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/check-white.svg)}.checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--white)}.checkbox_container input[type=checkbox]:indeterminate:after{display:block;top:0;background-image:url(/images/minus-blue.svg)}.text_filter_section{position:relative;width:100%}.text_filter_section .single_select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--neutral-600);cursor:pointer}.text_filter_section .single_select_dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 1.6666666667rem / var(--scale));height:\"\"}.text_filter_section .single_select_dropdown .arrow_icon img{max-width:calc(1.6666666667rem / var(--scale))}.text_filter_section .dropdown_list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));width:100%;position:absolute;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(3.3333333333rem / var(--scale))}.text_filter_section .dropdown_list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.3333333333rem / var(--scale)) 0}.text_filter_section .dropdown_list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.text_filter_section .dropdown_list ul li{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));cursor:pointer;color:var(--neutral-600)}.text_filter_section .dropdown_list ul li:hover{background-color:var(--neutral-50)}.text_filter_section .dropdown_list ul li.disabled_option{opacity:.3;pointer-events:none}.search_input{position:relative;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--white);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.search_input input::placeholder{color:var(--neutral-500)}.switch_wrapper{display:flex}.switch_wrapper .switch{position:relative;display:inline-block;width:calc(2.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.switch_wrapper .switch input{display:none}.switch_wrapper .switch .slider{position:absolute;cursor:pointer;background-color:var(--neutral-100);border-radius:calc(1.3333333333rem / var(--scale));inset:0;transition:.3s}.switch_wrapper .switch .slider:before{content:\"\";position:absolute;width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));left:calc(.1666666667rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));background-color:var(--white);border-radius:50%;transition:.3s;box-shadow:0 calc(.0666666667rem / var(--scale)) calc(.2rem / var(--scale)) 0 var(--box-shadow)}.switch_wrapper .switch input:checked+.slider{background-color:var(--blue-600)}.switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1rem / var(--scale)))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch{width:calc(3.1666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1.5rem / var(--scale)))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}.calendar_wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\";position:relative;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .pe-none{pointer-events:none}.calendar_wrapper .date_box{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0;height:calc(3.3333333333rem / var(--scale))}.calendar_wrapper .date_box input{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;width:100%;height:100%;cursor:pointer;border:0 solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-family:inherit}.calendar_wrapper .date_box input::placeholder{color:var(--neutral-500)}.calendar_wrapper .date_box img{max-width:calc(1.3333333333rem / var(--scale));margin-right:calc(1rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup{display:flex;position:absolute;top:calc(3.3333333333rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--box-shadow);width:100%;min-width:calc(27.8333333333rem / var(--scale));min-height:calc(30.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_container{flex:1;margin:calc(.25rem / var(--scale)) 0}.calendar_wrapper .calendar-popup .calendar-header{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .arrow_container{display:flex;flex-direction:row;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .arrow_container .navigation-button{cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .arrow_container .navigation-button img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex}.calendar_wrapper .calendar-popup .calendar-header .month-year .year,.calendar_wrapper .calendar-popup .calendar-header .month-year .month{padding-right:calc(.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .month-year .year img,.calendar_wrapper .calendar-popup .calendar-header .month-year .month img{max-width:calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year .year.selected,.calendar_wrapper .calendar-popup .calendar-header .month-year .month.selected{color:var(--blue-700)}.calendar_wrapper .calendar-popup .year-selector{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .year-selector .year-grid{width:100%}.calendar_wrapper .calendar-popup .year-selector img{max-width:calc(1.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid,.calendar_wrapper .calendar-popup .month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:500;height:calc(27.0833333333rem / var(--scale));color:var(--neutral-600)}.calendar_wrapper .calendar-popup .year-grid .month,.calendar_wrapper .calendar-popup .year-grid .year,.calendar_wrapper .calendar-popup .month-grid .month,.calendar_wrapper .calendar-popup .month-grid .year{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;border-radius:calc(.3333333333rem / var(--scale));transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .month.selected,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .year-grid .year.selected,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .month.selected,.calendar_wrapper .calendar-popup .month-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .year.selected{color:var(--white);background-color:var(--blue-600)}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .year:hover{background-color:var(--blue-100);color:var(--blue-700)}.calendar_wrapper .calendar-popup .calendar_body{display:flex;flex-direction:column;justify-content:space-between;align-items:\"\";flex-wrap:nowrap;gap:\"\"}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;min-width:calc(27.8333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .days_name{height:calc(3.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end,.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{background-color:var(--blue-600);color:var(--white);border-radius:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day{border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;width:calc(3.975rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:600;color:var(--neutral-600)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active{background-color:var(--blue-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:hover{background-color:var(--blue-100);color:var(--blue-700);transition:ease-in-out .3s}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.selected{background-color:var(--orange-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.disabled{color:var(--neutral-400);pointer-events:none;background:var(--neutral-200)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth{cursor:default;color:var(--neutral-400)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth:hover{background-color:transparent}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.range_between_active{color:var(--blue-600);background-color:var(--blue-100)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end{border-top-right-radius:calc(.3333333333rem / var(--scale));border-bottom-right-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .bottom_btn{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .bottom_btn .btn{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--blue-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer}.calendar_wrapper .calendar-popup .time-picker{position:relative;display:grid;grid-template-columns:repeat(3,1fr);height:360px;overflow:hidden;background:#fff}.calendar_wrapper .calendar-popup .time-column{display:flex;flex-direction:column;align-items:center;overflow-y:auto;scroll-snap-type:y mandatory}.calendar_wrapper .calendar-popup .time-column::-webkit-scrollbar{width:0}.calendar_wrapper .calendar-popup .span_time.active{background:#2f80ed;color:#fff;border-radius:4px;width:70%}.calendar_wrapper .calendar-popup .center-highlight{position:absolute;top:50%;left:0;width:100%;height:40px;transform:translateY(-50%);border-top:1px solid red;border-bottom:1px solid red;pointer-events:none}.calendar_wrapper .calendar-popup .times{min-width:calc(14.6666666667rem / var(--scale));max-height:calc(30.3333333333rem / var(--scale));overflow-y:auto;overflow-x:hidden;border-left:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));box-shadow:-3px 0 8px 2px #0a0d121f;border-top-right-radius:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .times .span_time{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-600);display:inline-block;width:calc(4rem / var(--scale)) calc(3.3333333333rem / var(--scale));height:100%;max-width:calc(4rem / var(--scale));text-align:center;cursor:pointer;scroll-snap-align:center}.calendar_wrapper .calendar-popup .times .span_time:hover,.calendar_wrapper .calendar-popup .times .span_time.active{background-color:var(--blue-100);color:var(--blue-700);transition:ease-in-out .3s}@media only screen and (min-width: 1024px) and (max-width: 1280px){.calendar-grid{display:grid;grid-template-columns:repeat(4,1fr)}}\n"] }]
|
|
864
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DatePipe }], propDecorators: { dateTimeSelected: [{
|
|
865
|
+
type: Output
|
|
866
|
+
}], dateConfig: [{
|
|
867
|
+
type: Input
|
|
868
|
+
}], minDate: [{
|
|
869
|
+
type: Input
|
|
870
|
+
}], maxDate: [{
|
|
871
|
+
type: Input
|
|
872
|
+
}], preSelectedValue: [{
|
|
873
|
+
type: Input
|
|
874
|
+
}] } });
|
|
875
|
+
|
|
130
876
|
class CatsDataGridComponent {
|
|
131
877
|
cd;
|
|
132
878
|
tableOptions;
|
|
133
879
|
totalRecords = 0;
|
|
134
|
-
sortingRequired =
|
|
880
|
+
sortingRequired = true;
|
|
135
881
|
checkBoxSelection = false;
|
|
136
882
|
checkboxSelectionType = 'multiple';
|
|
137
883
|
rowData = [];
|
|
138
884
|
colDefs = [];
|
|
139
885
|
paginationRequired = true;
|
|
140
886
|
selectedRowEmpty = false;
|
|
141
|
-
filterRequired =
|
|
142
|
-
threeDotsMenuRequired =
|
|
143
|
-
|
|
887
|
+
filterRequired = true;
|
|
888
|
+
threeDotsMenuRequired = true;
|
|
889
|
+
showDropdown = false;
|
|
890
|
+
height = 400;
|
|
891
|
+
groupByRequired = false;
|
|
144
892
|
onPaginationChange = new EventEmitter();
|
|
145
893
|
onCheckboxSelection = new EventEmitter();
|
|
146
894
|
onScrollEmitter = new EventEmitter();
|
|
@@ -157,7 +905,7 @@ class CatsDataGridComponent {
|
|
|
157
905
|
max: 20,
|
|
158
906
|
};
|
|
159
907
|
sortingColumnIndex;
|
|
160
|
-
sortingType =
|
|
908
|
+
sortingType = {};
|
|
161
909
|
selectedRow = [];
|
|
162
910
|
pageSizeList = [20, 50, 75, 100];
|
|
163
911
|
showPageSizeList = false;
|
|
@@ -171,12 +919,44 @@ class CatsDataGridComponent {
|
|
|
171
919
|
menuVisible = [];
|
|
172
920
|
menuPosition = [];
|
|
173
921
|
activeFilters = new Set();
|
|
922
|
+
resizingColumnIndex = null;
|
|
923
|
+
startX = 0;
|
|
924
|
+
startWidth = 0;
|
|
925
|
+
isResizing = false;
|
|
926
|
+
groupedResult = [];
|
|
927
|
+
showMoveIcon = {};
|
|
928
|
+
columnDraggable = [];
|
|
929
|
+
activeGroups = [];
|
|
930
|
+
groupBy = [];
|
|
931
|
+
dragGroupIndex = null;
|
|
932
|
+
dateConfig = {
|
|
933
|
+
selectionMode: 'single',
|
|
934
|
+
enableTime: false,
|
|
935
|
+
};
|
|
936
|
+
filterOptions = [
|
|
937
|
+
{ label: 'Contains', value: 'contains' },
|
|
938
|
+
{ label: 'Does Not Contain', value: 'doesNotContain' },
|
|
939
|
+
{ label: 'Equals', value: 'equals' },
|
|
940
|
+
{ label: 'Does Not Equal', value: 'doesNotEqual' },
|
|
941
|
+
{ label: 'Starts With', value: 'startsWith' },
|
|
942
|
+
{ label: 'Ends With', value: 'endsWith' },
|
|
943
|
+
];
|
|
944
|
+
numberFilterOptions = [
|
|
945
|
+
{ label: 'Equals', value: '=' },
|
|
946
|
+
{ label: 'Greater Than', value: '>' },
|
|
947
|
+
{ label: 'Less Than', value: '<' },
|
|
948
|
+
{ label: 'Greater Than or Equal', value: '>=' },
|
|
949
|
+
{ label: 'Less Than or Equal', value: '<=' },
|
|
950
|
+
];
|
|
951
|
+
showPin = false;
|
|
952
|
+
pinActionClicked = {};
|
|
174
953
|
constructor(cd) {
|
|
175
954
|
this.cd = cd;
|
|
176
955
|
}
|
|
177
956
|
ngOnInit() {
|
|
178
957
|
this.originalRowData = structuredClone(this.rowData);
|
|
179
958
|
this.filteredRowData = structuredClone(this.rowData);
|
|
959
|
+
this.originalColDefs = [...this.colDefs];
|
|
180
960
|
}
|
|
181
961
|
ngOnChanges(changes) {
|
|
182
962
|
if (changes['colDefs']?.currentValue) {
|
|
@@ -195,6 +975,8 @@ class CatsDataGridComponent {
|
|
|
195
975
|
[...this.selectedRow, row];
|
|
196
976
|
return row;
|
|
197
977
|
});
|
|
978
|
+
// this.originalRowData = structuredClone(this.rowData);
|
|
979
|
+
this.getGroupedData();
|
|
198
980
|
}
|
|
199
981
|
}
|
|
200
982
|
/**
|
|
@@ -204,22 +986,27 @@ class CatsDataGridComponent {
|
|
|
204
986
|
* @returns {any[]} - Updated column definitions with filter/menu
|
|
205
987
|
*/
|
|
206
988
|
getUpdatedColDefs(colDefs) {
|
|
207
|
-
return colDefs.map((col) => {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
989
|
+
return colDefs.map((col, index) => {
|
|
990
|
+
this.sortingType[index] = '';
|
|
991
|
+
col.colId = `${Date.now()}_${index}`;
|
|
992
|
+
if (col.fieldName === 'action') {
|
|
993
|
+
col.isAction = true;
|
|
994
|
+
}
|
|
995
|
+
if (!col.filterType && !col.isAction) {
|
|
996
|
+
col.filterType = 'text';
|
|
211
997
|
}
|
|
212
998
|
col.textLogic = 'AND';
|
|
213
999
|
col.numberLogic = 'AND';
|
|
214
1000
|
let updatedCol = {
|
|
215
1001
|
...col,
|
|
216
|
-
|
|
217
|
-
|
|
1002
|
+
filterable: col.filterable ?? true,
|
|
1003
|
+
columnAction: col.columnAction ?? true,
|
|
1004
|
+
sortable: col.sortable ?? true,
|
|
218
1005
|
};
|
|
219
|
-
if (!updatedCol.
|
|
1006
|
+
if (!updatedCol.filterable) {
|
|
220
1007
|
return updatedCol;
|
|
221
1008
|
}
|
|
222
|
-
switch (col.
|
|
1009
|
+
switch (col.filterType) {
|
|
223
1010
|
case 'text':
|
|
224
1011
|
updatedCol = {
|
|
225
1012
|
...updatedCol,
|
|
@@ -264,7 +1051,9 @@ class CatsDataGridComponent {
|
|
|
264
1051
|
break;
|
|
265
1052
|
case 'set':
|
|
266
1053
|
const options = [
|
|
267
|
-
...new Set(this.rowData.
|
|
1054
|
+
...new Set(this.rowData.flatMap((r) => {
|
|
1055
|
+
return this.normalizeSetFilterType(r[col.fieldName], col?.cellRendererParams?.tagKey)?.filter(Boolean);
|
|
1056
|
+
})),
|
|
268
1057
|
];
|
|
269
1058
|
updatedCol = {
|
|
270
1059
|
...updatedCol,
|
|
@@ -277,6 +1066,32 @@ class CatsDataGridComponent {
|
|
|
277
1066
|
return updatedCol;
|
|
278
1067
|
});
|
|
279
1068
|
}
|
|
1069
|
+
normalizeSetFilterType(value, key) {
|
|
1070
|
+
if (!value)
|
|
1071
|
+
return;
|
|
1072
|
+
if (Array.isArray(value) && typeof value[0] === 'string') {
|
|
1073
|
+
return value;
|
|
1074
|
+
}
|
|
1075
|
+
if (Array.isArray(value) && typeof value[0] === 'object') {
|
|
1076
|
+
return (value = value.map((val) => val[key]));
|
|
1077
|
+
}
|
|
1078
|
+
if (typeof value === 'string') {
|
|
1079
|
+
return [value];
|
|
1080
|
+
}
|
|
1081
|
+
if (typeof value === 'object') {
|
|
1082
|
+
return [value[key]];
|
|
1083
|
+
}
|
|
1084
|
+
return [];
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
1087
|
+
* @description - Evaluates a text-based filter condition on a given field value.
|
|
1088
|
+
* @author Anand Pandey
|
|
1089
|
+
* @param {string} type - The type of text filter to apply ('contains' | 'doesNotContain' | 'equals' etc).
|
|
1090
|
+
* @param {string} fieldValue - The actual value from the data row being evaluated.
|
|
1091
|
+
* @param {string} value - The user-entered filter value to compare against.
|
|
1092
|
+
* @returns {boolean} `true` if the fieldValue satisfies the specified filter condition,
|
|
1093
|
+
* otherwise `false`.
|
|
1094
|
+
*/
|
|
280
1095
|
evaluateTextFilterCondition(type, fieldValue, value) {
|
|
281
1096
|
switch (type) {
|
|
282
1097
|
case 'contains':
|
|
@@ -295,6 +1110,14 @@ class CatsDataGridComponent {
|
|
|
295
1110
|
return true;
|
|
296
1111
|
}
|
|
297
1112
|
}
|
|
1113
|
+
/**
|
|
1114
|
+
* @description - Evaluates number/date filter conditions.
|
|
1115
|
+
* @author Anand
|
|
1116
|
+
* @param {string} type - Comparison operator ('=' | '>' | '<' | '>=' | '<=').
|
|
1117
|
+
* @param {number|string} fieldValue - Actual value from the row (number or timestamp).
|
|
1118
|
+
* @param {number|string} value - User-entered value for comparison.
|
|
1119
|
+
* @returns {boolean} True if the condition matches, otherwise false.
|
|
1120
|
+
*/
|
|
298
1121
|
evaluateNumDateFilterCondition(type, fieldValue, value) {
|
|
299
1122
|
switch (type) {
|
|
300
1123
|
case '=':
|
|
@@ -312,7 +1135,7 @@ class CatsDataGridComponent {
|
|
|
312
1135
|
}
|
|
313
1136
|
}
|
|
314
1137
|
/**
|
|
315
|
-
* @description Method to filter data according to
|
|
1138
|
+
* @description Method to filter data according to filterType and comparator selection
|
|
316
1139
|
* @author Anand Pandey
|
|
317
1140
|
* @param {}
|
|
318
1141
|
* @returns void
|
|
@@ -322,7 +1145,7 @@ class CatsDataGridComponent {
|
|
|
322
1145
|
this.colDefs.forEach((col) => {
|
|
323
1146
|
const field = col.fieldName;
|
|
324
1147
|
// *********** TEXT FILTER ***********
|
|
325
|
-
if (col.
|
|
1148
|
+
if (col.filterType === 'text') {
|
|
326
1149
|
const [c1, c2] = col.textFilters;
|
|
327
1150
|
const textVal1 = c1.filterValue?.toLowerCase().trim();
|
|
328
1151
|
const textVal2 = c2.filterValue?.toLowerCase().trim();
|
|
@@ -343,61 +1166,63 @@ class CatsDataGridComponent {
|
|
|
343
1166
|
});
|
|
344
1167
|
}
|
|
345
1168
|
// *********** NUMBER FILTER ***********
|
|
346
|
-
if (col.
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
this.activeFilters.delete(col.fieldName);
|
|
354
|
-
return;
|
|
355
|
-
}
|
|
356
|
-
this.activeFilters.add(col.fieldName);
|
|
357
|
-
result = result.filter((r) => {
|
|
358
|
-
const fieldVal = Number(r[field]);
|
|
359
|
-
const cond1 = numValue1
|
|
360
|
-
? this.evaluateNumDateFilterCondition(c1.filterType, fieldVal, numValue1)
|
|
361
|
-
: false;
|
|
362
|
-
const cond2 = numValue2
|
|
363
|
-
? this.evaluateNumDateFilterCondition(c2.filterType, fieldVal, numValue2)
|
|
364
|
-
: false;
|
|
365
|
-
return col.textLogic === 'AND' ? cond1 && cond2 : cond1 || cond2;
|
|
366
|
-
});
|
|
1169
|
+
if (col.filterType === 'number') {
|
|
1170
|
+
const [c1, c2] = col.numberFilters;
|
|
1171
|
+
const numValue1 = Number(c1.numberValue);
|
|
1172
|
+
const numValue2 = Number(c2.numberValue);
|
|
1173
|
+
if (!numValue1 && !numValue2) {
|
|
1174
|
+
this.activeFilters.delete(col.fieldName);
|
|
1175
|
+
return;
|
|
367
1176
|
}
|
|
1177
|
+
this.activeFilters.add(col.fieldName);
|
|
1178
|
+
result = result.filter((r) => {
|
|
1179
|
+
const fieldVal = Number(r[field]);
|
|
1180
|
+
const cond1 = numValue1
|
|
1181
|
+
? this.evaluateNumDateFilterCondition(c1.filterType, fieldVal, numValue1)
|
|
1182
|
+
: false;
|
|
1183
|
+
const cond2 = numValue2
|
|
1184
|
+
? this.evaluateNumDateFilterCondition(c2.filterType, fieldVal, numValue2)
|
|
1185
|
+
: false;
|
|
1186
|
+
return col.textLogic === 'AND' ? cond1 && cond2 : cond1 || cond2;
|
|
1187
|
+
});
|
|
368
1188
|
}
|
|
369
1189
|
// *********** DATE FILTER ***********
|
|
370
|
-
if (col.
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
const valueDate = this.normalizeDate(r[field]);
|
|
376
|
-
switch (col.numberCondition) {
|
|
377
|
-
case '=':
|
|
378
|
-
return valueDate === selected;
|
|
379
|
-
case '>':
|
|
380
|
-
return valueDate > selected;
|
|
381
|
-
case '<':
|
|
382
|
-
return valueDate < selected;
|
|
383
|
-
case '>=':
|
|
384
|
-
return valueDate >= selected;
|
|
385
|
-
case '<=':
|
|
386
|
-
return valueDate <= selected;
|
|
387
|
-
default:
|
|
388
|
-
return true; // keep row
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
1190
|
+
if (col.filterType === 'date') {
|
|
1191
|
+
const [c1, c2] = col.dateFilters;
|
|
1192
|
+
const selected1 = this.normalizeDate(c1.dateValue);
|
|
1193
|
+
const selected2 = this.normalizeDate(c2.dateValue);
|
|
1194
|
+
if (!selected1 && !selected2) {
|
|
393
1195
|
this.activeFilters.delete(col.fieldName);
|
|
1196
|
+
return;
|
|
394
1197
|
}
|
|
1198
|
+
this.activeFilters.add(col.fieldName);
|
|
1199
|
+
result = result.filter((r) => {
|
|
1200
|
+
const fieldVal = this.normalizeDate(r[field]);
|
|
1201
|
+
const cond1 = selected1
|
|
1202
|
+
? this.evaluateNumDateFilterCondition(c1.filterType, fieldVal ?? r[field], selected1)
|
|
1203
|
+
: false;
|
|
1204
|
+
const cond2 = selected2
|
|
1205
|
+
? this.evaluateNumDateFilterCondition(c2.filterType, fieldVal ?? r[field], selected2)
|
|
1206
|
+
: false;
|
|
1207
|
+
return col.textLogic === 'AND' ? cond1 && cond2 : cond1 || cond2;
|
|
1208
|
+
});
|
|
395
1209
|
}
|
|
396
1210
|
// *********** SET FILTER ***********
|
|
397
|
-
if (col.
|
|
398
|
-
if (col.selectedValues
|
|
399
|
-
col.selectedValues
|
|
400
|
-
result = result.filter((r) =>
|
|
1211
|
+
if (col.filterType === 'set') {
|
|
1212
|
+
if (col.selectedValues?.size >= 0 &&
|
|
1213
|
+
col.selectedValues?.size !== col.options.length) {
|
|
1214
|
+
result = result.filter((r) => {
|
|
1215
|
+
const value = r[field];
|
|
1216
|
+
if (Array.isArray(value) &&
|
|
1217
|
+
value.every((val) => typeof val !== 'object')) {
|
|
1218
|
+
return value.some((m) => col.selectedValues.has(m));
|
|
1219
|
+
}
|
|
1220
|
+
if (Array.isArray(value) &&
|
|
1221
|
+
value.every((val) => typeof val === 'object')) {
|
|
1222
|
+
return value.some((m) => col.selectedValues.has(m[col?.cellRendererParams?.tagKey]));
|
|
1223
|
+
}
|
|
1224
|
+
return col.selectedValues.has(r[field]);
|
|
1225
|
+
});
|
|
401
1226
|
this.activeFilters.add(col.fieldName);
|
|
402
1227
|
}
|
|
403
1228
|
else {
|
|
@@ -406,8 +1231,38 @@ class CatsDataGridComponent {
|
|
|
406
1231
|
}
|
|
407
1232
|
});
|
|
408
1233
|
this.filteredData = result;
|
|
1234
|
+
this.rowData = this.filteredData;
|
|
1235
|
+
this.getGroupedData();
|
|
409
1236
|
this.filter.emit(this.filteredData);
|
|
410
1237
|
}
|
|
1238
|
+
resetFilter(col) {
|
|
1239
|
+
switch (col.filterType) {
|
|
1240
|
+
case 'text': {
|
|
1241
|
+
col.textFilters.forEach((f) => (f.filterValue = ''));
|
|
1242
|
+
col.textLogic = 'AND';
|
|
1243
|
+
break;
|
|
1244
|
+
}
|
|
1245
|
+
case 'number': {
|
|
1246
|
+
col.numberFilters.forEach((f) => (f.numberValue = ''));
|
|
1247
|
+
col.numberLogic = 'AND';
|
|
1248
|
+
break;
|
|
1249
|
+
}
|
|
1250
|
+
case 'date': {
|
|
1251
|
+
col.dateFilters.forEach((f) => (f.dateValue = ''));
|
|
1252
|
+
col.textLogic = 'AND';
|
|
1253
|
+
break;
|
|
1254
|
+
}
|
|
1255
|
+
case 'set': {
|
|
1256
|
+
// Select all values again
|
|
1257
|
+
col.selectedValues = new Set(col.options);
|
|
1258
|
+
break;
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
// Remove active flag
|
|
1262
|
+
this.activeFilters.delete(col.fieldName);
|
|
1263
|
+
// Re-apply all filters
|
|
1264
|
+
this.applyAllFilters();
|
|
1265
|
+
}
|
|
411
1266
|
/**
|
|
412
1267
|
* @description Method to change the data format to utc
|
|
413
1268
|
* @author Anand Pandey
|
|
@@ -416,6 +1271,8 @@ class CatsDataGridComponent {
|
|
|
416
1271
|
*/
|
|
417
1272
|
normalizeDate(dateStr) {
|
|
418
1273
|
const d = new Date(dateStr);
|
|
1274
|
+
if (isNaN(d.getTime()))
|
|
1275
|
+
return null;
|
|
419
1276
|
return new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate())).getTime();
|
|
420
1277
|
}
|
|
421
1278
|
/**
|
|
@@ -486,24 +1343,12 @@ class CatsDataGridComponent {
|
|
|
486
1343
|
*/
|
|
487
1344
|
openMenu(event, col, index) {
|
|
488
1345
|
event.stopPropagation();
|
|
1346
|
+
this.showPin = false;
|
|
489
1347
|
this.activeFilterIndex = null;
|
|
490
1348
|
this.menuVisible = this.menuVisible.map(() => false);
|
|
491
1349
|
if (!this.menuVisible[index])
|
|
492
1350
|
this.menuVisible[index] = false;
|
|
493
1351
|
const rect = event.target.getBoundingClientRect();
|
|
494
|
-
this.menuPosition[index] = {
|
|
495
|
-
top: rect.bottom + 4 + 'px',
|
|
496
|
-
left: rect.left + 'px',
|
|
497
|
-
};
|
|
498
|
-
const menuWidth = 160;
|
|
499
|
-
const screenWidth = window.innerWidth;
|
|
500
|
-
const padding = 10;
|
|
501
|
-
//FIX: Stop overflow on the right
|
|
502
|
-
if (parseInt(this.menuPosition[index].left) + menuWidth >
|
|
503
|
-
screenWidth - padding) {
|
|
504
|
-
this.menuPosition[index].left = screenWidth - menuWidth - padding + 'px';
|
|
505
|
-
}
|
|
506
|
-
// Open only this one
|
|
507
1352
|
this.menuVisible[index] = true;
|
|
508
1353
|
}
|
|
509
1354
|
/**
|
|
@@ -513,16 +1358,183 @@ class CatsDataGridComponent {
|
|
|
513
1358
|
* @param {string} type - Type defines the sorting type whether this is ascending, descending.
|
|
514
1359
|
* @returns {void}
|
|
515
1360
|
*/
|
|
516
|
-
onSort(
|
|
517
|
-
this.sortingType = type;
|
|
518
|
-
|
|
519
|
-
|
|
1361
|
+
onSort(col, type, sortingColumIndex) {
|
|
1362
|
+
this.sortingType[sortingColumIndex] = type;
|
|
1363
|
+
this.sortingColumnIndex = sortingColumIndex;
|
|
1364
|
+
Object.keys(this.sortingType).forEach((k) => {
|
|
1365
|
+
if (k !== String(sortingColumIndex))
|
|
1366
|
+
this.sortingType[k] = '';
|
|
1367
|
+
});
|
|
1368
|
+
if (this.sortingType[sortingColumIndex] == 'asc') {
|
|
1369
|
+
this.ascendingOrder(col);
|
|
1370
|
+
}
|
|
1371
|
+
else if (this.sortingType[sortingColumIndex] == 'dsc') {
|
|
1372
|
+
this.descendingOrder(col);
|
|
520
1373
|
}
|
|
521
1374
|
else {
|
|
522
|
-
this.
|
|
1375
|
+
this.rowData = structuredClone(this.originalRowData);
|
|
523
1376
|
}
|
|
1377
|
+
// if (this.sortingType[sortingColumIndex] == '') {
|
|
1378
|
+
// this.rowData = this.originalRowData;
|
|
1379
|
+
// }
|
|
1380
|
+
this.getGroupedData();
|
|
524
1381
|
this.menuVisible[this.currentIndex] = false;
|
|
525
1382
|
}
|
|
1383
|
+
/**
|
|
1384
|
+
* @description Generates grouped data based on the selected `groupBy` columns..
|
|
1385
|
+
* @author Anand Pandey
|
|
1386
|
+
* @returns void
|
|
1387
|
+
*/
|
|
1388
|
+
getGroupedData() {
|
|
1389
|
+
if (this.groupBy && this.groupBy.length > 0) {
|
|
1390
|
+
this.groupedResult = this.groupData(this.rowData, this.groupBy) || [];
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
/**
|
|
1394
|
+
* @description Initializes column resize operation when the user presses the mouse on the resize handle.
|
|
1395
|
+
* @author Anand Pandey
|
|
1396
|
+
* @param {MouseEvent} event - The mousedown event triggered on the resize handle.
|
|
1397
|
+
* @param {number} index - Index of the column being resized.
|
|
1398
|
+
* @returns {void}
|
|
1399
|
+
*/
|
|
1400
|
+
startResize(event, index) {
|
|
1401
|
+
event.preventDefault();
|
|
1402
|
+
this.isResizing = true;
|
|
1403
|
+
this.resizingColumnIndex = index;
|
|
1404
|
+
this.startX = event.clientX;
|
|
1405
|
+
this.startWidth = this.colDefs[index].width;
|
|
1406
|
+
document.addEventListener('mousemove', this.onMouseMove);
|
|
1407
|
+
document.addEventListener('mouseup', this.stopResize);
|
|
1408
|
+
}
|
|
1409
|
+
/**
|
|
1410
|
+
* @description Handles column resizing as the mouse moves.
|
|
1411
|
+
* @author Anand Pandey
|
|
1412
|
+
* @param {MouseEvent} event - Mouse movement event during resizing.
|
|
1413
|
+
* @returns {void}
|
|
1414
|
+
*/
|
|
1415
|
+
onMouseMove = (event) => {
|
|
1416
|
+
if (this.resizingColumnIndex === null ||
|
|
1417
|
+
this.resizingColumnIndex === undefined)
|
|
1418
|
+
return;
|
|
1419
|
+
const movement = event.clientX - this.startX;
|
|
1420
|
+
const newWidth = this.startWidth + movement;
|
|
1421
|
+
if (newWidth > 50) {
|
|
1422
|
+
this.colDefs[this.resizingColumnIndex].width = newWidth;
|
|
1423
|
+
}
|
|
1424
|
+
};
|
|
1425
|
+
/**
|
|
1426
|
+
* @description Stops the column resizing operation.
|
|
1427
|
+
* Clears resizing state and removes mouse event listeners.
|
|
1428
|
+
* @author Anand Pandey
|
|
1429
|
+
* @param {MouseEvent} event - Mouse up event ending the resize action.
|
|
1430
|
+
* @returns {void}
|
|
1431
|
+
*/
|
|
1432
|
+
stopResize = (event) => {
|
|
1433
|
+
event.stopPropagation();
|
|
1434
|
+
this.resizingColumnIndex = null;
|
|
1435
|
+
this.isResizing = false;
|
|
1436
|
+
document.removeEventListener('mousemove', this.onMouseMove);
|
|
1437
|
+
document.removeEventListener('mouseup', this.stopResize);
|
|
1438
|
+
};
|
|
1439
|
+
/**
|
|
1440
|
+
* @description Recursively groups row data into a hierarchical structure based on the provided group keys.
|
|
1441
|
+
* @author Anand Pandey
|
|
1442
|
+
* @param {any[]} data - The row data to be grouped.
|
|
1443
|
+
* @param {string[]} groupKeys - Ordered list of column keys to group by.
|
|
1444
|
+
* @returns {any[]} A hierarchical grouped structure containing nested group nodes.
|
|
1445
|
+
*/
|
|
1446
|
+
groupData(data, groupKeys) {
|
|
1447
|
+
if (groupKeys.length === 0)
|
|
1448
|
+
return data;
|
|
1449
|
+
const [currentKey, ...restKeys] = groupKeys;
|
|
1450
|
+
const groups = {};
|
|
1451
|
+
for (const row of data) {
|
|
1452
|
+
const key = row[currentKey] ?? '';
|
|
1453
|
+
if (!groups[key])
|
|
1454
|
+
groups[key] = [];
|
|
1455
|
+
groups[key].push(row);
|
|
1456
|
+
}
|
|
1457
|
+
// recursively group child arrays
|
|
1458
|
+
let result = [];
|
|
1459
|
+
for (const key of Object.keys(groups)) {
|
|
1460
|
+
result.push({
|
|
1461
|
+
key,
|
|
1462
|
+
field: currentKey,
|
|
1463
|
+
expanded: false,
|
|
1464
|
+
children: this.groupData(groups[key], restKeys),
|
|
1465
|
+
});
|
|
1466
|
+
}
|
|
1467
|
+
return result;
|
|
1468
|
+
}
|
|
1469
|
+
/**
|
|
1470
|
+
* @description Toggles the expand/collapse state of a group node.
|
|
1471
|
+
* @author Anand Pandey
|
|
1472
|
+
* @param {any} node - The group node whose expanded state needs to be toggled.
|
|
1473
|
+
* @returns {void}
|
|
1474
|
+
*/
|
|
1475
|
+
toggleGroup(node) {
|
|
1476
|
+
node.expanded = !node.expanded;
|
|
1477
|
+
}
|
|
1478
|
+
/**
|
|
1479
|
+
* @description Pin column on the left side.
|
|
1480
|
+
* @author Anand Pandey
|
|
1481
|
+
* @param {any} col - The selected column details from table on clicking pin or unpin from three dots menu.
|
|
1482
|
+
* @param {number} index - The index of column from table on clicking pin or unpin from three dots menu.
|
|
1483
|
+
* @returns {void}
|
|
1484
|
+
*/
|
|
1485
|
+
pinColumn(col, index, direction) {
|
|
1486
|
+
this.pinActionClicked[col.colId] = direction;
|
|
1487
|
+
col.leftPinned = direction === 'left';
|
|
1488
|
+
col.rightPinned = direction === 'right';
|
|
1489
|
+
if (col.leftPinned) {
|
|
1490
|
+
this.colDefs.splice(index, 1);
|
|
1491
|
+
this.colDefs = [col, ...this.colDefs];
|
|
1492
|
+
}
|
|
1493
|
+
else if (col.rightPinned) {
|
|
1494
|
+
this.colDefs.splice(index, 1);
|
|
1495
|
+
this.colDefs.splice(this.colDefs.length - 1, 0, col);
|
|
1496
|
+
}
|
|
1497
|
+
else {
|
|
1498
|
+
const indx = this.originalColDefs.findIndex((dt) => dt.fieldName === col.fieldName);
|
|
1499
|
+
if (index >= 0) {
|
|
1500
|
+
this.colDefs.splice(index, 1);
|
|
1501
|
+
this.colDefs.splice(indx, 0, col);
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
this.updatePinnedOffsets();
|
|
1505
|
+
this.onClickOutside();
|
|
1506
|
+
}
|
|
1507
|
+
showPinActions() {
|
|
1508
|
+
this.showPin = true;
|
|
1509
|
+
}
|
|
1510
|
+
hidePinActions() {
|
|
1511
|
+
this.showPin = false;
|
|
1512
|
+
}
|
|
1513
|
+
/**
|
|
1514
|
+
* @description Updates the horizontal left and right offsets of pinned columns by assigning cumulative widths to each pinned column and resetting non-pinned columns.
|
|
1515
|
+
* @author Anand Pandey
|
|
1516
|
+
* @returns void
|
|
1517
|
+
*/
|
|
1518
|
+
updatePinnedOffsets() {
|
|
1519
|
+
let leftOffset = 0;
|
|
1520
|
+
let rightOffset = 0;
|
|
1521
|
+
// LEFT pinned (normal order)
|
|
1522
|
+
this.colDefs.forEach((col) => {
|
|
1523
|
+
if (col.leftPinned) {
|
|
1524
|
+
col.left = leftOffset;
|
|
1525
|
+
col.right = null;
|
|
1526
|
+
leftOffset += col.width || 120;
|
|
1527
|
+
}
|
|
1528
|
+
});
|
|
1529
|
+
// RIGHT pinned (REVERSE order)
|
|
1530
|
+
[...this.colDefs].reverse().forEach((col) => {
|
|
1531
|
+
if (col.rightPinned) {
|
|
1532
|
+
col.right = rightOffset;
|
|
1533
|
+
col.left = null;
|
|
1534
|
+
rightOffset += col.width || 120;
|
|
1535
|
+
}
|
|
1536
|
+
});
|
|
1537
|
+
}
|
|
526
1538
|
/**
|
|
527
1539
|
* @description Method to parse column value from rowdata object
|
|
528
1540
|
* according to given field value in column Defination
|
|
@@ -531,12 +1543,20 @@ class CatsDataGridComponent {
|
|
|
531
1543
|
* @param toParse - field value
|
|
532
1544
|
* @returns string
|
|
533
1545
|
*/
|
|
534
|
-
parseColValue(row,
|
|
535
|
-
if (!
|
|
536
|
-
|
|
1546
|
+
parseColValue(row, col) {
|
|
1547
|
+
if (!col?.fieldName?.includes('.')) {
|
|
1548
|
+
if (Array.isArray(row[col.fieldName])) {
|
|
1549
|
+
if (row[col.fieldName].every((dt) => typeof dt === 'string')) {
|
|
1550
|
+
return row[col.fieldName][0];
|
|
1551
|
+
}
|
|
1552
|
+
if (row[col.fieldName].every((dt) => typeof dt === 'object')) {
|
|
1553
|
+
return row[col.fieldName][0][col.cellRendererParams.tagKey];
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
return row[col.fieldName] || '-';
|
|
537
1557
|
}
|
|
538
1558
|
else {
|
|
539
|
-
let toParseArr =
|
|
1559
|
+
let toParseArr = col?.fieldName.split('.');
|
|
540
1560
|
let val = row;
|
|
541
1561
|
for (const key of toParseArr) {
|
|
542
1562
|
val =
|
|
@@ -643,34 +1663,53 @@ class CatsDataGridComponent {
|
|
|
643
1663
|
* @description method to sort data according to type and column
|
|
644
1664
|
* @author Tarun Kumar
|
|
645
1665
|
* @param sortingColumIndex
|
|
646
|
-
* @param
|
|
1666
|
+
* @param col
|
|
647
1667
|
* @param sortingType
|
|
648
1668
|
*/
|
|
649
|
-
onSortingRowData(sortingColumIndex,
|
|
1669
|
+
onSortingRowData(sortingColumIndex, col) {
|
|
1670
|
+
if (!col.sortable)
|
|
1671
|
+
return;
|
|
650
1672
|
this.sortingColumnIndex = sortingColumIndex;
|
|
651
|
-
this.sortingType
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
this.ascendingOrder(fieldName);
|
|
1673
|
+
Object.keys(this.sortingType).forEach((k) => {
|
|
1674
|
+
if (k !== String(sortingColumIndex))
|
|
1675
|
+
this.sortingType[k] = '';
|
|
1676
|
+
});
|
|
1677
|
+
if (!this.sortingType[sortingColumIndex]) {
|
|
1678
|
+
this.sortingType[sortingColumIndex] = 'asc';
|
|
658
1679
|
}
|
|
659
1680
|
else {
|
|
660
|
-
this.
|
|
1681
|
+
this.sortingType[sortingColumIndex] =
|
|
1682
|
+
this.sortingType[sortingColumIndex] === 'asc' ? 'dsc' : '';
|
|
1683
|
+
}
|
|
1684
|
+
if (this.sortingType[sortingColumIndex] == 'asc') {
|
|
1685
|
+
this.ascendingOrder(col);
|
|
661
1686
|
}
|
|
1687
|
+
else if (this.sortingType[sortingColumIndex] == 'dsc') {
|
|
1688
|
+
this.descendingOrder(col);
|
|
1689
|
+
}
|
|
1690
|
+
else {
|
|
1691
|
+
this.rowData = structuredClone(this.originalRowData);
|
|
1692
|
+
}
|
|
1693
|
+
this.getGroupedData();
|
|
662
1694
|
}
|
|
663
1695
|
/**
|
|
664
1696
|
* @description method to sort table in ascending order according to given field
|
|
665
1697
|
* @param fieldName
|
|
666
1698
|
*/
|
|
667
|
-
ascendingOrder(
|
|
1699
|
+
ascendingOrder(col) {
|
|
668
1700
|
this.rowData = this.rowData.sort((a, b) => {
|
|
669
|
-
|
|
670
|
-
|
|
1701
|
+
const valA = this.parseColValue(a, col);
|
|
1702
|
+
const valB = this.parseColValue(b, col);
|
|
1703
|
+
if (typeof valA === 'string' && typeof valB === 'string') {
|
|
1704
|
+
return valA.localeCompare(valB);
|
|
671
1705
|
}
|
|
672
1706
|
else {
|
|
673
|
-
|
|
1707
|
+
if (valA > valB) {
|
|
1708
|
+
return 1;
|
|
1709
|
+
}
|
|
1710
|
+
else {
|
|
1711
|
+
return -1;
|
|
1712
|
+
}
|
|
674
1713
|
}
|
|
675
1714
|
});
|
|
676
1715
|
}
|
|
@@ -678,13 +1717,20 @@ class CatsDataGridComponent {
|
|
|
678
1717
|
* @description method to sort table in descending order according to given field
|
|
679
1718
|
* @param fieldName
|
|
680
1719
|
*/
|
|
681
|
-
descendingOrder(
|
|
1720
|
+
descendingOrder(col) {
|
|
682
1721
|
this.rowData = this.rowData.sort((a, b) => {
|
|
683
|
-
|
|
684
|
-
|
|
1722
|
+
const valA = this.parseColValue(a, col);
|
|
1723
|
+
const valB = this.parseColValue(b, col);
|
|
1724
|
+
if (typeof valA === 'string' && typeof valB === 'string') {
|
|
1725
|
+
return valA.localeCompare(valB) * -1;
|
|
685
1726
|
}
|
|
686
1727
|
else {
|
|
687
|
-
|
|
1728
|
+
if (valA > valB) {
|
|
1729
|
+
return -1;
|
|
1730
|
+
}
|
|
1731
|
+
else {
|
|
1732
|
+
return 1;
|
|
1733
|
+
}
|
|
688
1734
|
}
|
|
689
1735
|
});
|
|
690
1736
|
}
|
|
@@ -743,8 +1789,38 @@ class CatsDataGridComponent {
|
|
|
743
1789
|
* @param col
|
|
744
1790
|
* @returns {object}
|
|
745
1791
|
*/
|
|
746
|
-
getStyle(col) {
|
|
747
|
-
|
|
1792
|
+
getStyle(col, type) {
|
|
1793
|
+
const style = {
|
|
1794
|
+
width: `${col.width ?? 150}px`,
|
|
1795
|
+
minWidth: `${col.minWidth ?? 50}px`,
|
|
1796
|
+
};
|
|
1797
|
+
if (col.isAction) {
|
|
1798
|
+
style.position = 'sticky';
|
|
1799
|
+
style.right = '0px';
|
|
1800
|
+
style.zIndex = 1;
|
|
1801
|
+
style.background = '#fff';
|
|
1802
|
+
style.width = '60px';
|
|
1803
|
+
style.minWidth = '60px';
|
|
1804
|
+
}
|
|
1805
|
+
else if (col.leftPinned) {
|
|
1806
|
+
style.position = 'sticky';
|
|
1807
|
+
style.left = col.left + 'px';
|
|
1808
|
+
style.zIndex = 12;
|
|
1809
|
+
style.background = '#fff';
|
|
1810
|
+
}
|
|
1811
|
+
else if (col.rightPinned) {
|
|
1812
|
+
style.position = 'sticky';
|
|
1813
|
+
style.right = col.right + 'px';
|
|
1814
|
+
style.zIndex = 12;
|
|
1815
|
+
style.background = '#fff';
|
|
1816
|
+
}
|
|
1817
|
+
else {
|
|
1818
|
+
style.position = '';
|
|
1819
|
+
}
|
|
1820
|
+
if (type === 'action') {
|
|
1821
|
+
style.background = '#f0f0f0';
|
|
1822
|
+
}
|
|
1823
|
+
return style;
|
|
748
1824
|
}
|
|
749
1825
|
onClickOutside() {
|
|
750
1826
|
this.showPageSizeList = false;
|
|
@@ -782,8 +1858,55 @@ class CatsDataGridComponent {
|
|
|
782
1858
|
* @returns {void}
|
|
783
1859
|
*/
|
|
784
1860
|
onDragStart(event, index) {
|
|
1861
|
+
this.dragGroupIndex = null;
|
|
1862
|
+
const target = event.target;
|
|
1863
|
+
if (this.isResizing) {
|
|
1864
|
+
event.preventDefault();
|
|
1865
|
+
return;
|
|
1866
|
+
}
|
|
785
1867
|
this.draggedIndex = index;
|
|
1868
|
+
// For column reorder.
|
|
786
1869
|
event.dataTransfer?.setData('text/plain', index.toString());
|
|
1870
|
+
// For group panel
|
|
1871
|
+
event.dataTransfer?.setData('columnIndex', index.toString());
|
|
1872
|
+
const th = target.closest('th');
|
|
1873
|
+
if (!th)
|
|
1874
|
+
return;
|
|
1875
|
+
const clone = th.cloneNode(true);
|
|
1876
|
+
this.copyComputedStyles(th, clone);
|
|
1877
|
+
clone.style.position = 'absolute';
|
|
1878
|
+
clone.style.top = '-9999px';
|
|
1879
|
+
clone.style.left = '-9999px';
|
|
1880
|
+
clone.style.pointerEvents = 'none';
|
|
1881
|
+
document.body.appendChild(clone);
|
|
1882
|
+
event.dataTransfer?.setDragImage(clone, 0, 0);
|
|
1883
|
+
setTimeout(() => clone.remove(), 0);
|
|
1884
|
+
}
|
|
1885
|
+
onGroupDragStart(event, index) {
|
|
1886
|
+
event.dataTransfer?.setData('groupIndex', index.toString());
|
|
1887
|
+
this.dragGroupIndex = index;
|
|
1888
|
+
}
|
|
1889
|
+
/**
|
|
1890
|
+
* @author Anand Pandey
|
|
1891
|
+
* @description Copies computed CSS styles from the source element to the target element, including all child elements recursively.
|
|
1892
|
+
* @param {HTMLElement} source - Original element.
|
|
1893
|
+
* @param {HTMLElement} target - Cloned element.
|
|
1894
|
+
* @returns {void}
|
|
1895
|
+
*/
|
|
1896
|
+
copyComputedStyles(source, target) {
|
|
1897
|
+
const computed = window.getComputedStyle(source);
|
|
1898
|
+
for (const prop of computed) {
|
|
1899
|
+
target.style.setProperty(prop, computed.getPropertyValue(prop));
|
|
1900
|
+
}
|
|
1901
|
+
// Copy children styles recursively
|
|
1902
|
+
const sourceChildren = Array.from(source.children);
|
|
1903
|
+
const targetChildren = Array.from(target.children);
|
|
1904
|
+
sourceChildren.forEach((srcChild, i) => {
|
|
1905
|
+
const tgtChild = targetChildren[i];
|
|
1906
|
+
if (srcChild && tgtChild) {
|
|
1907
|
+
this.copyComputedStyles(srcChild, tgtChild);
|
|
1908
|
+
}
|
|
1909
|
+
});
|
|
787
1910
|
}
|
|
788
1911
|
/**
|
|
789
1912
|
* @author Tarun Kumar
|
|
@@ -793,6 +1916,7 @@ class CatsDataGridComponent {
|
|
|
793
1916
|
*/
|
|
794
1917
|
onDragOver(event, index) {
|
|
795
1918
|
event.preventDefault();
|
|
1919
|
+
this.isResizing = false;
|
|
796
1920
|
if (this.dragOverIndex !== index) {
|
|
797
1921
|
this.dragOverIndex = index;
|
|
798
1922
|
}
|
|
@@ -823,23 +1947,163 @@ class CatsDataGridComponent {
|
|
|
823
1947
|
this.draggedIndex = null;
|
|
824
1948
|
this.dragOverIndex = null;
|
|
825
1949
|
}
|
|
1950
|
+
/**
|
|
1951
|
+
* @description Handles drag over on group panel to allow dropping.
|
|
1952
|
+
* @author Anand Pandey
|
|
1953
|
+
* @param {DragEvent} event
|
|
1954
|
+
* @returns {void}
|
|
1955
|
+
*/
|
|
1956
|
+
onGroupDragOver(event) {
|
|
1957
|
+
event.preventDefault();
|
|
1958
|
+
}
|
|
1959
|
+
/**
|
|
1960
|
+
* @description Handles drag over on a group tag and updates the target index for reordering.
|
|
1961
|
+
* @author Anand Pandey
|
|
1962
|
+
* @param {DragEvent} event
|
|
1963
|
+
* @param {number} index
|
|
1964
|
+
* @returns {void}
|
|
1965
|
+
*/
|
|
1966
|
+
onActiveDragOver(event, index) {
|
|
1967
|
+
event.preventDefault();
|
|
1968
|
+
event.stopPropagation();
|
|
1969
|
+
this.dragGroupIndex = index;
|
|
1970
|
+
}
|
|
1971
|
+
/**
|
|
1972
|
+
* @description Handles drop on group panel and routes the drop to group reordering or column grouping logic.
|
|
1973
|
+
* @author Anand Pandey
|
|
1974
|
+
* @param {DragEvent} event
|
|
1975
|
+
* @returns {void}
|
|
1976
|
+
*/
|
|
1977
|
+
onGroupDrop(event) {
|
|
1978
|
+
const colIndex = Number(event.dataTransfer?.getData('columnIndex'));
|
|
1979
|
+
const groupIndex = Number(event.dataTransfer?.getData('groupIndex'));
|
|
1980
|
+
const target = event.target;
|
|
1981
|
+
const isOverGroupPanel = target.closest('.group-tag');
|
|
1982
|
+
if (this.dragGroupIndex !== null &&
|
|
1983
|
+
this.dragGroupIndex >= 0 &&
|
|
1984
|
+
groupIndex >= 0) {
|
|
1985
|
+
if (!isOverGroupPanel) {
|
|
1986
|
+
this.dragGroupIndex = this.activeGroups.length - 1;
|
|
1987
|
+
}
|
|
1988
|
+
this.onActiveGroupDrop(event, this.dragGroupIndex);
|
|
1989
|
+
}
|
|
1990
|
+
else {
|
|
1991
|
+
if (isNaN(colIndex))
|
|
1992
|
+
return;
|
|
1993
|
+
if (colIndex)
|
|
1994
|
+
this.dragGroupIndex = null;
|
|
1995
|
+
const col = this.colDefs[colIndex];
|
|
1996
|
+
const el = this.activeGroups.find((c) => c.fieldName === col.fieldName);
|
|
1997
|
+
if (!el) {
|
|
1998
|
+
this.activeGroups.push(col);
|
|
1999
|
+
this.groupBy.push(col.fieldName);
|
|
2000
|
+
}
|
|
2001
|
+
this.colDefs.splice(colIndex, 1);
|
|
2002
|
+
// this.applyGrouping();
|
|
2003
|
+
this.getGroupedData();
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
/**
|
|
2007
|
+
* @description Handles column grouping triggered from the column action menu by adding the column to the active group list,
|
|
2008
|
+
* removing it from visible columns, and recalculating grouped row data.
|
|
2009
|
+
*
|
|
2010
|
+
* @param {any} col - The column definition selected for grouping.
|
|
2011
|
+
* @param {number} index - Index of the column in the current column definitions array.
|
|
2012
|
+
* @returns {void}
|
|
2013
|
+
*/
|
|
2014
|
+
groupByColumnAction(col, index) {
|
|
2015
|
+
this.activeGroups.push(col);
|
|
2016
|
+
this.groupBy.push(col.fieldName);
|
|
2017
|
+
this.colDefs.splice(index, 1);
|
|
2018
|
+
this.getGroupedData();
|
|
2019
|
+
this.onClickOutside();
|
|
2020
|
+
}
|
|
2021
|
+
/**
|
|
2022
|
+
* @description Handles drop on a group tag and reorders the active groups accordingly.
|
|
2023
|
+
* @author Anand Pandey
|
|
2024
|
+
* @param {DragEvent} event
|
|
2025
|
+
* @param {number} index
|
|
2026
|
+
* @returns {void}
|
|
2027
|
+
*/
|
|
2028
|
+
onActiveGroupDrop(event, index) {
|
|
2029
|
+
event.stopPropagation();
|
|
2030
|
+
const groupIndex = Number(event.dataTransfer?.getData('groupIndex'));
|
|
2031
|
+
if (isNaN(groupIndex))
|
|
2032
|
+
return;
|
|
2033
|
+
if (groupIndex === index)
|
|
2034
|
+
return;
|
|
2035
|
+
const item = this.groupBy.splice(groupIndex, 1)[0];
|
|
2036
|
+
this.groupBy.splice(index, 0, item);
|
|
2037
|
+
const col = this.activeGroups.splice(groupIndex, 1)[0];
|
|
2038
|
+
this.activeGroups.splice(index, 0, col);
|
|
2039
|
+
this.getGroupedData();
|
|
2040
|
+
}
|
|
2041
|
+
/**
|
|
2042
|
+
* @description Removes a group tag and restores the column to available columns list.
|
|
2043
|
+
* @author Anand Pandey
|
|
2044
|
+
* @param {any} col
|
|
2045
|
+
* @param {number} id
|
|
2046
|
+
* @returns {void}
|
|
2047
|
+
*/
|
|
2048
|
+
removeGroup(col, id) {
|
|
2049
|
+
this.activeGroups.splice(id, 1);
|
|
2050
|
+
const colIndex = this.originalColDefs.findIndex((dt) => dt.fieldName === col.fieldName);
|
|
2051
|
+
this.colDefs.splice(colIndex, 0, col);
|
|
2052
|
+
this.groupBy.splice(id, 1);
|
|
2053
|
+
if (this.groupBy.length === 0) {
|
|
2054
|
+
this.groupedResult = [];
|
|
2055
|
+
}
|
|
2056
|
+
else {
|
|
2057
|
+
this.getGroupedData();
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
toggleDropdown() {
|
|
2061
|
+
this.showDropdown = !this.showDropdown;
|
|
2062
|
+
}
|
|
2063
|
+
selectFilter(option, col) {
|
|
2064
|
+
col.textFilters[0].filterType = option.value;
|
|
2065
|
+
this.showDropdown = false;
|
|
2066
|
+
}
|
|
2067
|
+
getSelectedFilterLabel(value) {
|
|
2068
|
+
return this.filterOptions.find((o) => o.value === value)?.label || '';
|
|
2069
|
+
}
|
|
826
2070
|
toggleFilter(col, index, event) {
|
|
827
|
-
event.stopPropagation();
|
|
2071
|
+
event.stopPropagation();
|
|
828
2072
|
this.activeFilterIndex = this.activeFilterIndex === index ? null : index;
|
|
829
2073
|
this.menuVisible = this.menuVisible.map(() => false);
|
|
830
2074
|
}
|
|
831
|
-
|
|
832
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CatsDataGridComponent, isStandalone: true, selector: "cats-data-grid", inputs: { tableOptions: "tableOptions", totalRecords: "totalRecords", sortingRequired: "sortingRequired", checkBoxSelection: "checkBoxSelection", checkboxSelectionType: "checkboxSelectionType", rowData: "rowData", colDefs: "colDefs", paginationRequired: "paginationRequired", selectedRowEmpty: "selectedRowEmpty", filterRequired: "filterRequired", threeDotsMenuRequired: "threeDotsMenuRequired", height: "height", pageSizeList: "pageSizeList" }, outputs: { onPaginationChange: "onPaginationChange", onCheckboxSelection: "onCheckboxSelection", onScrollEmitter: "onScrollEmitter", filter: "filter" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tableArea\">\r\n <div\r\n class=\"table_wrapper\"\r\n id=\"container_scroll\"\r\n (scroll)=\"infinityScroll($event)\"\r\n [ngStyle]=\"{ height: height + 'px' }\"\r\n >\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead class=\"sticky-top\">\r\n <tr>\r\n @if (checkBoxSelection && checkboxSelectionType == 'multiple') {\r\n <th style=\"width: 50px\">\r\n <span\r\n ><input\r\n class=\"form-check-input cursor-pointer\"\r\n type=\"checkbox\"\r\n name=\"\"\r\n id=\"\"\r\n [checked]=\"checkAllSelected()\"\r\n [indeterminate]=\"checkInterminate()\"\r\n (change)=\"onHeaderCheckboxChange($event)\"\r\n /></span>\r\n </th>\r\n } @for (col of colDefs; track $index) {\r\n <th\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"{ 'drag-over': dragOverIndex === $index }\"\r\n draggable=\"true\"\r\n (dragstart)=\"onDragStart($event, $index)\"\r\n (dragover)=\"onDragOver($event, $index)\"\r\n (drop)=\"onDrop($event, $index)\"\r\n (dragend)=\"onDragEnd()\"\r\n >\r\n <div class=\"th_wraper\">\r\n <div\r\n class=\"flex-center\"\r\n [ngStyle]=\"getStyle(col)\"\r\n (click)=\"onSortingRowData($index, col?.fieldName)\"\r\n >\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n @if (sortingRequired && sortingColumnIndex == $index) {\r\n <span class=\"headerName-icon\">\r\n <ul class=\"\">\r\n @if(sortingType){\r\n <li class=\"cursor-pointer\">\r\n <img\r\n src=\"images/sort_up.svg\"\r\n class=\"sorting_up\"\r\n [ngClass]=\"\r\n sortingColumnIndex == $index && sortingType == 'asc'\r\n ? 'd-none'\r\n : ''\r\n \"\r\n />\r\n </li>\r\n <li class=\"cursor-pointer\">\r\n <!-- <i class=\"fa fa-caret-down\" [ngClass]=\"sortingColumnIndex == $index && sortingType == 'dsc' ? 'muted_sort' : ''\"></i> -->\r\n <img\r\n src=\"images/sort_down.svg\"\r\n class=\"sorting_down\"\r\n [ngClass]=\"\r\n sortingColumnIndex == $index && sortingType == 'dsc'\r\n ? 'd-none'\r\n : ''\r\n \"\r\n />\r\n </li>\r\n\r\n }\r\n </ul>\r\n </span>\r\n\r\n }\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <!-- Column Filters Logic-->\r\n @if(filterRequired && col.filter){\r\n <div\r\n class=\"filters\"\r\n (click)=\"toggleFilter(col, $index, $event)\"\r\n >\r\n <img\r\n src=\"images/filter-icon.svg\"\r\n class=\"filter-icon\"\r\n [ngClass]=\"\r\n activeFilters.has(col.fieldName)\r\n ? 'filter-icon-active'\r\n : 'filter-icon'\r\n \"\r\n />\r\n\r\n @if (activeFilterIndex === $index) {\r\n <div\r\n class=\"filter-popup\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <!-- Text Filter -->\r\n @if(col.dataType === 'text'){\r\n <select [(ngModel)]=\"col.textFilters[0].filterType\">\r\n <option value=\"contains\">Contains</option>\r\n <option value=\"doesNotContain\">Does Not Contain</option>\r\n <option value=\"equals\">Equals</option>\r\n <option value=\"doesNotEqual\">Does Not Equal</option>\r\n <option value=\"startsWith\">Starts With</option>\r\n <option value=\"endsWith\">Ends With</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.textFilters[0].filterValue){\r\n <div class=\"logic-row\">\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n AND\r\n </label>\r\n\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n OR\r\n </label>\r\n </div>\r\n\r\n <select [(ngModel)]=\"col.textFilters[1].filterType\">\r\n <option value=\"contains\">Contains</option>\r\n <option value=\"doesNotContain\">Does Not Contain</option>\r\n <option value=\"equals\">Equals</option>\r\n <option value=\"doesNotEqual\">Does Not Equal</option>\r\n <option value=\"startsWith\">Starts With</option>\r\n <option value=\"endsWith\">Ends With</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n } }\r\n\r\n <!-- Number Filter -->\r\n @if(col.dataType === 'number'){\r\n <select [(ngModel)]=\"col.numberFilters[0].numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.numberFilters[0].numberValue){\r\n <div class=\"logic-row\">\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n AND\r\n </label>\r\n\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n OR\r\n </label>\r\n </div>\r\n\r\n <select [(ngModel)]=\"col.numberFilters[1].numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n } }\r\n\r\n <!-- DATE FILTER -->\r\n <ng-container *ngIf=\"col.dataType === 'date'\">\r\n <select [(ngModel)]=\"col.numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n <input\r\n type=\"date\"\r\n [(ngModel)]=\"col.dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n </ng-container>\r\n\r\n <!-- SET FILTER (CHECKBOX LIST) -->\r\n <ng-container *ngIf=\"col.dataType === 'set'\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n />\r\n\r\n <div class=\"set-options\">\r\n <label>\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelected(col)\"\r\n (change)=\"toggleSelectAll(col, $event)\"\r\n />\r\n (Select All)\r\n </label>\r\n\r\n <label *ngFor=\"let opt of col.filteredOptions\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"col.selectedValues.has(opt)\"\r\n (change)=\"toggleSetOption(col, opt, $event)\"\r\n />\r\n {{ opt }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n @if(threeDotsMenuRequired && col.menu){\r\n\r\n <div class=\"three-dots\" (click)=\"openMenu($event, col, $index)\">\r\n <img src=\"images/more-vertical.svg\" />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- popup open -->\r\n <div\r\n class=\"column-menu\"\r\n *ngIf=\"menuVisible[$index]\"\r\n [ngStyle]=\"menuPosition[$index]\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <ul>\r\n @if(sortingType === 'dsc' || sortingType === ''){\r\n <li (click)=\"onSort(col?.fieldName, 'asc')\">\r\n <img src=\"images/arrow-up.svg\" class=\"sorting_up\" />\r\n Sort Ascending\r\n </li>\r\n } @if(sortingType === 'asc' || sortingType === ''){\r\n <li (click)=\"onSort(col?.fieldName, 'dsc')\">\r\n <img src=\"images/arrow-down.svg\" class=\"sorting_up\" />\r\n Sort Descending\r\n </li>\r\n } @if(sortingType === 'asc' || sortingType === 'dsc'){\r\n <li (click)=\"onSort(col?.fieldName, '')\">\r\n <span>\r\n <img src=\"images/chevron-up.svg\" class=\"sorting_up\" />\r\n <img src=\"images/chevron-down.svg\" class=\"sorting_up\" />\r\n </span>\r\n Clear Sort\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (data of rowData; track data.rowId) {\r\n <tr [ngClass]=\"data | addClass : tableOptions\">\r\n @if (checkBoxSelection) {\r\n <td style=\"min-width: 50px\">\r\n @if (checkboxSelectionType=='multiple') {\r\n <span\r\n ><input\r\n type=\"checkbox\"\r\n class=\"form-check-input pointer\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n /></span>\r\n\r\n }@else{\r\n <span class=\"checkboxInput\">\r\n <input\r\n type=\"radio\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n />\r\n </span>\r\n\r\n }\r\n </td>\r\n } @for (col of colDefs; track $index) {\r\n <td\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"col?.addClass ? col.addClass(data) : ''\"\r\n >\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(data, col.fieldName) }}\r\n </div>\r\n <div class=\"see_more_data\">\r\n <div class=\"item\">\r\n <span class=\"desc\">\r\n {{ parseColValue(data, col.fieldName) }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"data\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"data[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n <!-- Commented for later use -->\r\n <!-- <div class=\"tool_tip\">\r\n <span class=\"\"> {{ parseColValue(data, col.fieldName) }}aditya </span>\r\n </div> -->\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td [attr.colspan]=\"colDefs.length + 1\">\r\n <div class=\"small_data\">\r\n @if (tableOptions?.noDataTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableOptions?.noDataTemplate\"\r\n ></ng-container>\r\n\r\n }@else{\r\n <!-- need to style it properly then we will add it -->\r\n <span>No Data To Show</span>\r\n\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- Table Wrapper Ends-->\r\n @if(paginationRequired){\r\n <div class=\"pagination_main\">\r\n <div class=\"entries_details\">\r\n <span>Showing</span>\r\n <div\r\n class=\"pagination_select\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <div\r\n class=\"select_dropdown pointer\"\r\n (click)=\"showPageSizeList = !showPageSizeList\"\r\n >\r\n <p class=\"select_text mb-0\">{{ pageDetails.pageSize }}</p>\r\n <span class=\"chevron_img\">\r\n <img src=\"images/chevron-down.svg\" class=\"pointer\" />\r\n </span>\r\n </div>\r\n @if(showPageSizeList){\r\n <div class=\"select_option\">\r\n @for(option of pageSizeList;track $index){\r\n <span\r\n class=\"pointer\"\r\n (click)=\"onPageSizeChanged(option); onClickOutside()\"\r\n >{{ option }}</span\r\n >\r\n }\r\n </div>\r\n }\r\n </div>\r\n <span\r\n >Rows | {{ totalRecords > 0 ? recordsToShow.min + 1 : 0 }} -\r\n {{\r\n recordsToShow.max > totalRecords ? totalRecords : recordsToShow.max\r\n }}\r\n of\r\n {{ totalRecords }} Entries</span\r\n >\r\n </div>\r\n <div class=\"pagination_form flex-center\">\r\n <span>Page</span>\r\n\r\n <button\r\n class=\"outlined_btn prev_btn\"\r\n [ngClass]=\"pageDetails.currentPage > 1 ? '' : 'disable_btn'\"\r\n type=\"button\"\r\n (click)=\"onBtPrevClick()\"\r\n >\r\n <span> < </span>\r\n </button>\r\n <div>\r\n <input\r\n class=\"input_style right\"\r\n type=\"number\"\r\n [(ngModel)]=\"pageDetails.currentPage\"\r\n (change)=\"goToSelectedPage($event)\"\r\n name=\"\"\r\n id=\"\"\r\n />\r\n </div>\r\n <button\r\n class=\"outlined_btn next_btn\"\r\n type=\"button\"\r\n [ngClass]=\"\r\n pageDetails.currentPage < pageDetails.totalPages ? '' : 'disable_btn'\r\n \"\r\n (click)=\"onBtNextClick()\"\r\n >\r\n <span> > </span>\r\n </button>\r\n <span>of {{ pageDetails.totalPages }}</span>\r\n </div>\r\n </div>\r\n }\r\n <!-- Pagination Ends -->\r\n</div>\r\n", styles: [":root{--white: #fff;--white-creame: #ebf3ff;--border: #dae3f8;--scrollbar: var(--border);--textPrimary: #0b1c33;--textPrimary70: #0b1c33b3;--textSecondary: #556171;--textSecondary50: #55617180;--textSecondary70: #556171b3;--pink-10: #f9fbfe;--ice-blue: #67adcf;--primaryBlue: #017db9;--primaryBlue70: #017db9be;--blue-10: #edf4fe;--blue-40: #e3f3fc;--blue-50: #f2f5fa;--blue-5050: #f2f5fa80;--blue-100: #c8e2ff;--blue-200: #a4cfff;--blue-300: #2680ea;--blue-500: #3788e5;--blue-700: #007aff;--yellow-50: #ffeedf;--yellow-100: #fed18f;--yellow-200: #ffbca6;--yellow-300: #f08a2b26;--yellow-400: #e58900;--primaryOrange: #f05a2b;--primaryOrange50: #f05a2b80;--primaryOrange70: #f05a2bb3;--orange-10: #fcf5eb;--orange-200: #f7ac94;--orange-300: #fb9676;--theadBg: var(--blue-50);--pagination-bg: #f7fafe;--blue-200: var(--border);--neutral-200: #dadbdc;--neutral-600: #040d17;--toastShadow: #0000001f;--dropdown-shadow: #00000014;--green-50: #eaf8f1;--green-100: #bde8d3;--green-600: #27a468;--red-10: #fcebef;--red-20: #ca0000;--red-30: #F7C1CE;--error-red: #d03258;--tableBorder: var(--border);--grey-50: #a5b0bf;--grey-100: #333333;--grey-200: #222A3D;--capture-border: #9badca;--captcha-bg: #f3f3f3;--neutral-400: #81858a}html{font-size:12px}.row_div{min-height:calc(4.5rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.row_div .col_div{width:50%;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.row_div .label{width:calc(16.6666666667rem / var(--scale));min-width:calc(16.6666666667rem / var(--scale));padding:0 calc(2rem / var(--scale));color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:500;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.25rem / var(--scale))}.row_div .label sup{top:calc(-.1666666667rem / var(--scale))}.row_div .field{padding:calc(.6666666667rem / var(--scale)) calc(2rem / var(--scale));flex-grow:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:start;flex-wrap:nowrap;gap:\"\";color:var(--textPrimary);font-size:var(--fs-16);line-height:140%;font-weight:400}.row_div .field li{list-style:disc;line-height:calc(2.6666666667rem / var(--scale));margin-left:calc(1.5rem / var(--scale))}textarea,input,.ordered_textarea{color:var(--textPrimary)}.errorField{flex-direction:column;align-items:start}.errorField .error{max-width:calc(37.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:start;flex-wrap:nowrap;gap:0}.errorField .error i-feather[name=info]{padding-right:calc(.3333333333rem / var(--scale));display:flex;stroke:var(--error-red);width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}.errorField textarea,.errorField input,.errorField .ordered_textarea{color:var(--textPrimary);border:calc(.0833333333rem / var(--scale)) solid var(--error-red)}.errorField .error{padding-top:calc(.6666666667rem / var(--scale));color:var(--error-red);font-size:var(--fs-12);line-height:140%;font-weight:400}sup{color:var(--error-red)}input::placeholder,textarea::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:400}textarea{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;min-height:calc(9rem / var(--scale));resize:none}input{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;height:calc(4.5rem / var(--scale))}input.disable{background-color:var(--blue-50);pointer-events:none}.ordered_textarea{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;list-style:disc;min-height:calc(9rem / var(--scale))}.ordered_textarea ul{padding-left:calc(2.6666666667rem / var(--scale));outline:none}.ordered_textarea ul.editable-div{min-height:calc(6rem / var(--scale));max-height:calc(9.3333333333rem / var(--scale));overflow:auto}.ordered_textarea ul li{margin-left:calc(1.75rem / var(--scale));list-style:disc;color:var(--textPrimary);font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400}.custom_radio{display:inline-flex;align-items:center;min-width:calc(18.5833333333rem / var(--scale))}.custom_radio .name{color:var(--neutral-600);font-size:var(--fs-16);line-height:140%;font-weight:400}.custom_radio.disabled .name{color:var(--textPrimary);font-size:var(--fs-16);line-height:140%;font-weight:400}.radio_mark{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));border:calc(.125rem / var(--scale)) solid var(--border);border-radius:50%;margin-right:calc(.6666666667rem / var(--scale));position:relative;background-color:var(--white)}.radio_mark:after{content:\"\";width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));background:var(--blue-700);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .2s}.dob_age_field{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));width:100%;height:calc(4.5rem / var(--scale));background-color:var(--blue-50);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.dob_age_field .dob,.dob_age_field .age{font-size:var(--fs-16);line-height:140%;font-weight:400;color:var(--textSecondary)}.dob_age_field .age{padding-left:calc(.8333333333rem / var(--scale))}.dob_age_field .dob{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:50%;height:100%;padding-right:calc(.8333333333rem / var(--scale));border-right:calc(.0833333333rem / var(--scale)) solid var(--border)}.dob_age_field .dob img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.date{position:relative;width:100%}.date img{position:absolute;right:calc(1.3333333333rem / var(--scale));top:calc(1.25rem / var(--scale))}input[type=checkbox]{margin-right:calc(.6666666667rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale))}ol li{list-style:auto!important}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Rethink}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.tableArea{width:100%;border-radius:calc(1.3333333333rem / var(--scale))}.none{display:none}.tableArea .table_wrapper table{border-collapse:collapse;width:100%;border-radius:calc(.3333333333rem / var(--scale));position:relative;z-index:1;background-color:var(--white)}thead .checkbox_section{min-width:calc(3.8333333333rem / var(--scale))!important;width:calc(3.8333333333rem / var(--scale))}tbody{background-color:var(--white)}tbody tr{overflow:visible}tbody tr:last-child:not(:first-child) ::ng-deep .see_more_data{top:calc(-3.3333333333rem / var(--scale))}tbody td{overflow:visible;position:relative;font-size:var(--fs-16);line-height:140%;font-weight:400;color:var(--textPrimary);min-width:calc(11.6666666667rem / var(--scale));max-width:calc(29.1666666667rem / var(--scale));padding-block:calc(.5rem / var(--scale))}tbody td .tooltip_container{max-width:calc(100% - 2.5rem / var(--scale));height:auto;position:absolute;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);z-index:100;display:none;border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));white-space:normal;word-wrap:break-word;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}tbody td:hover .tooltip_container{display:block}tbody td:last-child ::ng-deep .see_more_data{right:0!important}.tableArea .table_wrapper table thead tr{height:calc(4.5rem / var(--scale));color:var(--textPrimary)}.tableArea .table_wrapper table thead tr img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea .table_wrapper table thead tr .theading{height:calc(2.25rem / var(--scale))}.tableArea .table_wrapper table thead tr .headerName{text-wrap:nowrap;padding-left:0}.tableArea .table_wrapper table thead tr .three_dot{flex-grow:1;margin:0 calc(.3333333333rem / var(--scale)) 0 0;display:flex;flex-direction:row;justify-content:end;align-items:center;flex-wrap:nowrap;gap:0}.tableArea .table_wrapper table thead tr .three_dot img{cursor:pointer}.tableArea .table_wrapper table thead tr th{flex-shrink:0;background-color:var(--theadBg)}.tableArea .table_wrapper table thead tr th:hover .none{display:block}.tableArea .table_wrapper table thead tr th:hover .up,.tableArea .table_wrapper table thead tr th:hover .down{display:none}.tableArea .table_wrapper table tbody tr{height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:400;border-top:calc(.0833333333rem / var(--scale)) solid var(--tableBorder);transition:all .3s ease-in-out}.tableArea .table_wrapper table tbody tr.urgent{background-color:var(--red-10)}.tableArea .table_wrapper table tbody tr.important{background-color:var(--orange-10)}.tableArea .table_wrapper table tbody tr.disable{opacity:.4;pointer-events:none}.tableArea .table_wrapper table tbody tr.outline{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr:hover{background-color:var(--pink-10)}.tableArea .table_wrapper table tbody tr td.action{cursor:pointer}.tableArea .table_wrapper table tbody tr td.action span{text-decoration:underline}.tableArea .table_wrapper table tbody tr td.action:hover{border-left:calc(.0833333333rem / var(--scale)) solid var(--blue-700);border-right:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr td.action:hover span{color:var(--blue-700)}.tableArea .table_wrapper table tbody tr td .ellipsis{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(25rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale))}.tableArea .table_wrapper table tbody tr.td_80{height:calc(6.6666666667rem / var(--scale))}.tableArea .table_wrapper table td,.tableArea .table_wrapper table th{text-align:left;padding-left:calc(1.1666666667rem / var(--scale));line-height:1}.thead-img{position:relative}.swap-img{position:absolute;left:calc(.6666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.header-content{position:relative;display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0}.header-content .filtering_container{width:calc(20rem / var(--scale));max-height:calc(23.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);position:absolute;z-index:2;right:0;top:calc(2.3333333333rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:nowrap;gap:\"\"}.header-content .filtering_container .filter{height:calc(3.3333333333rem / var(--scale));color:var(--neutral-900);padding:calc(.6666666667rem / var(--scale)) calc(1rem / var(--scale));border:none;width:100%;background-color:var(--white);display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.header-content .filtering_container .filter.top_border{border-top:calc(.0833333333rem / var(--scale)) solid var(--neutral-100)}.tableArea .table_wrapper .headerName ul,.tableArea .table_wrapper .headerName-icon ul{display:flex}.tableArea .table_wrapper table ul{list-style-type:none;padding:0;margin-bottom:0}.tableArea .table_wrapper table ul li{height:calc(.3333333333rem / var(--scale));font-size:var(--fs-14);list-style-type:none}.tableArea .table_wrapper table .sorting_up,.tableArea .table_wrapper table .sorting_down{width:calc(.5833333333rem / var(--scale));height:calc(.3333333333rem / var(--scale))}.tableArea .table_wrapper .headerName,.tableArea .table_wrapper .headerName-icon{margin-left:calc(.5rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--textPrimary70);height:-webkit-fill-available}.pagination_main{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;height:calc(5.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale))}.pagination_main .pagination_form i-feather{font-weight:600;color:var(--neutral-600)}.pagination_main span{color:var(--textSecondary);font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}.pagination_main i-feather{display:flex;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));color:var(--neutral-600)}.pagination_main .input_style{width:calc(4rem / var(--scale));height:calc(1.6666666667rem / var(--scale));font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));color:var(--neutral-600);text-align:center;margin:0 calc(.5rem / var(--scale));outline:none}.pagination_main .input_style option{font-size:1rem}.pagination_main .input_style.right{width:calc(3.3333333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;margin:0;color:var(--textPrimary);padding:0}.pagination_main .input_style.left{background-color:var(--pagination-bg);color:var(--blue-700);border:none}.pagination_main .outlined_btn{background:transparent;border:solid calc(.0833333333rem / var(--scale)) var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);color:var(--btn-outline)}.pagination_main .prev_btn,.pagination_main .next_btn{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;padding:0;min-width:calc(1.6666666667rem / var(--scale));width:calc(2.6666666667rem / var(--scale));height:calc(2.6666666667rem / var(--scale))}.pagination_main .disable_btn{background-color:var(--blue-200);pointer-events:none;color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--blue-200)}.pagination_main .disable_btn i-feather{color:var(--white)}.table_wrapper{overflow:auto;height:auto;min-height:calc(16.6666666667rem / var(--scale));max-height:calc(66.6666666667rem / var(--scale));border-top-left-radius:calc(1.3333333333rem / var(--scale));border-top-right-radius:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--tableBorder)}.data-table-td .td_wrapper{height:100%;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale))}.pagination_main .input_style.left{appearance:none;padding-right:calc(1rem / var(--scale));background-position:80% 50%;width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;border-radius:calc(.6666666667rem / var(--scale))}.data-table-td{background-color:var(--blue-50);font-size:var(--fs-16)}.data-table-td i-feather{background-color:var(--white);border-radius:calc(.25rem / var(--scale));box-shadow:0 calc(.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) 0 #00000014;color:var(--neutral-500)}.data-table-td span{vertical-align:middle}.setting-options{position:absolute;right:0;background:var(--white);z-index:2;box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);max-height:calc(37.3333333333rem / var(--scale));width:calc(20.8333333333rem / var(--scale));overflow:auto;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.column-item,.column-header{margin-bottom:calc(1.6666666667rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600}.column-item{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.column-item input[type=checkbox]{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));margin:0;border-radius:var(--fs-6)}.column-item:last-child{margin-bottom:0}.disabled_col{pointer-events:none;background-color:var(--neutral-50)}.entries_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}.tableArea .table_wrapper table th:not(:last-child) .right .line{display:block;border-left:calc(.1666666667rem / var(--scale)) solid var(--grey-50);height:calc(2rem / var(--scale))}.sticky-top{top:calc(-.0833333333rem / var(--scale))}.thead-img .theading .left{gap:calc(.6666666667rem / var(--scale))}.ms-1.headerName-icon{min-width:calc(1.5rem / var(--scale))}.custom_radio{display:inline-flex;align-items:center;min-width:calc(1.6666666667rem / var(--scale))!important}.custom_radio .name{color:var(--neutral-600);font-size:var(--fs-20);line-height:calc(2rem / var(--scale));font-weight:400}.custom_radio.disabled{pointer-events:none}.custom_radio.disabled .radio_mark{background-color:var(--neutral-100);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.custom_radio.disabled .name{color:var(--neutral-300)}.custom_radio .name{padding-right:calc(1.9166666667rem / var(--scale))}.custom_radio input[type=radio]{display:none}.radio_mark{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));border:calc(.125rem / var(--scale)) solid var(--blue-700);border-radius:50%;margin-right:calc(.6666666667rem / var(--scale));position:relative;background-color:var(--white)}.custom_radio input[type=radio]:checked+.radio_mark{background-color:var(--white)}.radio_mark:after{content:\"\";width:calc(.6666666667rem / var(--scale));height:calc(.6666666667rem / var(--scale));background:var(--blue-700);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .2s}.custom_radio input[type=radio]:checked+.radio_mark:after{opacity:1}.pagination_form{gap:calc(1.3333333333rem / var(--scale))}.pagination_select{position:relative}.select_dropdown{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--blue-50);border-radius:calc(.6666666667rem / var(--scale));margin:0 calc(.5rem / var(--scale))}.select_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--blue-700)}.select_option{position:absolute;top:auto;bottom:100%;display:flex;flex-direction:column;background-color:var(--white);box-shadow:0 calc(-.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) calc(0rem / var(--scale)) var(--dropdown-shadow);border-radius:calc(.6666666667rem / var(--scale));left:calc(.5rem / var(--scale));z-index:10;padding:calc(.1666666667rem / var(--scale)) 0;margin:calc(.3333333333rem / var(--scale)) 0}.select_option span{width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary);padding-left:calc(1rem / var(--scale))}.chevron_img{color:var(--neutral-600);width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.chevron_img img{width:calc(.8333333333rem / var(--scale))}.moving_column{width:calc(15.1666666667rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.5rem / var(--scale));background-color:var(--white);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) calc(.0833333333rem / var(--scale)) var(--filter-shadow);padding-left:calc(1rem / var(--scale));position:absolute;top:69%;left:10%;cursor:grab}.moving_column .column_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.openClose_dropdown{background-color:var(--neutral-50);width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));cursor:pointer;border-radius:calc(.1666666667rem / var(--scale));display:flex}.openClose_dropdown i-feather{transform-origin:center;transition:.3s;display:flex;stroke:var(--neutral-600)}.openClose_dropdown i-feather.rotate{transform:rotate(90deg)}.cell-value{line-height:140%}.ellipsis.more_data_wrapper{position:relative;cursor:default}.ellipsis.more_data_wrapper:hover+.see_more_data{display:flex}:host::ng-deep .see_more_data{position:absolute;width:calc(19.0833333333rem / var(--scale));height:\"\";background-color:var(--blue-50);border-radius:calc(1rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--border);box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--dropdown-shadow);padding:calc(.6666666667rem / var(--scale)) 0;display:none;flex-direction:column;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;z-index:10;top:calc(3.3333333333rem / var(--scale))}:host::ng-deep .see_more_data .item{width:100%;height:\"\";min-height:calc(3rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));color:var(--grey-100);font-size:var(--fs-16);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}:host::ng-deep .see_more_data .item .desc{text-wrap:wrap;word-break:break-all}.cell-value.ellipsis:hover .see_more_data{display:flex}.flex-center{display:flex;align-items:center}.cursor-pointer{cursor:pointer}.d-none{display:none}.sort_icons{display:flex;flex-direction:column;gap:calc(.4166666667rem / var(--scale))}.filters{position:relative;display:inline-block;margin-left:6px;cursor:pointer}.filter-icon{width:14px;opacity:.6}.filter-icon-active{background-color:#0ff}.filter-icon:hover{opacity:1}.filter-popup{position:absolute;top:20px;left:0;width:160px;background:#fff;border:1px solid #ddd;padding:8px;box-shadow:0 3px 8px #00000026;border-radius:4px;z-index:99}.filter-popup select,.filter-popup input{width:100%;margin-bottom:8px;padding:4px;font-size:13px}.reset-btn{width:100%;padding:4px;font-size:12px}.set-options{max-height:180px;overflow-y:auto;padding:6px 8px;border:1px solid #ddd;border-radius:6px;background:#fff;font-size:13px}.set-options label{display:flex;align-items:center;gap:6px;padding:6px 4px;cursor:pointer;border-radius:4px}.set-options label:hover{background:#f3f3f3}.set-options input[type=checkbox]{width:14px;height:14px;cursor:pointer}.set-options label:first-child{font-weight:600;border-bottom:1px solid #e5e5e5;margin-bottom:6px;padding-bottom:8px}.th_wraper{display:flex;justify-content:space-between;height:32px;align-items:center;padding:0 12px}.three-dots{cursor:pointer;padding:2px 4px;font-size:13px;-webkit-user-select:none;user-select:none}.three-dots:hover{background:#eee;border-radius:4px}.column-menu{position:absolute;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:9999;padding:6px 0;min-width:160px}.column-menu ul{margin:0;padding:0;list-style:none}.column-menu li{display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;font-size:14px}.column-menu li:hover{background:#f3f3f3}.column-menu hr{border:none;border-top:1px solid #eee;margin:4px 0}.filter_three_dot_wrapper{display:flex;justify-content:space-between;align-items:center}.logic-row{display:flex;align-items:center;gap:16px;margin:8px 0 6px 4px}.logic-item{display:flex;align-items:center;gap:6px;font-size:13px;color:#444}.logic-item input[type=radio]{width:14px;height:14px;accent-color:#2b7cff;cursor:pointer}.logic-item span{cursor:pointer;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OutsideClickDirective, selector: "[appOutsideClick]", outputs: ["clickOutside"] }, { kind: "directive", type: RendererParserDirective, selector: "[appRendererParser]", inputs: ["rowParam", "col", "api", "currentValue"] }, { kind: "pipe", type: AddClassPipe, name: "addClass" }] });
|
|
2075
|
+
onMouseEnterHeader(index) {
|
|
2076
|
+
this.showMoveIcon[index] = true;
|
|
2077
|
+
}
|
|
2078
|
+
onMouseLeaveHeader(index) {
|
|
2079
|
+
this.showMoveIcon[index] = false;
|
|
2080
|
+
}
|
|
2081
|
+
enableColumnDrag(event, index) {
|
|
2082
|
+
event.stopPropagation();
|
|
2083
|
+
this.columnDraggable[index] = true;
|
|
2084
|
+
}
|
|
2085
|
+
disableColumnDrag(event, index) {
|
|
2086
|
+
event.stopPropagation();
|
|
2087
|
+
this.columnDraggable[index] = false;
|
|
2088
|
+
}
|
|
2089
|
+
dateTimeSelected(date) {
|
|
2090
|
+
this.applyAllFilters();
|
|
2091
|
+
}
|
|
2092
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2093
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CatsDataGridComponent, isStandalone: true, selector: "cats-data-grid", inputs: { tableOptions: "tableOptions", totalRecords: "totalRecords", sortingRequired: "sortingRequired", checkBoxSelection: "checkBoxSelection", checkboxSelectionType: "checkboxSelectionType", rowData: "rowData", colDefs: "colDefs", paginationRequired: "paginationRequired", selectedRowEmpty: "selectedRowEmpty", filterRequired: "filterRequired", threeDotsMenuRequired: "threeDotsMenuRequired", height: "height", groupByRequired: "groupByRequired", pageSizeList: "pageSizeList" }, outputs: { onPaginationChange: "onPaginationChange", onCheckboxSelection: "onCheckboxSelection", onScrollEmitter: "onScrollEmitter", filter: "filter" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tableArea\">\r\n @if(groupByRequired){\r\n <!-- Group Panel -->\r\n <div\r\n class=\"group_panel\"\r\n (dragover)=\"onGroupDragOver($event)\"\r\n (drop)=\"onGroupDrop($event)\"\r\n >\r\n <img alt=\"\" src=\"images/t-data-pipeline.svg\" class=\"icon\" />\r\n @for(g of activeGroups; track $index){\r\n <div\r\n class=\"group_tag\"\r\n draggable=\"true\"\r\n (dragstart)=\"onGroupDragStart($event, $index)\"\r\n (dragover)=\"onActiveDragOver($event, $index)\"\r\n (drop)=\"onActiveGroupDrop($event, $index)\"\r\n >\r\n <img src=\"images/t-gripper.svg\" alt=\"\" />\r\n <span>{{ g.headerName }}</span>\r\n <button class=\"remove_tag\" (click)=\"removeGroup(g, $index)\">\r\n <img src=\"images/t-x.svg\" alt=\"\" />\r\n </button>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" class=\"divider\" />\r\n } @if(activeGroups.length === 0){\r\n <div class=\"group_placeholder\">Drag here to set row groups</div>\r\n }\r\n </div>\r\n }\r\n <div\r\n class=\"table_wrapper\"\r\n id=\"container_scroll\"\r\n #parent\r\n (scroll)=\"infinityScroll($event)\"\r\n [ngStyle]=\"{ height: height + 'px' }\"\r\n >\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead class=\"sticky-top\">\r\n <tr>\r\n @if (checkBoxSelection && checkboxSelectionType == 'multiple') {\r\n <th style=\"width: 50px\">\r\n <span class=\"checkbox_container\"\r\n ><input\r\n class=\"pointer\"\r\n type=\"checkbox\"\r\n name=\"\"\r\n id=\"\"\r\n [checked]=\"checkAllSelected()\"\r\n [indeterminate]=\"checkInterminate()\"\r\n (change)=\"onHeaderCheckboxChange($event)\"\r\n /></span>\r\n </th>\r\n\r\n } @else{\r\n <th></th>\r\n } @if(activeGroups.length > 0){\r\n <th class=\"active_group\">\r\n <div class=\"th_wraper\">\r\n <div class=\"text_wrapper\">\r\n <span class=\"ellipsis headerName\">Group</span>\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <div class=\"three-dots\">\r\n <img src=\"images/t-more-vertical.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n } @for (col of colDefs; track col.colId) {\r\n <th\r\n [ngStyle]=\"getStyle(col, 'action')\"\r\n [ngClass]=\"{ 'drag-over': dragOverIndex === $index }\"\r\n (dragover)=\"onDragOver($event, $index)\"\r\n (drop)=\"onDrop($event, $index)\"\r\n (mouseenter)=\"onMouseEnterHeader($index)\"\r\n (mouseleave)=\"onMouseLeaveHeader($index)\"\r\n >\r\n <div class=\"th_wraper\">\r\n <div\r\n class=\"text_wrapper\"\r\n [ngStyle]=\"getStyle(col, 'action')\"\r\n (click)=\"onSortingRowData($index, col)\"\r\n >\r\n @if(showMoveIcon[$index] && !col.isAction){\r\n <img\r\n src=\"images/t-move.svg\"\r\n class=\"move-icon\"\r\n [draggable]=\"!isResizing || columnDraggable[$index]\"\r\n (dragstart)=\"onDragStart($event, $index)\"\r\n (dragend)=\"onDragEnd()\"\r\n (mouseenter)=\"enableColumnDrag($event, $index)\"\r\n (mouseleave)=\"disableColumnDrag($event, $index)\"\r\n />\r\n\r\n }\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n\r\n @if (sortingRequired && sortingColumnIndex == $index &&\r\n col?.sortable && !col.isAction) {\r\n <span class=\"sorting_icon\">\r\n @if(sortingType[$index]=== 'asc'){\r\n <img\r\n src=\"images/t-arrow-up.svg\"\r\n class=\"sorting_up\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n } @if(sortingType[$index]=== 'dsc'){\r\n <!-- <i class=\"fa fa-caret-down\" [ngClass]=\"sortingColumnIndex == $index && sortingType == 'dsc' ? 'muted_sort' : ''\"></i> -->\r\n <img\r\n src=\"images/t-arrow-down.svg\"\r\n class=\"sorting_down\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n }\r\n </span>\r\n\r\n }\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <!-- Column Filters Logic-->\r\n @if(filterRequired && col.filterable){\r\n <div\r\n #trigger\r\n class=\"filters\"\r\n (click)=\"toggleFilter(col, $index, $event)\"\r\n >\r\n @if(activeFilters.has(col.fieldName)){\r\n <img\r\n src=\"images/t-filter-applied.svg\"\r\n class=\"filter-icon\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n }@else {\r\n <img\r\n src=\"images/t-filter.svg\"\r\n class=\"filter-icon\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n } @if (activeFilterIndex === $index) {\r\n <div\r\n adaptivePosition\r\n [trigger]=\"trigger\"\r\n [parentContainer]=\"parent\"\r\n [matchWidth]=\"false\"\r\n class=\"filter_wrapper\"\r\n id=\"filter_wrapper-{{ $index }}\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <!-- Text Filter -->\r\n @if(col.filterType === 'text'){\r\n\r\n <lib-common-input\r\n [options]=\"filterOptions\"\r\n [selectedValue]=\"col.textFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.textFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n @if(col.textFilters[0].filterValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"filterOptions\"\r\n [selectedValue]=\"col.textFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.textFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n } }\r\n\r\n <!-- Number Filter -->\r\n @if(col.filterType === 'number'){\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.numberFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.numberFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <!-- <input\r\n type=\"number\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"number\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n\r\n @if(col.numberFilters[0].numberValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.numberFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.numberFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n } }\r\n\r\n <!-- DATE FILTER -->\r\n @if(col.filterType === 'date'){\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.dateFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.dateFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <!-- <input\r\n type=\"date\"\r\n [(ngModel)]=\"col.dateFilters[0].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n /> -->\r\n <lib-common-calendar\r\n [dateConfig]=\"dateConfig\"\r\n [(ngModel)]=\"col.dateFilters[0].dateValue\"\r\n (dateTimeSelected)=\"dateTimeSelected($event)\"\r\n ></lib-common-calendar>\r\n\r\n @if(col.dateFilters[0].dateValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.dateFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.dateFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <lib-common-calendar\r\n [dateConfig]=\"dateConfig\"\r\n [(ngModel)]=\"col.dateFilters[1].dateValue\"\r\n (dateTimeSelected)=\"dateTimeSelected($event)\"\r\n ></lib-common-calendar>\r\n } }\r\n\r\n <!-- SET FILTER (CHECKBOX LIST) -->\r\n @if(col.filterType === 'set'){\r\n <!-- <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n /> -->\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"set_option_details\">\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelected(col)\"\r\n (change)=\"toggleSelectAll(col, $event)\"\r\n />\r\n (Select All)\r\n </label>\r\n <div class=\"set_options\" id=\"container_scroll\">\r\n @for(opt of col.filteredOptions; track $index){\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"col.selectedValues.has(opt)\"\r\n (change)=\"toggleSetOption(col, opt, $event)\"\r\n />\r\n {{ opt }}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"filter_btn\">\r\n <button\r\n class=\"reset_btn\"\r\n type=\"button\"\r\n (click)=\"resetFilter(col)\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n <div #triggerColMenu>\r\n @if(threeDotsMenuRequired && col.columnAction){\r\n\r\n <div\r\n class=\"three-dots\"\r\n (click)=\"openMenu($event, col, $index)\"\r\n >\r\n <img\r\n src=\"images/t-more-vertical.svg\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n </div>\r\n }\r\n </div>\r\n @if(!col.isAction){\r\n <span\r\n class=\"resize-handle\"\r\n (mousedown)=\"startResize($event, $index)\"\r\n >\r\n |\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- popup open -->\r\n @if(menuVisible[$index]){\r\n <div\r\n class=\"dropdown_wrapper\"\r\n adaptivePosition\r\n [trigger]=\"triggerColMenu\"\r\n [parentContainer]=\"parent\"\r\n [matchWidth]=\"false\"\r\n [isColumnActionMenu]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <div class=\"right_click_dropdown\" id=\"container_scroll\">\r\n @if(sortingType[$index] === 'dsc' || sortingType[$index] ===\r\n ''){\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"onSort(col, 'asc', $index)\"\r\n >\r\n <div class=\"left_item\">\r\n <img\r\n src=\"images/arrow-up.svg\"\r\n class=\"sorting_up\"\r\n [ngClass]=\"{ disable: !col.sortable }\"\r\n />\r\n <span class=\"text\">Sort Ascending</span>\r\n </div>\r\n </div>\r\n } @if(sortingType[$index] === 'asc' || sortingType[$index] ===\r\n ''){\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"onSort(col, 'dsc', $index)\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/arrow-down.svg\" />\r\n <span class=\"text\">Sort Descending</span>\r\n </div>\r\n </div>\r\n } @if(sortingType[$index] === 'asc' || sortingType[$index] ===\r\n 'dsc'){\r\n <div class=\"right_click_item\" (click)=\"onSort(col, '', $index)\">\r\n <div class=\"left_item\">\r\n <img src=\"images/trash-2.svg\" />\r\n <span class=\"text\">Clear Sort</span>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"divder\"></div>\r\n\r\n <div\r\n class=\"right_click_item\"\r\n (mouseenter)=\"showPinActions()\"\r\n (mouseleave)=\"hidePinActions()\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">Pin Column</span>\r\n </div>\r\n <div class=\"right_item\">\r\n <img src=\"images/chevron-right.svg\" />\r\n @if(showPin){\r\n <div class=\"second_dropdown\">\r\n <div\r\n (click)=\"pinColumn(col, $index, 'none')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if((pinActionClicked[col.colId]?? 'none') ===\r\n 'none'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">No Pin</span>\r\n </div>\r\n </div>\r\n <div\r\n (click)=\"pinColumn(col, $index, 'left')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if(pinActionClicked[col.colId] === 'left'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">Pin Left</span>\r\n </div>\r\n </div>\r\n <div\r\n (click)=\"pinColumn(col, $index, 'right')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if(pinActionClicked[col.colId] === 'right'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">Pin Right</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <div\r\n class=\"right_click_item\"\r\n (click)=\"pinColumn(col, $index, 'left')\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">{{\r\n col.leftPinned ? \"Unpin Left Column\" : \"Pin Column Left\"\r\n }}</span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"pinColumn(col, $index, 'right')\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">\r\n {{\r\n col.rightPinned\r\n ? \"Unpin Right Column\"\r\n : \"Pin Column Right\"\r\n }}\r\n </span>\r\n </div>\r\n <div class=\"right_item\">\r\n <img src=\"images/arrow-right.svg\" alt=\"\" />\r\n </div>\r\n </div> -->\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Autosize This Column</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Autosize All Columns</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div\r\n class=\"left_item\"\r\n (click)=\"groupByColumnAction(col, $index)\"\r\n >\r\n <img src=\"images/t-group-by-name.svg\" alt=\"\" />\r\n <span class=\"text\">Group by {{ col.headerName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/t-choose-column.svg\" alt=\"\" />\r\n <span class=\"text\">Choose Columns</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Reset Columns</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @if(groupedResult && groupedResult.length > 0){ @for(group of\r\n groupedResult; track group.key){\r\n <tr (click)=\"toggleGroup(group)\">\r\n <td\r\n class=\"group-cell\"\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n >\r\n <span class=\"group-toggle\">\r\n <img\r\n src=\"images/{{\r\n group.expanded ? 'chevron-down.svg' : 'chevron-right.svg'\r\n }}\"\r\n />\r\n {{ group.key }} ({{ group.children.length }})\r\n </span>\r\n </td>\r\n </tr>\r\n\r\n @if(group.expanded){\r\n <!-- CASE 1: CHILDREN ARE MORE GROUPS -->\r\n @if (group.children[0]?.children) { @for (child of group.children; track\r\n child.key) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: child,\r\n colDefs: colDefs,\r\n checkBoxSelection: checkBoxSelection,\r\n activeGroups: activeGroups,\r\n level: 1\r\n }\"\r\n ></ng-container>\r\n } }\r\n\r\n <!-- CASE 2: CHILDREN ARE RAW ROWS -->\r\n @if (!group.children[0]?.children) { @for (row of group.children; track\r\n row.rowId) {\r\n <tr [ngClass]=\"row | addClass : tableOptions\">\r\n <!-- Checkbox column if any -->\r\n @if (checkBoxSelection) {\r\n <td>\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"row.isSelected\"\r\n /></span>\r\n </td>\r\n } @if (activeGroups.length > 0) {\r\n <td class=\"group-placeholder\"></td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track col.colId) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n <!-- {{ row[col.fieldName] }} -->\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(row, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(row, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"row\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"row[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } } } } } @else{ @for (data of rowData; track data.rowId) {\r\n <tr [ngClass]=\"data | addClass : tableOptions\">\r\n @if (checkBoxSelection) {\r\n <td style=\"min-width: 50px\">\r\n @if (checkboxSelectionType=='multiple') {\r\n <span class=\"checkbox_container\"\r\n ><input\r\n type=\"checkbox\"\r\n class=\"pointer\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n /></span>\r\n\r\n }@else{\r\n <span class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n />\r\n <label [for]=\"data.rowId\"></label>\r\n </span>\r\n\r\n }\r\n </td>\r\n } @for (col of colDefs; track col.colId) {\r\n <td\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"[col?.addClass ? col.addClass(data) : '']\"\r\n >\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(data, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(data, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"data\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"data[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n <!-- Commented for later use -->\r\n <!-- <div class=\"tool_tip\">\r\n <span class=\"\"> {{ parseColValue(data, col.fieldName) }}aditya </span>\r\n </div> -->\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n >\r\n <div class=\"small_data\">\r\n @if (tableOptions?.noDataTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableOptions?.noDataTemplate\"\r\n ></ng-container>\r\n\r\n }@else{\r\n <!-- need to style it properly then we will add it -->\r\n <span>No Data To Show</span>\r\n\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n } }\r\n </tbody>\r\n\r\n <ng-template\r\n #groupTemplate\r\n let-node\r\n let-colDefs=\"colDefs\"\r\n let-checkBoxSelection=\"checkBoxSelection\"\r\n let-activeGroups=\"activeGroups\"\r\n let-level=\"level\"\r\n >\r\n <!-- GROUP HEADER -->\r\n <tr (click)=\"toggleGroup(node)\">\r\n <td\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n [style.paddingLeft.px]=\"level * 20\"\r\n class=\"group-cell\"\r\n >\r\n <span class=\"group-toggle\">\r\n <img\r\n src=\"images/{{\r\n node.expanded ? 'chevron-down.svg' : 'chevron-right.svg'\r\n }}\"\r\n />\r\n {{ node.key }} ({{ node.children.length }})\r\n </span>\r\n </td>\r\n </tr>\r\n\r\n <!-- CHILDREN -->\r\n @if (node.expanded) {\r\n\r\n <!-- CASE: more groups -->\r\n @if (node.children[0]?.children) { @for (child of node.children; track\r\n child.key) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: child,\r\n colDefs: colDefs,\r\n checkBoxSelection: checkBoxSelection,\r\n activeGroups: activeGroups,\r\n level: level + 1\r\n }\"\r\n >\r\n </ng-container>\r\n } }\r\n\r\n <!-- CASE: final rows -->\r\n @if (!node.children[0]?.children) { @for (row of node.children; track\r\n row.rowId) {\r\n\r\n <tr [ngClass]=\"row | addClass : tableOptions\">\r\n <!-- Checkbox column if any -->\r\n @if (checkBoxSelection) {\r\n <td>\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"row.isSelected\"\r\n /></span>\r\n </td>\r\n } @if (activeGroups.length > 0) {\r\n <td class=\"group-placeholder\"></td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track col.colId) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n <!-- {{ row[col.fieldName] }} -->\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(row, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(row, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"row\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"row[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } } }\r\n </ng-template>\r\n </table>\r\n </div>\r\n <!-- Table Wrapper Ends-->\r\n @if(paginationRequired){\r\n <div class=\"pagination_main\">\r\n <div class=\"entries_details\">\r\n <span>Showing</span>\r\n <div class=\"pagination_select\">\r\n <div\r\n class=\"select_dropdown pointer\"\r\n (click)=\"showPageSizeList = !showPageSizeList\"\r\n >\r\n <p class=\"select_text mb-0\">{{ pageDetails.pageSize }}</p>\r\n <span class=\"chevron_img\">\r\n <img src=\"images/chevron-down.svg\" class=\"pointer\" />\r\n </span>\r\n </div>\r\n @if(showPageSizeList){\r\n <div class=\"select_option\">\r\n @for(option of pageSizeList;track $index){\r\n <span\r\n class=\"pointer\"\r\n (click)=\"onPageSizeChanged(option); onClickOutside()\"\r\n >{{ option }}</span\r\n >\r\n }\r\n </div>\r\n }\r\n </div>\r\n <span\r\n >Rows | {{ totalRecords > 0 ? recordsToShow.min + 1 : 0 }} -\r\n {{\r\n recordsToShow.max > totalRecords ? totalRecords : recordsToShow.max\r\n }}\r\n of\r\n {{ totalRecords }} Entries</span\r\n >\r\n </div>\r\n <div class=\"pagination_form\">\r\n <!-- <span>Page</span> -->\r\n\r\n <button class=\"outlined_btn first_btn\" type=\"button\">\r\n <span> <img src=\"images/chevrons-left.svg\" alt=\"\" /> </span>\r\n </button>\r\n <button\r\n class=\"outlined_btn prev_btn\"\r\n [ngClass]=\"pageDetails.currentPage > 1 ? '' : 'disable_btn'\"\r\n type=\"button\"\r\n (click)=\"onBtPrevClick()\"\r\n >\r\n <span> <img src=\"images/chevron-left.svg\" alt=\"\" /> </span>\r\n </button>\r\n <div>\r\n <input\r\n class=\"input_style\"\r\n type=\"number\"\r\n [(ngModel)]=\"pageDetails.currentPage\"\r\n (change)=\"goToSelectedPage($event)\"\r\n name=\"\"\r\n id=\"\"\r\n />\r\n </div>\r\n <button\r\n class=\"outlined_btn next_btn\"\r\n type=\"button\"\r\n [ngClass]=\"\r\n pageDetails.currentPage < pageDetails.totalPages ? '' : 'disable_btn'\r\n \"\r\n (click)=\"onBtNextClick()\"\r\n >\r\n <span> <img src=\"images/chevron-right.svg\" alt=\"\" /> </span>\r\n </button>\r\n <!-- <span>of {{ pageDetails.totalPages }}</span> -->\r\n\r\n <button class=\"outlined_btn last_btn\" type=\"button\">\r\n <span> <img src=\"images/chevrons-right.svg\" alt=\"\" /> </span>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n <!-- Pagination Ends -->\r\n</div>\r\n\r\n<!-- cell right click code start here -->\r\n<div class=\"dropdown_wrapper d-none\">\r\n <div class=\"right_click_dropdown\">\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/scissors.svg\" />\r\n <span class=\"text\">Cut</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+X</span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+C</span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy with Headers</span>\r\n </div>\r\n <span class=\"right_item\"></span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy with Group Headers</span>\r\n </div>\r\n <span class=\"right_item\"></span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/clipboard.svg\" alt=\"\" />\r\n <span class=\"text\">Paste</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+V</span>\r\n </div>\r\n\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <img src=\"images/bar-chart.svg\" alt=\"\" />\r\n <span class=\"text\">Chart</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/download.svg\" alt=\"\" />\r\n <span class=\"text\">Export</span>\r\n </div>\r\n\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Chart section Start Here -->\r\n <div class=\"second_dropdown\">\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Column</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Bar</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Pie</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Line</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Area</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">XY(Scatter)</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Polar</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Stastical</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Hierarchical</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Specialized</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Funnel</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Combination</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Export Section start Here -->\r\n <div class=\"export_section d-none\">\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <img src=\"images/file.svg\" alt=\"\" />\r\n <span class=\"text\">CSV Report</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/file.svg\" alt=\"\" />\r\n <span class=\"text\">Excel Report</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Column Group Section Start Here -->\r\n <div class=\"third_dropdown\">\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Grouped</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Stacked</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">100% Stacked</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-50: #f7fafe;--blue-100: #eaf3fd;--blue-200: #dfecfc;--blue-300: #c8dff9;--blue-400: #92bff4;--blue-600: #2680ea;--blue-700: #1c60af;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #e1eee2;--green-400: #9bc69d;--green-600: #388e3c;--green-700: #2a6a2d;--red: #ff0000;--red-50: #fdf7f7;--red-100: #faeaea;--red-200: #f7dfdf;--red-300: #f0c9c9;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff9e7;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}#container_scroll::-webkit-scrollbar{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}#container_scroll::-webkit-scrollbar-track{background-color:var(--neutral-200);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-thumb{background-color:var(--neutral-500);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-corner{background:transparent}#container_scroll::-webkit-scrollbar-button{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-100);border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;display:none;background-repeat:no-repeat;background-position:center;background-size:calc(.8333333333rem / var(--scale))}#container_scroll::-webkit-scrollbar-button:hover{background-color:var(--neutral-300)}#container_scroll::-webkit-scrollbar-button:single-button:vertical:decrement{background-image:url(/images/chevron-up.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:vertical:increment{background-image:url(/images/chevron-down.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:decrement{background-image:url(/images/chevron-left.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:increment{background-image:url(/images/chevron-right.svg);display:block}sup{color:var(--error-red)}.radio_option{display:flex;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_option [type=radio]:not(:checked)+label:before,.radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background:var(--white)}.radio_option [type=radio]:checked,.radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_option [type=radio]:checked+label,.radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2rem / var(--scale));cursor:pointer;display:inline-block;color:var(--neutral-600);line-height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:checked+label:before{border:calc(.125rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_option [type=radio]:not(:checked)+label:before{border:calc(.125rem / var(--scale)) solid var(--neutral-200);border-radius:100%}.radio_option [type=radio]:checked+label:after,.radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.5rem / var(--scale));height:calc(.5rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.4166666667rem / var(--scale));left:calc(.4166666667rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}.checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.checkbox_container input[type=checkbox][disabled],.checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.checkbox_container input[type=checkbox][disabled]+span,.checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));min-width:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.0833333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background-size:auto;background-repeat:no-repeat;background-position:center}.checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/check-white.svg)}.checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--white)}.checkbox_container input[type=checkbox]:indeterminate:after{display:block;top:0;background-image:url(/images/minus-blue.svg)}.text_filter_section{position:relative;width:100%}.text_filter_section .single_select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--neutral-600);cursor:pointer}.text_filter_section .single_select_dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 1.6666666667rem / var(--scale));height:\"\"}.text_filter_section .single_select_dropdown .arrow_icon img{max-width:calc(1.6666666667rem / var(--scale))}.text_filter_section .dropdown_list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));width:100%;position:absolute;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(3.3333333333rem / var(--scale))}.text_filter_section .dropdown_list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.3333333333rem / var(--scale)) 0}.text_filter_section .dropdown_list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.text_filter_section .dropdown_list ul li{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));cursor:pointer;color:var(--neutral-600)}.text_filter_section .dropdown_list ul li:hover{background-color:var(--neutral-50)}.text_filter_section .dropdown_list ul li.disabled_option{opacity:.3;pointer-events:none}.search_input{position:relative;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--white);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.search_input input::placeholder{color:var(--neutral-500)}.switch_wrapper{display:flex}.switch_wrapper .switch{position:relative;display:inline-block;width:calc(2.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.switch_wrapper .switch input{display:none}.switch_wrapper .switch .slider{position:absolute;cursor:pointer;background-color:var(--neutral-100);border-radius:calc(1.3333333333rem / var(--scale));inset:0;transition:.3s}.switch_wrapper .switch .slider:before{content:\"\";position:absolute;width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));left:calc(.1666666667rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));background-color:var(--white);border-radius:50%;transition:.3s;box-shadow:0 calc(.0666666667rem / var(--scale)) calc(.2rem / var(--scale)) 0 var(--box-shadow)}.switch_wrapper .switch input:checked+.slider{background-color:var(--blue-600)}.switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1rem / var(--scale)))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch{width:calc(3.1666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1.5rem / var(--scale)))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.pointer,.cursor-pointer{cursor:pointer}.ellipsis,.textTruncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ellipsis.more_data_wrapper{position:relative;cursor:default}.ellipsis.more_data_wrapper:hover+.see_more_data{display:flex}:host::ng-deep .see_more_data{position:absolute;width:calc(26.4166666667rem / var(--scale));height:\"\";background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale)) 0 var(--box-shadow);display:none;flex-direction:column;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;z-index:14;padding:calc(.5rem / var(--scale)) 0}:host::ng-deep .see_more_data .item{width:100%;height:\"\";min-height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}:host::ng-deep .see_more_data .item .desc{text-wrap:wrap;word-break:break-all}.tableArea{width:100%;border-radius:calc(1.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}.tableArea.big .table_wrapper table thead tr,.tableArea.big .table_wrapper table tbody tr{height:calc(4.6666666667rem / var(--scale))}.tableArea .table_wrapper{overflow:auto;height:auto;min-height:calc(16.6666666667rem / var(--scale));max-height:calc(66.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.tableArea .table_wrapper table{border-collapse:collapse;width:100%;border-radius:calc(.3333333333rem / var(--scale));position:relative;z-index:1;background-color:var(--white)}.tableArea .table_wrapper table img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea .table_wrapper table .sticky-top{top:0;position:sticky;z-index:13}.tableArea .table_wrapper table td,.tableArea .table_wrapper table th{font-size:var(--fs-14);line-height:140%;font-weight:400;color:var(--neutral-500);min-width:calc(11.6666666667rem / var(--scale));max-width:calc(80rem / var(--scale));text-align:left;line-height:1}.tableArea .table_wrapper table td .ellipsis,.tableArea .table_wrapper table th .ellipsis{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(25rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale))}.tableArea .table_wrapper table thead .checkbox_section{min-width:calc(3.8333333333rem / var(--scale))!important;width:calc(3.8333333333rem / var(--scale))}.tableArea .table_wrapper table thead tr{height:calc(3.3333333333rem / var(--scale));color:var(--neutral-500)}.tableArea .table_wrapper table thead tr .headerName{text-wrap:nowrap;padding-left:0;cursor:pointer}.tableArea .table_wrapper table thead th{position:relative;padding:0 0 0 calc(.6666666667rem / var(--scale));background-color:var(--neutral-50)}.tableArea .table_wrapper table thead th:last-child .th_wraper{border:0}.tableArea .table_wrapper table thead th:hover .none{display:block}.tableArea .table_wrapper table thead th:hover .up,.tableArea .table_wrapper table thead th:hover .down{display:none}.tableArea .table_wrapper table tbody{background-color:var(--white)}.tableArea .table_wrapper table tbody tr{overflow:visible;height:calc(3.3333333333rem / var(--scale));border-top:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);transition:all .3s ease-in-out}.tableArea .table_wrapper table tbody tr.urgent{background-color:var(--red-10)}.tableArea .table_wrapper table tbody tr.important{background-color:var(--orange-10)}.tableArea .table_wrapper table tbody tr.disable{opacity:.4;pointer-events:none}.tableArea .table_wrapper table tbody tr.outline{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr:hover{background-color:var(--blue-50)}.tableArea .table_wrapper table tbody tr:last-child:not(:first-child) ::ng-deep .see_more_data{top:calc(-3.3333333333rem / var(--scale))}.tableArea .table_wrapper table tbody tr td{overflow:visible;position:relative;padding:calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale))}.tableArea .table_wrapper table tbody tr td.action{cursor:pointer}.tableArea .table_wrapper table tbody tr td.action span{text-decoration:underline}.tableArea .table_wrapper table tbody tr td.action:hover{border-left:calc(.0833333333rem / var(--scale)) solid var(--blue-700);border-right:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr td.action:hover span{color:var(--blue-700)}.th_wraper{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));height:calc(1.3333333333rem / var(--scale));border-right:calc(.1666666667rem / var(--scale)) solid var(--neutral-200)}.th_wraper .text_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));white-space:nowrap}.th_wraper .text_wrapper img{min-width:calc(1.3333333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.th_wraper .text_wrapper .move-icon{margin-right:calc(.3333333333rem / var(--scale));transition:opacity .5s ease;cursor:grab}.th_wraper .filter_three_dot_wrapper{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper img{min-width:calc(1.5rem / var(--scale));width:calc(1.5rem / var(--scale));height:calc(1.5rem / var(--scale));cursor:pointer}.th_wraper .filter_three_dot_wrapper .filters{position:relative;display:inline-block;cursor:pointer}.th_wraper .filter_three_dot_wrapper .filters:hover{background:var(--neutral-200);border-radius:calc(.1666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));position:absolute;top:20px;left:0;width:calc(18.8333333333rem / var(--scale));background:var(--neutral-50);padding:calc(1rem / var(--scale));box-shadow:0 0 calc(1.6666666667rem / var(--scale)) 0 #00000029;z-index:99;display:flex;flex-direction:column;justify-content:center;align-items:start;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper lib-common-input{width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .logic-row{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(3.3333333333rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .set_option_details{width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .set_option_details .set_options{display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));margin-top:calc(.6666666667rem / var(--scale));width:100%;max-height:calc(10.8333333333rem / var(--scale));overflow-y:auto}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn{display:flex;flex-direction:row;justify-content:end;align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn .reset_btn{width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;font-family:inherit;transition:all .2s ease;-webkit-user-select:none;user-select:none;background-color:var(--white);padding:calc(.3333333333rem / var(--scale)) calc(1.0833333333rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn .reset_btn:hover{background:var(--blue-600);border-color:var(--blue-600);color:var(--white)}.th_wraper .filter_three_dot_wrapper .three-dots{margin-right:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .three-dots :hover{background:var(--neutral-200);border-radius:calc(.1666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .resize-handle{position:absolute;right:0;top:30%;height:50%;color:var(--neutral-200);font-size:calc(1.1666666667rem / var(--scale));margin-top:calc(-.1666666667rem / var(--scale));cursor:w-resize}.tableArea .table_wrapper .headerName{font-size:var(--fs-14);line-height:140%;font-weight:600;color:var(--neutral-500);text-transform:uppercase}.pagination_main{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;height:calc(4rem / var(--scale));padding:calc(.6666666667rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600}.pagination_main .entries_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select{position:relative}.pagination_main .entries_details .pagination_select .select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));width:calc(4.0833333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_dropdown .chevron_img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.pagination_main .entries_details .pagination_select .select_dropdown .chevron_img img{width:calc(1.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_option{position:absolute;top:auto;bottom:100%;display:flex;flex-direction:column;background-color:var(--white);box-shadow:0 calc(-.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) calc(0rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));z-index:10}.pagination_main .entries_details .pagination_select .select_option span{width:calc(4.0833333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;padding:calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_option span:hover{background-color:var(--neutral-50)}.pagination_main .pagination_form{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.8333333333rem / var(--scale))}.pagination_main .pagination_form .prev_btn,.pagination_main .pagination_form .next_btn,.pagination_main .pagination_form .first_btn,.pagination_main .pagination_form .last_btn{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;padding:0;min-width:calc(2.6666666667rem / var(--scale));width:calc(2.6666666667rem / var(--scale));height:calc(2.6666666667rem / var(--scale))}.pagination_main .pagination_form .outlined_btn{background:transparent;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));color:var(--neutral-500);cursor:pointer}.pagination_main .pagination_form .outlined_btn.disable_btn{opacity:.4;pointer-events:none;background-color:var(--neutral-200)}.pagination_main .pagination_form .outlined_btn img{max-width:calc(1.6666666667rem / var(--scale))}.pagination_main .input_style{width:calc(3.3333333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));color:var(--neutral-600);text-align:center;outline:none;padding:0}.tableArea .table_wrapper table th:not(:last-child) .right .line{display:block;border-left:calc(.1666666667rem / var(--scale)) solid var(--grey-50);height:calc(2rem / var(--scale))}.moving_column{width:calc(15.1666666667rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.5rem / var(--scale));background-color:var(--white);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) calc(.0833333333rem / var(--scale)) var(--filter-shadow);padding-left:calc(1rem / var(--scale));position:absolute;top:69%;left:10%;cursor:grab}.moving_column .column_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.cell-value{line-height:0}.cell-value.ellipsis:hover .see_more_data{display:flex}.d-none{display:none}.tableArea:has(.group_panel) tr .group-cell:hover img{background-color:var(--neutral-50);border-radius:calc(.3333333333rem / var(--scale))}.group_panel{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale)) calc(.6666666667rem / var(--scale));background:var(--neutral-50);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(0rem / var(--scale));border-top:0;height:calc(3.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}.group_panel img.divider:last-child{display:none}.group_panel .group_tag{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(2.1666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;cursor:grab}.group_panel .group_tag .remove_tag{border:0;padding:0;cursor:pointer}.group_panel .group_placeholder{color:var(--neutral-500)}.group_panel img{max-width:calc(1.3333333333rem / var(--scale))}.group-toggle{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-600);cursor:pointer}.active_group{width:100px}.dropdown_wrapper{background-color:var(--white);box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));z-index:99;position:relative;width:calc(26.6666666667rem / var(--scale))}.dropdown_wrapper .divder{margin:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));width:calc(100% - 2.6666666667rem / var(--scale));height:calc(.0833333333rem / var(--scale));background:var(--neutral-300)}.dropdown_wrapper .right_click_dropdown{margin:calc(.3333333333rem / var(--scale)) 0}.dropdown_wrapper .right_click_item{min-height:calc(3.3333333333rem / var(--scale));width:100%;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;position:relative}.dropdown_wrapper .right_click_item:hover,.dropdown_wrapper .right_click_item.active{background-color:var(--blue-50)}.dropdown_wrapper .right_click_item .left_item{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.dropdown_wrapper .right_click_item .text{font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-600)}.dropdown_wrapper .right_click_item .right_item{font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.dropdown_wrapper .right_click_item img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));opacity:.7}.dropdown_wrapper .right_click_item .right_chevron{stroke:var(--neutral-400)}.second_dropdown{position:absolute;right:calc(-20rem / var(--scale));top:calc(-.4166666667rem / var(--scale));width:calc(20.25rem / var(--scale));padding:calc(.3333333333rem / var(--scale)) 0;max-height:calc(40.8333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}.third_dropdown{position:absolute;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));right:calc(-40.1666666667rem / var(--scale));top:calc(-.5833333333rem / var(--scale));width:calc(20.25rem / var(--scale));height:calc(18.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}.export_section{position:absolute;right:calc(-20.0833333333rem / var(--scale));top:calc(20.0833333333rem / var(--scale));width:calc(20.25rem / var(--scale));padding:calc(.3333333333rem / var(--scale)) 0;max-height:calc(13.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CommonCalendarComponent, selector: "lib-common-calendar", inputs: ["dateConfig", "minDate", "maxDate", "preSelectedValue"], outputs: ["dateTimeSelected"] }, { kind: "directive", type: OutsideClickDirective, selector: "[appOutsideClick]", outputs: ["clickOutside"] }, { kind: "directive", type: AdaptivePositionDirective, selector: "[adaptivePosition]", inputs: ["adaptive", "trigger", "parentContainer", "matchWidth", "closeOnOutside", "isAction", "isColumnActionMenu"] }, { kind: "directive", type: RendererParserDirective, selector: "[appRendererParser]", inputs: ["rowParam", "col", "api", "currentValue"] }, { kind: "component", type: CommonInputComponent, selector: "lib-common-input", inputs: ["options", "selectedValue", "placeholder", "elementType"], outputs: ["valueChange"] }, { kind: "pipe", type: AddClassPipe, name: "addClass" }] });
|
|
833
2094
|
}
|
|
834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2095
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridComponent, decorators: [{
|
|
835
2096
|
type: Component,
|
|
836
2097
|
args: [{ selector: 'cats-data-grid', imports: [
|
|
837
2098
|
CommonModule,
|
|
838
2099
|
FormsModule,
|
|
2100
|
+
CommonCalendarComponent,
|
|
839
2101
|
OutsideClickDirective,
|
|
2102
|
+
AdaptivePositionDirective,
|
|
840
2103
|
RendererParserDirective,
|
|
841
2104
|
AddClassPipe,
|
|
842
|
-
], template: "<div class=\"tableArea\">\r\n <div\r\n class=\"table_wrapper\"\r\n id=\"container_scroll\"\r\n (scroll)=\"infinityScroll($event)\"\r\n [ngStyle]=\"{ height: height + 'px' }\"\r\n >\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead class=\"sticky-top\">\r\n <tr>\r\n @if (checkBoxSelection && checkboxSelectionType == 'multiple') {\r\n <th style=\"width: 50px\">\r\n <span\r\n ><input\r\n class=\"form-check-input cursor-pointer\"\r\n type=\"checkbox\"\r\n name=\"\"\r\n id=\"\"\r\n [checked]=\"checkAllSelected()\"\r\n [indeterminate]=\"checkInterminate()\"\r\n (change)=\"onHeaderCheckboxChange($event)\"\r\n /></span>\r\n </th>\r\n } @for (col of colDefs; track $index) {\r\n <th\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"{ 'drag-over': dragOverIndex === $index }\"\r\n draggable=\"true\"\r\n (dragstart)=\"onDragStart($event, $index)\"\r\n (dragover)=\"onDragOver($event, $index)\"\r\n (drop)=\"onDrop($event, $index)\"\r\n (dragend)=\"onDragEnd()\"\r\n >\r\n <div class=\"th_wraper\">\r\n <div\r\n class=\"flex-center\"\r\n [ngStyle]=\"getStyle(col)\"\r\n (click)=\"onSortingRowData($index, col?.fieldName)\"\r\n >\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n @if (sortingRequired && sortingColumnIndex == $index) {\r\n <span class=\"headerName-icon\">\r\n <ul class=\"\">\r\n @if(sortingType){\r\n <li class=\"cursor-pointer\">\r\n <img\r\n src=\"images/sort_up.svg\"\r\n class=\"sorting_up\"\r\n [ngClass]=\"\r\n sortingColumnIndex == $index && sortingType == 'asc'\r\n ? 'd-none'\r\n : ''\r\n \"\r\n />\r\n </li>\r\n <li class=\"cursor-pointer\">\r\n <!-- <i class=\"fa fa-caret-down\" [ngClass]=\"sortingColumnIndex == $index && sortingType == 'dsc' ? 'muted_sort' : ''\"></i> -->\r\n <img\r\n src=\"images/sort_down.svg\"\r\n class=\"sorting_down\"\r\n [ngClass]=\"\r\n sortingColumnIndex == $index && sortingType == 'dsc'\r\n ? 'd-none'\r\n : ''\r\n \"\r\n />\r\n </li>\r\n\r\n }\r\n </ul>\r\n </span>\r\n\r\n }\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <!-- Column Filters Logic-->\r\n @if(filterRequired && col.filter){\r\n <div\r\n class=\"filters\"\r\n (click)=\"toggleFilter(col, $index, $event)\"\r\n >\r\n <img\r\n src=\"images/filter-icon.svg\"\r\n class=\"filter-icon\"\r\n [ngClass]=\"\r\n activeFilters.has(col.fieldName)\r\n ? 'filter-icon-active'\r\n : 'filter-icon'\r\n \"\r\n />\r\n\r\n @if (activeFilterIndex === $index) {\r\n <div\r\n class=\"filter-popup\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <!-- Text Filter -->\r\n @if(col.dataType === 'text'){\r\n <select [(ngModel)]=\"col.textFilters[0].filterType\">\r\n <option value=\"contains\">Contains</option>\r\n <option value=\"doesNotContain\">Does Not Contain</option>\r\n <option value=\"equals\">Equals</option>\r\n <option value=\"doesNotEqual\">Does Not Equal</option>\r\n <option value=\"startsWith\">Starts With</option>\r\n <option value=\"endsWith\">Ends With</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.textFilters[0].filterValue){\r\n <div class=\"logic-row\">\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n AND\r\n </label>\r\n\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n OR\r\n </label>\r\n </div>\r\n\r\n <select [(ngModel)]=\"col.textFilters[1].filterType\">\r\n <option value=\"contains\">Contains</option>\r\n <option value=\"doesNotContain\">Does Not Contain</option>\r\n <option value=\"equals\">Equals</option>\r\n <option value=\"doesNotEqual\">Does Not Equal</option>\r\n <option value=\"startsWith\">Starts With</option>\r\n <option value=\"endsWith\">Ends With</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n } }\r\n\r\n <!-- Number Filter -->\r\n @if(col.dataType === 'number'){\r\n <select [(ngModel)]=\"col.numberFilters[0].numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.numberFilters[0].numberValue){\r\n <div class=\"logic-row\">\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n AND\r\n </label>\r\n\r\n <label class=\"logic-item\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n OR\r\n </label>\r\n </div>\r\n\r\n <select [(ngModel)]=\"col.numberFilters[1].numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n } }\r\n\r\n <!-- DATE FILTER -->\r\n <ng-container *ngIf=\"col.dataType === 'date'\">\r\n <select [(ngModel)]=\"col.numberCondition\">\r\n <option value=\"=\">Equals</option>\r\n <option value=\">\">Greater Than</option>\r\n <option value=\"<\">Less Than</option>\r\n <option value=\">=\">>=</option>\r\n <option value=\"<=\"><=</option>\r\n </select>\r\n <input\r\n type=\"date\"\r\n [(ngModel)]=\"col.dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n </ng-container>\r\n\r\n <!-- SET FILTER (CHECKBOX LIST) -->\r\n <ng-container *ngIf=\"col.dataType === 'set'\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n />\r\n\r\n <div class=\"set-options\">\r\n <label>\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelected(col)\"\r\n (change)=\"toggleSelectAll(col, $event)\"\r\n />\r\n (Select All)\r\n </label>\r\n\r\n <label *ngFor=\"let opt of col.filteredOptions\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"col.selectedValues.has(opt)\"\r\n (change)=\"toggleSetOption(col, opt, $event)\"\r\n />\r\n {{ opt }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n @if(threeDotsMenuRequired && col.menu){\r\n\r\n <div class=\"three-dots\" (click)=\"openMenu($event, col, $index)\">\r\n <img src=\"images/more-vertical.svg\" />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- popup open -->\r\n <div\r\n class=\"column-menu\"\r\n *ngIf=\"menuVisible[$index]\"\r\n [ngStyle]=\"menuPosition[$index]\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <ul>\r\n @if(sortingType === 'dsc' || sortingType === ''){\r\n <li (click)=\"onSort(col?.fieldName, 'asc')\">\r\n <img src=\"images/arrow-up.svg\" class=\"sorting_up\" />\r\n Sort Ascending\r\n </li>\r\n } @if(sortingType === 'asc' || sortingType === ''){\r\n <li (click)=\"onSort(col?.fieldName, 'dsc')\">\r\n <img src=\"images/arrow-down.svg\" class=\"sorting_up\" />\r\n Sort Descending\r\n </li>\r\n } @if(sortingType === 'asc' || sortingType === 'dsc'){\r\n <li (click)=\"onSort(col?.fieldName, '')\">\r\n <span>\r\n <img src=\"images/chevron-up.svg\" class=\"sorting_up\" />\r\n <img src=\"images/chevron-down.svg\" class=\"sorting_up\" />\r\n </span>\r\n Clear Sort\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (data of rowData; track data.rowId) {\r\n <tr [ngClass]=\"data | addClass : tableOptions\">\r\n @if (checkBoxSelection) {\r\n <td style=\"min-width: 50px\">\r\n @if (checkboxSelectionType=='multiple') {\r\n <span\r\n ><input\r\n type=\"checkbox\"\r\n class=\"form-check-input pointer\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n /></span>\r\n\r\n }@else{\r\n <span class=\"checkboxInput\">\r\n <input\r\n type=\"radio\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n />\r\n </span>\r\n\r\n }\r\n </td>\r\n } @for (col of colDefs; track $index) {\r\n <td\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"col?.addClass ? col.addClass(data) : ''\"\r\n >\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(data, col.fieldName) }}\r\n </div>\r\n <div class=\"see_more_data\">\r\n <div class=\"item\">\r\n <span class=\"desc\">\r\n {{ parseColValue(data, col.fieldName) }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"data\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"data[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n <!-- Commented for later use -->\r\n <!-- <div class=\"tool_tip\">\r\n <span class=\"\"> {{ parseColValue(data, col.fieldName) }}aditya </span>\r\n </div> -->\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td [attr.colspan]=\"colDefs.length + 1\">\r\n <div class=\"small_data\">\r\n @if (tableOptions?.noDataTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableOptions?.noDataTemplate\"\r\n ></ng-container>\r\n\r\n }@else{\r\n <!-- need to style it properly then we will add it -->\r\n <span>No Data To Show</span>\r\n\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- Table Wrapper Ends-->\r\n @if(paginationRequired){\r\n <div class=\"pagination_main\">\r\n <div class=\"entries_details\">\r\n <span>Showing</span>\r\n <div\r\n class=\"pagination_select\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <div\r\n class=\"select_dropdown pointer\"\r\n (click)=\"showPageSizeList = !showPageSizeList\"\r\n >\r\n <p class=\"select_text mb-0\">{{ pageDetails.pageSize }}</p>\r\n <span class=\"chevron_img\">\r\n <img src=\"images/chevron-down.svg\" class=\"pointer\" />\r\n </span>\r\n </div>\r\n @if(showPageSizeList){\r\n <div class=\"select_option\">\r\n @for(option of pageSizeList;track $index){\r\n <span\r\n class=\"pointer\"\r\n (click)=\"onPageSizeChanged(option); onClickOutside()\"\r\n >{{ option }}</span\r\n >\r\n }\r\n </div>\r\n }\r\n </div>\r\n <span\r\n >Rows | {{ totalRecords > 0 ? recordsToShow.min + 1 : 0 }} -\r\n {{\r\n recordsToShow.max > totalRecords ? totalRecords : recordsToShow.max\r\n }}\r\n of\r\n {{ totalRecords }} Entries</span\r\n >\r\n </div>\r\n <div class=\"pagination_form flex-center\">\r\n <span>Page</span>\r\n\r\n <button\r\n class=\"outlined_btn prev_btn\"\r\n [ngClass]=\"pageDetails.currentPage > 1 ? '' : 'disable_btn'\"\r\n type=\"button\"\r\n (click)=\"onBtPrevClick()\"\r\n >\r\n <span> < </span>\r\n </button>\r\n <div>\r\n <input\r\n class=\"input_style right\"\r\n type=\"number\"\r\n [(ngModel)]=\"pageDetails.currentPage\"\r\n (change)=\"goToSelectedPage($event)\"\r\n name=\"\"\r\n id=\"\"\r\n />\r\n </div>\r\n <button\r\n class=\"outlined_btn next_btn\"\r\n type=\"button\"\r\n [ngClass]=\"\r\n pageDetails.currentPage < pageDetails.totalPages ? '' : 'disable_btn'\r\n \"\r\n (click)=\"onBtNextClick()\"\r\n >\r\n <span> > </span>\r\n </button>\r\n <span>of {{ pageDetails.totalPages }}</span>\r\n </div>\r\n </div>\r\n }\r\n <!-- Pagination Ends -->\r\n</div>\r\n", styles: [":root{--white: #fff;--white-creame: #ebf3ff;--border: #dae3f8;--scrollbar: var(--border);--textPrimary: #0b1c33;--textPrimary70: #0b1c33b3;--textSecondary: #556171;--textSecondary50: #55617180;--textSecondary70: #556171b3;--pink-10: #f9fbfe;--ice-blue: #67adcf;--primaryBlue: #017db9;--primaryBlue70: #017db9be;--blue-10: #edf4fe;--blue-40: #e3f3fc;--blue-50: #f2f5fa;--blue-5050: #f2f5fa80;--blue-100: #c8e2ff;--blue-200: #a4cfff;--blue-300: #2680ea;--blue-500: #3788e5;--blue-700: #007aff;--yellow-50: #ffeedf;--yellow-100: #fed18f;--yellow-200: #ffbca6;--yellow-300: #f08a2b26;--yellow-400: #e58900;--primaryOrange: #f05a2b;--primaryOrange50: #f05a2b80;--primaryOrange70: #f05a2bb3;--orange-10: #fcf5eb;--orange-200: #f7ac94;--orange-300: #fb9676;--theadBg: var(--blue-50);--pagination-bg: #f7fafe;--blue-200: var(--border);--neutral-200: #dadbdc;--neutral-600: #040d17;--toastShadow: #0000001f;--dropdown-shadow: #00000014;--green-50: #eaf8f1;--green-100: #bde8d3;--green-600: #27a468;--red-10: #fcebef;--red-20: #ca0000;--red-30: #F7C1CE;--error-red: #d03258;--tableBorder: var(--border);--grey-50: #a5b0bf;--grey-100: #333333;--grey-200: #222A3D;--capture-border: #9badca;--captcha-bg: #f3f3f3;--neutral-400: #81858a}html{font-size:12px}.row_div{min-height:calc(4.5rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.row_div .col_div{width:50%;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.row_div .label{width:calc(16.6666666667rem / var(--scale));min-width:calc(16.6666666667rem / var(--scale));padding:0 calc(2rem / var(--scale));color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:500;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.25rem / var(--scale))}.row_div .label sup{top:calc(-.1666666667rem / var(--scale))}.row_div .field{padding:calc(.6666666667rem / var(--scale)) calc(2rem / var(--scale));flex-grow:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:start;flex-wrap:nowrap;gap:\"\";color:var(--textPrimary);font-size:var(--fs-16);line-height:140%;font-weight:400}.row_div .field li{list-style:disc;line-height:calc(2.6666666667rem / var(--scale));margin-left:calc(1.5rem / var(--scale))}textarea,input,.ordered_textarea{color:var(--textPrimary)}.errorField{flex-direction:column;align-items:start}.errorField .error{max-width:calc(37.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:start;flex-wrap:nowrap;gap:0}.errorField .error i-feather[name=info]{padding-right:calc(.3333333333rem / var(--scale));display:flex;stroke:var(--error-red);width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}.errorField textarea,.errorField input,.errorField .ordered_textarea{color:var(--textPrimary);border:calc(.0833333333rem / var(--scale)) solid var(--error-red)}.errorField .error{padding-top:calc(.6666666667rem / var(--scale));color:var(--error-red);font-size:var(--fs-12);line-height:140%;font-weight:400}sup{color:var(--error-red)}input::placeholder,textarea::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:400}textarea{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;min-height:calc(9rem / var(--scale));resize:none}input{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;height:calc(4.5rem / var(--scale))}input.disable{background-color:var(--blue-50);pointer-events:none}.ordered_textarea{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:100%;list-style:disc;min-height:calc(9rem / var(--scale))}.ordered_textarea ul{padding-left:calc(2.6666666667rem / var(--scale));outline:none}.ordered_textarea ul.editable-div{min-height:calc(6rem / var(--scale));max-height:calc(9.3333333333rem / var(--scale));overflow:auto}.ordered_textarea ul li{margin-left:calc(1.75rem / var(--scale));list-style:disc;color:var(--textPrimary);font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400}.custom_radio{display:inline-flex;align-items:center;min-width:calc(18.5833333333rem / var(--scale))}.custom_radio .name{color:var(--neutral-600);font-size:var(--fs-16);line-height:140%;font-weight:400}.custom_radio.disabled .name{color:var(--textPrimary);font-size:var(--fs-16);line-height:140%;font-weight:400}.radio_mark{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));border:calc(.125rem / var(--scale)) solid var(--border);border-radius:50%;margin-right:calc(.6666666667rem / var(--scale));position:relative;background-color:var(--white)}.radio_mark:after{content:\"\";width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));background:var(--blue-700);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .2s}.dob_age_field{border:calc(.0833333333rem / var(--scale)) solid var(--border);border-radius:calc(1.3333333333rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));width:100%;height:calc(4.5rem / var(--scale));background-color:var(--blue-50);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.dob_age_field .dob,.dob_age_field .age{font-size:var(--fs-16);line-height:140%;font-weight:400;color:var(--textSecondary)}.dob_age_field .age{padding-left:calc(.8333333333rem / var(--scale))}.dob_age_field .dob{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:50%;height:100%;padding-right:calc(.8333333333rem / var(--scale));border-right:calc(.0833333333rem / var(--scale)) solid var(--border)}.dob_age_field .dob img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.date{position:relative;width:100%}.date img{position:absolute;right:calc(1.3333333333rem / var(--scale));top:calc(1.25rem / var(--scale))}input[type=checkbox]{margin-right:calc(.6666666667rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale))}ol li{list-style:auto!important}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Rethink}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.tableArea{width:100%;border-radius:calc(1.3333333333rem / var(--scale))}.none{display:none}.tableArea .table_wrapper table{border-collapse:collapse;width:100%;border-radius:calc(.3333333333rem / var(--scale));position:relative;z-index:1;background-color:var(--white)}thead .checkbox_section{min-width:calc(3.8333333333rem / var(--scale))!important;width:calc(3.8333333333rem / var(--scale))}tbody{background-color:var(--white)}tbody tr{overflow:visible}tbody tr:last-child:not(:first-child) ::ng-deep .see_more_data{top:calc(-3.3333333333rem / var(--scale))}tbody td{overflow:visible;position:relative;font-size:var(--fs-16);line-height:140%;font-weight:400;color:var(--textPrimary);min-width:calc(11.6666666667rem / var(--scale));max-width:calc(29.1666666667rem / var(--scale));padding-block:calc(.5rem / var(--scale))}tbody td .tooltip_container{max-width:calc(100% - 2.5rem / var(--scale));height:auto;position:absolute;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);z-index:100;display:none;border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));white-space:normal;word-wrap:break-word;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}tbody td:hover .tooltip_container{display:block}tbody td:last-child ::ng-deep .see_more_data{right:0!important}.tableArea .table_wrapper table thead tr{height:calc(4.5rem / var(--scale));color:var(--textPrimary)}.tableArea .table_wrapper table thead tr img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea .table_wrapper table thead tr .theading{height:calc(2.25rem / var(--scale))}.tableArea .table_wrapper table thead tr .headerName{text-wrap:nowrap;padding-left:0}.tableArea .table_wrapper table thead tr .three_dot{flex-grow:1;margin:0 calc(.3333333333rem / var(--scale)) 0 0;display:flex;flex-direction:row;justify-content:end;align-items:center;flex-wrap:nowrap;gap:0}.tableArea .table_wrapper table thead tr .three_dot img{cursor:pointer}.tableArea .table_wrapper table thead tr th{flex-shrink:0;background-color:var(--theadBg)}.tableArea .table_wrapper table thead tr th:hover .none{display:block}.tableArea .table_wrapper table thead tr th:hover .up,.tableArea .table_wrapper table thead tr th:hover .down{display:none}.tableArea .table_wrapper table tbody tr{height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:400;border-top:calc(.0833333333rem / var(--scale)) solid var(--tableBorder);transition:all .3s ease-in-out}.tableArea .table_wrapper table tbody tr.urgent{background-color:var(--red-10)}.tableArea .table_wrapper table tbody tr.important{background-color:var(--orange-10)}.tableArea .table_wrapper table tbody tr.disable{opacity:.4;pointer-events:none}.tableArea .table_wrapper table tbody tr.outline{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr:hover{background-color:var(--pink-10)}.tableArea .table_wrapper table tbody tr td.action{cursor:pointer}.tableArea .table_wrapper table tbody tr td.action span{text-decoration:underline}.tableArea .table_wrapper table tbody tr td.action:hover{border-left:calc(.0833333333rem / var(--scale)) solid var(--blue-700);border-right:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr td.action:hover span{color:var(--blue-700)}.tableArea .table_wrapper table tbody tr td .ellipsis{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(25rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale))}.tableArea .table_wrapper table tbody tr.td_80{height:calc(6.6666666667rem / var(--scale))}.tableArea .table_wrapper table td,.tableArea .table_wrapper table th{text-align:left;padding-left:calc(1.1666666667rem / var(--scale));line-height:1}.thead-img{position:relative}.swap-img{position:absolute;left:calc(.6666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.header-content{position:relative;display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0}.header-content .filtering_container{width:calc(20rem / var(--scale));max-height:calc(23.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);position:absolute;z-index:2;right:0;top:calc(2.3333333333rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:nowrap;gap:\"\"}.header-content .filtering_container .filter{height:calc(3.3333333333rem / var(--scale));color:var(--neutral-900);padding:calc(.6666666667rem / var(--scale)) calc(1rem / var(--scale));border:none;width:100%;background-color:var(--white);display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.header-content .filtering_container .filter.top_border{border-top:calc(.0833333333rem / var(--scale)) solid var(--neutral-100)}.tableArea .table_wrapper .headerName ul,.tableArea .table_wrapper .headerName-icon ul{display:flex}.tableArea .table_wrapper table ul{list-style-type:none;padding:0;margin-bottom:0}.tableArea .table_wrapper table ul li{height:calc(.3333333333rem / var(--scale));font-size:var(--fs-14);list-style-type:none}.tableArea .table_wrapper table .sorting_up,.tableArea .table_wrapper table .sorting_down{width:calc(.5833333333rem / var(--scale));height:calc(.3333333333rem / var(--scale))}.tableArea .table_wrapper .headerName,.tableArea .table_wrapper .headerName-icon{margin-left:calc(.5rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--textPrimary70);height:-webkit-fill-available}.pagination_main{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;height:calc(5.3333333333rem / var(--scale));padding:calc(1.3333333333rem / var(--scale))}.pagination_main .pagination_form i-feather{font-weight:600;color:var(--neutral-600)}.pagination_main span{color:var(--textSecondary);font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}.pagination_main i-feather{display:flex;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));color:var(--neutral-600)}.pagination_main .input_style{width:calc(4rem / var(--scale));height:calc(1.6666666667rem / var(--scale));font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));color:var(--neutral-600);text-align:center;margin:0 calc(.5rem / var(--scale));outline:none}.pagination_main .input_style option{font-size:1rem}.pagination_main .input_style.right{width:calc(3.3333333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;margin:0;color:var(--textPrimary);padding:0}.pagination_main .input_style.left{background-color:var(--pagination-bg);color:var(--blue-700);border:none}.pagination_main .outlined_btn{background:transparent;border:solid calc(.0833333333rem / var(--scale)) var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);color:var(--btn-outline)}.pagination_main .prev_btn,.pagination_main .next_btn{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;padding:0;min-width:calc(1.6666666667rem / var(--scale));width:calc(2.6666666667rem / var(--scale));height:calc(2.6666666667rem / var(--scale))}.pagination_main .disable_btn{background-color:var(--blue-200);pointer-events:none;color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--blue-200)}.pagination_main .disable_btn i-feather{color:var(--white)}.table_wrapper{overflow:auto;height:auto;min-height:calc(16.6666666667rem / var(--scale));max-height:calc(66.6666666667rem / var(--scale));border-top-left-radius:calc(1.3333333333rem / var(--scale));border-top-right-radius:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--tableBorder)}.data-table-td .td_wrapper{height:100%;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale))}.pagination_main .input_style.left{appearance:none;padding-right:calc(1rem / var(--scale));background-position:80% 50%;width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-12);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;border-radius:calc(.6666666667rem / var(--scale))}.data-table-td{background-color:var(--blue-50);font-size:var(--fs-16)}.data-table-td i-feather{background-color:var(--white);border-radius:calc(.25rem / var(--scale));box-shadow:0 calc(.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) 0 #00000014;color:var(--neutral-500)}.data-table-td span{vertical-align:middle}.setting-options{position:absolute;right:0;background:var(--white);z-index:2;box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.5rem / var(--scale)) calc(-.1666666667rem / var(--scale)) var(--box-shadow);max-height:calc(37.3333333333rem / var(--scale));width:calc(20.8333333333rem / var(--scale));overflow:auto;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.column-item,.column-header{margin-bottom:calc(1.6666666667rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600}.column-item{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.column-item input[type=checkbox]{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));margin:0;border-radius:var(--fs-6)}.column-item:last-child{margin-bottom:0}.disabled_col{pointer-events:none;background-color:var(--neutral-50)}.entries_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}.tableArea .table_wrapper table th:not(:last-child) .right .line{display:block;border-left:calc(.1666666667rem / var(--scale)) solid var(--grey-50);height:calc(2rem / var(--scale))}.sticky-top{top:calc(-.0833333333rem / var(--scale))}.thead-img .theading .left{gap:calc(.6666666667rem / var(--scale))}.ms-1.headerName-icon{min-width:calc(1.5rem / var(--scale))}.custom_radio{display:inline-flex;align-items:center;min-width:calc(1.6666666667rem / var(--scale))!important}.custom_radio .name{color:var(--neutral-600);font-size:var(--fs-20);line-height:calc(2rem / var(--scale));font-weight:400}.custom_radio.disabled{pointer-events:none}.custom_radio.disabled .radio_mark{background-color:var(--neutral-100);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.custom_radio.disabled .name{color:var(--neutral-300)}.custom_radio .name{padding-right:calc(1.9166666667rem / var(--scale))}.custom_radio input[type=radio]{display:none}.radio_mark{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));border:calc(.125rem / var(--scale)) solid var(--blue-700);border-radius:50%;margin-right:calc(.6666666667rem / var(--scale));position:relative;background-color:var(--white)}.custom_radio input[type=radio]:checked+.radio_mark{background-color:var(--white)}.radio_mark:after{content:\"\";width:calc(.6666666667rem / var(--scale));height:calc(.6666666667rem / var(--scale));background:var(--blue-700);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .2s}.custom_radio input[type=radio]:checked+.radio_mark:after{opacity:1}.pagination_form{gap:calc(1.3333333333rem / var(--scale))}.pagination_select{position:relative}.select_dropdown{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--blue-50);border-radius:calc(.6666666667rem / var(--scale));margin:0 calc(.5rem / var(--scale))}.select_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--blue-700)}.select_option{position:absolute;top:auto;bottom:100%;display:flex;flex-direction:column;background-color:var(--white);box-shadow:0 calc(-.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) calc(0rem / var(--scale)) var(--dropdown-shadow);border-radius:calc(.6666666667rem / var(--scale));left:calc(.5rem / var(--scale));z-index:10;padding:calc(.1666666667rem / var(--scale)) 0;margin:calc(.3333333333rem / var(--scale)) 0}.select_option span{width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary);padding-left:calc(1rem / var(--scale))}.chevron_img{color:var(--neutral-600);width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.chevron_img img{width:calc(.8333333333rem / var(--scale))}.moving_column{width:calc(15.1666666667rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.5rem / var(--scale));background-color:var(--white);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) calc(.0833333333rem / var(--scale)) var(--filter-shadow);padding-left:calc(1rem / var(--scale));position:absolute;top:69%;left:10%;cursor:grab}.moving_column .column_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.openClose_dropdown{background-color:var(--neutral-50);width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));cursor:pointer;border-radius:calc(.1666666667rem / var(--scale));display:flex}.openClose_dropdown i-feather{transform-origin:center;transition:.3s;display:flex;stroke:var(--neutral-600)}.openClose_dropdown i-feather.rotate{transform:rotate(90deg)}.cell-value{line-height:140%}.ellipsis.more_data_wrapper{position:relative;cursor:default}.ellipsis.more_data_wrapper:hover+.see_more_data{display:flex}:host::ng-deep .see_more_data{position:absolute;width:calc(19.0833333333rem / var(--scale));height:\"\";background-color:var(--blue-50);border-radius:calc(1rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--border);box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--dropdown-shadow);padding:calc(.6666666667rem / var(--scale)) 0;display:none;flex-direction:column;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;z-index:10;top:calc(3.3333333333rem / var(--scale))}:host::ng-deep .see_more_data .item{width:100%;height:\"\";min-height:calc(3rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));color:var(--grey-100);font-size:var(--fs-16);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}:host::ng-deep .see_more_data .item .desc{text-wrap:wrap;word-break:break-all}.cell-value.ellipsis:hover .see_more_data{display:flex}.flex-center{display:flex;align-items:center}.cursor-pointer{cursor:pointer}.d-none{display:none}.sort_icons{display:flex;flex-direction:column;gap:calc(.4166666667rem / var(--scale))}.filters{position:relative;display:inline-block;margin-left:6px;cursor:pointer}.filter-icon{width:14px;opacity:.6}.filter-icon-active{background-color:#0ff}.filter-icon:hover{opacity:1}.filter-popup{position:absolute;top:20px;left:0;width:160px;background:#fff;border:1px solid #ddd;padding:8px;box-shadow:0 3px 8px #00000026;border-radius:4px;z-index:99}.filter-popup select,.filter-popup input{width:100%;margin-bottom:8px;padding:4px;font-size:13px}.reset-btn{width:100%;padding:4px;font-size:12px}.set-options{max-height:180px;overflow-y:auto;padding:6px 8px;border:1px solid #ddd;border-radius:6px;background:#fff;font-size:13px}.set-options label{display:flex;align-items:center;gap:6px;padding:6px 4px;cursor:pointer;border-radius:4px}.set-options label:hover{background:#f3f3f3}.set-options input[type=checkbox]{width:14px;height:14px;cursor:pointer}.set-options label:first-child{font-weight:600;border-bottom:1px solid #e5e5e5;margin-bottom:6px;padding-bottom:8px}.th_wraper{display:flex;justify-content:space-between;height:32px;align-items:center;padding:0 12px}.three-dots{cursor:pointer;padding:2px 4px;font-size:13px;-webkit-user-select:none;user-select:none}.three-dots:hover{background:#eee;border-radius:4px}.column-menu{position:absolute;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:9999;padding:6px 0;min-width:160px}.column-menu ul{margin:0;padding:0;list-style:none}.column-menu li{display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;font-size:14px}.column-menu li:hover{background:#f3f3f3}.column-menu hr{border:none;border-top:1px solid #eee;margin:4px 0}.filter_three_dot_wrapper{display:flex;justify-content:space-between;align-items:center}.logic-row{display:flex;align-items:center;gap:16px;margin:8px 0 6px 4px}.logic-item{display:flex;align-items:center;gap:6px;font-size:13px;color:#444}.logic-item input[type=radio]{width:14px;height:14px;accent-color:#2b7cff;cursor:pointer}.logic-item span{cursor:pointer;font-weight:500}\n"] }]
|
|
2105
|
+
CommonInputComponent,
|
|
2106
|
+
], template: "<div class=\"tableArea\">\r\n @if(groupByRequired){\r\n <!-- Group Panel -->\r\n <div\r\n class=\"group_panel\"\r\n (dragover)=\"onGroupDragOver($event)\"\r\n (drop)=\"onGroupDrop($event)\"\r\n >\r\n <img alt=\"\" src=\"images/t-data-pipeline.svg\" class=\"icon\" />\r\n @for(g of activeGroups; track $index){\r\n <div\r\n class=\"group_tag\"\r\n draggable=\"true\"\r\n (dragstart)=\"onGroupDragStart($event, $index)\"\r\n (dragover)=\"onActiveDragOver($event, $index)\"\r\n (drop)=\"onActiveGroupDrop($event, $index)\"\r\n >\r\n <img src=\"images/t-gripper.svg\" alt=\"\" />\r\n <span>{{ g.headerName }}</span>\r\n <button class=\"remove_tag\" (click)=\"removeGroup(g, $index)\">\r\n <img src=\"images/t-x.svg\" alt=\"\" />\r\n </button>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" class=\"divider\" />\r\n } @if(activeGroups.length === 0){\r\n <div class=\"group_placeholder\">Drag here to set row groups</div>\r\n }\r\n </div>\r\n }\r\n <div\r\n class=\"table_wrapper\"\r\n id=\"container_scroll\"\r\n #parent\r\n (scroll)=\"infinityScroll($event)\"\r\n [ngStyle]=\"{ height: height + 'px' }\"\r\n >\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead class=\"sticky-top\">\r\n <tr>\r\n @if (checkBoxSelection && checkboxSelectionType == 'multiple') {\r\n <th style=\"width: 50px\">\r\n <span class=\"checkbox_container\"\r\n ><input\r\n class=\"pointer\"\r\n type=\"checkbox\"\r\n name=\"\"\r\n id=\"\"\r\n [checked]=\"checkAllSelected()\"\r\n [indeterminate]=\"checkInterminate()\"\r\n (change)=\"onHeaderCheckboxChange($event)\"\r\n /></span>\r\n </th>\r\n\r\n } @else{\r\n <th></th>\r\n } @if(activeGroups.length > 0){\r\n <th class=\"active_group\">\r\n <div class=\"th_wraper\">\r\n <div class=\"text_wrapper\">\r\n <span class=\"ellipsis headerName\">Group</span>\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <div class=\"three-dots\">\r\n <img src=\"images/t-more-vertical.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n } @for (col of colDefs; track col.colId) {\r\n <th\r\n [ngStyle]=\"getStyle(col, 'action')\"\r\n [ngClass]=\"{ 'drag-over': dragOverIndex === $index }\"\r\n (dragover)=\"onDragOver($event, $index)\"\r\n (drop)=\"onDrop($event, $index)\"\r\n (mouseenter)=\"onMouseEnterHeader($index)\"\r\n (mouseleave)=\"onMouseLeaveHeader($index)\"\r\n >\r\n <div class=\"th_wraper\">\r\n <div\r\n class=\"text_wrapper\"\r\n [ngStyle]=\"getStyle(col, 'action')\"\r\n (click)=\"onSortingRowData($index, col)\"\r\n >\r\n @if(showMoveIcon[$index] && !col.isAction){\r\n <img\r\n src=\"images/t-move.svg\"\r\n class=\"move-icon\"\r\n [draggable]=\"!isResizing || columnDraggable[$index]\"\r\n (dragstart)=\"onDragStart($event, $index)\"\r\n (dragend)=\"onDragEnd()\"\r\n (mouseenter)=\"enableColumnDrag($event, $index)\"\r\n (mouseleave)=\"disableColumnDrag($event, $index)\"\r\n />\r\n\r\n }\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n\r\n @if (sortingRequired && sortingColumnIndex == $index &&\r\n col?.sortable && !col.isAction) {\r\n <span class=\"sorting_icon\">\r\n @if(sortingType[$index]=== 'asc'){\r\n <img\r\n src=\"images/t-arrow-up.svg\"\r\n class=\"sorting_up\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n } @if(sortingType[$index]=== 'dsc'){\r\n <!-- <i class=\"fa fa-caret-down\" [ngClass]=\"sortingColumnIndex == $index && sortingType == 'dsc' ? 'muted_sort' : ''\"></i> -->\r\n <img\r\n src=\"images/t-arrow-down.svg\"\r\n class=\"sorting_down\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n }\r\n </span>\r\n\r\n }\r\n </div>\r\n <div class=\"filter_three_dot_wrapper\">\r\n <!-- Column Filters Logic-->\r\n @if(filterRequired && col.filterable){\r\n <div\r\n #trigger\r\n class=\"filters\"\r\n (click)=\"toggleFilter(col, $index, $event)\"\r\n >\r\n @if(activeFilters.has(col.fieldName)){\r\n <img\r\n src=\"images/t-filter-applied.svg\"\r\n class=\"filter-icon\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n }@else {\r\n <img\r\n src=\"images/t-filter.svg\"\r\n class=\"filter-icon\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n } @if (activeFilterIndex === $index) {\r\n <div\r\n adaptivePosition\r\n [trigger]=\"trigger\"\r\n [parentContainer]=\"parent\"\r\n [matchWidth]=\"false\"\r\n class=\"filter_wrapper\"\r\n id=\"filter_wrapper-{{ $index }}\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <!-- Text Filter -->\r\n @if(col.filterType === 'text'){\r\n\r\n <lib-common-input\r\n [options]=\"filterOptions\"\r\n [selectedValue]=\"col.textFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.textFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[0].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n @if(col.textFilters[0].filterValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"filterOptions\"\r\n [selectedValue]=\"col.textFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.textFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.textFilters[1].filterValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n } }\r\n\r\n <!-- Number Filter -->\r\n @if(col.filterType === 'number'){\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.numberFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.numberFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <!-- <input\r\n type=\"number\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n /> -->\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"number\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.numberFilters[0].numberValue\"\r\n (input)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n\r\n @if(col.numberFilters[0].numberValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.numberFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.numberFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n (keyup)=\"applyAllFilters()\"\r\n />\r\n </div>\r\n <!-- <input\r\n type=\"text\"\r\n [(ngModel)]=\"col.numberFilters[1].numberValue\"\r\n placeholder=\"Filter\u2026\"\r\n (keyup)=\"applyAllFilters()\"\r\n /> -->\r\n } }\r\n\r\n <!-- DATE FILTER -->\r\n @if(col.filterType === 'date'){\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.dateFilters[0].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.dateFilters[0].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <!-- <input\r\n type=\"date\"\r\n [(ngModel)]=\"col.dateFilters[0].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n /> -->\r\n <lib-common-calendar\r\n [dateConfig]=\"dateConfig\"\r\n [(ngModel)]=\"col.dateFilters[0].dateValue\"\r\n (dateTimeSelected)=\"dateTimeSelected($event)\"\r\n ></lib-common-calendar>\r\n\r\n @if(col.dateFilters[0].dateValue){\r\n <div class=\"logic-row radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"AND\"\r\n id=\"{{ $index }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index\">AND</label>\r\n\r\n <input\r\n type=\"radio\"\r\n name=\"textLogic{{ col.fieldName }}\"\r\n [(ngModel)]=\"col.textLogic\"\r\n value=\"OR\"\r\n id=\"{{ $index + 1 }}\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n <label [for]=\"$index + 1\">OR</label>\r\n </div>\r\n\r\n <lib-common-input\r\n [options]=\"numberFilterOptions\"\r\n [selectedValue]=\"col.dateFilters[1].filterType\"\r\n placeholder=\"Select filter\"\r\n (valueChange)=\"col.dateFilters[1].filterType = $event\"\r\n ></lib-common-input>\r\n\r\n <lib-common-calendar\r\n [dateConfig]=\"dateConfig\"\r\n [(ngModel)]=\"col.dateFilters[1].dateValue\"\r\n (dateTimeSelected)=\"dateTimeSelected($event)\"\r\n ></lib-common-calendar>\r\n } }\r\n\r\n <!-- SET FILTER (CHECKBOX LIST) -->\r\n @if(col.filterType === 'set'){\r\n <!-- <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n /> -->\r\n <div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n (input)=\"filterSetOptions(col, $event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"set_option_details\">\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelected(col)\"\r\n (change)=\"toggleSelectAll(col, $event)\"\r\n />\r\n (Select All)\r\n </label>\r\n <div class=\"set_options\" id=\"container_scroll\">\r\n @for(opt of col.filteredOptions; track $index){\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"col.selectedValues.has(opt)\"\r\n (change)=\"toggleSetOption(col, opt, $event)\"\r\n />\r\n {{ opt }}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"filter_btn\">\r\n <button\r\n class=\"reset_btn\"\r\n type=\"button\"\r\n (click)=\"resetFilter(col)\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n <div #triggerColMenu>\r\n @if(threeDotsMenuRequired && col.columnAction){\r\n\r\n <div\r\n class=\"three-dots\"\r\n (click)=\"openMenu($event, col, $index)\"\r\n >\r\n <img\r\n src=\"images/t-more-vertical.svg\"\r\n [draggable]=\"false\"\r\n (dragstart)=\"\r\n $event.preventDefault(); $event.stopPropagation()\r\n \"\r\n />\r\n </div>\r\n }\r\n </div>\r\n @if(!col.isAction){\r\n <span\r\n class=\"resize-handle\"\r\n (mousedown)=\"startResize($event, $index)\"\r\n >\r\n |\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- popup open -->\r\n @if(menuVisible[$index]){\r\n <div\r\n class=\"dropdown_wrapper\"\r\n adaptivePosition\r\n [trigger]=\"triggerColMenu\"\r\n [parentContainer]=\"parent\"\r\n [matchWidth]=\"false\"\r\n [isColumnActionMenu]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n appOutsideClick\r\n (clickOutside)=\"onClickOutside()\"\r\n >\r\n <div class=\"right_click_dropdown\" id=\"container_scroll\">\r\n @if(sortingType[$index] === 'dsc' || sortingType[$index] ===\r\n ''){\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"onSort(col, 'asc', $index)\"\r\n >\r\n <div class=\"left_item\">\r\n <img\r\n src=\"images/arrow-up.svg\"\r\n class=\"sorting_up\"\r\n [ngClass]=\"{ disable: !col.sortable }\"\r\n />\r\n <span class=\"text\">Sort Ascending</span>\r\n </div>\r\n </div>\r\n } @if(sortingType[$index] === 'asc' || sortingType[$index] ===\r\n ''){\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"onSort(col, 'dsc', $index)\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/arrow-down.svg\" />\r\n <span class=\"text\">Sort Descending</span>\r\n </div>\r\n </div>\r\n } @if(sortingType[$index] === 'asc' || sortingType[$index] ===\r\n 'dsc'){\r\n <div class=\"right_click_item\" (click)=\"onSort(col, '', $index)\">\r\n <div class=\"left_item\">\r\n <img src=\"images/trash-2.svg\" />\r\n <span class=\"text\">Clear Sort</span>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"divder\"></div>\r\n\r\n <div\r\n class=\"right_click_item\"\r\n (mouseenter)=\"showPinActions()\"\r\n (mouseleave)=\"hidePinActions()\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">Pin Column</span>\r\n </div>\r\n <div class=\"right_item\">\r\n <img src=\"images/chevron-right.svg\" />\r\n @if(showPin){\r\n <div class=\"second_dropdown\">\r\n <div\r\n (click)=\"pinColumn(col, $index, 'none')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if((pinActionClicked[col.colId]?? 'none') ===\r\n 'none'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">No Pin</span>\r\n </div>\r\n </div>\r\n <div\r\n (click)=\"pinColumn(col, $index, 'left')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if(pinActionClicked[col.colId] === 'left'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">Pin Left</span>\r\n </div>\r\n </div>\r\n <div\r\n (click)=\"pinColumn(col, $index, 'right')\"\r\n class=\"right_click_item\"\r\n >\r\n <div class=\"left_item\">\r\n @if(pinActionClicked[col.colId] === 'right'){\r\n <img src=\"images/check.svg\" />\r\n } @else{\r\n <img src=\"\" alt=\"\" />\r\n }\r\n <span class=\"text\">Pin Right</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <div\r\n class=\"right_click_item\"\r\n (click)=\"pinColumn(col, $index, 'left')\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">{{\r\n col.leftPinned ? \"Unpin Left Column\" : \"Pin Column Left\"\r\n }}</span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"right_click_item\"\r\n (click)=\"pinColumn(col, $index, 'right')\"\r\n >\r\n <div class=\"left_item\">\r\n <img src=\"images/pin.svg\" />\r\n <span class=\"text\">\r\n {{\r\n col.rightPinned\r\n ? \"Unpin Right Column\"\r\n : \"Pin Column Right\"\r\n }}\r\n </span>\r\n </div>\r\n <div class=\"right_item\">\r\n <img src=\"images/arrow-right.svg\" alt=\"\" />\r\n </div>\r\n </div> -->\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Autosize This Column</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Autosize All Columns</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div\r\n class=\"left_item\"\r\n (click)=\"groupByColumnAction(col, $index)\"\r\n >\r\n <img src=\"images/t-group-by-name.svg\" alt=\"\" />\r\n <span class=\"text\">Group by {{ col.headerName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/t-choose-column.svg\" alt=\"\" />\r\n <span class=\"text\">Choose Columns</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"\" alt=\"\" />\r\n <span class=\"text\">Reset Columns</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @if(groupedResult && groupedResult.length > 0){ @for(group of\r\n groupedResult; track group.key){\r\n <tr (click)=\"toggleGroup(group)\">\r\n <td\r\n class=\"group-cell\"\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n >\r\n <span class=\"group-toggle\">\r\n <img\r\n src=\"images/{{\r\n group.expanded ? 'chevron-down.svg' : 'chevron-right.svg'\r\n }}\"\r\n />\r\n {{ group.key }} ({{ group.children.length }})\r\n </span>\r\n </td>\r\n </tr>\r\n\r\n @if(group.expanded){\r\n <!-- CASE 1: CHILDREN ARE MORE GROUPS -->\r\n @if (group.children[0]?.children) { @for (child of group.children; track\r\n child.key) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: child,\r\n colDefs: colDefs,\r\n checkBoxSelection: checkBoxSelection,\r\n activeGroups: activeGroups,\r\n level: 1\r\n }\"\r\n ></ng-container>\r\n } }\r\n\r\n <!-- CASE 2: CHILDREN ARE RAW ROWS -->\r\n @if (!group.children[0]?.children) { @for (row of group.children; track\r\n row.rowId) {\r\n <tr [ngClass]=\"row | addClass : tableOptions\">\r\n <!-- Checkbox column if any -->\r\n @if (checkBoxSelection) {\r\n <td>\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"row.isSelected\"\r\n /></span>\r\n </td>\r\n } @if (activeGroups.length > 0) {\r\n <td class=\"group-placeholder\"></td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track col.colId) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n <!-- {{ row[col.fieldName] }} -->\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(row, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(row, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"row\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"row[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } } } } } @else{ @for (data of rowData; track data.rowId) {\r\n <tr [ngClass]=\"data | addClass : tableOptions\">\r\n @if (checkBoxSelection) {\r\n <td style=\"min-width: 50px\">\r\n @if (checkboxSelectionType=='multiple') {\r\n <span class=\"checkbox_container\"\r\n ><input\r\n type=\"checkbox\"\r\n class=\"pointer\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n /></span>\r\n\r\n }@else{\r\n <span class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n name=\"\"\r\n id=\"{{ data.rowId }}\"\r\n [checked]=\"data?.isSelected\"\r\n (change)=\"onRowCheckboxSelection($event)\"\r\n />\r\n <label [for]=\"data.rowId\"></label>\r\n </span>\r\n\r\n }\r\n </td>\r\n } @for (col of colDefs; track col.colId) {\r\n <td\r\n [ngStyle]=\"getStyle(col)\"\r\n [ngClass]=\"[col?.addClass ? col.addClass(data) : '']\"\r\n >\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(data, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(data, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"data\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"data[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n <!-- Commented for later use -->\r\n <!-- <div class=\"tool_tip\">\r\n <span class=\"\"> {{ parseColValue(data, col.fieldName) }}aditya </span>\r\n </div> -->\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n >\r\n <div class=\"small_data\">\r\n @if (tableOptions?.noDataTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableOptions?.noDataTemplate\"\r\n ></ng-container>\r\n\r\n }@else{\r\n <!-- need to style it properly then we will add it -->\r\n <span>No Data To Show</span>\r\n\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n } }\r\n </tbody>\r\n\r\n <ng-template\r\n #groupTemplate\r\n let-node\r\n let-colDefs=\"colDefs\"\r\n let-checkBoxSelection=\"checkBoxSelection\"\r\n let-activeGroups=\"activeGroups\"\r\n let-level=\"level\"\r\n >\r\n <!-- GROUP HEADER -->\r\n <tr (click)=\"toggleGroup(node)\">\r\n <td\r\n [attr.colspan]=\"\r\n colDefs.length +\r\n (checkBoxSelection ? 1 : 0) +\r\n (activeGroups.length > 0 ? 1 : 0)\r\n \"\r\n [style.paddingLeft.px]=\"level * 20\"\r\n class=\"group-cell\"\r\n >\r\n <span class=\"group-toggle\">\r\n <img\r\n src=\"images/{{\r\n node.expanded ? 'chevron-down.svg' : 'chevron-right.svg'\r\n }}\"\r\n />\r\n {{ node.key }} ({{ node.children.length }})\r\n </span>\r\n </td>\r\n </tr>\r\n\r\n <!-- CHILDREN -->\r\n @if (node.expanded) {\r\n\r\n <!-- CASE: more groups -->\r\n @if (node.children[0]?.children) { @for (child of node.children; track\r\n child.key) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: child,\r\n colDefs: colDefs,\r\n checkBoxSelection: checkBoxSelection,\r\n activeGroups: activeGroups,\r\n level: level + 1\r\n }\"\r\n >\r\n </ng-container>\r\n } }\r\n\r\n <!-- CASE: final rows -->\r\n @if (!node.children[0]?.children) { @for (row of node.children; track\r\n row.rowId) {\r\n\r\n <tr [ngClass]=\"row | addClass : tableOptions\">\r\n <!-- Checkbox column if any -->\r\n @if (checkBoxSelection) {\r\n <td>\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"row.isSelected\"\r\n /></span>\r\n </td>\r\n } @if (activeGroups.length > 0) {\r\n <td class=\"group-placeholder\"></td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track col.colId) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n <!-- {{ row[col.fieldName] }} -->\r\n @if (!col?.cellRenderer) {\r\n <div class=\"cell-value\">\r\n <div\r\n class=\"more_data_wrapper\"\r\n [ngClass]=\"{ ellipsis: !col.wrapText }\"\r\n >\r\n {{ parseColValue(row, col) }}\r\n </div>\r\n <div class=\"see_more_data\" id=\"container_scroll\">\r\n <div class=\"item\">\r\n <span class=\"desc\"> {{ parseColValue(row, col) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <div\r\n [rowParam]=\"row\"\r\n [col]=\"col\"\r\n [api]=\"tableOptions\"\r\n [currentValue]=\"row[col.fieldName]\"\r\n appRendererParser\r\n ></div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } } }\r\n </ng-template>\r\n </table>\r\n </div>\r\n <!-- Table Wrapper Ends-->\r\n @if(paginationRequired){\r\n <div class=\"pagination_main\">\r\n <div class=\"entries_details\">\r\n <span>Showing</span>\r\n <div class=\"pagination_select\">\r\n <div\r\n class=\"select_dropdown pointer\"\r\n (click)=\"showPageSizeList = !showPageSizeList\"\r\n >\r\n <p class=\"select_text mb-0\">{{ pageDetails.pageSize }}</p>\r\n <span class=\"chevron_img\">\r\n <img src=\"images/chevron-down.svg\" class=\"pointer\" />\r\n </span>\r\n </div>\r\n @if(showPageSizeList){\r\n <div class=\"select_option\">\r\n @for(option of pageSizeList;track $index){\r\n <span\r\n class=\"pointer\"\r\n (click)=\"onPageSizeChanged(option); onClickOutside()\"\r\n >{{ option }}</span\r\n >\r\n }\r\n </div>\r\n }\r\n </div>\r\n <span\r\n >Rows | {{ totalRecords > 0 ? recordsToShow.min + 1 : 0 }} -\r\n {{\r\n recordsToShow.max > totalRecords ? totalRecords : recordsToShow.max\r\n }}\r\n of\r\n {{ totalRecords }} Entries</span\r\n >\r\n </div>\r\n <div class=\"pagination_form\">\r\n <!-- <span>Page</span> -->\r\n\r\n <button class=\"outlined_btn first_btn\" type=\"button\">\r\n <span> <img src=\"images/chevrons-left.svg\" alt=\"\" /> </span>\r\n </button>\r\n <button\r\n class=\"outlined_btn prev_btn\"\r\n [ngClass]=\"pageDetails.currentPage > 1 ? '' : 'disable_btn'\"\r\n type=\"button\"\r\n (click)=\"onBtPrevClick()\"\r\n >\r\n <span> <img src=\"images/chevron-left.svg\" alt=\"\" /> </span>\r\n </button>\r\n <div>\r\n <input\r\n class=\"input_style\"\r\n type=\"number\"\r\n [(ngModel)]=\"pageDetails.currentPage\"\r\n (change)=\"goToSelectedPage($event)\"\r\n name=\"\"\r\n id=\"\"\r\n />\r\n </div>\r\n <button\r\n class=\"outlined_btn next_btn\"\r\n type=\"button\"\r\n [ngClass]=\"\r\n pageDetails.currentPage < pageDetails.totalPages ? '' : 'disable_btn'\r\n \"\r\n (click)=\"onBtNextClick()\"\r\n >\r\n <span> <img src=\"images/chevron-right.svg\" alt=\"\" /> </span>\r\n </button>\r\n <!-- <span>of {{ pageDetails.totalPages }}</span> -->\r\n\r\n <button class=\"outlined_btn last_btn\" type=\"button\">\r\n <span> <img src=\"images/chevrons-right.svg\" alt=\"\" /> </span>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n <!-- Pagination Ends -->\r\n</div>\r\n\r\n<!-- cell right click code start here -->\r\n<div class=\"dropdown_wrapper d-none\">\r\n <div class=\"right_click_dropdown\">\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/scissors.svg\" />\r\n <span class=\"text\">Cut</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+X</span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+C</span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy with Headers</span>\r\n </div>\r\n <span class=\"right_item\"></span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/copy.svg\" alt=\"\" />\r\n <span class=\"text\">Copy with Group Headers</span>\r\n </div>\r\n <span class=\"right_item\"></span>\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/clipboard.svg\" alt=\"\" />\r\n <span class=\"text\">Paste</span>\r\n </div>\r\n\r\n <span class=\"right_item\">Ctrl+V</span>\r\n </div>\r\n\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <img src=\"images/bar-chart.svg\" alt=\"\" />\r\n <span class=\"text\">Chart</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/download.svg\" alt=\"\" />\r\n <span class=\"text\">Export</span>\r\n </div>\r\n\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Chart section Start Here -->\r\n <div class=\"second_dropdown\">\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Column</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Bar</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Pie</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Line</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Area</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">XY(Scatter)</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Polar</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Stastical</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Hierarchical</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Specialized</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Funnel</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Combination</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Export Section start Here -->\r\n <div class=\"export_section d-none\">\r\n <div class=\"right_click_item active\">\r\n <div class=\"left_item\">\r\n <img src=\"images/file.svg\" alt=\"\" />\r\n <span class=\"text\">CSV Report</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <img src=\"images/file.svg\" alt=\"\" />\r\n <span class=\"text\">Excel Report</span>\r\n </div>\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Column Group Section Start Here -->\r\n <div class=\"third_dropdown\">\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Grouped</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">Stacked</span>\r\n </div>\r\n </div>\r\n <div class=\"right_click_item\">\r\n <div class=\"left_item\">\r\n <span class=\"text\">100% Stacked</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-50: #f7fafe;--blue-100: #eaf3fd;--blue-200: #dfecfc;--blue-300: #c8dff9;--blue-400: #92bff4;--blue-600: #2680ea;--blue-700: #1c60af;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #e1eee2;--green-400: #9bc69d;--green-600: #388e3c;--green-700: #2a6a2d;--red: #ff0000;--red-50: #fdf7f7;--red-100: #faeaea;--red-200: #f7dfdf;--red-300: #f0c9c9;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff9e7;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}#container_scroll::-webkit-scrollbar{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale))}#container_scroll::-webkit-scrollbar-track{background-color:var(--neutral-200);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-thumb{background-color:var(--neutral-500);border:calc(.25rem / var(--scale)) solid transparent;border-radius:calc(8.3333333333rem / var(--scale));background-clip:padding-box}#container_scroll::-webkit-scrollbar-corner{background:transparent}#container_scroll::-webkit-scrollbar-button{width:calc(1.1666666667rem / var(--scale));height:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-100);border-radius:calc(.1666666667rem / var(--scale));cursor:pointer;display:none;background-repeat:no-repeat;background-position:center;background-size:calc(.8333333333rem / var(--scale))}#container_scroll::-webkit-scrollbar-button:hover{background-color:var(--neutral-300)}#container_scroll::-webkit-scrollbar-button:single-button:vertical:decrement{background-image:url(/images/chevron-up.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:vertical:increment{background-image:url(/images/chevron-down.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:decrement{background-image:url(/images/chevron-left.svg);display:block}#container_scroll::-webkit-scrollbar-button:single-button:horizontal:increment{background-image:url(/images/chevron-right.svg);display:block}sup{color:var(--error-red)}.radio_option{display:flex;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_option [type=radio]:not(:checked)+label:before,.radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background:var(--white)}.radio_option [type=radio]:checked,.radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_option [type=radio]:checked+label,.radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2rem / var(--scale));cursor:pointer;display:inline-block;color:var(--neutral-600);line-height:calc(1.3333333333rem / var(--scale))}.radio_option [type=radio]:checked+label:before{border:calc(.125rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_option [type=radio]:not(:checked)+label:before{border:calc(.125rem / var(--scale)) solid var(--neutral-200);border-radius:100%}.radio_option [type=radio]:checked+label:after,.radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.5rem / var(--scale));height:calc(.5rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.4166666667rem / var(--scale));left:calc(.4166666667rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}.checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.checkbox_container input[type=checkbox][disabled],.checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.checkbox_container input[type=checkbox][disabled]+span,.checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));min-width:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.0833333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));background-size:auto;background-repeat:no-repeat;background-position:center}.checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/check-white.svg)}.checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--white)}.checkbox_container input[type=checkbox]:indeterminate:after{display:block;top:0;background-image:url(/images/minus-blue.svg)}.text_filter_section{position:relative;width:100%}.text_filter_section .single_select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--neutral-600);cursor:pointer}.text_filter_section .single_select_dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 1.6666666667rem / var(--scale));height:\"\"}.text_filter_section .single_select_dropdown .arrow_icon img{max-width:calc(1.6666666667rem / var(--scale))}.text_filter_section .dropdown_list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));width:100%;position:absolute;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(3.3333333333rem / var(--scale))}.text_filter_section .dropdown_list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.3333333333rem / var(--scale)) 0}.text_filter_section .dropdown_list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.text_filter_section .dropdown_list ul li{height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));cursor:pointer;color:var(--neutral-600)}.text_filter_section .dropdown_list ul li:hover{background-color:var(--neutral-50)}.text_filter_section .dropdown_list ul li.disabled_option{opacity:.3;pointer-events:none}.search_input{position:relative;width:100%;height:calc(3.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));padding:calc(.8333333333rem / var(--scale)) calc(1rem / var(--scale));background-color:var(--white);display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.search_input input::placeholder{color:var(--neutral-500)}.switch_wrapper{display:flex}.switch_wrapper .switch{position:relative;display:inline-block;width:calc(2.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.switch_wrapper .switch input{display:none}.switch_wrapper .switch .slider{position:absolute;cursor:pointer;background-color:var(--neutral-100);border-radius:calc(1.3333333333rem / var(--scale));inset:0;transition:.3s}.switch_wrapper .switch .slider:before{content:\"\";position:absolute;width:calc(1rem / var(--scale));height:calc(1rem / var(--scale));left:calc(.1666666667rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));background-color:var(--white);border-radius:50%;transition:.3s;box-shadow:0 calc(.0666666667rem / var(--scale)) calc(.2rem / var(--scale)) 0 var(--box-shadow)}.switch_wrapper .switch input:checked+.slider{background-color:var(--blue-600)}.switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1rem / var(--scale)))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch{width:calc(3.1666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea.big .table_wrapper table tbody tr :host .switch_wrapper .switch input:checked+.slider:before{transform:translate(calc(1.5rem / var(--scale)))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol,p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}input,select,textarea{outline:none;box-shadow:none}:root{--fs-6: 6px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.pointer,.cursor-pointer{cursor:pointer}.ellipsis,.textTruncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ellipsis.more_data_wrapper{position:relative;cursor:default}.ellipsis.more_data_wrapper:hover+.see_more_data{display:flex}:host::ng-deep .see_more_data{position:absolute;width:calc(26.4166666667rem / var(--scale));height:\"\";background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale)) 0 var(--box-shadow);display:none;flex-direction:column;max-height:calc(20.8333333333rem / var(--scale));overflow-y:auto;z-index:14;padding:calc(.5rem / var(--scale)) 0}:host::ng-deep .see_more_data .item{width:100%;height:\"\";min-height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}:host::ng-deep .see_more_data .item .desc{text-wrap:wrap;word-break:break-all}.tableArea{width:100%;border-radius:calc(1.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:400}.tableArea.big .table_wrapper table thead tr,.tableArea.big .table_wrapper table tbody tr{height:calc(4.6666666667rem / var(--scale))}.tableArea .table_wrapper{overflow:auto;height:auto;min-height:calc(16.6666666667rem / var(--scale));max-height:calc(66.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.tableArea .table_wrapper table{border-collapse:collapse;width:100%;border-radius:calc(.3333333333rem / var(--scale));position:relative;z-index:1;background-color:var(--white)}.tableArea .table_wrapper table img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.tableArea .table_wrapper table .sticky-top{top:0;position:sticky;z-index:13}.tableArea .table_wrapper table td,.tableArea .table_wrapper table th{font-size:var(--fs-14);line-height:140%;font-weight:400;color:var(--neutral-500);min-width:calc(11.6666666667rem / var(--scale));max-width:calc(80rem / var(--scale));text-align:left;line-height:1}.tableArea .table_wrapper table td .ellipsis,.tableArea .table_wrapper table th .ellipsis{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(25rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale))}.tableArea .table_wrapper table thead .checkbox_section{min-width:calc(3.8333333333rem / var(--scale))!important;width:calc(3.8333333333rem / var(--scale))}.tableArea .table_wrapper table thead tr{height:calc(3.3333333333rem / var(--scale));color:var(--neutral-500)}.tableArea .table_wrapper table thead tr .headerName{text-wrap:nowrap;padding-left:0;cursor:pointer}.tableArea .table_wrapper table thead th{position:relative;padding:0 0 0 calc(.6666666667rem / var(--scale));background-color:var(--neutral-50)}.tableArea .table_wrapper table thead th:last-child .th_wraper{border:0}.tableArea .table_wrapper table thead th:hover .none{display:block}.tableArea .table_wrapper table thead th:hover .up,.tableArea .table_wrapper table thead th:hover .down{display:none}.tableArea .table_wrapper table tbody{background-color:var(--white)}.tableArea .table_wrapper table tbody tr{overflow:visible;height:calc(3.3333333333rem / var(--scale));border-top:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);transition:all .3s ease-in-out}.tableArea .table_wrapper table tbody tr.urgent{background-color:var(--red-10)}.tableArea .table_wrapper table tbody tr.important{background-color:var(--orange-10)}.tableArea .table_wrapper table tbody tr.disable{opacity:.4;pointer-events:none}.tableArea .table_wrapper table tbody tr.outline{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr:hover{background-color:var(--blue-50)}.tableArea .table_wrapper table tbody tr:last-child:not(:first-child) ::ng-deep .see_more_data{top:calc(-3.3333333333rem / var(--scale))}.tableArea .table_wrapper table tbody tr td{overflow:visible;position:relative;padding:calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale))}.tableArea .table_wrapper table tbody tr td.action{cursor:pointer}.tableArea .table_wrapper table tbody tr td.action span{text-decoration:underline}.tableArea .table_wrapper table tbody tr td.action:hover{border-left:calc(.0833333333rem / var(--scale)) solid var(--blue-700);border-right:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.tableArea .table_wrapper table tbody tr td.action:hover span{color:var(--blue-700)}.th_wraper{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));height:calc(1.3333333333rem / var(--scale));border-right:calc(.1666666667rem / var(--scale)) solid var(--neutral-200)}.th_wraper .text_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));white-space:nowrap}.th_wraper .text_wrapper img{min-width:calc(1.3333333333rem / var(--scale));width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale))}.th_wraper .text_wrapper .move-icon{margin-right:calc(.3333333333rem / var(--scale));transition:opacity .5s ease;cursor:grab}.th_wraper .filter_three_dot_wrapper{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper img{min-width:calc(1.5rem / var(--scale));width:calc(1.5rem / var(--scale));height:calc(1.5rem / var(--scale));cursor:pointer}.th_wraper .filter_three_dot_wrapper .filters{position:relative;display:inline-block;cursor:pointer}.th_wraper .filter_three_dot_wrapper .filters:hover{background:var(--neutral-200);border-radius:calc(.1666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));position:absolute;top:20px;left:0;width:calc(18.8333333333rem / var(--scale));background:var(--neutral-50);padding:calc(1rem / var(--scale));box-shadow:0 0 calc(1.6666666667rem / var(--scale)) 0 #00000029;z-index:99;display:flex;flex-direction:column;justify-content:center;align-items:start;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper lib-common-input{width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .logic-row{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(3.3333333333rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .set_option_details{width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .set_option_details .set_options{display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));margin-top:calc(.6666666667rem / var(--scale));width:100%;max-height:calc(10.8333333333rem / var(--scale));overflow-y:auto}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn{display:flex;flex-direction:row;justify-content:end;align-items:\"\";flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));width:100%}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn .reset_btn{width:calc(5.5rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;font-family:inherit;transition:all .2s ease;-webkit-user-select:none;user-select:none;background-color:var(--white);padding:calc(.3333333333rem / var(--scale)) calc(1.0833333333rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .filters .filter_wrapper .filter_btn .reset_btn:hover{background:var(--blue-600);border-color:var(--blue-600);color:var(--white)}.th_wraper .filter_three_dot_wrapper .three-dots{margin-right:calc(.6666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .three-dots :hover{background:var(--neutral-200);border-radius:calc(.1666666667rem / var(--scale))}.th_wraper .filter_three_dot_wrapper .resize-handle{position:absolute;right:0;top:30%;height:50%;color:var(--neutral-200);font-size:calc(1.1666666667rem / var(--scale));margin-top:calc(-.1666666667rem / var(--scale));cursor:w-resize}.tableArea .table_wrapper .headerName{font-size:var(--fs-14);line-height:140%;font-weight:600;color:var(--neutral-500);text-transform:uppercase}.pagination_main{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;height:calc(4rem / var(--scale));padding:calc(.6666666667rem / var(--scale));color:var(--neutral-500);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600}.pagination_main .entries_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select{position:relative}.pagination_main .entries_details .pagination_select .select_dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));width:calc(4.0833333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_dropdown .chevron_img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:0}.pagination_main .entries_details .pagination_select .select_dropdown .chevron_img img{width:calc(1.3333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_option{position:absolute;top:auto;bottom:100%;display:flex;flex-direction:column;background-color:var(--white);box-shadow:0 calc(-.1666666667rem / var(--scale)) calc(1.6666666667rem / var(--scale)) calc(0rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));z-index:10}.pagination_main .entries_details .pagination_select .select_option span{width:calc(4.0833333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;padding:calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale))}.pagination_main .entries_details .pagination_select .select_option span:hover{background-color:var(--neutral-50)}.pagination_main .pagination_form{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.8333333333rem / var(--scale))}.pagination_main .pagination_form .prev_btn,.pagination_main .pagination_form .next_btn,.pagination_main .pagination_form .first_btn,.pagination_main .pagination_form .last_btn{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;padding:0;min-width:calc(2.6666666667rem / var(--scale));width:calc(2.6666666667rem / var(--scale));height:calc(2.6666666667rem / var(--scale))}.pagination_main .pagination_form .outlined_btn{background:transparent;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));color:var(--neutral-500);cursor:pointer}.pagination_main .pagination_form .outlined_btn.disable_btn{opacity:.4;pointer-events:none;background-color:var(--neutral-200)}.pagination_main .pagination_form .outlined_btn img{max-width:calc(1.6666666667rem / var(--scale))}.pagination_main .input_style{width:calc(3.3333333333rem / var(--scale));height:calc(2.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));color:var(--neutral-600);text-align:center;outline:none;padding:0}.tableArea .table_wrapper table th:not(:last-child) .right .line{display:block;border-left:calc(.1666666667rem / var(--scale)) solid var(--grey-50);height:calc(2rem / var(--scale))}.moving_column{width:calc(15.1666666667rem / var(--scale));height:calc(3.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.5rem / var(--scale));background-color:var(--white);font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) calc(.0833333333rem / var(--scale)) var(--filter-shadow);padding-left:calc(1rem / var(--scale));position:absolute;top:69%;left:10%;cursor:grab}.moving_column .column_text{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.cell-value{line-height:0}.cell-value.ellipsis:hover .see_more_data{display:flex}.d-none{display:none}.tableArea:has(.group_panel) tr .group-cell:hover img{background-color:var(--neutral-50);border-radius:calc(.3333333333rem / var(--scale))}.group_panel{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.5rem / var(--scale)) calc(.6666666667rem / var(--scale));background:var(--neutral-50);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(0rem / var(--scale));border-top:0;height:calc(3.3333333333rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500}.group_panel img.divider:last-child{display:none}.group_panel .group_tag{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(2.1666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;cursor:grab}.group_panel .group_tag .remove_tag{border:0;padding:0;cursor:pointer}.group_panel .group_placeholder{color:var(--neutral-500)}.group_panel img{max-width:calc(1.3333333333rem / var(--scale))}.group-toggle{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:600;color:var(--neutral-600);cursor:pointer}.active_group{width:100px}.dropdown_wrapper{background-color:var(--white);box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));z-index:99;position:relative;width:calc(26.6666666667rem / var(--scale))}.dropdown_wrapper .divder{margin:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));width:calc(100% - 2.6666666667rem / var(--scale));height:calc(.0833333333rem / var(--scale));background:var(--neutral-300)}.dropdown_wrapper .right_click_dropdown{margin:calc(.3333333333rem / var(--scale)) 0}.dropdown_wrapper .right_click_item{min-height:calc(3.3333333333rem / var(--scale));width:100%;padding:calc(.8333333333rem / var(--scale)) calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;position:relative}.dropdown_wrapper .right_click_item:hover,.dropdown_wrapper .right_click_item.active{background-color:var(--blue-50)}.dropdown_wrapper .right_click_item .left_item{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.dropdown_wrapper .right_click_item .text{font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-600)}.dropdown_wrapper .right_click_item .right_item{font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.dropdown_wrapper .right_click_item img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));opacity:.7}.dropdown_wrapper .right_click_item .right_chevron{stroke:var(--neutral-400)}.second_dropdown{position:absolute;right:calc(-20rem / var(--scale));top:calc(-.4166666667rem / var(--scale));width:calc(20.25rem / var(--scale));padding:calc(.3333333333rem / var(--scale)) 0;max-height:calc(40.8333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}.third_dropdown{position:absolute;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));right:calc(-40.1666666667rem / var(--scale));top:calc(-.5833333333rem / var(--scale));width:calc(20.25rem / var(--scale));height:calc(18.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}.export_section{position:absolute;right:calc(-20.0833333333rem / var(--scale));top:calc(20.0833333333rem / var(--scale));width:calc(20.25rem / var(--scale));padding:calc(.3333333333rem / var(--scale)) 0;max-height:calc(13.3333333333rem / var(--scale));overflow-y:auto;background-color:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow)}\n"] }]
|
|
843
2107
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { tableOptions: [{
|
|
844
2108
|
type: Input
|
|
845
2109
|
}], totalRecords: [{
|
|
@@ -864,6 +2128,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
864
2128
|
type: Input
|
|
865
2129
|
}], height: [{
|
|
866
2130
|
type: Input
|
|
2131
|
+
}], groupByRequired: [{
|
|
2132
|
+
type: Input
|
|
867
2133
|
}], onPaginationChange: [{
|
|
868
2134
|
type: Output
|
|
869
2135
|
}], onCheckboxSelection: [{
|