Skip to content

Commit 5722382

Browse files
committed
refactor: 重构脚本支持 Button 模式切换
1 parent a130ebd commit 5722382

File tree

1 file changed

+45
-20
lines changed

1 file changed

+45
-20
lines changed

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

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ export function init(id, invoke, options) {
88
return
99
}
1010

11+
const popover = createPopover(el, invoke, options);
12+
const input = handlerInput(el, popover);
13+
Data.set(id, { el, input, invoke, options, popover });
14+
}
15+
16+
const createPopover = (el, invoke, options) => {
1117
const popover = Popover.init(el, {
1218
dropdownSelector: el.getAttribute('data-bb-dropdown'),
1319
isDisabled: () => {
@@ -19,27 +25,47 @@ export function init(id, invoke, options) {
1925
}
2026
}
2127
});
28+
return popover;
29+
}
30+
31+
const handlerInput = (el, popover) => {
2232
const input = el.querySelector('.datetime-picker-input');
23-
const dateTimePicker = {
24-
input,
25-
popover
33+
if (input) {
34+
EventHandler.on(input, 'keydown', e => {
35+
if (e.key === 'Tab' && popover.isShown()) {
36+
popover.hide();
37+
}
38+
});
39+
EventHandler.on(input, 'keyup', e => {
40+
if (e.key === 'Escape') {
41+
popover.hide();
42+
input.blur();
43+
}
44+
else if (e.key === 'Tab') {
45+
popover.show();
46+
}
47+
});
2648
}
27-
Data.set(id, dateTimePicker);
49+
return input;
50+
}
2851

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-
});
52+
const disposeInput = input => {
53+
if (input) {
54+
EventHandler.off(input, 'keydown');
55+
EventHandler.off(input, 'keyup');
56+
}
57+
}
58+
59+
export function reset(id) {
60+
const picker = Data.get(id);
61+
if (picker) {
62+
const { el, input, popover, invoke, options } = picker;
63+
disposeInput(input);
64+
Popover.dispose(popover);
65+
66+
picker.popover = createPopover(el, invoke, options);
67+
picker.input = handlerInput(picker.el, picker.popover);
68+
}
4369
}
4470

4571
export function hide(id) {
@@ -55,8 +81,7 @@ export function dispose(id) {
5581

5682
if (data) {
5783
const { input, popover } = data;
58-
EventHandler.off(input, 'keydown');
59-
EventHandler.off(input, 'keyup');
84+
disposeInput(input);
6085
Popover.dispose(popover)
6186
}
6287
}

0 commit comments

Comments
 (0)