cats-data-grid 1.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,16 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Pipe, EventEmitter, HostListener, Output, Directive, Input, Component } from '@angular/core';
2
+ import { Injectable, Pipe, EventEmitter, Output, Directive, Input, HostListener, Component, signal } 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: "19.2.17", ngImport: i0, type: CatsDataGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CatsDataGridService, providedIn: 'root' });
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: "19.2.17", ngImport: i0, type: CatsDataGridService, decorators: [{
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'
@@ -18,16 +18,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18
18
  }], ctorParameters: () => [] });
19
19
 
20
20
  class AddClassPipe {
21
- transform(value, tableOption) {
22
- if (tableOption?.addClasses) {
23
- return tableOption.addClasses(value);
21
+ transform(value, context) {
22
+ if (context?.addClasses) {
23
+ return context.addClasses(value);
24
+ }
25
+ else if (context?.cellValueClass) {
26
+ return context.cellValueClass(value);
24
27
  }
25
28
  return '';
26
29
  }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AddClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
28
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: AddClassPipe, isStandalone: true, name: "addClass" });
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
31
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, isStandalone: true, name: "addClass" });
29
32
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AddClassPipe, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AddClassPipe, decorators: [{
31
34
  type: Pipe,
32
35
  args: [{
33
36
  name: 'addClass'
@@ -40,21 +43,22 @@ class OutsideClickDirective {
40
43
  constructor(elementRef) {
41
44
  this.elementRef = elementRef;
42
45
  }
43
- onClick(event) {
44
- const targetElement = event.target;
45
- // Guard clause: exit early if no target or not an element
46
- if (!targetElement) {
47
- return;
48
- }
49
- const clickInside = this.elementRef.nativeElement.contains(targetElement);
50
- if (!clickInside) {
46
+ onClick = (event) => {
47
+ const target = event.target;
48
+ if (!this.elementRef.nativeElement.contains(target)) {
51
49
  this.clickOutside.emit(event);
52
50
  }
51
+ };
52
+ ngOnInit() {
53
+ document.addEventListener('click', this.onClick, true);
54
+ }
55
+ ngOnDestroy() {
56
+ document.removeEventListener('click', this.onClick, true);
53
57
  }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: OutsideClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
55
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: OutsideClickDirective, isStandalone: true, selector: "[appOutsideClick]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0 });
58
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OutsideClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
59
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: OutsideClickDirective, isStandalone: true, selector: "[appOutsideClick]", outputs: { clickOutside: "clickOutside" }, ngImport: i0 });
56
60
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: OutsideClickDirective, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OutsideClickDirective, decorators: [{
58
62
  type: Directive,
59
63
  args: [{
60
64
  selector: '[appOutsideClick]',
@@ -62,9 +66,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
62
66
  }]
63
67
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutside: [{
64
68
  type: Output
65
- }], onClick: [{
66
- type: HostListener,
67
- args: ['document:click', ['$event']]
68
69
  }] } });
69
70
 
70
71
  class RendererParserDirective {
@@ -85,7 +86,7 @@ class RendererParserDirective {
85
86
  data: this.rowParam,
86
87
  value: this.currentValue,
87
88
  cellParams: this.col?.cellRendererParams,
88
- col: this.col
89
+ col: this.col,
89
90
  };
90
91
  if (this.col?.cellRenderer?.prototype &&
91
92
  this.col.cellRenderer.prototype?.constructor == this.col.cellRenderer) {
@@ -109,10 +110,10 @@ class RendererParserDirective {
109
110
  this.er.nativeElement.appendChild(toltipDiv);
110
111
  }
111
112
  }
112
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: RendererParserDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
113
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: RendererParserDirective, isStandalone: true, selector: "[appRendererParser]", inputs: { rowParam: "rowParam", col: "col", api: "api", currentValue: "currentValue" }, ngImport: i0 });
113
+ 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 });
114
+ 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
115
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: RendererParserDirective, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RendererParserDirective, decorators: [{
116
117
  type: Directive,
117
118
  args: [{
118
119
  selector: '[appRendererParser]',
@@ -127,6 +128,754 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
127
128
  type: Input
128
129
  }] } });
129
130
 
131
+ class CommonInputComponent {
132
+ options = [];
133
+ selectedValue;
134
+ placeholder = 'Select';
135
+ elementType = 'dropdown';
136
+ valueChange = new EventEmitter();
137
+ showDropdown = false;
138
+ toggleDropdown() {
139
+ this.showDropdown = !this.showDropdown;
140
+ }
141
+ selectOption(option) {
142
+ this.selectedValue = option.value;
143
+ this.valueChange.emit(option.value);
144
+ this.showDropdown = false;
145
+ }
146
+ get selectedLabel() {
147
+ return (this.options.find((o) => o.value === this.selectedValue)?.label ||
148
+ this.placeholder);
149
+ }
150
+ // optional: close on outside click
151
+ closeOnOutsideClick(event) {
152
+ const target = event.target;
153
+ if (!target.closest('.text_filter_section')) {
154
+ this.showDropdown = false;
155
+ }
156
+ }
157
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
158
+ 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"] }] });
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonInputComponent, decorators: [{
161
+ type: Component,
162
+ 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"] }]
163
+ }], propDecorators: { options: [{
164
+ type: Input
165
+ }], selectedValue: [{
166
+ type: Input
167
+ }], placeholder: [{
168
+ type: Input
169
+ }], elementType: [{
170
+ type: Input
171
+ }], valueChange: [{
172
+ type: Output
173
+ }], closeOnOutsideClick: [{
174
+ type: HostListener,
175
+ args: ['document:click', ['$event']]
176
+ }] } });
177
+
178
+ class AdaptivePositionDirective {
179
+ host;
180
+ dropdown;
181
+ trigger;
182
+ parentContainer;
183
+ matchWidth = true;
184
+ closeOnOutside = true;
185
+ isAction = false;
186
+ isColumnActionMenu = false;
187
+ resizeObserver;
188
+ isOpen = false;
189
+ menuItems = [];
190
+ focusedIndex = -1;
191
+ constructor(host) {
192
+ this.host = host;
193
+ }
194
+ ngAfterViewInit() {
195
+ this.setupBaseStyles();
196
+ this.observeResize();
197
+ }
198
+ // @HostListener('click', ['$event'])
199
+ // toggle(event: Event) {
200
+ // event.stopPropagation();
201
+ // this.isOpen ? this.close() : this.open();
202
+ // }
203
+ open() {
204
+ this.isOpen = true;
205
+ this.dropdown.classList.remove('hidden');
206
+ this.dropdown.setAttribute('role', 'listbox');
207
+ this.host.nativeElement.setAttribute('aria-expanded', 'true');
208
+ this.prepareItems();
209
+ this.positionDropdown();
210
+ if (this.closeOnOutside)
211
+ document.addEventListener('click', this.handleOutsideClick);
212
+ }
213
+ close() {
214
+ this.isOpen = false;
215
+ this.dropdown.classList.add('hidden');
216
+ this.host.nativeElement.setAttribute('aria-expanded', 'false');
217
+ document.removeEventListener('click', this.handleOutsideClick);
218
+ this.focusedIndex = -1;
219
+ }
220
+ positionDropdown() {
221
+ if (!this.trigger)
222
+ return;
223
+ const dropdown = this.host.nativeElement;
224
+ const parent = this.parentContainer ||
225
+ this.trigger.closest('.table_wrapper') ||
226
+ document.body ||
227
+ this.trigger.offsetParent;
228
+ if (!parent)
229
+ return;
230
+ const t = this.trigger.getBoundingClientRect();
231
+ const p = parent.getBoundingClientRect();
232
+ const dH = dropdown.offsetHeight;
233
+ const dW = dropdown.offsetWidth;
234
+ const spaceBelow = p.bottom - t.bottom;
235
+ const spaceAbove = t.top - p.top;
236
+ const spaceRight = p.right - t.left;
237
+ const spaceLeft = t.right - p.left;
238
+ if (spaceBelow < dH && spaceAbove > dH) {
239
+ dropdown.style.bottom = `${this.trigger.offsetHeight}px`;
240
+ dropdown.style.top = 'auto';
241
+ dropdown.classList.add('drop-up');
242
+ dropdown.classList.remove('drop-down');
243
+ }
244
+ if (spaceRight < dW && spaceLeft > dW) {
245
+ dropdown.style.right = '0';
246
+ dropdown.style.left = 'auto';
247
+ dropdown.classList.add('align-right');
248
+ if (this.isColumnActionMenu)
249
+ dropdown.style.right = '0';
250
+ }
251
+ if (this.isAction)
252
+ dropdown.style.right = '70px';
253
+ if (this.matchWidth)
254
+ dropdown.style.width = `${this.trigger.offsetWidth}px`;
255
+ }
256
+ handleKeys(e) {
257
+ if (!this.isOpen)
258
+ return;
259
+ switch (e.key) {
260
+ case 'ArrowDown':
261
+ this.moveFocus(1);
262
+ e.preventDefault();
263
+ break;
264
+ case 'ArrowUp':
265
+ this.moveFocus(-1);
266
+ e.preventDefault();
267
+ break;
268
+ case 'Home':
269
+ this.focusItem(0);
270
+ e.preventDefault();
271
+ break;
272
+ case 'End':
273
+ this.focusItem(this.menuItems.length - 1);
274
+ e.preventDefault();
275
+ break;
276
+ case 'Enter':
277
+ case ' ':
278
+ this.selectFocused();
279
+ e.preventDefault();
280
+ break;
281
+ case 'Escape':
282
+ this.close();
283
+ break;
284
+ }
285
+ }
286
+ moveFocus(delta) {
287
+ this.focusedIndex =
288
+ (this.focusedIndex + delta + this.menuItems.length) %
289
+ this.menuItems.length;
290
+ this.focusItem(this.focusedIndex);
291
+ }
292
+ focusItem(index) {
293
+ this.focusedIndex = index;
294
+ this.menuItems.forEach((i) => i.classList.remove('focused'));
295
+ const item = this.menuItems[index];
296
+ item.classList.add('focused');
297
+ item.scrollIntoView({ block: 'nearest' });
298
+ }
299
+ selectFocused() {
300
+ if (this.focusedIndex >= 0)
301
+ this.menuItems[this.focusedIndex].click();
302
+ this.close();
303
+ }
304
+ prepareItems() {
305
+ this.menuItems = Array.from(this.dropdown.querySelectorAll('[role="option"], li, div'));
306
+ this.menuItems.forEach((el) => el.setAttribute('tabindex', '-1'));
307
+ }
308
+ handleOutsideClick = (e) => {
309
+ const target = e.target;
310
+ if (!(target instanceof Node) ||
311
+ (!this.host.nativeElement.contains(target) &&
312
+ !this.dropdown.contains(target))) {
313
+ this.close();
314
+ }
315
+ };
316
+ setupBaseStyles() {
317
+ const dropdown = this.host.nativeElement;
318
+ dropdown.style.position = 'absolute';
319
+ this.host.nativeElement.setAttribute('role', 'button');
320
+ this.positionDropdown();
321
+ }
322
+ observeResize() {
323
+ const parent = this.parentContainer || this.host.nativeElement.offsetParent;
324
+ this.resizeObserver = new ResizeObserver(() => {
325
+ if (this.isOpen)
326
+ this.positionDropdown();
327
+ });
328
+ this.resizeObserver.observe(this.host.nativeElement);
329
+ this.resizeObserver.observe(this.trigger);
330
+ if (parent)
331
+ this.resizeObserver.observe(parent);
332
+ }
333
+ ngOnDestroy() {
334
+ this.resizeObserver?.disconnect();
335
+ document.removeEventListener('click', this.handleOutsideClick);
336
+ }
337
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdaptivePositionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
338
+ 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 });
339
+ }
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdaptivePositionDirective, decorators: [{
341
+ type: Directive,
342
+ args: [{
343
+ selector: '[adaptivePosition]',
344
+ }]
345
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { dropdown: [{
346
+ type: Input,
347
+ args: ['adaptive']
348
+ }], trigger: [{
349
+ type: Input
350
+ }], parentContainer: [{
351
+ type: Input
352
+ }], matchWidth: [{
353
+ type: Input
354
+ }], closeOnOutside: [{
355
+ type: Input
356
+ }], isAction: [{
357
+ type: Input
358
+ }], isColumnActionMenu: [{
359
+ type: Input
360
+ }], handleKeys: [{
361
+ type: HostListener,
362
+ args: ['keydown', ['$event']]
363
+ }] } });
364
+
365
+ class CommonCalendarComponent {
366
+ cd;
367
+ datePipe;
368
+ dateTimeSelected = new EventEmitter();
369
+ dateConfig;
370
+ minDate;
371
+ maxDate;
372
+ preSelectedValue;
373
+ selectedDateTime;
374
+ currentDate = new Date();
375
+ currentMonth = this.currentDate.getMonth();
376
+ currentYear = this.currentDate.getFullYear();
377
+ selectedDate = null;
378
+ selectedTime = null;
379
+ calendar = [];
380
+ timeSlots = [];
381
+ rangeStart = null;
382
+ rangeEnd = null;
383
+ selectedMonth;
384
+ selectedYear;
385
+ control;
386
+ disableControl = false;
387
+ date = '';
388
+ calendarView = 'defaultView';
389
+ yearRange = [];
390
+ daysInMonth = [];
391
+ selectedDay = 0;
392
+ selectedStartDate;
393
+ selectedEndDate;
394
+ isOpen = false;
395
+ showYearSelector = false;
396
+ monthRange = {
397
+ '0': 'JAN',
398
+ '01': 'FEB',
399
+ '02': 'MAR',
400
+ '03': 'APR',
401
+ '04': 'MAY',
402
+ '05': 'JUN',
403
+ '06': 'JUL',
404
+ '07': 'AUG',
405
+ '08': 'SEP',
406
+ '09': 'OCT',
407
+ '10': 'NOV',
408
+ '11': 'DEC',
409
+ };
410
+ constructor(
411
+ // @Inject(LOCALE_ID) private locale: string,
412
+ cd, datePipe) {
413
+ this.cd = cd;
414
+ this.datePipe = datePipe;
415
+ }
416
+ ngOnChanges(_changes) {
417
+ if (!_changes['selectedDateTime']?.currentValue) {
418
+ this.selectedDateTime = [];
419
+ }
420
+ else {
421
+ this.writeValue(this.control?.value);
422
+ }
423
+ }
424
+ ngOnInit() {
425
+ this.generateYearRange();
426
+ // this.generateCalendar();
427
+ this.generateTimeRanges();
428
+ if (this.preSelectedValue) {
429
+ this.initializeCalendar();
430
+ }
431
+ }
432
+ onTouchedCallback = () => { };
433
+ onChangeCallback = () => { };
434
+ writeValue(value) {
435
+ if (value) {
436
+ this.selectedDateTime = value;
437
+ this.onChangeCallback(value);
438
+ this.cd.markForCheck();
439
+ }
440
+ }
441
+ registerOnChange(fn) {
442
+ this.onChangeCallback = fn;
443
+ }
444
+ registerOnTouched(fn) {
445
+ this.onTouchedCallback = fn;
446
+ }
447
+ setDisabledState(isDisabled) {
448
+ if (this.control) {
449
+ isDisabled ? this.control.disable() : this.control.enable();
450
+ }
451
+ }
452
+ /**
453
+ * @description Validates date time picker component
454
+ * @author Shiva Kant
455
+ * @param control
456
+ * @returns validate
457
+ */
458
+ validate(control) {
459
+ this.control = control;
460
+ const selected = this.date ? new Date(this.date) : null;
461
+ // Check required manually
462
+ const isRequired = control.validator && control.validator(control)?.['required'];
463
+ if ((isRequired || control.hasError('required')) &&
464
+ (!this.date || !this.selectedDay)) {
465
+ return { required: true };
466
+ }
467
+ else if (this.minDate && selected && selected < new Date(this.minDate)) {
468
+ return { minDate: true };
469
+ }
470
+ else if (this.maxDate && selected && selected > new Date(this.maxDate)) {
471
+ return { maxDate: true };
472
+ }
473
+ return null;
474
+ }
475
+ /**
476
+ * @description method to toggleCalendar
477
+ * @author Shiva Kant
478
+ */
479
+ toggleCalendar() {
480
+ this.isOpen = !this.isOpen;
481
+ if (this.date && this.isOpen) {
482
+ this.currentDate = new Date(this.date);
483
+ this.selectedDay = this.currentDate.getDate();
484
+ }
485
+ this.calendarView = 'defaultView';
486
+ this.generateCalendar();
487
+ if (this.isOpen) {
488
+ let ele = document.getElementsByClassName('calendar-footer');
489
+ setTimeout(() => {
490
+ ele[0]?.scrollIntoView();
491
+ });
492
+ }
493
+ }
494
+ /**
495
+ * @description Closes calendar
496
+ * @author Shiva Kant
497
+ */
498
+ closeCalendar() {
499
+ this.isOpen = false;
500
+ this.calendarView = 'defaultView';
501
+ }
502
+ /**
503
+ * @description Method to Gets month year
504
+ * @author Shiva Kant
505
+ * @returns month year
506
+ */
507
+ getMonthYear() {
508
+ return {
509
+ month: this.currentDate.toLocaleString('default', {
510
+ month: 'long',
511
+ }),
512
+ year: this.currentDate.toLocaleString('default', {
513
+ year: 'numeric',
514
+ }),
515
+ };
516
+ }
517
+ /**
518
+ * @description Method to Updates current year month
519
+ * @author Shiva Kant
520
+ */
521
+ updateCurrentYearMonth() {
522
+ this.currentYear = this.currentDate.getFullYear();
523
+ this.currentMonth = this.currentDate.getMonth();
524
+ }
525
+ /**
526
+ * @description Method to Selects year
527
+ * @author Shiva Kant
528
+ * @param year
529
+ */
530
+ selectYear(year) {
531
+ this.currentDate.setFullYear(year);
532
+ this.updateCurrentYearMonth();
533
+ this.showYearSelector = false;
534
+ this.calendarView = 'defaultView';
535
+ this.selectedDay = 0;
536
+ this.generateCalendar();
537
+ }
538
+ /**
539
+ * @description Method to Selects month
540
+ * @author Shiva Kant
541
+ * @param month
542
+ */
543
+ selectMonth(month) {
544
+ this.currentDate.setMonth(month);
545
+ this.updateCurrentYearMonth();
546
+ this.calendarView = 'defaultView';
547
+ this.selectedDay = 0;
548
+ this.generateCalendar();
549
+ }
550
+ /**
551
+ * @description Method to Previous year range
552
+ * @author Shiva Kant
553
+ */
554
+ previousYearRange() {
555
+ this.yearRange = this.yearRange.map((year) => year - 18);
556
+ }
557
+ /**
558
+ * @description Method to Next year range
559
+ * @author Shiva Kant
560
+ */
561
+ nextYearRange() {
562
+ this.yearRange = this.yearRange.map((year) => year + 18);
563
+ }
564
+ /**
565
+ * @description Method to Toggles year selector
566
+ * @author Shiva Kant
567
+ */
568
+ toggleYearSelector() {
569
+ this.showYearSelector = !this.showYearSelector;
570
+ this.generateYearRange();
571
+ }
572
+ /**
573
+ * @description Method to Generates year range
574
+ * @author Shiva Kant
575
+ */
576
+ generateYearRange() {
577
+ const currentYear = this.currentDate.getFullYear();
578
+ const startYear = currentYear - (currentYear % 20);
579
+ this.yearRange = Array.from({ length: 18 }, (_, i) => startYear + i);
580
+ }
581
+ /**
582
+ * @description Method to Determines whether date selectable is
583
+ * @author Shiva Kant
584
+ * @param date
585
+ * @returns true if date selectable
586
+ */
587
+ isDateSelectable(date) {
588
+ const min = this.minDate ? new Date(this.minDate) : null;
589
+ const max = this.maxDate ? new Date(this.maxDate) : null;
590
+ if (min && date < min)
591
+ return false;
592
+ if (max && date > max)
593
+ return false;
594
+ return true;
595
+ }
596
+ /**
597
+ * @description Method to Determines whether day disabled is
598
+ * @author Shiva Kant
599
+ * @param day
600
+ * @returns true if day disabled
601
+ */
602
+ isDayDisabled(day) {
603
+ const date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), day);
604
+ return !this.isDateSelectable(date);
605
+ }
606
+ /**
607
+ * @description Method to Generates calendar
608
+ * @author Shiva Kant
609
+ */
610
+ generateCalendar() {
611
+ const year = this.currentDate.getFullYear();
612
+ const month = this.currentDate.getMonth();
613
+ const firstDayOfMonth = new Date(year, month, 1);
614
+ const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0
615
+ const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();
616
+ const daysInPreviousMonth = new Date(year, month, 0).getDate();
617
+ const totalCells = 42; // 6 rows of 7 days
618
+ const calendarDays = [];
619
+ // Fill previous month days
620
+ for (let i = firstWeekDay - 1; i >= 0; i--) {
621
+ const day = daysInPreviousMonth - i;
622
+ const date = new Date(year, month - 1, day);
623
+ calendarDays.push({ day, date, isCurrentMonth: false });
624
+ }
625
+ // Fill current month days
626
+ for (let day = 1; day <= daysInCurrentMonth; day++) {
627
+ const date = new Date(year, month, day);
628
+ calendarDays.push({ day, date, isCurrentMonth: true });
629
+ }
630
+ // Fill next month days
631
+ const remaining = totalCells - calendarDays.length;
632
+ for (let day = 1; day <= remaining; day++) {
633
+ const date = new Date(year, month + 1, day);
634
+ calendarDays.push({ day, date, isCurrentMonth: false });
635
+ }
636
+ this.daysInMonth = calendarDays;
637
+ }
638
+ /**
639
+ * @description Method to Previous month
640
+ * @author Shiva Kant
641
+ */
642
+ previousMonth() {
643
+ this.currentDate.setMonth(this.currentDate.getMonth() - 1);
644
+ this.updateCurrentYearMonth();
645
+ this.selectedDay = 0;
646
+ this.generateCalendar();
647
+ }
648
+ /**
649
+ * @description Method to Next month
650
+ * @author Shiva Kant
651
+ */
652
+ nextMonth() {
653
+ this.currentDate.setMonth(this.currentDate.getMonth() + 1);
654
+ this.updateCurrentYearMonth();
655
+ this.selectedDay = 0;
656
+ this.generateCalendar();
657
+ }
658
+ /**
659
+ * @description Method to Initializes calendar when preSelectedValue date
660
+ * @author Shiva Kant
661
+ * @returns calendar
662
+ */
663
+ initializeCalendar() {
664
+ if (!this.preSelectedValue)
665
+ return;
666
+ // Case 1: Single date (string or Date)
667
+ if (typeof this.preSelectedValue === 'string' ||
668
+ this.preSelectedValue instanceof Date) {
669
+ const date = new Date(this.preSelectedValue);
670
+ this.selectedDate = date.getDate();
671
+ this.selectedMonth = date.getMonth();
672
+ this.selectedYear = date.getFullYear();
673
+ this.selectedTime = this.formatTime(date);
674
+ // Update current view to show the month/year
675
+ this.currentDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDate);
676
+ this.generateCalendar();
677
+ }
678
+ // Case 2: Range of dates
679
+ else if (this.preSelectedValue.start && this.preSelectedValue.end) {
680
+ const startDate = new Date(this.preSelectedValue.start);
681
+ const endDate = new Date(this.preSelectedValue.end);
682
+ // Patch component state
683
+ this.rangeStart = startDate.getDate();
684
+ this.rangeEnd = endDate.getDate();
685
+ this.selectedStartDate = startDate;
686
+ this.selectedEndDate = endDate;
687
+ this.selectedMonth = startDate.getMonth();
688
+ this.selectedYear = startDate.getFullYear();
689
+ // Set the current calendar view to the start month/year
690
+ this.currentDate = new Date(this.selectedYear, this.selectedMonth, 1);
691
+ this.generateCalendar();
692
+ // Optional: If your calendar requires a single selectedTime for range, you could pick start or end
693
+ this.selectedTime = this.formatTime(startDate);
694
+ // Emit initial range value
695
+ this.emitDateTime();
696
+ }
697
+ }
698
+ /**
699
+ * @description Method to Selects date
700
+ * @author Shiva Kant
701
+ * @param date
702
+ */
703
+ selectDate(date) {
704
+ const selectedFullDate = new Date(this.currentYear, this.currentMonth, date);
705
+ selectedFullDate.setHours(0, 0, 0, 0);
706
+ this.selectedMonth = this.currentMonth;
707
+ this.selectedYear = this.currentYear;
708
+ if (this.dateConfig.selectionMode === 'single') {
709
+ this.selectedDate = date;
710
+ this.rangeStart = null;
711
+ this.rangeEnd = null;
712
+ }
713
+ else {
714
+ if (!this.rangeStart || this.rangeEnd) {
715
+ this.rangeStart = date;
716
+ this.rangeEnd = null;
717
+ }
718
+ else {
719
+ this.rangeEnd = date < this.rangeStart ? this.rangeStart : date;
720
+ this.rangeStart = date < this.rangeStart ? date : this.rangeStart;
721
+ }
722
+ }
723
+ this.emitDateTime();
724
+ }
725
+ /**
726
+ * @description Method to Selects time
727
+ * @author Shiva Kant
728
+ * @param time
729
+ */
730
+ selectTime(time) {
731
+ this.selectedTime = time;
732
+ this.emitDateTime();
733
+ }
734
+ /**
735
+ * @description Method to Determines whether selected date is
736
+ * @author Shiva Kant
737
+ * @param date
738
+ * @returns
739
+ */
740
+ isSelectedDate(date, month, year) {
741
+ if (this.dateConfig.selectionMode === 'single') {
742
+ // Check if the day, month, and year match
743
+ return (this.selectedDate === date &&
744
+ this.selectedMonth === month &&
745
+ this.selectedYear === year);
746
+ }
747
+ else if (this.dateConfig.selectionMode === 'range') {
748
+ // Range selection checks, ensuring both start and end dates are within the same month and year
749
+ return !!((this.rangeStart &&
750
+ this.rangeStart === date &&
751
+ this.selectedMonth === month &&
752
+ this.selectedYear === year) ||
753
+ (this.rangeEnd &&
754
+ this.rangeEnd === date &&
755
+ this.selectedMonth === month &&
756
+ this.selectedYear === year) ||
757
+ (this.rangeStart &&
758
+ this.rangeEnd &&
759
+ date > this.rangeStart &&
760
+ date < this.rangeEnd &&
761
+ this.selectedMonth === month &&
762
+ this.selectedYear === year));
763
+ }
764
+ return false;
765
+ }
766
+ /**
767
+ * @description Method to Generates time ranges
768
+ * @author Shiva Kant
769
+ */
770
+ generateTimeRanges() {
771
+ const startTime = new Date();
772
+ startTime.setHours(0, 0, 0, 0);
773
+ this.timeSlots = Array.from({ length: 48 }, (_, i) => {
774
+ const time = new Date(startTime.getTime() + i * 30 * 60 * 1000);
775
+ return { value: time, label: this.formatTime(time) };
776
+ });
777
+ }
778
+ /**
779
+ * @description Method to Formats time
780
+ * @author Shiva Kant
781
+ * @param date
782
+ * @returns time
783
+ */
784
+ formatTime(date) {
785
+ return date.toLocaleTimeString('en-US', {
786
+ hour: '2-digit',
787
+ minute: '2-digit',
788
+ hour12: true,
789
+ });
790
+ }
791
+ /**
792
+ * @description Method to Formats date time
793
+ * @author Shiva Kant
794
+ * @param fullDate
795
+ * @param selectedTime
796
+ * @returns date time
797
+ */
798
+ formatDateTime(fullDate, selectedTime) {
799
+ const date = new Date(fullDate);
800
+ if (!selectedTime) {
801
+ // Only date formatting when time not required
802
+ return this.datePipe.transform(date, 'MM/dd/yyyy');
803
+ }
804
+ const [time, period] = selectedTime.split(' ');
805
+ let [hours, minutes] = time.split(':').map(Number);
806
+ // Convert 12-hour → 24-hour
807
+ if (period === 'PM' && hours !== 12)
808
+ hours += 12;
809
+ if (period === 'AM' && hours === 12)
810
+ hours = 0;
811
+ date.setHours(hours, minutes, 0, 0);
812
+ return this.datePipe.transform(date, 'yyyy/MM/dd hh:mm a');
813
+ }
814
+ /**
815
+ * @description Method to Emits date time
816
+ * @author Shiva Kant
817
+ * @returns date time
818
+ */
819
+ emitDateTime() {
820
+ if (this.dateConfig.enableTime && !this.selectedTime) {
821
+ return; // wait until user selects time
822
+ }
823
+ if (this.dateConfig.selectionMode === 'single') {
824
+ if (!this.selectedDate)
825
+ return;
826
+ const fullDate = new Date(this.currentYear, this.currentMonth, this.selectedDate);
827
+ this.selectedDateTime = this.formatDateTime(fullDate || '', this.dateConfig.enableTime ? this.selectedTime : null);
828
+ this.writeValue(this.selectedDateTime);
829
+ this.date = this.selectedDate;
830
+ this.dateTimeSelected.emit(this.selectedDateTime);
831
+ this.closeCalendar();
832
+ return;
833
+ }
834
+ if (this.dateConfig.selectionMode === 'range') {
835
+ if (!this.rangeStart || !this.rangeEnd)
836
+ return;
837
+ const startDate = new Date(this.currentYear, this.currentMonth, this.rangeStart);
838
+ const endDate = new Date(this.currentYear, this.currentMonth, this.rangeEnd);
839
+ const startDateTime = this.formatDateTime(startDate, this.dateConfig.enableTime ? this.selectedTime : null);
840
+ const endDateTime = this.formatDateTime(endDate, this.dateConfig.enableTime ? this.selectedTime : null);
841
+ const rangeResult = { start: startDateTime, end: endDateTime };
842
+ this.writeValue(rangeResult);
843
+ this.dateTimeSelected.emit(rangeResult);
844
+ this.closeCalendar();
845
+ }
846
+ }
847
+ 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 });
848
+ 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: [
849
+ {
850
+ provide: NG_VALUE_ACCESSOR,
851
+ useExisting: CommonCalendarComponent,
852
+ multi: true,
853
+ },
854
+ DatePipe,
855
+ ], 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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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" }] });
856
+ }
857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonCalendarComponent, decorators: [{
858
+ type: Component,
859
+ args: [{ selector: 'lib-common-calendar', imports: [CommonModule, OutsideClickDirective], providers: [
860
+ {
861
+ provide: NG_VALUE_ACCESSOR,
862
+ useExisting: CommonCalendarComponent,
863
+ multi: true,
864
+ },
865
+ DatePipe,
866
+ ], 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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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"] }]
867
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DatePipe }], propDecorators: { dateTimeSelected: [{
868
+ type: Output
869
+ }], dateConfig: [{
870
+ type: Input
871
+ }], minDate: [{
872
+ type: Input
873
+ }], maxDate: [{
874
+ type: Input
875
+ }], preSelectedValue: [{
876
+ type: Input
877
+ }] } });
878
+
130
879
  class CatsDataGridComponent {
131
880
  cd;
132
881
  tableOptions;
@@ -140,8 +889,9 @@ class CatsDataGridComponent {
140
889
  selectedRowEmpty = false;
141
890
  filterRequired = true;
142
891
  threeDotsMenuRequired = true;
143
- height = 300;
144
- groupBy = [];
892
+ showDropdown = false;
893
+ height = 400;
894
+ groupByRequired = false;
145
895
  onPaginationChange = new EventEmitter();
146
896
  onCheckboxSelection = new EventEmitter();
147
897
  onScrollEmitter = new EventEmitter();
@@ -158,7 +908,7 @@ class CatsDataGridComponent {
158
908
  max: 20,
159
909
  };
160
910
  sortingColumnIndex;
161
- sortingType = '';
911
+ sortingType = {};
162
912
  selectedRow = [];
163
913
  pageSizeList = [20, 50, 75, 100];
164
914
  showPageSizeList = false;
@@ -177,6 +927,32 @@ class CatsDataGridComponent {
177
927
  startWidth = 0;
178
928
  isResizing = false;
179
929
  groupedResult = [];
930
+ showMoveIcon = {};
931
+ columnDraggable = [];
932
+ activeGroups = [];
933
+ groupBy = [];
934
+ dragGroupIndex = null;
935
+ dateConfig = {
936
+ selectionMode: 'single',
937
+ enableTime: false,
938
+ };
939
+ filterOptions = [
940
+ { label: 'Contains', value: 'contains' },
941
+ { label: 'Does Not Contain', value: 'doesNotContain' },
942
+ { label: 'Equals', value: 'equals' },
943
+ { label: 'Does Not Equal', value: 'doesNotEqual' },
944
+ { label: 'Starts With', value: 'startsWith' },
945
+ { label: 'Ends With', value: 'endsWith' },
946
+ ];
947
+ numberFilterOptions = [
948
+ { label: 'Equals', value: '=' },
949
+ { label: 'Greater Than', value: '>' },
950
+ { label: 'Less Than', value: '<' },
951
+ { label: 'Greater Than or Equal', value: '>=' },
952
+ { label: 'Less Than or Equal', value: '<=' },
953
+ ];
954
+ showPin = false;
955
+ pinActionClicked = {};
180
956
  constructor(cd) {
181
957
  this.cd = cd;
182
958
  }
@@ -202,6 +978,7 @@ class CatsDataGridComponent {
202
978
  [...this.selectedRow, row];
203
979
  return row;
204
980
  });
981
+ // this.originalRowData = structuredClone(this.rowData);
205
982
  this.getGroupedData();
206
983
  }
207
984
  }
@@ -212,8 +989,9 @@ class CatsDataGridComponent {
212
989
  * @returns {any[]} - Updated column definitions with filter/menu
213
990
  */
214
991
  getUpdatedColDefs(colDefs) {
215
- return colDefs.map((col) => {
216
- // Default filterType
992
+ return colDefs.map((col, index) => {
993
+ this.sortingType[index] = '';
994
+ col.colId = `${Date.now()}_${index}`;
217
995
  if (col.fieldName === 'action') {
218
996
  col.isAction = true;
219
997
  }
@@ -224,10 +1002,11 @@ class CatsDataGridComponent {
224
1002
  col.numberLogic = 'AND';
225
1003
  let updatedCol = {
226
1004
  ...col,
227
- filter: col.filterable ?? true,
228
- menu: col.columnAction ?? true,
1005
+ filterable: col.filterable ?? true,
1006
+ columnAction: col.columnAction ?? true,
1007
+ sortable: col.sortable ?? true,
229
1008
  };
230
- if (!updatedCol.filter) {
1009
+ if (!updatedCol.filterable) {
231
1010
  return updatedCol;
232
1011
  }
233
1012
  switch (col.filterType) {
@@ -392,8 +1171,8 @@ class CatsDataGridComponent {
392
1171
  // *********** NUMBER FILTER ***********
393
1172
  if (col.filterType === 'number') {
394
1173
  const [c1, c2] = col.numberFilters;
395
- const numValue1 = Number(c1.numberValue.trim());
396
- const numValue2 = Number(c2.numberValue.trim());
1174
+ const numValue1 = Number(c1.numberValue);
1175
+ const numValue2 = Number(c2.numberValue);
397
1176
  if (!numValue1 && !numValue2) {
398
1177
  this.activeFilters.delete(col.fieldName);
399
1178
  return;
@@ -433,8 +1212,8 @@ class CatsDataGridComponent {
433
1212
  }
434
1213
  // *********** SET FILTER ***********
435
1214
  if (col.filterType === 'set') {
436
- if (col.selectedValues.size >= 0 &&
437
- col.selectedValues.size !== col.options.length) {
1215
+ if (col.selectedValues?.size >= 0 &&
1216
+ col.selectedValues?.size !== col.options.length) {
438
1217
  result = result.filter((r) => {
439
1218
  const value = r[field];
440
1219
  if (Array.isArray(value) &&
@@ -459,6 +1238,34 @@ class CatsDataGridComponent {
459
1238
  this.getGroupedData();
460
1239
  this.filter.emit(this.filteredData);
461
1240
  }
1241
+ resetFilter(col) {
1242
+ switch (col.filterType) {
1243
+ case 'text': {
1244
+ col.textFilters.forEach((f) => (f.filterValue = ''));
1245
+ col.textLogic = 'AND';
1246
+ break;
1247
+ }
1248
+ case 'number': {
1249
+ col.numberFilters.forEach((f) => (f.numberValue = ''));
1250
+ col.numberLogic = 'AND';
1251
+ break;
1252
+ }
1253
+ case 'date': {
1254
+ col.dateFilters.forEach((f) => (f.dateValue = ''));
1255
+ col.textLogic = 'AND';
1256
+ break;
1257
+ }
1258
+ case 'set': {
1259
+ // Select all values again
1260
+ col.selectedValues = new Set(col.options);
1261
+ break;
1262
+ }
1263
+ }
1264
+ // Remove active flag
1265
+ this.activeFilters.delete(col.fieldName);
1266
+ // Re-apply all filters
1267
+ this.applyAllFilters();
1268
+ }
462
1269
  /**
463
1270
  * @description Method to change the data format to utc
464
1271
  * @author Anand Pandey
@@ -539,24 +1346,12 @@ class CatsDataGridComponent {
539
1346
  */
540
1347
  openMenu(event, col, index) {
541
1348
  event.stopPropagation();
1349
+ this.showPin = false;
542
1350
  this.activeFilterIndex = null;
543
1351
  this.menuVisible = this.menuVisible.map(() => false);
544
1352
  if (!this.menuVisible[index])
545
1353
  this.menuVisible[index] = false;
546
1354
  const rect = event.target.getBoundingClientRect();
547
- this.menuPosition[index] = {
548
- top: rect.bottom + 4 + 'px',
549
- left: rect.left + 'px',
550
- };
551
- const menuWidth = 160;
552
- const screenWidth = window.innerWidth;
553
- const padding = 10;
554
- //FIX: Stop overflow on the right
555
- if (parseInt(this.menuPosition[index].left) + menuWidth >
556
- screenWidth - padding) {
557
- this.menuPosition[index].left = screenWidth - menuWidth - padding + 'px';
558
- }
559
- // Open only this one
560
1355
  this.menuVisible[index] = true;
561
1356
  }
562
1357
  /**
@@ -566,14 +1361,25 @@ class CatsDataGridComponent {
566
1361
  * @param {string} type - Type defines the sorting type whether this is ascending, descending.
567
1362
  * @returns {void}
568
1363
  */
569
- onSort(fieldName, type) {
570
- this.sortingType = type;
571
- if (this.sortingType == 'asc' || this.sortingType == '') {
572
- this.ascendingOrder(fieldName);
1364
+ onSort(col, type, sortingColumIndex) {
1365
+ this.sortingType[sortingColumIndex] = type;
1366
+ this.sortingColumnIndex = sortingColumIndex;
1367
+ Object.keys(this.sortingType).forEach((k) => {
1368
+ if (k !== String(sortingColumIndex))
1369
+ this.sortingType[k] = '';
1370
+ });
1371
+ if (this.sortingType[sortingColumIndex] == 'asc') {
1372
+ this.ascendingOrder(col);
1373
+ }
1374
+ else if (this.sortingType[sortingColumIndex] == 'dsc') {
1375
+ this.descendingOrder(col);
573
1376
  }
574
1377
  else {
575
- this.descendingOrder(fieldName);
1378
+ this.rowData = structuredClone(this.originalRowData);
576
1379
  }
1380
+ // if (this.sortingType[sortingColumIndex] == '') {
1381
+ // this.rowData = this.originalRowData;
1382
+ // }
577
1383
  this.getGroupedData();
578
1384
  this.menuVisible[this.currentIndex] = false;
579
1385
  }
@@ -679,48 +1485,56 @@ class CatsDataGridComponent {
679
1485
  * @param {number} index - The index of column from table on clicking pin or unpin from three dots menu.
680
1486
  * @returns {void}
681
1487
  */
682
- pinColumn(col, index) {
683
- col.pinned = !col.pinned;
684
- if (col.pinned) {
1488
+ pinColumn(col, index, direction) {
1489
+ this.pinActionClicked[col.colId] = direction;
1490
+ col.leftPinned = direction === 'left';
1491
+ col.rightPinned = direction === 'right';
1492
+ if (col.leftPinned) {
685
1493
  this.colDefs.splice(index, 1);
686
- // const pinnedCount = this.colDefs.filter((col) => col.pinned).length;
687
- // this.colDefs.splice(pinnedCount, 0, col);
688
1494
  this.colDefs = [col, ...this.colDefs];
689
1495
  }
1496
+ else if (col.rightPinned) {
1497
+ this.colDefs.splice(index, 1);
1498
+ this.colDefs.splice(this.colDefs.length - 1, 0, col);
1499
+ }
690
1500
  else {
691
1501
  const indx = this.originalColDefs.findIndex((dt) => dt.fieldName === col.fieldName);
692
- if (indx > 0) {
1502
+ if (index >= 0) {
693
1503
  this.colDefs.splice(index, 1);
694
1504
  this.colDefs.splice(indx, 0, col);
695
1505
  }
696
1506
  }
697
- this.colDefs.forEach((dt, indx) => {
698
- if (indx > 0 && dt.pinned) {
699
- dt.pinned = false;
700
- const id = this.originalColDefs.findIndex((colDt) => colDt.fieldName === dt.fieldName);
701
- if (id > 0) {
702
- this.colDefs.splice(indx, 1);
703
- this.colDefs.splice(id, 0, dt);
704
- }
705
- }
706
- });
707
1507
  this.updatePinnedOffsets();
708
1508
  this.onClickOutside();
709
1509
  }
1510
+ showPinActions() {
1511
+ this.showPin = true;
1512
+ }
1513
+ hidePinActions() {
1514
+ this.showPin = false;
1515
+ }
710
1516
  /**
711
- * @description Updates the horizontal left offsets of pinned columns by assigning cumulative widths to each pinned column and resetting non-pinned columns.
712
- * @author Anand
1517
+ * @description Updates the horizontal left and right offsets of pinned columns by assigning cumulative widths to each pinned column and resetting non-pinned columns.
1518
+ * @author Anand Pandey
713
1519
  * @returns void
714
1520
  */
715
1521
  updatePinnedOffsets() {
716
1522
  let leftOffset = 0;
1523
+ let rightOffset = 0;
1524
+ // LEFT pinned (normal order)
717
1525
  this.colDefs.forEach((col) => {
718
- if (col.pinned) {
1526
+ if (col.leftPinned) {
719
1527
  col.left = leftOffset;
1528
+ col.right = null;
720
1529
  leftOffset += col.width || 120;
721
1530
  }
722
- else {
1531
+ });
1532
+ // RIGHT pinned (REVERSE order)
1533
+ [...this.colDefs].reverse().forEach((col) => {
1534
+ if (col.rightPinned) {
1535
+ col.right = rightOffset;
723
1536
  col.left = null;
1537
+ rightOffset += col.width || 120;
724
1538
  }
725
1539
  });
726
1540
  }
@@ -732,12 +1546,20 @@ class CatsDataGridComponent {
732
1546
  * @param toParse - field value
733
1547
  * @returns string
734
1548
  */
735
- parseColValue(row, toParse) {
736
- if (!toParse?.includes('.')) {
737
- return row[toParse] || '-';
1549
+ parseColValue(row, col) {
1550
+ if (!col?.fieldName?.includes('.')) {
1551
+ if (Array.isArray(row[col.fieldName])) {
1552
+ if (row[col.fieldName].every((dt) => typeof dt === 'string')) {
1553
+ return row[col.fieldName][0];
1554
+ }
1555
+ if (row[col.fieldName].every((dt) => typeof dt === 'object')) {
1556
+ return row[col.fieldName][0][col.cellRendererParams.tagKey];
1557
+ }
1558
+ }
1559
+ return row[col.fieldName] || '-';
738
1560
  }
739
1561
  else {
740
- let toParseArr = toParse.split('.');
1562
+ let toParseArr = col?.fieldName.split('.');
741
1563
  let val = row;
742
1564
  for (const key of toParseArr) {
743
1565
  val =
@@ -851,16 +1673,25 @@ class CatsDataGridComponent {
851
1673
  if (!col.sortable)
852
1674
  return;
853
1675
  this.sortingColumnIndex = sortingColumIndex;
854
- this.sortingType = !this.sortingType
855
- ? 'asc'
856
- : this.sortingType == 'asc'
857
- ? 'dsc'
858
- : 'asc';
859
- if (this.sortingType == 'asc' || this.sortingType == '') {
860
- this.ascendingOrder(col?.fieldName);
1676
+ Object.keys(this.sortingType).forEach((k) => {
1677
+ if (k !== String(sortingColumIndex))
1678
+ this.sortingType[k] = '';
1679
+ });
1680
+ if (!this.sortingType[sortingColumIndex]) {
1681
+ this.sortingType[sortingColumIndex] = 'asc';
1682
+ }
1683
+ else {
1684
+ this.sortingType[sortingColumIndex] =
1685
+ this.sortingType[sortingColumIndex] === 'asc' ? 'dsc' : '';
1686
+ }
1687
+ if (this.sortingType[sortingColumIndex] == 'asc') {
1688
+ this.ascendingOrder(col);
1689
+ }
1690
+ else if (this.sortingType[sortingColumIndex] == 'dsc') {
1691
+ this.descendingOrder(col);
861
1692
  }
862
1693
  else {
863
- this.descendingOrder(col?.fieldName);
1694
+ this.rowData = structuredClone(this.originalRowData);
864
1695
  }
865
1696
  this.getGroupedData();
866
1697
  }
@@ -868,13 +1699,20 @@ class CatsDataGridComponent {
868
1699
  * @description method to sort table in ascending order according to given field
869
1700
  * @param fieldName
870
1701
  */
871
- ascendingOrder(fieldName) {
1702
+ ascendingOrder(col) {
872
1703
  this.rowData = this.rowData.sort((a, b) => {
873
- if (this.parseColValue(a, fieldName) > this.parseColValue(b, fieldName)) {
874
- return 1;
1704
+ const valA = this.parseColValue(a, col);
1705
+ const valB = this.parseColValue(b, col);
1706
+ if (typeof valA === 'string' && typeof valB === 'string') {
1707
+ return valA.localeCompare(valB);
875
1708
  }
876
1709
  else {
877
- return -1;
1710
+ if (valA > valB) {
1711
+ return 1;
1712
+ }
1713
+ else {
1714
+ return -1;
1715
+ }
878
1716
  }
879
1717
  });
880
1718
  }
@@ -882,13 +1720,20 @@ class CatsDataGridComponent {
882
1720
  * @description method to sort table in descending order according to given field
883
1721
  * @param fieldName
884
1722
  */
885
- descendingOrder(fieldName) {
1723
+ descendingOrder(col) {
886
1724
  this.rowData = this.rowData.sort((a, b) => {
887
- if (this.parseColValue(a, fieldName) > this.parseColValue(b, fieldName)) {
888
- return -1;
1725
+ const valA = this.parseColValue(a, col);
1726
+ const valB = this.parseColValue(b, col);
1727
+ if (typeof valA === 'string' && typeof valB === 'string') {
1728
+ return valA.localeCompare(valB) * -1;
889
1729
  }
890
1730
  else {
891
- return 1;
1731
+ if (valA > valB) {
1732
+ return -1;
1733
+ }
1734
+ else {
1735
+ return 1;
1736
+ }
892
1737
  }
893
1738
  });
894
1739
  }
@@ -908,7 +1753,8 @@ class CatsDataGridComponent {
908
1753
  }
909
1754
  else {
910
1755
  this.rowData = this.rowData.map((data) => {
911
- data.isSelected = false;
1756
+ if (!data.isLocked)
1757
+ data.isSelected = false;
912
1758
  return data;
913
1759
  });
914
1760
  this.selectedRow = [];
@@ -947,7 +1793,7 @@ class CatsDataGridComponent {
947
1793
  * @param col
948
1794
  * @returns {object}
949
1795
  */
950
- getStyle(col) {
1796
+ getStyle(col, type) {
951
1797
  const style = {
952
1798
  width: `${col.width ?? 150}px`,
953
1799
  minWidth: `${col.minWidth ?? 50}px`,
@@ -955,20 +1801,29 @@ class CatsDataGridComponent {
955
1801
  if (col.isAction) {
956
1802
  style.position = 'sticky';
957
1803
  style.right = '0px';
958
- style.zIndex = 20;
1804
+ style.zIndex = 1;
959
1805
  style.background = '#fff';
960
- style.width = '30px';
961
- style.minWidth = '30px';
1806
+ style.width = '60px';
1807
+ style.minWidth = '60px';
962
1808
  }
963
- else if (col.pinned) {
1809
+ else if (col.leftPinned) {
964
1810
  style.position = 'sticky';
965
1811
  style.left = col.left + 'px';
966
1812
  style.zIndex = 12;
967
1813
  style.background = '#fff';
968
1814
  }
1815
+ else if (col.rightPinned) {
1816
+ style.position = 'sticky';
1817
+ style.right = col.right + 'px';
1818
+ style.zIndex = 12;
1819
+ style.background = '#fff';
1820
+ }
969
1821
  else {
970
1822
  style.position = '';
971
1823
  }
1824
+ if (type === 'action') {
1825
+ style.background = '#f0f0f0';
1826
+ }
972
1827
  return style;
973
1828
  }
974
1829
  onClickOutside() {
@@ -1007,12 +1862,55 @@ class CatsDataGridComponent {
1007
1862
  * @returns {void}
1008
1863
  */
1009
1864
  onDragStart(event, index) {
1865
+ this.dragGroupIndex = null;
1866
+ const target = event.target;
1010
1867
  if (this.isResizing) {
1011
1868
  event.preventDefault();
1012
1869
  return;
1013
1870
  }
1014
1871
  this.draggedIndex = index;
1872
+ // For column reorder.
1015
1873
  event.dataTransfer?.setData('text/plain', index.toString());
1874
+ // For group panel
1875
+ event.dataTransfer?.setData('columnIndex', index.toString());
1876
+ const th = target.closest('th');
1877
+ if (!th)
1878
+ return;
1879
+ const clone = th.cloneNode(true);
1880
+ this.copyComputedStyles(th, clone);
1881
+ clone.style.position = 'absolute';
1882
+ clone.style.top = '-9999px';
1883
+ clone.style.left = '-9999px';
1884
+ clone.style.pointerEvents = 'none';
1885
+ document.body.appendChild(clone);
1886
+ event.dataTransfer?.setDragImage(clone, 0, 0);
1887
+ setTimeout(() => clone.remove(), 0);
1888
+ }
1889
+ onGroupDragStart(event, index) {
1890
+ event.dataTransfer?.setData('groupIndex', index.toString());
1891
+ this.dragGroupIndex = index;
1892
+ }
1893
+ /**
1894
+ * @author Anand Pandey
1895
+ * @description Copies computed CSS styles from the source element to the target element, including all child elements recursively.
1896
+ * @param {HTMLElement} source - Original element.
1897
+ * @param {HTMLElement} target - Cloned element.
1898
+ * @returns {void}
1899
+ */
1900
+ copyComputedStyles(source, target) {
1901
+ const computed = window.getComputedStyle(source);
1902
+ for (const prop of computed) {
1903
+ target.style.setProperty(prop, computed.getPropertyValue(prop));
1904
+ }
1905
+ // Copy children styles recursively
1906
+ const sourceChildren = Array.from(source.children);
1907
+ const targetChildren = Array.from(target.children);
1908
+ sourceChildren.forEach((srcChild, i) => {
1909
+ const tgtChild = targetChildren[i];
1910
+ if (srcChild && tgtChild) {
1911
+ this.copyComputedStyles(srcChild, tgtChild);
1912
+ }
1913
+ });
1016
1914
  }
1017
1915
  /**
1018
1916
  * @author Tarun Kumar
@@ -1053,23 +1951,163 @@ class CatsDataGridComponent {
1053
1951
  this.draggedIndex = null;
1054
1952
  this.dragOverIndex = null;
1055
1953
  }
1954
+ /**
1955
+ * @description Handles drag over on group panel to allow dropping.
1956
+ * @author Anand Pandey
1957
+ * @param {DragEvent} event
1958
+ * @returns {void}
1959
+ */
1960
+ onGroupDragOver(event) {
1961
+ event.preventDefault();
1962
+ }
1963
+ /**
1964
+ * @description Handles drag over on a group tag and updates the target index for reordering.
1965
+ * @author Anand Pandey
1966
+ * @param {DragEvent} event
1967
+ * @param {number} index
1968
+ * @returns {void}
1969
+ */
1970
+ onActiveDragOver(event, index) {
1971
+ event.preventDefault();
1972
+ event.stopPropagation();
1973
+ this.dragGroupIndex = index;
1974
+ }
1975
+ /**
1976
+ * @description Handles drop on group panel and routes the drop to group reordering or column grouping logic.
1977
+ * @author Anand Pandey
1978
+ * @param {DragEvent} event
1979
+ * @returns {void}
1980
+ */
1981
+ onGroupDrop(event) {
1982
+ const colIndex = Number(event.dataTransfer?.getData('columnIndex'));
1983
+ const groupIndex = Number(event.dataTransfer?.getData('groupIndex'));
1984
+ const target = event.target;
1985
+ const isOverGroupPanel = target.closest('.group-tag');
1986
+ if (this.dragGroupIndex !== null &&
1987
+ this.dragGroupIndex >= 0 &&
1988
+ groupIndex >= 0) {
1989
+ if (!isOverGroupPanel) {
1990
+ this.dragGroupIndex = this.activeGroups.length - 1;
1991
+ }
1992
+ this.onActiveGroupDrop(event, this.dragGroupIndex);
1993
+ }
1994
+ else {
1995
+ if (isNaN(colIndex))
1996
+ return;
1997
+ if (colIndex)
1998
+ this.dragGroupIndex = null;
1999
+ const col = this.colDefs[colIndex];
2000
+ const el = this.activeGroups.find((c) => c.fieldName === col.fieldName);
2001
+ if (!el) {
2002
+ this.activeGroups.push(col);
2003
+ this.groupBy.push(col.fieldName);
2004
+ }
2005
+ this.colDefs.splice(colIndex, 1);
2006
+ // this.applyGrouping();
2007
+ this.getGroupedData();
2008
+ }
2009
+ }
2010
+ /**
2011
+ * @description Handles column grouping triggered from the column action menu by adding the column to the active group list,
2012
+ * removing it from visible columns, and recalculating grouped row data.
2013
+ *
2014
+ * @param {any} col - The column definition selected for grouping.
2015
+ * @param {number} index - Index of the column in the current column definitions array.
2016
+ * @returns {void}
2017
+ */
2018
+ groupByColumnAction(col, index) {
2019
+ this.activeGroups.push(col);
2020
+ this.groupBy.push(col.fieldName);
2021
+ this.colDefs.splice(index, 1);
2022
+ this.getGroupedData();
2023
+ this.onClickOutside();
2024
+ }
2025
+ /**
2026
+ * @description Handles drop on a group tag and reorders the active groups accordingly.
2027
+ * @author Anand Pandey
2028
+ * @param {DragEvent} event
2029
+ * @param {number} index
2030
+ * @returns {void}
2031
+ */
2032
+ onActiveGroupDrop(event, index) {
2033
+ event.stopPropagation();
2034
+ const groupIndex = Number(event.dataTransfer?.getData('groupIndex'));
2035
+ if (isNaN(groupIndex))
2036
+ return;
2037
+ if (groupIndex === index)
2038
+ return;
2039
+ const item = this.groupBy.splice(groupIndex, 1)[0];
2040
+ this.groupBy.splice(index, 0, item);
2041
+ const col = this.activeGroups.splice(groupIndex, 1)[0];
2042
+ this.activeGroups.splice(index, 0, col);
2043
+ this.getGroupedData();
2044
+ }
2045
+ /**
2046
+ * @description Removes a group tag and restores the column to available columns list.
2047
+ * @author Anand Pandey
2048
+ * @param {any} col
2049
+ * @param {number} id
2050
+ * @returns {void}
2051
+ */
2052
+ removeGroup(col, id) {
2053
+ this.activeGroups.splice(id, 1);
2054
+ const colIndex = this.originalColDefs.findIndex((dt) => dt.fieldName === col.fieldName);
2055
+ this.colDefs.splice(colIndex, 0, col);
2056
+ this.groupBy.splice(id, 1);
2057
+ if (this.groupBy.length === 0) {
2058
+ this.groupedResult = [];
2059
+ }
2060
+ else {
2061
+ this.getGroupedData();
2062
+ }
2063
+ }
2064
+ toggleDropdown() {
2065
+ this.showDropdown = !this.showDropdown;
2066
+ }
2067
+ selectFilter(option, col) {
2068
+ col.textFilters[0].filterType = option.value;
2069
+ this.showDropdown = false;
2070
+ }
2071
+ getSelectedFilterLabel(value) {
2072
+ return this.filterOptions.find((o) => o.value === value)?.label || '';
2073
+ }
1056
2074
  toggleFilter(col, index, event) {
1057
- event.stopPropagation(); // prevent header click from triggering sort
2075
+ event.stopPropagation();
1058
2076
  this.activeFilterIndex = this.activeFilterIndex === index ? null : index;
1059
2077
  this.menuVisible = this.menuVisible.map(() => false);
1060
2078
  }
1061
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CatsDataGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1062
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", 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", groupBy: "groupBy", 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]=\"!isResizing\"\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)\"\r\n >\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n\r\n @if (sortingRequired && sortingColumnIndex == $index &&\r\n col?.sortable) {\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.filterable){\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 id=\"filter-popup-{{ $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 <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.filterType === 'number'){\r\n <select [(ngModel)]=\"col.numberFilters[0].filterType\">\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].filterType\">\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 @if(col.filterType === 'date'){\r\n <select [(ngModel)]=\"col.dateFilters[0].filterType\">\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.dateFilters[0].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.dateFilters[0].dateValue){\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 <select [(ngModel)]=\"col.dateFilters[1].filterType\">\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.dateFilters[1].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\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\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 @for(opt of col.filteredOptions; track $index){\r\n <label>\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 }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n @if(threeDotsMenuRequired && col.columnAction){\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 } @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=\"column-menu\"\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 <li (click)=\"pinColumn(col, $index)\">\r\n <img src=\"images/pin.svg\" class=\"sorting_up\" />\r\n {{ col.pinned ? \"Unpin Column\" : \"Pin Column\" }}\r\n </li>\r\n </ul>\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]=\"colDefs.length + (checkBoxSelection ? 1 : 0)\"\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 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 <input type=\"checkbox\" [checked]=\"row.isSelected\" />\r\n </td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track $index) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n {{ row[col.fieldName] }}\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\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]=\"[\r\n col?.addClass ? col.addClass(data) : '',\r\n col.pinned ? 'pinned' : ''\r\n ]\"\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\r\n <ng-template\r\n #groupTemplate\r\n let-node\r\n let-colDefs=\"colDefs\"\r\n let-checkBoxSelection=\"checkBoxSelection\"\r\n let-level=\"level\"\r\n >\r\n <!-- GROUP HEADER -->\r\n <tr (click)=\"toggleGroup(node)\">\r\n <td\r\n [attr.colspan]=\"colDefs.length + (checkBoxSelection ? 1 : 0)\"\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 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 <tr>\r\n @if (checkBoxSelection) {\r\n <td><input type=\"checkbox\" [checked]=\"row.isSelected\" /></td>\r\n } @for (col of colDefs; track $index) {\r\n <td>{{ row[col.fieldName] }}</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\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:2;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:fixed;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{position:relative;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:fixed;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}.resizable-header{position:relative;white-space:nowrap;-webkit-user-select:none;user-select:none}.resize-handle{position:absolute;right:0;top:30%;width:6px;height:100%;color:gray;font-size:larger;cursor:w-resize}.group-cell{padding:8px 12px}.group-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.group-toggle img{width:14px;height:14px}.pinned{z-index:11!important}\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.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" }] });
2079
+ onMouseEnterHeader(index) {
2080
+ this.showMoveIcon[index] = true;
2081
+ }
2082
+ onMouseLeaveHeader(index) {
2083
+ this.showMoveIcon[index] = false;
2084
+ }
2085
+ enableColumnDrag(event, index) {
2086
+ event.stopPropagation();
2087
+ this.columnDraggable[index] = true;
2088
+ }
2089
+ disableColumnDrag(event, index) {
2090
+ event.stopPropagation();
2091
+ this.columnDraggable[index] = false;
2092
+ }
2093
+ dateTimeSelected(date) {
2094
+ this.applyAllFilters();
2095
+ }
2096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2097
+ 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 } \r\n <!-- @else{\r\n <th></th>\r\n } -->\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 [disabled]=\"data.isLocked\"\r\n [checked]=\"data.isSelected || data.isLocked\"\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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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);border-bottom:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.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-bottom: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" }] });
1063
2098
  }
1064
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CatsDataGridComponent, decorators: [{
2099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CatsDataGridComponent, decorators: [{
1065
2100
  type: Component,
1066
2101
  args: [{ selector: 'cats-data-grid', imports: [
1067
2102
  CommonModule,
1068
2103
  FormsModule,
2104
+ CommonCalendarComponent,
1069
2105
  OutsideClickDirective,
2106
+ AdaptivePositionDirective,
1070
2107
  RendererParserDirective,
1071
2108
  AddClassPipe,
1072
- ], 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]=\"!isResizing\"\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)\"\r\n >\r\n <span class=\"ellipsis headerName\">{{ col?.headerName }}</span>\r\n\r\n @if (sortingRequired && sortingColumnIndex == $index &&\r\n col?.sortable) {\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.filterable){\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 id=\"filter-popup-{{ $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 <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.filterType === 'number'){\r\n <select [(ngModel)]=\"col.numberFilters[0].filterType\">\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].filterType\">\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 @if(col.filterType === 'date'){\r\n <select [(ngModel)]=\"col.dateFilters[0].filterType\">\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.dateFilters[0].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\r\n\r\n @if(col.dateFilters[0].dateValue){\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 <select [(ngModel)]=\"col.dateFilters[1].filterType\">\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.dateFilters[1].dateValue\"\r\n (change)=\"applyAllFilters()\"\r\n />\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\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 @for(opt of col.filteredOptions; track $index){\r\n <label>\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 }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Three dots menu-->\r\n @if(threeDotsMenuRequired && col.columnAction){\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 } @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=\"column-menu\"\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 <li (click)=\"pinColumn(col, $index)\">\r\n <img src=\"images/pin.svg\" class=\"sorting_up\" />\r\n {{ col.pinned ? \"Unpin Column\" : \"Pin Column\" }}\r\n </li>\r\n </ul>\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]=\"colDefs.length + (checkBoxSelection ? 1 : 0)\"\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 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 <input type=\"checkbox\" [checked]=\"row.isSelected\" />\r\n </td>\r\n }\r\n\r\n <!-- Render columns -->\r\n @for (col of colDefs; track $index) {\r\n <td [ngStyle]=\"getStyle(col)\">\r\n {{ row[col.fieldName] }}\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\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]=\"[\r\n col?.addClass ? col.addClass(data) : '',\r\n col.pinned ? 'pinned' : ''\r\n ]\"\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\r\n <ng-template\r\n #groupTemplate\r\n let-node\r\n let-colDefs=\"colDefs\"\r\n let-checkBoxSelection=\"checkBoxSelection\"\r\n let-level=\"level\"\r\n >\r\n <!-- GROUP HEADER -->\r\n <tr (click)=\"toggleGroup(node)\">\r\n <td\r\n [attr.colspan]=\"colDefs.length + (checkBoxSelection ? 1 : 0)\"\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 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 <tr>\r\n @if (checkBoxSelection) {\r\n <td><input type=\"checkbox\" [checked]=\"row.isSelected\" /></td>\r\n } @for (col of colDefs; track $index) {\r\n <td>{{ row[col.fieldName] }}</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\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:2;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:fixed;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{position:relative;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:fixed;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}.resizable-header{position:relative;white-space:nowrap;-webkit-user-select:none;user-select:none}.resize-handle{position:absolute;right:0;top:30%;width:6px;height:100%;color:gray;font-size:larger;cursor:w-resize}.group-cell{padding:8px 12px}.group-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.group-toggle img{width:14px;height:14px}.pinned{z-index:11!important}\n"] }]
2109
+ CommonInputComponent,
2110
+ ], 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 } \r\n <!-- @else{\r\n <th></th>\r\n } -->\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 [disabled]=\"data.isLocked\"\r\n [checked]=\"data.isSelected || data.isLocked\"\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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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);border-bottom:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}.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-bottom: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"] }]
1073
2111
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { tableOptions: [{
1074
2112
  type: Input
1075
2113
  }], totalRecords: [{
@@ -1094,7 +2132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1094
2132
  type: Input
1095
2133
  }], height: [{
1096
2134
  type: Input
1097
- }], groupBy: [{
2135
+ }], groupByRequired: [{
1098
2136
  type: Input
1099
2137
  }], onPaginationChange: [{
1100
2138
  type: Output
@@ -1108,6 +2146,220 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1108
2146
  type: Input
1109
2147
  }] } });
1110
2148
 
2149
+ class CommonRendererComponent {
2150
+ params;
2151
+ static _activeRowId = signal(null, ...(ngDevMode ? [{ debugName: "_activeRowId" }] : []));
2152
+ static _activeTagId = signal(null, ...(ngDevMode ? [{ debugName: "_activeTagId" }] : []));
2153
+ // wrapper to access static signal easily
2154
+ activeRowId = CommonRendererComponent._activeRowId;
2155
+ activeTagId = CommonRendererComponent._activeTagId;
2156
+ maxVisible = 2;
2157
+ cellInit(params, data) {
2158
+ this.params = params;
2159
+ }
2160
+ /**
2161
+ * @description Returns the renderer type defined in cellRendererParams.
2162
+ * @author Anand Pandey
2163
+ * @returns {string | undefined}
2164
+ */
2165
+ get type() {
2166
+ return this.params?.cellParams?.type;
2167
+ }
2168
+ /**
2169
+ * @description Returns the renderer subtype defined in cellRendererParams.
2170
+ * @author Anand Pandey
2171
+ * @returns {string | undefined}
2172
+ */
2173
+ get actionSubType() {
2174
+ return this.params?.cellParams?.subType;
2175
+ }
2176
+ /**
2177
+ * @description Returns the cell value from params or fallback to row data field.
2178
+ * @author Anand Pandey
2179
+ * @returns {any}
2180
+ */
2181
+ get value() {
2182
+ return this.params?.value ?? this.params?.data?.[this.params?.field];
2183
+ }
2184
+ /**
2185
+ * @description Returns the list of actions configured for the action menu.
2186
+ * @author Anand Pandey
2187
+ * @returns {any[]}
2188
+ */
2189
+ get actions() {
2190
+ return this.params?.cellParams?.actions.map((action) => {
2191
+ return {
2192
+ ...action,
2193
+ class: action.class || '',
2194
+ };
2195
+ });
2196
+ }
2197
+ /**
2198
+ * @description Determines whether the current row's action menu should be open.
2199
+ * @author Anand Pandey
2200
+ * @returns {boolean}
2201
+ */
2202
+ get openActionMenu() {
2203
+ return this.activeRowId() === this.params.data.rowId;
2204
+ }
2205
+ /**
2206
+ * @description Emits a callback function defined in cellRendererParams.
2207
+ * @author Anand Pandey
2208
+ * @param {string} eventName
2209
+ * @param {any} data
2210
+ * @returns {void}
2211
+ */
2212
+ emit(eventName, data) {
2213
+ const handler = this.params?.cellParams?.[eventName];
2214
+ if (typeof handler === 'function')
2215
+ handler(data);
2216
+ }
2217
+ /**
2218
+ * @description Handles switch toggle and emits value change event.
2219
+ * @author Anand Pandey
2220
+ * @param {Event} event
2221
+ * @returns {void}
2222
+ */
2223
+ onToggle(event) {
2224
+ this.emit('onToggle', {
2225
+ row: this.params.data,
2226
+ value: event.target.checked,
2227
+ });
2228
+ }
2229
+ /**
2230
+ * @description Toggles the three-dots action menu for the current row.
2231
+ * @author Anand Pandey
2232
+ * @returns {void}
2233
+ */
2234
+ onThreeDotsMenuClick() {
2235
+ if (this.openActionMenu) {
2236
+ this.activeRowId.set(null);
2237
+ }
2238
+ else {
2239
+ this.activeRowId.set(this.params.data.rowId);
2240
+ }
2241
+ }
2242
+ /**
2243
+ * @description Handles click on an action option and emits selected action event.
2244
+ * @author Anand Pandey
2245
+ * @param {any} action
2246
+ * @returns {void}
2247
+ */
2248
+ onActionClick(action) {
2249
+ this.activeRowId.set(null);
2250
+ this.emit('onAction', {
2251
+ row: this.params.data,
2252
+ action,
2253
+ });
2254
+ }
2255
+ /**
2256
+ * @description Closes the action menu when clicking outside the component.
2257
+ * @author Anand Pandey
2258
+ * @param {Event} e
2259
+ * @returns {void}
2260
+ */
2261
+ clickOutside(e) {
2262
+ this.activeRowId.set(null);
2263
+ }
2264
+ /**
2265
+ * @description Returns the complete list of tags after normalizing value input (supports array, object, string).
2266
+ * @author Anand Pandey
2267
+ * @returns {string[]}
2268
+ */
2269
+ get allTags() {
2270
+ const value = this.value;
2271
+ if (!value)
2272
+ return [];
2273
+ if (Array.isArray(value)) {
2274
+ return value.map((val) => {
2275
+ if (typeof val === 'object') {
2276
+ return {
2277
+ tagValue: val[this.params.cellParams?.tagKey],
2278
+ class: val['class'] || '',
2279
+ };
2280
+ }
2281
+ else {
2282
+ return { tagValue: String(val).trim(), class: '' };
2283
+ }
2284
+ });
2285
+ }
2286
+ else if (typeof value === 'string') {
2287
+ return [{ tagValue: String(value).trim(), class: '' }];
2288
+ }
2289
+ return [{ tagValue: String(value).trim(), class: '' }];
2290
+ }
2291
+ /**
2292
+ * @description Returns the subset of tags that should be visibly displayed in the UI based on maxVisible count.
2293
+ * @author Anand Pandey
2294
+ * @returns {string[]}
2295
+ */
2296
+ get visibleTags() {
2297
+ return this.allTags.slice(0, this.maxVisible);
2298
+ }
2299
+ /**
2300
+ * @description Returns the count of tags hidden behind the "+" more indicator.
2301
+ * @author Anand Pandey
2302
+ * @returns {number}
2303
+ */
2304
+ get hiddenCount() {
2305
+ return Math.max(0, this.allTags.length - this.maxVisible);
2306
+ }
2307
+ /**
2308
+ * @description Determines whether the dropdown should be open for the current row based on activeTagId.
2309
+ * @author Anand Pandey
2310
+ * @returns {boolean}
2311
+ */
2312
+ get openDropdown() {
2313
+ return (this.activeTagId() ===
2314
+ `${this.params.col.fieldName}-${this.params.data.rowId}`);
2315
+ }
2316
+ /**
2317
+ * @description Handles hover entry and activates dropdown if cursor enters +icon, hidden-list, dropdown or its items.
2318
+ * @author Anand Pandey
2319
+ * @param {MouseEvent} event
2320
+ * @returns {void}
2321
+ */
2322
+ toggleDropdown(event) {
2323
+ const target = event.target;
2324
+ if (target &&
2325
+ (target.closest('.hidden_list') ||
2326
+ target.closest('.tag_more') ||
2327
+ target.closest('.tag_dropdown') ||
2328
+ target.closest('.dropdown_item') ||
2329
+ this.openDropdown)) {
2330
+ this.activeTagId.set(`${this.params.col.fieldName}-${this.params.data.rowId}`);
2331
+ return;
2332
+ }
2333
+ if (this.openDropdown) {
2334
+ this.activeTagId.set(null);
2335
+ }
2336
+ }
2337
+ /**
2338
+ * @description Closes the dropdown only when cursor leaves the entire component area and not moving inside child elements.
2339
+ * @author Anand Pandey
2340
+ * @param {MouseEvent} event
2341
+ * @returns {void}
2342
+ */
2343
+ closeDropdown(event) {
2344
+ const target = event.relatedTarget;
2345
+ if (target &&
2346
+ (target.closest('.tag_wrapper') ||
2347
+ target.closest('.hidden_list') ||
2348
+ target.closest('.tag_more') ||
2349
+ target.closest('tag_dropdown') ||
2350
+ target.closest('dropdown_item'))) {
2351
+ return;
2352
+ }
2353
+ this.activeTagId.set(null);
2354
+ }
2355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2356
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CommonRendererComponent, isStandalone: true, selector: "lib-common-renderer", ngImport: i0, template: "<!-- Switch -->\r\n@if(type===\"switch\"){\r\n<div class=\"switch_wrapper\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [checked]=\"value\" (change)=\"onToggle($event)\" />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n}\r\n\r\n<!-- Action Menu -->\r\n\r\n@if(type==='action-menu'){\r\n<div class=\"action-menu\">\r\n <button class=\"action_dots\" (click)=\"onThreeDotsMenuClick()\" #tagTrigger>\r\n <img src=\"images/more-{{ actionSubType || 'vertical' }}.svg\" />\r\n </button>\r\n\r\n @if(openActionMenu){\r\n <div\r\n class=\"menu\"\r\n appOutsideClick\r\n (clickOutside)=\"clickOutside($event)\"\r\n adaptivePosition\r\n [trigger]=\"tagTrigger\"\r\n [isAction]=\"true\"\r\n [matchWidth]=\"false\"\r\n >\r\n <div class=\"item_wrapper\" id=\"container_scroll\">\r\n @for(act of actions; track $index){\r\n <div class=\"{{'menu_item' + ' ' + act.class}}\" [ngClass]=\"{disabled_item: act.disabled}\" (click)=\"onActionClick(act)\">\r\n <img src=\"images/{{ act.icon }}.svg\" />\r\n <span>{{ act.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n\r\n<!-- Tags -->\r\n\r\n@if(type === 'tag'){\r\n<div\r\n class=\"tag_wrapper\"\r\n (mouseover)=\"toggleDropdown($event)\"\r\n (mouseout)=\"closeDropdown($event)\"\r\n #tagTrigger\r\n>\r\n @for(tag of visibleTags; track $index){\r\n <span class=\"{{'tag_chip' + ' ' + tag.class}}\" [ngClass]=\"tag.tagValue | addClass: params.cellParams\" >{{ tag.tagValue }}</span>\r\n } @if(hiddenCount > 0){\r\n <div class=\"hidden_list\">\r\n <span class=\"tag_more\">+{{ hiddenCount }}</span>\r\n @if(openDropdown){\r\n <div\r\n class=\"tag_dropdown\"\r\n id=\"container_scroll\"\r\n adaptivePosition\r\n [trigger]=\"tagTrigger\"\r\n [matchWidth]=\"false\"\r\n >\r\n @for(tag of allTags; track $index){\r\n <div class=\"{{'dropdown_item' + ' ' + tag.class}}\">{{ tag.tagValue }}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n }\r\n</div>\r\n}\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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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))}}.action-menu{position:relative}.action-menu .action_dots{background:transparent;border:none;cursor:pointer}.action-menu .action_dots img{max-width:calc(1.3333333333rem / var(--scale))}.action-menu .menu{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;width:calc(12.5rem / var(--scale));position:absolute;top:10px}.action-menu .menu .item_wrapper{position:relative;max-height:calc(20rem / var(--scale));overflow-y:auto;margin:calc(.3333333333rem / var(--scale)) 0}.action-menu .menu .item_wrapper .menu_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:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));cursor:pointer;position:relative;font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.action-menu .menu .item_wrapper .menu_item:hover{background-color:var(--blue-50)}.action-menu .menu .item_wrapper .menu_item img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));opacity:.7}.tag_wrapper .hidden_list .tag_more,.tag_wrapper .tag_chip{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);background-color:var(--white);padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.tag_wrapper{position:relative;display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:6px}.tag_wrapper .tag_chip{white-space:nowrap}.tag_wrapper .hidden_list{display:flex}.tag_wrapper .hidden_list .tag_more{cursor:pointer}.tag_wrapper .hidden_list .tag_dropdown{position:relative;top:100%;left:0;max-width:calc(27.75rem / var(--scale));width:calc(27.75rem / var(--scale));max-height:calc(15.8333333333rem / var(--scale));overflow:auto;overflow-x:hidden;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) var(--box-shadow);z-index:1;padding:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:\"\";justify-content:\"\";align-items:\"\";flex-wrap:wrap;gap:calc(.6666666667rem / var(--scale))}.tag_wrapper .hidden_list .tag_dropdown .dropdown_item{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));width:auto;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.tag_wrapper .tag_chip.active,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.active{background-color:var(--green-100);border-color:var(--green-200);color:var(--green-700)}.tag_wrapper .tag_chip.pending,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.pending{background-color:var(--yellow-100);border-color:var(--yellow-300);color:var(--yellow-700)}.tag_wrapper .tag_chip.error,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.error{background-color:var(--red-100);border-color:var(--red-300);color:var(--red-700)}.tag_wrapper .tag_chip.info,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.info{background-color:var(--blue-100);border-color:var(--blue-300);color:var(--blue-700)}.tag_wrapper .tag_chip.disable,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.disable{background-color:var(--neutral-50);border-color:var(--neutral-300);color:var(--neutral-400);cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: OutsideClickDirective, selector: "[appOutsideClick]", outputs: ["clickOutside"] }, { kind: "directive", type: AdaptivePositionDirective, selector: "[adaptivePosition]", inputs: ["adaptive", "trigger", "parentContainer", "matchWidth", "closeOnOutside", "isAction", "isColumnActionMenu"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AddClassPipe, name: "addClass" }] });
2357
+ }
2358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CommonRendererComponent, decorators: [{
2359
+ type: Component,
2360
+ args: [{ selector: 'lib-common-renderer', imports: [OutsideClickDirective, AdaptivePositionDirective, CommonModule, AddClassPipe], template: "<!-- Switch -->\r\n@if(type===\"switch\"){\r\n<div class=\"switch_wrapper\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [checked]=\"value\" (change)=\"onToggle($event)\" />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n}\r\n\r\n<!-- Action Menu -->\r\n\r\n@if(type==='action-menu'){\r\n<div class=\"action-menu\">\r\n <button class=\"action_dots\" (click)=\"onThreeDotsMenuClick()\" #tagTrigger>\r\n <img src=\"images/more-{{ actionSubType || 'vertical' }}.svg\" />\r\n </button>\r\n\r\n @if(openActionMenu){\r\n <div\r\n class=\"menu\"\r\n appOutsideClick\r\n (clickOutside)=\"clickOutside($event)\"\r\n adaptivePosition\r\n [trigger]=\"tagTrigger\"\r\n [isAction]=\"true\"\r\n [matchWidth]=\"false\"\r\n >\r\n <div class=\"item_wrapper\" id=\"container_scroll\">\r\n @for(act of actions; track $index){\r\n <div class=\"{{'menu_item' + ' ' + act.class}}\" [ngClass]=\"{disabled_item: act.disabled}\" (click)=\"onActionClick(act)\">\r\n <img src=\"images/{{ act.icon }}.svg\" />\r\n <span>{{ act.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n\r\n<!-- Tags -->\r\n\r\n@if(type === 'tag'){\r\n<div\r\n class=\"tag_wrapper\"\r\n (mouseover)=\"toggleDropdown($event)\"\r\n (mouseout)=\"closeDropdown($event)\"\r\n #tagTrigger\r\n>\r\n @for(tag of visibleTags; track $index){\r\n <span class=\"{{'tag_chip' + ' ' + tag.class}}\" [ngClass]=\"tag.tagValue | addClass: params.cellParams\" >{{ tag.tagValue }}</span>\r\n } @if(hiddenCount > 0){\r\n <div class=\"hidden_list\">\r\n <span class=\"tag_more\">+{{ hiddenCount }}</span>\r\n @if(openDropdown){\r\n <div\r\n class=\"tag_dropdown\"\r\n id=\"container_scroll\"\r\n adaptivePosition\r\n [trigger]=\"tagTrigger\"\r\n [matchWidth]=\"false\"\r\n >\r\n @for(tag of allTags; track $index){\r\n <div class=\"{{'dropdown_item' + ' ' + tag.class}}\">{{ tag.tagValue }}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n }\r\n</div>\r\n}\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-300);border-color:var(--neutral-300)}.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)))}.text-primary{color:var(--blue-600)}.text-danger{color:var(--red)!important}*,*: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))}}.action-menu{position:relative}.action-menu .action_dots{background:transparent;border:none;cursor:pointer}.action-menu .action_dots img{max-width:calc(1.3333333333rem / var(--scale))}.action-menu .menu{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;width:calc(12.5rem / var(--scale));position:absolute;top:10px}.action-menu .menu .item_wrapper{position:relative;max-height:calc(20rem / var(--scale));overflow-y:auto;margin:calc(.3333333333rem / var(--scale)) 0}.action-menu .menu .item_wrapper .menu_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:start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));cursor:pointer;position:relative;font-size:calc(1.1666666667rem / var(--scale));line-height:calc(1.6666666667rem / var(--scale));font-weight:400;color:var(--neutral-600)}.action-menu .menu .item_wrapper .menu_item:hover{background-color:var(--blue-50)}.action-menu .menu .item_wrapper .menu_item img{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));opacity:.7}.tag_wrapper .hidden_list .tag_more,.tag_wrapper .tag_chip{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);background-color:var(--white);padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.tag_wrapper{position:relative;display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:6px}.tag_wrapper .tag_chip{white-space:nowrap}.tag_wrapper .hidden_list{display:flex}.tag_wrapper .hidden_list .tag_more{cursor:pointer}.tag_wrapper .hidden_list .tag_dropdown{position:relative;top:100%;left:0;max-width:calc(27.75rem / var(--scale));width:calc(27.75rem / var(--scale));max-height:calc(15.8333333333rem / var(--scale));overflow:auto;overflow-x:hidden;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.8333333333rem / var(--scale)) calc(.3333333333rem / var(--scale)) var(--box-shadow);z-index:1;padding:calc(1.3333333333rem / var(--scale));display:flex;flex-direction:\"\";justify-content:\"\";align-items:\"\";flex-wrap:wrap;gap:calc(.6666666667rem / var(--scale))}.tag_wrapper .hidden_list .tag_dropdown .dropdown_item{font-size:var(--fs-14);line-height:calc(1.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500);padding:calc(.25rem / var(--scale)) calc(.6666666667rem / var(--scale));width:auto;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200);border-radius:calc(.3333333333rem / var(--scale))}.tag_wrapper .tag_chip.active,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.active{background-color:var(--green-100);border-color:var(--green-200);color:var(--green-700)}.tag_wrapper .tag_chip.pending,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.pending{background-color:var(--yellow-100);border-color:var(--yellow-300);color:var(--yellow-700)}.tag_wrapper .tag_chip.error,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.error{background-color:var(--red-100);border-color:var(--red-300);color:var(--red-700)}.tag_wrapper .tag_chip.info,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.info{background-color:var(--blue-100);border-color:var(--blue-300);color:var(--blue-700)}.tag_wrapper .tag_chip.disable,.tag_wrapper .hidden_list .tag_dropdown .dropdown_item.disable{background-color:var(--neutral-50);border-color:var(--neutral-300);color:var(--neutral-400);cursor:not-allowed}\n"] }]
2361
+ }] });
2362
+
1111
2363
  /*
1112
2364
  * Public API Surface of cats-data-grid
1113
2365
  */
@@ -1116,5 +2368,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1116
2368
  * Generated bundle index. Do not edit.
1117
2369
  */
1118
2370
 
1119
- export { CatsDataGridComponent, CatsDataGridService };
2371
+ export { CatsDataGridComponent, CatsDataGridService, CommonRendererComponent };
1120
2372
  //# sourceMappingURL=cats-data-grid.mjs.map