{"version":3,"file":"asoftwareworld-form-builder-form-control-calculation.mjs","sources":["../../src/components/form-control/calculation/calculation-dialog.ts","../../src/components/form-control/calculation/calculation-dialog.html","../../src/components/form-control/calculation/calculation.ts","../../src/components/form-control/calculation/calculation.html","../../src/components/form-control/calculation/calculation.module.ts","../../src/components/form-control/calculation/public_api.ts","../../src/components/form-control/calculation/asoftwareworld-form-builder-form-control-calculation.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { Constants } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { CalculationControl, Operation } from './calculation-control';\r\n\r\n@Component({\r\n    selector: 'asw-calculation-dialog',\r\n    templateUrl: './calculation-dialog.html'\r\n})\r\nexport class AswCalculationDialog implements OnInit {\r\n    constants: any = Constants;\r\n    aswEditCalculationForm!: FormGroup;\r\n\r\n    constructor(\r\n        private formBuilder: FormBuilder,\r\n        public dialogRef: MatDialogRef<AswCalculationDialog>,\r\n        @Inject(MAT_DIALOG_DATA) public data: any) { }\r\n\r\n    ngOnInit(): void {\r\n        this.validateFormBuilder();\r\n        this.editProperty(this.data.control);\r\n    }\r\n\r\n    validateFormBuilder(): void {\r\n        this.aswEditCalculationForm = this.formBuilder.group({\r\n            tooltip: [],\r\n            label: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(25)]],\r\n            value: [{ value: '', disabled: true }],\r\n            style: ['', [Validators.required]],\r\n            column: [],\r\n            customClass: [],\r\n            operations: this.formBuilder.array([this.createOperations()]),\r\n        });\r\n    }\r\n\r\n    editProperty(control: CalculationControl): void {\r\n        this.aswEditCalculationForm.patchValue({\r\n            tooltip: control.tooltip,\r\n            label: control.label,\r\n            customClass: control.customClass ?? '',\r\n            value: control.value,\r\n            column: control.column,\r\n            style: control.style,\r\n        });\r\n        const operationFormGroup = control.operations.map((operation: any) => this.formBuilder.group(operation));\r\n        const operationFormArray = this.formBuilder.array(operationFormGroup);\r\n        this.aswEditCalculationForm.setControl('operations', operationFormArray);\r\n    }\r\n\r\n    get operations(): FormArray {\r\n        return this.aswEditCalculationForm.get('operations') as FormArray;\r\n    }\r\n\r\n    createOperations(): FormGroup {\r\n        return this.formBuilder.group({\r\n            id: [],\r\n            label: [],\r\n            value: [],\r\n            operationValue: ['', [Validators.required]],\r\n            control: ['']\r\n        });\r\n    }\r\n\r\n    onNoClick(): void {\r\n        this.dialogRef.close();\r\n    }\r\n\r\n    addNewOperation(): void {\r\n        this.operations.push(this.createOperations());\r\n    }\r\n\r\n    removeOperation(index: number): void {\r\n        this.operations.removeAt(index);\r\n    }\r\n\r\n    onSubmit(): void {\r\n        if (this.aswEditCalculationForm.invalid) {\r\n            return;\r\n        }\r\n        this.aswEditCalculationForm.value.controlType = this.data.control.controlType;\r\n        this.aswEditCalculationForm.value.placeholder = this.data.control.placeholder;\r\n        this.aswEditCalculationForm.value.operations.forEach((operation: Operation) => {\r\n            operation.id = operation.control.guid;\r\n            operation.label = operation.control.label;\r\n            operation.value = operation.control.value;\r\n        });\r\n        this.dialogRef.close(this.aswEditCalculationForm.value);\r\n    }\r\n\r\n    onOperationChange(event: MatSelectChange, operation: any): void {\r\n        if (event.value === 'x̄') {\r\n            operation.controls.label.setErrors(null);\r\n        } else {\r\n            operation.controls.label.setValidators(Validators.required);\r\n        }\r\n    }\r\n\r\n    onOperatorChange(event: MatSelectChange, operator: any): void {\r\n        this.data.numberControls.forEach((operation: any) => {\r\n            if (event.value === operation.label) {\r\n                operator.value.id = operation.guid;\r\n                operator.value.control = operation;\r\n            }\r\n        });\r\n    }\r\n}\r\n","<h4 mat-dialog-title>Edit Property</h4>\r\n<form [formGroup]=\"aswEditCalculationForm\" (ngSubmit)=\"onSubmit()\">\r\n    <mat-dialog-content class=\"mat-typography\">\r\n        <div class=\"asw-full-width\"><br>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Label</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"label\"\r\n                                        placeholder=\"Enter label\"\r\n                                        matTooltip=\"Enter label\"\r\n                                        formControlName=\"label\" required>\r\n                        <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.label\">\r\n                            <mat-error class=\"asw-mat-error\" *ngIf=\"aswEditCalculationForm.get('label')?.hasError(validation.type) && (aswEditCalculationForm.get('label')?.dirty || aswEditCalculationForm.get('label')?.touched)\">\r\n                                {{validation.message}}\r\n                            </mat-error>\r\n                        </mat-error>\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Tooltip</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"tooltip\"\r\n                                        placeholder=\"Enter tooltip\"\r\n                                        matTooltip=\"Enter tooltip\"\r\n                                        formControlName=\"tooltip\">\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Custom CSS Class</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"customClass\"\r\n                                        placeholder=\"Custom CSS Class\"\r\n                                        matTooltip=\"Custom CSS Class\"\r\n                                        formControlName=\"customClass\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Calculation Style</mat-label>\r\n                        <mat-select formControlName=\"style\" matTooltip=\"Select textbox style\">\r\n                            <mat-option value=\"legacy\">Legacy</mat-option>\r\n                            <mat-option value=\"standard\">Standard</mat-option>\r\n                            <mat-option value=\"fill\">Fill</mat-option>\r\n                            <mat-option value=\"outline\">Outline</mat-option>                    \r\n                        </mat-select>\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Value</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"value\"\r\n                                        placeholder=\"Enter value\"\r\n                                        matTooltip=\"Enter value\"\r\n                                        formControlName=\"value\">                        \r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Column Size</mat-label>\r\n                        <mat-select formControlName=\"column\" matTooltip=\"Select column size\">\r\n                            <mat-option *ngFor=\"let column of constants.columns\" [value]=\"column.value\">\r\n                                {{column.label}}\r\n                            </mat-option>\r\n                        </mat-select>\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <ng-container formArrayName=\"operations\">\r\n                <div class=\"row\" \r\n                    *ngFor=\"let op of operations.controls; let index = index; let last=last;\" \r\n                    [formGroupName]=\"index\">\r\n                    <div class=\"col-md-4\" *ngIf=\"index!=0\">\r\n                        <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                            <mat-label>Operation {{index+1}}</mat-label>\r\n                            <mat-select formControlName=\"operationValue\"  \r\n                                (selectionChange)=\"onOperationChange($event, op)\"\r\n                                matTooltip=\"Select operation {{index+1}}\" required>\r\n                                <mat-option *ngFor=\"let operation of constants.operations\" [value]=\"operation.value\">\r\n                                    {{operation.label}}\r\n                                </mat-option>\r\n                            </mat-select>\r\n                            <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.operationValue\">\r\n                                <ng-container class=\"asw-mat-error\" *ngIf=\"operations.controls[index].get('operationValue')?.hasError(validation.type) && (operations.controls[index].get('operationValue')?.dirty || operations.controls[index].get('operationValue')?.touched)\">\r\n                                    {{validation.message}}\r\n                                </ng-container>\r\n                            </mat-error>\r\n                        </mat-form-field>\r\n                    </div>\r\n                    <div class=\"col-md-4\" *ngIf=\"operations.controls[index].value.operationValue != 'x̄'\">\r\n                        <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                            <mat-label>Operator {{index+1}}</mat-label>\r\n                            <mat-select formControlName=\"label\"\r\n                                (selectionChange)=\"onOperatorChange($event, op)\"\r\n                                matTooltip=\"Select operator {{index+1}}\" required>\r\n                                <mat-option *ngFor=\"let control of data.numberControls\" [value]=\"control.label\">\r\n                                    {{control.label}}\r\n                                </mat-option>\r\n                            </mat-select>\r\n                            <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.control\">\r\n                                <mat-error class=\"asw-mat-error\" *ngIf=\"operations.controls[index].get('control')?.hasError(validation.type) && (operations.controls[index].get('control')?.dirty || operations.controls[index].get('control')?.touched)\">\r\n                                    {{validation.message}}\r\n                                </mat-error>\r\n                            </mat-error>\r\n                        </mat-form-field>\r\n                    </div>\r\n                    <div class=\"col-md-2\">\r\n                        <button mat-icon-button *ngIf=\"last\"\r\n                                type=\"button\" \r\n                                matTooltip=\"Add\" \r\n                                [matTooltipPosition]=\"'below'\"\r\n                                (click)=\"addNewOperation()\">\r\n                            <mat-icon>add</mat-icon>\r\n                        </button>\r\n                        <button mat-icon-button *ngIf=\"index != 0\"\r\n                                type=\"button\" \r\n                                matTooltip=\"Delete\" \r\n                                [matTooltipPosition]=\"'below'\" \r\n                                (click)=\"removeOperation(index)\">\r\n                            <mat-icon>delete</mat-icon>\r\n                        </button>\r\n                    </div>\r\n                </div> \r\n            </ng-container> \r\n        </div>\r\n    </mat-dialog-content>\r\n    <mat-dialog-actions align=\"end\">\r\n        <button type=\"button\"\r\n                class=\"btn btn-danger mr-2 me-2 mb-1\"\r\n                (click)=\"onNoClick()\">\r\n            No\r\n        </button>\r\n        <button type=\"submit\"\r\n                class=\"btn btn-primary mb-1\"\r\n                cdkFocusInitial>\r\n            Yes\r\n        </button>\r\n    </mat-dialog-actions>\r\n</form>\r\n\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { Constants, ObjectUtils } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { NumberControl } from '@asoftwareworld/form-builder/form-control/number';\r\nimport { CalculationControl } from './calculation-control';\r\nimport { AswCalculationDialog } from './calculation-dialog';\r\n\r\n@Component({\r\n    selector: 'asw-calculation',\r\n    templateUrl: './calculation.html'\r\n})\r\nexport class AswCalculation {\r\n\r\n    constants: any = Constants;\r\n    /**\r\n     * Calculation control\r\n     */\r\n    @Input() control: CalculationControl | null = null;\r\n    @Input() formControls: any[] = [];\r\n\r\n    /**\r\n     * Calculation control index to help update or delete button from drop area\r\n     */\r\n    @Input() controlIndex!: number;\r\n\r\n    @Input() isPreviewTemplate = false;\r\n\r\n    @Output() calculationUpdateEvent = new EventEmitter<{ control: CalculationControl, index: number }>();\r\n    @Output() calculationDeleteEvent = new EventEmitter<number>();\r\n    @Output() aswModelChange = new EventEmitter<CalculationControl>();\r\n    @Output() duplicateControl = new EventEmitter<CalculationControl>();\r\n\r\n    constructor(public dialog: MatDialog) {\r\n    }\r\n\r\n    deleteCalculationDialog(control: CalculationControl, controlIndex: number): void {\r\n        const dialogRef = this.dialog.open(AswConfirmDialog, {\r\n            width: '350px',\r\n            data: { name: control.controlType, message: this.constants.messages.waringMessage }\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.calculationDeleteEvent.emit(controlIndex);\r\n            }\r\n        });\r\n    }\r\n\r\n    editCalculationDialog(control: CalculationControl, formControls: any[], controlIndex: number): void {\r\n        const numberControls = formControls.filter(x => x.controlType === 'number');\r\n        if (!numberControls.length) {\r\n            control.operations = [];\r\n        }\r\n        if (!control.operations.length) {\r\n            numberControls.forEach((x, index) => {\r\n                control.operations.push(this.setControloperations(x, index));\r\n            });\r\n        } else {\r\n            control.operations.map((operation, index) => {\r\n                const numberControl = numberControls.find(element => element.guid === operation.id);\r\n                if (numberControl) {\r\n                    const updatedOperation = {\r\n                        id: numberControl.guid,\r\n                        label: numberControl.label,\r\n                        value: numberControl.value,\r\n                        operationValue: operation.operationValue,\r\n                        control: numberControl\r\n                    };\r\n                    control.operations.splice(index, 1, updatedOperation);\r\n                }\r\n            });\r\n        }\r\n\r\n        const dialogRef = this.dialog.open(AswCalculationDialog, {\r\n            disableClose: true,\r\n            width: '80%',\r\n            minWidth: '70vw',\r\n            data: { control, numberControls }\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                result.value = ObjectUtils.calculateValue(result.operations).toString();\r\n                this.calculationUpdateEvent.emit({ control: result, index: controlIndex });\r\n            }\r\n        });\r\n    }\r\n\r\n    private setControloperations(control: NumberControl, index: number): any {\r\n        const operation = {\r\n            id: control.guid,\r\n            label: control.label,\r\n            value: control.value,\r\n            operationValue: index === 0 ? '' : '+',\r\n            control\r\n        };\r\n        return operation;\r\n    }\r\n\r\n    onChange(control: CalculationControl): void {\r\n        this.aswModelChange.emit(control);\r\n    }\r\n\r\n    duplicateCalculationControl(control: CalculationControl): void {\r\n        this.duplicateControl.emit(control);\r\n    }\r\n}\r\n","<ng-container *ngIf=\"control as control\">\r\n    <mat-form-field [appearance]=\"control.style\" class=\"asw-mat-form-field {{control.customClass}}\">\r\n        <mat-label>{{control.label}}</mat-label>\r\n        <input matInput type=\"text\"\r\n                        [placeholder]=\"control.placeholder\"\r\n                        [(ngModel)]=\"control.value\"\r\n                        #input=\"ngModel\"\r\n                        (ngModelChange)=\"onChange(control)\"\r\n                        [matTooltip]=\"control.tooltip\" [disabled]=\"true\">\r\n        <mat-error class=\"asw-mat-error\" *ngIf=\"input.invalid && (input.dirty || input.touched)\">\r\n            <mat-error class=\"asw-mat-error\" *ngIf=\"input?.errors?.required\">\r\n                {{control.label}} is required\r\n            </mat-error>\r\n        </mat-error>\r\n    </mat-form-field>\r\n    <ng-template [ngIf]=\"isPreviewTemplate\">\r\n        <div class=\"row mb-2\">\r\n            <div class=\"col-md-12\">\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Duplicate\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"duplicateCalculationControl(control)\">\r\n                    <mat-icon>content_copy</mat-icon>\r\n                </button>\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Edit\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"editCalculationDialog(control, formControls, controlIndex)\">\r\n                    <mat-icon>edit</mat-icon>\r\n                </button>\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Delete\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"deleteCalculationDialog(control, controlIndex)\">\r\n                    <mat-icon>delete</mat-icon>\r\n                </button>\r\n            </div>                                            \r\n        </div>\r\n    </ng-template>\r\n</ng-container>","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\n\r\nimport { AswCalculation } from './calculation';\r\nimport { AswCalculationDialog } from './calculation-dialog';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MatInputModule,\r\n        MatSelectModule,\r\n        MatDialogModule,\r\n        MatSlideToggleModule,\r\n        MatTooltipModule,\r\n        MatDividerModule,\r\n        MatIconModule,\r\n        AswConfirmDialogModule,\r\n        MatButtonModule\r\n    ],\r\n    declarations: [\r\n        AswCalculation,\r\n        AswCalculationDialog\r\n    ],\r\n    exports: [\r\n        AswCalculation,\r\n        AswCalculationDialog\r\n    ]\r\n})\r\nexport class AswCalculationModule { }\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nexport * from './calculation';\r\nexport * from './calculation-dialog';\r\nexport * from './calculation-control';\r\nexport * from './calculation.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i6","i7","i8"],"mappings":"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"}