Skip to content

Commit b83f1fd

Browse files
authored
feat(DateTimePicker): support Tab/Esc keyboard event (#6848)
* fix(DatetimePicker): support tab/esc keyboard * chore: bump version 9.11.1-beta06
1 parent 46daf43 commit b83f1fd

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.11.1-beta05</Version>
4+
<Version>9.11.1-beta06</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Data from "../../modules/data.js"
2+
import EventHandler from "../../modules/event-handler.js"
23
import Popover from "../../modules/base-popover.js"
34

45
export function init(id, invoke, options) {
@@ -18,11 +19,27 @@ export function init(id, invoke, options) {
1819
}
1920
}
2021
});
22+
const input = el.querySelector('.datetime-picker-input');
2123
const dateTimePicker = {
22-
el,
24+
input,
2325
popover
2426
}
25-
Data.set(id, dateTimePicker)
27+
Data.set(id, dateTimePicker);
28+
29+
EventHandler.on(input, 'keydown', e => {
30+
if (e.key === 'Tab' && popover.isShown()) {
31+
popover.hide();
32+
}
33+
});
34+
EventHandler.on(input, 'keyup', e => {
35+
if (e.key === 'Escape') {
36+
popover.hide();
37+
input.blur();
38+
}
39+
else if (e.key === 'Tab') {
40+
popover.show();
41+
}
42+
});
2643
}
2744

2845
export function hide(id) {
@@ -37,6 +54,9 @@ export function dispose(id) {
3754
Data.remove(id)
3855

3956
if (data) {
40-
Popover.dispose(data.popover)
57+
const { input, popover } = data;
58+
EventHandler.off(input, 'keydown');
59+
EventHandler.off(input, 'keyup');
60+
Popover.dispose(popover)
4161
}
4262
}

0 commit comments

Comments
 (0)