@pongrass/utils 1.1.12-v20 → 1.1.13-v20

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.
@@ -80,24 +80,24 @@ class ColorCellRendererComponent {
80
80
  }
81
81
  }
82
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ColorCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: ColorCellRendererComponent, isStandalone: true, selector: "prg-ws-color-cell-renderer", ngImport: i0, template: `
84
- <div class="cell-wrapper align-items-center d-inline-flex gap-2">
85
- <span class="color-box" [ngStyle]="{ 'background-color': colorCode }"></span>
86
- <span class="text-truncate">
87
- {{ params.value }}
88
- </span>
89
- </div>
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: ColorCellRendererComponent, isStandalone: true, selector: "prg-ws-color-cell-renderer", ngImport: i0, template: `
84
+ <div class="cell-wrapper align-items-center d-inline-flex gap-2">
85
+ <span class="color-box" [ngStyle]="{ 'background-color': colorCode }"></span>
86
+ <span class="text-truncate">
87
+ {{ params.value }}
88
+ </span>
89
+ </div>
90
90
  `, isInline: true, styles: [".color-box{height:1.5rem}.cell-wrapper{display:flex;align-items:center;gap:.5rem;width:100%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
91
91
  }
92
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ColorCellRendererComponent, decorators: [{
93
93
  type: Component,
94
- args: [{ standalone: true, imports: [CommonModule], selector: 'prg-ws-color-cell-renderer', template: `
95
- <div class="cell-wrapper align-items-center d-inline-flex gap-2">
96
- <span class="color-box" [ngStyle]="{ 'background-color': colorCode }"></span>
97
- <span class="text-truncate">
98
- {{ params.value }}
99
- </span>
100
- </div>
94
+ args: [{ standalone: true, imports: [CommonModule], selector: 'prg-ws-color-cell-renderer', template: `
95
+ <div class="cell-wrapper align-items-center d-inline-flex gap-2">
96
+ <span class="color-box" [ngStyle]="{ 'background-color': colorCode }"></span>
97
+ <span class="text-truncate">
98
+ {{ params.value }}
99
+ </span>
100
+ </div>
101
101
  `, styles: [".color-box{height:1.5rem}.cell-wrapper{display:flex;align-items:center;gap:.5rem;width:100%;overflow:hidden}\n"] }]
102
102
  }] });
103
103
 
@@ -222,66 +222,66 @@ class CustomSelectFilterComponent {
222
222
  this.params.filterChangedCallback();
223
223
  }
224
224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CustomSelectFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
225
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: CustomSelectFilterComponent, isStandalone: true, selector: "prg-ws-custom-set-filter", viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `
226
- <div class="select-filter-container">
227
- <input type="text" #searchInput cFormControl [(ngModel)]="searchText" (input)="onSearchChange()" placeholder="Search..." class="search-box" />
228
- @if (filteredValues.length > 0) {
229
- <div>
230
- <label class="checkbox-item">
231
- <input cFormCheckInput [indeterminate]="isIndeterminate" type="checkbox" [checked]="isAllSelected()" (change)="onSelectAllChanged($event)" />
232
- (Select All)
233
- </label>
234
- </div>
235
- } @else {
236
- <div>
237
- <label> No matches </label>
238
- </div>
239
- }
240
-
241
- <div class="checkbox-list">
242
- @for (value of filteredValues; track value) {
243
- <label [attr.aria-label]="'Select ' + value" class="checkbox-item">
244
- <input cFormCheckInput type="checkbox" [value]="value" [checked]="isValueSelected(value)" (change)="onValueChanged(value, $event)" />
245
- {{ value }}
246
- </label>
247
- }
248
- </div>
249
- <div class="filter-actions">
250
- <button cButton color="primary" size="sm" variant="outline" (click)="onReset()">Reset</button>
251
- </div>
252
- </div>
225
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: CustomSelectFilterComponent, isStandalone: true, selector: "prg-ws-custom-set-filter", viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `
226
+ <div class="select-filter-container">
227
+ <input type="text" #searchInput cFormControl [(ngModel)]="searchText" (input)="onSearchChange()" placeholder="Search..." class="search-box" />
228
+ @if (filteredValues.length > 0) {
229
+ <div>
230
+ <label class="checkbox-item">
231
+ <input cFormCheckInput [indeterminate]="isIndeterminate" type="checkbox" [checked]="isAllSelected()" (change)="onSelectAllChanged($event)" />
232
+ (Select All)
233
+ </label>
234
+ </div>
235
+ } @else {
236
+ <div>
237
+ <label> No matches </label>
238
+ </div>
239
+ }
240
+
241
+ <div class="checkbox-list">
242
+ @for (value of filteredValues; track value) {
243
+ <label [attr.aria-label]="'Select ' + value" class="checkbox-item">
244
+ <input cFormCheckInput type="checkbox" [value]="value" [checked]="isValueSelected(value)" (change)="onValueChanged(value, $event)" />
245
+ {{ value }}
246
+ </label>
247
+ }
248
+ </div>
249
+ <div class="filter-actions">
250
+ <button cButton color="primary" size="sm" variant="outline" (click)="onReset()">Reset</button>
251
+ </div>
252
+ </div>
253
253
  `, isInline: true, styles: [".select-filter-container{padding:10px}.select-filter-container label{display:flex;gap:5px}.search-box{width:100%;margin-bottom:5px;padding:4px}.checkbox-list{max-height:200px;overflow-y:auto}.checkbox-item{padding:4px 6px;cursor:pointer;border-radius:4px}.checkbox-item:hover{background-color:#f0f0f0}.filter-actions{display:flex;justify-content:flex-end;margin-top:8px;border-top:1px solid #e0e0e0;padding-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: 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: FormModule }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }] });
254
254
  }
255
255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CustomSelectFilterComponent, decorators: [{
256
256
  type: Component,
257
- args: [{ selector: 'prg-ws-custom-set-filter', standalone: true, imports: [FormsModule, FormModule, ButtonModule], template: `
258
- <div class="select-filter-container">
259
- <input type="text" #searchInput cFormControl [(ngModel)]="searchText" (input)="onSearchChange()" placeholder="Search..." class="search-box" />
260
- @if (filteredValues.length > 0) {
261
- <div>
262
- <label class="checkbox-item">
263
- <input cFormCheckInput [indeterminate]="isIndeterminate" type="checkbox" [checked]="isAllSelected()" (change)="onSelectAllChanged($event)" />
264
- (Select All)
265
- </label>
266
- </div>
267
- } @else {
268
- <div>
269
- <label> No matches </label>
270
- </div>
271
- }
272
-
273
- <div class="checkbox-list">
274
- @for (value of filteredValues; track value) {
275
- <label [attr.aria-label]="'Select ' + value" class="checkbox-item">
276
- <input cFormCheckInput type="checkbox" [value]="value" [checked]="isValueSelected(value)" (change)="onValueChanged(value, $event)" />
277
- {{ value }}
278
- </label>
279
- }
280
- </div>
281
- <div class="filter-actions">
282
- <button cButton color="primary" size="sm" variant="outline" (click)="onReset()">Reset</button>
283
- </div>
284
- </div>
257
+ args: [{ selector: 'prg-ws-custom-set-filter', standalone: true, imports: [FormsModule, FormModule, ButtonModule], template: `
258
+ <div class="select-filter-container">
259
+ <input type="text" #searchInput cFormControl [(ngModel)]="searchText" (input)="onSearchChange()" placeholder="Search..." class="search-box" />
260
+ @if (filteredValues.length > 0) {
261
+ <div>
262
+ <label class="checkbox-item">
263
+ <input cFormCheckInput [indeterminate]="isIndeterminate" type="checkbox" [checked]="isAllSelected()" (change)="onSelectAllChanged($event)" />
264
+ (Select All)
265
+ </label>
266
+ </div>
267
+ } @else {
268
+ <div>
269
+ <label> No matches </label>
270
+ </div>
271
+ }
272
+
273
+ <div class="checkbox-list">
274
+ @for (value of filteredValues; track value) {
275
+ <label [attr.aria-label]="'Select ' + value" class="checkbox-item">
276
+ <input cFormCheckInput type="checkbox" [value]="value" [checked]="isValueSelected(value)" (change)="onValueChanged(value, $event)" />
277
+ {{ value }}
278
+ </label>
279
+ }
280
+ </div>
281
+ <div class="filter-actions">
282
+ <button cButton color="primary" size="sm" variant="outline" (click)="onReset()">Reset</button>
283
+ </div>
284
+ </div>
285
285
  `, styles: [".select-filter-container{padding:10px}.select-filter-container label{display:flex;gap:5px}.search-box{width:100%;margin-bottom:5px;padding:4px}.checkbox-list{max-height:200px;overflow-y:auto}.checkbox-item{padding:4px 6px;cursor:pointer;border-radius:4px}.checkbox-item:hover{background-color:#f0f0f0}.filter-actions{display:flex;justify-content:flex-end;margin-top:8px;border-top:1px solid #e0e0e0;padding-top:8px}\n"] }]
286
286
  }], propDecorators: { searchInputRef: [{
287
287
  type: ViewChild,
@@ -451,7 +451,7 @@ class AgDateRangeFilterComponent {
451
451
  this.params.filterChangedCallback();
452
452
  }
453
453
  clearPresetSelection() {
454
- this.presets.forEach(p => p.isSelected = false);
454
+ this.presets.forEach(p => (p.isSelected = false));
455
455
  }
456
456
  calculatePastDays(days) {
457
457
  const today = new Date();
@@ -480,8 +480,7 @@ class AgDateRangeFilterComponent {
480
480
  if (preset.calculate) {
481
481
  try {
482
482
  const { start, end } = preset.calculate();
483
- if (this.areDatesEqual(this.startDate, start) &&
484
- this.areDatesEqual(this.endDate, end)) {
483
+ if (this.areDatesEqual(this.startDate, start) && this.areDatesEqual(this.endDate, end)) {
485
484
  this.clearPresetSelection();
486
485
  preset.isSelected = true;
487
486
  this.selectedPresetLabel = preset.label;
@@ -606,9 +605,7 @@ class AgDateRangeFilterComponent {
606
605
  </div>
607
606
  <div class="presets-list">
608
607
  @for (preset of presets; track preset.label) {
609
- <div class="preset-item"
610
- [class.active]="preset.isSelected"
611
- (click)="onPresetClick(preset)">
608
+ <div class="preset-item" [class.active]="preset.isSelected" (click)="onPresetClick(preset)">
612
609
  {{ preset.label }}
613
610
  </div>
614
611
  }
@@ -639,9 +636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
639
636
  </div>
640
637
  <div class="presets-list">
641
638
  @for (preset of presets; track preset.label) {
642
- <div class="preset-item"
643
- [class.active]="preset.isSelected"
644
- (click)="onPresetClick(preset)">
639
+ <div class="preset-item" [class.active]="preset.isSelected" (click)="onPresetClick(preset)">
645
640
  {{ preset.label }}
646
641
  </div>
647
642
  }
@@ -677,14 +672,14 @@ class CheckboxCellRendererComponent {
677
672
  }
678
673
  }
679
674
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CheckboxCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
680
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: CheckboxCellRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: ` <div class="d-flex justify-content-start align-items-center h-100 mt-2">
681
- <input
682
- cFormCheckInput
683
- type="checkbox"
684
- class="me-2 cell-renderer-checkbox"
685
- [checked]="value"
686
- (change)="onChangeCheckBox($event)"
687
- [disabled]="ischeckboxDisabled" />
675
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: CheckboxCellRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: ` <div class="d-flex justify-content-start align-items-center h-100 mt-2">
676
+ <input
677
+ cFormCheckInput
678
+ type="checkbox"
679
+ class="me-2 cell-renderer-checkbox"
680
+ [checked]="value"
681
+ (change)="onChangeCheckBox($event)"
682
+ [disabled]="ischeckboxDisabled" />
688
683
  </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormModule }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }] });
689
684
  }
690
685
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CheckboxCellRendererComponent, decorators: [{
@@ -692,14 +687,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
692
687
  args: [{
693
688
  standalone: true,
694
689
  imports: [FormModule],
695
- template: ` <div class="d-flex justify-content-start align-items-center h-100 mt-2">
696
- <input
697
- cFormCheckInput
698
- type="checkbox"
699
- class="me-2 cell-renderer-checkbox"
700
- [checked]="value"
701
- (change)="onChangeCheckBox($event)"
702
- [disabled]="ischeckboxDisabled" />
690
+ template: ` <div class="d-flex justify-content-start align-items-center h-100 mt-2">
691
+ <input
692
+ cFormCheckInput
693
+ type="checkbox"
694
+ class="me-2 cell-renderer-checkbox"
695
+ [checked]="value"
696
+ (change)="onChangeCheckBox($event)"
697
+ [disabled]="ischeckboxDisabled" />
703
698
  </div>`
704
699
  }]
705
700
  }] });
@@ -719,22 +714,22 @@ class CommentsButtonCellRendererComponent {
719
714
  }
720
715
  }
721
716
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CommentsButtonCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
722
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: CommentsButtonCellRendererComponent, isStandalone: true, selector: "prg-ws-comments-button-cell-renderer", ngImport: i0, template: `
723
- <div>
724
- <button cButton [color]="params.data?.orders_notes ? 'primary' : 'secondary'" size="sm" data-action="comment-action" (click)="onCommentClick()">
725
- Comments
726
- </button>
727
- </div>
717
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: CommentsButtonCellRendererComponent, isStandalone: true, selector: "prg-ws-comments-button-cell-renderer", ngImport: i0, template: `
718
+ <div>
719
+ <button cButton [color]="params.data?.orders_notes ? 'primary' : 'secondary'" size="sm" data-action="comment-action" (click)="onCommentClick()">
720
+ Comments
721
+ </button>
722
+ </div>
728
723
  `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }] });
729
724
  }
730
725
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CommentsButtonCellRendererComponent, decorators: [{
731
726
  type: Component,
732
- args: [{ standalone: true, selector: 'prg-ws-comments-button-cell-renderer', imports: [ButtonModule], template: `
733
- <div>
734
- <button cButton [color]="params.data?.orders_notes ? 'primary' : 'secondary'" size="sm" data-action="comment-action" (click)="onCommentClick()">
735
- Comments
736
- </button>
737
- </div>
727
+ args: [{ standalone: true, selector: 'prg-ws-comments-button-cell-renderer', imports: [ButtonModule], template: `
728
+ <div>
729
+ <button cButton [color]="params.data?.orders_notes ? 'primary' : 'secondary'" size="sm" data-action="comment-action" (click)="onCommentClick()">
730
+ Comments
731
+ </button>
732
+ </div>
738
733
  ` }]
739
734
  }] });
740
735
 
@@ -804,9 +799,7 @@ class JsonrpcServiceLib {
804
799
  params: params,
805
800
  id: this.configService.generateUniqueId()
806
801
  };
807
- return this.httpService
808
- .post(this.baseURL, body, { headers })
809
- .pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));
802
+ return this.httpService.post(this.baseURL, body, { headers }).pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));
810
803
  }
811
804
  // JSONRPC POST Request With promise
812
805
  async postJsonRpcRequestPromise(method, params) {
@@ -1189,14 +1182,9 @@ class BadgeCellRendererComponent {
1189
1182
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BadgeCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1190
1183
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: BadgeCellRendererComponent, isStandalone: true, selector: "prg-ws-badge-cell-renderer", ngImport: i0, template: `
1191
1184
  @if (displayValue) {
1192
- <c-badge
1193
- [color]="badgeColor"
1194
- [ngStyle]="customStyles"
1195
- [textColor]="textColor"
1196
- class="text-wrap"
1197
- >
1198
- {{ displayValue }}
1199
- </c-badge>
1185
+ <c-badge [color]="badgeColor" [ngStyle]="customStyles" [textColor]="textColor" class="text-wrap">
1186
+ {{ displayValue }}
1187
+ </c-badge>
1200
1188
  }
1201
1189
  `, isInline: true, styles: ["c-badge{font-size:.875rem;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i2$1.BadgeComponent, selector: "c-badge", inputs: ["color", "position", "shape", "size", "textColor", "textBgColor"] }] });
1202
1190
  }
@@ -1204,14 +1192,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
1204
1192
  type: Component,
1205
1193
  args: [{ selector: 'prg-ws-badge-cell-renderer', standalone: true, imports: [CommonModule, BadgeModule], template: `
1206
1194
  @if (displayValue) {
1207
- <c-badge
1208
- [color]="badgeColor"
1209
- [ngStyle]="customStyles"
1210
- [textColor]="textColor"
1211
- class="text-wrap"
1212
- >
1213
- {{ displayValue }}
1214
- </c-badge>
1195
+ <c-badge [color]="badgeColor" [ngStyle]="customStyles" [textColor]="textColor" class="text-wrap">
1196
+ {{ displayValue }}
1197
+ </c-badge>
1215
1198
  }
1216
1199
  `, styles: ["c-badge{font-size:.875rem;font-weight:500}\n"] }]
1217
1200
  }] });
@@ -1310,7 +1293,8 @@ class HyperlinkCellRendererComponent {
1310
1293
  }
1311
1294
  else {
1312
1295
  // Auto detection
1313
- if (typeof value === 'string' && value.includes('@') && !value.includes(' ')) { // Simple email check
1296
+ if (typeof value === 'string' && value.includes('@') && !value.includes(' ')) {
1297
+ // Simple email check
1314
1298
  this.setAsEmail(value);
1315
1299
  }
1316
1300
  else if (typeof value === 'string' && (value.startsWith('http') || value.startsWith('www.'))) {
@@ -1334,7 +1318,7 @@ class HyperlinkCellRendererComponent {
1334
1318
  url = `https://${url}`;
1335
1319
  }
1336
1320
  else if (!url.startsWith('http') && !url.startsWith('//')) {
1337
- // If forced as link but no protocol, keep as is or assume https?
1321
+ // If forced as link but no protocol, keep as is or assume https?
1338
1322
  // Usually browsers handle "google.com" as relative if in href, so prepending https is safer for external links.
1339
1323
  // However, if it's a relative link intended, we shouldn't touch it.
1340
1324
  // Given "display link or email", it's likely external or at least absolute.
@@ -2059,7 +2043,7 @@ class DateTimePickerComponent {
2059
2043
  useExisting: forwardRef(() => DateTimePickerComponent),
2060
2044
  multi: true
2061
2045
  }
2062
- ], ngImport: i0, template: "<div class=\"row g-3 align-items-end\">\r\n <div class=\"col-12 col-md-6\">\r\n <c-date-picker\r\n [date]=\"date\"\r\n [disabled]=\"disabled\"\r\n (valueChange)=\"onDateChange($event)\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n [value]=\"date\"\r\n [calendarDate]=\"date\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\r\n @if (!date) {\r\n <option value=\"\">Select time</option>\r\n }\r\n @for (time of timeDropdwons; track time.value) {\r\n <option [value]=\"time.value\">\r\n {{ time.label }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: i2$1.DatePickerComponent, selector: "c-date-picker", inputs: ["calendars", "placeholder", "date"], outputs: ["dateChange"], exportAs: ["cDatePicker"] }] });
2046
+ ], ngImport: i0, template: "<div class=\"row g-3 align-items-end\">\n <div class=\"col-12 col-md-6\">\n <c-date-picker\n [date]=\"date\"\n [disabled]=\"disabled\"\n (valueChange)=\"onDateChange($event)\"\n inputReadOnly=\"true\"\n [showAdjacentDays]=\"false\"\n [value]=\"date\"\n [calendarDate]=\"date\"\n locale=\"en-US\">\n </c-date-picker>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\n @if (!date) {\n <option value=\"\">Select time</option>\n }\n @for (time of timeDropdwons; track time.value) {\n <option [value]=\"time.value\">\n {{ time.label }}\n </option>\n }\n </select>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: i2$1.DatePickerComponent, selector: "c-date-picker", inputs: ["calendars", "placeholder", "date"], outputs: ["dateChange"], exportAs: ["cDatePicker"] }] });
2063
2047
  }
2064
2048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DateTimePickerComponent, decorators: [{
2065
2049
  type: Component,
@@ -2069,7 +2053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
2069
2053
  useExisting: forwardRef(() => DateTimePickerComponent),
2070
2054
  multi: true
2071
2055
  }
2072
- ], template: "<div class=\"row g-3 align-items-end\">\r\n <div class=\"col-12 col-md-6\">\r\n <c-date-picker\r\n [date]=\"date\"\r\n [disabled]=\"disabled\"\r\n (valueChange)=\"onDateChange($event)\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n [value]=\"date\"\r\n [calendarDate]=\"date\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\r\n @if (!date) {\r\n <option value=\"\">Select time</option>\r\n }\r\n @for (time of timeDropdwons; track time.value) {\r\n <option [value]=\"time.value\">\r\n {{ time.label }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n</div>\r\n" }]
2056
+ ], template: "<div class=\"row g-3 align-items-end\">\n <div class=\"col-12 col-md-6\">\n <c-date-picker\n [date]=\"date\"\n [disabled]=\"disabled\"\n (valueChange)=\"onDateChange($event)\"\n inputReadOnly=\"true\"\n [showAdjacentDays]=\"false\"\n [value]=\"date\"\n [calendarDate]=\"date\"\n locale=\"en-US\">\n </c-date-picker>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\n @if (!date) {\n <option value=\"\">Select time</option>\n }\n @for (time of timeDropdwons; track time.value) {\n <option [value]=\"time.value\">\n {{ time.label }}\n </option>\n }\n </select>\n </div>\n</div>\n" }]
2073
2057
  }] });
2074
2058
 
2075
2059
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -2109,7 +2093,7 @@ class MultiFormComponent {
2109
2093
  ngOnChanges(changes) {
2110
2094
  if (changes['config'] && !changes['config'].isFirstChange()) {
2111
2095
  if (this.showUnsavedFlags) {
2112
- if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {
2096
+ if (this.hasUnsavedChanges() && !this.isFormSaved) {
2113
2097
  Swal.fire({
2114
2098
  icon: 'warning',
2115
2099
  title: 'Do you want to save the changes?',
@@ -2459,11 +2443,11 @@ class MultiFormComponent {
2459
2443
  return null;
2460
2444
  }
2461
2445
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: MultiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: MultiFormComponent, isStandalone: false, selector: "prg-ws-multi-form", inputs: { config: "config", showUnsavedFlags: "showUnsavedFlags", currentTableGridsSelectedIndex: "currentTableGridsSelectedIndex", formId: "formId" }, outputs: { fieldAction: "fieldAction", formSavedUnsavedListen: "formSavedUnsavedListen", selectionChangeEvent: "selectionChangeEvent" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['min']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Minimum value {{ field?.validations?.min }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['max']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Maximum value {{ field?.validations?.max }} is allowed</small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\"\r\n [minDate]=\"field?.validations?.minDate || ''\"\r\n [maxDate]=\"field?.validations?.maxDate || ''\">\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n\r\n } @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n\r\n } @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"\r\n field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\r\n \"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n", styles: [".no-label-margin{margin-top:1.6rem}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.h-135{height:135px}.single-line-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;display:block}.label-multiform{font-size:16px;font-weight:400}.field-checkbox{display:flex;align-items:center}::ng-deep [data-coreui-theme=dark] .bs-datepicker{background:#212631;box-shadow:0 0 10px #323a49}::ng-deep [data-coreui-theme=dark] .bs-datepicker .bs-datepicker-body{border:1px solid #323a49}::ng-deep .pongrass-red-datepicker .bs-datepicker-head{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td span.selected,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td.selected span,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td span[class*=select-]:after,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td[class*=select-] span:after{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td.week span{color:#ff4d5c}\n"], dependencies: [{ kind: "directive", type: CircularFocusDirective, selector: "[wsCircularFocus]", inputs: ["formId", "formGroup"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$1.MultiSelectComponent, selector: "c-multi-select", inputs: ["allowCreateOptions", "cleaner", "clearSearchOnSelect", "disabled", "loading", "multiple", "options", "optionsMaxHeight", "optionsStyle", "placeholder", "resetSelectionOnOptionsChange", "search", "searchNoResultsLabel", "searchValue", "selectAll", "selectAllLabel", "selectionType", "selectionTypeCounterText", "selectionTypeCounterTextPluralMap", "size", "value", "valid", "virtualScroller", "visibleItems", "itemSize", "itemMinWidth", "visible", "popperOptions"], outputs: ["searchValueChange", "valueChange", "visibleChange"], exportAs: ["cMultiSelect"] }, { kind: "component", type: i2$1.MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: ["optionsStyle", "label", "text", "visible", "disabled", "selected", "value", "active", "role"], outputs: ["selectedChange", "focusChange"], exportAs: ["cMultiSelectOption"] }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "component", type: i2$1.FormCheckComponent, selector: "c-form-check", inputs: ["inline", "reverse", "sizing", "switch"], exportAs: ["cFormCheck"] }, { kind: "directive", type: i2$1.FormCheckLabelDirective, selector: "label[cFormCheckLabel]" }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: i2$1.FormLabelDirective, selector: "[cLabel]", inputs: ["cLabel", "sizing"] }, { kind: "directive", type: i1.IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "component", type: i2$1.DatePickerComponent, selector: "c-date-picker", inputs: ["calendars", "placeholder", "date"], outputs: ["dateChange"], exportAs: ["cDatePicker"] }, { kind: "directive", type: DecimalInputDirective, selector: "[wsDecimalInput]", inputs: ["wsDecimalInput", "wsAcceptStringInput"] }, { kind: "directive", type: ShowTooltipIfTruncatedDirective, selector: "[wsShowTooltipIfTruncated]", inputs: ["wsShowTooltipIfTruncated"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[cTooltip]", inputs: ["cTooltip", "cTooltipOptions", "cTooltipPlacement", "cTooltipRef", "cTooltipTrigger", "cTooltipVisible"], outputs: ["cTooltipVisibleChange"], exportAs: ["cTooltip"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: i8.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i8.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "component", type: EditionListGroupedComponent, selector: "prg-ws-edition-list-grouped", inputs: ["label", "multiple", "hasFormError"], outputs: ["selectedEditionsChange"] }, { kind: "directive", type: MultiSelectStylerDirective, selector: "[wsMultiSelectStyler]", inputs: ["wsMultiSelectStyler", "options"] }, { kind: "component", type: i2$1.TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "component", type: DateTimePickerComponent, selector: "app-date-time-picker" }] });
2446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: MultiFormComponent, isStandalone: false, selector: "prg-ws-multi-form", inputs: { config: "config", showUnsavedFlags: "showUnsavedFlags", currentTableGridsSelectedIndex: "currentTableGridsSelectedIndex", formId: "formId" }, outputs: { fieldAction: "fieldAction", formSavedUnsavedListen: "formSavedUnsavedListen", selectionChangeEvent: "selectionChangeEvent" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['min']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Minimum value {{ field?.validations?.min }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['max']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Maximum value {{ field?.validations?.max }} is allowed</small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\"\r\n [minDate]=\"field?.validations?.minDate || ''\"\r\n [maxDate]=\"field?.validations?.maxDate || ''\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n } @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"\r\n field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\r\n \"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n", styles: [".no-label-margin{margin-top:1.6rem}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.h-135{height:135px}.single-line-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;display:block}.label-multiform{font-size:16px;font-weight:400}.field-checkbox{display:flex;align-items:center}::ng-deep [data-coreui-theme=dark] .bs-datepicker{background:#212631;box-shadow:0 0 10px #323a49}::ng-deep [data-coreui-theme=dark] .bs-datepicker .bs-datepicker-body{border:1px solid #323a49}::ng-deep .pongrass-red-datepicker .bs-datepicker-head{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td span.selected,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td.selected span,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td span[class*=select-]:after,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td[class*=select-] span:after{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td.week span{color:#ff4d5c}\n"], dependencies: [{ kind: "directive", type: CircularFocusDirective, selector: "[wsCircularFocus]", inputs: ["formId", "formGroup"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$1.MultiSelectComponent, selector: "c-multi-select", inputs: ["allowCreateOptions", "cleaner", "clearSearchOnSelect", "disabled", "loading", "multiple", "options", "optionsMaxHeight", "optionsStyle", "placeholder", "resetSelectionOnOptionsChange", "search", "searchNoResultsLabel", "searchValue", "selectAll", "selectAllLabel", "selectionType", "selectionTypeCounterText", "selectionTypeCounterTextPluralMap", "size", "value", "valid", "virtualScroller", "visibleItems", "itemSize", "itemMinWidth", "visible", "popperOptions"], outputs: ["searchValueChange", "valueChange", "visibleChange"], exportAs: ["cMultiSelect"] }, { kind: "component", type: i2$1.MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: ["optionsStyle", "label", "text", "visible", "disabled", "selected", "value", "active", "role"], outputs: ["selectedChange", "focusChange"], exportAs: ["cMultiSelectOption"] }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "component", type: i2$1.FormCheckComponent, selector: "c-form-check", inputs: ["inline", "reverse", "sizing", "switch"], exportAs: ["cFormCheck"] }, { kind: "directive", type: i2$1.FormCheckLabelDirective, selector: "label[cFormCheckLabel]" }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: i2$1.FormLabelDirective, selector: "[cLabel]", inputs: ["cLabel", "sizing"] }, { kind: "directive", type: i1.IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "component", type: i2$1.DatePickerComponent, selector: "c-date-picker", inputs: ["calendars", "placeholder", "date"], outputs: ["dateChange"], exportAs: ["cDatePicker"] }, { kind: "directive", type: DecimalInputDirective, selector: "[wsDecimalInput]", inputs: ["wsDecimalInput", "wsAcceptStringInput"] }, { kind: "directive", type: ShowTooltipIfTruncatedDirective, selector: "[wsShowTooltipIfTruncated]", inputs: ["wsShowTooltipIfTruncated"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[cTooltip]", inputs: ["cTooltip", "cTooltipOptions", "cTooltipPlacement", "cTooltipRef", "cTooltipTrigger", "cTooltipVisible"], outputs: ["cTooltipVisibleChange"], exportAs: ["cTooltip"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: i8.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i8.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "component", type: EditionListGroupedComponent, selector: "prg-ws-edition-list-grouped", inputs: ["label", "multiple", "hasFormError"], outputs: ["selectedEditionsChange"] }, { kind: "directive", type: MultiSelectStylerDirective, selector: "[wsMultiSelectStyler]", inputs: ["wsMultiSelectStyler", "options"] }, { kind: "component", type: i2$1.TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "component", type: DateTimePickerComponent, selector: "app-date-time-picker" }] });
2463
2447
  }
2464
2448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: MultiFormComponent, decorators: [{
2465
2449
  type: Component,
2466
- args: [{ selector: 'prg-ws-multi-form', standalone: false, template: "<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['min']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Minimum value {{ field?.validations?.min }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['max']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Maximum value {{ field?.validations?.max }} is allowed</small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\"\r\n [minDate]=\"field?.validations?.minDate || ''\"\r\n [maxDate]=\"field?.validations?.maxDate || ''\">\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n\r\n } @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n\r\n } @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"\r\n field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\r\n \"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n", styles: [".no-label-margin{margin-top:1.6rem}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.h-135{height:135px}.single-line-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;display:block}.label-multiform{font-size:16px;font-weight:400}.field-checkbox{display:flex;align-items:center}::ng-deep [data-coreui-theme=dark] .bs-datepicker{background:#212631;box-shadow:0 0 10px #323a49}::ng-deep [data-coreui-theme=dark] .bs-datepicker .bs-datepicker-body{border:1px solid #323a49}::ng-deep .pongrass-red-datepicker .bs-datepicker-head{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td span.selected,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td.selected span,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td span[class*=select-]:after,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td[class*=select-] span:after{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td.week span{color:#ff4d5c}\n"] }]
2450
+ args: [{ selector: 'prg-ws-multi-form', standalone: false, template: "<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['min']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Minimum value {{ field?.validations?.min }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['max']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Maximum value {{ field?.validations?.max }} is allowed</small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\"\r\n [minDate]=\"field?.validations?.minDate || ''\"\r\n [maxDate]=\"field?.validations?.maxDate || ''\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n } @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"\r\n field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\r\n \"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n", styles: [".no-label-margin{margin-top:1.6rem}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.h-135{height:135px}.single-line-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;display:block}.label-multiform{font-size:16px;font-weight:400}.field-checkbox{display:flex;align-items:center}::ng-deep [data-coreui-theme=dark] .bs-datepicker{background:#212631;box-shadow:0 0 10px #323a49}::ng-deep [data-coreui-theme=dark] .bs-datepicker .bs-datepicker-body{border:1px solid #323a49}::ng-deep .pongrass-red-datepicker .bs-datepicker-head{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td span.selected,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td.selected span,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td span[class*=select-]:after,::ng-deep .pongrass-red-datepicker .theme-red .bs-datepicker-body table td[class*=select-] span:after{background-color:#ff4d5c}::ng-deep .pongrass-red-datepicker .bs-datepicker-body table td.week span{color:#ff4d5c}\n"] }]
2467
2451
  }], ctorParameters: () => [], propDecorators: { config: [{
2468
2452
  type: Input
2469
2453
  }], showUnsavedFlags: [{
@@ -2539,7 +2523,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
2539
2523
  FormCheckInputDirective,
2540
2524
  EditionListGroupedComponent,
2541
2525
  MultiSelectStylerDirective,
2542
- TimePickerModule,
2526
+ TimePickerModule
2543
2527
  ],
2544
2528
  exports: [MultiFormComponent, DateTimePickerComponent]
2545
2529
  }]
@@ -2626,7 +2610,7 @@ const AgGridFilters = {
2626
2610
  // Custom filters that can be used in the table grid
2627
2611
  const TABLE_GRID_FILTER_COMPONENTS = {
2628
2612
  [FilterType.SELECT]: CustomSelectFilterComponent,
2629
- [FilterType.DATE_RANGE]: AgDateRangeFilterComponent,
2613
+ [FilterType.DATE_RANGE]: AgDateRangeFilterComponent
2630
2614
  // Add others as needed
2631
2615
  };
2632
2616
 
@@ -3031,11 +3015,11 @@ class TableGridComponent {
3031
3015
  this.subscribeUntil$.complete();
3032
3016
  }
3033
3017
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: TableGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3034
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: TableGridComponent, isStandalone: false, selector: "prg-ws-table-grid", inputs: { tableConfiguration: "tableConfiguration", columnToolVisible: "columnToolVisible", initialPageNumber: "initialPageNumber" }, outputs: { tableGridReady: "tableGridReady", tableRowSelection: "tableRowSelection", tableRowSelectionChanged: "tableRowSelectionChanged", tableRowClicked: "tableRowClicked", columnStateEvent: "columnStateEvent", pageChange: "pageChange", filterChanged: "filterChanged", cellValueChanged: "cellValueChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\" \r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".offcanvas.offcanvas-end{--cui-offcanvas-width: 350px}.border{--cui-border-color: color-mix(in srgb, transparent, #181d1f 15%)}.columns-list{width:210px;transition:width .2s ease-in,padding .2s ease-in;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.default-ag-layout{height:calc(100vh - 210px)}.small-table-container{max-height:calc(100vh - 210px)}.columns-wrapper{flex-grow:1;overflow-y:auto;overflow-x:hidden;transition:opacity .2s ease-in,height .2s ease-in;opacity:1;height:calc(92vh - 93px);overflow:auto}.columns-tool.hide{width:32px;transition:width .2s ease-in,padding .2s ease-in}.columns-tool.hide button,.columns-tool.hide .columns-wrapper{opacity:0;height:0;pointer-events:none}.columns-tool.hide .columns-heading{flex-direction:column}.columns-tool.hide .columns-heading p{margin:50px 0 0;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:4px;font-size:.8rem;transition:margin .2s ease-in,font-size .2s ease-in}.columns-tool button{transform:scale(1);opacity:1;transition:opacity .2s ease-in,transform .1s ease-in;will-change:opacity,transform;height:40px}.columns-tool.hide button{opacity:0;transform:scale(.95)}.columns-heading{display:flex;justify-content:space-between;align-items:center;transition:flex-direction .2s ease-in}.columns-heading p{margin:0;font-size:1rem;text-align:center;letter-spacing:normal}.truncate-preference-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "component", type: i1$1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "component", type: i2$1.FormCheckComponent, selector: "c-form-check", inputs: ["inline", "reverse", "sizing", "switch"], exportAs: ["cFormCheck"] }, { kind: "directive", type: i2$1.FormCheckLabelDirective, selector: "label[cFormCheckLabel]" }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: i2$1.ButtonCloseDirective, selector: "[cButtonClose]", inputs: ["white"] }, { kind: "component", type: i2$1.OffcanvasBodyComponent, selector: "c-offcanvas-body" }, { kind: "component", type: i2$1.OffcanvasComponent, selector: "c-offcanvas", inputs: ["backdrop", "keyboard", "placement", "responsive", "id", "role", "ariaModal", "scroll", "visible"], outputs: ["visibleChange"], exportAs: ["cOffcanvas"] }, { kind: "component", type: i2$1.OffcanvasHeaderComponent, selector: "c-offcanvas-header" }, { kind: "directive", type: i2$1.OffcanvasTitleDirective, selector: "[cOffcanvasTitle]" }, { kind: "directive", type: i2$1.OffcanvasToggleDirective, selector: "[cOffcanvasToggle]", inputs: ["cOffcanvasToggle"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[cTooltip]", inputs: ["cTooltip", "cTooltipOptions", "cTooltipPlacement", "cTooltipRef", "cTooltipTrigger", "cTooltipVisible"], outputs: ["cTooltipVisibleChange"], exportAs: ["cTooltip"] }, { kind: "directive", type: i1.IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }] });
3018
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: TableGridComponent, isStandalone: false, selector: "prg-ws-table-grid", inputs: { tableConfiguration: "tableConfiguration", columnToolVisible: "columnToolVisible", initialPageNumber: "initialPageNumber" }, outputs: { tableGridReady: "tableGridReady", tableRowSelection: "tableRowSelection", tableRowSelectionChanged: "tableRowSelectionChanged", tableRowClicked: "tableRowClicked", columnStateEvent: "columnStateEvent", pageChange: "pageChange", filterChanged: "filterChanged", cellValueChanged: "cellValueChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\"\r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".offcanvas.offcanvas-end{--cui-offcanvas-width: 350px}.border{--cui-border-color: color-mix(in srgb, transparent, #181d1f 15%)}.columns-list{width:210px;transition:width .2s ease-in,padding .2s ease-in;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.default-ag-layout{height:calc(100vh - 210px)}.small-table-container{max-height:calc(100vh - 210px)}.columns-wrapper{flex-grow:1;overflow-y:auto;overflow-x:hidden;transition:opacity .2s ease-in,height .2s ease-in;opacity:1;height:calc(92vh - 93px);overflow:auto}.columns-tool.hide{width:32px;transition:width .2s ease-in,padding .2s ease-in}.columns-tool.hide button,.columns-tool.hide .columns-wrapper{opacity:0;height:0;pointer-events:none}.columns-tool.hide .columns-heading{flex-direction:column}.columns-tool.hide .columns-heading p{margin:50px 0 0;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:4px;font-size:.8rem;transition:margin .2s ease-in,font-size .2s ease-in}.columns-tool button{transform:scale(1);opacity:1;transition:opacity .2s ease-in,transform .1s ease-in;will-change:opacity,transform;height:40px}.columns-tool.hide button{opacity:0;transform:scale(.95)}.columns-heading{display:flex;justify-content:space-between;align-items:center;transition:flex-direction .2s ease-in}.columns-heading p{margin:0;font-size:1rem;text-align:center;letter-spacing:normal}.truncate-preference-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "component", type: i1$1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "component", type: i2$1.FormCheckComponent, selector: "c-form-check", inputs: ["inline", "reverse", "sizing", "switch"], exportAs: ["cFormCheck"] }, { kind: "directive", type: i2$1.FormCheckLabelDirective, selector: "label[cFormCheckLabel]" }, { kind: "directive", type: i2$1.FormCheckInputDirective, selector: "input[cFormCheckInput]", inputs: ["type", "indeterminate", "valid"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "directive", type: i2$1.ButtonCloseDirective, selector: "[cButtonClose]", inputs: ["white"] }, { kind: "component", type: i2$1.OffcanvasBodyComponent, selector: "c-offcanvas-body" }, { kind: "component", type: i2$1.OffcanvasComponent, selector: "c-offcanvas", inputs: ["backdrop", "keyboard", "placement", "responsive", "id", "role", "ariaModal", "scroll", "visible"], outputs: ["visibleChange"], exportAs: ["cOffcanvas"] }, { kind: "component", type: i2$1.OffcanvasHeaderComponent, selector: "c-offcanvas-header" }, { kind: "directive", type: i2$1.OffcanvasTitleDirective, selector: "[cOffcanvasTitle]" }, { kind: "directive", type: i2$1.OffcanvasToggleDirective, selector: "[cOffcanvasToggle]", inputs: ["cOffcanvasToggle"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[cTooltip]", inputs: ["cTooltip", "cTooltipOptions", "cTooltipPlacement", "cTooltipRef", "cTooltipTrigger", "cTooltipVisible"], outputs: ["cTooltipVisibleChange"], exportAs: ["cTooltip"] }, { kind: "directive", type: i1.IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }] });
3035
3019
  }
3036
3020
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: TableGridComponent, decorators: [{
3037
3021
  type: Component,
3038
- args: [{ selector: 'prg-ws-table-grid', standalone: false, template: "<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\" \r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".offcanvas.offcanvas-end{--cui-offcanvas-width: 350px}.border{--cui-border-color: color-mix(in srgb, transparent, #181d1f 15%)}.columns-list{width:210px;transition:width .2s ease-in,padding .2s ease-in;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.default-ag-layout{height:calc(100vh - 210px)}.small-table-container{max-height:calc(100vh - 210px)}.columns-wrapper{flex-grow:1;overflow-y:auto;overflow-x:hidden;transition:opacity .2s ease-in,height .2s ease-in;opacity:1;height:calc(92vh - 93px);overflow:auto}.columns-tool.hide{width:32px;transition:width .2s ease-in,padding .2s ease-in}.columns-tool.hide button,.columns-tool.hide .columns-wrapper{opacity:0;height:0;pointer-events:none}.columns-tool.hide .columns-heading{flex-direction:column}.columns-tool.hide .columns-heading p{margin:50px 0 0;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:4px;font-size:.8rem;transition:margin .2s ease-in,font-size .2s ease-in}.columns-tool button{transform:scale(1);opacity:1;transition:opacity .2s ease-in,transform .1s ease-in;will-change:opacity,transform;height:40px}.columns-tool.hide button{opacity:0;transform:scale(.95)}.columns-heading{display:flex;justify-content:space-between;align-items:center;transition:flex-direction .2s ease-in}.columns-heading p{margin:0;font-size:1rem;text-align:center;letter-spacing:normal}.truncate-preference-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
3022
+ args: [{ selector: 'prg-ws-table-grid', standalone: false, template: "<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\"\r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".offcanvas.offcanvas-end{--cui-offcanvas-width: 350px}.border{--cui-border-color: color-mix(in srgb, transparent, #181d1f 15%)}.columns-list{width:210px;transition:width .2s ease-in,padding .2s ease-in;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.default-ag-layout{height:calc(100vh - 210px)}.small-table-container{max-height:calc(100vh - 210px)}.columns-wrapper{flex-grow:1;overflow-y:auto;overflow-x:hidden;transition:opacity .2s ease-in,height .2s ease-in;opacity:1;height:calc(92vh - 93px);overflow:auto}.columns-tool.hide{width:32px;transition:width .2s ease-in,padding .2s ease-in}.columns-tool.hide button,.columns-tool.hide .columns-wrapper{opacity:0;height:0;pointer-events:none}.columns-tool.hide .columns-heading{flex-direction:column}.columns-tool.hide .columns-heading p{margin:50px 0 0;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:4px;font-size:.8rem;transition:margin .2s ease-in,font-size .2s ease-in}.columns-tool button{transform:scale(1);opacity:1;transition:opacity .2s ease-in,transform .1s ease-in;will-change:opacity,transform;height:40px}.columns-tool.hide button{opacity:0;transform:scale(.95)}.columns-heading{display:flex;justify-content:space-between;align-items:center;transition:flex-direction .2s ease-in}.columns-heading p{margin:0;font-size:1rem;text-align:center;letter-spacing:normal}.truncate-preference-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
3039
3023
  }], ctorParameters: () => [], propDecorators: { tableConfiguration: [{
3040
3024
  type: Input
3041
3025
  }], columnToolVisible: [{
@@ -3354,47 +3338,47 @@ class UtilsService {
3354
3338
  .join('');
3355
3339
  footerHTML = `<tr>${totalRow}</tr>`;
3356
3340
  }
3357
- const tableHTML = `
3358
- <table style="width: 100%; border-collapse: collapse;">
3359
- <thead>${headerHTML}</thead>
3360
- <tbody>${bodyHTML}</tbody>
3361
- <tfoot>${footerHTML}</tfoot>
3362
- </table>
3341
+ const tableHTML = `
3342
+ <table style="width: 100%; border-collapse: collapse;">
3343
+ <thead>${headerHTML}</thead>
3344
+ <tbody>${bodyHTML}</tbody>
3345
+ <tfoot>${footerHTML}</tfoot>
3346
+ </table>
3363
3347
  `;
3364
3348
  // Create a new window for printing
3365
3349
  const printWindow = window.open('', '', 'width=800, height=600');
3366
3350
  if (printWindow) {
3367
- printWindow.document.write(`
3368
- <html>
3369
- <head>
3370
- <style>
3371
- @media print {
3372
- @page {
3373
- size: landscape;
3374
- }
3375
- body {
3376
- -webkit-print-color-adjust: exact;
3377
- print-color-adjust: exact;
3378
- }
3379
- table { width: 100%; border-collapse: collapse; }
3380
- th, td { border: 1px solid black; padding: 10px; }
3381
- th { background-color: #f2f2f2; }
3382
- p { margin: 0; padding: 0; }
3383
- }
3384
- </style>
3385
- </head>
3386
- <body>
3387
- <title>Report</title>
3388
- ${headersAndHeadings}
3389
- ${tableHTML}
3390
- <script type="text/javascript">
3391
- window.onload = function() {
3392
- window.print();
3393
- window.onafterprint = window.close();
3394
- };
3395
- </script>
3396
- </body>
3397
- </html>
3351
+ printWindow.document.write(`
3352
+ <html>
3353
+ <head>
3354
+ <style>
3355
+ @media print {
3356
+ @page {
3357
+ size: landscape;
3358
+ }
3359
+ body {
3360
+ -webkit-print-color-adjust: exact;
3361
+ print-color-adjust: exact;
3362
+ }
3363
+ table { width: 100%; border-collapse: collapse; }
3364
+ th, td { border: 1px solid black; padding: 10px; }
3365
+ th { background-color: #f2f2f2; }
3366
+ p { margin: 0; padding: 0; }
3367
+ }
3368
+ </style>
3369
+ </head>
3370
+ <body>
3371
+ <title>Report</title>
3372
+ ${headersAndHeadings}
3373
+ ${tableHTML}
3374
+ <script type="text/javascript">
3375
+ window.onload = function() {
3376
+ window.print();
3377
+ window.onafterprint = window.close();
3378
+ };
3379
+ </script>
3380
+ </body>
3381
+ </html>
3398
3382
  `);
3399
3383
  printWindow.document.close();
3400
3384
  printWindow.focus();
@@ -3505,11 +3489,11 @@ class LoginComponent {
3505
3489
  this.action.emit({ type: ILOGIN_ACTION.FORGET_PASSWORD });
3506
3490
  }
3507
3491
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3508
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: LoginComponent, isStandalone: false, selector: "prg-ws-login", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, showInactivityLogoutMessage: { classPropertyName: "showInactivityLogoutMessage", publicName: "showInactivityLogoutMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input\r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (configService.allConfigValues()?.forgetPassword?.enabled) {\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n @if (forgetPasswordValue) {\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none text-white\" id=\"forget-password\" target=\"_blank\">Forget Password?</a>\r\n } @else {\r\n <a class=\"text-decoration-none text-white\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n }\r\n </span>\r\n </div>\r\n }\r\n \r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#txt-auth-password,#txt-auth-username{border-bottom-right-radius:4px;border-top-right-radius:4px}.max-w-300{width:300px}.pt-8{font-size:10.66px}.login-card-title{color:#fff;font-size:24px}.form-invalid .form-multi-select-input-group,.form-invalid .date-picker-input-group{border:2px solid #e55353}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BackgroundImageDirective, selector: "[wsBackgroundImage]", inputs: ["random", "backgroundImage"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "component", type: i2$1.FormFeedbackComponent, selector: "c-form-feedback", inputs: ["tooltip", "valid"] }, { kind: "component", type: i2$1.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i2$1.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: i2$1.AlertComponent, selector: "c-alert", inputs: ["color", "role", "variant", "dismissible", "fade", "visible"], outputs: ["visibleChange"], exportAs: ["cAlert"] }] });
3492
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: LoginComponent, isStandalone: false, selector: "prg-ws-login", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, showInactivityLogoutMessage: { classPropertyName: "showInactivityLogoutMessage", publicName: "showInactivityLogoutMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input\r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (configService.allConfigValues()?.forgetPassword?.enabled) {\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n @if (forgetPasswordValue) {\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none text-white\" id=\"forget-password\" target=\"_blank\">Forget Password?</a>\r\n } @else {\r\n <a class=\"text-decoration-none text-white\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#txt-auth-password,#txt-auth-username{border-bottom-right-radius:4px;border-top-right-radius:4px}.max-w-300{width:300px}.pt-8{font-size:10.66px}.login-card-title{color:#fff;font-size:24px}.form-invalid .form-multi-select-input-group,.form-invalid .date-picker-input-group{border:2px solid #e55353}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BackgroundImageDirective, selector: "[wsBackgroundImage]", inputs: ["random", "backgroundImage"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "component", type: i2$1.FormFeedbackComponent, selector: "c-form-feedback", inputs: ["tooltip", "valid"] }, { kind: "component", type: i2$1.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i2$1.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: i2$1.AlertComponent, selector: "c-alert", inputs: ["color", "role", "variant", "dismissible", "fade", "visible"], outputs: ["visibleChange"], exportAs: ["cAlert"] }] });
3509
3493
  }
3510
3494
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: LoginComponent, decorators: [{
3511
3495
  type: Component,
3512
- args: [{ selector: 'prg-ws-login', standalone: false, template: "<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input\r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (configService.allConfigValues()?.forgetPassword?.enabled) {\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n @if (forgetPasswordValue) {\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none text-white\" id=\"forget-password\" target=\"_blank\">Forget Password?</a>\r\n } @else {\r\n <a class=\"text-decoration-none text-white\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n }\r\n </span>\r\n </div>\r\n }\r\n \r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#txt-auth-password,#txt-auth-username{border-bottom-right-radius:4px;border-top-right-radius:4px}.max-w-300{width:300px}.pt-8{font-size:10.66px}.login-card-title{color:#fff;font-size:24px}.form-invalid .form-multi-select-input-group,.form-invalid .date-picker-input-group{border:2px solid #e55353}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"] }]
3496
+ args: [{ selector: 'prg-ws-login', standalone: false, template: "<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input\r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (configService.allConfigValues()?.forgetPassword?.enabled) {\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n @if (forgetPasswordValue) {\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none text-white\" id=\"forget-password\" target=\"_blank\">Forget Password?</a>\r\n } @else {\r\n <a class=\"text-decoration-none text-white\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '&copy;' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#txt-auth-password,#txt-auth-username{border-bottom-right-radius:4px;border-top-right-radius:4px}.max-w-300{width:300px}.pt-8{font-size:10.66px}.login-card-title{color:#fff;font-size:24px}.form-invalid .form-multi-select-input-group,.form-invalid .date-picker-input-group{border:2px solid #e55353}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"] }]
3513
3497
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], showInactivityLogoutMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showInactivityLogoutMessage", required: false }] }], action: [{ type: i0.Output, args: ["action"] }] } });
3514
3498
 
3515
3499
  class LoginModule {
@@ -3688,7 +3672,7 @@ class DynamicModalWrapperComponent {
3688
3672
  topClose() {
3689
3673
  this.dialogRef?.buttonClick$.next({
3690
3674
  type: 'close',
3691
- label: 'T-Close',
3675
+ label: 'T-Close'
3692
3676
  });
3693
3677
  if (!this.customClose) {
3694
3678
  this.close();
@@ -3724,7 +3708,7 @@ class DynamicModalWrapperComponent {
3724
3708
  if (this.modalElement) {
3725
3709
  const modalEl = this.modalElement.nativeElement;
3726
3710
  const baseModalZIndex = 1055;
3727
- const modalZIndex = baseModalZIndex + ((this.backdropIndex - 1) * 10);
3711
+ const modalZIndex = baseModalZIndex + (this.backdropIndex - 1) * 10;
3728
3712
  modalEl.style.setProperty('--cui-modal-zindex', modalZIndex.toString());
3729
3713
  }
3730
3714
  // Find all backdrops
@@ -3734,7 +3718,7 @@ class DynamicModalWrapperComponent {
3734
3718
  const latestBackdrop = backdrops[backdrops.length - 1];
3735
3719
  // Set the backdrop z-index dynamically
3736
3720
  const baseBackdropZIndex = 1050;
3737
- const backdropZIndex = baseBackdropZIndex + ((this.backdropIndex - 1) * 10);
3721
+ const backdropZIndex = baseBackdropZIndex + (this.backdropIndex - 1) * 10;
3738
3722
  latestBackdrop.style.zIndex = backdropZIndex.toString();
3739
3723
  }
3740
3724
  }, 100);
@@ -3749,8 +3733,7 @@ class DynamicModalWrapperComponent {
3749
3733
  [alignment]="alignment"
3750
3734
  [scrollable]="scrollable"
3751
3735
  backdrop="static"
3752
- (visibleChange)="onVisibleChange($event)"
3753
- >
3736
+ (visibleChange)="onVisibleChange($event)">
3754
3737
  <c-modal-header>
3755
3738
  <h5 cModalTitle>{{ title }}</h5>
3756
3739
  <button (click)="topClose()" cButtonClose></button>
@@ -3764,13 +3747,7 @@ class DynamicModalWrapperComponent {
3764
3747
  @if (buttons?.length) {
3765
3748
  <c-modal-footer>
3766
3749
  @for (btn of buttons; track btn) {
3767
- <button
3768
- cButton
3769
- [color]="btn.color || 'primary'"
3770
- [variant]="btn.variant"
3771
- [className]="btn.class || ''"
3772
- (click)="onButtonClick(btn)"
3773
- >
3750
+ <button cButton [color]="btn.color || 'primary'" [variant]="btn.variant" [className]="btn.class || ''" (click)="onButtonClick(btn)">
3774
3751
  {{ btn.label }}
3775
3752
  </button>
3776
3753
  }
@@ -3793,8 +3770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
3793
3770
  [alignment]="alignment"
3794
3771
  [scrollable]="scrollable"
3795
3772
  backdrop="static"
3796
- (visibleChange)="onVisibleChange($event)"
3797
- >
3773
+ (visibleChange)="onVisibleChange($event)">
3798
3774
  <c-modal-header>
3799
3775
  <h5 cModalTitle>{{ title }}</h5>
3800
3776
  <button (click)="topClose()" cButtonClose></button>
@@ -3808,13 +3784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
3808
3784
  @if (buttons?.length) {
3809
3785
  <c-modal-footer>
3810
3786
  @for (btn of buttons; track btn) {
3811
- <button
3812
- cButton
3813
- [color]="btn.color || 'primary'"
3814
- [variant]="btn.variant"
3815
- [className]="btn.class || ''"
3816
- (click)="onButtonClick(btn)"
3817
- >
3787
+ <button cButton [color]="btn.color || 'primary'" [variant]="btn.variant" [className]="btn.class || ''" (click)="onButtonClick(btn)">
3818
3788
  {{ btn.label }}
3819
3789
  </button>
3820
3790
  }
@@ -3869,7 +3839,7 @@ class PgDialogService {
3869
3839
  if (config.buttons) {
3870
3840
  config.buttons.forEach(btn => {
3871
3841
  const originalOnClick = btn.onClick;
3872
- btn.onClick = (context) => {
3842
+ btn.onClick = context => {
3873
3843
  if (originalOnClick) {
3874
3844
  originalOnClick(context);
3875
3845
  }
@@ -3946,10 +3916,12 @@ class PgDialogService {
3946
3916
  }
3947
3917
  const dialogRef = new DialogRef();
3948
3918
  const childInjector = Injector.create({
3949
- providers: [{
3919
+ providers: [
3920
+ {
3950
3921
  provide: DialogRef,
3951
3922
  useValue: dialogRef
3952
- }],
3923
+ }
3924
+ ],
3953
3925
  parent: this.injector
3954
3926
  });
3955
3927
  // Create the wrapper component using VCR
@@ -3957,7 +3929,7 @@ class PgDialogService {
3957
3929
  injector: childInjector // Give the wrapper access to DialogRef too
3958
3930
  });
3959
3931
  // Now initialize the DialogRef with the actual wrapper instance
3960
- dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));
3932
+ dialogRef.setCloseFn(res => wrapperRef.instance.close(res));
3961
3933
  wrapperRef.instance.childInjector = childInjector;
3962
3934
  this.configureWrapper(wrapperRef, component, config);
3963
3935
  // Handle close cleanup
@@ -3975,14 +3947,16 @@ class PgDialogService {
3975
3947
  });
3976
3948
  const dialogRef = new DialogRef();
3977
3949
  const childInjector = Injector.create({
3978
- providers: [{
3950
+ providers: [
3951
+ {
3979
3952
  provide: DialogRef,
3980
3953
  useValue: dialogRef
3981
- }],
3954
+ }
3955
+ ],
3982
3956
  parent: this.injector
3983
3957
  });
3984
3958
  wrapperRef.instance.childInjector = childInjector;
3985
- dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));
3959
+ dialogRef.setCloseFn(res => wrapperRef.instance.close(res));
3986
3960
  this.configureWrapper(wrapperRef, component, config);
3987
3961
  // Attach to the view
3988
3962
  this.appRef.attachView(wrapperRef.hostView);
@@ -3991,7 +3965,7 @@ class PgDialogService {
3991
3965
  // Trigger change detection to ensure inputs are applied
3992
3966
  wrapperRef.changeDetectorRef.detectChanges();
3993
3967
  // Handle close cleanup
3994
- wrapperRef.instance.closeCallback = (result) => {
3968
+ wrapperRef.instance.closeCallback = result => {
3995
3969
  this.removeDialog(dialogRef);
3996
3970
  this.appRef.detachView(wrapperRef.hostView);
3997
3971
  wrapperRef.destroy();
@@ -4125,11 +4099,11 @@ class ForgetPasswordLibComponent {
4125
4099
  this.action.emit({ type: ILOGIN_ACTION.BACK_TO_LOGIN });
4126
4100
  }
4127
4101
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ForgetPasswordLibComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4128
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: ForgetPasswordLibComponent, isStandalone: true, selector: "prg-ws-forget-password", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div\r\n class=\"container login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 m-auto\">\r\n <div class=\"glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img src=\"./assets/img/brand/pongrass_logo.png\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">Maintenance Portal</p>\r\n </div>\r\n <div class=\"mt-2\">\r\n <div class=\"h5 mb-3\">Forget Password</div>\r\n @if (emailSentSuccessfully()) {\r\n <div class=\"alert alert-success\" role=\"alert\">\r\n <strong>Success!</strong> An email has been sent to your registered email address with instructions to reset your password.\r\n </div>\r\n <button cButton color=\"primary\" (click)=\"backToLogin()\">Back to Login</button>\r\n } @else {\r\n <form cForm [formGroup]=\"forgetPasswordForm\" class=\"needs-validation\" [validated]=\"isFormSubmitted\" noValidate (ngSubmit)=\"submitResetPassword()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"username\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\" [disabled]=\"isLoading()\">\r\n @if (isLoading()) {\r\n <c-spinner aria-hidden=\"true\" size=\"sm\" class=\"margin-bottom-small\" />\r\n }\r\n {{ config()?.submitButtonText || 'Reset' }}\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <div class=\"mt-4 text-center\">\r\n <button cButton color=\"dark\" variant=\"ghost\" size=\"lg\" id=\"back-to-login\" class=\"w-100 text-white\" (click)=\"backToLogin()\">Back to Login</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".margin-bottom-small{margin-bottom:2px}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column;padding:2rem}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}.max-w-300{width:300px}.login-card-title{color:#fff;font-size:24px}.pt-8{font-size:10.66px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormModule }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "component", type: i2$1.FormFeedbackComponent, selector: "c-form-feedback", inputs: ["tooltip", "valid"] }, { kind: "component", type: i2$1.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i2$1.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "directive", type: BackgroundImageDirective, selector: "[wsBackgroundImage]", inputs: ["random", "backgroundImage"] }, { kind: "ngmodule", type: SpinnerModule }, { kind: "component", type: i2$1.SpinnerComponent, selector: "c-spinner", inputs: ["color", "label", "size", "variant", "role"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }] });
4102
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: ForgetPasswordLibComponent, isStandalone: true, selector: "prg-ws-forget-password", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div\n class=\"container login-wrapper\"\n wsBackgroundImage\n [random]=\"config()?.backgroundDirective?.random\"\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\n <div class=\"row align-items-center justify-content-center vh-100\">\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 m-auto\">\n <div class=\"glass-card\">\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\n <img src=\"./assets/img/brand/pongrass_logo.png\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\n <p class=\"fs-19 login-card-title mb-4\">Maintenance Portal</p>\n </div>\n <div class=\"mt-2\">\n <div class=\"h5 mb-3\">Forget Password</div>\n @if (emailSentSuccessfully()) {\n <div class=\"alert alert-success\" role=\"alert\">\n <strong>Success!</strong> An email has been sent to your registered email address with instructions to reset your password.\n </div>\n <button cButton color=\"primary\" (click)=\"backToLogin()\">Back to Login</button>\n } @else {\n <form cForm [formGroup]=\"forgetPasswordForm\" class=\"needs-validation\" [validated]=\"isFormSubmitted\" noValidate (ngSubmit)=\"submitResetPassword()\">\n <div class=\"mb-4\">\n <c-input-group class=\"mb-3\">\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\n <path\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\n </svg>\n </span>\n\n <input\n cFormControl\n id=\"txt-auth-username\"\n type=\"text\"\n sizing=\"lg\"\n formControlName=\"username\"\n required\n autocomplete=\"username\"\n class=\"transparent-input text-white\"\n [placeholder]=\"config()?.usernamePlaceholder\" />\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\n </c-input-group>\n </div>\n\n <div class=\"submit-form mt-4\">\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\" [disabled]=\"isLoading()\">\n @if (isLoading()) {\n <c-spinner aria-hidden=\"true\" size=\"sm\" class=\"margin-bottom-small\" />\n }\n {{ config()?.submitButtonText || 'Reset' }}\n </button>\n </div>\n </form>\n\n <div class=\"mt-4 text-center\">\n <button cButton color=\"dark\" variant=\"ghost\" size=\"lg\" id=\"back-to-login\" class=\"w-100 text-white\" (click)=\"backToLogin()\">Back to Login</button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".margin-bottom-small{margin-bottom:2px}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column;padding:2rem}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}.max-w-300{width:300px}.login-card-title{color:#fff;font-size:24px}.pt-8{font-size:10.66px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormModule }, { kind: "directive", type: i2$1.FormDirective, selector: "form[cForm]", inputs: ["validated"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "component", type: i2$1.FormFeedbackComponent, selector: "c-form-feedback", inputs: ["tooltip", "valid"] }, { kind: "component", type: i2$1.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i2$1.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "directive", type: BackgroundImageDirective, selector: "[wsBackgroundImage]", inputs: ["random", "backgroundImage"] }, { kind: "ngmodule", type: SpinnerModule }, { kind: "component", type: i2$1.SpinnerComponent, selector: "c-spinner", inputs: ["color", "label", "size", "variant", "role"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "tabindex", "type", "variant"], exportAs: ["cButton"] }] });
4129
4103
  }
4130
4104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ForgetPasswordLibComponent, decorators: [{
4131
4105
  type: Component,
4132
- args: [{ selector: 'prg-ws-forget-password', imports: [ReactiveFormsModule, FormModule, BackgroundImageDirective, SpinnerModule, ButtonModule], template: "<div\r\n class=\"container login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 m-auto\">\r\n <div class=\"glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img src=\"./assets/img/brand/pongrass_logo.png\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">Maintenance Portal</p>\r\n </div>\r\n <div class=\"mt-2\">\r\n <div class=\"h5 mb-3\">Forget Password</div>\r\n @if (emailSentSuccessfully()) {\r\n <div class=\"alert alert-success\" role=\"alert\">\r\n <strong>Success!</strong> An email has been sent to your registered email address with instructions to reset your password.\r\n </div>\r\n <button cButton color=\"primary\" (click)=\"backToLogin()\">Back to Login</button>\r\n } @else {\r\n <form cForm [formGroup]=\"forgetPasswordForm\" class=\"needs-validation\" [validated]=\"isFormSubmitted\" noValidate (ngSubmit)=\"submitResetPassword()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"username\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\" [disabled]=\"isLoading()\">\r\n @if (isLoading()) {\r\n <c-spinner aria-hidden=\"true\" size=\"sm\" class=\"margin-bottom-small\" />\r\n }\r\n {{ config()?.submitButtonText || 'Reset' }}\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <div class=\"mt-4 text-center\">\r\n <button cButton color=\"dark\" variant=\"ghost\" size=\"lg\" id=\"back-to-login\" class=\"w-100 text-white\" (click)=\"backToLogin()\">Back to Login</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".margin-bottom-small{margin-bottom:2px}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column;padding:2rem}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}.max-w-300{width:300px}.login-card-title{color:#fff;font-size:24px}.pt-8{font-size:10.66px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"] }]
4106
+ args: [{ selector: 'prg-ws-forget-password', imports: [ReactiveFormsModule, FormModule, BackgroundImageDirective, SpinnerModule, ButtonModule], template: "<div\n class=\"container login-wrapper\"\n wsBackgroundImage\n [random]=\"config()?.backgroundDirective?.random\"\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\n <div class=\"row align-items-center justify-content-center vh-100\">\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 m-auto\">\n <div class=\"glass-card\">\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\n <img src=\"./assets/img/brand/pongrass_logo.png\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\n <p class=\"fs-19 login-card-title mb-4\">Maintenance Portal</p>\n </div>\n <div class=\"mt-2\">\n <div class=\"h5 mb-3\">Forget Password</div>\n @if (emailSentSuccessfully()) {\n <div class=\"alert alert-success\" role=\"alert\">\n <strong>Success!</strong> An email has been sent to your registered email address with instructions to reset your password.\n </div>\n <button cButton color=\"primary\" (click)=\"backToLogin()\">Back to Login</button>\n } @else {\n <form cForm [formGroup]=\"forgetPasswordForm\" class=\"needs-validation\" [validated]=\"isFormSubmitted\" noValidate (ngSubmit)=\"submitResetPassword()\">\n <div class=\"mb-4\">\n <c-input-group class=\"mb-3\">\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\n <path\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\n </svg>\n </span>\n\n <input\n cFormControl\n id=\"txt-auth-username\"\n type=\"text\"\n sizing=\"lg\"\n formControlName=\"username\"\n required\n autocomplete=\"username\"\n class=\"transparent-input text-white\"\n [placeholder]=\"config()?.usernamePlaceholder\" />\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\n </c-input-group>\n </div>\n\n <div class=\"submit-form mt-4\">\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\" [disabled]=\"isLoading()\">\n @if (isLoading()) {\n <c-spinner aria-hidden=\"true\" size=\"sm\" class=\"margin-bottom-small\" />\n }\n {{ config()?.submitButtonText || 'Reset' }}\n </button>\n </div>\n </form>\n\n <div class=\"mt-4 text-center\">\n <button cButton color=\"dark\" variant=\"ghost\" size=\"lg\" id=\"back-to-login\" class=\"w-100 text-white\" (click)=\"backToLogin()\">Back to Login</button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".margin-bottom-small{margin-bottom:2px}.glass-card{color:#fff;background:#32241980;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-radius:var(--cui-border-radius-lg);position:relative;overflow:hidden;max-width:400px;display:flex;align-items:center;flex-direction:column;padding:2rem}.glass-card:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent)}.glass-card:after{content:\"\";position:absolute;top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,rgba(255,255,255,.8),transparent,rgba(255,255,255,.3))}.transparent-input{background-color:transparent;border:1px solid #8a9db2;outline:none}.transparent-input:focus{background-color:transparent}.transparent-input::placeholder{color:#8a9db2;font-size:16px}.max-w-300{width:300px}.login-card-title{color:#fff;font-size:24px}.pt-8{font-size:10.66px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,input:-internal-autofill-selected{-webkit-box-shadow:0 0 0 1000px transparent inset!important;box-shadow:0 0 0 1000px transparent inset!important;background-color:transparent!important;background-image:none!important;-webkit-text-fill-color:#fff!important;transition:background-color 5000s ease-in-out 0s!important}\n"] }]
4133
4107
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], action: [{ type: i0.Output, args: ["action"] }] } });
4134
4108
 
4135
4109
  /*