arengibook 3.1.4-datepicker → 3.1.6-datepicker
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/dist/index.js +92 -44
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -13257,16 +13257,13 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13257
13257
|
var skipYearReposition = useRef(false);
|
|
13258
13258
|
var inputRef = useRef(null);
|
|
13259
13259
|
var calendarRef = useRef(null);
|
|
13260
|
-
var _useState13 = useState(
|
|
13260
|
+
var _useState13 = useState(false),
|
|
13261
13261
|
_useState14 = _slicedToArray$9(_useState13, 2);
|
|
13262
13262
|
_useState14[0];
|
|
13263
13263
|
_useState14[1];
|
|
13264
|
-
var
|
|
13265
|
-
_useState16 = _slicedToArray$9(_useState15, 2),
|
|
13266
|
-
isScrolling = _useState16[0];
|
|
13267
|
-
_useState16[1];
|
|
13268
|
-
var wheelCooldown = false;
|
|
13264
|
+
var wheelCooldown = useRef(false);
|
|
13269
13265
|
var scrollListenersRef = useRef([]);
|
|
13266
|
+
var panelWheelListenerRef = useRef(null);
|
|
13270
13267
|
var panelVisibleRef = useRef(false);
|
|
13271
13268
|
useEffect(function () {
|
|
13272
13269
|
setStory(datePickerStorie(dateFormat));
|
|
@@ -13400,17 +13397,20 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13400
13397
|
}
|
|
13401
13398
|
}, [valeur]);
|
|
13402
13399
|
addLocale(localLanguage, LOCALES[localLanguage]);
|
|
13400
|
+
var changeYear = function changeYear(delta) {
|
|
13401
|
+
setViewDate(function (prev) {
|
|
13402
|
+
var base = prev || new Date();
|
|
13403
|
+
var next = new Date(base.getTime());
|
|
13404
|
+
next.setFullYear(next.getFullYear() + delta);
|
|
13405
|
+
return next;
|
|
13406
|
+
});
|
|
13407
|
+
};
|
|
13403
13408
|
var headerTemplate = function headerTemplate() {
|
|
13404
13409
|
var current = viewDate || new Date();
|
|
13405
13410
|
var monthIndex = current.getMonth();
|
|
13406
13411
|
var year = current.getFullYear();
|
|
13407
13412
|
var localeConfig = LOCALES[localLanguage] || {};
|
|
13408
13413
|
var monthNames = localeConfig.monthNames || ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];
|
|
13409
|
-
Array.from({
|
|
13410
|
-
length: 21
|
|
13411
|
-
}, function (_, i) {
|
|
13412
|
-
return year - 10 + i;
|
|
13413
|
-
});
|
|
13414
13414
|
var changeMonth = function changeMonth(delta) {
|
|
13415
13415
|
setViewDate(function (prev) {
|
|
13416
13416
|
var base = prev || new Date();
|
|
@@ -13419,40 +13419,9 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13419
13419
|
return next;
|
|
13420
13420
|
});
|
|
13421
13421
|
};
|
|
13422
|
-
var changeYear = function changeYear(delta) {
|
|
13423
|
-
setViewDate(function (prev) {
|
|
13424
|
-
var base = prev || new Date();
|
|
13425
|
-
var next = new Date(base.getTime());
|
|
13426
|
-
next.setFullYear(next.getFullYear() + delta);
|
|
13427
|
-
return next;
|
|
13428
|
-
});
|
|
13429
|
-
};
|
|
13430
13422
|
var handleArrowMouseDown = function handleArrowMouseDown(delta) {
|
|
13431
|
-
changeYear(delta);
|
|
13423
|
+
changeYear(delta);
|
|
13432
13424
|
};
|
|
13433
|
-
useEffect(function () {
|
|
13434
|
-
var yearContainerSingle = document.querySelector('.dp-year-container');
|
|
13435
|
-
var handleWheel = function handleWheel(e) {
|
|
13436
|
-
e.preventDefault();
|
|
13437
|
-
if (wheelCooldown) return;
|
|
13438
|
-
var delta = Math.sign(e.deltaY);
|
|
13439
|
-
changeYear(delta);
|
|
13440
|
-
wheelCooldown = true;
|
|
13441
|
-
setTimeout(function () {
|
|
13442
|
-
wheelCooldown = false;
|
|
13443
|
-
}, 120); // durée idéale après tests
|
|
13444
|
-
};
|
|
13445
|
-
if (yearContainerSingle) {
|
|
13446
|
-
yearContainerSingle.addEventListener('wheel', handleWheel, {
|
|
13447
|
-
passive: false
|
|
13448
|
-
});
|
|
13449
|
-
}
|
|
13450
|
-
return function () {
|
|
13451
|
-
if (yearContainerSingle) {
|
|
13452
|
-
yearContainerSingle.removeEventListener('wheel', handleWheel);
|
|
13453
|
-
}
|
|
13454
|
-
};
|
|
13455
|
-
}, [changeYear, isScrolling]);
|
|
13456
13425
|
var setMonthFromList = function setMonthFromList(index) {
|
|
13457
13426
|
setViewDate(function (prev) {
|
|
13458
13427
|
var base = prev || new Date();
|
|
@@ -13735,11 +13704,55 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13735
13704
|
var _calendarRef$current2;
|
|
13736
13705
|
var currentOverlay = (_calendarRef$current2 = calendarRef.current) === null || _calendarRef$current2 === void 0 ? void 0 : _calendarRef$current2.getOverlay();
|
|
13737
13706
|
if (!currentOverlay) return;
|
|
13707
|
+
|
|
13708
|
+
// Attache un listener wheel sur tout le panel overlay.
|
|
13709
|
+
// En mode mois/année ou année seule (.dp-monthyear-header présent),
|
|
13710
|
+
// bloque toute propagation du wheel vers les conteneurs parents
|
|
13711
|
+
// (popups, pages) et délègue le scroll d'années si la cible est
|
|
13712
|
+
// dans .dp-year-container.
|
|
13713
|
+
var panelWheelHandler = function panelWheelHandler(e) {
|
|
13714
|
+
var isMonthYearMode = currentOverlay.querySelector('.dp-monthyear-header');
|
|
13715
|
+
if (!isMonthYearMode) return;
|
|
13716
|
+
e.preventDefault();
|
|
13717
|
+
e.stopPropagation();
|
|
13718
|
+
var yearContainer = currentOverlay.querySelector('.dp-year-container');
|
|
13719
|
+
if (yearContainer && yearContainer.contains(e.target)) {
|
|
13720
|
+
if (wheelCooldown.current) return;
|
|
13721
|
+
changeYear(Math.sign(e.deltaY));
|
|
13722
|
+
wheelCooldown.current = true;
|
|
13723
|
+
setTimeout(function () {
|
|
13724
|
+
wheelCooldown.current = false;
|
|
13725
|
+
}, 120);
|
|
13726
|
+
}
|
|
13727
|
+
};
|
|
13728
|
+
currentOverlay.addEventListener('wheel', panelWheelHandler, {
|
|
13729
|
+
passive: false
|
|
13730
|
+
});
|
|
13731
|
+
panelWheelListenerRef.current = {
|
|
13732
|
+
overlay: currentOverlay,
|
|
13733
|
+
handler: panelWheelHandler
|
|
13734
|
+
};
|
|
13738
13735
|
var customContent = currentOverlay.querySelector('.dp-monthyear-header');
|
|
13739
13736
|
if (customContent) {
|
|
13740
|
-
|
|
13737
|
+
// Ajout de 80px pour simuler une fenêtre plus haute aux yeux de
|
|
13738
|
+
// DomHandler.absolutePosition, ce qui abaisse le seuil de bascule
|
|
13739
|
+
// vers le haut. Cela compense les boutons Annuler/Valider qui sont
|
|
13740
|
+
// masqués en mode month mais occupent de l'espace hors viewport.
|
|
13741
|
+
currentOverlay.style.minHeight = customContent.offsetHeight + 80 + 'px';
|
|
13741
13742
|
}
|
|
13743
|
+
var extraHeight = 80;
|
|
13742
13744
|
repositionPanel();
|
|
13745
|
+
if (customContent) {
|
|
13746
|
+
currentOverlay.style.minHeight = '';
|
|
13747
|
+
var input = inputRef.current;
|
|
13748
|
+
if (input) {
|
|
13749
|
+
var overlayTop = parseFloat(currentOverlay.style.top) || 0;
|
|
13750
|
+
var inputTop = input.getBoundingClientRect().top + window.scrollY;
|
|
13751
|
+
if (overlayTop < inputTop) {
|
|
13752
|
+
currentOverlay.style.top = overlayTop + extraHeight + 'px';
|
|
13753
|
+
}
|
|
13754
|
+
}
|
|
13755
|
+
}
|
|
13743
13756
|
setPanelReady(true);
|
|
13744
13757
|
}, 0);
|
|
13745
13758
|
};
|
|
@@ -13747,6 +13760,13 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13747
13760
|
var _calendarRef$current3;
|
|
13748
13761
|
panelVisibleRef.current = false;
|
|
13749
13762
|
cleanupScrollListeners();
|
|
13763
|
+
if (panelWheelListenerRef.current) {
|
|
13764
|
+
var _panelWheelListenerRe = panelWheelListenerRef.current,
|
|
13765
|
+
_overlay = _panelWheelListenerRe.overlay,
|
|
13766
|
+
handler = _panelWheelListenerRe.handler;
|
|
13767
|
+
_overlay.removeEventListener('wheel', handler);
|
|
13768
|
+
panelWheelListenerRef.current = null;
|
|
13769
|
+
}
|
|
13750
13770
|
var overlay = (_calendarRef$current3 = calendarRef.current) === null || _calendarRef$current3 === void 0 ? void 0 : _calendarRef$current3.getOverlay();
|
|
13751
13771
|
if (overlay) {
|
|
13752
13772
|
overlay.style.minHeight = '';
|
|
@@ -13758,6 +13778,34 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
13758
13778
|
cleanupScrollListeners();
|
|
13759
13779
|
};
|
|
13760
13780
|
}, []);
|
|
13781
|
+
|
|
13782
|
+
// Reposition quand on bascule en mode monthYear depuis le mode date (panel déjà ouvert).
|
|
13783
|
+
// Même logique que dans handleShow : gonfle minHeight, repositionne, puis corrige le top.
|
|
13784
|
+
useEffect(function () {
|
|
13785
|
+
if (mode !== 'monthYear' || !panelVisibleRef.current) return;
|
|
13786
|
+
var extraHeight = 80;
|
|
13787
|
+
setTimeout(function () {
|
|
13788
|
+
var _calendarRef$current4;
|
|
13789
|
+
var overlay = (_calendarRef$current4 = calendarRef.current) === null || _calendarRef$current4 === void 0 ? void 0 : _calendarRef$current4.getOverlay();
|
|
13790
|
+
if (!overlay) return;
|
|
13791
|
+
var customContent = overlay.querySelector('.dp-monthyear-header');
|
|
13792
|
+
if (customContent) {
|
|
13793
|
+
overlay.style.minHeight = customContent.offsetHeight + extraHeight + 'px';
|
|
13794
|
+
}
|
|
13795
|
+
repositionPanel();
|
|
13796
|
+
if (customContent) {
|
|
13797
|
+
overlay.style.minHeight = '';
|
|
13798
|
+
var input = inputRef.current;
|
|
13799
|
+
if (input) {
|
|
13800
|
+
var overlayTop = parseFloat(overlay.style.top) || 0;
|
|
13801
|
+
var inputTop = input.getBoundingClientRect().top + window.scrollY;
|
|
13802
|
+
if (overlayTop < inputTop) {
|
|
13803
|
+
overlay.style.top = overlayTop + extraHeight + 'px';
|
|
13804
|
+
}
|
|
13805
|
+
}
|
|
13806
|
+
}
|
|
13807
|
+
}, 0);
|
|
13808
|
+
}, [mode]);
|
|
13761
13809
|
var panelClassName = "datepickerbook" + (mode === "monthYear" ? " dp-monthyear-mode" : "") + (story === "year" ? " dp-year-only" : "") + (panelReady ? " dp-ready" : "");
|
|
13762
13810
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
13763
13811
|
className: fullWidth ? "datepicker-fullwidth flex flex-col gap-1" : "flex flex-col gap-1"
|