arengibook 3.1.5-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.
Files changed (2) hide show
  1. package/dist/index.js +47 -43
  2. 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(null),
13260
+ var _useState13 = useState(false),
13261
13261
  _useState14 = _slicedToArray$9(_useState13, 2);
13262
13262
  _useState14[0];
13263
13263
  _useState14[1];
13264
- var _useState15 = useState(false),
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); // On change l'année de ±1, pas de ±2
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,6 +13704,34 @@ 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
@@ -13763,6 +13760,13 @@ var DatePicker = function DatePicker(_ref) {
13763
13760
  var _calendarRef$current3;
13764
13761
  panelVisibleRef.current = false;
13765
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
+ }
13766
13770
  var overlay = (_calendarRef$current3 = calendarRef.current) === null || _calendarRef$current3 === void 0 ? void 0 : _calendarRef$current3.getOverlay();
13767
13771
  if (overlay) {
13768
13772
  overlay.style.minHeight = '';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arengibook",
3
3
  "private": false,
4
- "version": "3.1.5-datepicker",
4
+ "version": "3.1.6-datepicker",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "exports": {