Skip to content

Commit 2c2284e

Browse files
committed
menu.List: add support for the enter key #4606
1 parent 594ca2e commit 2c2284e

1 file changed

Lines changed: 51 additions & 10 deletions

File tree

src/menu/List.mjs

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,6 @@ class List extends BaseList {
304304
}
305305
}
306306

307-
/**
308-
* @param {Object} data
309-
*/
310-
onKeyDownEscape(data) {
311-
this.floating && this.unmount()
312-
}
313-
314307
/**
315308
* @param {Object} data
316309
* @param {Object[]} data.path
@@ -349,15 +342,47 @@ class List extends BaseList {
349342
onItemClick(node, data) {
350343
super.onItemClick(node, data);
351344

352-
let me = this;
345+
let me = this,
346+
record = data.record;
353347

354-
data.record.handler?.call(me, data);
348+
record.handler?.call(me, record);
355349

356-
if (me.hideOnLeafItemClick && !data.record.items) {
350+
if (me.hideOnLeafItemClick && !record.items) {
357351
me.unmount()
358352
}
359353
}
360354

355+
/**
356+
* @param {String} nodeId
357+
*/
358+
onKeyDownEnter(nodeId) {
359+
let me = this,
360+
recordId = me.getItemRecordId(nodeId),
361+
record = me.store.get(recordId),
362+
submenu;
363+
364+
record.handler?.call(me, record);
365+
366+
if (me.hideOnLeafItemClick && !record.items) {
367+
me.unmount()
368+
}
369+
370+
if (record.items) {
371+
submenu = me.subMenuMap[me.getMenuMapId(recordId)];
372+
373+
if (submenu) {
374+
me.toggleSubMenu(nodeId, record)
375+
}
376+
}
377+
}
378+
379+
/**
380+
* @param {Object} data
381+
*/
382+
onKeyDownEscape(data) {
383+
this.floating && this.unmount()
384+
}
385+
361386
/**
362387
* @param {String[]} items
363388
*/
@@ -422,6 +447,22 @@ class List extends BaseList {
422447
});
423448
}
424449

450+
/**
451+
* @param {String} nodeId
452+
* @param {Object} record
453+
*/
454+
toggleSubMenu(nodeId, record) {
455+
let me = this,
456+
recordId = record[me.getKeyProperty()],
457+
submenu = me.subMenuMap[me.getMenuMapId(recordId)];
458+
459+
if (!submenu?.mounted) {
460+
me.showSubMenu(nodeId, record)
461+
} else {
462+
me.hideSubMenu()
463+
}
464+
}
465+
425466
/**
426467
*
427468
*/

0 commit comments

Comments
 (0)