{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/live-table/src/live-table.props.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.html","../../../../../projects/components/widgets/data/live-table/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-livetable',\n        new Map(\n            [\n                ['class', PROP_STRING],\n                ['formlayout', PROP_STRING],\n                ['name', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n            ]\n        )\n    );\n};\n","import {\n    AfterContentInit,\n    Attribute,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    Inject,\n    Injector,\n    OnDestroy,\n    Optional\n} from '@angular/core';\n\nimport {debounceTime} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\nimport {$appDigest, AbstractDialogService, App, getClonedObject, isDefined, triggerFn} from '@wm/core';\nimport {provideAsWidgetRef, StylableComponent, styler} from '@wm/components/base';\nimport {TableComponent} from '@wm/components/data/table';\n\nimport {registerProps} from './live-table.props';\n\ndeclare var $: any;\n\nconst DEFAULT_CLS = 'app-livegrid';\nconst WIDGET_CONFIG = {widgetType: 'wm-livetable', hostClass: DEFAULT_CLS};\n\n@Component({\n    standalone: true,\n    selector: '[wmLiveTable]',\n    templateUrl: './live-table.component.html',\n    providers: [\n        provideAsWidgetRef(LiveTableComponent)\n    ]\n})\nexport class LiveTableComponent extends StylableComponent implements AfterContentInit, OnDestroy {\n    static initializeProps = registerProps();\n    @ContentChild(TableComponent) table: TableComponent;\n\n    form;\n    isLayoutDialog: boolean;\n\n    private dialogId;\n    private $queue = [];\n    private selectedItemChangeSubscription: Subscription;\n\n    private tableOptions: any = {\n        'multiselect': false,\n        'setGridEditMode': ''\n    };\n\n    constructor(\n        inj: Injector,\n        elRef: ElementRef,\n        cdr: ChangeDetectorRef,\n        private dialogService: AbstractDialogService,\n        private app: App,\n        @Attribute('formlayout') layoutType: string,\n        @Attribute('dialogid') dialogId: string,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        styler(this.nativeElement, this);\n        if (layoutType === 'dialog') {\n            this.isLayoutDialog = true;\n            this.dialogId = dialogId;\n        }\n    }\n\n    ngAfterContentInit() {\n        super.ngAfterContentInit();\n        if (this.table) {\n            this.table._liveTableParent = this;\n            this.table.datagridElement.datatable('option', this.tableOptions);\n\n            this.selectedItemChangeSubscription = this.table.selectedItemChange$\n                .pipe(debounceTime(250))\n                .subscribe(this.onSelectedItemChange.bind(this));\n\n            if (!this.isLayoutDialog && !this.form) {\n                this.table.datagridElement.datatable('option', {\n                    'beforeRowUpdate' : () => {\n                        this.showErrorMessage();\n                    },\n                    'beforeRowDelete' : () => {\n                        this.showErrorMessage();\n                    },\n                    'beforeRowInsert' : () => {\n                        this.showErrorMessage();\n                    }\n                });\n            }\n        }\n    }\n\n    openDialog() {\n        this.dialogService.open(this.dialogId, this.viewParent);\n        $appDigest();\n    }\n\n    closeDialog() {\n        this.dialogService.close(this.dialogId, this.viewParent);\n    }\n\n    focusFirstInput() {\n        const $firstInput = $(this.form.$element).find('input').first();\n        $firstInput.focus();\n        $firstInput.select();\n    }\n\n    onDialogOpen(action) {\n        const attrs: Map<string, string> = this?.form?.formFields?.[0]?.$attrs ?? new Map();\n        const hasDefault = [\"defaultvalue\", \"defaultvalue.bind\"].some(key => attrs.has(key));\n        if (action == 'update'||!!hasDefault) {\n            const firstFormField = $(\"form [wmformfield]\").first();\n            if (firstFormField.find(\"div[widget='autocomplete']\").length != 1 && this?.form?.formFields?.[0]?.widgettype != 'autocomplete') { // prevent focusing first form field if widget is  autocomplete\n                this.focusFirstInput();\n            }\n        } else {\n            this.focusFirstInput();\n        }\n    }\n\n    setFormData(val) {\n        if (!this.form.isDestroyed) {\n            this.form.getWidget().formdata = val;\n        }\n    }\n\n    private _addNewRow() {\n        this.form.isSelected = true;\n        this.setFormData('');\n\n        this.form.new();\n\n        if (this.isLayoutDialog) {\n            this.onDialogOpen('add');\n        }\n    }\n\n    addNewRow() {\n        if (this.isLayoutDialog) {\n            this.openDialog();\n            this.$queue.push(this._addNewRow.bind(this));\n            return;\n        }\n\n       this._addNewRow();\n    }\n\n    private _updateRow(row, eventName) {\n        this.setFormData(row);\n        this.form.isSelected = true;\n        this.form.edit();\n\n        if (this.isLayoutDialog) {\n            this.form.isUpdateMode = (eventName === 'dblclick') ? this.form.updateMode : true;\n            this.onDialogOpen('update');\n        }\n    }\n\n    updateRow(row, eventName) {\n\n        if (this.isLayoutDialog) {\n            this.openDialog();\n            this.$queue.push(this._updateRow.bind(this, row, eventName));\n            return;\n        }\n\n        this._updateRow(row, eventName);\n    }\n\n    onSelectedItemChange(newValue) {\n        let rowData;\n        if (!this.form || !this.table) {\n            return;\n        }\n\n        if (newValue && newValue.length > 0 && !this.form.isSelected) {\n            this.form.isSelected = true;\n        }\n\n        /*Update the rowdata of only that grid form that is associated with the specific grid on which row selection is being performed...\n         * Since both the grid & gridform are associated with the same \"parentgrid\", match the same*/\n        if (newValue && newValue.length > 0) {\n            if (this.table.multiselect) {\n                rowData = newValue[0];\n            } else {\n                rowData = newValue[newValue.length - 1];\n            }\n\n            this.setFormData(getClonedObject(rowData));\n            /*If the form is already in update mode, call the form update function*/\n            if (this.form.isUpdateMode) {\n                this.form.edit();\n            }\n        } else {\n            this.form.isSelected = false;\n            this.setFormData('');\n            this.form.clearData();\n        }\n    }\n\n    onCancel() {\n        this.form.isUpdateMode = false;\n        if (this.isLayoutDialog) {\n            this.closeDialog();\n        }\n    }\n\n    onResult(operation, response, newForm, updateMode) {\n        this.form.isUpdateMode = isDefined(updateMode) ? updateMode : newForm ? true : false;\n        switch (operation) {\n            case 'insert':\n                if (this.table.gridOptions.isNavTypeScrollOrOndemand()) {\n                    this.table.isNewRowInserted = true;\n                }\n                if (newForm) {\n                    /*if new form is to be shown after insert, skip the highlight of the row*/\n                    this.table.gridfirstrowselect = false;\n                    this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response, true);\n                } else {\n                    /*The new row would always be inserted at the end of all existing records. Hence navigate to the last page and highlight the inserted row.*/\n                    this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response);\n                }\n                break;\n            case 'update':\n                /*The updated row would be found in the current page itself. Hence simply highlight the row in the current page.*/\n                if (newForm) {\n                    this.table.gridfirstrowselect = false;\n                    this.table.initiateSelectItem('current', response, true);\n                } else {\n                    this.table.initiateSelectItem('current', response);\n                }\n                break;\n            case 'delete':\n                this.table.onRecordDelete();\n                break;\n        }\n        this.table.updateVariable();\n        if (this.isLayoutDialog) {\n            /*if new form is to be shown after update or insert, don't close the dialog*/\n            if (newForm) {\n                if (operation === 'insert') {\n                    this.form.new();\n                } else if (operation === 'update') {\n                    this.form.edit();\n                }\n            } else {\n                this.closeDialog();\n            }\n        }\n    }\n\n    showErrorMessage() {\n        this.app.notifyApp(this.appLocale.LABEL_ACCESS_DENIED, 'error');\n    }\n\n    // In dialog mode, on form render call the queued functions\n    onFormReady(form) {\n        this.form = form;\n        setTimeout(() => {\n            triggerFn(this.$queue.pop());\n        });\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Unsubscribe from selectedItemChange$\n        if (this.selectedItemChangeSubscription) {\n            this.selectedItemChangeSubscription.unsubscribe();\n            this.selectedItemChangeSubscription = null;\n        }\n\n        // MEMORY LEAK FIX: Clear ContentChild reference\n        this.table = null;\n\n        // MEMORY LEAK FIX: Clear queue array\n        this.$queue = [];\n\n        super.ngOnDestroy();\n    }\n}\n","<ng-content></ng-content>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}