primereact 10.3.2 → 10.3.3

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 (85) hide show
  1. package/api/api.cjs.js +20 -0
  2. package/api/api.cjs.min.js +1 -1
  3. package/api/api.d.ts +5 -1
  4. package/api/api.esm.js +20 -0
  5. package/api/api.esm.min.js +1 -1
  6. package/api/api.js +20 -0
  7. package/api/api.min.js +1 -1
  8. package/calendar/calendar.cjs.js +493 -141
  9. package/calendar/calendar.cjs.min.js +1 -1
  10. package/calendar/calendar.d.ts +4 -0
  11. package/calendar/calendar.esm.js +494 -142
  12. package/calendar/calendar.esm.min.js +1 -1
  13. package/calendar/calendar.js +493 -141
  14. package/calendar/calendar.min.js +1 -1
  15. package/contextmenu/contextmenu.cjs.js +4 -4
  16. package/contextmenu/contextmenu.cjs.min.js +1 -1
  17. package/contextmenu/contextmenu.esm.js +4 -4
  18. package/contextmenu/contextmenu.esm.min.js +1 -1
  19. package/contextmenu/contextmenu.js +4 -4
  20. package/contextmenu/contextmenu.min.js +1 -1
  21. package/core/core.js +40 -0
  22. package/core/core.min.js +2 -2
  23. package/datatable/datatable.cjs.js +3 -0
  24. package/datatable/datatable.cjs.min.js +1 -1
  25. package/datatable/datatable.esm.js +3 -0
  26. package/datatable/datatable.esm.min.js +1 -1
  27. package/datatable/datatable.js +3 -0
  28. package/datatable/datatable.min.js +1 -1
  29. package/dataview/dataview.cjs.js +27 -25
  30. package/dataview/dataview.cjs.min.js +1 -1
  31. package/dataview/dataview.d.ts +6 -0
  32. package/dataview/dataview.esm.js +27 -25
  33. package/dataview/dataview.esm.min.js +1 -1
  34. package/dataview/dataview.js +27 -25
  35. package/dataview/dataview.min.js +1 -1
  36. package/menubar/menubar.cjs.js +4 -4
  37. package/menubar/menubar.cjs.min.js +1 -1
  38. package/menubar/menubar.esm.js +4 -4
  39. package/menubar/menubar.esm.min.js +1 -1
  40. package/menubar/menubar.js +4 -4
  41. package/menubar/menubar.min.js +1 -1
  42. package/package.json +1 -1
  43. package/paginator/paginator.cjs.js +20 -0
  44. package/paginator/paginator.cjs.min.js +1 -1
  45. package/paginator/paginator.esm.js +20 -0
  46. package/paginator/paginator.esm.min.js +1 -1
  47. package/paginator/paginator.js +20 -0
  48. package/paginator/paginator.min.js +1 -1
  49. package/picklist/picklist.cjs.js +20 -0
  50. package/picklist/picklist.cjs.min.js +1 -1
  51. package/picklist/picklist.esm.js +20 -0
  52. package/picklist/picklist.esm.min.js +1 -1
  53. package/picklist/picklist.js +20 -0
  54. package/picklist/picklist.min.js +1 -1
  55. package/primereact.all.cjs.js +760 -246
  56. package/primereact.all.cjs.min.js +1 -1
  57. package/primereact.all.esm.js +760 -246
  58. package/primereact.all.esm.min.js +1 -1
  59. package/primereact.all.js +760 -246
  60. package/primereact.all.min.js +1 -1
  61. package/splitbutton/splitbutton.cjs.js +4 -4
  62. package/splitbutton/splitbutton.cjs.min.js +1 -1
  63. package/splitbutton/splitbutton.esm.js +4 -4
  64. package/splitbutton/splitbutton.esm.min.js +1 -1
  65. package/splitbutton/splitbutton.js +4 -4
  66. package/splitbutton/splitbutton.min.js +1 -1
  67. package/tieredmenu/tieredmenu.cjs.js +4 -4
  68. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  69. package/tieredmenu/tieredmenu.esm.js +4 -4
  70. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  71. package/tieredmenu/tieredmenu.js +4 -4
  72. package/tieredmenu/tieredmenu.min.js +1 -1
  73. package/toast/toast.cjs.js +20 -0
  74. package/toast/toast.cjs.min.js +1 -1
  75. package/toast/toast.esm.js +20 -0
  76. package/toast/toast.esm.min.js +1 -1
  77. package/toast/toast.js +20 -0
  78. package/toast/toast.min.js +1 -1
  79. package/treetable/treetable.cjs.js +205 -68
  80. package/treetable/treetable.cjs.min.js +1 -1
  81. package/treetable/treetable.esm.js +206 -69
  82. package/treetable/treetable.esm.min.js +1 -1
  83. package/treetable/treetable.js +205 -68
  84. package/treetable/treetable.min.js +1 -1
  85. package/web-types.json +16 -1
@@ -152,13 +152,14 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
152
152
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
153
153
  }
154
154
 
155
- var styles = "\n@layer primereact {\n .p-calendar {\n position: relative;\n display: inline-flex;\n max-width: 100%;\n }\n \n .p-calendar .p-inputtext {\n flex: 1 1 auto;\n width: 1%;\n }\n \n .p-calendar-w-btn-right .p-inputtext {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n \n .p-calendar-w-btn-right .p-datepicker-trigger {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .p-calendar-w-btn-left .p-inputtext {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .p-calendar-w-btn-left .p-datepicker-trigger {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n \n /* Fluid */\n .p-fluid .p-calendar {\n display: flex;\n }\n \n .p-fluid .p-calendar .p-inputtext {\n width: 1%;\n }\n \n /* Datepicker */\n .p-calendar .p-datepicker {\n min-width: 100%;\n }\n \n .p-datepicker {\n width: auto;\n position: absolute;\n top: 0;\n left: 0;\n }\n \n .p-datepicker-inline {\n display: inline-block;\n position: static;\n overflow-x: auto;\n }\n \n /* Header */\n .p-datepicker-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .p-datepicker-header .p-datepicker-title {\n margin: 0 auto;\n }\n \n .p-datepicker-prev,\n .p-datepicker-next {\n cursor: pointer;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n position: relative;\n }\n \n /* Multiple Month DatePicker */\n .p-datepicker-multiple-month .p-datepicker-group-container {\n display: flex;\n }\n \n .p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group {\n flex: 1 1 auto;\n }\n \n /* Multiple Month DatePicker */\n .p-datepicker-multiple-month .p-datepicker-group-container {\n display: flex;\n }\n \n /* DatePicker Table */\n .p-datepicker table {\n width: 100%;\n border-collapse: collapse;\n }\n \n .p-datepicker td > span {\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n margin: 0 auto;\n overflow: hidden;\n position: relative;\n }\n \n /* Month Picker */\n .p-monthpicker-month {\n width: 33.3%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n \n /* Button Bar */\n .p-datepicker-buttonbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n /* Time Picker */\n .p-timepicker {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n \n .p-timepicker button {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n \n .p-timepicker > div {\n display: flex;\n align-items: center;\n flex-direction: column;\n }\n \n /* Touch UI */\n .p-datepicker-touch-ui,\n .p-calendar .p-datepicker-touch-ui {\n position: fixed;\n top: 50%;\n left: 50%;\n min-width: 80vw;\n transform: translate(-50%, -50%);\n }\n \n /* Year Picker */\n .p-yearpicker-year {\n width: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n}\n";
155
+ var styles = "\n@layer primereact {\n .p-calendar {\n position: relative;\n display: inline-flex;\n max-width: 100%;\n }\n\n .p-calendar .p-inputtext {\n flex: 1 1 auto;\n width: 1%;\n }\n\n .p-calendar-w-btn-right .p-inputtext {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .p-calendar-w-btn-right .p-datepicker-trigger {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .p-calendar-w-btn-left .p-inputtext {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .p-calendar-w-btn-left .p-datepicker-trigger {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n /* Fluid */\n .p-fluid .p-calendar {\n display: flex;\n }\n\n .p-fluid .p-calendar .p-inputtext {\n width: 1%;\n }\n\n /* Datepicker */\n .p-calendar .p-datepicker {\n min-width: 100%;\n }\n\n .p-datepicker {\n width: auto;\n position: absolute;\n top: 0;\n left: 0;\n }\n\n .p-datepicker-inline {\n display: inline-block;\n position: static;\n overflow-x: auto;\n }\n\n /* Header */\n .p-datepicker-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .p-datepicker-header .p-datepicker-title {\n margin: 0 auto;\n }\n\n .p-datepicker-prev,\n .p-datepicker-next {\n cursor: pointer;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n position: relative;\n }\n\n /* Multiple Month DatePicker */\n .p-datepicker-multiple-month .p-datepicker-group-container {\n display: flex;\n }\n\n .p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group {\n flex: 1 1 auto;\n }\n\n /* Multiple Month DatePicker */\n .p-datepicker-multiple-month .p-datepicker-group-container {\n display: flex;\n }\n\n /* DatePicker Table */\n .p-datepicker table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .p-datepicker td > span {\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n margin: 0 auto;\n overflow: hidden;\n position: relative;\n }\n\n /* Month Picker */\n .p-monthpicker-month {\n width: 33.3%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n\n /* Button Bar */\n .p-datepicker-buttonbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n /* Time Picker */\n .p-timepicker {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .p-timepicker button {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n\n .p-timepicker > div {\n display: flex;\n align-items: center;\n flex-direction: column;\n }\n\n /* Touch UI */\n .p-datepicker-touch-ui,\n .p-calendar .p-datepicker-touch-ui {\n position: fixed;\n top: 50%;\n left: 50%;\n min-width: 80vw;\n transform: translate(-50%, -50%);\n }\n\n /* Year Picker */\n .p-yearpicker-year {\n width: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n }\n}\n";
156
156
  var classes = {
157
157
  root: function root(_ref) {
158
158
  var props = _ref.props,
159
159
  focusedState = _ref.focusedState,
160
- isFilled = _ref.isFilled;
161
- return utils.classNames('p-calendar p-component p-inputwrapper', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "p-calendar-w-btn p-calendar-w-btn-".concat(props.iconPos), props.showIcon), 'p-calendar-disabled', props.disabled), 'p-calendar-timeonly', props.timeOnly), 'p-inputwrapper-filled', props.value || isFilled), 'p-inputwrapper-focus', focusedState));
160
+ isFilled = _ref.isFilled,
161
+ panelVisible = _ref.panelVisible;
162
+ return utils.classNames('p-calendar p-component p-inputwrapper', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "p-calendar-w-btn p-calendar-w-btn-".concat(props.iconPos), props.showIcon), 'p-calendar-disabled', props.disabled), 'p-calendar-timeonly', props.timeOnly), 'p-inputwrapper-filled', props.value || isFilled), 'p-inputwrapper-focus', focusedState), 'p-focus', focusedState || panelVisible));
162
163
  },
163
164
  dropdownButton: 'p-datepicker-trigger',
164
165
  buttonbar: 'p-datepicker-buttonbar',
@@ -237,6 +238,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
237
238
  __TYPE: 'Calendar',
238
239
  appendTo: null,
239
240
  ariaLabelledBy: null,
241
+ ariaLabel: null,
240
242
  autoZIndex: true,
241
243
  autoFocus: false,
242
244
  baseZIndex: 0,
@@ -344,6 +346,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
344
346
  panelClassName: props.className
345
347
  }),
346
348
  style: props.style,
349
+ role: props.inline ? null : 'dialog',
350
+ id: props.id,
351
+ 'aria-label': PrimeReact.localeOption('chooseDate', props.locale),
352
+ 'aria-modal': props.inline ? null : 'true',
347
353
  onClick: props.onClick,
348
354
  onMouseUp: props.onMouseUp
349
355
  }, props.ptm('panel', {
@@ -400,6 +406,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
400
406
  _React$useState6 = _slicedToArray(_React$useState5, 2),
401
407
  viewDateState = _React$useState6[0],
402
408
  setViewDateState = _React$useState6[1];
409
+ var _React$useState7 = React__namespace.useState(props.id),
410
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
411
+ idState = _React$useState8[0],
412
+ setIdState = _React$useState8[1];
403
413
  var metaData = {
404
414
  props: props,
405
415
  state: {
@@ -428,26 +438,29 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
428
438
  var isOverlayClicked = React__namespace.useRef(false);
429
439
  var previousButton = React__namespace.useRef(false);
430
440
  var nextButton = React__namespace.useRef(false);
441
+ var viewChangedWithKeyDown = React__namespace.useRef(false);
431
442
  var onChangeRef = React__namespace.useRef(null);
432
- var _React$useState7 = React__namespace.useState('date'),
433
- _React$useState8 = _slicedToArray(_React$useState7, 2),
434
- currentView = _React$useState8[0],
435
- setCurrentView = _React$useState8[1];
436
- var _React$useState9 = React__namespace.useState(null),
443
+ var isClearClicked = React__namespace.useRef(false);
444
+ var _React$useState9 = React__namespace.useState('date'),
437
445
  _React$useState10 = _slicedToArray(_React$useState9, 2),
438
- currentMonth = _React$useState10[0],
439
- setCurrentMonth = _React$useState10[1];
446
+ currentView = _React$useState10[0],
447
+ setCurrentView = _React$useState10[1];
440
448
  var _React$useState11 = React__namespace.useState(null),
441
449
  _React$useState12 = _slicedToArray(_React$useState11, 2),
442
- currentYear = _React$useState12[0],
443
- setCurrentYear = _React$useState12[1];
444
- var _React$useState13 = React__namespace.useState([]),
450
+ currentMonth = _React$useState12[0],
451
+ setCurrentMonth = _React$useState12[1];
452
+ var _React$useState13 = React__namespace.useState(null),
445
453
  _React$useState14 = _slicedToArray(_React$useState13, 2),
446
- yearOptions = _React$useState14[0],
447
- setYearOptions = _React$useState14[1];
454
+ currentYear = _React$useState14[0],
455
+ setCurrentYear = _React$useState14[1];
456
+ var _React$useState15 = React__namespace.useState([]),
457
+ _React$useState16 = _slicedToArray(_React$useState15, 2),
458
+ yearOptions = _React$useState16[0],
459
+ setYearOptions = _React$useState16[1];
448
460
  var previousValue = hooks.usePrevious(props.value);
449
461
  var visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState);
450
462
  var attributeSelector = utils.UniqueComponentId();
463
+ var panelId = idState + '_panel';
451
464
  var _useOverlayListener = hooks.useOverlayListener({
452
465
  target: elementRef,
453
466
  overlay: overlayRef,
@@ -455,7 +468,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
455
468
  var type = _ref.type,
456
469
  valid = _ref.valid;
457
470
  if (valid) {
458
- type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside') : hide();
471
+ type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside', reFocusInputField) : hide(null, reFocusInputField);
459
472
  }
460
473
  isOverlayClicked.current = false;
461
474
  },
@@ -485,21 +498,34 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
485
498
  setFocusedState(false);
486
499
  };
487
500
  var onInputKeyDown = function onInputKeyDown(event) {
488
- switch (event.which) {
489
- //escape
490
- case 27:
501
+ switch (event.code) {
502
+ case 'ArrowDown':
491
503
  {
492
- hide();
504
+ if (!overlayVisibleState) {
505
+ show();
506
+ } else {
507
+ focusToFirstCell();
508
+ event.preventDefault();
509
+ }
493
510
  break;
494
511
  }
495
-
496
- //tab
497
- case 9:
512
+ case 'Escape':
498
513
  {
499
- visible && trapFocus(event);
514
+ hide();
500
515
  props.touchUI && disableModality();
501
516
  break;
502
517
  }
518
+ case 'Tab':
519
+ {
520
+ if (overlayRef && overlayRef.current) {
521
+ utils.DomHandler.getFocusableElements(overlayRef.current).forEach(function (el) {
522
+ return el.tabIndex = '-1';
523
+ });
524
+ hide();
525
+ props.touchUI && disableModality();
526
+ }
527
+ break;
528
+ }
503
529
  }
504
530
  };
505
531
  var onUserInput = function onUserInput(event) {
@@ -562,28 +588,40 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
562
588
  navForward(event);
563
589
  };
564
590
  var onContainerButtonKeydown = function onContainerButtonKeydown(event) {
565
- switch (event.which) {
566
- //tab
567
- case 9:
568
- trapFocus(event);
591
+ switch (event.code) {
592
+ case 'Tab':
593
+ !props.inline && trapFocus(event);
569
594
  break;
570
-
571
- //escape
572
- case 27:
595
+ case 'Escape':
573
596
  hide(null, reFocusInputField);
574
597
  event.preventDefault();
575
598
  break;
576
599
  }
577
600
  };
601
+ var onPickerKeyDown = function onPickerKeyDown(event, type, direction) {
602
+ if (event.code === 'Enter' || event.code === 'Space') {
603
+ onTimePickerElementMouseDown(event, type, direction);
604
+ event.preventDefault();
605
+ return;
606
+ }
607
+ onContainerButtonKeydown(event);
608
+ };
609
+ var onPickerKeyUp = function onPickerKeyUp(event) {
610
+ if (event.code === 'Enter' || event.code === 'Space') {
611
+ onTimePickerElementMouseUp();
612
+ event.preventDefault();
613
+ return;
614
+ }
615
+ };
578
616
  var trapFocus = function trapFocus(event) {
579
- event.preventDefault();
617
+ event === null || event === void 0 || event.preventDefault();
580
618
  var focusableElements = utils.DomHandler.getFocusableElements(overlayRef.current);
581
619
  if (focusableElements && focusableElements.length > 0) {
582
620
  if (!document.activeElement) {
583
621
  focusableElements[0].focus();
584
622
  } else {
585
623
  var focusedIndex = focusableElements.indexOf(document.activeElement);
586
- if (event.shiftKey) {
624
+ if (event !== null && event !== void 0 && event.shiftKey) {
587
625
  if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();else focusableElements[focusedIndex - 1].focus();
588
626
  } else {
589
627
  if (focusedIndex === -1 || focusedIndex === focusableElements.length - 1) focusableElements[0].focus();else focusableElements[focusedIndex + 1].focus();
@@ -616,7 +654,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
616
654
  };
617
655
  var initFocusableCell = function initFocusableCell() {
618
656
  var cell;
619
- if (props.view === 'month') {
657
+ if (currentView === 'month') {
620
658
  var cells = utils.DomHandler.find(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"]');
621
659
  var selectedCell = utils.DomHandler.findSingle(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"][data-p-highlight="true"]');
622
660
  cells.forEach(function (cell) {
@@ -634,6 +672,27 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
634
672
  cell.tabIndex = '0';
635
673
  }
636
674
  };
675
+ var focusToFirstCell = function focusToFirstCell() {
676
+ if (currentView) {
677
+ var cell;
678
+ if (currentView === 'date') {
679
+ cell = utils.DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
680
+ if (!cell) {
681
+ var todayCell = utils.DomHandler.findSingle(overlayRef.current, 'td.p-datepicker-today span:not(.p-disabled)');
682
+ cell = todayCell || utils.DomHandler.findSingle(overlayRef.current, 'table td span:not([data-p-disabled="true"])');
683
+ }
684
+ } else if (currentView === 'month' || currentView === 'year') {
685
+ cell = utils.DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
686
+ if (!cell) {
687
+ cell = utils.DomHandler.findSingle(overlayRef.current, "[data-pc-section=\"".concat(currentView, "picker\"] [data-pc-section=\"").concat(currentView, "\"]:not([data-p-disabled=\"true\"])"));
688
+ }
689
+ }
690
+ if (cell) {
691
+ cell.tabIndex = '0';
692
+ cell && cell.focus();
693
+ }
694
+ }
695
+ };
637
696
  var navBackward = function navBackward(event) {
638
697
  if (props.disabled) {
639
698
  event.preventDefault();
@@ -763,6 +822,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
763
822
  props.onTodayButtonClick && props.onTodayButtonClick(event);
764
823
  };
765
824
  var onClearButtonClick = function onClearButtonClick(event) {
825
+ isClearClicked.current = true;
766
826
  updateModel(event, null);
767
827
  updateInputfield(null);
768
828
  hide();
@@ -1244,23 +1304,29 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1244
1304
  var onDateCellKeydown = function onDateCellKeydown(event, date, groupIndex) {
1245
1305
  var cellContent = event.currentTarget;
1246
1306
  var cell = cellContent.parentElement;
1247
- switch (event.which) {
1248
- //down arrow
1249
- case 40:
1307
+ var cellIndex = utils.DomHandler.index(cell);
1308
+ switch (event.code) {
1309
+ case 'ArrowDown':
1250
1310
  {
1251
1311
  cellContent.tabIndex = '-1';
1252
- var cellIndex = utils.DomHandler.index(cell);
1253
1312
  var nextRow = cell.parentElement.nextElementSibling;
1254
1313
  if (nextRow) {
1255
- var focusCell = nextRow.children[cellIndex].children[0];
1256
- if (utils.DomHandler.hasClass(focusCell, 'p-disabled')) {
1314
+ var tableRowIndex = utils.DomHandler.index(cell.parentElement);
1315
+ var tableRows = Array.from(cell.parentElement.parentElement.children);
1316
+ var nextTableRows = tableRows.slice(tableRowIndex + 1);
1317
+ var hasNextFocusableDate = nextTableRows.find(function (el) {
1318
+ var focusCell = el.children[cellIndex].children[0];
1319
+ return !utils.DomHandler.getAttribute(focusCell, 'data-p-disabled');
1320
+ });
1321
+ if (hasNextFocusableDate) {
1322
+ var focusCell = hasNextFocusableDate.children[cellIndex].children[0];
1323
+ focusCell.tabIndex = '0';
1324
+ focusCell.focus();
1325
+ } else {
1257
1326
  navigation.current = {
1258
1327
  backward: false
1259
1328
  };
1260
1329
  navForward(event);
1261
- } else {
1262
- nextRow.children[cellIndex].children[0].tabIndex = '0';
1263
- nextRow.children[cellIndex].children[0].focus();
1264
1330
  }
1265
1331
  } else {
1266
1332
  navigation.current = {
@@ -1271,46 +1337,58 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1271
1337
  event.preventDefault();
1272
1338
  break;
1273
1339
  }
1274
-
1275
- //up arrow
1276
- case 38:
1340
+ case 'ArrowUp':
1277
1341
  {
1278
1342
  cellContent.tabIndex = '-1';
1279
- var _cellIndex = utils.DomHandler.index(cell);
1280
- var prevRow = cell.parentElement.previousElementSibling;
1281
- if (prevRow) {
1282
- var _focusCell = prevRow.children[_cellIndex].children[0];
1283
- if (utils.DomHandler.hasClass(_focusCell, 'p-disabled')) {
1343
+ if (event.altKey) {
1344
+ hide(null, reFocusInputField);
1345
+ } else {
1346
+ var prevRow = cell.parentElement.previousElementSibling;
1347
+ if (prevRow) {
1348
+ var _tableRowIndex = utils.DomHandler.index(cell.parentElement);
1349
+ var _tableRows = Array.from(cell.parentElement.parentElement.children);
1350
+ var prevTableRows = _tableRows.slice(0, _tableRowIndex).reverse();
1351
+ var _hasNextFocusableDate = prevTableRows.find(function (el) {
1352
+ var focusCell = el.children[cellIndex].children[0];
1353
+ return !utils.DomHandler.getAttribute(focusCell, 'data-p-disabled');
1354
+ });
1355
+ if (_hasNextFocusableDate) {
1356
+ var _focusCell = _hasNextFocusableDate.children[cellIndex].children[0];
1357
+ _focusCell.tabIndex = '0';
1358
+ _focusCell.focus();
1359
+ } else {
1360
+ navigation.current = {
1361
+ backward: true
1362
+ };
1363
+ navBackward(event);
1364
+ }
1365
+ } else {
1284
1366
  navigation.current = {
1285
1367
  backward: true
1286
1368
  };
1287
1369
  navBackward(event);
1288
- } else {
1289
- _focusCell.tabIndex = '0';
1290
- _focusCell.focus();
1291
1370
  }
1292
- } else {
1293
- navigation.current = {
1294
- backward: true
1295
- };
1296
- navBackward(event);
1297
1371
  }
1298
1372
  event.preventDefault();
1299
1373
  break;
1300
1374
  }
1301
-
1302
- //left arrow
1303
- case 37:
1375
+ case 'ArrowLeft':
1304
1376
  {
1305
1377
  cellContent.tabIndex = '-1';
1306
1378
  var prevCell = cell.previousElementSibling;
1307
1379
  if (prevCell) {
1308
- var _focusCell2 = prevCell.children[0];
1309
- if (utils.DomHandler.hasClass(_focusCell2, 'p-disabled')) {
1310
- navigateToMonth(true, groupIndex, event);
1311
- } else {
1380
+ var cells = Array.from(cell.parentElement.children);
1381
+ var prevCells = cells.slice(0, cellIndex).reverse();
1382
+ var _hasNextFocusableDate2 = prevCells.find(function (el) {
1383
+ var focusCell = el.children[0];
1384
+ return !utils.DomHandler.getAttribute(focusCell, 'data-p-disabled');
1385
+ });
1386
+ if (_hasNextFocusableDate2) {
1387
+ var _focusCell2 = _hasNextFocusableDate2.children[0];
1312
1388
  _focusCell2.tabIndex = '0';
1313
1389
  _focusCell2.focus();
1390
+ } else {
1391
+ navigateToMonth(true, groupIndex, event);
1314
1392
  }
1315
1393
  } else {
1316
1394
  navigateToMonth(true, groupIndex, event);
@@ -1318,19 +1396,23 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1318
1396
  event.preventDefault();
1319
1397
  break;
1320
1398
  }
1321
-
1322
- //right arrow
1323
- case 39:
1399
+ case 'ArrowRight':
1324
1400
  {
1325
1401
  cellContent.tabIndex = '-1';
1326
1402
  var nextCell = cell.nextElementSibling;
1327
1403
  if (nextCell) {
1328
- var _focusCell3 = nextCell.children[0];
1329
- if (utils.DomHandler.hasClass(_focusCell3, 'p-disabled')) {
1330
- navigateToMonth(false, groupIndex, event);
1331
- } else {
1404
+ var _cells = Array.from(cell.parentElement.children);
1405
+ var nextCells = _cells.slice(cellIndex + 1);
1406
+ var _hasNextFocusableDate3 = nextCells.find(function (el) {
1407
+ var focusCell = el.children[0];
1408
+ return !utils.DomHandler.getAttribute(focusCell, 'data-p-disabled');
1409
+ });
1410
+ if (_hasNextFocusableDate3) {
1411
+ var _focusCell3 = _hasNextFocusableDate3.children[0];
1332
1412
  _focusCell3.tabIndex = '0';
1333
1413
  _focusCell3.focus();
1414
+ } else {
1415
+ navigateToMonth(false, groupIndex, event);
1334
1416
  }
1335
1417
  } else {
1336
1418
  navigateToMonth(false, groupIndex, event);
@@ -1338,27 +1420,75 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1338
1420
  event.preventDefault();
1339
1421
  break;
1340
1422
  }
1341
-
1342
- //enter
1343
- case 13:
1423
+ case 'Enter':
1424
+ case 'NumpadEnter':
1425
+ case 'Space':
1344
1426
  {
1345
1427
  onDateSelect(event, date);
1346
1428
  event.preventDefault();
1347
1429
  break;
1348
1430
  }
1349
-
1350
- //escape
1351
- case 27:
1431
+ case 'Escape':
1352
1432
  {
1353
1433
  hide(null, reFocusInputField);
1354
1434
  event.preventDefault();
1355
1435
  break;
1356
1436
  }
1357
-
1358
- //tab
1359
- case 9:
1437
+ case 'Tab':
1360
1438
  {
1361
- trapFocus(event);
1439
+ if (!props.inline) trapFocus(event);
1440
+ break;
1441
+ }
1442
+ case 'Home':
1443
+ {
1444
+ cellContent.tabIndex = '-1';
1445
+ var currentRow = cell.parentElement;
1446
+ var _focusCell4 = currentRow.children[0].children[0];
1447
+ if (utils.DomHandler.getAttribute(_focusCell4, 'data-p-disabled')) {
1448
+ navigateToMonth(groupIndex, true, event);
1449
+ } else {
1450
+ _focusCell4.tabIndex = '0';
1451
+ _focusCell4.focus();
1452
+ }
1453
+ event.preventDefault();
1454
+ break;
1455
+ }
1456
+ case 'End':
1457
+ {
1458
+ cellContent.tabIndex = '-1';
1459
+ var _currentRow = cell.parentElement;
1460
+ var _focusCell5 = _currentRow.children[_currentRow.children.length - 1].children[0];
1461
+ if (utils.DomHandler.getAttribute(_focusCell5, 'data-p-disabled')) {
1462
+ navigateToMonth(groupIndex, false, event);
1463
+ } else {
1464
+ _focusCell5.tabIndex = '0';
1465
+ _focusCell5.focus();
1466
+ }
1467
+ event.preventDefault();
1468
+ break;
1469
+ }
1470
+ case 'PageUp':
1471
+ {
1472
+ cellContent.tabIndex = '-1';
1473
+ if (event.shiftKey) {
1474
+ navigation.current = {
1475
+ backward: true
1476
+ };
1477
+ navBackward(event);
1478
+ } else navigateToMonth(groupIndex, true, event);
1479
+ event.preventDefault();
1480
+ break;
1481
+ }
1482
+ case 'PageDown':
1483
+ {
1484
+ cellContent.tabIndex = '-1';
1485
+ if (event.shiftKey) {
1486
+ navigation.current = {
1487
+ backward: false
1488
+ };
1489
+ navForward(event);
1490
+ } else navigateToMonth(groupIndex, false, event);
1491
+ event.preventDefault();
1362
1492
  break;
1363
1493
  }
1364
1494
  }
@@ -1385,18 +1515,18 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1385
1515
  navForward(event);
1386
1516
  } else {
1387
1517
  var nextMonthContainer = overlayRef.current.children[groupIndex + 1];
1388
- var _focusCell4 = utils.DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
1389
- _focusCell4.tabIndex = '0';
1390
- _focusCell4.focus();
1518
+ var _focusCell6 = utils.DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
1519
+ _focusCell6.tabIndex = '0';
1520
+ _focusCell6.focus();
1391
1521
  }
1392
1522
  }
1393
1523
  };
1394
1524
  var onMonthCellKeydown = function onMonthCellKeydown(event, index) {
1395
1525
  var cell = event.currentTarget;
1396
- switch (event.which) {
1526
+ switch (event.code) {
1397
1527
  //arrows
1398
- case 38:
1399
- case 40:
1528
+ case 'ArrowUp':
1529
+ case 'ArrowDown':
1400
1530
  {
1401
1531
  cell.tabIndex = '-1';
1402
1532
  var cells = cell.parentElement.children;
@@ -1409,51 +1539,162 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1409
1539
  event.preventDefault();
1410
1540
  break;
1411
1541
  }
1412
-
1413
- //left arrow
1414
- case 37:
1542
+ case 'ArrowLeft':
1415
1543
  {
1416
1544
  cell.tabIndex = '-1';
1417
1545
  var prevCell = cell.previousElementSibling;
1418
1546
  if (prevCell) {
1419
1547
  prevCell.tabIndex = '0';
1420
1548
  prevCell.focus();
1549
+ } else {
1550
+ navigation.current = {
1551
+ backward: true
1552
+ };
1553
+ navBackward(event);
1421
1554
  }
1422
1555
  event.preventDefault();
1423
1556
  break;
1424
1557
  }
1425
-
1426
- //right arrow
1427
- case 39:
1558
+ case 'ArrowRight':
1428
1559
  {
1429
1560
  cell.tabIndex = '-1';
1430
1561
  var _nextCell = cell.nextElementSibling;
1431
1562
  if (_nextCell) {
1432
1563
  _nextCell.tabIndex = '0';
1433
1564
  _nextCell.focus();
1565
+ } else {
1566
+ navigation.current = {
1567
+ backward: false
1568
+ };
1569
+ navForward(event);
1434
1570
  }
1435
1571
  event.preventDefault();
1436
1572
  break;
1437
1573
  }
1438
-
1439
- //enter
1440
- case 13:
1574
+ case 'PageUp':
1575
+ {
1576
+ if (event.shiftKey) return;
1577
+ navigation.current = {
1578
+ backward: true
1579
+ };
1580
+ navBackward(event);
1581
+ break;
1582
+ }
1583
+ case 'PageDown':
1584
+ {
1585
+ if (event.shiftKey) return;
1586
+ navigation.current = {
1587
+ backward: false
1588
+ };
1589
+ navForward(event);
1590
+ break;
1591
+ }
1592
+ case 'Enter':
1593
+ case 'NumpadEnter':
1594
+ case 'Space':
1441
1595
  {
1596
+ if (props.view !== 'month') viewChangedWithKeyDown.current = true;
1442
1597
  onMonthSelect(event, index);
1443
1598
  event.preventDefault();
1444
1599
  break;
1445
1600
  }
1446
-
1447
- //escape
1448
- case 27:
1601
+ case 'Escape':
1449
1602
  {
1450
1603
  hide(null, reFocusInputField);
1451
1604
  event.preventDefault();
1452
1605
  break;
1453
1606
  }
1454
-
1455
- //tab
1456
- case 9:
1607
+ case 'Tab':
1608
+ {
1609
+ trapFocus(event);
1610
+ break;
1611
+ }
1612
+ }
1613
+ };
1614
+ var onYearCellKeydown = function onYearCellKeydown(event, index) {
1615
+ var cell = event.currentTarget;
1616
+ switch (event.code) {
1617
+ //arrows
1618
+ case 'ArrowUp':
1619
+ case 'ArrowDown':
1620
+ {
1621
+ cell.tabIndex = '-1';
1622
+ var cells = cell.parentElement.children;
1623
+ var cellIndex = utils.DomHandler.index(cell);
1624
+ var nextCell = cells[event.code === 'ArrowDown' ? cellIndex + 2 : cellIndex - 2];
1625
+ if (nextCell) {
1626
+ nextCell.tabIndex = '0';
1627
+ nextCell.focus();
1628
+ }
1629
+ event.preventDefault();
1630
+ break;
1631
+ }
1632
+ case 'ArrowLeft':
1633
+ {
1634
+ cell.tabIndex = '-1';
1635
+ var prevCell = cell.previousElementSibling;
1636
+ if (prevCell) {
1637
+ prevCell.tabIndex = '0';
1638
+ prevCell.focus();
1639
+ } else {
1640
+ navigation.current = {
1641
+ backward: true
1642
+ };
1643
+ navBackward(event);
1644
+ }
1645
+ event.preventDefault();
1646
+ break;
1647
+ }
1648
+ case 'ArrowRight':
1649
+ {
1650
+ cell.tabIndex = '-1';
1651
+ var _nextCell2 = cell.nextElementSibling;
1652
+ if (_nextCell2) {
1653
+ _nextCell2.tabIndex = '0';
1654
+ _nextCell2.focus();
1655
+ } else {
1656
+ navigation.current = {
1657
+ backward: false
1658
+ };
1659
+ navForward(event);
1660
+ }
1661
+ event.preventDefault();
1662
+ break;
1663
+ }
1664
+ case 'PageUp':
1665
+ {
1666
+ if (event.shiftKey) return;
1667
+ navigation.current = {
1668
+ backward: true
1669
+ };
1670
+ navBackward(event);
1671
+ break;
1672
+ }
1673
+ case 'PageDown':
1674
+ {
1675
+ if (event.shiftKey) return;
1676
+ navigation.current = {
1677
+ backward: false
1678
+ };
1679
+ navForward(event);
1680
+ break;
1681
+ }
1682
+ case 'Enter':
1683
+ case 'NumpadEnter':
1684
+ case 'Space':
1685
+ {
1686
+ if (props.view !== 'year') viewChangedWithKeyDown.current = true;
1687
+ onYearSelect(event, index);
1688
+ event.preventDefault();
1689
+ break;
1690
+ }
1691
+ case 'Escape':
1692
+ {
1693
+ hide(null, reFocusInputField);
1694
+ event.preventDefault();
1695
+ break;
1696
+ }
1697
+ case 'Tab':
1457
1698
  {
1458
1699
  trapFocus(event);
1459
1700
  break;
@@ -1570,10 +1811,16 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1570
1811
  return _currentYear;
1571
1812
  };
1572
1813
  var switchToMonthView = function switchToMonthView(event) {
1814
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
1815
+ viewChangedWithKeyDown.current = true;
1816
+ }
1573
1817
  setCurrentView('month');
1574
1818
  event.preventDefault();
1575
1819
  };
1576
1820
  var switchToYearView = function switchToYearView(event) {
1821
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
1822
+ viewChangedWithKeyDown.current = true;
1823
+ }
1577
1824
  setCurrentView('year');
1578
1825
  event.preventDefault();
1579
1826
  };
@@ -1714,7 +1961,6 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
1714
1961
  var onOverlayEntered = function onOverlayEntered() {
1715
1962
  bindOverlayListener();
1716
1963
  props.onShow && props.onShow();
1717
- utils.DomHandler.focusFirstElement(overlayRef.current);
1718
1964
  setFocusedState(false);
1719
1965
  };
1720
1966
  var onOverlayExit = function onOverlayExit() {
@@ -2585,6 +2831,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2585
2831
  setCurrentMonth(viewDate.getMonth());
2586
2832
  setCurrentYear(viewDate.getFullYear());
2587
2833
  setCurrentView(props.view);
2834
+ if (!idState) {
2835
+ var uniqueId = utils.UniqueComponentId();
2836
+ !idState && setIdState(uniqueId);
2837
+ }
2588
2838
  if (props.inline) {
2589
2839
  overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
2590
2840
  if (!props.disabled) {
@@ -2632,8 +2882,14 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2632
2882
  // eslint-disable-next-line react-hooks/exhaustive-deps
2633
2883
  }, [props.disabled, props.mask, props.readOnlyInput]);
2634
2884
  hooks.useUpdateEffect(function () {
2635
- setCurrentView(props.view);
2885
+ if (viewChangedWithKeyDown.current) {
2886
+ setCurrentView(props.view);
2887
+ }
2888
+ viewChangedWithKeyDown.current = false;
2636
2889
  }, [props.view]);
2890
+ hooks.useUpdateEffect(function () {
2891
+ focusToFirstCell();
2892
+ }, [currentView]);
2637
2893
  hooks.useUpdateEffect(function () {
2638
2894
  if (!props.onViewDateChange && !viewStateChanged.current) {
2639
2895
  setValue(props.value);
@@ -2724,12 +2980,16 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2724
2980
  if (Array.isArray(prevPropValue)) {
2725
2981
  prevPropValue = prevPropValue[0];
2726
2982
  }
2983
+ var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2984
+ if (isClearClicked.current && props.showTime) {
2985
+ viewDate.setHours(0, 0, 0);
2986
+ isClearClicked.current = false;
2987
+ }
2727
2988
  if (!prevPropValue && propValue || propValue && propValue instanceof Date && propValue.getTime() !== prevPropValue.getTime()) {
2728
- var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2729
2989
  validateDate(viewDate);
2730
- setViewDateState(viewDate);
2731
- viewStateChanged.current = true;
2732
2990
  }
2991
+ setViewDateState(viewDate);
2992
+ viewStateChanged.current = true;
2733
2993
  };
2734
2994
  var createBackwardNavigator = function createBackwardNavigator(isVisible) {
2735
2995
  var navigatorProps = isVisible ? {
@@ -2749,9 +3009,15 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2749
3009
  var backwardNavigatorIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread({}, previousIconProps), {
2750
3010
  props: props
2751
3011
  });
3012
+ var _localeOptions4 = PrimeReact.localeOptions(props.locale),
3013
+ prevDecade = _localeOptions4.prevDecade,
3014
+ prevYear = _localeOptions4.prevYear,
3015
+ prevMonth = _localeOptions4.prevMonth;
3016
+ var previousButtonLabel = currentView === 'year' ? prevDecade : currentView === 'month' ? prevYear : prevMonth;
2752
3017
  var previousButtonProps = mergeProps(_objectSpread({
2753
3018
  type: 'button',
2754
- className: cx('previousButton')
3019
+ className: cx('previousButton'),
3020
+ 'aria-label': previousButtonLabel
2755
3021
  }, navigatorProps), ptm('previousButton'));
2756
3022
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2757
3023
  ref: previousButton
@@ -2775,9 +3041,15 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2775
3041
  var forwardNavigatorIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread({}, nextIconProps), {
2776
3042
  props: props
2777
3043
  });
3044
+ var _localeOptions5 = PrimeReact.localeOptions(props.locale),
3045
+ nextDecade = _localeOptions5.nextDecade,
3046
+ nextYear = _localeOptions5.nextYear,
3047
+ nextMonth = _localeOptions5.nextMonth;
3048
+ var nextButtonLabel = currentView === 'year' ? nextDecade : currentView === 'month' ? nextYear : nextMonth;
2778
3049
  var nextButtonProps = mergeProps(_objectSpread({
2779
3050
  type: 'button',
2780
- className: cx('nextButton')
3051
+ className: cx('nextButton'),
3052
+ 'aria-label': nextButtonLabel
2781
3053
  }, navigatorProps), ptm('nextButton'));
2782
3054
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2783
3055
  ref: nextButton
@@ -2834,6 +3106,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2834
3106
  }
2835
3107
  var monthTitleProps = mergeProps({
2836
3108
  className: cx('monthTitle'),
3109
+ onKeyDown: onContainerButtonKeydown,
3110
+ 'aria-label': PrimeReact.localeOption('chooseMonth', props.locale),
2837
3111
  onClick: switchToMonthView,
2838
3112
  disabled: switchViewButtonDisabled()
2839
3113
  }, ptm('monthTitle'));
@@ -2892,6 +3166,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2892
3166
  var displayYear = props.numberOfMonths > 1 ? metaYear : currentYear;
2893
3167
  var yearTitleProps = mergeProps({
2894
3168
  className: cx('yearTitle'),
3169
+ 'aria-label': PrimeReact.localeOption('chooseYear', props.locale),
2895
3170
  onClick: function onClick(e) {
2896
3171
  return switchToYearView(e);
2897
3172
  },
@@ -2950,25 +3225,33 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2950
3225
  };
2951
3226
  var createDateCellContent = function createDateCellContent(date, className, groupIndex) {
2952
3227
  var content = props.dateTemplate ? props.dateTemplate(date) : date.day;
3228
+ var selected = isSelected(date);
2953
3229
  var dayLabelProps = mergeProps({
2954
3230
  className: cx('dayLabel', {
2955
3231
  className: className
2956
3232
  }),
3233
+ 'aria-selected': selected,
3234
+ 'aria-disabled': !date.selectable,
2957
3235
  onClick: function onClick(e) {
2958
3236
  return onDateSelect(e, date);
2959
3237
  },
2960
3238
  onKeyDown: function onKeyDown(e) {
2961
3239
  return onDateCellKeydown(e, date, groupIndex);
2962
3240
  },
2963
- 'data-p-highlight': isSelected(date),
3241
+ 'data-p-highlight': selected,
2964
3242
  'data-p-disabled': !date.selectable
2965
3243
  }, ptm('dayLabel', {
2966
3244
  context: {
2967
- selected: isSelected(date),
3245
+ selected: selected,
2968
3246
  disabled: !date.selectable
2969
3247
  }
2970
3248
  }));
2971
- return /*#__PURE__*/React__namespace.createElement("span", dayLabelProps, content);
3249
+ return /*#__PURE__*/React__namespace.createElement("span", dayLabelProps, content, selected && /*#__PURE__*/React__namespace.createElement("div", {
3250
+ "aria-live": "polite",
3251
+ className: "p-hidden-accessible",
3252
+ "data-p-hidden-accessible": true,
3253
+ pt: ptm('hiddenSelectedDay')
3254
+ }));
2972
3255
  };
2973
3256
  var createWeek = function createWeek(weekDates, weekNumber, groupIndex) {
2974
3257
  var week = weekDates.map(function (date) {
@@ -2982,6 +3265,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2982
3265
  className: cx('day', {
2983
3266
  date: date
2984
3267
  }),
3268
+ 'aria-label': date.day,
2985
3269
  'data-p-today': date.today,
2986
3270
  'data-p-other-month': date.otherMonth
2987
3271
  }, ptm('day', {
@@ -3030,6 +3314,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3030
3314
  key: utils.UniqueComponentId('calendar_container_')
3031
3315
  }, ptm('container'));
3032
3316
  var tableProps = mergeProps({
3317
+ role: 'grid',
3033
3318
  className: cx('table')
3034
3319
  }, ptm('table'));
3035
3320
  var tableHeaderProps = mergeProps(ptm('tableHeader'));
@@ -3133,6 +3418,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3133
3418
  if (hour === 0) hour = 12;else if (hour > 11 && hour !== 12) hour = hour - 12;
3134
3419
  }
3135
3420
  var hourProps = mergeProps(ptm('hour'));
3421
+ var _localeOptions6 = PrimeReact.localeOptions(props.locale),
3422
+ nextHour = _localeOptions6.nextHour,
3423
+ prevHour = _localeOptions6.prevHour;
3136
3424
  var hourDisplay = hour < 10 ? '0' + hour : hour;
3137
3425
  var hourPickerProps = mergeProps({
3138
3426
  className: cx('hourPicker')
@@ -3140,26 +3428,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3140
3428
  var incrementButtonProps = mergeProps({
3141
3429
  type: 'button',
3142
3430
  className: cx('incrementButton'),
3431
+ 'aria-label': nextHour,
3143
3432
  onMouseDown: function onMouseDown(e) {
3144
3433
  return onTimePickerElementMouseDown(e, 0, 1);
3145
3434
  },
3146
3435
  onMouseUp: onTimePickerElementMouseUp,
3147
3436
  onMouseLeave: onTimePickerElementMouseLeave,
3148
3437
  onKeyDown: function onKeyDown(e) {
3149
- return onContainerButtonKeydown(e);
3150
- }
3438
+ return onPickerKeyDown(e, 0, 1);
3439
+ },
3440
+ onKeyUp: onPickerKeyUp
3151
3441
  }, ptm('incrementButton'));
3152
3442
  var decrementButtonProps = mergeProps({
3153
3443
  type: 'button',
3154
3444
  className: cx('decrementButton'),
3445
+ 'aria-label': prevHour,
3155
3446
  onMouseDown: function onMouseDown(e) {
3156
3447
  return onTimePickerElementMouseDown(e, 0, -1);
3157
3448
  },
3158
3449
  onMouseUp: onTimePickerElementMouseUp,
3159
3450
  onMouseLeave: onTimePickerElementMouseLeave,
3160
3451
  onKeyDown: function onKeyDown(e) {
3161
- return onContainerButtonKeydown(e);
3162
- }
3452
+ return onPickerKeyDown(e, 0, -1);
3453
+ },
3454
+ onKeyUp: onPickerKeyUp
3163
3455
  }, ptm('decrementButton'));
3164
3456
  return /*#__PURE__*/React__namespace.createElement("div", hourPickerProps, /*#__PURE__*/React__namespace.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)), /*#__PURE__*/React__namespace.createElement("span", hourProps, hourDisplay), /*#__PURE__*/React__namespace.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)));
3165
3457
  };
@@ -3168,6 +3460,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3168
3460
  var minute = doStepMinute(currentTime.getMinutes());
3169
3461
  minute = minute > 59 ? minute - 60 : minute;
3170
3462
  var minuteProps = mergeProps(ptm('minute'));
3463
+ var _localeOptions7 = PrimeReact.localeOptions(props.locale),
3464
+ nextMinute = _localeOptions7.nextMinute,
3465
+ prevMinute = _localeOptions7.prevMinute;
3171
3466
  var minuteDisplay = minute < 10 ? '0' + minute : minute;
3172
3467
  var minutePickerProps = mergeProps({
3173
3468
  className: cx('minutePicker')
@@ -3175,32 +3470,39 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3175
3470
  var incrementButtonProps = mergeProps({
3176
3471
  type: 'button',
3177
3472
  className: cx('incrementButton'),
3473
+ 'aria-label': nextMinute,
3178
3474
  onMouseDown: function onMouseDown(e) {
3179
3475
  return onTimePickerElementMouseDown(e, 1, 1);
3180
3476
  },
3181
3477
  onMouseUp: onTimePickerElementMouseUp,
3182
3478
  onMouseLeave: onTimePickerElementMouseLeave,
3183
3479
  onKeyDown: function onKeyDown(e) {
3184
- return onContainerButtonKeydown(e);
3185
- }
3480
+ return onPickerKeyDown(e, 1, 1);
3481
+ },
3482
+ onKeyUp: onPickerKeyUp
3186
3483
  }, ptm('incrementButton'));
3187
3484
  var decrementButtonProps = mergeProps({
3188
3485
  type: 'button',
3189
3486
  className: cx('decrementButton'),
3487
+ 'aria-label': prevMinute,
3190
3488
  onMouseDown: function onMouseDown(e) {
3191
3489
  return onTimePickerElementMouseDown(e, 1, -1);
3192
3490
  },
3193
3491
  onMouseUp: onTimePickerElementMouseUp,
3194
3492
  onMouseLeave: onTimePickerElementMouseLeave,
3195
3493
  onKeyDown: function onKeyDown(e) {
3196
- return onContainerButtonKeydown(e);
3197
- }
3494
+ return onPickerKeyDown(e, 1, -1);
3495
+ },
3496
+ onKeyUp: onPickerKeyUp
3198
3497
  }, ptm('decrementButton'));
3199
3498
  return /*#__PURE__*/React__namespace.createElement("div", minutePickerProps, /*#__PURE__*/React__namespace.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)), /*#__PURE__*/React__namespace.createElement("span", minuteProps, minuteDisplay), /*#__PURE__*/React__namespace.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)));
3200
3499
  };
3201
3500
  var createSecondPicker = function createSecondPicker() {
3202
3501
  if (props.showSeconds) {
3203
3502
  var currentTime = getCurrentDateTime();
3503
+ var _localeOptions8 = PrimeReact.localeOptions(props.locale),
3504
+ nextSecond = _localeOptions8.nextSecond,
3505
+ prevSecond = _localeOptions8.prevSecond;
3204
3506
  var secondProps = mergeProps(ptm('second'));
3205
3507
  var second = currentTime.getSeconds();
3206
3508
  var secondDisplay = second < 10 ? '0' + second : second;
@@ -3210,26 +3512,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3210
3512
  var incrementButtonProps = mergeProps({
3211
3513
  type: 'button',
3212
3514
  className: cx('incrementButton'),
3515
+ 'aria-label': nextSecond,
3213
3516
  onMouseDown: function onMouseDown(e) {
3214
3517
  return onTimePickerElementMouseDown(e, 2, 1);
3215
3518
  },
3216
3519
  onMouseUp: onTimePickerElementMouseUp,
3217
3520
  onMouseLeave: onTimePickerElementMouseLeave,
3218
3521
  onKeyDown: function onKeyDown(e) {
3219
- return onContainerButtonKeydown(e);
3220
- }
3522
+ return onPickerKeyDown(e, 2, 1);
3523
+ },
3524
+ onKeyUp: onPickerKeyUp
3221
3525
  }, ptm('incrementButton'));
3222
3526
  var decrementButtonProps = mergeProps({
3223
3527
  type: 'button',
3224
3528
  className: cx('decrementButton'),
3529
+ 'aria-label': prevSecond,
3225
3530
  onMouseDown: function onMouseDown(e) {
3226
3531
  return onTimePickerElementMouseDown(e, 2, -1);
3227
3532
  },
3228
3533
  onMouseUp: onTimePickerElementMouseUp,
3229
3534
  onMouseLeave: onTimePickerElementMouseLeave,
3230
3535
  onKeyDown: function onKeyDown(e) {
3231
- return onContainerButtonKeydown(e);
3232
- }
3536
+ return onPickerKeyDown(e, 2, -1);
3537
+ },
3538
+ onKeyUp: onPickerKeyUp
3233
3539
  }, ptm('decrementButton'));
3234
3540
  return /*#__PURE__*/React__namespace.createElement("div", secondPickerProps, /*#__PURE__*/React__namespace.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)), /*#__PURE__*/React__namespace.createElement("span", secondProps, secondDisplay), /*#__PURE__*/React__namespace.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)));
3235
3541
  }
@@ -3238,6 +3544,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3238
3544
  var createMiliSecondPicker = function createMiliSecondPicker() {
3239
3545
  if (props.showMillisec) {
3240
3546
  var currentTime = getCurrentDateTime();
3547
+ var _localeOptions9 = PrimeReact.localeOptions(props.locale),
3548
+ nextMilliSecond = _localeOptions9.nextMilliSecond,
3549
+ prevMilliSecond = _localeOptions9.prevMilliSecond;
3241
3550
  var millisecondProps = mergeProps(ptm('millisecond'));
3242
3551
  var millisecond = currentTime.getMilliseconds();
3243
3552
  var millisecondDisplay = millisecond < 100 ? (millisecond < 10 ? '00' : '0') + millisecond : millisecond;
@@ -3247,26 +3556,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3247
3556
  var incrementButtonProps = mergeProps({
3248
3557
  type: 'button',
3249
3558
  className: cx('incrementButton'),
3559
+ 'aria-label': nextMilliSecond,
3250
3560
  onMouseDown: function onMouseDown(e) {
3251
3561
  return onTimePickerElementMouseDown(e, 3, 1);
3252
3562
  },
3253
3563
  onMouseUp: onTimePickerElementMouseUp,
3254
3564
  onMouseLeave: onTimePickerElementMouseLeave,
3255
3565
  onKeyDown: function onKeyDown(e) {
3256
- return onContainerButtonKeydown(e);
3257
- }
3566
+ return onPickerKeyDown(e, 3, 1);
3567
+ },
3568
+ onKeyUp: onPickerKeyUp
3258
3569
  }, ptm('incrementButton'));
3259
3570
  var decrementButtonProps = mergeProps({
3260
3571
  type: 'button',
3261
3572
  className: cx('decrementButton'),
3573
+ 'aria-label': prevMilliSecond,
3262
3574
  onMouseDown: function onMouseDown(e) {
3263
3575
  return onTimePickerElementMouseDown(e, 3, -1);
3264
3576
  },
3265
3577
  onMouseUp: onTimePickerElementMouseUp,
3266
3578
  onMouseLeave: onTimePickerElementMouseLeave,
3267
3579
  onKeyDown: function onKeyDown(e) {
3268
- return onContainerButtonKeydown(e);
3269
- }
3580
+ return onPickerKeyDown(e, 3, -1);
3581
+ },
3582
+ onKeyUp: onPickerKeyUp
3270
3583
  }, ptm('decrementButton'));
3271
3584
  return /*#__PURE__*/React__namespace.createElement("div", millisecondPickerProps, /*#__PURE__*/React__namespace.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)), /*#__PURE__*/React__namespace.createElement("span", millisecondProps, millisecondDisplay), /*#__PURE__*/React__namespace.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)));
3272
3585
  }
@@ -3275,6 +3588,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3275
3588
  var createAmPmPicker = function createAmPmPicker() {
3276
3589
  if (props.hourFormat === '12') {
3277
3590
  var currentTime = getCurrentDateTime();
3591
+ var _localeOptions10 = PrimeReact.localeOptions(props.locale),
3592
+ am = _localeOptions10.am,
3593
+ pm = _localeOptions10.pm;
3278
3594
  var hour = currentTime.getHours();
3279
3595
  var display = hour > 11 ? 'PM' : 'AM';
3280
3596
  var ampmProps = mergeProps(ptm('ampm'));
@@ -3284,6 +3600,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3284
3600
  var incrementButtonProps = mergeProps({
3285
3601
  type: 'button',
3286
3602
  className: cx('incrementButton'),
3603
+ 'aria-label': am,
3287
3604
  onClick: function onClick(e) {
3288
3605
  return toggleAmPm(e);
3289
3606
  }
@@ -3291,6 +3608,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3291
3608
  var decrementButtonProps = mergeProps({
3292
3609
  type: 'button',
3293
3610
  className: cx('decrementButton'),
3611
+ 'aria-label': pm,
3294
3612
  onClick: function onClick(e) {
3295
3613
  return toggleAmPm(e);
3296
3614
  }
@@ -3322,6 +3640,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3322
3640
  id: props.inputId,
3323
3641
  name: props.name,
3324
3642
  type: "text",
3643
+ role: "combobox",
3325
3644
  className: props.inputClassName,
3326
3645
  style: props.inputStyle,
3327
3646
  readOnly: props.readOnlyInput,
@@ -3334,7 +3653,12 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3334
3653
  onFocus: onInputFocus,
3335
3654
  onBlur: onInputBlur,
3336
3655
  onKeyDown: onInputKeyDown,
3656
+ "aria-expanded": overlayVisibleState,
3657
+ "aria-autocomplete": "none",
3658
+ "aria-haspopup": "dialog",
3659
+ "aria-controls": panelId,
3337
3660
  "aria-labelledby": props.ariaLabelledBy,
3661
+ "aria-label": props.ariaLabel,
3338
3662
  inputMode: props.inputMode,
3339
3663
  tooltip: props.tooltip,
3340
3664
  tooltipOptions: props.tooltipOptions,
@@ -3354,6 +3678,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3354
3678
  onClick: onButtonClick,
3355
3679
  tabIndex: "-1",
3356
3680
  disabled: props.disabled,
3681
+ "aria-haspopup": "dialog",
3682
+ "aria-label": PrimeReact.localeOption('chooseDate', props.locale),
3683
+ "aria-expanded": overlayVisibleState,
3684
+ "aria-controls": panelId,
3357
3685
  className: cx('dropdownButton'),
3358
3686
  pt: ptm('dropdownButton'),
3359
3687
  __parentMetadata: {
@@ -3373,21 +3701,27 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3373
3701
  };
3374
3702
  var createButtonBar = function createButtonBar() {
3375
3703
  if (props.showButtonBar) {
3376
- var _localeOptions4 = PrimeReact.localeOptions(props.locale),
3377
- today = _localeOptions4.today,
3378
- clear = _localeOptions4.clear;
3704
+ var _localeOptions11 = PrimeReact.localeOptions(props.locale),
3705
+ today = _localeOptions11.today,
3706
+ clear = _localeOptions11.clear,
3707
+ now = _localeOptions11.now;
3708
+ var nowDate = new Date();
3709
+ var isHidden = props.minDate && props.minDate > nowDate || props.maxDate && props.maxDate < nowDate;
3379
3710
  var buttonbarProps = mergeProps({
3380
3711
  className: cx('buttonbar')
3381
3712
  }, ptm('buttonbar'));
3382
3713
  return /*#__PURE__*/React__namespace.createElement("div", buttonbarProps, /*#__PURE__*/React__namespace.createElement(button.Button, {
3383
3714
  type: "button",
3384
- label: today,
3715
+ label: props.showTime ? now : today,
3385
3716
  onClick: onTodayButtonClick,
3386
3717
  onKeyDown: function onKeyDown(e) {
3387
3718
  return onContainerButtonKeydown(e);
3388
3719
  },
3389
3720
  className: utils.classNames(props.todayButtonClassName, cx('todayButton')),
3390
- pt: ptm('todayButton')
3721
+ pt: ptm('todayButton'),
3722
+ style: isHidden ? {
3723
+ visibility: 'hidden'
3724
+ } : undefined
3391
3725
  }), /*#__PURE__*/React__namespace.createElement(button.Button, {
3392
3726
  type: "button",
3393
3727
  label: clear,
@@ -3417,6 +3751,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3417
3751
  className: cx('monthPicker')
3418
3752
  }, ptm('monthPicker'));
3419
3753
  return /*#__PURE__*/React__namespace.createElement("div", monthPickerProps, monthPickerValues().map(function (m, i) {
3754
+ var selected = isMonthSelected(i);
3420
3755
  var monthProps = mergeProps({
3421
3756
  className: cx('month', {
3422
3757
  isMonthSelected: isMonthSelected,
@@ -3431,18 +3766,23 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3431
3766
  return onMonthCellKeydown(event, i);
3432
3767
  },
3433
3768
  'data-p-disabled': isMonthYearDisabled(i, currentYear),
3434
- 'data-p-highlight': isMonthSelected(i)
3769
+ 'data-p-highlight': selected
3435
3770
  }, ptm('month', {
3436
3771
  context: {
3437
3772
  month: m,
3438
3773
  monthIndex: i,
3439
- selected: isMonthSelected(i),
3774
+ selected: selected,
3440
3775
  disabled: isMonthYearDisabled(i, currentYear)
3441
3776
  }
3442
3777
  }));
3443
3778
  return /*#__PURE__*/React__namespace.createElement("span", _extends({}, monthProps, {
3444
3779
  key: "month".concat(i + 1)
3445
- }), m);
3780
+ }), m, selected && /*#__PURE__*/React__namespace.createElement("div", {
3781
+ "aria-live": "polite",
3782
+ className: "p-hidden-accessible",
3783
+ "data-p-hidden-accessible": true,
3784
+ pt: ptm('hiddenMonth')
3785
+ }, m));
3446
3786
  }));
3447
3787
  }
3448
3788
  return null;
@@ -3453,6 +3793,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3453
3793
  className: cx('yearPicker')
3454
3794
  }, ptm('yearPicker'));
3455
3795
  return /*#__PURE__*/React__namespace.createElement("div", yearPickerProps, yearPickerValues().map(function (y, i) {
3796
+ var selected = isYearSelected(y);
3456
3797
  var yearProps = mergeProps({
3457
3798
  className: cx('year', {
3458
3799
  isYearSelected: isYearSelected,
@@ -3462,19 +3803,27 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3462
3803
  onClick: function onClick(event) {
3463
3804
  return onYearSelect(event, y);
3464
3805
  },
3806
+ onKeyDown: function onKeyDown(event) {
3807
+ return onYearCellKeydown(event, y);
3808
+ },
3465
3809
  'data-p-highlight': isYearSelected(y),
3466
3810
  'data-p-disabled': isMonthYearDisabled(-1, y)
3467
3811
  }, ptm('year', {
3468
3812
  context: {
3469
3813
  year: y,
3470
3814
  yearIndex: i,
3471
- selected: isYearSelected(i),
3815
+ selected: selected,
3472
3816
  disabled: isMonthYearDisabled(-1, y)
3473
3817
  }
3474
3818
  }));
3475
3819
  return /*#__PURE__*/React__namespace.createElement("span", _extends({}, yearProps, {
3476
3820
  key: "year".concat(i + 1)
3477
- }), y);
3821
+ }), y, selected && /*#__PURE__*/React__namespace.createElement("div", {
3822
+ "aria-live": "polite",
3823
+ className: "p-hidden-accessible",
3824
+ "data-p-hidden-accessible": true,
3825
+ pt: ptm('hiddenYear')
3826
+ }, y));
3478
3827
  }));
3479
3828
  }
3480
3829
  return null;
@@ -3501,7 +3850,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3501
3850
  id: props.id,
3502
3851
  className: utils.classNames(props.className, cx('root', {
3503
3852
  focusedState: focusedState,
3504
- isFilled: isFilled
3853
+ isFilled: isFilled,
3854
+ panelVisible: visible
3505
3855
  })),
3506
3856
  style: props.style
3507
3857
  }, CalendarBase.getOtherProps(props), ptm('root'));
@@ -3509,6 +3859,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3509
3859
  ref: elementRef
3510
3860
  }, rootProps), content, /*#__PURE__*/React__namespace.createElement(CalendarPanel, {
3511
3861
  hostName: "Calendar",
3862
+ id: panelId,
3863
+ locale: props.locale,
3512
3864
  ref: overlayRef,
3513
3865
  className: panelClassName,
3514
3866
  style: props.panelStyle,