Skip to content

Commit bf27b68

Browse files
committed
Fix iOS date range picker double click bug
1 parent 53adc19 commit bf27b68

File tree

4 files changed

+29
-23
lines changed

4 files changed

+29
-23
lines changed

dist/date-range-picker.js

+14-11
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,7 @@
10251025
dp.close = noop;
10261026
dp.destroy = noop;
10271027
dp.updateInput = noop;
1028-
dp.shouldFocusOnRender = false;
1028+
dp.shouldFocusOnRender = opts.shouldFocusOnRender;
10291029

10301030
dp.computeSelectedDate = function () {
10311031
return opts.hilightedDate;
@@ -1305,17 +1305,20 @@
13051305
end.setState({});
13061306
}
13071307

1308-
root.addEventListener('mouseover', function mouseOverDate(e) {
1309-
if (e.target.classList.contains('dp-day')) {
1310-
var dt = new Date(parseInt(e.target.dataset.date));
1311-
var changed = !datesEq(dt, hoverDate);
1312-
1313-
if (changed) {
1314-
hoverDate = dt;
1315-
rerender();
1308+
// Hack to avoid a situation where iOS requires double-clicking to select
1309+
if (!/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
1310+
root.addEventListener('mouseover', function mouseOverDate(e) {
1311+
if (e.target.classList.contains('dp-day')) {
1312+
var dt = new Date(parseInt(e.target.dataset.date));
1313+
var changed = !datesEq(dt, hoverDate);
1314+
1315+
if (changed) {
1316+
hoverDate = dt;
1317+
rerender();
1318+
}
13161319
}
1317-
}
1318-
});
1320+
});
1321+
}
13191322

13201323
function dateClass(dt) {
13211324
var rangeClass = (state.end || hoverDate) &&

dist/tiny-date-picker.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,7 @@
10251025
dp.close = noop;
10261026
dp.destroy = noop;
10271027
dp.updateInput = noop;
1028-
dp.shouldFocusOnRender = false;
1028+
dp.shouldFocusOnRender = opts.shouldFocusOnRender;
10291029

10301030
dp.computeSelectedDate = function () {
10311031
return opts.hilightedDate;

src/date-range-picker.js

+13-10
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,20 @@ export function DateRangePicker(container, opts) {
112112
end.setState({});
113113
}
114114

115-
root.addEventListener('mouseover', function mouseOverDate(e) {
116-
if (e.target.classList.contains('dp-day')) {
117-
var dt = new Date(parseInt(e.target.dataset.date));
118-
var changed = !datesEq(dt, hoverDate);
119-
120-
if (changed) {
121-
hoverDate = dt;
122-
rerender();
115+
// Hack to avoid a situation where iOS requires double-clicking to select
116+
if (!/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
117+
root.addEventListener('mouseover', function mouseOverDate(e) {
118+
if (e.target.classList.contains('dp-day')) {
119+
var dt = new Date(parseInt(e.target.dataset.date));
120+
var changed = !datesEq(dt, hoverDate);
121+
122+
if (changed) {
123+
hoverDate = dt;
124+
rerender();
125+
}
123126
}
124-
}
125-
});
127+
});
128+
}
126129

127130
function dateClass(dt) {
128131
var rangeClass = (state.end || hoverDate) &&

src/mode/permanent-mode.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default function PermanentMode(root, emit, opts) {
1010
dp.close = noop;
1111
dp.destroy = noop;
1212
dp.updateInput = noop;
13-
dp.shouldFocusOnRender = false;
13+
dp.shouldFocusOnRender = opts.shouldFocusOnRender;
1414

1515
dp.computeSelectedDate = function () {
1616
return opts.hilightedDate;

0 commit comments

Comments
 (0)