diff --git a/src/components/datatable/BodyCell.vue b/src/components/datatable/BodyCell.vue index 2f7580202..bc7de26ee 100755 --- a/src/components/datatable/BodyCell.vue +++ b/src/components/datatable/BodyCell.vue @@ -113,6 +113,11 @@ export default { if (this.columnProp('frozen')) { this.updateStickyPosition(); } + + if (this.d_editing && (this.editMode === 'cell' || (this.editMode === 'row' && this.columnProp('rowEditor')))) { + const focusableEl = DomHandler.getFirstFocusableElement(this.$el); + focusableEl && focusableEl.focus(); + } }, beforeUnmount() { if (this.overlayEventListener) { diff --git a/src/components/utils/DomHandler.js b/src/components/utils/DomHandler.js index ba898bdb1..775515494 100755 --- a/src/components/utils/DomHandler.js +++ b/src/components/utils/DomHandler.js @@ -470,6 +470,11 @@ export default { return visibleFocusableElements; }, + getFirstFocusableElement(element) { + const focusableElements = this.getFocusableElements(element); + return focusableElements.length > 0 ? focusableElements[0] : null; + }, + isClickable(element) { const targetNode = element.nodeName; const parentNode = element.parentElement && element.parentElement.nodeName; diff --git a/src/components/utils/Utils.d.ts b/src/components/utils/Utils.d.ts index 87f5c8f4e..24534cc30 100644 --- a/src/components/utils/Utils.d.ts +++ b/src/components/utils/Utils.d.ts @@ -43,6 +43,7 @@ export declare class DomHandler { static isVisible(el: HTMLElement): boolean; static invokeElementMethod(el: HTMLElement, methodName: string, args: any): void; static getFocusableElements(el: HTMLElement): any[]; + static getFirstFocusableElement(el: HTMLElement): any; static isClickable(el: HTMLElement): boolean; static applyStyle(el: HTMLElement, style: any): void; static isIOS(): boolean;