Skip to content

Commit 83d9d7c

Browse files
ENGCOM-6331: Added keyboard navigation for Adobe Stock image previews #25611
2 parents 94dc6f5 + 4af2c9d commit 83d9d7c

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

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

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
*/
55
define([
66
'jquery',
7-
'Magento_Ui/js/grid/columns/column'
8-
], function ($, Column) {
7+
'Magento_Ui/js/grid/columns/column',
8+
'Magento_Ui/js/lib/key-codes'
9+
], function ($, Column, keyCodes) {
910
'use strict';
1011

1112
return Column.extend({
@@ -38,6 +39,18 @@ define([
3839
}
3940
},
4041

42+
/**
43+
* Initialize image preview component
44+
*
45+
* @returns {Object}
46+
*/
47+
initialize: function () {
48+
this._super();
49+
$(document).on('keydown', this.handleKeyDown.bind(this));
50+
51+
return this;
52+
},
53+
4154
/**
4255
* Init observable variables
4356
* @return {Object}
@@ -60,8 +73,13 @@ define([
6073
* @param {Object} record
6174
*/
6275
next: function (record) {
63-
var recordToShow = this.getRecord(record._rowIndex + 1);
76+
var recordToShow;
77+
78+
if (record._rowIndex + 1 === this.masonry().rows().length) {
79+
return;
80+
}
6481

82+
recordToShow = this.getRecord(record._rowIndex + 1);
6583
recordToShow.rowNumber = record.lastInRow ? record.rowNumber + 1 : record.rowNumber;
6684
this.show(recordToShow);
6785
},
@@ -72,7 +90,12 @@ define([
7290
* @param {Object} record
7391
*/
7492
prev: function (record) {
75-
var recordToShow = this.getRecord(record._rowIndex - 1);
93+
var recordToShow;
94+
95+
if (record._rowIndex === 0) {
96+
return;
97+
}
98+
recordToShow = this.getRecord(record._rowIndex - 1);
7699

77100
recordToShow.rowNumber = record.firstInRow ? record.rowNumber - 1 : record.rowNumber;
78101
this.show(recordToShow);
@@ -206,6 +229,23 @@ define([
206229
block: 'center',
207230
inline: 'nearest'
208231
});
232+
},
233+
234+
/**
235+
* Handle keyboard navigation for image preview
236+
*
237+
* @param {Object} e
238+
*/
239+
handleKeyDown: function (e) {
240+
var key = keyCodes[e.keyCode];
241+
242+
if (this.visibleRecord() !== null) {
243+
if (key === 'pageLeftKey') {
244+
this.prev(this.displayedRecord());
245+
} else if (key === 'pageRightKey') {
246+
this.next(this.displayedRecord());
247+
}
248+
}
209249
}
210250
});
211251
});

0 commit comments

Comments
 (0)