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
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import * as React from 'react';
3
- import PrimeReact, { PrimeReactContext, localeOptions, localeOption } from 'primereact/api';
3
+ import PrimeReact, { localeOption, PrimeReactContext, localeOptions } from 'primereact/api';
4
4
  import { Button } from 'primereact/button';
5
5
  import { ComponentBase, useHandleStyle } from 'primereact/componentbase';
6
6
  import { useMergeProps, usePrevious, useOverlayListener, useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks';
@@ -143,13 +143,14 @@ function _slicedToArray(arr, i) {
143
143
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
144
144
  }
145
145
 
146
- 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";
146
+ 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";
147
147
  var classes = {
148
148
  root: function root(_ref) {
149
149
  var props = _ref.props,
150
150
  focusedState = _ref.focusedState,
151
- isFilled = _ref.isFilled;
152
- return 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));
151
+ isFilled = _ref.isFilled,
152
+ panelVisible = _ref.panelVisible;
153
+ return 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));
153
154
  },
154
155
  dropdownButton: 'p-datepicker-trigger',
155
156
  buttonbar: 'p-datepicker-buttonbar',
@@ -228,6 +229,7 @@ var CalendarBase = ComponentBase.extend({
228
229
  __TYPE: 'Calendar',
229
230
  appendTo: null,
230
231
  ariaLabelledBy: null,
232
+ ariaLabel: null,
231
233
  autoZIndex: true,
232
234
  autoFocus: false,
233
235
  baseZIndex: 0,
@@ -335,6 +337,10 @@ var CalendarPanel = /*#__PURE__*/React.forwardRef(function (props, ref) {
335
337
  panelClassName: props.className
336
338
  }),
337
339
  style: props.style,
340
+ role: props.inline ? null : 'dialog',
341
+ id: props.id,
342
+ 'aria-label': localeOption('chooseDate', props.locale),
343
+ 'aria-modal': props.inline ? null : 'true',
338
344
  onClick: props.onClick,
339
345
  onMouseUp: props.onMouseUp
340
346
  }, props.ptm('panel', {
@@ -391,6 +397,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
391
397
  _React$useState6 = _slicedToArray(_React$useState5, 2),
392
398
  viewDateState = _React$useState6[0],
393
399
  setViewDateState = _React$useState6[1];
400
+ var _React$useState7 = React.useState(props.id),
401
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
402
+ idState = _React$useState8[0],
403
+ setIdState = _React$useState8[1];
394
404
  var metaData = {
395
405
  props: props,
396
406
  state: {
@@ -419,26 +429,29 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
419
429
  var isOverlayClicked = React.useRef(false);
420
430
  var previousButton = React.useRef(false);
421
431
  var nextButton = React.useRef(false);
432
+ var viewChangedWithKeyDown = React.useRef(false);
422
433
  var onChangeRef = React.useRef(null);
423
- var _React$useState7 = React.useState('date'),
424
- _React$useState8 = _slicedToArray(_React$useState7, 2),
425
- currentView = _React$useState8[0],
426
- setCurrentView = _React$useState8[1];
427
- var _React$useState9 = React.useState(null),
434
+ var isClearClicked = React.useRef(false);
435
+ var _React$useState9 = React.useState('date'),
428
436
  _React$useState10 = _slicedToArray(_React$useState9, 2),
429
- currentMonth = _React$useState10[0],
430
- setCurrentMonth = _React$useState10[1];
437
+ currentView = _React$useState10[0],
438
+ setCurrentView = _React$useState10[1];
431
439
  var _React$useState11 = React.useState(null),
432
440
  _React$useState12 = _slicedToArray(_React$useState11, 2),
433
- currentYear = _React$useState12[0],
434
- setCurrentYear = _React$useState12[1];
435
- var _React$useState13 = React.useState([]),
441
+ currentMonth = _React$useState12[0],
442
+ setCurrentMonth = _React$useState12[1];
443
+ var _React$useState13 = React.useState(null),
436
444
  _React$useState14 = _slicedToArray(_React$useState13, 2),
437
- yearOptions = _React$useState14[0],
438
- setYearOptions = _React$useState14[1];
445
+ currentYear = _React$useState14[0],
446
+ setCurrentYear = _React$useState14[1];
447
+ var _React$useState15 = React.useState([]),
448
+ _React$useState16 = _slicedToArray(_React$useState15, 2),
449
+ yearOptions = _React$useState16[0],
450
+ setYearOptions = _React$useState16[1];
439
451
  var previousValue = usePrevious(props.value);
440
452
  var visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState);
441
453
  var attributeSelector = UniqueComponentId();
454
+ var panelId = idState + '_panel';
442
455
  var _useOverlayListener = useOverlayListener({
443
456
  target: elementRef,
444
457
  overlay: overlayRef,
@@ -446,7 +459,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
446
459
  var type = _ref.type,
447
460
  valid = _ref.valid;
448
461
  if (valid) {
449
- type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside') : hide();
462
+ type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside', reFocusInputField) : hide(null, reFocusInputField);
450
463
  }
451
464
  isOverlayClicked.current = false;
452
465
  },
@@ -476,21 +489,34 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
476
489
  setFocusedState(false);
477
490
  };
478
491
  var onInputKeyDown = function onInputKeyDown(event) {
479
- switch (event.which) {
480
- //escape
481
- case 27:
492
+ switch (event.code) {
493
+ case 'ArrowDown':
482
494
  {
483
- hide();
495
+ if (!overlayVisibleState) {
496
+ show();
497
+ } else {
498
+ focusToFirstCell();
499
+ event.preventDefault();
500
+ }
484
501
  break;
485
502
  }
486
-
487
- //tab
488
- case 9:
503
+ case 'Escape':
489
504
  {
490
- visible && trapFocus(event);
505
+ hide();
491
506
  props.touchUI && disableModality();
492
507
  break;
493
508
  }
509
+ case 'Tab':
510
+ {
511
+ if (overlayRef && overlayRef.current) {
512
+ DomHandler.getFocusableElements(overlayRef.current).forEach(function (el) {
513
+ return el.tabIndex = '-1';
514
+ });
515
+ hide();
516
+ props.touchUI && disableModality();
517
+ }
518
+ break;
519
+ }
494
520
  }
495
521
  };
496
522
  var onUserInput = function onUserInput(event) {
@@ -553,28 +579,40 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
553
579
  navForward(event);
554
580
  };
555
581
  var onContainerButtonKeydown = function onContainerButtonKeydown(event) {
556
- switch (event.which) {
557
- //tab
558
- case 9:
559
- trapFocus(event);
582
+ switch (event.code) {
583
+ case 'Tab':
584
+ !props.inline && trapFocus(event);
560
585
  break;
561
-
562
- //escape
563
- case 27:
586
+ case 'Escape':
564
587
  hide(null, reFocusInputField);
565
588
  event.preventDefault();
566
589
  break;
567
590
  }
568
591
  };
592
+ var onPickerKeyDown = function onPickerKeyDown(event, type, direction) {
593
+ if (event.code === 'Enter' || event.code === 'Space') {
594
+ onTimePickerElementMouseDown(event, type, direction);
595
+ event.preventDefault();
596
+ return;
597
+ }
598
+ onContainerButtonKeydown(event);
599
+ };
600
+ var onPickerKeyUp = function onPickerKeyUp(event) {
601
+ if (event.code === 'Enter' || event.code === 'Space') {
602
+ onTimePickerElementMouseUp();
603
+ event.preventDefault();
604
+ return;
605
+ }
606
+ };
569
607
  var trapFocus = function trapFocus(event) {
570
- event.preventDefault();
608
+ event === null || event === void 0 || event.preventDefault();
571
609
  var focusableElements = DomHandler.getFocusableElements(overlayRef.current);
572
610
  if (focusableElements && focusableElements.length > 0) {
573
611
  if (!document.activeElement) {
574
612
  focusableElements[0].focus();
575
613
  } else {
576
614
  var focusedIndex = focusableElements.indexOf(document.activeElement);
577
- if (event.shiftKey) {
615
+ if (event !== null && event !== void 0 && event.shiftKey) {
578
616
  if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();else focusableElements[focusedIndex - 1].focus();
579
617
  } else {
580
618
  if (focusedIndex === -1 || focusedIndex === focusableElements.length - 1) focusableElements[0].focus();else focusableElements[focusedIndex + 1].focus();
@@ -607,7 +645,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
607
645
  };
608
646
  var initFocusableCell = function initFocusableCell() {
609
647
  var cell;
610
- if (props.view === 'month') {
648
+ if (currentView === 'month') {
611
649
  var cells = DomHandler.find(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"]');
612
650
  var selectedCell = DomHandler.findSingle(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"][data-p-highlight="true"]');
613
651
  cells.forEach(function (cell) {
@@ -625,6 +663,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
625
663
  cell.tabIndex = '0';
626
664
  }
627
665
  };
666
+ var focusToFirstCell = function focusToFirstCell() {
667
+ if (currentView) {
668
+ var cell;
669
+ if (currentView === 'date') {
670
+ cell = DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
671
+ if (!cell) {
672
+ var todayCell = DomHandler.findSingle(overlayRef.current, 'td.p-datepicker-today span:not(.p-disabled)');
673
+ cell = todayCell || DomHandler.findSingle(overlayRef.current, 'table td span:not([data-p-disabled="true"])');
674
+ }
675
+ } else if (currentView === 'month' || currentView === 'year') {
676
+ cell = DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
677
+ if (!cell) {
678
+ cell = DomHandler.findSingle(overlayRef.current, "[data-pc-section=\"".concat(currentView, "picker\"] [data-pc-section=\"").concat(currentView, "\"]:not([data-p-disabled=\"true\"])"));
679
+ }
680
+ }
681
+ if (cell) {
682
+ cell.tabIndex = '0';
683
+ cell && cell.focus();
684
+ }
685
+ }
686
+ };
628
687
  var navBackward = function navBackward(event) {
629
688
  if (props.disabled) {
630
689
  event.preventDefault();
@@ -754,6 +813,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
754
813
  props.onTodayButtonClick && props.onTodayButtonClick(event);
755
814
  };
756
815
  var onClearButtonClick = function onClearButtonClick(event) {
816
+ isClearClicked.current = true;
757
817
  updateModel(event, null);
758
818
  updateInputfield(null);
759
819
  hide();
@@ -1235,23 +1295,29 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1235
1295
  var onDateCellKeydown = function onDateCellKeydown(event, date, groupIndex) {
1236
1296
  var cellContent = event.currentTarget;
1237
1297
  var cell = cellContent.parentElement;
1238
- switch (event.which) {
1239
- //down arrow
1240
- case 40:
1298
+ var cellIndex = DomHandler.index(cell);
1299
+ switch (event.code) {
1300
+ case 'ArrowDown':
1241
1301
  {
1242
1302
  cellContent.tabIndex = '-1';
1243
- var cellIndex = DomHandler.index(cell);
1244
1303
  var nextRow = cell.parentElement.nextElementSibling;
1245
1304
  if (nextRow) {
1246
- var focusCell = nextRow.children[cellIndex].children[0];
1247
- if (DomHandler.hasClass(focusCell, 'p-disabled')) {
1305
+ var tableRowIndex = DomHandler.index(cell.parentElement);
1306
+ var tableRows = Array.from(cell.parentElement.parentElement.children);
1307
+ var nextTableRows = tableRows.slice(tableRowIndex + 1);
1308
+ var hasNextFocusableDate = nextTableRows.find(function (el) {
1309
+ var focusCell = el.children[cellIndex].children[0];
1310
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
1311
+ });
1312
+ if (hasNextFocusableDate) {
1313
+ var focusCell = hasNextFocusableDate.children[cellIndex].children[0];
1314
+ focusCell.tabIndex = '0';
1315
+ focusCell.focus();
1316
+ } else {
1248
1317
  navigation.current = {
1249
1318
  backward: false
1250
1319
  };
1251
1320
  navForward(event);
1252
- } else {
1253
- nextRow.children[cellIndex].children[0].tabIndex = '0';
1254
- nextRow.children[cellIndex].children[0].focus();
1255
1321
  }
1256
1322
  } else {
1257
1323
  navigation.current = {
@@ -1262,46 +1328,58 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1262
1328
  event.preventDefault();
1263
1329
  break;
1264
1330
  }
1265
-
1266
- //up arrow
1267
- case 38:
1331
+ case 'ArrowUp':
1268
1332
  {
1269
1333
  cellContent.tabIndex = '-1';
1270
- var _cellIndex = DomHandler.index(cell);
1271
- var prevRow = cell.parentElement.previousElementSibling;
1272
- if (prevRow) {
1273
- var _focusCell = prevRow.children[_cellIndex].children[0];
1274
- if (DomHandler.hasClass(_focusCell, 'p-disabled')) {
1334
+ if (event.altKey) {
1335
+ hide(null, reFocusInputField);
1336
+ } else {
1337
+ var prevRow = cell.parentElement.previousElementSibling;
1338
+ if (prevRow) {
1339
+ var _tableRowIndex = DomHandler.index(cell.parentElement);
1340
+ var _tableRows = Array.from(cell.parentElement.parentElement.children);
1341
+ var prevTableRows = _tableRows.slice(0, _tableRowIndex).reverse();
1342
+ var _hasNextFocusableDate = prevTableRows.find(function (el) {
1343
+ var focusCell = el.children[cellIndex].children[0];
1344
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
1345
+ });
1346
+ if (_hasNextFocusableDate) {
1347
+ var _focusCell = _hasNextFocusableDate.children[cellIndex].children[0];
1348
+ _focusCell.tabIndex = '0';
1349
+ _focusCell.focus();
1350
+ } else {
1351
+ navigation.current = {
1352
+ backward: true
1353
+ };
1354
+ navBackward(event);
1355
+ }
1356
+ } else {
1275
1357
  navigation.current = {
1276
1358
  backward: true
1277
1359
  };
1278
1360
  navBackward(event);
1279
- } else {
1280
- _focusCell.tabIndex = '0';
1281
- _focusCell.focus();
1282
1361
  }
1283
- } else {
1284
- navigation.current = {
1285
- backward: true
1286
- };
1287
- navBackward(event);
1288
1362
  }
1289
1363
  event.preventDefault();
1290
1364
  break;
1291
1365
  }
1292
-
1293
- //left arrow
1294
- case 37:
1366
+ case 'ArrowLeft':
1295
1367
  {
1296
1368
  cellContent.tabIndex = '-1';
1297
1369
  var prevCell = cell.previousElementSibling;
1298
1370
  if (prevCell) {
1299
- var _focusCell2 = prevCell.children[0];
1300
- if (DomHandler.hasClass(_focusCell2, 'p-disabled')) {
1301
- navigateToMonth(true, groupIndex, event);
1302
- } else {
1371
+ var cells = Array.from(cell.parentElement.children);
1372
+ var prevCells = cells.slice(0, cellIndex).reverse();
1373
+ var _hasNextFocusableDate2 = prevCells.find(function (el) {
1374
+ var focusCell = el.children[0];
1375
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
1376
+ });
1377
+ if (_hasNextFocusableDate2) {
1378
+ var _focusCell2 = _hasNextFocusableDate2.children[0];
1303
1379
  _focusCell2.tabIndex = '0';
1304
1380
  _focusCell2.focus();
1381
+ } else {
1382
+ navigateToMonth(true, groupIndex, event);
1305
1383
  }
1306
1384
  } else {
1307
1385
  navigateToMonth(true, groupIndex, event);
@@ -1309,19 +1387,23 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1309
1387
  event.preventDefault();
1310
1388
  break;
1311
1389
  }
1312
-
1313
- //right arrow
1314
- case 39:
1390
+ case 'ArrowRight':
1315
1391
  {
1316
1392
  cellContent.tabIndex = '-1';
1317
1393
  var nextCell = cell.nextElementSibling;
1318
1394
  if (nextCell) {
1319
- var _focusCell3 = nextCell.children[0];
1320
- if (DomHandler.hasClass(_focusCell3, 'p-disabled')) {
1321
- navigateToMonth(false, groupIndex, event);
1322
- } else {
1395
+ var _cells = Array.from(cell.parentElement.children);
1396
+ var nextCells = _cells.slice(cellIndex + 1);
1397
+ var _hasNextFocusableDate3 = nextCells.find(function (el) {
1398
+ var focusCell = el.children[0];
1399
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
1400
+ });
1401
+ if (_hasNextFocusableDate3) {
1402
+ var _focusCell3 = _hasNextFocusableDate3.children[0];
1323
1403
  _focusCell3.tabIndex = '0';
1324
1404
  _focusCell3.focus();
1405
+ } else {
1406
+ navigateToMonth(false, groupIndex, event);
1325
1407
  }
1326
1408
  } else {
1327
1409
  navigateToMonth(false, groupIndex, event);
@@ -1329,27 +1411,75 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1329
1411
  event.preventDefault();
1330
1412
  break;
1331
1413
  }
1332
-
1333
- //enter
1334
- case 13:
1414
+ case 'Enter':
1415
+ case 'NumpadEnter':
1416
+ case 'Space':
1335
1417
  {
1336
1418
  onDateSelect(event, date);
1337
1419
  event.preventDefault();
1338
1420
  break;
1339
1421
  }
1340
-
1341
- //escape
1342
- case 27:
1422
+ case 'Escape':
1343
1423
  {
1344
1424
  hide(null, reFocusInputField);
1345
1425
  event.preventDefault();
1346
1426
  break;
1347
1427
  }
1348
-
1349
- //tab
1350
- case 9:
1428
+ case 'Tab':
1351
1429
  {
1352
- trapFocus(event);
1430
+ if (!props.inline) trapFocus(event);
1431
+ break;
1432
+ }
1433
+ case 'Home':
1434
+ {
1435
+ cellContent.tabIndex = '-1';
1436
+ var currentRow = cell.parentElement;
1437
+ var _focusCell4 = currentRow.children[0].children[0];
1438
+ if (DomHandler.getAttribute(_focusCell4, 'data-p-disabled')) {
1439
+ navigateToMonth(groupIndex, true, event);
1440
+ } else {
1441
+ _focusCell4.tabIndex = '0';
1442
+ _focusCell4.focus();
1443
+ }
1444
+ event.preventDefault();
1445
+ break;
1446
+ }
1447
+ case 'End':
1448
+ {
1449
+ cellContent.tabIndex = '-1';
1450
+ var _currentRow = cell.parentElement;
1451
+ var _focusCell5 = _currentRow.children[_currentRow.children.length - 1].children[0];
1452
+ if (DomHandler.getAttribute(_focusCell5, 'data-p-disabled')) {
1453
+ navigateToMonth(groupIndex, false, event);
1454
+ } else {
1455
+ _focusCell5.tabIndex = '0';
1456
+ _focusCell5.focus();
1457
+ }
1458
+ event.preventDefault();
1459
+ break;
1460
+ }
1461
+ case 'PageUp':
1462
+ {
1463
+ cellContent.tabIndex = '-1';
1464
+ if (event.shiftKey) {
1465
+ navigation.current = {
1466
+ backward: true
1467
+ };
1468
+ navBackward(event);
1469
+ } else navigateToMonth(groupIndex, true, event);
1470
+ event.preventDefault();
1471
+ break;
1472
+ }
1473
+ case 'PageDown':
1474
+ {
1475
+ cellContent.tabIndex = '-1';
1476
+ if (event.shiftKey) {
1477
+ navigation.current = {
1478
+ backward: false
1479
+ };
1480
+ navForward(event);
1481
+ } else navigateToMonth(groupIndex, false, event);
1482
+ event.preventDefault();
1353
1483
  break;
1354
1484
  }
1355
1485
  }
@@ -1376,18 +1506,18 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1376
1506
  navForward(event);
1377
1507
  } else {
1378
1508
  var nextMonthContainer = overlayRef.current.children[groupIndex + 1];
1379
- var _focusCell4 = DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
1380
- _focusCell4.tabIndex = '0';
1381
- _focusCell4.focus();
1509
+ var _focusCell6 = DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
1510
+ _focusCell6.tabIndex = '0';
1511
+ _focusCell6.focus();
1382
1512
  }
1383
1513
  }
1384
1514
  };
1385
1515
  var onMonthCellKeydown = function onMonthCellKeydown(event, index) {
1386
1516
  var cell = event.currentTarget;
1387
- switch (event.which) {
1517
+ switch (event.code) {
1388
1518
  //arrows
1389
- case 38:
1390
- case 40:
1519
+ case 'ArrowUp':
1520
+ case 'ArrowDown':
1391
1521
  {
1392
1522
  cell.tabIndex = '-1';
1393
1523
  var cells = cell.parentElement.children;
@@ -1400,51 +1530,162 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1400
1530
  event.preventDefault();
1401
1531
  break;
1402
1532
  }
1403
-
1404
- //left arrow
1405
- case 37:
1533
+ case 'ArrowLeft':
1406
1534
  {
1407
1535
  cell.tabIndex = '-1';
1408
1536
  var prevCell = cell.previousElementSibling;
1409
1537
  if (prevCell) {
1410
1538
  prevCell.tabIndex = '0';
1411
1539
  prevCell.focus();
1540
+ } else {
1541
+ navigation.current = {
1542
+ backward: true
1543
+ };
1544
+ navBackward(event);
1412
1545
  }
1413
1546
  event.preventDefault();
1414
1547
  break;
1415
1548
  }
1416
-
1417
- //right arrow
1418
- case 39:
1549
+ case 'ArrowRight':
1419
1550
  {
1420
1551
  cell.tabIndex = '-1';
1421
1552
  var _nextCell = cell.nextElementSibling;
1422
1553
  if (_nextCell) {
1423
1554
  _nextCell.tabIndex = '0';
1424
1555
  _nextCell.focus();
1556
+ } else {
1557
+ navigation.current = {
1558
+ backward: false
1559
+ };
1560
+ navForward(event);
1425
1561
  }
1426
1562
  event.preventDefault();
1427
1563
  break;
1428
1564
  }
1429
-
1430
- //enter
1431
- case 13:
1565
+ case 'PageUp':
1566
+ {
1567
+ if (event.shiftKey) return;
1568
+ navigation.current = {
1569
+ backward: true
1570
+ };
1571
+ navBackward(event);
1572
+ break;
1573
+ }
1574
+ case 'PageDown':
1575
+ {
1576
+ if (event.shiftKey) return;
1577
+ navigation.current = {
1578
+ backward: false
1579
+ };
1580
+ navForward(event);
1581
+ break;
1582
+ }
1583
+ case 'Enter':
1584
+ case 'NumpadEnter':
1585
+ case 'Space':
1432
1586
  {
1587
+ if (props.view !== 'month') viewChangedWithKeyDown.current = true;
1433
1588
  onMonthSelect(event, index);
1434
1589
  event.preventDefault();
1435
1590
  break;
1436
1591
  }
1437
-
1438
- //escape
1439
- case 27:
1592
+ case 'Escape':
1440
1593
  {
1441
1594
  hide(null, reFocusInputField);
1442
1595
  event.preventDefault();
1443
1596
  break;
1444
1597
  }
1445
-
1446
- //tab
1447
- case 9:
1598
+ case 'Tab':
1599
+ {
1600
+ trapFocus(event);
1601
+ break;
1602
+ }
1603
+ }
1604
+ };
1605
+ var onYearCellKeydown = function onYearCellKeydown(event, index) {
1606
+ var cell = event.currentTarget;
1607
+ switch (event.code) {
1608
+ //arrows
1609
+ case 'ArrowUp':
1610
+ case 'ArrowDown':
1611
+ {
1612
+ cell.tabIndex = '-1';
1613
+ var cells = cell.parentElement.children;
1614
+ var cellIndex = DomHandler.index(cell);
1615
+ var nextCell = cells[event.code === 'ArrowDown' ? cellIndex + 2 : cellIndex - 2];
1616
+ if (nextCell) {
1617
+ nextCell.tabIndex = '0';
1618
+ nextCell.focus();
1619
+ }
1620
+ event.preventDefault();
1621
+ break;
1622
+ }
1623
+ case 'ArrowLeft':
1624
+ {
1625
+ cell.tabIndex = '-1';
1626
+ var prevCell = cell.previousElementSibling;
1627
+ if (prevCell) {
1628
+ prevCell.tabIndex = '0';
1629
+ prevCell.focus();
1630
+ } else {
1631
+ navigation.current = {
1632
+ backward: true
1633
+ };
1634
+ navBackward(event);
1635
+ }
1636
+ event.preventDefault();
1637
+ break;
1638
+ }
1639
+ case 'ArrowRight':
1640
+ {
1641
+ cell.tabIndex = '-1';
1642
+ var _nextCell2 = cell.nextElementSibling;
1643
+ if (_nextCell2) {
1644
+ _nextCell2.tabIndex = '0';
1645
+ _nextCell2.focus();
1646
+ } else {
1647
+ navigation.current = {
1648
+ backward: false
1649
+ };
1650
+ navForward(event);
1651
+ }
1652
+ event.preventDefault();
1653
+ break;
1654
+ }
1655
+ case 'PageUp':
1656
+ {
1657
+ if (event.shiftKey) return;
1658
+ navigation.current = {
1659
+ backward: true
1660
+ };
1661
+ navBackward(event);
1662
+ break;
1663
+ }
1664
+ case 'PageDown':
1665
+ {
1666
+ if (event.shiftKey) return;
1667
+ navigation.current = {
1668
+ backward: false
1669
+ };
1670
+ navForward(event);
1671
+ break;
1672
+ }
1673
+ case 'Enter':
1674
+ case 'NumpadEnter':
1675
+ case 'Space':
1676
+ {
1677
+ if (props.view !== 'year') viewChangedWithKeyDown.current = true;
1678
+ onYearSelect(event, index);
1679
+ event.preventDefault();
1680
+ break;
1681
+ }
1682
+ case 'Escape':
1683
+ {
1684
+ hide(null, reFocusInputField);
1685
+ event.preventDefault();
1686
+ break;
1687
+ }
1688
+ case 'Tab':
1448
1689
  {
1449
1690
  trapFocus(event);
1450
1691
  break;
@@ -1561,10 +1802,16 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1561
1802
  return _currentYear;
1562
1803
  };
1563
1804
  var switchToMonthView = function switchToMonthView(event) {
1805
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
1806
+ viewChangedWithKeyDown.current = true;
1807
+ }
1564
1808
  setCurrentView('month');
1565
1809
  event.preventDefault();
1566
1810
  };
1567
1811
  var switchToYearView = function switchToYearView(event) {
1812
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
1813
+ viewChangedWithKeyDown.current = true;
1814
+ }
1568
1815
  setCurrentView('year');
1569
1816
  event.preventDefault();
1570
1817
  };
@@ -1705,7 +1952,6 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
1705
1952
  var onOverlayEntered = function onOverlayEntered() {
1706
1953
  bindOverlayListener();
1707
1954
  props.onShow && props.onShow();
1708
- DomHandler.focusFirstElement(overlayRef.current);
1709
1955
  setFocusedState(false);
1710
1956
  };
1711
1957
  var onOverlayExit = function onOverlayExit() {
@@ -2576,6 +2822,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2576
2822
  setCurrentMonth(viewDate.getMonth());
2577
2823
  setCurrentYear(viewDate.getFullYear());
2578
2824
  setCurrentView(props.view);
2825
+ if (!idState) {
2826
+ var uniqueId = UniqueComponentId();
2827
+ !idState && setIdState(uniqueId);
2828
+ }
2579
2829
  if (props.inline) {
2580
2830
  overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
2581
2831
  if (!props.disabled) {
@@ -2623,8 +2873,14 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2623
2873
  // eslint-disable-next-line react-hooks/exhaustive-deps
2624
2874
  }, [props.disabled, props.mask, props.readOnlyInput]);
2625
2875
  useUpdateEffect(function () {
2626
- setCurrentView(props.view);
2876
+ if (viewChangedWithKeyDown.current) {
2877
+ setCurrentView(props.view);
2878
+ }
2879
+ viewChangedWithKeyDown.current = false;
2627
2880
  }, [props.view]);
2881
+ useUpdateEffect(function () {
2882
+ focusToFirstCell();
2883
+ }, [currentView]);
2628
2884
  useUpdateEffect(function () {
2629
2885
  if (!props.onViewDateChange && !viewStateChanged.current) {
2630
2886
  setValue(props.value);
@@ -2715,12 +2971,16 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2715
2971
  if (Array.isArray(prevPropValue)) {
2716
2972
  prevPropValue = prevPropValue[0];
2717
2973
  }
2974
+ var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2975
+ if (isClearClicked.current && props.showTime) {
2976
+ viewDate.setHours(0, 0, 0);
2977
+ isClearClicked.current = false;
2978
+ }
2718
2979
  if (!prevPropValue && propValue || propValue && propValue instanceof Date && propValue.getTime() !== prevPropValue.getTime()) {
2719
- var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2720
2980
  validateDate(viewDate);
2721
- setViewDateState(viewDate);
2722
- viewStateChanged.current = true;
2723
2981
  }
2982
+ setViewDateState(viewDate);
2983
+ viewStateChanged.current = true;
2724
2984
  };
2725
2985
  var createBackwardNavigator = function createBackwardNavigator(isVisible) {
2726
2986
  var navigatorProps = isVisible ? {
@@ -2740,9 +3000,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2740
3000
  var backwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread({}, previousIconProps), {
2741
3001
  props: props
2742
3002
  });
3003
+ var _localeOptions4 = localeOptions(props.locale),
3004
+ prevDecade = _localeOptions4.prevDecade,
3005
+ prevYear = _localeOptions4.prevYear,
3006
+ prevMonth = _localeOptions4.prevMonth;
3007
+ var previousButtonLabel = currentView === 'year' ? prevDecade : currentView === 'month' ? prevYear : prevMonth;
2743
3008
  var previousButtonProps = mergeProps(_objectSpread({
2744
3009
  type: 'button',
2745
- className: cx('previousButton')
3010
+ className: cx('previousButton'),
3011
+ 'aria-label': previousButtonLabel
2746
3012
  }, navigatorProps), ptm('previousButton'));
2747
3013
  return /*#__PURE__*/React.createElement("button", _extends({
2748
3014
  ref: previousButton
@@ -2766,9 +3032,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2766
3032
  var forwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread({}, nextIconProps), {
2767
3033
  props: props
2768
3034
  });
3035
+ var _localeOptions5 = localeOptions(props.locale),
3036
+ nextDecade = _localeOptions5.nextDecade,
3037
+ nextYear = _localeOptions5.nextYear,
3038
+ nextMonth = _localeOptions5.nextMonth;
3039
+ var nextButtonLabel = currentView === 'year' ? nextDecade : currentView === 'month' ? nextYear : nextMonth;
2769
3040
  var nextButtonProps = mergeProps(_objectSpread({
2770
3041
  type: 'button',
2771
- className: cx('nextButton')
3042
+ className: cx('nextButton'),
3043
+ 'aria-label': nextButtonLabel
2772
3044
  }, navigatorProps), ptm('nextButton'));
2773
3045
  return /*#__PURE__*/React.createElement("button", _extends({
2774
3046
  ref: nextButton
@@ -2825,6 +3097,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2825
3097
  }
2826
3098
  var monthTitleProps = mergeProps({
2827
3099
  className: cx('monthTitle'),
3100
+ onKeyDown: onContainerButtonKeydown,
3101
+ 'aria-label': localeOption('chooseMonth', props.locale),
2828
3102
  onClick: switchToMonthView,
2829
3103
  disabled: switchViewButtonDisabled()
2830
3104
  }, ptm('monthTitle'));
@@ -2883,6 +3157,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2883
3157
  var displayYear = props.numberOfMonths > 1 ? metaYear : currentYear;
2884
3158
  var yearTitleProps = mergeProps({
2885
3159
  className: cx('yearTitle'),
3160
+ 'aria-label': localeOption('chooseYear', props.locale),
2886
3161
  onClick: function onClick(e) {
2887
3162
  return switchToYearView(e);
2888
3163
  },
@@ -2941,25 +3216,33 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2941
3216
  };
2942
3217
  var createDateCellContent = function createDateCellContent(date, className, groupIndex) {
2943
3218
  var content = props.dateTemplate ? props.dateTemplate(date) : date.day;
3219
+ var selected = isSelected(date);
2944
3220
  var dayLabelProps = mergeProps({
2945
3221
  className: cx('dayLabel', {
2946
3222
  className: className
2947
3223
  }),
3224
+ 'aria-selected': selected,
3225
+ 'aria-disabled': !date.selectable,
2948
3226
  onClick: function onClick(e) {
2949
3227
  return onDateSelect(e, date);
2950
3228
  },
2951
3229
  onKeyDown: function onKeyDown(e) {
2952
3230
  return onDateCellKeydown(e, date, groupIndex);
2953
3231
  },
2954
- 'data-p-highlight': isSelected(date),
3232
+ 'data-p-highlight': selected,
2955
3233
  'data-p-disabled': !date.selectable
2956
3234
  }, ptm('dayLabel', {
2957
3235
  context: {
2958
- selected: isSelected(date),
3236
+ selected: selected,
2959
3237
  disabled: !date.selectable
2960
3238
  }
2961
3239
  }));
2962
- return /*#__PURE__*/React.createElement("span", dayLabelProps, content);
3240
+ return /*#__PURE__*/React.createElement("span", dayLabelProps, content, selected && /*#__PURE__*/React.createElement("div", {
3241
+ "aria-live": "polite",
3242
+ className: "p-hidden-accessible",
3243
+ "data-p-hidden-accessible": true,
3244
+ pt: ptm('hiddenSelectedDay')
3245
+ }));
2963
3246
  };
2964
3247
  var createWeek = function createWeek(weekDates, weekNumber, groupIndex) {
2965
3248
  var week = weekDates.map(function (date) {
@@ -2973,6 +3256,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2973
3256
  className: cx('day', {
2974
3257
  date: date
2975
3258
  }),
3259
+ 'aria-label': date.day,
2976
3260
  'data-p-today': date.today,
2977
3261
  'data-p-other-month': date.otherMonth
2978
3262
  }, ptm('day', {
@@ -3021,6 +3305,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3021
3305
  key: UniqueComponentId('calendar_container_')
3022
3306
  }, ptm('container'));
3023
3307
  var tableProps = mergeProps({
3308
+ role: 'grid',
3024
3309
  className: cx('table')
3025
3310
  }, ptm('table'));
3026
3311
  var tableHeaderProps = mergeProps(ptm('tableHeader'));
@@ -3124,6 +3409,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3124
3409
  if (hour === 0) hour = 12;else if (hour > 11 && hour !== 12) hour = hour - 12;
3125
3410
  }
3126
3411
  var hourProps = mergeProps(ptm('hour'));
3412
+ var _localeOptions6 = localeOptions(props.locale),
3413
+ nextHour = _localeOptions6.nextHour,
3414
+ prevHour = _localeOptions6.prevHour;
3127
3415
  var hourDisplay = hour < 10 ? '0' + hour : hour;
3128
3416
  var hourPickerProps = mergeProps({
3129
3417
  className: cx('hourPicker')
@@ -3131,26 +3419,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3131
3419
  var incrementButtonProps = mergeProps({
3132
3420
  type: 'button',
3133
3421
  className: cx('incrementButton'),
3422
+ 'aria-label': nextHour,
3134
3423
  onMouseDown: function onMouseDown(e) {
3135
3424
  return onTimePickerElementMouseDown(e, 0, 1);
3136
3425
  },
3137
3426
  onMouseUp: onTimePickerElementMouseUp,
3138
3427
  onMouseLeave: onTimePickerElementMouseLeave,
3139
3428
  onKeyDown: function onKeyDown(e) {
3140
- return onContainerButtonKeydown(e);
3141
- }
3429
+ return onPickerKeyDown(e, 0, 1);
3430
+ },
3431
+ onKeyUp: onPickerKeyUp
3142
3432
  }, ptm('incrementButton'));
3143
3433
  var decrementButtonProps = mergeProps({
3144
3434
  type: 'button',
3145
3435
  className: cx('decrementButton'),
3436
+ 'aria-label': prevHour,
3146
3437
  onMouseDown: function onMouseDown(e) {
3147
3438
  return onTimePickerElementMouseDown(e, 0, -1);
3148
3439
  },
3149
3440
  onMouseUp: onTimePickerElementMouseUp,
3150
3441
  onMouseLeave: onTimePickerElementMouseLeave,
3151
3442
  onKeyDown: function onKeyDown(e) {
3152
- return onContainerButtonKeydown(e);
3153
- }
3443
+ return onPickerKeyDown(e, 0, -1);
3444
+ },
3445
+ onKeyUp: onPickerKeyUp
3154
3446
  }, ptm('decrementButton'));
3155
3447
  return /*#__PURE__*/React.createElement("div", hourPickerProps, /*#__PURE__*/React.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React.createElement(Ripple, null)), /*#__PURE__*/React.createElement("span", hourProps, hourDisplay), /*#__PURE__*/React.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React.createElement(Ripple, null)));
3156
3448
  };
@@ -3159,6 +3451,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3159
3451
  var minute = doStepMinute(currentTime.getMinutes());
3160
3452
  minute = minute > 59 ? minute - 60 : minute;
3161
3453
  var minuteProps = mergeProps(ptm('minute'));
3454
+ var _localeOptions7 = localeOptions(props.locale),
3455
+ nextMinute = _localeOptions7.nextMinute,
3456
+ prevMinute = _localeOptions7.prevMinute;
3162
3457
  var minuteDisplay = minute < 10 ? '0' + minute : minute;
3163
3458
  var minutePickerProps = mergeProps({
3164
3459
  className: cx('minutePicker')
@@ -3166,32 +3461,39 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3166
3461
  var incrementButtonProps = mergeProps({
3167
3462
  type: 'button',
3168
3463
  className: cx('incrementButton'),
3464
+ 'aria-label': nextMinute,
3169
3465
  onMouseDown: function onMouseDown(e) {
3170
3466
  return onTimePickerElementMouseDown(e, 1, 1);
3171
3467
  },
3172
3468
  onMouseUp: onTimePickerElementMouseUp,
3173
3469
  onMouseLeave: onTimePickerElementMouseLeave,
3174
3470
  onKeyDown: function onKeyDown(e) {
3175
- return onContainerButtonKeydown(e);
3176
- }
3471
+ return onPickerKeyDown(e, 1, 1);
3472
+ },
3473
+ onKeyUp: onPickerKeyUp
3177
3474
  }, ptm('incrementButton'));
3178
3475
  var decrementButtonProps = mergeProps({
3179
3476
  type: 'button',
3180
3477
  className: cx('decrementButton'),
3478
+ 'aria-label': prevMinute,
3181
3479
  onMouseDown: function onMouseDown(e) {
3182
3480
  return onTimePickerElementMouseDown(e, 1, -1);
3183
3481
  },
3184
3482
  onMouseUp: onTimePickerElementMouseUp,
3185
3483
  onMouseLeave: onTimePickerElementMouseLeave,
3186
3484
  onKeyDown: function onKeyDown(e) {
3187
- return onContainerButtonKeydown(e);
3188
- }
3485
+ return onPickerKeyDown(e, 1, -1);
3486
+ },
3487
+ onKeyUp: onPickerKeyUp
3189
3488
  }, ptm('decrementButton'));
3190
3489
  return /*#__PURE__*/React.createElement("div", minutePickerProps, /*#__PURE__*/React.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React.createElement(Ripple, null)), /*#__PURE__*/React.createElement("span", minuteProps, minuteDisplay), /*#__PURE__*/React.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React.createElement(Ripple, null)));
3191
3490
  };
3192
3491
  var createSecondPicker = function createSecondPicker() {
3193
3492
  if (props.showSeconds) {
3194
3493
  var currentTime = getCurrentDateTime();
3494
+ var _localeOptions8 = localeOptions(props.locale),
3495
+ nextSecond = _localeOptions8.nextSecond,
3496
+ prevSecond = _localeOptions8.prevSecond;
3195
3497
  var secondProps = mergeProps(ptm('second'));
3196
3498
  var second = currentTime.getSeconds();
3197
3499
  var secondDisplay = second < 10 ? '0' + second : second;
@@ -3201,26 +3503,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3201
3503
  var incrementButtonProps = mergeProps({
3202
3504
  type: 'button',
3203
3505
  className: cx('incrementButton'),
3506
+ 'aria-label': nextSecond,
3204
3507
  onMouseDown: function onMouseDown(e) {
3205
3508
  return onTimePickerElementMouseDown(e, 2, 1);
3206
3509
  },
3207
3510
  onMouseUp: onTimePickerElementMouseUp,
3208
3511
  onMouseLeave: onTimePickerElementMouseLeave,
3209
3512
  onKeyDown: function onKeyDown(e) {
3210
- return onContainerButtonKeydown(e);
3211
- }
3513
+ return onPickerKeyDown(e, 2, 1);
3514
+ },
3515
+ onKeyUp: onPickerKeyUp
3212
3516
  }, ptm('incrementButton'));
3213
3517
  var decrementButtonProps = mergeProps({
3214
3518
  type: 'button',
3215
3519
  className: cx('decrementButton'),
3520
+ 'aria-label': prevSecond,
3216
3521
  onMouseDown: function onMouseDown(e) {
3217
3522
  return onTimePickerElementMouseDown(e, 2, -1);
3218
3523
  },
3219
3524
  onMouseUp: onTimePickerElementMouseUp,
3220
3525
  onMouseLeave: onTimePickerElementMouseLeave,
3221
3526
  onKeyDown: function onKeyDown(e) {
3222
- return onContainerButtonKeydown(e);
3223
- }
3527
+ return onPickerKeyDown(e, 2, -1);
3528
+ },
3529
+ onKeyUp: onPickerKeyUp
3224
3530
  }, ptm('decrementButton'));
3225
3531
  return /*#__PURE__*/React.createElement("div", secondPickerProps, /*#__PURE__*/React.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React.createElement(Ripple, null)), /*#__PURE__*/React.createElement("span", secondProps, secondDisplay), /*#__PURE__*/React.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React.createElement(Ripple, null)));
3226
3532
  }
@@ -3229,6 +3535,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3229
3535
  var createMiliSecondPicker = function createMiliSecondPicker() {
3230
3536
  if (props.showMillisec) {
3231
3537
  var currentTime = getCurrentDateTime();
3538
+ var _localeOptions9 = localeOptions(props.locale),
3539
+ nextMilliSecond = _localeOptions9.nextMilliSecond,
3540
+ prevMilliSecond = _localeOptions9.prevMilliSecond;
3232
3541
  var millisecondProps = mergeProps(ptm('millisecond'));
3233
3542
  var millisecond = currentTime.getMilliseconds();
3234
3543
  var millisecondDisplay = millisecond < 100 ? (millisecond < 10 ? '00' : '0') + millisecond : millisecond;
@@ -3238,26 +3547,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3238
3547
  var incrementButtonProps = mergeProps({
3239
3548
  type: 'button',
3240
3549
  className: cx('incrementButton'),
3550
+ 'aria-label': nextMilliSecond,
3241
3551
  onMouseDown: function onMouseDown(e) {
3242
3552
  return onTimePickerElementMouseDown(e, 3, 1);
3243
3553
  },
3244
3554
  onMouseUp: onTimePickerElementMouseUp,
3245
3555
  onMouseLeave: onTimePickerElementMouseLeave,
3246
3556
  onKeyDown: function onKeyDown(e) {
3247
- return onContainerButtonKeydown(e);
3248
- }
3557
+ return onPickerKeyDown(e, 3, 1);
3558
+ },
3559
+ onKeyUp: onPickerKeyUp
3249
3560
  }, ptm('incrementButton'));
3250
3561
  var decrementButtonProps = mergeProps({
3251
3562
  type: 'button',
3252
3563
  className: cx('decrementButton'),
3564
+ 'aria-label': prevMilliSecond,
3253
3565
  onMouseDown: function onMouseDown(e) {
3254
3566
  return onTimePickerElementMouseDown(e, 3, -1);
3255
3567
  },
3256
3568
  onMouseUp: onTimePickerElementMouseUp,
3257
3569
  onMouseLeave: onTimePickerElementMouseLeave,
3258
3570
  onKeyDown: function onKeyDown(e) {
3259
- return onContainerButtonKeydown(e);
3260
- }
3571
+ return onPickerKeyDown(e, 3, -1);
3572
+ },
3573
+ onKeyUp: onPickerKeyUp
3261
3574
  }, ptm('decrementButton'));
3262
3575
  return /*#__PURE__*/React.createElement("div", millisecondPickerProps, /*#__PURE__*/React.createElement("button", incrementButtonProps, incrementIcon, /*#__PURE__*/React.createElement(Ripple, null)), /*#__PURE__*/React.createElement("span", millisecondProps, millisecondDisplay), /*#__PURE__*/React.createElement("button", decrementButtonProps, decrementIcon, /*#__PURE__*/React.createElement(Ripple, null)));
3263
3576
  }
@@ -3266,6 +3579,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3266
3579
  var createAmPmPicker = function createAmPmPicker() {
3267
3580
  if (props.hourFormat === '12') {
3268
3581
  var currentTime = getCurrentDateTime();
3582
+ var _localeOptions10 = localeOptions(props.locale),
3583
+ am = _localeOptions10.am,
3584
+ pm = _localeOptions10.pm;
3269
3585
  var hour = currentTime.getHours();
3270
3586
  var display = hour > 11 ? 'PM' : 'AM';
3271
3587
  var ampmProps = mergeProps(ptm('ampm'));
@@ -3275,6 +3591,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3275
3591
  var incrementButtonProps = mergeProps({
3276
3592
  type: 'button',
3277
3593
  className: cx('incrementButton'),
3594
+ 'aria-label': am,
3278
3595
  onClick: function onClick(e) {
3279
3596
  return toggleAmPm(e);
3280
3597
  }
@@ -3282,6 +3599,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3282
3599
  var decrementButtonProps = mergeProps({
3283
3600
  type: 'button',
3284
3601
  className: cx('decrementButton'),
3602
+ 'aria-label': pm,
3285
3603
  onClick: function onClick(e) {
3286
3604
  return toggleAmPm(e);
3287
3605
  }
@@ -3313,6 +3631,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3313
3631
  id: props.inputId,
3314
3632
  name: props.name,
3315
3633
  type: "text",
3634
+ role: "combobox",
3316
3635
  className: props.inputClassName,
3317
3636
  style: props.inputStyle,
3318
3637
  readOnly: props.readOnlyInput,
@@ -3325,7 +3644,12 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3325
3644
  onFocus: onInputFocus,
3326
3645
  onBlur: onInputBlur,
3327
3646
  onKeyDown: onInputKeyDown,
3647
+ "aria-expanded": overlayVisibleState,
3648
+ "aria-autocomplete": "none",
3649
+ "aria-haspopup": "dialog",
3650
+ "aria-controls": panelId,
3328
3651
  "aria-labelledby": props.ariaLabelledBy,
3652
+ "aria-label": props.ariaLabel,
3329
3653
  inputMode: props.inputMode,
3330
3654
  tooltip: props.tooltip,
3331
3655
  tooltipOptions: props.tooltipOptions,
@@ -3345,6 +3669,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3345
3669
  onClick: onButtonClick,
3346
3670
  tabIndex: "-1",
3347
3671
  disabled: props.disabled,
3672
+ "aria-haspopup": "dialog",
3673
+ "aria-label": localeOption('chooseDate', props.locale),
3674
+ "aria-expanded": overlayVisibleState,
3675
+ "aria-controls": panelId,
3348
3676
  className: cx('dropdownButton'),
3349
3677
  pt: ptm('dropdownButton'),
3350
3678
  __parentMetadata: {
@@ -3364,21 +3692,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3364
3692
  };
3365
3693
  var createButtonBar = function createButtonBar() {
3366
3694
  if (props.showButtonBar) {
3367
- var _localeOptions4 = localeOptions(props.locale),
3368
- today = _localeOptions4.today,
3369
- clear = _localeOptions4.clear;
3695
+ var _localeOptions11 = localeOptions(props.locale),
3696
+ today = _localeOptions11.today,
3697
+ clear = _localeOptions11.clear,
3698
+ now = _localeOptions11.now;
3699
+ var nowDate = new Date();
3700
+ var isHidden = props.minDate && props.minDate > nowDate || props.maxDate && props.maxDate < nowDate;
3370
3701
  var buttonbarProps = mergeProps({
3371
3702
  className: cx('buttonbar')
3372
3703
  }, ptm('buttonbar'));
3373
3704
  return /*#__PURE__*/React.createElement("div", buttonbarProps, /*#__PURE__*/React.createElement(Button, {
3374
3705
  type: "button",
3375
- label: today,
3706
+ label: props.showTime ? now : today,
3376
3707
  onClick: onTodayButtonClick,
3377
3708
  onKeyDown: function onKeyDown(e) {
3378
3709
  return onContainerButtonKeydown(e);
3379
3710
  },
3380
3711
  className: classNames(props.todayButtonClassName, cx('todayButton')),
3381
- pt: ptm('todayButton')
3712
+ pt: ptm('todayButton'),
3713
+ style: isHidden ? {
3714
+ visibility: 'hidden'
3715
+ } : undefined
3382
3716
  }), /*#__PURE__*/React.createElement(Button, {
3383
3717
  type: "button",
3384
3718
  label: clear,
@@ -3408,6 +3742,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3408
3742
  className: cx('monthPicker')
3409
3743
  }, ptm('monthPicker'));
3410
3744
  return /*#__PURE__*/React.createElement("div", monthPickerProps, monthPickerValues().map(function (m, i) {
3745
+ var selected = isMonthSelected(i);
3411
3746
  var monthProps = mergeProps({
3412
3747
  className: cx('month', {
3413
3748
  isMonthSelected: isMonthSelected,
@@ -3422,18 +3757,23 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3422
3757
  return onMonthCellKeydown(event, i);
3423
3758
  },
3424
3759
  'data-p-disabled': isMonthYearDisabled(i, currentYear),
3425
- 'data-p-highlight': isMonthSelected(i)
3760
+ 'data-p-highlight': selected
3426
3761
  }, ptm('month', {
3427
3762
  context: {
3428
3763
  month: m,
3429
3764
  monthIndex: i,
3430
- selected: isMonthSelected(i),
3765
+ selected: selected,
3431
3766
  disabled: isMonthYearDisabled(i, currentYear)
3432
3767
  }
3433
3768
  }));
3434
3769
  return /*#__PURE__*/React.createElement("span", _extends({}, monthProps, {
3435
3770
  key: "month".concat(i + 1)
3436
- }), m);
3771
+ }), m, selected && /*#__PURE__*/React.createElement("div", {
3772
+ "aria-live": "polite",
3773
+ className: "p-hidden-accessible",
3774
+ "data-p-hidden-accessible": true,
3775
+ pt: ptm('hiddenMonth')
3776
+ }, m));
3437
3777
  }));
3438
3778
  }
3439
3779
  return null;
@@ -3444,6 +3784,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3444
3784
  className: cx('yearPicker')
3445
3785
  }, ptm('yearPicker'));
3446
3786
  return /*#__PURE__*/React.createElement("div", yearPickerProps, yearPickerValues().map(function (y, i) {
3787
+ var selected = isYearSelected(y);
3447
3788
  var yearProps = mergeProps({
3448
3789
  className: cx('year', {
3449
3790
  isYearSelected: isYearSelected,
@@ -3453,19 +3794,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3453
3794
  onClick: function onClick(event) {
3454
3795
  return onYearSelect(event, y);
3455
3796
  },
3797
+ onKeyDown: function onKeyDown(event) {
3798
+ return onYearCellKeydown(event, y);
3799
+ },
3456
3800
  'data-p-highlight': isYearSelected(y),
3457
3801
  'data-p-disabled': isMonthYearDisabled(-1, y)
3458
3802
  }, ptm('year', {
3459
3803
  context: {
3460
3804
  year: y,
3461
3805
  yearIndex: i,
3462
- selected: isYearSelected(i),
3806
+ selected: selected,
3463
3807
  disabled: isMonthYearDisabled(-1, y)
3464
3808
  }
3465
3809
  }));
3466
3810
  return /*#__PURE__*/React.createElement("span", _extends({}, yearProps, {
3467
3811
  key: "year".concat(i + 1)
3468
- }), y);
3812
+ }), y, selected && /*#__PURE__*/React.createElement("div", {
3813
+ "aria-live": "polite",
3814
+ className: "p-hidden-accessible",
3815
+ "data-p-hidden-accessible": true,
3816
+ pt: ptm('hiddenYear')
3817
+ }, y));
3469
3818
  }));
3470
3819
  }
3471
3820
  return null;
@@ -3492,7 +3841,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3492
3841
  id: props.id,
3493
3842
  className: classNames(props.className, cx('root', {
3494
3843
  focusedState: focusedState,
3495
- isFilled: isFilled
3844
+ isFilled: isFilled,
3845
+ panelVisible: visible
3496
3846
  })),
3497
3847
  style: props.style
3498
3848
  }, CalendarBase.getOtherProps(props), ptm('root'));
@@ -3500,6 +3850,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3500
3850
  ref: elementRef
3501
3851
  }, rootProps), content, /*#__PURE__*/React.createElement(CalendarPanel, {
3502
3852
  hostName: "Calendar",
3853
+ id: panelId,
3854
+ locale: props.locale,
3503
3855
  ref: overlayRef,
3504
3856
  className: panelClassName,
3505
3857
  style: props.panelStyle,