Skip to content

Commit d328952

Browse files
authored
ENGCOM-6692: Fixed issue when the preview images navigation is triggered by moving the input filed cursor using arrow keys #25991
2 parents 26df70f + b1b1315 commit d328952

File tree

3 files changed

+53
-6
lines changed

3 files changed

+53
-6
lines changed

app/code/Magento/Ui/view/base/web/js/grid/columns/image-preview.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ define([
239239
handleKeyDown: function (e) {
240240
var key = keyCodes[e.keyCode];
241241

242-
if (this.visibleRecord() !== null) {
242+
if (this.visibleRecord() !== null && document.activeElement.tagName !== 'INPUT') {
243243
if (key === 'pageLeftKey') {
244244
this.prev(this.displayedRecord());
245245
} else if (key === 'pageRightKey') {

app/code/Magento/Ui/view/base/web/templates/grid/masonry.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* See COPYING.txt for license details.
55
*/
66
-->
7-
<div data-role="grid-wrapper" class="masonry-image-grid" attr="'data-id': containerId">
7+
<div data-role="grid-wrapper" class="masonry-image-grid" attr="'data-id': containerId" tabindex="0">
88
<div class="masonry-image-column" repeat="foreach: rows, item: '$row'">
99
<div outerfasteach="data: getVisible(), as: '$col'" template="getBody()"/>
1010
</div>

dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/image-preview.test.js

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,26 @@ define([
1313

1414
describe('Ui/js/grid/columns/image-preview', function () {
1515
var record = {
16-
_rowIndex: 1,
17-
rowNumber: 1
18-
},
19-
imagePreview;
16+
_rowIndex: 1,
17+
rowNumber: 1
18+
},
19+
imagePreview,
20+
recordMock = {
21+
_rowIndex: 2
22+
},
23+
secondRecordMock = {
24+
_rowIndex: 1,
25+
rowNumber: 1
26+
},
27+
elementMock = {
28+
keyCode: 37
29+
},
30+
masonryMock = {
31+
shows: jasmine.createSpy().and.returnValue([]),
32+
rows: jasmine.createSpy().and.returnValue({
33+
1: secondRecordMock
34+
})
35+
};
2036

2137
beforeEach(function () {
2238
imagePreview = new Preview();
@@ -46,5 +62,36 @@ define([
4662
});
4763

4864
});
65+
66+
describe('handleKeyDown method', function () {
67+
68+
it('verify record changed on key down', function () {
69+
var imageMock = document.createElement('img'),
70+
originMock = $.fn.get;
71+
72+
spyOn($.fn, 'get').and.returnValue(imageMock);
73+
imagePreview.visibleRecord = jasmine.createSpy().and.returnValue(2);
74+
imagePreview.displayedRecord = ko.observable();
75+
imagePreview.displayedRecord(recordMock);
76+
imagePreview.masonry = jasmine.createSpy().and.returnValue(masonryMock);
77+
imagePreview.handleKeyDown(elementMock);
78+
expect(imagePreview.displayedRecord()._rowIndex).toBe(secondRecordMock._rowIndex);
79+
80+
$.fn.get = originMock;
81+
});
82+
83+
it('verify record not changed on key down when active element input', function () {
84+
var input = $('<input id=\'input-fixture\'/>');
85+
86+
$(document.body).append(input);
87+
input.focus();
88+
imagePreview.visibleRecord = jasmine.createSpy().and.returnValue(1);
89+
imagePreview.displayedRecord = ko.observable(1);
90+
imagePreview.handleKeyDown(elementMock);
91+
expect(imagePreview.displayedRecord()).toBe(1);
92+
93+
$('#input-fixture').remove();
94+
});
95+
});
4996
});
5097
});

0 commit comments

Comments
 (0)