ets-fe-ng-sdk 18.0.15 → 18.0.17

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,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, input, signal, } from '@angular/core';
2
+ import { Component, Input, computed, inject, input, model, output, signal } from '@angular/core';
3
3
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
4
- import { InputBasicComponent } from '../input/input-basic.component';
4
+ import { InputService } from '../input/input.service';
5
5
  import { BtnComponent } from '../btn/btn.component';
6
6
  import { InputTD_RFComponent } from '../input/input-td-rf.component';
7
7
  import { FormsModule } from '@angular/forms';
@@ -10,46 +10,36 @@ import { MatTooltipModule } from '@angular/material/tooltip';
10
10
  import { MatMenuModule } from '@angular/material/menu';
11
11
  import { FilterArrayByStringPipe } from '../../pipes/utility.pipe';
12
12
  import * as i0 from "@angular/core";
13
- import * as i1 from "../input/input.service";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@angular/material/slide-toggle";
16
- import * as i4 from "@angular/forms";
17
- import * as i5 from "@angular/material/tooltip";
18
- import * as i6 from "@angular/material/menu";
13
+ import * as i1 from "@angular/common";
14
+ import * as i2 from "@angular/material/slide-toggle";
15
+ import * as i3 from "@angular/forms";
16
+ import * as i4 from "@angular/material/tooltip";
17
+ import * as i5 from "@angular/material/menu";
19
18
  export class ToggleInputFormComponent {
20
- set setGrid(num) {
21
- this.xxlGrid.set(num);
22
- this.lgGrid.set(num > 3 ? num - 1 : num);
23
- this.mdGrid.set(num > 3 ? Math.floor(this.lgGrid() / 2) : num);
24
- }
25
- set _list(v) {
26
- this.rawList = v;
27
- const list = this.iS.optionsFormatter(v, this.valueField, null, this.labelType(), this.labelField(), false) || [];
28
- for (const item of list)
29
- item.checked = item.originalRow.checked;
30
- this.list.set(list);
31
- if (this.defaultToggleAll() && !list.some((x) => x.checked))
32
- this.toggleAll({ checked: true });
33
- }
34
- // @Input('list')set _list:T[]
35
- constructor(iS) {
36
- this.iS = iS;
37
- this.list = signal([]);
38
- // @Input() set savedData(v: TRow[]) {
39
- // if(v)
40
- // v.forEach(row=>{
41
- // this.
42
- // })
43
- // }
44
- this.currentGrid = signal(undefined);
45
- this.xxlGrid = signal(undefined);
46
- this.lgGrid = signal(undefined);
47
- this.mdGrid = signal(undefined);
48
- this.labelType = input();
19
+ constructor() {
20
+ this.iS = inject(InputService);
21
+ this.addToFormFunc = input();
49
22
  this.defaultToggleAll = input();
23
+ this.deleteFromFormFunc = input();
24
+ this.gridNo = model(6);
50
25
  this.labelField = input();
51
- this.showToggleAll = true;
52
- this.selected = new EventEmitter();
26
+ this.labelType = input();
27
+ this.searchQuery = model();
28
+ this.showToggleAll = input(true);
29
+ this.valueField = input.required();
30
+ this.selected = output();
31
+ this.list = signal([]);
32
+ this._currentGrid = signal(undefined);
33
+ this.currentGrid = computed(() => this._currentGrid());
34
+ this.xxlGrid = computed(() => this.gridNo());
35
+ this.lgGrid = computed(() => {
36
+ const num = this.gridNo();
37
+ return num > 3 ? num - 1 : num;
38
+ });
39
+ this.mdGrid = computed(() => {
40
+ const num = this.gridNo(), lgGrid = this.lgGrid();
41
+ return num > 3 ? Math.floor(lgGrid / 2) : num;
42
+ });
53
43
  this.columnLengths = signal([
54
44
  { label: `List`, value: 1 },
55
45
  { label: `Dual`, value: 2 },
@@ -57,14 +47,25 @@ export class ToggleInputFormComponent {
57
47
  { label: `Medium`, value: 4 },
58
48
  { label: `Maximum`, value: 6 },
59
49
  ]);
60
- this.setGrid = 6;
61
50
  }
62
- toggledItem(e, item) {
51
+ set _list(v) {
52
+ const list = this.iS.optionsFormatter(v, this.valueField(), null, this.labelType(), this.labelField(), false) || [];
53
+ let foundChecked = false;
54
+ for (const item of list) {
55
+ item.checked = item.originalRow.checked;
56
+ if (!foundChecked)
57
+ foundChecked = item.originalRow.checked;
58
+ }
59
+ this.list.set(list);
60
+ if (this.defaultToggleAll() && !foundChecked)
61
+ this.toggleAll({ checked: true });
62
+ }
63
+ toggleItem(e, item) {
63
64
  // throw new Error('Method not implemented.');
64
65
  if (e.checked)
65
- this.addToFormFunc?.(item);
66
+ this.addToFormFunc()?.(item);
66
67
  else
67
- this.deleteFromFormFunc?.(item);
68
+ this.deleteFromFormFunc()?.(item);
68
69
  this.emitSelected();
69
70
  }
70
71
  toggleAll(e) {
@@ -74,7 +75,7 @@ export class ToggleInputFormComponent {
74
75
  .filter((x) => !x.checked)
75
76
  .forEach((x) => {
76
77
  x.checked = true;
77
- this.addToFormFunc?.(x.originalRow);
78
+ this.addToFormFunc()?.(x.originalRow);
78
79
  });
79
80
  return list;
80
81
  });
@@ -84,7 +85,7 @@ export class ToggleInputFormComponent {
84
85
  .filter((x) => x.checked)
85
86
  .forEach((x) => {
86
87
  x.checked = false;
87
- this.deleteFromFormFunc?.(x.originalRow);
88
+ this.deleteFromFormFunc()?.(x.originalRow);
88
89
  });
89
90
  return list;
90
91
  });
@@ -95,8 +96,11 @@ export class ToggleInputFormComponent {
95
96
  .filter((x) => x.checked)
96
97
  .map((x) => x.originalRow));
97
98
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { setGrid: { classPropertyName: "setGrid", publicName: "gridNo", isSignal: false, isRequired: false, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: false, isRequired: true, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: false, isRequired: true, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: false, isRequired: false, transformFunction: null }, addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: false, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n\t<div class=\"row align-items-center justify-content-between g-3\">\n\t\t<div class=\"col-lg-auto\">\n\t\t\t<mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n\t\t\t\t{{ 'Toggle All' | appTranslate | async }}\n\t\t\t</mat-slide-toggle>\n\t\t</div>\n\t\t<div class=\"col-lg d-flex justify-content-end\">\n\t\t\t<div class=\"row align-items-center g-3\">\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\ticonBtn\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n\t\t\t\t\t\t[icon]=\"searchBox.hidden ? 'search' : 'close'\"\n\t\t\t\t\t\t(mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n\t\t\t\t\t<app-input-td-rf\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t[noFormat]=\"true\"\n\t\t\t\t\t\t[showLabel]=\"false\"\n\t\t\t\t\t\tplaceholder=\"Type to search\"\n\t\t\t\t\t\t[(model)]=\"searchQuery\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\tcustomIcon=\"fa fa-list\"\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"Grid Style\"\n\t\t\t\t\t\t[matMenuTriggerFor]=\"gridMenu\" />\n\t\t\t\t\t<mat-menu #gridMenu=\"matMenu\" class=\"\">\n\t\t\t\t\t\t@for (item of columnLengths(); track item) {\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-menu-item\n\t\t\t\t\t\t\t\t(click)=\"setGrid = item.value\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{ 'text-primary': item.value == currentGrid() }\">\n\t\t\t\t\t\t\t\t{{ item.label | appTranslate | async }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mat-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{ xxlGrid() }} g-3\">\n\t@for (item of list() | filterArrayByString: searchQuery : ['label']; track item.value) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"border rounded-10 p-10\">\n\t\t\t\t<div class=\"row align-items-center\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"col text-ellipsis\"\n\t\t\t\t\t\t[matTooltip]=\"ele.innerText\"\n\t\t\t\t\t\t[matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n\t\t\t\t\t\t#ele>\n\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t\t<mat-slide-toggle [(ngModel)]=\"item.checked\" (change)=\"toggledItem($event, item.originalRow)\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t}\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
99
+ getSelected() {
100
+ return this.list();
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: false, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [(ngModel)]=\"item.checked\"\n (change)=\"toggleItem($event, item.originalRow)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
100
104
  }
101
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, decorators: [{
102
106
  type: Component,
@@ -105,29 +109,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
105
109
  MatSlideToggleModule,
106
110
  BtnComponent,
107
111
  FilterArrayByStringPipe,
108
- InputBasicComponent,
109
112
  InputTD_RFComponent,
110
113
  FormsModule,
111
114
  MatTooltipModule,
112
115
  MatMenuModule,
113
116
  SDKTranslatePipe,
114
- ], template: "<div class=\"pb-3\">\n\t<div class=\"row align-items-center justify-content-between g-3\">\n\t\t<div class=\"col-lg-auto\">\n\t\t\t<mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n\t\t\t\t{{ 'Toggle All' | appTranslate | async }}\n\t\t\t</mat-slide-toggle>\n\t\t</div>\n\t\t<div class=\"col-lg d-flex justify-content-end\">\n\t\t\t<div class=\"row align-items-center g-3\">\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\ticonBtn\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n\t\t\t\t\t\t[icon]=\"searchBox.hidden ? 'search' : 'close'\"\n\t\t\t\t\t\t(mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n\t\t\t\t\t<app-input-td-rf\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t[noFormat]=\"true\"\n\t\t\t\t\t\t[showLabel]=\"false\"\n\t\t\t\t\t\tplaceholder=\"Type to search\"\n\t\t\t\t\t\t[(model)]=\"searchQuery\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\tcustomIcon=\"fa fa-list\"\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"Grid Style\"\n\t\t\t\t\t\t[matMenuTriggerFor]=\"gridMenu\" />\n\t\t\t\t\t<mat-menu #gridMenu=\"matMenu\" class=\"\">\n\t\t\t\t\t\t@for (item of columnLengths(); track item) {\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-menu-item\n\t\t\t\t\t\t\t\t(click)=\"setGrid = item.value\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{ 'text-primary': item.value == currentGrid() }\">\n\t\t\t\t\t\t\t\t{{ item.label | appTranslate | async }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mat-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{ xxlGrid() }} g-3\">\n\t@for (item of list() | filterArrayByString: searchQuery : ['label']; track item.value) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"border rounded-10 p-10\">\n\t\t\t\t<div class=\"row align-items-center\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"col text-ellipsis\"\n\t\t\t\t\t\t[matTooltip]=\"ele.innerText\"\n\t\t\t\t\t\t[matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n\t\t\t\t\t\t#ele>\n\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t\t<mat-slide-toggle [(ngModel)]=\"item.checked\" (change)=\"toggledItem($event, item.originalRow)\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t}\n</div>\n", styles: [":host{display:block}\n"] }]
115
- }], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { setGrid: [{
116
- type: Input,
117
- args: ['gridNo']
118
- }], _list: [{
117
+ ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [(ngModel)]=\"item.checked\"\n (change)=\"toggleItem($event, item.originalRow)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
118
+ }], propDecorators: { _list: [{
119
119
  type: Input,
120
120
  args: [{ alias: 'list', required: true }]
121
- }], valueField: [{
122
- type: Input,
123
- args: [{ required: true }]
124
- }], showToggleAll: [{
125
- type: Input
126
- }], addToFormFunc: [{
127
- type: Input
128
- }], deleteFromFormFunc: [{
129
- type: Input
130
- }], selected: [{
131
- type: Output
132
121
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RvZ2dsZS1pbnB1dC1mb3JtL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90b2dnbGUtaW5wdXQtZm9ybS90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUNMLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0Isb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBcUJuRSxNQUFN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QUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDUixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQzdCLENBQUM7SUFDSixDQUFDOzhHQS9GVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw4MUNDMUNyQyx5OEVBa0VBLCtFRHBDSSxZQUFZLGlMQUNaLG9CQUFvQixtV0FDcEIsWUFBWSw4ZkFDWix1QkFBdUIsNERBRXZCLG1CQUFtQix5SUFDbkIsV0FBVyw4VkFDWCxnQkFBZ0IsNFRBQ2hCLGFBQWEseXZCQUNiLGdCQUFnQjs7MkZBR1Asd0JBQXdCO2tCQW5CcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUlQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7aUZBTW9CLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsUUFBUTtnQkFnQlgsS0FBSztzQkFEUixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQW1CYixVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IElPcHRpb24sIElucHV0U2VydmljZSB9IGZyb20gJy4uL2lucHV0L2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlLCBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0VERfUkZDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC10ZC1yZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNES1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvZ2dsZS1pbnB1dC1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbiAgLy9cbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBJbnB1dFREX1JGQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUb2dnbGVJbnB1dEZvcm1Db21wb25lbnQ8VE9wdGlvbiBleHRlbmRzIHsgY2hlY2tlZD86IGJvb2xlYW4gfSwgVFJvdz4ge1xuICByYXdMaXN0OiBUT3B0aW9uW107XG4gIGxpc3QgPSBzaWduYWw8SVRvZ2dsZU9wdGlvbltdPihbXSk7XG4gIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gIEBJbnB1dCgnZ3JpZE5vJykgc2V0IHNldEdyaWQobnVtOiBHcmlkU2l6ZSkge1xuICAgIHRoaXMueHhsR3JpZC5zZXQobnVtKTtcbiAgICB0aGlzLmxnR3JpZC5zZXQobnVtID4gMyA/IG51bSAtIDEgOiBudW0pO1xuICAgIHRoaXMubWRHcmlkLnNldChudW0gPiAzID8gTWF0aC5mbG9vcih0aGlzLmxnR3JpZCgpIC8gMikgOiBudW0pO1xuICB9XG4gIC8vIEBJbnB1dCgpIHNldCBzYXZlZERhdGEodjogVFJvd1tdKSB7XG4gIC8vIFx0aWYodilcbiAgLy8gXHR2LmZvckVhY2gocm93PT57XG4gIC8vIHRoaXMuXG4gIC8vIFx0fSlcbiAgLy8gfVxuICBjdXJyZW50R3JpZCA9IHNpZ25hbDxudW1iZXI+KHVuZGVmaW5lZCk7XG4gIHh4bEdyaWQgPSBzaWduYWw8bnVtYmVyPih1bmRlZmluZWQpO1xuICBsZ0dyaWQgPSBzaWduYWw8bnVtYmVyPih1bmRlZmluZWQpO1xuICBtZEdyaWQgPSBzaWduYWw8bnVtYmVyPih1bmRlZmluZWQpO1xuICBASW5wdXQoeyBhbGlhczogJ2xpc3QnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICBzZXQgX2xpc3QodjogVE9wdGlvbltdKSB7XG4gICAgdGhpcy5yYXdMaXN0ID0gdjtcbiAgICBjb25zdCBsaXN0OiBJVG9nZ2xlT3B0aW9uW10gPVxuICAgICAgdGhpcy5pUy5vcHRpb25zRm9ybWF0dGVyKFxuICAgICAgICB2LFxuICAgICAgICB0aGlzLnZhbHVlRmllbGQgYXMgc3RyaW5nLFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLmxhYmVsVHlwZSgpLFxuICAgICAgICB0aGlzLmxhYmVsRmllbGQoKSBhcyBzdHJpbmcsXG4gICAgICAgIGZhbHNlLFxuICAgICAgKSB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkgaXRlbS5jaGVja2VkID0gaXRlbS5vcmlnaW5hbFJvdy5jaGVja2VkO1xuICAgIHRoaXMubGlzdC5zZXQobGlzdCk7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFRvZ2dsZUFsbCgpICYmICFsaXN0LnNvbWUoKHgpID0+IHguY2hlY2tlZCkpIHRoaXMudG9nZ2xlQWxsKHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgfVxuICBsYWJlbFR5cGUgPSBpbnB1dDxPcHRpb25MYWJlbFR5cGU+KCk7XG4gIGRlZmF1bHRUb2dnbGVBbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICBsYWJlbEZpZWxkID0gaW5wdXQ8a2V5b2YgVE9wdGlvbj4oKTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWVGaWVsZDoga2V5b2YgVE9wdGlvbjtcbiAgQElucHV0KCkgc2hvd1RvZ2dsZUFsbDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFkZFRvRm9ybUZ1bmM6IChkYXRhPzogVE9wdGlvbikgPT4gYW55O1xuICBASW5wdXQoKSBkZWxldGVGcm9tRm9ybUZ1bmM6IChkYXRhPzogVE9wdGlvbikgPT4gYW55O1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VE9wdGlvbltdPigpO1xuXG4gIGNvbHVtbkxlbmd0aHMgPSBzaWduYWw8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogR3JpZFNpemUgfVtdPihbXG4gICAgeyBsYWJlbDogYExpc3RgLCB2YWx1ZTogMSB9LFxuICAgIHsgbGFiZWw6IGBEdWFsYCwgdmFsdWU6IDIgfSxcbiAgICB7IGxhYmVsOiBgVHJpcGxlYCwgdmFsdWU6IDMgfSxcbiAgICB7IGxhYmVsOiBgTWVkaXVtYCwgdmFsdWU6IDQgfSxcbiAgICB7IGxhYmVsOiBgTWF4aW11bWAsIHZhbHVlOiA2IH0sXG4gIF0pO1xuXG4gIC8vIEBJbnB1dCgnbGlzdCcpc2V0IF9saXN0OlRbXVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaVM6IElucHV0U2VydmljZSkge1xuICAgIHRoaXMuc2V0R3JpZCA9IDY7XG4gIH1cblxuICB0b2dnbGVkSXRlbShlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSwgaXRlbTogVE9wdGlvbikge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICBpZiAoZS5jaGVja2VkKSB0aGlzLmFkZFRvRm9ybUZ1bmM/LihpdGVtKTtcbiAgICBlbHNlIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jPy4oaXRlbSk7XG4gICAgdGhpcy5lbWl0U2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbChlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSkge1xuICAgIGlmIChlLmNoZWNrZWQpXG4gICAgICB0aGlzLmxpc3QudXBkYXRlKChsaXN0KSA9PiB7XG4gICAgICAgIGxpc3RcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAheC5jaGVja2VkKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRUb0Zvcm1GdW5jPy4oeC5vcmlnaW5hbFJvdyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgfSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5saXN0LnVwZGF0ZSgobGlzdCkgPT4ge1xuICAgICAgICBsaXN0XG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5jaGVja2VkKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jPy4oeC5vcmlnaW5hbFJvdyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgfSk7XG4gICAgdGhpcy5lbWl0U2VsZWN0ZWQoKTtcbiAgfVxuXG4gIGVtaXRTZWxlY3RlZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQoXG4gICAgICB0aGlzLmxpc3QoKVxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmNoZWNrZWQpXG4gICAgICAgIC5tYXAoKHgpID0+IHgub3JpZ2luYWxSb3cpLFxuICAgICk7XG4gIH1cbn1cbmludGVyZmFjZSBJVG9nZ2xlT3B0aW9uIGV4dGVuZHMgSU9wdGlvbiB7XG4gIGNoZWNrZWQ/OiBib29sZWFuO1xufVxudHlwZSBHcmlkU2l6ZSA9IDYgfCA0IHwgMyB8IDIgfCAxO1xuIiwiPGRpdiBjbGFzcz1cInBiLTNcIj5cblx0PGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZy0zXCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvXCI+XG5cdFx0XHQ8bWF0LXNsaWRlLXRvZ2dsZSAoY2hhbmdlKT1cInRvZ2dsZUFsbCgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiZGVmYXVsdFRvZ2dsZUFsbCgpXCI+XG5cdFx0XHRcdHt7ICdUb2dnbGUgQWxsJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG5cdFx0XHQ8L21hdC1zbGlkZS10b2dnbGU+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1sZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZy0zXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuXHRcdFx0XHRcdDxhcHAtYnRuXG5cdFx0XHRcdFx0XHRpY29uQnRuXG5cdFx0XHRcdFx0XHRbc2hvd0hlbHBJY29uXT1cImZhbHNlXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJ7eyBzZWFyY2hCb3guaGlkZGVuID8gJ09wZW4gc2VhcmNoJyA6ICdDbG9zZSBzZWFyY2gnIH19XCJcblx0XHRcdFx0XHRcdFtpY29uXT1cInNlYXJjaEJveC5oaWRkZW4gPyAnc2VhcmNoJyA6ICdjbG9zZSdcIlxuXHRcdFx0XHRcdFx0KG1jbGljayk9XCJzZWFyY2hCb3guaGlkZGVuID0gIXNlYXJjaEJveC5oaWRkZW5cIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1hdXRvXCIgW2hpZGRlbl09XCJ0cnVlXCIgI3NlYXJjaEJveD5cblx0XHRcdFx0XHQ8YXBwLWlucHV0LXRkLXJmXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRbbm9Gb3JtYXRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRbc2hvd0xhYmVsXT1cImZhbHNlXCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2hcIlxuXHRcdFx0XHRcdFx0Wyhtb2RlbCldPVwic2VhcmNoUXVlcnlcIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG5cdFx0XHRcdFx0PGFwcC1idG5cblx0XHRcdFx0XHRcdGN1c3RvbUljb249XCJmYSBmYS1saXN0XCJcblx0XHRcdFx0XHRcdFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0aGVscD1cIkdyaWQgU3R5bGVcIlxuXHRcdFx0XHRcdFx0W21hdE1lbnVUcmlnZ2VyRm9yXT1cImdyaWRNZW51XCIgLz5cblx0XHRcdFx0XHQ8bWF0LW1lbnUgI2dyaWRNZW51PVwibWF0TWVudVwiIGNsYXNzPVwiXCI+XG5cdFx0XHRcdFx0XHRAZm9yIChpdGVtIG9mIGNvbHVtbkxlbmd0aHMoKTsgdHJhY2sgaXRlbSkge1xuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0bWF0LW1lbnUtaXRlbVxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJzZXRHcmlkID0gaXRlbS52YWx1ZVwiXG5cdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5JzogaXRlbS52YWx1ZSA9PSBjdXJyZW50R3JpZCgpIH1cIj5cblx0XHRcdFx0XHRcdFx0XHR7eyBpdGVtLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cblx0XHRcdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PC9tYXQtbWVudT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtbWQte3sgbWRHcmlkKCkgfX0gcm93LWNvbHMtbGcte3sgbGdHcmlkKCkgfX0gcm93LWNvbHMteHhsLXt7IHh4bEdyaWQoKSB9fSBnLTNcIj5cblx0QGZvciAoaXRlbSBvZiBsaXN0KCkgfCBmaWx0ZXJBcnJheUJ5U3RyaW5nOiBzZWFyY2hRdWVyeSA6IFsnbGFiZWwnXTsgdHJhY2sgaXRlbS52YWx1ZSkge1xuXHRcdDxkaXYgY2xhc3M9XCJcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBwLTEwXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG5cdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2wgdGV4dC1lbGxpcHNpc1wiXG5cdFx0XHRcdFx0XHRbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCJcblx0XHRcdFx0XHRcdFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG5cdFx0XHRcdFx0XHQjZWxlPlxuXHRcdFx0XHRcdFx0e3sgaXRlbS5sYWJlbCB9fVxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuXHRcdFx0XHRcdFx0PG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJpdGVtLmNoZWNrZWRcIiAoY2hhbmdlKT1cInRvZ2dsZWRJdGVtKCRldmVudCwgaXRlbS5vcmlnaW5hbFJvdylcIiAvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHR9XG48L2Rpdj5cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RvZ2dsZS1pbnB1dC1mb3JtL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90b2dnbGUtaW5wdXQtZm9ybS90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7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SSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gJy4uL2lucHV0L2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0VERfUkZDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC10ZC1yZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgSVRvZ2dsZU9wdGlvbiB9IGZyb20gJy4vdG9nZ2xlLWlucHV0LWZvcm0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2dnbGUtaW5wdXQtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSxcbiAgICBJbnB1dFREX1JGQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUb2dnbGVJbnB1dEZvcm1Db21wb25lbnQ8VE9wdGlvbiBleHRlbmRzIHsgY2hlY2tlZD86IGJvb2xlYW4gfSwgVFJvdz4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaVMgPSBpbmplY3QoSW5wdXRTZXJ2aWNlKTtcblxuICByZWFkb25seSBhZGRUb0Zvcm1GdW5jID0gaW5wdXQ8KGRhdGE/OiBUT3B0aW9uKSA9PiBhbnk+KCk7XG4gIHJlYWRvbmx5IGRlZmF1bHRUb2dnbGVBbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkZWxldGVGcm9tRm9ybUZ1bmMgPSBpbnB1dDwoZGF0YT86IFRPcHRpb24pID0+IGFueT4oKTtcbiAgcmVhZG9ubHkgZ3JpZE5vID0gbW9kZWw8R3JpZFNpemU+KDYpO1xuICByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8a2V5b2YgVE9wdGlvbj4oKTtcbiAgcmVhZG9ubHkgbGFiZWxUeXBlID0gaW5wdXQ8T3B0aW9uTGFiZWxUeXBlPigpO1xuICByZWFkb25seSBzZWFyY2hRdWVyeSA9IG1vZGVsPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2hvd1RvZ2dsZUFsbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB2YWx1ZUZpZWxkID0gaW5wdXQucmVxdWlyZWQ8a2V5b2YgVE9wdGlvbj4oKTtcblxuICByZWFkb25seSBzZWxlY3RlZCA9IG91dHB1dDxUT3B0aW9uW10+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpc3QgPSBzaWduYWw8SVRvZ2dsZU9wdGlvbjxUT3B0aW9uPltdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jdXJyZW50R3JpZCA9IHNpZ25hbDxudW1iZXI+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGN1cnJlbnRHcmlkID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB0aGlzLl9jdXJyZW50R3JpZCgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHh4bEdyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHRoaXMuZ3JpZE5vKCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGdHcmlkID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5ncmlkTm8oKTtcbiAgICByZXR1cm4gbnVtID4gMyA/IG51bSAtIDEgOiBudW07XG4gIH0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWRHcmlkID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5ncmlkTm8oKSxcbiAgICAgIGxnR3JpZCA9IHRoaXMubGdHcmlkKCk7XG4gICAgcmV0dXJuIG51bSA+IDMgPyBNYXRoLmZsb29yKGxnR3JpZCAvIDIpIDogbnVtO1xuICB9KTtcblxuICBASW5wdXQoeyBhbGlhczogJ2xpc3QnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICBzZXQgX2xpc3QodjogVE9wdGlvbltdKSB7XG4gICAgY29uc3QgbGlzdDogSVRvZ2dsZU9wdGlvbjxUT3B0aW9uPltdID1cbiAgICAgIHRoaXMuaVMub3B0aW9uc0Zvcm1hdHRlcihcbiAgICAgICAgdixcbiAgICAgICAgdGhpcy52YWx1ZUZpZWxkKCkgYXMgc3RyaW5nLFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLmxhYmVsVHlwZSgpLFxuICAgICAgICB0aGlzLmxhYmVsRmllbGQoKSBhcyBzdHJpbmcsXG4gICAgICAgIGZhbHNlLFxuICAgICAgKSB8fCBbXTtcbiAgICBsZXQgZm91bmRDaGVja2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IGl0ZW0ub3JpZ2luYWxSb3cuY2hlY2tlZDtcbiAgICAgIGlmICghZm91bmRDaGVja2VkKSBmb3VuZENoZWNrZWQgPSBpdGVtLm9yaWdpbmFsUm93LmNoZWNrZWQ7XG4gICAgfVxuICAgIHRoaXMubGlzdC5zZXQobGlzdCk7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFRvZ2dsZUFsbCgpICYmICFmb3VuZENoZWNrZWQpIHRoaXMudG9nZ2xlQWxsKHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MZW5ndGhzID0gc2lnbmFsPHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEdyaWRTaXplIH1bXT4oW1xuICAgIHsgbGFiZWw6IGBMaXN0YCwgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiBgRHVhbGAsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogYFRyaXBsZWAsIHZhbHVlOiAzIH0sXG4gICAgeyBsYWJlbDogYE1lZGl1bWAsIHZhbHVlOiA0IH0sXG4gICAgeyBsYWJlbDogYE1heGltdW1gLCB2YWx1ZTogNiB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlSXRlbShlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSwgaXRlbTogVE9wdGlvbikge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICBpZiAoZS5jaGVja2VkKSB0aGlzLmFkZFRvRm9ybUZ1bmMoKT8uKGl0ZW0pO1xuICAgIGVsc2UgdGhpcy5kZWxldGVGcm9tRm9ybUZ1bmMoKT8uKGl0ZW0pO1xuICAgIHRoaXMuZW1pdFNlbGVjdGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlQWxsKGU6IHsgY2hlY2tlZDogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGUuY2hlY2tlZClcbiAgICAgIHRoaXMubGlzdC51cGRhdGUoKGxpc3QpID0+IHtcbiAgICAgICAgbGlzdFxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+ICF4LmNoZWNrZWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIHguY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZFRvRm9ybUZ1bmMoKT8uKHgub3JpZ2luYWxSb3cpO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgIH0pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMubGlzdC51cGRhdGUoKGxpc3QpID0+IHtcbiAgICAgICAgbGlzdFxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2hlY2tlZClcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgeC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUZyb21Gb3JtRnVuYygpPy4oeC5vcmlnaW5hbFJvdyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgfSk7XG4gICAgdGhpcy5lbWl0U2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0U2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KFxuICAgICAgdGhpcy5saXN0KClcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5jaGVja2VkKVxuICAgICAgICAubWFwKCh4KSA9PiB4Lm9yaWdpbmFsUm93KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdCgpO1xuICB9XG59XG50eXBlIEdyaWRTaXplID0gNiB8IDQgfCAzIHwgMiB8IDE7XG4iLCI8ZGl2IGNsYXNzPVwicGItM1wiPlxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnLTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIChjaGFuZ2UpPVwidG9nZ2xlQWxsKCRldmVudClcIiBbY2hlY2tlZF09XCJkZWZhdWx0VG9nZ2xlQWxsKClcIj5cbiAgICAgICAge3sgJ1RvZ2dsZSBBbGwnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgIGljb25CdG5cbiAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgaGVscD1cInt7IHNlYXJjaEJveC5oaWRkZW4gPyAnT3BlbiBzZWFyY2gnIDogJ0Nsb3NlIHNlYXJjaCcgfX1cIlxuICAgICAgICAgICAgW2ljb25dPVwic2VhcmNoQm94LmhpZGRlbiA/ICdzZWFyY2gnIDogJ2Nsb3NlJ1wiXG4gICAgICAgICAgICAobWNsaWNrKT1cInNlYXJjaEJveC5oaWRkZW4gPSAhc2VhcmNoQm94LmhpZGRlblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIiBbaGlkZGVuXT1cInRydWVcIiAjc2VhcmNoQm94PlxuICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmZcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIHNlYXJjaFwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hRdWVyeVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY3VzdG9tSWNvbj1cImZhIGZhLWxpc3RcIlxuICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICBoZWxwPVwiR3JpZCBTdHlsZVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZ3JpZE1lbnVcIiAvPlxuICAgICAgICAgIDxtYXQtbWVudSAjZ3JpZE1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgY29sdW1uTGVuZ3RocygpOyB0cmFjayBpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyaWROby5zZXQoaXRlbS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtcHJpbWFyeSc6IGl0ZW0udmFsdWUgPT0gX2N1cnJlbnRHcmlkKCkgfVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cInJvdyByb3ctY29scy1tZC17eyBtZEdyaWQoKSB9fSByb3ctY29scy1sZy17eyBsZ0dyaWQoKSB9fSByb3ctY29scy14eGwte3tcbiAgICB4eGxHcmlkKClcbiAgfX0gZy0zXCI+XG4gIEBmb3IgKGl0ZW0gb2YgbGlzdCgpIHwgZmlsdGVyQXJyYXlCeVN0cmluZzogc2VhcmNoUXVlcnkoKSA6IFsnbGFiZWwnXTsgdHJhY2sgaXRlbS52YWx1ZSkge1xuICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBwLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wgdGV4dC1lbGxpcHNpc1wiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUl0ZW0oJGV2ZW50LCBpdGVtLm9yaWdpbmFsUm93KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LWZvcm0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdG9nZ2xlLWlucHV0LWZvcm0vdG9nZ2xlLWlucHV0LWZvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElPcHRpb24gfSBmcm9tIFwiLi4vaW5wdXQvaW5wdXQuc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb2dnbGVPcHRpb248VFJvdz4gZXh0ZW5kcyBJT3B0aW9uPFRSb3c+IHtcbiAgY2hlY2tlZD86IGJvb2xlYW47XG59XG4iXX0=
@@ -15876,39 +15876,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
15876
15876
  }] });
15877
15877
 
15878
15878
  class ToggleInputFormComponent {
15879
- set setGrid(num) {
15880
- this.xxlGrid.set(num);
15881
- this.lgGrid.set(num > 3 ? num - 1 : num);
15882
- this.mdGrid.set(num > 3 ? Math.floor(this.lgGrid() / 2) : num);
15883
- }
15884
- set _list(v) {
15885
- this.rawList = v;
15886
- const list = this.iS.optionsFormatter(v, this.valueField, null, this.labelType(), this.labelField(), false) || [];
15887
- for (const item of list)
15888
- item.checked = item.originalRow.checked;
15889
- this.list.set(list);
15890
- if (this.defaultToggleAll() && !list.some((x) => x.checked))
15891
- this.toggleAll({ checked: true });
15892
- }
15893
- // @Input('list')set _list:T[]
15894
- constructor(iS) {
15895
- this.iS = iS;
15896
- this.list = signal([]);
15897
- // @Input() set savedData(v: TRow[]) {
15898
- // if(v)
15899
- // v.forEach(row=>{
15900
- // this.
15901
- // })
15902
- // }
15903
- this.currentGrid = signal(undefined);
15904
- this.xxlGrid = signal(undefined);
15905
- this.lgGrid = signal(undefined);
15906
- this.mdGrid = signal(undefined);
15907
- this.labelType = input();
15879
+ constructor() {
15880
+ this.iS = inject(InputService);
15881
+ this.addToFormFunc = input();
15908
15882
  this.defaultToggleAll = input();
15883
+ this.deleteFromFormFunc = input();
15884
+ this.gridNo = model(6);
15909
15885
  this.labelField = input();
15910
- this.showToggleAll = true;
15911
- this.selected = new EventEmitter();
15886
+ this.labelType = input();
15887
+ this.searchQuery = model();
15888
+ this.showToggleAll = input(true);
15889
+ this.valueField = input.required();
15890
+ this.selected = output();
15891
+ this.list = signal([]);
15892
+ this._currentGrid = signal(undefined);
15893
+ this.currentGrid = computed(() => this._currentGrid());
15894
+ this.xxlGrid = computed(() => this.gridNo());
15895
+ this.lgGrid = computed(() => {
15896
+ const num = this.gridNo();
15897
+ return num > 3 ? num - 1 : num;
15898
+ });
15899
+ this.mdGrid = computed(() => {
15900
+ const num = this.gridNo(), lgGrid = this.lgGrid();
15901
+ return num > 3 ? Math.floor(lgGrid / 2) : num;
15902
+ });
15912
15903
  this.columnLengths = signal([
15913
15904
  { label: `List`, value: 1 },
15914
15905
  { label: `Dual`, value: 2 },
@@ -15916,14 +15907,25 @@ class ToggleInputFormComponent {
15916
15907
  { label: `Medium`, value: 4 },
15917
15908
  { label: `Maximum`, value: 6 },
15918
15909
  ]);
15919
- this.setGrid = 6;
15920
15910
  }
15921
- toggledItem(e, item) {
15911
+ set _list(v) {
15912
+ const list = this.iS.optionsFormatter(v, this.valueField(), null, this.labelType(), this.labelField(), false) || [];
15913
+ let foundChecked = false;
15914
+ for (const item of list) {
15915
+ item.checked = item.originalRow.checked;
15916
+ if (!foundChecked)
15917
+ foundChecked = item.originalRow.checked;
15918
+ }
15919
+ this.list.set(list);
15920
+ if (this.defaultToggleAll() && !foundChecked)
15921
+ this.toggleAll({ checked: true });
15922
+ }
15923
+ toggleItem(e, item) {
15922
15924
  // throw new Error('Method not implemented.');
15923
15925
  if (e.checked)
15924
- this.addToFormFunc?.(item);
15926
+ this.addToFormFunc()?.(item);
15925
15927
  else
15926
- this.deleteFromFormFunc?.(item);
15928
+ this.deleteFromFormFunc()?.(item);
15927
15929
  this.emitSelected();
15928
15930
  }
15929
15931
  toggleAll(e) {
@@ -15933,7 +15935,7 @@ class ToggleInputFormComponent {
15933
15935
  .filter((x) => !x.checked)
15934
15936
  .forEach((x) => {
15935
15937
  x.checked = true;
15936
- this.addToFormFunc?.(x.originalRow);
15938
+ this.addToFormFunc()?.(x.originalRow);
15937
15939
  });
15938
15940
  return list;
15939
15941
  });
@@ -15943,7 +15945,7 @@ class ToggleInputFormComponent {
15943
15945
  .filter((x) => x.checked)
15944
15946
  .forEach((x) => {
15945
15947
  x.checked = false;
15946
- this.deleteFromFormFunc?.(x.originalRow);
15948
+ this.deleteFromFormFunc()?.(x.originalRow);
15947
15949
  });
15948
15950
  return list;
15949
15951
  });
@@ -15954,8 +15956,11 @@ class ToggleInputFormComponent {
15954
15956
  .filter((x) => x.checked)
15955
15957
  .map((x) => x.originalRow));
15956
15958
  }
15957
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, deps: [{ token: InputService }], target: i0.ɵɵFactoryTarget.Component }); }
15958
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { setGrid: { classPropertyName: "setGrid", publicName: "gridNo", isSignal: false, isRequired: false, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: false, isRequired: true, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: false, isRequired: true, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: false, isRequired: false, transformFunction: null }, addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: false, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n\t<div class=\"row align-items-center justify-content-between g-3\">\n\t\t<div class=\"col-lg-auto\">\n\t\t\t<mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n\t\t\t\t{{ 'Toggle All' | appTranslate | async }}\n\t\t\t</mat-slide-toggle>\n\t\t</div>\n\t\t<div class=\"col-lg d-flex justify-content-end\">\n\t\t\t<div class=\"row align-items-center g-3\">\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\ticonBtn\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n\t\t\t\t\t\t[icon]=\"searchBox.hidden ? 'search' : 'close'\"\n\t\t\t\t\t\t(mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n\t\t\t\t\t<app-input-td-rf\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t[noFormat]=\"true\"\n\t\t\t\t\t\t[showLabel]=\"false\"\n\t\t\t\t\t\tplaceholder=\"Type to search\"\n\t\t\t\t\t\t[(model)]=\"searchQuery\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\tcustomIcon=\"fa fa-list\"\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"Grid Style\"\n\t\t\t\t\t\t[matMenuTriggerFor]=\"gridMenu\" />\n\t\t\t\t\t<mat-menu #gridMenu=\"matMenu\" class=\"\">\n\t\t\t\t\t\t@for (item of columnLengths(); track item) {\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-menu-item\n\t\t\t\t\t\t\t\t(click)=\"setGrid = item.value\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{ 'text-primary': item.value == currentGrid() }\">\n\t\t\t\t\t\t\t\t{{ item.label | appTranslate | async }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mat-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{ xxlGrid() }} g-3\">\n\t@for (item of list() | filterArrayByString: searchQuery : ['label']; track item.value) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"border rounded-10 p-10\">\n\t\t\t\t<div class=\"row align-items-center\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"col text-ellipsis\"\n\t\t\t\t\t\t[matTooltip]=\"ele.innerText\"\n\t\t\t\t\t\t[matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n\t\t\t\t\t\t#ele>\n\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t\t<mat-slide-toggle [(ngModel)]=\"item.checked\" (change)=\"toggledItem($event, item.originalRow)\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t}\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
15959
+ getSelected() {
15960
+ return this.list();
15961
+ }
15962
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15963
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: false, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [(ngModel)]=\"item.checked\"\n (change)=\"toggleItem($event, item.originalRow)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
15959
15964
  }
15960
15965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleInputFormComponent, decorators: [{
15961
15966
  type: Component,
@@ -15964,30 +15969,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
15964
15969
  MatSlideToggleModule,
15965
15970
  BtnComponent,
15966
15971
  FilterArrayByStringPipe,
15967
- InputBasicComponent,
15968
15972
  InputTD_RFComponent,
15969
15973
  FormsModule,
15970
15974
  MatTooltipModule,
15971
15975
  MatMenuModule,
15972
15976
  SDKTranslatePipe,
15973
- ], template: "<div class=\"pb-3\">\n\t<div class=\"row align-items-center justify-content-between g-3\">\n\t\t<div class=\"col-lg-auto\">\n\t\t\t<mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n\t\t\t\t{{ 'Toggle All' | appTranslate | async }}\n\t\t\t</mat-slide-toggle>\n\t\t</div>\n\t\t<div class=\"col-lg d-flex justify-content-end\">\n\t\t\t<div class=\"row align-items-center g-3\">\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\ticonBtn\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n\t\t\t\t\t\t[icon]=\"searchBox.hidden ? 'search' : 'close'\"\n\t\t\t\t\t\t(mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n\t\t\t\t\t<app-input-td-rf\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t[noFormat]=\"true\"\n\t\t\t\t\t\t[showLabel]=\"false\"\n\t\t\t\t\t\tplaceholder=\"Type to search\"\n\t\t\t\t\t\t[(model)]=\"searchQuery\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t<app-btn\n\t\t\t\t\t\tcustomIcon=\"fa fa-list\"\n\t\t\t\t\t\t[showHelpIcon]=\"false\"\n\t\t\t\t\t\thelp=\"Grid Style\"\n\t\t\t\t\t\t[matMenuTriggerFor]=\"gridMenu\" />\n\t\t\t\t\t<mat-menu #gridMenu=\"matMenu\" class=\"\">\n\t\t\t\t\t\t@for (item of columnLengths(); track item) {\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-menu-item\n\t\t\t\t\t\t\t\t(click)=\"setGrid = item.value\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{ 'text-primary': item.value == currentGrid() }\">\n\t\t\t\t\t\t\t\t{{ item.label | appTranslate | async }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</mat-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{ xxlGrid() }} g-3\">\n\t@for (item of list() | filterArrayByString: searchQuery : ['label']; track item.value) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"border rounded-10 p-10\">\n\t\t\t\t<div class=\"row align-items-center\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"col text-ellipsis\"\n\t\t\t\t\t\t[matTooltip]=\"ele.innerText\"\n\t\t\t\t\t\t[matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n\t\t\t\t\t\t#ele>\n\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-auto\">\n\t\t\t\t\t\t<mat-slide-toggle [(ngModel)]=\"item.checked\" (change)=\"toggledItem($event, item.originalRow)\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t}\n</div>\n", styles: [":host{display:block}\n"] }]
15974
- }], ctorParameters: () => [{ type: InputService }], propDecorators: { setGrid: [{
15975
- type: Input,
15976
- args: ['gridNo']
15977
- }], _list: [{
15977
+ ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [(ngModel)]=\"item.checked\"\n (change)=\"toggleItem($event, item.originalRow)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
15978
+ }], propDecorators: { _list: [{
15978
15979
  type: Input,
15979
15980
  args: [{ alias: 'list', required: true }]
15980
- }], valueField: [{
15981
- type: Input,
15982
- args: [{ required: true }]
15983
- }], showToggleAll: [{
15984
- type: Input
15985
- }], addToFormFunc: [{
15986
- type: Input
15987
- }], deleteFromFormFunc: [{
15988
- type: Input
15989
- }], selected: [{
15990
- type: Output
15991
15981
  }] } });
15992
15982
 
15993
15983
  class TranslatorCaseComponent {