@aquera/nile-elements 0.1.32-beta-1.6 → 0.1.33-beta-1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/nile-menu/nile-menu.cjs.js +1 -1
- package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
- package/dist/nile-menu/nile-menu.esm.js +1 -1
- package/dist/src/nile-menu/nile-menu.js +13 -15
- package/dist/src/nile-menu/nile-menu.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-menu/nile-menu.ts +17 -20
package/package.json
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
"description": "Webcomponent nile-elements following open-wc recommendations",
|
4
4
|
"license": "MIT",
|
5
5
|
"author": "nile-elements",
|
6
|
-
"version": "0.1.
|
6
|
+
"version": "0.1.33-beta-1.0",
|
7
7
|
"main": "dist/src/index.js",
|
8
8
|
"type": "module",
|
9
9
|
"module": "dist/src/index.js",
|
@@ -67,21 +67,26 @@ export class NileMenu extends NileElement {
|
|
67
67
|
}
|
68
68
|
|
69
69
|
private handleKeyDown(event: KeyboardEvent) {
|
70
|
+
const target = event.target as HTMLElement;
|
71
|
+
|
72
|
+
// Only handle keyboard shortcuts if NOT inside input, textarea, or contenteditable
|
73
|
+
if (target.closest('nile-input') || target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {
|
74
|
+
return; // Ignore handling space, arrows, etc.
|
75
|
+
}
|
76
|
+
|
70
77
|
// Make a selection when pressing enter
|
71
78
|
if (event.key === 'Enter') {
|
72
79
|
const item = this.getCurrentItem();
|
73
80
|
event.preventDefault();
|
74
|
-
|
75
|
-
// Simulate a click to support @click handlers on menu items that also work with the keyboard
|
76
81
|
item?.click();
|
77
82
|
}
|
78
83
|
|
79
|
-
// Prevent scrolling when space is pressed
|
84
|
+
// Prevent scrolling when space is pressed (ONLY if not typing)
|
80
85
|
if (event.key === ' ') {
|
81
86
|
event.preventDefault();
|
82
87
|
}
|
83
88
|
|
84
|
-
// Move
|
89
|
+
// Move selection
|
85
90
|
if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
|
86
91
|
const items = this.getAllItems();
|
87
92
|
const activeItem = this.getCurrentItem();
|
@@ -90,28 +95,20 @@ export class NileMenu extends NileElement {
|
|
90
95
|
if (items.length > 0) {
|
91
96
|
event.preventDefault();
|
92
97
|
|
93
|
-
if (event.key === 'ArrowDown')
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
} else if (event.key === 'Home') {
|
98
|
-
index = 0;
|
99
|
-
} else if (event.key === 'End') {
|
100
|
-
index = items.length - 1;
|
101
|
-
}
|
98
|
+
if (event.key === 'ArrowDown') index++;
|
99
|
+
else if (event.key === 'ArrowUp') index--;
|
100
|
+
else if (event.key === 'Home') index = 0;
|
101
|
+
else if (event.key === 'End') index = items.length - 1;
|
102
102
|
|
103
|
-
if (index < 0)
|
104
|
-
|
105
|
-
}
|
106
|
-
if (index > items.length - 1) {
|
107
|
-
index = 0;
|
108
|
-
}
|
103
|
+
if (index < 0) index = items.length - 1;
|
104
|
+
if (index > items.length - 1) index = 0;
|
109
105
|
|
110
106
|
this.setCurrentItem(items[index]);
|
111
107
|
items[index].focus();
|
112
108
|
}
|
113
109
|
}
|
114
|
-
|
110
|
+
}
|
111
|
+
|
115
112
|
|
116
113
|
private handleMouseDown(event: MouseEvent) {
|
117
114
|
const target = event.target as HTMLElement;
|