ngx-render-material-forms 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,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$1 from '@angular/common/http';
3
+ import * as i1$2 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, FormsModule, ReactiveFormsModule } from '@angular/forms';
8
+ import { FormControl, NG_VALUE_ACCESSOR, Validators, 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,18 +27,20 @@ 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 i4$7 from '@angular/material/table';
30
+ import * as i10 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 i3$4 from '@angular/material/progress-spinner';
34
+ import * as i11 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$2 from '@angular/material/dialog';
40
+ import * as i1$1 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';
42
44
  import Webform from 'formiojs/Webform.js';
43
45
  import FormioComponent$2 from 'formiojs/components/_classes/component/Component.js';
44
46
  import TextFieldComponent from 'formiojs/components/textfield/TextField.js';
@@ -81,7 +83,7 @@ import RadioComponent from 'formiojs/components/radio/Radio.js';
81
83
  import SelectBoxesComponent from 'formiojs/components/selectboxes/SelectBoxes.js';
82
84
  import SelectComponent from 'formiojs/components/select/Select.js';
83
85
  import { Subject } from 'rxjs';
84
- import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
86
+ import { debounceTime, distinctUntilChanged, takeUntil, startWith, map } from 'rxjs/operators';
85
87
  import * as CryptoJS from 'crypto-js';
86
88
  import { isNullOrUndefined } from 'util';
87
89
  import * as i9 from 'ngx-mat-select-search';
@@ -90,14 +92,15 @@ import WellComponent from 'formiojs/components/well/Well.js';
90
92
  import DataGridComponent from 'formiojs/components/datagrid/DataGrid.js';
91
93
  import * as i8 from '@angular/cdk/drag-drop';
92
94
  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';
93
98
  import EditGridComponent from 'formiojs/components/editgrid/EditGrid.js';
94
99
  import Components$2 from 'formiojs/components/Components';
95
100
  import isString from 'lodash/isString';
96
101
  import TableComponent from 'formiojs/components/table/Table.js';
97
102
  import Wizard from 'formiojs/Wizard';
98
103
  import Displays from 'formiojs/displays/Displays';
99
- import * as i3$3 from '@angular/material/stepper';
100
- import { MatStepperModule } from '@angular/material/stepper';
101
104
  import * as i1$3 from '@formio/angular';
102
105
  import { FormioBaseComponent } from '@formio/angular';
103
106
  import { FlexLayoutModule } from '@angular/flex-layout';
@@ -976,8 +979,11 @@ var AngularButtonsThemes;
976
979
  })(AngularButtonsThemes || (AngularButtonsThemes = {}));
977
980
 
978
981
  class MaterialButtonComponent extends MaterialComponent {
979
- constructor() {
980
- super(...arguments);
982
+ constructor(element, ref, dialog) {
983
+ super(element, ref);
984
+ this.element = element;
985
+ this.ref = ref;
986
+ this.dialog = dialog;
981
987
  this.loading = false;
982
988
  this.done = false;
983
989
  this.error = false;
@@ -1048,12 +1054,12 @@ class MaterialButtonComponent extends MaterialComponent {
1048
1054
  return retVal;
1049
1055
  }
1050
1056
  }
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"] }] });
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"] }] });
1053
1059
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialButtonComponent, decorators: [{
1054
1060
  type: Component,
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
- }] });
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 }]; } });
1057
1063
  ButtonComponent.MaterialComponent = MaterialButtonComponent;
1058
1064
 
1059
1065
  class MaterialTextareaComponent extends MaterialComponent {
@@ -2631,7 +2637,7 @@ class MaterialSelectComponent extends MaterialComponent {
2631
2637
  return item ? item.value : null;
2632
2638
  }
2633
2639
  loadData(pageNumber, pageSize, searchQuery) {
2634
- const paramsData = JSON.parse(localStorage.getItem('productPicker'));
2640
+ const paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
2635
2641
  const includeDescription = this.getValueByKey(paramsData, 'includeDescription');
2636
2642
  const vendorId = this.getValueByKey(paramsData, 'vendorId');
2637
2643
  const onlyActive = this.getValueByKey(paramsData, 'onlyActive');
@@ -2809,7 +2815,7 @@ class MaterialSelectComponent extends MaterialComponent {
2809
2815
  return _.isEqual(o1, o2);
2810
2816
  }
2811
2817
  }
2812
- 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 });
2818
+ 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 });
2813
2819
  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: `
2814
2820
  <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
2815
2821
  <ng-template #componentTemplate let-hasLabel>
@@ -2894,7 +2900,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
2894
2900
  </mat-form-field>
2895
2901
  </ng-template>
2896
2902
  `, 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"] }]
2897
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.HttpClient }]; }, propDecorators: { multiSelect: [{
2903
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$2.HttpClient }]; }, propDecorators: { multiSelect: [{
2898
2904
  type: ViewChild,
2899
2905
  args: ['multiSelect', { static: true }]
2900
2906
  }], selectElem: [{
@@ -2953,18 +2959,414 @@ class ConfirmationDialogComponent {
2953
2959
  ngOnInit() {
2954
2960
  }
2955
2961
  }
2956
- 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 });
2957
- 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\">\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\n<mat-dialog-content class=\"data-grid-popup-body\">\n {{data.message}}\n</mat-dialog-content>\n<mat-dialog-actions class=\"data-grid-popup-footer\">\n <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\n <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\n</mat-dialog-actions>\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"] }] });
2962
+ 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 });
2963
+ 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"] }] });
2958
2964
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
2959
2965
  type: Component,
2960
- args: [{ selector: 'NgxMat-confirmation-dialog', template: "<div class=\"dialog-container\">\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\n<mat-dialog-content class=\"data-grid-popup-body\">\n {{data.message}}\n</mat-dialog-content>\n<mat-dialog-actions class=\"data-grid-popup-footer\">\n <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\n <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\n</mat-dialog-actions>\n</div>", styles: ["::ng-deep .data-grid-closed-btn .mat-button-focus-overlay{background-color:transparent}\n"] }]
2966
+ 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"] }]
2961
2967
  }], ctorParameters: function () {
2962
- return [{ type: i1$2.MatDialogRef }, { type: undefined, decorators: [{
2968
+ return [{ type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
2963
2969
  type: Inject,
2964
2970
  args: [MAT_DIALOG_DATA]
2965
2971
  }] }];
2966
2972
  } });
2967
2973
 
2974
+ class CommonService {
2975
+ constructor(http) {
2976
+ this.http = http;
2977
+ this.holy = '';
2978
+ this.grail = '';
2979
+ this.holy = CryptoJS.enc.Base64.parse('8F/2+T2NXqUBQERR12R4sw==');
2980
+ this.grail = CryptoJS.enc.Base64.parse('yE0CgQbYzK5wqeoKTVzhOQ==');
2981
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
2982
+ this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
2983
+ }
2984
+ scrumble(msg) {
2985
+ if (!isNullOrUndefined(msg)) {
2986
+ var conceal = this.getcampaign(msg, this.holy, this.grail);
2987
+ var sha256 = CryptoJS.HmacSHA256(CryptoJS.enc.Base64.stringify(this.grail) + conceal.toString(), CryptoJS.enc.Base64.stringify(this.holy));
2988
+ var hashInBase64 = CryptoJS.enc.Base64.stringify(sha256);
2989
+ let keyValue = {
2990
+ "value": conceal.toString(),
2991
+ "mac": hashInBase64
2992
+ };
2993
+ var result = JSON.stringify(keyValue);
2994
+ var jumbled = CryptoJS.enc.Utf8.parse(result);
2995
+ return CryptoJS.enc.Base64.stringify(jumbled);
2996
+ }
2997
+ }
2998
+ getcampaign(data, holy, grail) {
2999
+ return CryptoJS.AES.encrypt(data.toString(), holy, {
3000
+ blockSize: 128,
3001
+ iv: grail,
3002
+ mode: CryptoJS.mode.CBC,
3003
+ padding: CryptoJS.pad.Pkcs7
3004
+ });
3005
+ }
3006
+ getBaseApiUrl() {
3007
+ const baseUrlMapping = {
3008
+ 'localhost': 'http://localhost:58504',
3009
+ 'lincoln.vartopia.com': 'https://lincoln-api.vartopia.com',
3010
+ 'stage.vartopia.com': 'https://stage-api.vartopia.com',
3011
+ 'my.vartopia.com': 'https://reagan-api.vartopia.com',
3012
+ 'jackson.vartopia.com': 'https://jackson-api.vartopia.com'
3013
+ };
3014
+ // Get the current hostname
3015
+ const hostname = window.location.hostname;
3016
+ return baseUrlMapping[hostname] || null;
3017
+ }
3018
+ listProductCategory() {
3019
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3020
+ const baseApiUrl = this.getBaseApiUrl();
3021
+ console.log('categoryVid=>', vendorId);
3022
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsCategory?vendorId=${vendorId}`);
3023
+ }
3024
+ listSubCategory(category) {
3025
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3026
+ const baseApiUrl = this.getBaseApiUrl();
3027
+ console.log('subcategoryVid=>', vendorId);
3028
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsSubCategory?vendorId=${vendorId}&categoryName=${category}`);
3029
+ }
3030
+ // Function to get value by key from the array
3031
+ getValueByKey(data, key) {
3032
+ if (!data || data.length === 0) {
3033
+ return null; // Return null if data is empty or undefined
3034
+ }
3035
+ const item = data.find(kv => kv.key.toLowerCase() === key.toLowerCase());
3036
+ return item ? item.value : null;
3037
+ }
3038
+ // this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetVendorProducts?vendorId=${envendorId}&pageNumber=${enpageNumber}&pageSize=${enpageSize}&search=${ensearchQuery}&onlyActive=${enactive}&includeDescription=${endescription}`, { headers }).subscribe(response => {
3039
+ loadProducts(pageNumber, pazeSize, search = '', onlyActive = true, description = false, category, subCategory) {
3040
+ const baseApiUrl = this.getBaseApiUrl();
3041
+ const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
3042
+ const encodeCat = encodeURIComponent(category);
3043
+ const encodeSubCat = encodeURIComponent(subCategory);
3044
+ return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetVendorProducts?vendorId=${vendorId}&pageNumber=${pageNumber}&pageSize=${pazeSize}&search=${search}&onlyActive=${onlyActive}&includeDescription=${description}&category=${encodeCat}&subCategory=${encodeSubCat}`);
3045
+ }
3046
+ }
3047
+ 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 });
3048
+ CommonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommonService, providedIn: 'root' });
3049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommonService, decorators: [{
3050
+ type: Injectable,
3051
+ args: [{
3052
+ providedIn: 'root'
3053
+ }]
3054
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }]; } });
3055
+
3056
+ class AddOnProductsComponent {
3057
+ constructor(matDialogRef, data, fb, dialog, commonSevice) {
3058
+ this.matDialogRef = matDialogRef;
3059
+ this.fb = fb;
3060
+ this.dialog = dialog;
3061
+ this.commonSevice = commonSevice;
3062
+ this.category = [];
3063
+ this.subCategory = [];
3064
+ this.filteredCategories = [];
3065
+ this.filteredSubCategories = [];
3066
+ this.addProductsColumns = ['select', 'productName', 'price'];
3067
+ this.showAllproductsColumns = ['delete', 'productName', 'categoryName', 'subCategory', 'Quantity', 'price'];
3068
+ this.quantityList = [5, 10, 15, 20, 25];
3069
+ this.ELEMENT_DATA = [];
3070
+ this.dataSource = new MatTableDataSource();
3071
+ this.selection = new SelectionModel(true, []);
3072
+ this.selectedDataSource = new MatTableDataSource([]);
3073
+ this.selectedCategory = null;
3074
+ this.selectedSubCategory = null;
3075
+ this.showCategory = false;
3076
+ this.showSubcategory = false;
3077
+ this.showPrice = true;
3078
+ this.showQuantity = true;
3079
+ this.showNewProductPicker = true;
3080
+ this.setCategory = '';
3081
+ this.setSubCategory = '';
3082
+ this.loadingFlag = false;
3083
+ this.pageNumber = 1;
3084
+ this.pageSize = 20;
3085
+ this.totalPages = 0;
3086
+ this.searchQuery = '';
3087
+ this.itemList = [];
3088
+ this.prevScrollPosition = 0; // Track the previous scroll position
3089
+ this.spinnerFlag = false;
3090
+ this.showCategory = data.attributesFlag.showCategory;
3091
+ this.showSubcategory = data.attributesFlag.showSubcategory;
3092
+ this.showPrice = data.attributesFlag.showPrice;
3093
+ this.showQuantity = data.attributesFlag.showQuantity;
3094
+ this.showNewProductPicker = data.showNewProductPicker;
3095
+ this.setCategory = data.category || '';
3096
+ this.setSubCategory = data.subCategory || '';
3097
+ this.selection = new SelectionModel(true, data.selectedProducts || []);
3098
+ this.form = this.fb.group({
3099
+ productCategory: [''],
3100
+ productSubcategory: [''],
3101
+ selectedProducts: this.fb.array([])
3102
+ });
3103
+ this.initializeFormArray();
3104
+ if (!this.showCategory) {
3105
+ this.removeColumn('categoryName');
3106
+ }
3107
+ if (!this.showPrice) {
3108
+ this.removeColumn('price');
3109
+ }
3110
+ if (!this.showSubcategory) {
3111
+ this.removeColumn('subCategory');
3112
+ }
3113
+ if (!this.showQuantity) {
3114
+ this.removeColumn('Quantity');
3115
+ }
3116
+ }
3117
+ removeColumn(columnName) {
3118
+ this.showAllproductsColumns = this.showAllproductsColumns.filter(column => column !== columnName);
3119
+ this.addProductsColumns = this.addProductsColumns.filter(column => column !== columnName);
3120
+ }
3121
+ initializeFormArray() {
3122
+ const selectedProductsArray = this.form.get('selectedProducts');
3123
+ this.selection.selected.forEach(product => {
3124
+ selectedProductsArray.push(this.fb.group({
3125
+ price: [product.price || '', Validators.required],
3126
+ text: [product.text || ''],
3127
+ quantity: [product.quantity || '', Validators.required],
3128
+ category: [(product === null || product === void 0 ? void 0 : product.category) || ''],
3129
+ subCategory: [(product === null || product === void 0 ? void 0 : product.subCategory) || ''],
3130
+ value: [(product === null || product === void 0 ? void 0 : product.value) || '']
3131
+ }));
3132
+ });
3133
+ this.selectedDataSource.data = [...this.selection.selected];
3134
+ }
3135
+ initializeDataSources() {
3136
+ var _a, _b, _c, _d;
3137
+ // Ensure selected items are marked in the main data source
3138
+ if ((_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.length) {
3139
+ (_d = (_c = this.selection) === null || _c === void 0 ? void 0 : _c.selected) === null || _d === void 0 ? void 0 : _d.forEach(selectedProduct => {
3140
+ const index = this.dataSource.data.findIndex(product => product.value === selectedProduct.value);
3141
+ if (index >= 0) {
3142
+ this.dataSource.data[index] = selectedProduct;
3143
+ }
3144
+ });
3145
+ this.selectedDataSource.data = [...this.selection.selected];
3146
+ }
3147
+ else {
3148
+ console.warn('No selected products found.');
3149
+ }
3150
+ }
3151
+ ngAfterViewInit() {
3152
+ }
3153
+ ngOnInit() {
3154
+ this.loadProductCategory();
3155
+ this.form.get('productCategory').valueChanges
3156
+ .pipe(startWith(''), map(value => this.filterProducts(value, 'category1'))).subscribe(filterCat => {
3157
+ this.filteredCategories = filterCat;
3158
+ });
3159
+ this.form.get('productSubcategory').valueChanges
3160
+ .pipe(startWith(''), map(value => this.filterProducts(value, 'subCategory'))).subscribe(subCat => {
3161
+ this.filteredSubCategories = subCat;
3162
+ });
3163
+ }
3164
+ loadProductCategory() {
3165
+ this.spinnerFlag = true;
3166
+ this.commonSevice.listProductCategory().subscribe(response => {
3167
+ this.spinnerFlag = false;
3168
+ if (response && response.code === 200) {
3169
+ this.category = response.data;
3170
+ this.filteredCategories = this.filterProducts(this.setCategory, 'category1');
3171
+ this.form.get('productCategory').setValue(this.setCategory);
3172
+ if (this.setCategory !== '') {
3173
+ this.onOptionSelected(this.setCategory, 'category1');
3174
+ this.form.get('productSubcategory').setValue(this.setSubCategory);
3175
+ }
3176
+ }
3177
+ });
3178
+ }
3179
+ filterProducts(value, cat) {
3180
+ const filterValue = value.toLowerCase();
3181
+ const data = cat === 'category1' ? this.category : this.subCategory;
3182
+ if (!filterValue) {
3183
+ return data;
3184
+ }
3185
+ else {
3186
+ return data.filter(option => option.toLowerCase().includes(filterValue));
3187
+ }
3188
+ }
3189
+ onSubmit() {
3190
+ if (this.form.valid) {
3191
+ this.matDialogRef.close({
3192
+ data: {
3193
+ status: true,
3194
+ items: this.form.value
3195
+ }
3196
+ });
3197
+ }
3198
+ }
3199
+ isAllSelected() {
3200
+ const numSelected = this.selection.selected.length;
3201
+ const numRows = this.dataSource.data.length;
3202
+ return numSelected === numRows;
3203
+ }
3204
+ isIndeterminate() {
3205
+ const numSelected = this.selection.selected.length;
3206
+ const numRows = this.dataSource.data.length;
3207
+ return numSelected > 0 && numSelected < numRows;
3208
+ }
3209
+ masterToggle() {
3210
+ this.isAllSelected()
3211
+ ? this.selection.clear()
3212
+ : this.dataSource.data.forEach(row => this.selection.select(row));
3213
+ this.updateSelectedProducts();
3214
+ }
3215
+ toggleSelection(row) {
3216
+ this.selection.toggle(row);
3217
+ this.updateSelectedProducts();
3218
+ }
3219
+ // Getter for the FormArray
3220
+ get selectedProducts() {
3221
+ return this.form.get('selectedProducts');
3222
+ }
3223
+ updateSelectedProducts() {
3224
+ var _a, _b;
3225
+ if (Array.isArray(this.selection.selected)) {
3226
+ this.selectedDataSource.data = [...this.selection.selected];
3227
+ const selectedProductsArray = this.selectedProducts;
3228
+ selectedProductsArray.clear();
3229
+ (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.forEach(product => {
3230
+ var _a, _b;
3231
+ selectedProductsArray === null || selectedProductsArray === void 0 ? void 0 : selectedProductsArray.push(this.fb.group({
3232
+ price: [(_a = product === null || product === void 0 ? void 0 : product.price) !== null && _a !== void 0 ? _a : '', this.showPrice ? Validators.required : []],
3233
+ text: [(product === null || product === void 0 ? void 0 : product.text) || ''],
3234
+ quantity: [(_b = product === null || product === void 0 ? void 0 : product.quantity) !== null && _b !== void 0 ? _b : '', this.showQuantity ? Validators.required : []],
3235
+ category: [(product === null || product === void 0 ? void 0 : product.category) || ''],
3236
+ subCategory: [(product === null || product === void 0 ? void 0 : product.subCategory) || ''],
3237
+ value: [(product === null || product === void 0 ? void 0 : product.value) || '']
3238
+ }));
3239
+ });
3240
+ }
3241
+ else {
3242
+ console.error('Selection.selected is not an array:', this.selection.selected);
3243
+ }
3244
+ }
3245
+ getTotalRows() {
3246
+ return this.dataSource.data.length;
3247
+ }
3248
+ getSelectedRowsCount() {
3249
+ return this.selection.selected.length;
3250
+ }
3251
+ onOptionSelected(event, category) {
3252
+ let selectedValue;
3253
+ if (event && event.option && event.option.value !== undefined) {
3254
+ selectedValue = event.option.value;
3255
+ }
3256
+ else {
3257
+ selectedValue = event;
3258
+ }
3259
+ if (category === 'category1') {
3260
+ this.selectedCategory = selectedValue;
3261
+ this.spinnerFlag = true;
3262
+ this.commonSevice.listSubCategory(selectedValue).subscribe(response => {
3263
+ this.spinnerFlag = false;
3264
+ if (response && response.code === 200) {
3265
+ this.subCategory = response.data;
3266
+ this.filteredSubCategories = this.filterProducts(this.setCategory, 'subCategory');
3267
+ if (this.setSubCategory !== '') {
3268
+ this.selectedSubCategory = this.setSubCategory;
3269
+ this.getProducts();
3270
+ }
3271
+ }
3272
+ });
3273
+ }
3274
+ else {
3275
+ if (category === 'subCategory') {
3276
+ this.selectedSubCategory = event.option.value;
3277
+ this.getProducts();
3278
+ }
3279
+ }
3280
+ }
3281
+ getProducts() {
3282
+ this.spinnerFlag = true;
3283
+ this.commonSevice.loadProducts(this.pageNumber, this.pageSize, '', true, false, this.selectedCategory, this.selectedSubCategory).subscribe(response => {
3284
+ var _a;
3285
+ this.spinnerFlag = false;
3286
+ if (response && response.code === 200) {
3287
+ //this.dataSource.data = response.data.dataSource;
3288
+ this.totalPages = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.totalPages;
3289
+ const data = response.data.dataSource;
3290
+ if (this.dataSource.data.length > 0) {
3291
+ data.forEach(item => this.dataSource.data.push(item));
3292
+ this.dataSource.data = [...this.dataSource.data];
3293
+ }
3294
+ else {
3295
+ this.dataSource.data = data;
3296
+ }
3297
+ this.loadingFlag = true;
3298
+ setTimeout(() => {
3299
+ const middlePosition = this.trackHeight / 2 - 50;
3300
+ if (this.firstscrollableDiv && this.firstscrollableDiv.nativeElement) {
3301
+ this.firstscrollableDiv.nativeElement.scrollTo({ top: middlePosition, behavior: 'auto' });
3302
+ }
3303
+ }, 250);
3304
+ this.initializeDataSources();
3305
+ }
3306
+ });
3307
+ }
3308
+ removeRow(event, element) {
3309
+ event.stopPropagation();
3310
+ event.preventDefault();
3311
+ let message = 'Are you sure you want to delete this product?';
3312
+ let showButton = true;
3313
+ const index = this.selectedDataSource.data.indexOf(element);
3314
+ if (index >= 0) {
3315
+ if (this.selectedDataSource.data.length === 1) {
3316
+ message = 'Please select at least one product.';
3317
+ showButton = false;
3318
+ }
3319
+ const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
3320
+ disableClose: true,
3321
+ width: '90%',
3322
+ maxWidth: '400px',
3323
+ data: { message: message, buttonStatus: showButton }
3324
+ });
3325
+ dialogRef.afterClosed().subscribe(result => {
3326
+ if (result) {
3327
+ this.selectedDataSource.data.splice(index, 1);
3328
+ this.selectedDataSource._updateChangeSubscription();
3329
+ this.selection.deselect(element);
3330
+ const selectedProductsArray = this.form.get('selectedProducts');
3331
+ const productIndex = selectedProductsArray.controls.findIndex(control => control.value.productName === element.productName);
3332
+ if (productIndex >= 0) {
3333
+ selectedProductsArray.removeAt(productIndex);
3334
+ }
3335
+ }
3336
+ });
3337
+ }
3338
+ }
3339
+ onScroll(event) {
3340
+ this.trackHeight = event.target.scrollHeight - event.target.offsetHeight;
3341
+ if (this.loadingFlag && (Math.floor(event.target.scrollTop / this.trackHeight * 100) > 50)) {
3342
+ this.loadingFlag = false;
3343
+ if (this.pageNumber < this.totalPages) {
3344
+ this.pageNumber = this.pageNumber + 1;
3345
+ this.getProducts();
3346
+ }
3347
+ else {
3348
+ this.loadingFlag = true;
3349
+ }
3350
+ }
3351
+ this.prevScrollPosition = event.target.scrollTop;
3352
+ }
3353
+ }
3354
+ 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 });
3355
+ 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"] }] });
3356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AddOnProductsComponent, decorators: [{
3357
+ type: Component,
3358
+ 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"] }]
3359
+ }], ctorParameters: function () {
3360
+ return [{ type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
3361
+ type: Inject,
3362
+ args: [MAT_DIALOG_DATA]
3363
+ }] }, { type: i2.FormBuilder }, { type: i1$1.MatDialog }, { type: CommonService }];
3364
+ }, propDecorators: { firstscrollableDiv: [{
3365
+ type: ViewChild,
3366
+ args: ['firstscrollableDiv']
3367
+ }] } });
3368
+
3369
+ const ELEMENT_DATA = [];
2968
3370
  class MaterialDataGridComponent extends MaterialNestedComponent {
2969
3371
  constructor(element, ref, dialog) {
2970
3372
  super(element, ref);
@@ -2972,11 +3374,31 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
2972
3374
  this.ref = ref;
2973
3375
  this.dialog = dialog;
2974
3376
  this.dataSource = new MatTableDataSource();
3377
+ this.dataSourceNew = ELEMENT_DATA;
3378
+ this.displayedColumnsNew = ['productName', 'category', 'subCategory', 'quantity', 'price'];
3379
+ this.showNewProductPicker = false;
3380
+ this.showCategory = false;
3381
+ this.showSubcategory = false;
3382
+ this.showPrice = true;
3383
+ this.showQuantity = true;
3384
+ this.category = '';
3385
+ this.subCategory = '';
2975
3386
  }
2976
3387
  getColumnLabel(column) {
2977
3388
  return column.label || column.key;
2978
3389
  }
3390
+ checkIsAttributeTrue(newProductPickerFlag, attributeName) {
3391
+ return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key => key.toLocaleLowerCase() === attributeName.toLowerCase() &&
3392
+ newProductPickerFlag[key].toLowerCase() === "true");
3393
+ }
2979
3394
  setInstance(instance) {
3395
+ var _a;
3396
+ const newProductPickerFlag = (_a = instance === null || instance === void 0 ? void 0 : instance.component) === null || _a === void 0 ? void 0 : _a.attributes;
3397
+ this.showNewProductPicker = this.checkIsAttributeTrue(newProductPickerFlag, "newproductpicker");
3398
+ this.showCategory = this.checkIsAttributeTrue(newProductPickerFlag, "showCategory");
3399
+ this.showSubcategory = this.checkIsAttributeTrue(newProductPickerFlag, "showSubcategory");
3400
+ this.showPrice = this.checkIsAttributeTrue(newProductPickerFlag, "showPrice");
3401
+ this.showQuantity = this.checkIsAttributeTrue(newProductPickerFlag, "showQuantity");
2980
3402
  super.setInstance(instance);
2981
3403
  this.dataSource.data = instance.dataValue;
2982
3404
  this.columns = {};
@@ -3006,7 +3428,10 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3006
3428
  return viewContainer ? viewContainer : null;
3007
3429
  };
3008
3430
  }
3009
- addAnother() {
3431
+ removeColumn(columnName) {
3432
+ this.displayedColumnsNew = this.displayedColumnsNew.filter(column => column !== columnName);
3433
+ }
3434
+ addAnotherOld() {
3010
3435
  this.checkRowsNumber();
3011
3436
  this.instance.addRow();
3012
3437
  if (this.dataSource.data.length < this.instance.rows.length) {
@@ -3014,6 +3439,47 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3014
3439
  }
3015
3440
  this.dataSource.data = [...this.dataSource.data];
3016
3441
  }
3442
+ addAnother() {
3443
+ if (this.showNewProductPicker) {
3444
+ const diologeRef = this.dialog.open(AddOnProductsComponent, {
3445
+ disableClose: true,
3446
+ width: '90%',
3447
+ maxWidth: '900px',
3448
+ autoFocus: false,
3449
+ 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 }
3450
+ })
3451
+ .afterClosed().subscribe(response => {
3452
+ var _a;
3453
+ if ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.status) {
3454
+ if (!this.showCategory) {
3455
+ this.removeColumn('category');
3456
+ }
3457
+ if (!this.showQuantity) {
3458
+ this.removeColumn('quantity');
3459
+ }
3460
+ if (!this.showPrice) {
3461
+ this.removeColumn('price');
3462
+ }
3463
+ if (!this.showSubcategory) {
3464
+ this.removeColumn('subCategory');
3465
+ }
3466
+ localStorage.setItem('selectedProducts', JSON.stringify(response.data.items.selectedProducts));
3467
+ this.dataSourceNew = response.data.items.selectedProducts;
3468
+ this.category = response.data.items.productCategory;
3469
+ this.subCategory = response.data.items.productSubcategory;
3470
+ this.instance.component.defaultValue = response.data.items.selectedProducts;
3471
+ }
3472
+ });
3473
+ }
3474
+ else {
3475
+ this.checkRowsNumber();
3476
+ this.instance.addRow();
3477
+ if (this.dataSource.data.length < this.instance.rows.length) {
3478
+ this.dataSource.data.push({});
3479
+ }
3480
+ this.dataSource.data = [...this.dataSource.data];
3481
+ }
3482
+ }
3017
3483
  checkRowsNumber() {
3018
3484
  while (this.instance.rows.length < this.dataSource.data.length) {
3019
3485
  this.instance.addRow();
@@ -3064,7 +3530,7 @@ class MaterialDataGridComponent extends MaterialNestedComponent {
3064
3530
  super.setValue(value);
3065
3531
  }
3066
3532
  }
3067
- 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 });
3533
+ 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 }], target: i0.ɵɵFactoryTarget.Component });
3068
3534
  MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialDataGridComponent, selector: "mat-formio-datagrid", usesInheritance: true, ngImport: i0, template: `
3069
3535
  <mat-formio-form-field [instance]="instance"
3070
3536
  [componentTemplate]="componentTemplate"
@@ -3083,6 +3549,8 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3083
3549
  {{instance.component.addAnother || 'Add Another'}}
3084
3550
  </button>
3085
3551
  </mat-card-actions>
3552
+ <ng-container *ngIf="!showNewProductPicker">
3553
+ <div class="mat-elevation-z8">
3086
3554
  <table
3087
3555
  mat-table
3088
3556
  [dataSource]="dataSource"
@@ -3091,7 +3559,8 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3091
3559
  cdkDropList
3092
3560
  [cdkDropListData]="dataSource"
3093
3561
  (cdkDropListDropped)="dropTable($event)">
3094
- >
3562
+
3563
+
3095
3564
  <ng-container *ngFor="let column of formColumns" [matColumnDef]="column">
3096
3565
  <th mat-header-cell *matHeaderCellDef>{{ getColumnLabel(columns[column]) }}</th>
3097
3566
  <td mat-cell *matCellDef="let i = index;" [attr.rowIndex]="i" [attr.component]="column">
@@ -3121,6 +3590,51 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3121
3590
  <tr class="datagrid-row" mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
3122
3591
  </div>
3123
3592
  </table>
3593
+ </div>
3594
+ </ng-container>
3595
+
3596
+ <table mat-table [dataSource]="dataSourceNew" class="mat-table" *ngIf="dataSourceNew.length > 0 && showNewProductPicker; else noData" >
3597
+ <!-- Product Name Column -->
3598
+ <ng-container matColumnDef="productName">
3599
+ <th mat-header-cell *matHeaderCellDef> Product Name </th>
3600
+ <td mat-cell *matCellDef="let element"> {{element.text}} </td>
3601
+ </ng-container>
3602
+
3603
+ <!-- Quantity Column -->
3604
+ <ng-container matColumnDef="quantity" *ngIf="showQuantity">
3605
+ <th mat-header-cell *matHeaderCellDef> Quantity </th>
3606
+ <td mat-cell *matCellDef="let element"> {{element.quantity}} </td>
3607
+ </ng-container>
3608
+
3609
+ <!-- Price Column -->
3610
+ <ng-container matColumnDef="price" *ngIf="showPrice">
3611
+ <th mat-header-cell *matHeaderCellDef> Price </th>
3612
+ <td mat-cell *matCellDef="let element"> {{element.price}} </td>
3613
+ </ng-container>
3614
+
3615
+ <!-- Category Column -->
3616
+ <ng-container matColumnDef="category" *ngIf="showCategory">
3617
+ <th mat-header-cell *matHeaderCellDef> Category </th>
3618
+ <td mat-cell *matCellDef="let element"> {{element.category}} </td>
3619
+ </ng-container>
3620
+
3621
+ <!-- Category Column -->
3622
+ <ng-container matColumnDef="subCategory" *ngIf="showSubcategory">
3623
+ <th mat-header-cell *matHeaderCellDef> Sub Category </th>
3624
+ <td mat-cell *matCellDef="let element"> {{element.subCategory}} </td>
3625
+ </ng-container>
3626
+
3627
+ <tr mat-header-row *matHeaderRowDef="displayedColumnsNew"></tr>
3628
+ <tr mat-row *matRowDef="let row; columns: displayedColumnsNew;"></tr>
3629
+ </table>
3630
+ <ng-template #noData>
3631
+ <div class="no-data-message" *ngIf="showNewProductPicker">
3632
+ No product found please add some products.
3633
+ </div>
3634
+ </ng-template>
3635
+
3636
+
3637
+
3124
3638
  </mat-card-content>
3125
3639
  <mat-card-actions *ngIf="instance.hasAddButton() && instance.component.addAnotherPosition !== 'top'">
3126
3640
  <button mat-raised-button color="primary" (click)="addAnother()">
@@ -3136,7 +3650,7 @@ MaterialDataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
3136
3650
  <span [instance]="instance" matFormioLabel></span>
3137
3651
  </mat-card-title>
3138
3652
  </ng-template>
3139
- `, 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"] }] });
3653
+ `, 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: 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"] }] });
3140
3654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialDataGridComponent, decorators: [{
3141
3655
  type: Component,
3142
3656
  args: [{ selector: 'mat-formio-datagrid', template: `
@@ -3157,6 +3671,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3157
3671
  {{instance.component.addAnother || 'Add Another'}}
3158
3672
  </button>
3159
3673
  </mat-card-actions>
3674
+ <ng-container *ngIf="!showNewProductPicker">
3675
+ <div class="mat-elevation-z8">
3160
3676
  <table
3161
3677
  mat-table
3162
3678
  [dataSource]="dataSource"
@@ -3165,7 +3681,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3165
3681
  cdkDropList
3166
3682
  [cdkDropListData]="dataSource"
3167
3683
  (cdkDropListDropped)="dropTable($event)">
3168
- >
3684
+
3685
+
3169
3686
  <ng-container *ngFor="let column of formColumns" [matColumnDef]="column">
3170
3687
  <th mat-header-cell *matHeaderCellDef>{{ getColumnLabel(columns[column]) }}</th>
3171
3688
  <td mat-cell *matCellDef="let i = index;" [attr.rowIndex]="i" [attr.component]="column">
@@ -3195,6 +3712,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3195
3712
  <tr class="datagrid-row" mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
3196
3713
  </div>
3197
3714
  </table>
3715
+ </div>
3716
+ </ng-container>
3717
+
3718
+ <table mat-table [dataSource]="dataSourceNew" class="mat-table" *ngIf="dataSourceNew.length > 0 && showNewProductPicker; else noData" >
3719
+ <!-- Product Name Column -->
3720
+ <ng-container matColumnDef="productName">
3721
+ <th mat-header-cell *matHeaderCellDef> Product Name </th>
3722
+ <td mat-cell *matCellDef="let element"> {{element.text}} </td>
3723
+ </ng-container>
3724
+
3725
+ <!-- Quantity Column -->
3726
+ <ng-container matColumnDef="quantity" *ngIf="showQuantity">
3727
+ <th mat-header-cell *matHeaderCellDef> Quantity </th>
3728
+ <td mat-cell *matCellDef="let element"> {{element.quantity}} </td>
3729
+ </ng-container>
3730
+
3731
+ <!-- Price Column -->
3732
+ <ng-container matColumnDef="price" *ngIf="showPrice">
3733
+ <th mat-header-cell *matHeaderCellDef> Price </th>
3734
+ <td mat-cell *matCellDef="let element"> {{element.price}} </td>
3735
+ </ng-container>
3736
+
3737
+ <!-- Category Column -->
3738
+ <ng-container matColumnDef="category" *ngIf="showCategory">
3739
+ <th mat-header-cell *matHeaderCellDef> Category </th>
3740
+ <td mat-cell *matCellDef="let element"> {{element.category}} </td>
3741
+ </ng-container>
3742
+
3743
+ <!-- Category Column -->
3744
+ <ng-container matColumnDef="subCategory" *ngIf="showSubcategory">
3745
+ <th mat-header-cell *matHeaderCellDef> Sub Category </th>
3746
+ <td mat-cell *matCellDef="let element"> {{element.subCategory}} </td>
3747
+ </ng-container>
3748
+
3749
+ <tr mat-header-row *matHeaderRowDef="displayedColumnsNew"></tr>
3750
+ <tr mat-row *matRowDef="let row; columns: displayedColumnsNew;"></tr>
3751
+ </table>
3752
+ <ng-template #noData>
3753
+ <div class="no-data-message" *ngIf="showNewProductPicker">
3754
+ No product found please add some products.
3755
+ </div>
3756
+ </ng-template>
3757
+
3758
+
3759
+
3198
3760
  </mat-card-content>
3199
3761
  <mat-card-actions *ngIf="instance.hasAddButton() && instance.component.addAnotherPosition !== 'top'">
3200
3762
  <button mat-raised-button color="primary" (click)="addAnother()">
@@ -3210,8 +3772,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3210
3772
  <span [instance]="instance" matFormioLabel></span>
3211
3773
  </mat-card-title>
3212
3774
  </ng-template>
3213
- `, styles: [".datagrid-row{height:auto}\n"] }]
3214
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$2.MatDialog }]; } });
3775
+ `, 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"] }]
3776
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.MatDialog }]; } });
3215
3777
  DataGridComponent.MaterialComponent = MaterialDataGridComponent;
3216
3778
 
3217
3779
  var EditRowState;
@@ -3594,7 +4156,7 @@ MaterialWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
3594
4156
  <button *ngIf="instance.hasButton('submit')" mat-raised-button color="primary" (click)="submit()">Submit</button>
3595
4157
  </div>
3596
4158
  </mat-step>
3597
- </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"] }] });
4159
+ </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"] }] });
3598
4160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialWizardComponent, decorators: [{
3599
4161
  type: Component,
3600
4162
  args: [{ selector: 'mat-formio-wizard', template: `
@@ -3764,7 +4326,7 @@ FormioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
3764
4326
  <div fxLayout="column" fxLayoutGap="1em">
3765
4327
  <ng-template #formio></ng-template>
3766
4328
  </div>
3767
- `, 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"] }] });
4329
+ `, 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"] }] });
3768
4330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormioComponent, decorators: [{
3769
4331
  type: Component,
3770
4332
  args: [{ selector: 'mat-formio', template: `
@@ -3836,7 +4398,8 @@ NgxRenderMaterialFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.
3836
4398
  FormioFormFieldComponent,
3837
4399
  LabelComponent,
3838
4400
  MaskDirective,
3839
- ConfirmationDialogComponent], imports: [CommonModule,
4401
+ ConfirmationDialogComponent,
4402
+ AddOnProductsComponent], imports: [CommonModule,
3840
4403
  FormsModule,
3841
4404
  ReactiveFormsModule,
3842
4405
  MatInputModule,
@@ -3864,7 +4427,9 @@ NgxRenderMaterialFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.
3864
4427
  ScrollingModule,
3865
4428
  NgxMatSelectSearchModule,
3866
4429
  MatDialogModule,
3867
- HttpClientModule], exports: [NgxRenderMaterialFormsComponent,
4430
+ HttpClientModule,
4431
+ MatAutocompleteModule], exports: [MatAutocompleteModule,
4432
+ NgxRenderMaterialFormsComponent,
3868
4433
  FormioComponent,
3869
4434
  MatInputModule,
3870
4435
  MatFormFieldModule,
@@ -3918,7 +4483,9 @@ NgxRenderMaterialFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.
3918
4483
  ScrollingModule,
3919
4484
  NgxMatSelectSearchModule,
3920
4485
  MatDialogModule,
3921
- HttpClientModule, MatInputModule,
4486
+ HttpClientModule,
4487
+ MatAutocompleteModule, MatAutocompleteModule,
4488
+ MatInputModule,
3922
4489
  MatFormFieldModule,
3923
4490
  MatCheckboxModule,
3924
4491
  MatRadioModule,
@@ -3986,7 +4553,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
3986
4553
  FormioFormFieldComponent,
3987
4554
  LabelComponent,
3988
4555
  MaskDirective,
3989
- ConfirmationDialogComponent
4556
+ ConfirmationDialogComponent,
4557
+ AddOnProductsComponent
3990
4558
  ],
3991
4559
  imports: [
3992
4560
  CommonModule,
@@ -4017,9 +4585,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
4017
4585
  ScrollingModule,
4018
4586
  NgxMatSelectSearchModule,
4019
4587
  MatDialogModule,
4020
- HttpClientModule
4588
+ HttpClientModule,
4589
+ MatAutocompleteModule
4021
4590
  ],
4022
4591
  exports: [
4592
+ MatAutocompleteModule,
4023
4593
  NgxRenderMaterialFormsComponent,
4024
4594
  FormioComponent,
4025
4595
  MatInputModule,