{"version":3,"file":"asoftwareworld-form-builder-form-control-autocomplete.mjs","sources":["../../src/components/form-control/autocomplete/autocomplete.ts","../../src/components/form-control/autocomplete/autocomplete.html","../../src/components/form-control/autocomplete/autocomplete.module.ts","../../src/components/form-control/autocomplete/public_api.ts","../../src/components/form-control/autocomplete/asoftwareworld-form-builder-form-control-autocomplete.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, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { AswSingleSelectDialog, Constants, ControlOption } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { AutoCompleteControl } from './autocomplete-control';\r\n\r\n@Component({\r\n    selector: 'asw-autocomplete',\r\n    templateUrl: './autocomplete.html'\r\n})\r\nexport class AswAutocomplete implements OnInit {\r\n    constants: any = Constants;\r\n    filteredOptions!: ControlOption[] | undefined;\r\n\r\n    /**\r\n     * Autocomplete control\r\n     */\r\n    @Input() control: AutoCompleteControl | null = null;\r\n\r\n    /**\r\n     * Autocomplete control index to help update or delete button from drop area\r\n     */\r\n    @Input() controlIndex!: number;\r\n    @Input() isPreviewTemplate = false;\r\n\r\n    @Output() autocompleteUpdateEvent = new EventEmitter<{ control: AutoCompleteControl, index: number }>();\r\n    @Output() autocompleteDeleteEvent = new EventEmitter<number>();\r\n    @Output() selectionChange = new EventEmitter<AutoCompleteControl>();\r\n    @Output() duplicateControl = new EventEmitter<AutoCompleteControl>();\r\n\r\n    constructor(public dialog: MatDialog) { }\r\n\r\n    ngOnInit(): void {\r\n        this.filteredOptions = this.control?.options;\r\n    }\r\n\r\n    filter(control: AutoCompleteControl): ControlOption[] | undefined {\r\n        if (control.value) {\r\n            const filterValue = control.value.toLowerCase();\r\n            control.options.forEach(element => {\r\n                element.isChecked = control.value === element.key ? true : false;\r\n            });\r\n            this.selectionChange.emit(control);\r\n            return this.control?.options.filter(option => option.value.toLowerCase().startsWith(filterValue));\r\n        }\r\n        return this.control?.options;\r\n    }\r\n\r\n    /**\r\n     * Delete autocomplete control based on control index\r\n     * @param control autocomplete control items\r\n     * @param controlIndex autocomplete control index\r\n     */\r\n    deleteAutocompleteDialog(control: AutoCompleteControl, 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.autocompleteDeleteEvent.emit(controlIndex);\r\n            }\r\n        });\r\n    }\r\n\r\n    editAutocompleteDialog(control: AutoCompleteControl, controlIndex: number): void {\r\n        control.options.forEach(element => {\r\n            element.isChecked = control.value === element.key ? true : false;\r\n        });\r\n        const dialogRef = this.dialog.open(AswSingleSelectDialog, {\r\n            disableClose: true,\r\n            width: '80%',\r\n            minWidth: '70vw',\r\n            data: control\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.autocompleteUpdateEvent.emit({ control: result, index: controlIndex });\r\n            }\r\n        });\r\n    }\r\n\r\n    duplicateAutocompleteControl(control: AutoCompleteControl): 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 [placeholder]=\"control.label\"\r\n               [id]=\"control.id\"\r\n               [matAutocomplete]=\"auto\"\r\n               matInput\r\n               [(ngModel)]=\"control.value\"                    \r\n                #input=\"ngModel\"\r\n               [matTooltip]=\"control.tooltip\"\r\n               (ngModelChange)=\"filteredOptions = filter(control)\"\r\n               [required]=\"control.isRequired\"\r\n               [disabled]=\"control.isDisabled ? true : false\">\r\n        <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n            <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.key\">\r\n                {{option.value}}\r\n            </mat-option>\r\n        </mat-autocomplete>\r\n        <mat-error class=\"asw-mat-error\" *ngIf=\"input.invalid && (input.dirty || input.touched)\">\r\n            <ng-container *ngIf=\"input?.errors?.required\">\r\n                {{control.label}} is required\r\n            </ng-container>\r\n        </mat-error>\r\n    </mat-form-field>\r\n    <ng-template [ngIf]=\"isPreviewTemplate\">\r\n        <div class=\"row\">\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)=\"duplicateAutocompleteControl(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)=\"editAutocompleteDialog(control, 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)=\"deleteAutocompleteDialog(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 { MatAutocompleteModule } from '@angular/material/autocomplete';\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 { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { AswSharedDialogModule } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { AswAutocomplete } from './autocomplete';\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        MatDividerModule,\r\n        MatTooltipModule,\r\n        MatRadioModule,\r\n        MatIconModule,\r\n        MatAutocompleteModule,\r\n        AswConfirmDialogModule,\r\n        MatButtonModule,\r\n        AswSharedDialogModule\r\n    ],\r\n    declarations: [\r\n        AswAutocomplete\r\n    ],\r\n    exports: [\r\n        AswAutocomplete\r\n    ]\r\n})\r\nexport class AswAutocompleteModule { }\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 './autocomplete';\r\nexport * from './autocomplete-control';\r\nexport * from './autocomplete.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAMG;MAYU,eAAe,CAAA;AAoBL,IAAA,MAAA;IAnBnB,SAAS,GAAQ,SAAS;AAC1B,IAAA,eAAe;AAEf;;AAEG;IACM,OAAO,GAA+B,IAAI;AAEnD;;AAEG;AACM,IAAA,YAAY;IACZ,iBAAiB,GAAG,KAAK;AAExB,IAAA,uBAAuB,GAAG,IAAI,YAAY,EAAmD;AAC7F,IAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU;AACpD,IAAA,eAAe,GAAG,IAAI,YAAY,EAAuB;AACzD,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAuB;AAEpE,IAAA,WAAA,CAAmB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAEzB,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;;AAGhD,IAAA,MAAM,CAAC,OAA4B,EAAA;AAC/B,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAC/C,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAG;AAC9B,gBAAA,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK;AACpE,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;;AAErG,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO;;AAGhC;;;;AAIG;IACH,wBAAwB,CAAC,OAA4B,EAAE,YAAoB,EAAA;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACjD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa;AACpF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AACvC,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC;;AAEvD,SAAC,CAAC;;IAGN,sBAAsB,CAAC,OAA4B,EAAE,YAAoB,EAAA;AACrE,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAG;AAC9B,YAAA,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK;AACpE,SAAC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACtD,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AACvC,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAEnF,SAAC,CAAC;;AAGN,IAAA,4BAA4B,CAAC,OAA4B,EAAA;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;;wGAzE9B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,6VClB5B,6jFAmDe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDjCF,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,6jFAAA,EAAA;8EAUnB,OAAO,EAAA,CAAA;sBAAf;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAES,uBAAuB,EAAA,CAAA;sBAAhC;gBACS,uBAAuB,EAAA,CAAA;sBAAhC;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;;;AEpCL;;;;;;AAMG;MA6CU,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAArB,qBAAqB,EAAA,YAAA,EAAA,CAN1B,eAAe,CAAA,EAAA,OAAA,EAAA,CAjBf,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;AACf,YAAA,qBAAqB,aAMrB,eAAe,CAAA,EAAA,CAAA;AAGV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAvB1B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,qBAAqB,CAAA,EAAA,CAAA;;4FAShB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,eAAe;wBACf,eAAe;wBACf,oBAAoB;wBACpB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,qBAAqB;wBACrB,sBAAsB;wBACtB,eAAe;wBACf;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;AClDD;;;;;;AAMG;;ACNH;;AAEG;;;;"}