ngx-render-material-forms 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, Input, ViewChild, ViewContainerRef, ViewChildren, EventEmitter, Output, forwardRef, Directive, Inject, Optional, NgModule } from '@angular/core';
3
- import * as i1$2 from '@angular/common/http';
3
+ import * as i1$1 from '@angular/common/http';
4
4
  import { HttpHeaders, HttpClientModule } from '@angular/common/http';
5
5
  import * as i1 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import * as i2 from '@angular/forms';
8
- import { FormControl, NG_VALUE_ACCESSOR, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
8
+ import { FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
9
  import * as i4$2 from '@angular/material/input';
10
10
  import { MAT_INPUT_VALUE_ACCESSOR, MatInputModule } from '@angular/material/input';
11
11
  import * as i3$2 from '@angular/material/button';
@@ -27,20 +27,18 @@ import * as i4 from '@angular/material/card';
27
27
  import { MatCardModule } from '@angular/material/card';
28
28
  import * as i2$2 from '@angular/material/tabs';
29
29
  import { MatTabsModule } from '@angular/material/tabs';
30
- import * as i10 from '@angular/material/table';
30
+ import * as i4$7 from '@angular/material/table';
31
31
  import { MatTableDataSource, MatTableModule } from '@angular/material/table';
32
32
  import * as i5$2 from '@angular/material/datepicker';
33
33
  import { MatDatepickerModule } from '@angular/material/datepicker';
34
- import * as i11 from '@angular/material/progress-spinner';
34
+ import * as i3$4 from '@angular/material/progress-spinner';
35
35
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
36
36
  import * as i4$1 from '@angular/material/icon';
37
37
  import { MatIconModule } from '@angular/material/icon';
38
38
  import * as i5$1 from '@angular/material/core';
39
39
  import { MatNativeDateModule } from '@angular/material/core';
40
- import * as i1$1 from '@angular/material/dialog';
40
+ import * as i1$2 from '@angular/material/dialog';
41
41
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
42
- import * as i14 from '@angular/material/autocomplete';
43
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
44
42
  import Webform from 'formiojs/Webform.js';
45
43
  import FormioComponent$2 from 'formiojs/components/_classes/component/Component.js';
46
44
  import TextFieldComponent from 'formiojs/components/textfield/TextField.js';
@@ -83,24 +81,23 @@ import RadioComponent from 'formiojs/components/radio/Radio.js';
83
81
  import SelectBoxesComponent from 'formiojs/components/selectboxes/SelectBoxes.js';
84
82
  import SelectComponent from 'formiojs/components/select/Select.js';
85
83
  import { Subject } from 'rxjs';
86
- import { debounceTime, distinctUntilChanged, takeUntil, startWith, map } from 'rxjs/operators';
84
+ import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
87
85
  import * as CryptoJS from 'crypto-js';
88
86
  import { isNullOrUndefined } from 'util';
89
87
  import * as i9 from 'ngx-mat-select-search';
90
88
  import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
91
89
  import WellComponent from 'formiojs/components/well/Well.js';
92
90
  import DataGridComponent from 'formiojs/components/datagrid/DataGrid.js';
93
- import * as i9$1 from '@angular/cdk/drag-drop';
91
+ import * as i8 from '@angular/cdk/drag-drop';
94
92
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
95
- import { SelectionModel } from '@angular/cdk/collections';
96
- import * as i13 from '@angular/material/stepper';
97
- import { MatStepperModule } from '@angular/material/stepper';
98
93
  import EditGridComponent from 'formiojs/components/editgrid/EditGrid.js';
99
94
  import Components$2 from 'formiojs/components/Components';
100
95
  import isString from 'lodash/isString';
101
96
  import TableComponent from 'formiojs/components/table/Table.js';
102
97
  import Wizard from 'formiojs/Wizard';
103
98
  import Displays from 'formiojs/displays/Displays';
99
+ import * as i3$3 from '@angular/material/stepper';
100
+ import { MatStepperModule } from '@angular/material/stepper';
104
101
  import * as i1$3 from '@formio/angular';
105
102
  import { FormioBaseComponent } from '@formio/angular';
106
103
  import { FlexLayoutModule } from '@angular/flex-layout';
@@ -979,11 +976,8 @@ var AngularButtonsThemes;
979
976
  })(AngularButtonsThemes || (AngularButtonsThemes = {}));
980
977
 
981
978
  class MaterialButtonComponent extends MaterialComponent {
982
- constructor(element, ref, dialog) {
983
- super(element, ref);
984
- this.element = element;
985
- this.ref = ref;
986
- this.dialog = dialog;
979
+ constructor() {
980
+ super(...arguments);
987
981
  this.loading = false;
988
982
  this.done = false;
989
983
  this.error = false;
@@ -1054,12 +1048,12 @@ class MaterialButtonComponent extends MaterialComponent {
1054
1048
  return retVal;
1055
1049
  }
1056
1050
  }
1057
- MaterialButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
1058
- MaterialButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialButtonComponent, selector: "mat-formio-button", usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"instance && instance.component.label != 'Click to add Products'\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n\r\n\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
1051
+ MaterialButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1052
+ MaterialButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialButtonComponent, selector: "mat-formio-button", usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"instance\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
1059
1053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, decorators: [{
1060
1054
  type: Component,
1061
- args: [{ selector: 'mat-formio-button', template: "<button *ngIf=\"instance && instance.component.label != 'Click to add Products'\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n\r\n\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"] }]
1062
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.MatDialog }]; } });
1055
+ args: [{ selector: 'mat-formio-button', template: "<button *ngIf=\"instance\"\r\n [ngClass]=\"buttonClass\"\r\n type=\"{{ instance.component.action }}\"\r\n mat-raised-button [color]=\"color\"\r\n [disabled]=\"disabled\"\r\n (click)=\"instance.onClick($event)\"\r\n>\r\n <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n <mat-icon *ngIf=\"done\">done</mat-icon>\r\n <mat-icon *ngIf=\"error\">close</mat-icon>\r\n <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n {{ instance.component.label }}\r\n <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n", styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host .mat-icon-spin{-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mat-formio-theme-success{background-color:#63d644!important}.mat-formio-theme-info{background-color:#49d9f4!important}.mat-formio-button-sm{font-size:14px;padding:8px 12px}.mat-formio-button-xs{font-size:14px;padding:4px 6px}.mat-formio-button-md{font-size:15px;padding:8px 12px}.mat-formio-button-lg{font-size:19px;padding:16px 20px}.mat-formio-button-block{display:block;width:100%}\n"] }]
1056
+ }] });
1063
1057
  ButtonComponent.MaterialComponent = MaterialButtonComponent;
1064
1058
 
1065
1059
  class MaterialTextareaComponent extends MaterialComponent {
@@ -2600,7 +2594,8 @@ class MaterialSelectComponent extends MaterialComponent {
2600
2594
  });
2601
2595
  }
2602
2596
  registerPanelScrollEvent(selectElem) {
2603
- const panelElement = selectElem.panel.nativeElement;
2597
+ var _a;
2598
+ const panelElement = (_a = selectElem === null || selectElem === void 0 ? void 0 : selectElem.panel) === null || _a === void 0 ? void 0 : _a.nativeElement;
2604
2599
  panelElement.addEventListener('scroll', this.onScroll.bind(this));
2605
2600
  }
2606
2601
  onScroll(event) {
@@ -2698,7 +2693,8 @@ class MaterialSelectComponent extends MaterialComponent {
2698
2693
  this.searching = false;
2699
2694
  this.productsloadingFlag = true;
2700
2695
  setTimeout(() => {
2701
- const ele = this.selectElem.panel.nativeElement;
2696
+ var _a, _b;
2697
+ const ele = (_b = (_a = this.selectElem) === null || _a === void 0 ? void 0 : _a.panel) === null || _b === void 0 ? void 0 : _b.nativeElement;
2702
2698
  const trackHeight = ele.scrollHeight - ele.offsetHeight;
2703
2699
  const middlePosition = trackHeight / 2 - 50;
2704
2700
  ele.scrollTo({ top: middlePosition, behavior: 'auto' });
@@ -2756,8 +2752,9 @@ class MaterialSelectComponent extends MaterialComponent {
2756
2752
  ngAfterViewInit() {
2757
2753
  if (this.instance.component.key.toLowerCase() === 'vendorproductid') {
2758
2754
  this.selectElem.openedChange.subscribe((isOpen) => {
2755
+ var _a;
2759
2756
  if (isOpen) {
2760
- this.pageNumber = 2;
2757
+ this.pageNumber = 1;
2761
2758
  this.pageSize = 20;
2762
2759
  this.searchQuery = '';
2763
2760
  this.searching = false;
@@ -2768,8 +2765,11 @@ class MaterialSelectComponent extends MaterialComponent {
2768
2765
  this.removePanelScrollEvent();
2769
2766
  this.searching = false;
2770
2767
  let selectedValue = this.getValue();
2771
- if (selectedValue.toString().length == 0 && this.searchQuery == '') {
2768
+ if ((selectedValue.toString().length == 0 && this.searchQuery == '') || ((_a = this.productList) === null || _a === void 0 ? void 0 : _a.length) === 0) {
2772
2769
  this.productList = [];
2770
+ this.pageNumber = 1;
2771
+ this.pageSize = 20;
2772
+ this.searchQuery = '';
2773
2773
  this.loadData(this.pageNumber, this.pageSize, this.searchQuery);
2774
2774
  }
2775
2775
  }
@@ -2796,6 +2796,7 @@ class MaterialSelectComponent extends MaterialComponent {
2796
2796
  this.pageSize = 20;
2797
2797
  this.productList = [];
2798
2798
  this.searching = true;
2799
+ this.searchQuery = searchQuery;
2799
2800
  this.loadData(this.pageNumber, this.pageSize, searchQuery);
2800
2801
  }
2801
2802
  });
@@ -2816,11 +2817,37 @@ class MaterialSelectComponent extends MaterialComponent {
2816
2817
  });
2817
2818
  this.filteredOptions = this.selectOptions;
2818
2819
  }
2820
+ isError() {
2821
+ if (this.instance.error) {
2822
+ this.control.setErrors(this.instance.component.validate);
2823
+ return true;
2824
+ }
2825
+ else {
2826
+ return false;
2827
+ }
2828
+ }
2829
+ getErrorMessage() {
2830
+ if (this.instance.error && this.instance.error.messages) {
2831
+ const { messages } = this.instance.error;
2832
+ if (messages.length) {
2833
+ for (const msg of messages) {
2834
+ if (msg.context) {
2835
+ if (this.instance && this.instance.parent && this.instance.parent._data) {
2836
+ if (this.instance.parent._data.submit) {
2837
+ this.control.markAllAsTouched();
2838
+ }
2839
+ }
2840
+ return this.instance.error ? this.instance.error.message : '';
2841
+ }
2842
+ }
2843
+ }
2844
+ }
2845
+ }
2819
2846
  compareObjects(o1, o2) {
2820
2847
  return _.isEqual(o1, o2);
2821
2848
  }
2822
2849
  }
2823
- MaterialSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialSelectComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
2850
+ MaterialSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialSelectComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
2824
2851
  MaterialSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialSelectComponent, selector: "mat-formio-select", viewQueries: [{ propertyName: "multiSelect", first: true, predicate: ["multiSelect"], descendants: true, static: true }, { propertyName: "selectElem", first: true, predicate: ["productSelect"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
2825
2852
  <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
2826
2853
  <ng-template #componentTemplate let-hasLabel>
@@ -2858,7 +2885,7 @@ MaterialSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
2858
2885
  <span *ngIf="instance.component.suffix" matSuffix>
2859
2886
  {{ instance.component.suffix }}
2860
2887
  </span>
2861
- <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
2888
+ <mat-error *ngIf="isError()" >{{ getErrorMessage() }}</mat-error>
2862
2889
  </mat-form-field>
2863
2890
  </ng-template>
2864
2891
  `, isInline: true, styles: [".example-viewport{height:200px}.product-picker{overflow-x:hidden}.virtual-full-view{height:auto!important;white-space:normal!important;line-height:1.4!important;text-overflow:initial!important;min-height:48px!important;overflow:visible!important;overflow:initial!important;padding-top:10px!important;padding-bottom:10px!important}::ng-deep .product-picker .cdk-virtual-scroll-content-wrapper{width:100%!important}.virtual-full-view .mat-pseudo-checkbox{align-self:top!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i4$3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i9.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toogleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "directive", type: i9.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
@@ -2901,11 +2928,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
2901
2928
  <span *ngIf="instance.component.suffix" matSuffix>
2902
2929
  {{ instance.component.suffix }}
2903
2930
  </span>
2904
- <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
2931
+ <mat-error *ngIf="isError()" >{{ getErrorMessage() }}</mat-error>
2905
2932
  </mat-form-field>
2906
2933
  </ng-template>
2907
2934
  `, styles: [".example-viewport{height:200px}.product-picker{overflow-x:hidden}.virtual-full-view{height:auto!important;white-space:normal!important;line-height:1.4!important;text-overflow:initial!important;min-height:48px!important;overflow:visible!important;overflow:initial!important;padding-top:10px!important;padding-bottom:10px!important}::ng-deep .product-picker .cdk-virtual-scroll-content-wrapper{width:100%!important}.virtual-full-view .mat-pseudo-checkbox{align-self:top!important}\n"] }]
2908
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$2.HttpClient }]; }, propDecorators: { multiSelect: [{
2935
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.HttpClient }]; }, propDecorators: { multiSelect: [{
2909
2936
  type: ViewChild,
2910
2937
  args: ['multiSelect', { static: true }]
2911
2938
  }], selectElem: [{
@@ -2964,477 +2991,32 @@ class ConfirmationDialogComponent {
2964
2991
  ngOnInit() {
2965
2992
  }
2966
2993
  }
2967
- ConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
2968
- ConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ConfirmationDialogComponent, selector: "NgxMat-confirmation-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\r\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\r\n<mat-dialog-content class=\"data-grid-popup-body\">\r\n {{data.message}}\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"data-grid-popup-footer\">\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\r\n <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\r\n</mat-dialog-actions>\r\n</div>", styles: ["::ng-deep .data-grid-closed-btn .mat-button-focus-overlay{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
2994
+ ConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
2995
+ ConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ConfirmationDialogComponent, selector: "NgxMat-confirmation-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\r\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\r\n<mat-dialog-content class=\"data-grid-popup-body\">\r\n {{data.message}}\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"data-grid-popup-footer\">\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\r\n <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\r\n</mat-dialog-actions>\r\n</div>", styles: ["::ng-deep .data-grid-closed-btn .mat-button-focus-overlay{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
2969
2996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
2970
2997
  type: Component,
2971
2998
  args: [{ selector: 'NgxMat-confirmation-dialog', template: "<div class=\"dialog-container\">\r\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\r\n<mat-dialog-content class=\"data-grid-popup-body\">\r\n {{data.message}}\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"data-grid-popup-footer\">\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\r\n <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\r\n</mat-dialog-actions>\r\n</div>", styles: ["::ng-deep .data-grid-closed-btn .mat-button-focus-overlay{background-color:transparent}\n"] }]
2972
2999
  }], ctorParameters: function () {
2973
- return [{ type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
3000
+ return [{ type: i1$2.MatDialogRef }, { type: undefined, decorators: [{
2974
3001
  type: Inject,
2975
3002
  args: [MAT_DIALOG_DATA]
2976
3003
  }] }];
2977
3004
  } });
2978
3005
 
2979
- class CommonService {
2980
- constructor(http) {
2981
- this.http = http;
2982
- this.holy = '';
2983
- this.grail = '';
2984
- this.holy = CryptoJS.enc.Base64.parse('8F/2+T2NXqUBQERR12R4sw==');
2985
- this.grail = CryptoJS.enc.Base64.parse('yE0CgQbYzK5wqeoKTVzhOQ==');
2986
- this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
2987
- this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
2988
- }
2989
- scrumble(msg) {
2990
- if (!isNullOrUndefined(msg)) {
2991
- var conceal = this.getcampaign(msg, this.holy, this.grail);
2992
- var sha256 = CryptoJS.HmacSHA256(CryptoJS.enc.Base64.stringify(this.grail) + conceal.toString(), CryptoJS.enc.Base64.stringify(this.holy));
2993
- var hashInBase64 = CryptoJS.enc.Base64.stringify(sha256);
2994
- let keyValue = {
2995
- "value": conceal.toString(),
2996
- "mac": hashInBase64
2997
- };
2998
- var result = JSON.stringify(keyValue);
2999
- var jumbled = CryptoJS.enc.Utf8.parse(result);
3000
- return CryptoJS.enc.Base64.stringify(jumbled);
3001
- }
3002
- }
3003
- getcampaign(data, holy, grail) {
3004
- return CryptoJS.AES.encrypt(data.toString(), holy, {
3005
- blockSize: 128,
3006
- iv: grail,
3007
- mode: CryptoJS.mode.CBC,
3008
- padding: CryptoJS.pad.Pkcs7
3009
- });
3010
- }
3011
- getBaseApiUrl() {
3012
- const baseUrlMapping = {
3013
- 'localhost': 'http://localhost:58504',
3014
- 'lincoln.vartopia.com': 'https://lincoln-api.vartopia.com',
3015
- 'stage.vartopia.com': 'https://stage-api.vartopia.com',
3016
- 'my.vartopia.com': 'https://reagan-api.vartopia.com',
3017
- 'jackson.vartopia.com': 'https://jackson-api.vartopia.com'
3018
- };
3019
- // Get the current hostname
3020
- const hostname = window.location.hostname;
3021
- return baseUrlMapping[hostname] || null;
3022
- }
3023
- listProductCategory() {
3024
- const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3025
- const baseApiUrl = this.getBaseApiUrl();
3026
- return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsCategory?vendorId=${vendorId}`);
3027
- }
3028
- listSubCategory(category) {
3029
- const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3030
- const baseApiUrl = this.getBaseApiUrl();
3031
- return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsSubCategory?vendorId=${vendorId}&categoryName=${category}`);
3032
- }
3033
- // Function to get value by key from the array
3034
- getValueByKey(data, key) {
3035
- if (!data || data.length === 0) {
3036
- return null; // Return null if data is empty or undefined
3037
- }
3038
- const item = data.find(kv => kv.key.toLowerCase() === key.toLowerCase());
3039
- return item ? item.value : null;
3040
- }
3041
- // this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetVendorProducts?vendorId=${envendorId}&pageNumber=${enpageNumber}&pageSize=${enpageSize}&search=${ensearchQuery}&onlyActive=${enactive}&includeDescription=${endescription}`, { headers }).subscribe(response => {
3042
- loadProducts(pageNumber, pazeSize, search = '', onlyActive = true, description = false, category, subCategory) {
3043
- const baseApiUrl = this.getBaseApiUrl();
3044
- const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3045
- const encodeCat = encodeURIComponent(category);
3046
- const encodeSubCat = encodeURIComponent(subCategory);
3047
- return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetVendorProducts?vendorId=${vendorId}&pageNumber=${pageNumber}&pageSize=${pazeSize}&search=${search}&onlyActive=${onlyActive}&includeDescription=${description}&category=${encodeCat}&subCategory=${encodeSubCat}`);
3048
- }
3049
- }
3050
- CommonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommonService, deps: [{ token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
3051
- CommonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommonService, providedIn: 'root' });
3052
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommonService, decorators: [{
3053
- type: Injectable,
3054
- args: [{
3055
- providedIn: 'root'
3056
- }]
3057
- }], ctorParameters: function () { return [{ type: i1$2.HttpClient }]; } });
3058
-
3059
- class AddOnProductsComponent {
3060
- constructor(matDialogRef, data, fb, dialog, commonSevice) {
3061
- this.matDialogRef = matDialogRef;
3062
- this.fb = fb;
3063
- this.dialog = dialog;
3064
- this.commonSevice = commonSevice;
3065
- this.category = [];
3066
- this.subCategory = [];
3067
- this.filteredCategories = [];
3068
- this.filteredSubCategories = [];
3069
- this.addProductsColumns = ['select', 'productName', 'price'];
3070
- this.showAllproductsColumns = ['delete', 'productName', 'categoryName', 'subCategory', 'Quantity', 'price'];
3071
- this.quantityList = [5, 10, 15, 20, 25];
3072
- this.ELEMENT_DATA = [];
3073
- this.dataSource = new MatTableDataSource();
3074
- this.selection = new SelectionModel(true, []);
3075
- this.selectedDataSource = new MatTableDataSource([]);
3076
- this.selectedCategory = null;
3077
- this.selectedSubCategory = null;
3078
- this.showCategory = false;
3079
- this.showSubcategory = false;
3080
- this.showPrice = true;
3081
- this.showQuantity = true;
3082
- this.showNewProductPicker = true;
3083
- this.setCategory = '';
3084
- this.setSubCategory = '';
3085
- this.loadingFlag = false;
3086
- this.pageNumber = 1;
3087
- this.pageSize = 20;
3088
- this.totalPages = 0;
3089
- this.searchQuery = '';
3090
- this.itemList = [];
3091
- this.prevScrollPosition = 0; // Track the previous scroll position
3092
- this.spinnerFlag = false;
3093
- this.showCategory = data.attributesFlag.showCategory;
3094
- this.showSubcategory = data.attributesFlag.showSubcategory;
3095
- this.showPrice = data.attributesFlag.showPrice;
3096
- this.showQuantity = data.attributesFlag.showQuantity;
3097
- this.showNewProductPicker = data.showNewProductPicker;
3098
- this.setCategory = data.category || '';
3099
- this.setSubCategory = data.subCategory || '';
3100
- this.selection = new SelectionModel(true, data.selectedProducts || []);
3101
- this.form = this.fb.group({
3102
- productCategory: [''],
3103
- productSubcategory: [''],
3104
- selectedProducts: this.fb.array([])
3105
- });
3106
- this.initializeFormArray();
3107
- if (!this.showCategory) {
3108
- this.removeColumn('categoryName');
3109
- }
3110
- if (!this.showPrice) {
3111
- this.removeColumn('price');
3112
- }
3113
- if (!this.showSubcategory) {
3114
- this.removeColumn('subCategory');
3115
- }
3116
- if (!this.showQuantity) {
3117
- this.removeColumn('Quantity');
3118
- }
3119
- }
3120
- removeColumn(columnName) {
3121
- this.showAllproductsColumns = this.showAllproductsColumns.filter(column => column !== columnName);
3122
- this.addProductsColumns = this.addProductsColumns.filter(column => column !== columnName);
3123
- }
3124
- initializeFormArray() {
3125
- const selectedProductsArray = this.form.get('selectedProducts');
3126
- this.selection.selected.forEach(product => {
3127
- selectedProductsArray.push(this.fb.group({
3128
- price: [product.price || '', Validators.required],
3129
- text: [product.text || ''],
3130
- quantity: [product.quantity || '', Validators.required],
3131
- category: [(product === null || product === void 0 ? void 0 : product.category) || ''],
3132
- subCategory: [(product === null || product === void 0 ? void 0 : product.subCategory) || ''],
3133
- value: [(product === null || product === void 0 ? void 0 : product.value) || '']
3134
- }));
3135
- });
3136
- this.selectedDataSource.data = [...this.selection.selected];
3137
- }
3138
- initializeDataSources() {
3139
- var _a, _b, _c, _d;
3140
- // Ensure selected items are marked in the main data source
3141
- if ((_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.length) {
3142
- (_d = (_c = this.selection) === null || _c === void 0 ? void 0 : _c.selected) === null || _d === void 0 ? void 0 : _d.forEach(selectedProduct => {
3143
- const index = this.dataSource.data.findIndex(product => product.value === selectedProduct.value);
3144
- if (index >= 0) {
3145
- this.dataSource.data[index] = selectedProduct;
3146
- }
3147
- });
3148
- this.selectedDataSource.data = [...this.selection.selected];
3149
- }
3150
- else {
3151
- console.warn('No selected products found.');
3152
- }
3153
- }
3154
- ngAfterViewInit() {
3155
- }
3156
- ngOnInit() {
3157
- this.loadProductCategory();
3158
- this.form.get('productCategory').valueChanges
3159
- .pipe(startWith(''), map(value => this.filterProducts(value, 'category1'))).subscribe(filterCat => {
3160
- this.filteredCategories = filterCat;
3161
- });
3162
- this.form.get('productSubcategory').valueChanges
3163
- .pipe(startWith(''), map(value => this.filterProducts(value, 'subCategory'))).subscribe(subCat => {
3164
- this.filteredSubCategories = subCat;
3165
- });
3166
- }
3167
- loadProductCategory() {
3168
- this.spinnerFlag = true;
3169
- this.commonSevice.listProductCategory().subscribe(response => {
3170
- this.spinnerFlag = false;
3171
- if (response && response.code === 200) {
3172
- this.category = response.data;
3173
- this.filteredCategories = this.filterProducts(this.setCategory, 'category1');
3174
- this.form.get('productCategory').setValue(this.setCategory);
3175
- if (this.setCategory !== '') {
3176
- this.onOptionSelected(this.setCategory, 'category1');
3177
- this.form.get('productSubcategory').setValue(this.setSubCategory);
3178
- }
3179
- }
3180
- });
3181
- }
3182
- filterProducts(value, cat) {
3183
- const filterValue = value.toLowerCase();
3184
- const data = cat === 'category1' ? this.category : this.subCategory;
3185
- if (!filterValue) {
3186
- return data;
3187
- }
3188
- else {
3189
- return data.filter(option => option.toLowerCase().includes(filterValue));
3190
- }
3191
- }
3192
- onSubmit() {
3193
- if (this.form.valid) {
3194
- this.matDialogRef.close({
3195
- data: {
3196
- status: true,
3197
- items: this.form.value
3198
- }
3199
- });
3200
- }
3201
- }
3202
- isAllSelected() {
3203
- const numSelected = this.selection.selected.length;
3204
- const numRows = this.dataSource.data.length;
3205
- return numSelected === numRows;
3206
- }
3207
- isIndeterminate() {
3208
- const numSelected = this.selection.selected.length;
3209
- const numRows = this.dataSource.data.length;
3210
- return numSelected > 0 && numSelected < numRows;
3211
- }
3212
- masterToggle() {
3213
- this.isAllSelected()
3214
- ? this.selection.clear()
3215
- : this.dataSource.data.forEach(row => this.selection.select(row));
3216
- this.updateSelectedProducts();
3217
- }
3218
- toggleSelection(row) {
3219
- this.selection.toggle(row);
3220
- this.updateSelectedProducts();
3221
- }
3222
- // Getter for the FormArray
3223
- get selectedProducts() {
3224
- return this.form.get('selectedProducts');
3225
- }
3226
- updateSelectedProducts() {
3227
- var _a, _b;
3228
- if (Array.isArray(this.selection.selected)) {
3229
- this.selectedDataSource.data = [...this.selection.selected];
3230
- const selectedProductsArray = this.selectedProducts;
3231
- selectedProductsArray.clear();
3232
- (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.forEach(product => {
3233
- var _a, _b;
3234
- selectedProductsArray === null || selectedProductsArray === void 0 ? void 0 : selectedProductsArray.push(this.fb.group({
3235
- price: [(_a = product === null || product === void 0 ? void 0 : product.price) !== null && _a !== void 0 ? _a : '', this.showPrice ? Validators.required : []],
3236
- text: [(product === null || product === void 0 ? void 0 : product.text) || ''],
3237
- quantity: [(_b = product === null || product === void 0 ? void 0 : product.quantity) !== null && _b !== void 0 ? _b : '', this.showQuantity ? Validators.required : []],
3238
- category: [(product === null || product === void 0 ? void 0 : product.category) || ''],
3239
- subCategory: [(product === null || product === void 0 ? void 0 : product.subCategory) || ''],
3240
- value: [(product === null || product === void 0 ? void 0 : product.value) || '']
3241
- }));
3242
- });
3243
- }
3244
- else {
3245
- console.error('Selection.selected is not an array:', this.selection.selected);
3246
- }
3247
- }
3248
- getTotalRows() {
3249
- return this.dataSource.data.length;
3250
- }
3251
- getSelectedRowsCount() {
3252
- return this.selection.selected.length;
3253
- }
3254
- onOptionSelected(event, category) {
3255
- let selectedValue;
3256
- if (event && event.option && event.option.value !== undefined) {
3257
- selectedValue = event.option.value;
3258
- }
3259
- else {
3260
- selectedValue = event;
3261
- }
3262
- if (category === 'category1') {
3263
- this.selectedCategory = selectedValue;
3264
- this.spinnerFlag = true;
3265
- this.commonSevice.listSubCategory(selectedValue).subscribe(response => {
3266
- this.spinnerFlag = false;
3267
- if (response && response.code === 200) {
3268
- this.subCategory = response.data;
3269
- this.filteredSubCategories = this.filterProducts(this.setCategory, 'subCategory');
3270
- if (this.setSubCategory !== '') {
3271
- this.selectedSubCategory = this.setSubCategory;
3272
- this.getProducts();
3273
- }
3274
- }
3275
- });
3276
- }
3277
- else {
3278
- if (category === 'subCategory') {
3279
- this.selectedSubCategory = event.option.value;
3280
- this.getProducts();
3281
- }
3282
- }
3283
- }
3284
- getProducts() {
3285
- this.spinnerFlag = true;
3286
- this.commonSevice.loadProducts(this.pageNumber, this.pageSize, '', true, false, this.selectedCategory, this.selectedSubCategory).subscribe(response => {
3287
- var _a;
3288
- this.spinnerFlag = false;
3289
- if (response && response.code === 200) {
3290
- //this.dataSource.data = response.data.dataSource;
3291
- this.totalPages = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.totalPages;
3292
- const data = response.data.dataSource;
3293
- if (this.dataSource.data.length > 0) {
3294
- data.forEach(item => this.dataSource.data.push(item));
3295
- this.dataSource.data = [...this.dataSource.data];
3296
- }
3297
- else {
3298
- this.dataSource.data = data;
3299
- }
3300
- this.loadingFlag = true;
3301
- setTimeout(() => {
3302
- const middlePosition = this.trackHeight / 2 - 50;
3303
- if (this.firstscrollableDiv && this.firstscrollableDiv.nativeElement) {
3304
- this.firstscrollableDiv.nativeElement.scrollTo({ top: middlePosition, behavior: 'auto' });
3305
- }
3306
- }, 250);
3307
- this.initializeDataSources();
3308
- }
3309
- });
3310
- }
3311
- removeRow(event, element) {
3312
- event.stopPropagation();
3313
- event.preventDefault();
3314
- let message = 'Are you sure you want to delete this product?';
3315
- let showButton = true;
3316
- const index = this.selectedDataSource.data.indexOf(element);
3317
- if (index >= 0) {
3318
- if (this.selectedDataSource.data.length === 1) {
3319
- message = 'Please select at least one product.';
3320
- showButton = false;
3321
- }
3322
- const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
3323
- disableClose: true,
3324
- width: '90%',
3325
- maxWidth: '400px',
3326
- data: { message: message, buttonStatus: showButton }
3327
- });
3328
- dialogRef.afterClosed().subscribe(result => {
3329
- if (result) {
3330
- this.selectedDataSource.data.splice(index, 1);
3331
- this.selectedDataSource._updateChangeSubscription();
3332
- this.selection.deselect(element);
3333
- const selectedProductsArray = this.form.get('selectedProducts');
3334
- const productIndex = selectedProductsArray.controls.findIndex(control => control.value.productName === element.productName);
3335
- if (productIndex >= 0) {
3336
- selectedProductsArray.removeAt(productIndex);
3337
- }
3338
- }
3339
- });
3340
- }
3341
- }
3342
- onScroll(event) {
3343
- this.trackHeight = event.target.scrollHeight - event.target.offsetHeight;
3344
- if (this.loadingFlag && (Math.floor(event.target.scrollTop / this.trackHeight * 100) > 50)) {
3345
- this.loadingFlag = false;
3346
- if (this.pageNumber < this.totalPages) {
3347
- this.pageNumber = this.pageNumber + 1;
3348
- this.getProducts();
3349
- }
3350
- else {
3351
- this.loadingFlag = true;
3352
- }
3353
- }
3354
- this.prevScrollPosition = event.target.scrollTop;
3355
- }
3356
- }
3357
- AddOnProductsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AddOnProductsComponent, deps: [{ token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }, { token: i1$1.MatDialog }, { token: CommonService }], target: i0.ɵɵFactoryTarget.Component });
3358
- AddOnProductsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: AddOnProductsComponent, selector: "ngx-mat-add-on-products", viewQueries: [{ propertyName: "firstscrollableDiv", first: true, predicate: ["firstscrollableDiv"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"spinnerFlag\" class=\"OverlayDiv\">\r\n <div class=\"OverlayDivContent\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n</div>\r\n<div class=\"product-selector\">\r\n <mat-stepper labelPosition=\"bottom\" #stepper>\r\n <mat-step [stepControl]=\"form\">\r\n <form [formGroup]=\"form\">\r\n <ng-template matStepLabel>Select Products</ng-template>\r\n <div class=\"dropdown-selection\">\r\n <div class=\"row-one\">\r\n <mat-form-field>\r\n <mat-label>Product Category</mat-label>\r\n <input type=\"text\" matInput formControlName=\"productCategory\" [matAutocomplete]=\"auto3\">\r\n <mat-autocomplete #auto3=\"matAutocomplete\"\r\n (optionSelected)=\"onOptionSelected($event, 'category1')\">\r\n <mat-option *ngFor=\"let option of filteredCategories\"\r\n [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>&nbsp;&nbsp;\r\n\r\n <mat-form-field>\r\n <mat-label>Subcategory</mat-label>\r\n <input type=\"text\" matInput formControlName=\"productSubcategory\" [matAutocomplete]=\"auto4\">\r\n <mat-autocomplete #auto4=\"matAutocomplete\"\r\n (optionSelected)=\"onOptionSelected($event, 'subCategory')\">\r\n <mat-option *ngFor=\"let option of filteredSubCategories\"\r\n [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div #firstscrollableDiv id=\"firstscrollableDiv\" class=\"new-class mat-elevation-z8 first-div\" (scroll)=\"onScroll($event)\">\r\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-table abc\"\r\n *ngIf=\"dataSource && dataSource.data.length > 0; else noData\">\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <!-- <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"isIndeterminate()\"></mat-checkbox> -->\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox color=\"primary\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? toggleSelection(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"></mat-checkbox>\r\n </td> \r\n </ng-container> \r\n\r\n <ng-container matColumnDef=\"productName\">\r\n <th mat-header-cell *matHeaderCellDef> Product Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n <th mat-header-cell *matHeaderCellDef> Price </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.price}} </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"addProductsColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: addProductsColumns;\"></tr>\r\n </table>\r\n <ng-template #noData>\r\n <div class=\"no-data-message\">\r\n No data found.\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"row-summary\">\r\n <p>Rows: {{ getTotalRows() }} Selected: {{ getSelectedRowsCount() }}</p>\r\n </div>\r\n <div>\r\n <button mat-button [mat-dialog-close]=\"false\">Close</button>\r\n <button mat-button matStepperNext [disabled]=\"selection.selected.length ? false : true\">Next</button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <mat-step [stepControl]=\"form\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-template matStepLabel>Edit/Save</ng-template>\r\n <div class=\"new-class mat-elevation-z8\">\r\n <table mat-table [dataSource]=\"selectedDataSource\"\r\n *ngIf=\"selectedDataSource && selectedDataSource.data.length > 0; else showBlank\">\r\n <ng-container matColumnDef=\"delete\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-button (click)=\"$event.stopPropagation();removeRow($event, element)\">\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Remove row\">delete</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"productName\">\r\n <th mat-header-cell *matHeaderCellDef> Product Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"categoryName\" *ngIf=\"showCategory\">\r\n <th mat-header-cell *matHeaderCellDef> Category Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.category}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subCategory\" *ngIf=\"subCategory\">\r\n <th mat-header-cell *matHeaderCellDef>Sub Category </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.subCategory}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n <th mat-header-cell *matHeaderCellDef>Price</th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n <mat-form-field class=\"example-full-width select-price\">\r\n <mat-label>Price</mat-label>\r\n <input matInput [formControl]=\"selectedProducts.at(i).get('price')\"\r\n placeholder=\"Please enter price\">\r\n <mat-error *ngIf=\"selectedProducts.at(i).get('price').hasError('required')\">\r\n Price is required\r\n </mat-error>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"Quantity\" *ngIf=\"showQuantity\">\r\n <th mat-header-cell *matHeaderCellDef> Quantity </th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n <mat-form-field class=\"example-full-width select-qunatity\">\r\n <mat-label>Select quantity</mat-label>\r\n <input matInput [formControl]=\"selectedProducts.at(i).get('quantity')\"\r\n placeholder=\"Please enter quantity\">\r\n <mat-error *ngIf=\"selectedProducts.at(i).get('quantity').hasError('required')\">\r\n Quantity is required\r\n </mat-error>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"showAllproductsColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: showAllproductsColumns;\"></tr>\r\n </table>\r\n <ng-template #showBlank>\r\n <div class=\"no-data-message\">\r\n No data found.\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div>\r\n <button mat-button matStepperPrevious>Back</button>\r\n <button mat-button matStepperNext type=\"submit\">Add products</button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n</mat-stepper>\r\n</div>", styles: [".dropdown-section{display:flex;flex-direction:column;gap:16px}.form-row{display:flex;gap:16px}mat-form-field{flex:1}.new-class.mat-elevation-z8{margin-top:20px;max-height:350px;overflow-y:auto;margin-bottom:20px}.mat-column-select{width:50px;text-align:center}.mat-header-cell,.mat-cell{text-align:center}button{align-self:flex-end;margin-top:20px}.row-summary{margin-top:20px;font-weight:700}.new-class td{border:1px solid #ddd;padding:10px}.new-class th{background-color:#f2f2f2;position:-webkit-sticky;position:sticky;top:0;transform:none;z-index:99;padding:10px}table{width:100%;border-collapse:collapse}.select-qunatity,.select-price{width:110px}.no-data-message{text-align:center;margin:20px 0;font-size:18px;color:#888}.mat-step-header.cdk-keyboard-focused,mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:transparent}.OverlayDiv{position:fixed;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:500;cursor:pointer}.OverlayDivContent{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i13.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i13.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i13.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i13.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i14.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i14.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }] });
3359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AddOnProductsComponent, decorators: [{
3360
- type: Component,
3361
- args: [{ selector: 'ngx-mat-add-on-products', template: "<div *ngIf=\"spinnerFlag\" class=\"OverlayDiv\">\r\n <div class=\"OverlayDivContent\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n</div>\r\n<div class=\"product-selector\">\r\n <mat-stepper labelPosition=\"bottom\" #stepper>\r\n <mat-step [stepControl]=\"form\">\r\n <form [formGroup]=\"form\">\r\n <ng-template matStepLabel>Select Products</ng-template>\r\n <div class=\"dropdown-selection\">\r\n <div class=\"row-one\">\r\n <mat-form-field>\r\n <mat-label>Product Category</mat-label>\r\n <input type=\"text\" matInput formControlName=\"productCategory\" [matAutocomplete]=\"auto3\">\r\n <mat-autocomplete #auto3=\"matAutocomplete\"\r\n (optionSelected)=\"onOptionSelected($event, 'category1')\">\r\n <mat-option *ngFor=\"let option of filteredCategories\"\r\n [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>&nbsp;&nbsp;\r\n\r\n <mat-form-field>\r\n <mat-label>Subcategory</mat-label>\r\n <input type=\"text\" matInput formControlName=\"productSubcategory\" [matAutocomplete]=\"auto4\">\r\n <mat-autocomplete #auto4=\"matAutocomplete\"\r\n (optionSelected)=\"onOptionSelected($event, 'subCategory')\">\r\n <mat-option *ngFor=\"let option of filteredSubCategories\"\r\n [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div #firstscrollableDiv id=\"firstscrollableDiv\" class=\"new-class mat-elevation-z8 first-div\" (scroll)=\"onScroll($event)\">\r\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-table abc\"\r\n *ngIf=\"dataSource && dataSource.data.length > 0; else noData\">\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <!-- <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"isIndeterminate()\"></mat-checkbox> -->\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox color=\"primary\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? toggleSelection(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"></mat-checkbox>\r\n </td> \r\n </ng-container> \r\n\r\n <ng-container matColumnDef=\"productName\">\r\n <th mat-header-cell *matHeaderCellDef> Product Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n <th mat-header-cell *matHeaderCellDef> Price </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.price}} </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"addProductsColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: addProductsColumns;\"></tr>\r\n </table>\r\n <ng-template #noData>\r\n <div class=\"no-data-message\">\r\n No data found.\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"row-summary\">\r\n <p>Rows: {{ getTotalRows() }} Selected: {{ getSelectedRowsCount() }}</p>\r\n </div>\r\n <div>\r\n <button mat-button [mat-dialog-close]=\"false\">Close</button>\r\n <button mat-button matStepperNext [disabled]=\"selection.selected.length ? false : true\">Next</button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <mat-step [stepControl]=\"form\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-template matStepLabel>Edit/Save</ng-template>\r\n <div class=\"new-class mat-elevation-z8\">\r\n <table mat-table [dataSource]=\"selectedDataSource\"\r\n *ngIf=\"selectedDataSource && selectedDataSource.data.length > 0; else showBlank\">\r\n <ng-container matColumnDef=\"delete\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-button (click)=\"$event.stopPropagation();removeRow($event, element)\">\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Remove row\">delete</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"productName\">\r\n <th mat-header-cell *matHeaderCellDef> Product Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"categoryName\" *ngIf=\"showCategory\">\r\n <th mat-header-cell *matHeaderCellDef> Category Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.category}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"subCategory\" *ngIf=\"subCategory\">\r\n <th mat-header-cell *matHeaderCellDef>Sub Category </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.subCategory}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n <th mat-header-cell *matHeaderCellDef>Price</th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n <mat-form-field class=\"example-full-width select-price\">\r\n <mat-label>Price</mat-label>\r\n <input matInput [formControl]=\"selectedProducts.at(i).get('price')\"\r\n placeholder=\"Please enter price\">\r\n <mat-error *ngIf=\"selectedProducts.at(i).get('price').hasError('required')\">\r\n Price is required\r\n </mat-error>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"Quantity\" *ngIf=\"showQuantity\">\r\n <th mat-header-cell *matHeaderCellDef> Quantity </th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n <mat-form-field class=\"example-full-width select-qunatity\">\r\n <mat-label>Select quantity</mat-label>\r\n <input matInput [formControl]=\"selectedProducts.at(i).get('quantity')\"\r\n placeholder=\"Please enter quantity\">\r\n <mat-error *ngIf=\"selectedProducts.at(i).get('quantity').hasError('required')\">\r\n Quantity is required\r\n </mat-error>\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"showAllproductsColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: showAllproductsColumns;\"></tr>\r\n </table>\r\n <ng-template #showBlank>\r\n <div class=\"no-data-message\">\r\n No data found.\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div>\r\n <button mat-button matStepperPrevious>Back</button>\r\n <button mat-button matStepperNext type=\"submit\">Add products</button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n</mat-stepper>\r\n</div>", styles: [".dropdown-section{display:flex;flex-direction:column;gap:16px}.form-row{display:flex;gap:16px}mat-form-field{flex:1}.new-class.mat-elevation-z8{margin-top:20px;max-height:350px;overflow-y:auto;margin-bottom:20px}.mat-column-select{width:50px;text-align:center}.mat-header-cell,.mat-cell{text-align:center}button{align-self:flex-end;margin-top:20px}.row-summary{margin-top:20px;font-weight:700}.new-class td{border:1px solid #ddd;padding:10px}.new-class th{background-color:#f2f2f2;position:-webkit-sticky;position:sticky;top:0;transform:none;z-index:99;padding:10px}table{width:100%;border-collapse:collapse}.select-qunatity,.select-price{width:110px}.no-data-message{text-align:center;margin:20px 0;font-size:18px;color:#888}.mat-step-header.cdk-keyboard-focused,mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:transparent}.OverlayDiv{position:fixed;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:500;cursor:pointer}.OverlayDivContent{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}\n"] }]
3362
- }], ctorParameters: function () {
3363
- return [{ type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
3364
- type: Inject,
3365
- args: [MAT_DIALOG_DATA]
3366
- }] }, { type: i2.FormBuilder }, { type: i1$1.MatDialog }, { type: CommonService }];
3367
- }, propDecorators: { firstscrollableDiv: [{
3368
- type: ViewChild,
3369
- args: ['firstscrollableDiv']
3370
- }] } });
3371
-
3372
- const ELEMENT_DATA = [];
3373
3006
  class MaterialDataGridComponent extends MaterialNestedComponent {
3374
- constructor(element, ref, dialog, commonService) {
3007
+ constructor(element, ref, dialog) {
3375
3008
  super(element, ref);
3376
3009
  this.element = element;
3377
3010
  this.ref = ref;
3378
3011
  this.dialog = dialog;
3379
- this.commonService = commonService;
3380
3012
  this.dataSource = new MatTableDataSource();
3381
- this.dataSourceNew = ELEMENT_DATA;
3382
- this.displayedColumnsNew = ['productName', 'category', 'subCategory', 'quantity', 'price'];
3383
- this.showNewProductPicker = false;
3384
- this.showCategory = false;
3385
- this.showSubcategory = false;
3386
- this.showPrice = true;
3387
- this.showQuantity = true;
3388
- this.category = '';
3389
- this.subCategory = '';
3390
- this.hasInitialized = false;
3391
3013
  }
3392
3014
  getColumnLabel(column) {
3393
3015
  return column.label || column.key;
3394
3016
  }
3395
- checkIsAttributeTrue(newProductPickerFlag, attributeName) {
3396
- return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key => key.toLocaleLowerCase() === attributeName.toLowerCase() &&
3397
- newProductPickerFlag[key].toLowerCase() === "true");
3398
- }
3399
- // ngOnInit(): void {
3400
- // }
3401
3017
  setInstance(instance) {
3402
- var _a;
3403
- const newProductPickerFlag = (_a = instance === null || instance === void 0 ? void 0 : instance.component) === null || _a === void 0 ? void 0 : _a.attributes;
3404
- this.showNewProductPicker = this.checkIsAttributeTrue(newProductPickerFlag, "newproductpicker");
3405
- this.showCategory = this.checkIsAttributeTrue(newProductPickerFlag, "showCategory");
3406
- this.showSubcategory = this.checkIsAttributeTrue(newProductPickerFlag, "showSubcategory");
3407
- this.showPrice = this.checkIsAttributeTrue(newProductPickerFlag, "showPrice");
3408
- this.showQuantity = this.checkIsAttributeTrue(newProductPickerFlag, "showQuantity");
3409
3018
  super.setInstance(instance);
3410
- if (this.showNewProductPicker && !this.hasInitialized) {
3411
- if (!this.showCategory) {
3412
- this.removeColumn('category');
3413
- }
3414
- if (!this.showQuantity) {
3415
- this.removeColumn('quantity');
3416
- }
3417
- if (!this.showPrice) {
3418
- this.removeColumn('price');
3419
- }
3420
- if (!this.showSubcategory) {
3421
- this.removeColumn('subCategory');
3422
- }
3423
- const checkProducts = JSON.parse(localStorage.getItem('dealData')) || [];
3424
- const dealId = checkProducts === null || checkProducts === void 0 ? void 0 : checkProducts.dealId;
3425
- const storedData = localStorage.getItem(`selectedProducts-${dealId}`);
3426
- if (storedData === null || storedData === void 0 ? void 0 : storedData.length) {
3427
- this.dataSourceNew = JSON.parse(storedData);
3428
- }
3429
- else {
3430
- this.dataSourceNew = [];
3431
- }
3432
- // Set flag to true to prevent further execution
3433
- this.hasInitialized = true;
3434
- }
3435
- else {
3436
- this.dataSource.data = instance.dataValue;
3437
- }
3019
+ this.dataSource.data = instance.dataValue;
3438
3020
  this.columns = {};
3439
3021
  this.displayedColumns = [];
3440
3022
  this.formColumns = [];
@@ -3462,10 +3044,7 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3462
3044
  return viewContainer ? viewContainer : null;
3463
3045
  };
3464
3046
  }
3465
- removeColumn(columnName) {
3466
- this.displayedColumnsNew = this.displayedColumnsNew.filter(column => column !== columnName);
3467
- }
3468
- addAnotherOld() {
3047
+ addAnother() {
3469
3048
  this.checkRowsNumber();
3470
3049
  this.instance.addRow();
3471
3050
  if (this.dataSource.data.length < this.instance.rows.length) {
@@ -3473,60 +3052,6 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3473
3052
  }
3474
3053
  this.dataSource.data = [...this.dataSource.data];
3475
3054
  }
3476
- addAnother() {
3477
- var _a, _b;
3478
- if (this.showNewProductPicker) {
3479
- const savedData = JSON.parse(localStorage.getItem('saveCat'));
3480
- const checkProducts = JSON.parse(localStorage.getItem('dealData')) || [];
3481
- // Use optional chaining and nullish coalescing to set the values
3482
- this.category = (_a = savedData === null || savedData === void 0 ? void 0 : savedData.category) !== null && _a !== void 0 ? _a : this.category;
3483
- this.subCategory = (_b = savedData === null || savedData === void 0 ? void 0 : savedData.subCategory) !== null && _b !== void 0 ? _b : this.subCategory;
3484
- const diologeRef = this.dialog.open(AddOnProductsComponent, {
3485
- disableClose: true,
3486
- width: '90%',
3487
- maxWidth: '900px',
3488
- autoFocus: false,
3489
- data: { attributesFlag: { showNewProductPicker: this.showNewProductPicker, showCategory: this.showCategory, showSubcategory: this.showSubcategory, showPrice: this.showPrice, showQuantity: this.showQuantity }, selectedProducts: this.dataSourceNew, category: this.category, subCategory: this.subCategory }
3490
- })
3491
- .afterClosed().subscribe(response => {
3492
- var _a;
3493
- if ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.status) {
3494
- if (!this.showCategory) {
3495
- this.removeColumn('category');
3496
- }
3497
- if (!this.showQuantity) {
3498
- this.removeColumn('quantity');
3499
- }
3500
- if (!this.showPrice) {
3501
- this.removeColumn('price');
3502
- }
3503
- if (!this.showSubcategory) {
3504
- this.removeColumn('subCategory');
3505
- }
3506
- //localStorage.setItem('selectedProducts', JSON.stringify(response.data.items.selectedProducts))
3507
- const dealId = checkProducts === null || checkProducts === void 0 ? void 0 : checkProducts.dealId;
3508
- localStorage.setItem(`selectedProducts-${dealId}`, JSON.stringify(response.data.items.selectedProducts));
3509
- this.dataSourceNew = response.data.items.selectedProducts;
3510
- this.category = response.data.items.productCategory;
3511
- this.subCategory = response.data.items.productSubcategory;
3512
- const catObject = {
3513
- category: this.category,
3514
- subCategory: this.subCategory
3515
- };
3516
- localStorage.setItem('saveCat', JSON.stringify(catObject));
3517
- this.instance.component.defaultValue = response.data.items.selectedProducts;
3518
- }
3519
- });
3520
- }
3521
- else {
3522
- this.checkRowsNumber();
3523
- this.instance.addRow();
3524
- if (this.dataSource.data.length < this.instance.rows.length) {
3525
- this.dataSource.data.push({});
3526
- }
3527
- this.dataSource.data = [...this.dataSource.data];
3528
- }
3529
- }
3530
3055
  checkRowsNumber() {
3531
3056
  while (this.instance.rows.length < this.dataSource.data.length) {
3532
3057
  this.instance.addRow();
@@ -3577,7 +3102,7 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3577
3102
  super.setValue(value);
3578
3103
  }
3579
3104
  }
3580
- MaterialDataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.MatDialog }, { token: CommonService }], target: i0.ɵɵFactoryTarget.Component });
3105
+ MaterialDataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
3581
3106
  MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialDataGridComponent, selector: "mat-formio-datagrid", usesInheritance: true, ngImport: i0, template: `
3582
3107
  <mat-formio-form-field [instance]="instance"
3583
3108
  [componentTemplate]="componentTemplate"
@@ -3596,8 +3121,6 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3596
3121
  {{instance.component.addAnother || 'Add Another'}}
3597
3122
  </button>
3598
3123
  </mat-card-actions>
3599
- <ng-container *ngIf="!showNewProductPicker">
3600
- <div class="mat-elevation-z8">
3601
3124
  <table
3602
3125
  mat-table
3603
3126
  [dataSource]="dataSource"
@@ -3606,8 +3129,7 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3606
3129
  cdkDropList
3607
3130
  [cdkDropListData]="dataSource"
3608
3131
  (cdkDropListDropped)="dropTable($event)">
3609
-
3610
-
3132
+ >
3611
3133
  <ng-container *ngFor="let column of formColumns" [matColumnDef]="column">
3612
3134
  <th mat-header-cell *matHeaderCellDef>{{ getColumnLabel(columns[column]) }}</th>
3613
3135
  <td mat-cell *matCellDef="let i = index;" [attr.rowIndex]="i" [attr.component]="column">
@@ -3637,51 +3159,6 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3637
3159
  <tr class="datagrid-row" mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
3638
3160
  </div>
3639
3161
  </table>
3640
- </div>
3641
- </ng-container>
3642
-
3643
- <table mat-table [dataSource]="dataSourceNew" class="mat-table" *ngIf="dataSourceNew.length > 0 && showNewProductPicker; else noData" >
3644
- <!-- Product Name Column -->
3645
- <ng-container matColumnDef="productName">
3646
- <th mat-header-cell *matHeaderCellDef> Product Name </th>
3647
- <td mat-cell *matCellDef="let element"> {{element.text}} </td>
3648
- </ng-container>
3649
-
3650
- <!-- Quantity Column -->
3651
- <ng-container matColumnDef="quantity" *ngIf="showQuantity">
3652
- <th mat-header-cell *matHeaderCellDef> Quantity </th>
3653
- <td mat-cell *matCellDef="let element"> {{element.quantity}} </td>
3654
- </ng-container>
3655
-
3656
- <!-- Price Column -->
3657
- <ng-container matColumnDef="price" *ngIf="showPrice">
3658
- <th mat-header-cell *matHeaderCellDef> Price </th>
3659
- <td mat-cell *matCellDef="let element"> {{element.price}} </td>
3660
- </ng-container>
3661
-
3662
- <!-- Category Column -->
3663
- <ng-container matColumnDef="category" *ngIf="showCategory">
3664
- <th mat-header-cell *matHeaderCellDef> Category </th>
3665
- <td mat-cell *matCellDef="let element"> {{element.category}} </td>
3666
- </ng-container>
3667
-
3668
- <!-- Category Column -->
3669
- <ng-container matColumnDef="subCategory" *ngIf="showSubcategory">
3670
- <th mat-header-cell *matHeaderCellDef> Sub Category </th>
3671
- <td mat-cell *matCellDef="let element"> {{element.subCategory}} </td>
3672
- </ng-container>
3673
-
3674
- <tr mat-header-row *matHeaderRowDef="displayedColumnsNew"></tr>
3675
- <tr mat-row *matRowDef="let row; columns: displayedColumnsNew;"></tr>
3676
- </table>
3677
- <ng-template #noData>
3678
- <div class="no-data-message" *ngIf="showNewProductPicker">
3679
- No product found please add some products.
3680
- </div>
3681
- </ng-template>
3682
-
3683
-
3684
-
3685
3162
  </mat-card-content>
3686
3163
  <mat-card-actions *ngIf="instance.hasAddButton() && instance.component.addAnotherPosition !== 'top'">
3687
3164
  <button mat-raised-button color="primary" (click)="addAnother()">
@@ -3697,7 +3174,7 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3697
3174
  <span [instance]="instance" matFormioLabel></span>
3698
3175
  </mat-card-title>
3699
3176
  </ng-template>
3700
- `, isInline: true, styles: [".datagrid-row{height:auto}.mat-table{width:100%}.mat-header-cell,.mat-cell{padding:8px}.no-data-message{text-align:center;margin:20px 0;font-size:18px;color:#888}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i4.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i9$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
3177
+ `, isInline: true, styles: [".datagrid-row{height:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4$7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i4.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
3701
3178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialDataGridComponent, decorators: [{
3702
3179
  type: Component,
3703
3180
  args: [{ selector: 'mat-formio-datagrid', template: `
@@ -3718,8 +3195,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3718
3195
  {{instance.component.addAnother || 'Add Another'}}
3719
3196
  </button>
3720
3197
  </mat-card-actions>
3721
- <ng-container *ngIf="!showNewProductPicker">
3722
- <div class="mat-elevation-z8">
3723
3198
  <table
3724
3199
  mat-table
3725
3200
  [dataSource]="dataSource"
@@ -3728,8 +3203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3728
3203
  cdkDropList
3729
3204
  [cdkDropListData]="dataSource"
3730
3205
  (cdkDropListDropped)="dropTable($event)">
3731
-
3732
-
3206
+ >
3733
3207
  <ng-container *ngFor="let column of formColumns" [matColumnDef]="column">
3734
3208
  <th mat-header-cell *matHeaderCellDef>{{ getColumnLabel(columns[column]) }}</th>
3735
3209
  <td mat-cell *matCellDef="let i = index;" [attr.rowIndex]="i" [attr.component]="column">
@@ -3759,51 +3233,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3759
3233
  <tr class="datagrid-row" mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
3760
3234
  </div>
3761
3235
  </table>
3762
- </div>
3763
- </ng-container>
3764
-
3765
- <table mat-table [dataSource]="dataSourceNew" class="mat-table" *ngIf="dataSourceNew.length > 0 && showNewProductPicker; else noData" >
3766
- <!-- Product Name Column -->
3767
- <ng-container matColumnDef="productName">
3768
- <th mat-header-cell *matHeaderCellDef> Product Name </th>
3769
- <td mat-cell *matCellDef="let element"> {{element.text}} </td>
3770
- </ng-container>
3771
-
3772
- <!-- Quantity Column -->
3773
- <ng-container matColumnDef="quantity" *ngIf="showQuantity">
3774
- <th mat-header-cell *matHeaderCellDef> Quantity </th>
3775
- <td mat-cell *matCellDef="let element"> {{element.quantity}} </td>
3776
- </ng-container>
3777
-
3778
- <!-- Price Column -->
3779
- <ng-container matColumnDef="price" *ngIf="showPrice">
3780
- <th mat-header-cell *matHeaderCellDef> Price </th>
3781
- <td mat-cell *matCellDef="let element"> {{element.price}} </td>
3782
- </ng-container>
3783
-
3784
- <!-- Category Column -->
3785
- <ng-container matColumnDef="category" *ngIf="showCategory">
3786
- <th mat-header-cell *matHeaderCellDef> Category </th>
3787
- <td mat-cell *matCellDef="let element"> {{element.category}} </td>
3788
- </ng-container>
3789
-
3790
- <!-- Category Column -->
3791
- <ng-container matColumnDef="subCategory" *ngIf="showSubcategory">
3792
- <th mat-header-cell *matHeaderCellDef> Sub Category </th>
3793
- <td mat-cell *matCellDef="let element"> {{element.subCategory}} </td>
3794
- </ng-container>
3795
-
3796
- <tr mat-header-row *matHeaderRowDef="displayedColumnsNew"></tr>
3797
- <tr mat-row *matRowDef="let row; columns: displayedColumnsNew;"></tr>
3798
- </table>
3799
- <ng-template #noData>
3800
- <div class="no-data-message" *ngIf="showNewProductPicker">
3801
- No product found please add some products.
3802
- </div>
3803
- </ng-template>
3804
-
3805
-
3806
-
3807
3236
  </mat-card-content>
3808
3237
  <mat-card-actions *ngIf="instance.hasAddButton() && instance.component.addAnotherPosition !== 'top'">
3809
3238
  <button mat-raised-button color="primary" (click)="addAnother()">
@@ -3819,8 +3248,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3819
3248
  <span [instance]="instance" matFormioLabel></span>
3820
3249
  </mat-card-title>
3821
3250
  </ng-template>
3822
- `, styles: [".datagrid-row{height:auto}.mat-table{width:100%}.mat-header-cell,.mat-cell{padding:8px}.no-data-message{text-align:center;margin:20px 0;font-size:18px;color:#888}\n"] }]
3823
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.MatDialog }, { type: CommonService }]; } });
3251
+ `, styles: [".datagrid-row{height:auto}\n"] }]
3252
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$2.MatDialog }]; } });
3824
3253
  DataGridComponent.MaterialComponent = MaterialDataGridComponent;
3825
3254
 
3826
3255
  var EditRowState;
@@ -4203,7 +3632,7 @@ MaterialWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
4203
3632
  <button *ngIf="instance.hasButton('submit')" mat-raised-button color="primary" (click)="submit()">Submit</button>
4204
3633
  </div>
4205
3634
  </mat-step>
4206
- </mat-horizontal-stepper>`, isInline: true, styles: [":host .navigation-button-row{margin-top:8px}\n", ":host .navigation-button-row button{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i13.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i13.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }] });
3635
+ </mat-horizontal-stepper>`, isInline: true, styles: [":host .navigation-button-row{margin-top:8px}\n", ":host .navigation-button-row button{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i3$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }] });
4207
3636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialWizardComponent, decorators: [{
4208
3637
  type: Component,
4209
3638
  args: [{ selector: 'mat-formio-wizard', template: `
@@ -4373,7 +3802,7 @@ FormioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
4373
3802
  <div fxLayout="column" fxLayoutGap="1em">
4374
3803
  <ng-template #formio></ng-template>
4375
3804
  </div>
4376
- `, isInline: true, styles: [".alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:.5rem;border:1px solid transparent;border-radius:.25rem}::ng-deep mat-card{box-sizing:border-box;-moz-box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }] });
3805
+ `, isInline: true, styles: [".alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:.5rem;border:1px solid transparent;border-radius:.25rem}::ng-deep mat-card{box-sizing:border-box;-moz-box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }] });
4377
3806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormioComponent, decorators: [{
4378
3807
  type: Component,
4379
3808
  args: [{ selector: 'mat-formio', template: `
@@ -4445,8 +3874,7 @@ NgxRenderMaterialFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.
4445
3874
  FormioFormFieldComponent,
4446
3875
  LabelComponent,
4447
3876
  MaskDirective,
4448
- ConfirmationDialogComponent,
4449
- AddOnProductsComponent], imports: [CommonModule,
3877
+ ConfirmationDialogComponent], imports: [CommonModule,
4450
3878
  FormsModule,
4451
3879
  ReactiveFormsModule,
4452
3880
  MatInputModule,
@@ -4474,9 +3902,7 @@ NgxRenderMaterialFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.
4474
3902
  ScrollingModule,
4475
3903
  NgxMatSelectSearchModule,
4476
3904
  MatDialogModule,
4477
- HttpClientModule,
4478
- MatAutocompleteModule], exports: [MatAutocompleteModule,
4479
- NgxRenderMaterialFormsComponent,
3905
+ HttpClientModule], exports: [NgxRenderMaterialFormsComponent,
4480
3906
  FormioComponent,
4481
3907
  MatInputModule,
4482
3908
  MatFormFieldModule,
@@ -4530,9 +3956,7 @@ NgxRenderMaterialFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.
4530
3956
  ScrollingModule,
4531
3957
  NgxMatSelectSearchModule,
4532
3958
  MatDialogModule,
4533
- HttpClientModule,
4534
- MatAutocompleteModule, MatAutocompleteModule,
4535
- MatInputModule,
3959
+ HttpClientModule, MatInputModule,
4536
3960
  MatFormFieldModule,
4537
3961
  MatCheckboxModule,
4538
3962
  MatRadioModule,
@@ -4600,8 +4024,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
4600
4024
  FormioFormFieldComponent,
4601
4025
  LabelComponent,
4602
4026
  MaskDirective,
4603
- ConfirmationDialogComponent,
4604
- AddOnProductsComponent
4027
+ ConfirmationDialogComponent
4605
4028
  ],
4606
4029
  imports: [
4607
4030
  CommonModule,
@@ -4632,11 +4055,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
4632
4055
  ScrollingModule,
4633
4056
  NgxMatSelectSearchModule,
4634
4057
  MatDialogModule,
4635
- HttpClientModule,
4636
- MatAutocompleteModule
4058
+ HttpClientModule
4637
4059
  ],
4638
4060
  exports: [
4639
- MatAutocompleteModule,
4640
4061
  NgxRenderMaterialFormsComponent,
4641
4062
  FormioComponent,
4642
4063
  MatInputModule,