Skip to content

Commit

Permalink
fix: focus editor only after it is ready (#7235) (#7291)
Browse files Browse the repository at this point in the history
  • Loading branch information
vaadin-bot committed Mar 29, 2024
1 parent a7f23ac commit 60f1c0e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
7 changes: 5 additions & 2 deletions packages/grid-pro/src/vaadin-grid-pro-edit-column-mixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,11 @@ export const GridProEditColumnMixin = (superClass) =>
this._setEditorValue(editor, get(this.path, model.item));
editor._grid = this._grid;

this._focusEditor(editor);
requestAnimationFrame(() => this._focusEditor(editor));
if (editor.updateComplete) {
editor.updateComplete.then(() => this._focusEditor(editor));
} else {
this._focusEditor(editor);
}
}

/**
Expand Down
15 changes: 14 additions & 1 deletion packages/grid-pro/test/edit-column-type.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import {
fixtureSync,
focusin,
focusout,
isFirefox,
keyDownChar,
nextFrame,
nextRender,
space,
} from '@vaadin/testing-helpers';
import { sendKeys } from '@web/test-runner-commands';
import sinon from 'sinon';
import { createItems, dblclick, flushGrid, getCellEditor, getContainerCell, onceOpened } from './helpers.js';

Expand Down Expand Up @@ -97,8 +99,9 @@ describe('edit column editor type', () => {
expect(checkbox.checked).to.be.equal(grid.items[0].married);
});

it('should set focus-ring on the checkbox', () => {
it('should set focus-ring on the checkbox', async () => {
dblclick(cell._content);
await nextFrame();
checkbox = column._getEditorComponent(cell);
expect(checkbox.hasAttribute('focus-ring')).to.be.true;
});
Expand Down Expand Up @@ -362,5 +365,15 @@ describe('edit column editor type', () => {
editor = column._getEditorComponent(cell);
expect(editor).to.be.not.ok;
});

(isFirefox ? it.skip : it)('should not start edit with first character selected', async () => {
column = grid.querySelector('[path="name"]');
cell = getContainerCell(grid.$.items, 0, columns.indexOf(column));
cell.focus();
await sendKeys({ down: 'a' });
await sendKeys({ down: 'b' });
await sendKeys({ down: 'Enter' });
expect(cell._content.textContent).to.equal('ab');
});
});
});

0 comments on commit 60f1c0e

Please sign in to comment.