primereact 10.3.2 → 10.4.0

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 (161) hide show
  1. package/accordion/accordion.cjs.js +1 -1
  2. package/accordion/accordion.cjs.min.js +1 -1
  3. package/accordion/accordion.esm.js +1 -1
  4. package/accordion/accordion.esm.min.js +1 -1
  5. package/accordion/accordion.js +1 -1
  6. package/accordion/accordion.min.js +1 -1
  7. package/api/api.cjs.js +20 -0
  8. package/api/api.cjs.min.js +1 -1
  9. package/api/api.d.ts +5 -1
  10. package/api/api.esm.js +20 -0
  11. package/api/api.esm.min.js +1 -1
  12. package/api/api.js +20 -0
  13. package/api/api.min.js +1 -1
  14. package/calendar/calendar.cjs.js +509 -150
  15. package/calendar/calendar.cjs.min.js +1 -1
  16. package/calendar/calendar.d.ts +4 -0
  17. package/calendar/calendar.esm.js +510 -151
  18. package/calendar/calendar.esm.min.js +1 -1
  19. package/calendar/calendar.js +509 -150
  20. package/calendar/calendar.min.js +1 -1
  21. package/carousel/carousel.cjs.js +1 -0
  22. package/carousel/carousel.cjs.min.js +1 -1
  23. package/carousel/carousel.esm.js +1 -0
  24. package/carousel/carousel.esm.min.js +1 -1
  25. package/carousel/carousel.js +1 -0
  26. package/carousel/carousel.min.js +1 -1
  27. package/chips/chips.cjs.js +2 -1
  28. package/chips/chips.cjs.min.js +1 -1
  29. package/chips/chips.esm.js +2 -1
  30. package/chips/chips.esm.min.js +1 -1
  31. package/chips/chips.js +2 -1
  32. package/chips/chips.min.js +1 -1
  33. package/contextmenu/contextmenu.cjs.js +4 -4
  34. package/contextmenu/contextmenu.cjs.min.js +1 -1
  35. package/contextmenu/contextmenu.esm.js +4 -4
  36. package/contextmenu/contextmenu.esm.min.js +1 -1
  37. package/contextmenu/contextmenu.js +4 -4
  38. package/contextmenu/contextmenu.min.js +1 -1
  39. package/core/core.js +93 -40
  40. package/core/core.min.js +4 -4
  41. package/datatable/datatable.cjs.js +577 -150
  42. package/datatable/datatable.cjs.min.js +1 -1
  43. package/datatable/datatable.esm.js +573 -146
  44. package/datatable/datatable.esm.min.js +1 -1
  45. package/datatable/datatable.js +577 -150
  46. package/datatable/datatable.min.js +1 -1
  47. package/dataview/dataview.cjs.js +27 -25
  48. package/dataview/dataview.cjs.min.js +1 -1
  49. package/dataview/dataview.d.ts +7 -1
  50. package/dataview/dataview.esm.js +27 -25
  51. package/dataview/dataview.esm.min.js +1 -1
  52. package/dataview/dataview.js +27 -25
  53. package/dataview/dataview.min.js +1 -1
  54. package/divider/divider.cjs.js +2 -2
  55. package/divider/divider.cjs.min.js +1 -1
  56. package/divider/divider.esm.js +2 -2
  57. package/divider/divider.esm.min.js +1 -1
  58. package/divider/divider.js +2 -2
  59. package/divider/divider.min.js +1 -1
  60. package/dropdown/dropdown.cjs.js +20 -25
  61. package/dropdown/dropdown.cjs.min.js +1 -1
  62. package/dropdown/dropdown.d.ts +9 -0
  63. package/dropdown/dropdown.esm.js +20 -25
  64. package/dropdown/dropdown.esm.min.js +1 -1
  65. package/dropdown/dropdown.js +20 -25
  66. package/dropdown/dropdown.min.js +1 -1
  67. package/editor/editor.cjs.js +1 -1
  68. package/editor/editor.cjs.min.js +1 -1
  69. package/editor/editor.esm.js +1 -1
  70. package/editor/editor.esm.min.js +1 -1
  71. package/editor/editor.js +1 -1
  72. package/editor/editor.min.js +1 -1
  73. package/focustrap/focustrap.cjs.js +168 -0
  74. package/focustrap/focustrap.cjs.min.js +1 -0
  75. package/focustrap/focustrap.esm.js +159 -0
  76. package/focustrap/focustrap.esm.min.js +1 -0
  77. package/focustrap/focustrap.js +167 -0
  78. package/focustrap/focustrap.min.js +1 -0
  79. package/focustrap/package.json +7 -0
  80. package/galleria/galleria.cjs.js +26 -24
  81. package/galleria/galleria.cjs.min.js +1 -1
  82. package/galleria/galleria.esm.js +26 -24
  83. package/galleria/galleria.esm.min.js +1 -1
  84. package/galleria/galleria.js +26 -24
  85. package/galleria/galleria.min.js +1 -1
  86. package/hooks/hooks.d.ts +1 -1
  87. package/menubar/menubar.cjs.js +7 -4
  88. package/menubar/menubar.cjs.min.js +1 -1
  89. package/menubar/menubar.esm.js +7 -4
  90. package/menubar/menubar.esm.min.js +1 -1
  91. package/menubar/menubar.js +7 -4
  92. package/menubar/menubar.min.js +1 -1
  93. package/package.json +1 -1
  94. package/paginator/paginator.cjs.js +20 -0
  95. package/paginator/paginator.cjs.min.js +1 -1
  96. package/paginator/paginator.esm.js +20 -0
  97. package/paginator/paginator.esm.min.js +1 -1
  98. package/paginator/paginator.js +20 -0
  99. package/paginator/paginator.min.js +1 -1
  100. package/panelmenu/panelmenu.cjs.js +32 -21
  101. package/panelmenu/panelmenu.cjs.min.js +1 -1
  102. package/panelmenu/panelmenu.esm.js +32 -21
  103. package/panelmenu/panelmenu.esm.min.js +1 -1
  104. package/panelmenu/panelmenu.js +32 -21
  105. package/panelmenu/panelmenu.min.js +1 -1
  106. package/picklist/picklist.cjs.js +20 -0
  107. package/picklist/picklist.cjs.min.js +1 -1
  108. package/picklist/picklist.esm.js +20 -0
  109. package/picklist/picklist.esm.min.js +1 -1
  110. package/picklist/picklist.js +20 -0
  111. package/picklist/picklist.min.js +1 -1
  112. package/primereact.all.cjs.js +1499 -725
  113. package/primereact.all.cjs.min.js +1 -1
  114. package/primereact.all.esm.js +1499 -725
  115. package/primereact.all.esm.min.js +1 -1
  116. package/primereact.all.js +1499 -725
  117. package/primereact.all.min.js +1 -1
  118. package/sidebar/sidebar.cjs.js +18 -16
  119. package/sidebar/sidebar.cjs.min.js +1 -1
  120. package/sidebar/sidebar.esm.js +18 -16
  121. package/sidebar/sidebar.esm.min.js +1 -1
  122. package/sidebar/sidebar.js +18 -16
  123. package/sidebar/sidebar.min.js +1 -1
  124. package/splitbutton/splitbutton.cjs.js +8 -7
  125. package/splitbutton/splitbutton.cjs.min.js +1 -1
  126. package/splitbutton/splitbutton.esm.js +8 -7
  127. package/splitbutton/splitbutton.esm.min.js +1 -1
  128. package/splitbutton/splitbutton.js +8 -7
  129. package/splitbutton/splitbutton.min.js +1 -1
  130. package/splitter/splitter.cjs.js +57 -12
  131. package/splitter/splitter.cjs.min.js +1 -1
  132. package/splitter/splitter.d.ts +13 -1
  133. package/splitter/splitter.esm.js +59 -14
  134. package/splitter/splitter.esm.min.js +1 -1
  135. package/splitter/splitter.js +57 -12
  136. package/splitter/splitter.min.js +1 -1
  137. package/tieredmenu/tieredmenu.cjs.js +8 -7
  138. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  139. package/tieredmenu/tieredmenu.esm.js +8 -7
  140. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  141. package/tieredmenu/tieredmenu.js +8 -7
  142. package/tieredmenu/tieredmenu.min.js +1 -1
  143. package/toast/toast.cjs.js +20 -0
  144. package/toast/toast.cjs.min.js +1 -1
  145. package/toast/toast.esm.js +20 -0
  146. package/toast/toast.esm.min.js +1 -1
  147. package/toast/toast.js +20 -0
  148. package/toast/toast.min.js +1 -1
  149. package/tree/tree.cjs.js +33 -15
  150. package/tree/tree.cjs.min.js +1 -1
  151. package/tree/tree.esm.js +34 -16
  152. package/tree/tree.esm.min.js +1 -1
  153. package/tree/tree.js +33 -15
  154. package/tree/tree.min.js +1 -1
  155. package/treetable/treetable.cjs.js +205 -68
  156. package/treetable/treetable.cjs.min.js +1 -1
  157. package/treetable/treetable.esm.js +206 -69
  158. package/treetable/treetable.esm.min.js +1 -1
  159. package/treetable/treetable.js +205 -68
  160. package/treetable/treetable.min.js +1 -1
  161. package/web-types.json +34 -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,
@@ -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() {
@@ -2114,27 +2360,34 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2114
2360
  return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
2115
2361
  };
2116
2362
  var isDayDisabled = function isDayDisabled(day, month, year) {
2363
+ var isDisabled = false;
2364
+
2365
+ // first check for disabled dates
2117
2366
  if (props.disabledDates) {
2118
2367
  if (props.disabledDates.some(function (d) {
2119
2368
  return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2120
2369
  })) {
2121
- return true;
2122
- }
2123
- } else if (props.enabledDates) {
2124
- if (!props.enabledDates.some(function (d) {
2125
- return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2126
- })) {
2127
- return true;
2370
+ isDisabled = true;
2128
2371
  }
2129
2372
  }
2130
- if (props.disabledDays && currentView === 'date') {
2373
+
2374
+ // next if not disabled then check for disabled days
2375
+ if (!isDisabled && props.disabledDays && currentView === 'date') {
2131
2376
  var weekday = new Date(year, month, day);
2132
2377
  var weekdayNumber = weekday.getDay();
2133
2378
  if (props.disabledDays.indexOf(weekdayNumber) !== -1) {
2134
- return true;
2379
+ isDisabled = true;
2135
2380
  }
2136
2381
  }
2137
- return false;
2382
+
2383
+ // last check for enabled dates to force dates enabled
2384
+ if (props.enabledDates) {
2385
+ var isEnabled = props.enabledDates.some(function (d) {
2386
+ return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2387
+ });
2388
+ isDisabled = isDisabled ? !isEnabled : isEnabled;
2389
+ }
2390
+ return isDisabled;
2138
2391
  };
2139
2392
  var isMonthYearDisabled = function isMonthYearDisabled(month, year) {
2140
2393
  var daysCountInAllMonth = month === -1 ? new Array(12).fill(0).map(function (_, i) {
@@ -2585,6 +2838,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2585
2838
  setCurrentMonth(viewDate.getMonth());
2586
2839
  setCurrentYear(viewDate.getFullYear());
2587
2840
  setCurrentView(props.view);
2841
+ if (!idState) {
2842
+ var uniqueId = utils.UniqueComponentId();
2843
+ !idState && setIdState(uniqueId);
2844
+ }
2588
2845
  if (props.inline) {
2589
2846
  overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
2590
2847
  if (!props.disabled) {
@@ -2632,8 +2889,14 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2632
2889
  // eslint-disable-next-line react-hooks/exhaustive-deps
2633
2890
  }, [props.disabled, props.mask, props.readOnlyInput]);
2634
2891
  hooks.useUpdateEffect(function () {
2635
- setCurrentView(props.view);
2892
+ if (viewChangedWithKeyDown.current) {
2893
+ setCurrentView(props.view);
2894
+ }
2895
+ viewChangedWithKeyDown.current = false;
2636
2896
  }, [props.view]);
2897
+ hooks.useUpdateEffect(function () {
2898
+ focusToFirstCell();
2899
+ }, [currentView]);
2637
2900
  hooks.useUpdateEffect(function () {
2638
2901
  if (!props.onViewDateChange && !viewStateChanged.current) {
2639
2902
  setValue(props.value);
@@ -2724,12 +2987,16 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2724
2987
  if (Array.isArray(prevPropValue)) {
2725
2988
  prevPropValue = prevPropValue[0];
2726
2989
  }
2990
+ var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2991
+ if (isClearClicked.current && props.showTime) {
2992
+ viewDate.setHours(0, 0, 0);
2993
+ isClearClicked.current = false;
2994
+ }
2727
2995
  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
2996
  validateDate(viewDate);
2730
- setViewDateState(viewDate);
2731
- viewStateChanged.current = true;
2732
2997
  }
2998
+ setViewDateState(viewDate);
2999
+ viewStateChanged.current = true;
2733
3000
  };
2734
3001
  var createBackwardNavigator = function createBackwardNavigator(isVisible) {
2735
3002
  var navigatorProps = isVisible ? {
@@ -2749,9 +3016,15 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2749
3016
  var backwardNavigatorIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread({}, previousIconProps), {
2750
3017
  props: props
2751
3018
  });
3019
+ var _localeOptions4 = PrimeReact.localeOptions(props.locale),
3020
+ prevDecade = _localeOptions4.prevDecade,
3021
+ prevYear = _localeOptions4.prevYear,
3022
+ prevMonth = _localeOptions4.prevMonth;
3023
+ var previousButtonLabel = currentView === 'year' ? prevDecade : currentView === 'month' ? prevYear : prevMonth;
2752
3024
  var previousButtonProps = mergeProps(_objectSpread({
2753
3025
  type: 'button',
2754
- className: cx('previousButton')
3026
+ className: cx('previousButton'),
3027
+ 'aria-label': previousButtonLabel
2755
3028
  }, navigatorProps), ptm('previousButton'));
2756
3029
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2757
3030
  ref: previousButton
@@ -2775,9 +3048,15 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2775
3048
  var forwardNavigatorIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread({}, nextIconProps), {
2776
3049
  props: props
2777
3050
  });
3051
+ var _localeOptions5 = PrimeReact.localeOptions(props.locale),
3052
+ nextDecade = _localeOptions5.nextDecade,
3053
+ nextYear = _localeOptions5.nextYear,
3054
+ nextMonth = _localeOptions5.nextMonth;
3055
+ var nextButtonLabel = currentView === 'year' ? nextDecade : currentView === 'month' ? nextYear : nextMonth;
2778
3056
  var nextButtonProps = mergeProps(_objectSpread({
2779
3057
  type: 'button',
2780
- className: cx('nextButton')
3058
+ className: cx('nextButton'),
3059
+ 'aria-label': nextButtonLabel
2781
3060
  }, navigatorProps), ptm('nextButton'));
2782
3061
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2783
3062
  ref: nextButton
@@ -2834,6 +3113,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2834
3113
  }
2835
3114
  var monthTitleProps = mergeProps({
2836
3115
  className: cx('monthTitle'),
3116
+ onKeyDown: onContainerButtonKeydown,
3117
+ 'aria-label': PrimeReact.localeOption('chooseMonth', props.locale),
2837
3118
  onClick: switchToMonthView,
2838
3119
  disabled: switchViewButtonDisabled()
2839
3120
  }, ptm('monthTitle'));
@@ -2892,6 +3173,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2892
3173
  var displayYear = props.numberOfMonths > 1 ? metaYear : currentYear;
2893
3174
  var yearTitleProps = mergeProps({
2894
3175
  className: cx('yearTitle'),
3176
+ 'aria-label': PrimeReact.localeOption('chooseYear', props.locale),
2895
3177
  onClick: function onClick(e) {
2896
3178
  return switchToYearView(e);
2897
3179
  },
@@ -2950,25 +3232,33 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2950
3232
  };
2951
3233
  var createDateCellContent = function createDateCellContent(date, className, groupIndex) {
2952
3234
  var content = props.dateTemplate ? props.dateTemplate(date) : date.day;
3235
+ var selected = isSelected(date);
2953
3236
  var dayLabelProps = mergeProps({
2954
3237
  className: cx('dayLabel', {
2955
3238
  className: className
2956
3239
  }),
3240
+ 'aria-selected': selected,
3241
+ 'aria-disabled': !date.selectable,
2957
3242
  onClick: function onClick(e) {
2958
3243
  return onDateSelect(e, date);
2959
3244
  },
2960
3245
  onKeyDown: function onKeyDown(e) {
2961
3246
  return onDateCellKeydown(e, date, groupIndex);
2962
3247
  },
2963
- 'data-p-highlight': isSelected(date),
3248
+ 'data-p-highlight': selected,
2964
3249
  'data-p-disabled': !date.selectable
2965
3250
  }, ptm('dayLabel', {
2966
3251
  context: {
2967
- selected: isSelected(date),
3252
+ selected: selected,
2968
3253
  disabled: !date.selectable
2969
3254
  }
2970
3255
  }));
2971
- return /*#__PURE__*/React__namespace.createElement("span", dayLabelProps, content);
3256
+ return /*#__PURE__*/React__namespace.createElement("span", dayLabelProps, content, selected && /*#__PURE__*/React__namespace.createElement("div", {
3257
+ "aria-live": "polite",
3258
+ className: "p-hidden-accessible",
3259
+ "data-p-hidden-accessible": true,
3260
+ pt: ptm('hiddenSelectedDay')
3261
+ }));
2972
3262
  };
2973
3263
  var createWeek = function createWeek(weekDates, weekNumber, groupIndex) {
2974
3264
  var week = weekDates.map(function (date) {
@@ -2982,6 +3272,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
2982
3272
  className: cx('day', {
2983
3273
  date: date
2984
3274
  }),
3275
+ 'aria-label': date.day,
2985
3276
  'data-p-today': date.today,
2986
3277
  'data-p-other-month': date.otherMonth
2987
3278
  }, ptm('day', {
@@ -3030,6 +3321,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3030
3321
  key: utils.UniqueComponentId('calendar_container_')
3031
3322
  }, ptm('container'));
3032
3323
  var tableProps = mergeProps({
3324
+ role: 'grid',
3033
3325
  className: cx('table')
3034
3326
  }, ptm('table'));
3035
3327
  var tableHeaderProps = mergeProps(ptm('tableHeader'));
@@ -3133,6 +3425,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3133
3425
  if (hour === 0) hour = 12;else if (hour > 11 && hour !== 12) hour = hour - 12;
3134
3426
  }
3135
3427
  var hourProps = mergeProps(ptm('hour'));
3428
+ var _localeOptions6 = PrimeReact.localeOptions(props.locale),
3429
+ nextHour = _localeOptions6.nextHour,
3430
+ prevHour = _localeOptions6.prevHour;
3136
3431
  var hourDisplay = hour < 10 ? '0' + hour : hour;
3137
3432
  var hourPickerProps = mergeProps({
3138
3433
  className: cx('hourPicker')
@@ -3140,26 +3435,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3140
3435
  var incrementButtonProps = mergeProps({
3141
3436
  type: 'button',
3142
3437
  className: cx('incrementButton'),
3438
+ 'aria-label': nextHour,
3143
3439
  onMouseDown: function onMouseDown(e) {
3144
3440
  return onTimePickerElementMouseDown(e, 0, 1);
3145
3441
  },
3146
3442
  onMouseUp: onTimePickerElementMouseUp,
3147
3443
  onMouseLeave: onTimePickerElementMouseLeave,
3148
3444
  onKeyDown: function onKeyDown(e) {
3149
- return onContainerButtonKeydown(e);
3150
- }
3445
+ return onPickerKeyDown(e, 0, 1);
3446
+ },
3447
+ onKeyUp: onPickerKeyUp
3151
3448
  }, ptm('incrementButton'));
3152
3449
  var decrementButtonProps = mergeProps({
3153
3450
  type: 'button',
3154
3451
  className: cx('decrementButton'),
3452
+ 'aria-label': prevHour,
3155
3453
  onMouseDown: function onMouseDown(e) {
3156
3454
  return onTimePickerElementMouseDown(e, 0, -1);
3157
3455
  },
3158
3456
  onMouseUp: onTimePickerElementMouseUp,
3159
3457
  onMouseLeave: onTimePickerElementMouseLeave,
3160
3458
  onKeyDown: function onKeyDown(e) {
3161
- return onContainerButtonKeydown(e);
3162
- }
3459
+ return onPickerKeyDown(e, 0, -1);
3460
+ },
3461
+ onKeyUp: onPickerKeyUp
3163
3462
  }, ptm('decrementButton'));
3164
3463
  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
3464
  };
@@ -3168,6 +3467,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3168
3467
  var minute = doStepMinute(currentTime.getMinutes());
3169
3468
  minute = minute > 59 ? minute - 60 : minute;
3170
3469
  var minuteProps = mergeProps(ptm('minute'));
3470
+ var _localeOptions7 = PrimeReact.localeOptions(props.locale),
3471
+ nextMinute = _localeOptions7.nextMinute,
3472
+ prevMinute = _localeOptions7.prevMinute;
3171
3473
  var minuteDisplay = minute < 10 ? '0' + minute : minute;
3172
3474
  var minutePickerProps = mergeProps({
3173
3475
  className: cx('minutePicker')
@@ -3175,32 +3477,39 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3175
3477
  var incrementButtonProps = mergeProps({
3176
3478
  type: 'button',
3177
3479
  className: cx('incrementButton'),
3480
+ 'aria-label': nextMinute,
3178
3481
  onMouseDown: function onMouseDown(e) {
3179
3482
  return onTimePickerElementMouseDown(e, 1, 1);
3180
3483
  },
3181
3484
  onMouseUp: onTimePickerElementMouseUp,
3182
3485
  onMouseLeave: onTimePickerElementMouseLeave,
3183
3486
  onKeyDown: function onKeyDown(e) {
3184
- return onContainerButtonKeydown(e);
3185
- }
3487
+ return onPickerKeyDown(e, 1, 1);
3488
+ },
3489
+ onKeyUp: onPickerKeyUp
3186
3490
  }, ptm('incrementButton'));
3187
3491
  var decrementButtonProps = mergeProps({
3188
3492
  type: 'button',
3189
3493
  className: cx('decrementButton'),
3494
+ 'aria-label': prevMinute,
3190
3495
  onMouseDown: function onMouseDown(e) {
3191
3496
  return onTimePickerElementMouseDown(e, 1, -1);
3192
3497
  },
3193
3498
  onMouseUp: onTimePickerElementMouseUp,
3194
3499
  onMouseLeave: onTimePickerElementMouseLeave,
3195
3500
  onKeyDown: function onKeyDown(e) {
3196
- return onContainerButtonKeydown(e);
3197
- }
3501
+ return onPickerKeyDown(e, 1, -1);
3502
+ },
3503
+ onKeyUp: onPickerKeyUp
3198
3504
  }, ptm('decrementButton'));
3199
3505
  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
3506
  };
3201
3507
  var createSecondPicker = function createSecondPicker() {
3202
3508
  if (props.showSeconds) {
3203
3509
  var currentTime = getCurrentDateTime();
3510
+ var _localeOptions8 = PrimeReact.localeOptions(props.locale),
3511
+ nextSecond = _localeOptions8.nextSecond,
3512
+ prevSecond = _localeOptions8.prevSecond;
3204
3513
  var secondProps = mergeProps(ptm('second'));
3205
3514
  var second = currentTime.getSeconds();
3206
3515
  var secondDisplay = second < 10 ? '0' + second : second;
@@ -3210,26 +3519,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3210
3519
  var incrementButtonProps = mergeProps({
3211
3520
  type: 'button',
3212
3521
  className: cx('incrementButton'),
3522
+ 'aria-label': nextSecond,
3213
3523
  onMouseDown: function onMouseDown(e) {
3214
3524
  return onTimePickerElementMouseDown(e, 2, 1);
3215
3525
  },
3216
3526
  onMouseUp: onTimePickerElementMouseUp,
3217
3527
  onMouseLeave: onTimePickerElementMouseLeave,
3218
3528
  onKeyDown: function onKeyDown(e) {
3219
- return onContainerButtonKeydown(e);
3220
- }
3529
+ return onPickerKeyDown(e, 2, 1);
3530
+ },
3531
+ onKeyUp: onPickerKeyUp
3221
3532
  }, ptm('incrementButton'));
3222
3533
  var decrementButtonProps = mergeProps({
3223
3534
  type: 'button',
3224
3535
  className: cx('decrementButton'),
3536
+ 'aria-label': prevSecond,
3225
3537
  onMouseDown: function onMouseDown(e) {
3226
3538
  return onTimePickerElementMouseDown(e, 2, -1);
3227
3539
  },
3228
3540
  onMouseUp: onTimePickerElementMouseUp,
3229
3541
  onMouseLeave: onTimePickerElementMouseLeave,
3230
3542
  onKeyDown: function onKeyDown(e) {
3231
- return onContainerButtonKeydown(e);
3232
- }
3543
+ return onPickerKeyDown(e, 2, -1);
3544
+ },
3545
+ onKeyUp: onPickerKeyUp
3233
3546
  }, ptm('decrementButton'));
3234
3547
  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
3548
  }
@@ -3238,6 +3551,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3238
3551
  var createMiliSecondPicker = function createMiliSecondPicker() {
3239
3552
  if (props.showMillisec) {
3240
3553
  var currentTime = getCurrentDateTime();
3554
+ var _localeOptions9 = PrimeReact.localeOptions(props.locale),
3555
+ nextMilliSecond = _localeOptions9.nextMilliSecond,
3556
+ prevMilliSecond = _localeOptions9.prevMilliSecond;
3241
3557
  var millisecondProps = mergeProps(ptm('millisecond'));
3242
3558
  var millisecond = currentTime.getMilliseconds();
3243
3559
  var millisecondDisplay = millisecond < 100 ? (millisecond < 10 ? '00' : '0') + millisecond : millisecond;
@@ -3247,26 +3563,30 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3247
3563
  var incrementButtonProps = mergeProps({
3248
3564
  type: 'button',
3249
3565
  className: cx('incrementButton'),
3566
+ 'aria-label': nextMilliSecond,
3250
3567
  onMouseDown: function onMouseDown(e) {
3251
3568
  return onTimePickerElementMouseDown(e, 3, 1);
3252
3569
  },
3253
3570
  onMouseUp: onTimePickerElementMouseUp,
3254
3571
  onMouseLeave: onTimePickerElementMouseLeave,
3255
3572
  onKeyDown: function onKeyDown(e) {
3256
- return onContainerButtonKeydown(e);
3257
- }
3573
+ return onPickerKeyDown(e, 3, 1);
3574
+ },
3575
+ onKeyUp: onPickerKeyUp
3258
3576
  }, ptm('incrementButton'));
3259
3577
  var decrementButtonProps = mergeProps({
3260
3578
  type: 'button',
3261
3579
  className: cx('decrementButton'),
3580
+ 'aria-label': prevMilliSecond,
3262
3581
  onMouseDown: function onMouseDown(e) {
3263
3582
  return onTimePickerElementMouseDown(e, 3, -1);
3264
3583
  },
3265
3584
  onMouseUp: onTimePickerElementMouseUp,
3266
3585
  onMouseLeave: onTimePickerElementMouseLeave,
3267
3586
  onKeyDown: function onKeyDown(e) {
3268
- return onContainerButtonKeydown(e);
3269
- }
3587
+ return onPickerKeyDown(e, 3, -1);
3588
+ },
3589
+ onKeyUp: onPickerKeyUp
3270
3590
  }, ptm('decrementButton'));
3271
3591
  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
3592
  }
@@ -3275,6 +3595,9 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3275
3595
  var createAmPmPicker = function createAmPmPicker() {
3276
3596
  if (props.hourFormat === '12') {
3277
3597
  var currentTime = getCurrentDateTime();
3598
+ var _localeOptions10 = PrimeReact.localeOptions(props.locale),
3599
+ am = _localeOptions10.am,
3600
+ pm = _localeOptions10.pm;
3278
3601
  var hour = currentTime.getHours();
3279
3602
  var display = hour > 11 ? 'PM' : 'AM';
3280
3603
  var ampmProps = mergeProps(ptm('ampm'));
@@ -3284,6 +3607,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3284
3607
  var incrementButtonProps = mergeProps({
3285
3608
  type: 'button',
3286
3609
  className: cx('incrementButton'),
3610
+ 'aria-label': am,
3287
3611
  onClick: function onClick(e) {
3288
3612
  return toggleAmPm(e);
3289
3613
  }
@@ -3291,6 +3615,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3291
3615
  var decrementButtonProps = mergeProps({
3292
3616
  type: 'button',
3293
3617
  className: cx('decrementButton'),
3618
+ 'aria-label': pm,
3294
3619
  onClick: function onClick(e) {
3295
3620
  return toggleAmPm(e);
3296
3621
  }
@@ -3322,6 +3647,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3322
3647
  id: props.inputId,
3323
3648
  name: props.name,
3324
3649
  type: "text",
3650
+ role: "combobox",
3325
3651
  className: props.inputClassName,
3326
3652
  style: props.inputStyle,
3327
3653
  readOnly: props.readOnlyInput,
@@ -3334,7 +3660,12 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3334
3660
  onFocus: onInputFocus,
3335
3661
  onBlur: onInputBlur,
3336
3662
  onKeyDown: onInputKeyDown,
3663
+ "aria-expanded": overlayVisibleState,
3664
+ "aria-autocomplete": "none",
3665
+ "aria-haspopup": "dialog",
3666
+ "aria-controls": panelId,
3337
3667
  "aria-labelledby": props.ariaLabelledBy,
3668
+ "aria-label": props.ariaLabel,
3338
3669
  inputMode: props.inputMode,
3339
3670
  tooltip: props.tooltip,
3340
3671
  tooltipOptions: props.tooltipOptions,
@@ -3354,6 +3685,10 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3354
3685
  onClick: onButtonClick,
3355
3686
  tabIndex: "-1",
3356
3687
  disabled: props.disabled,
3688
+ "aria-haspopup": "dialog",
3689
+ "aria-label": PrimeReact.localeOption('chooseDate', props.locale),
3690
+ "aria-expanded": overlayVisibleState,
3691
+ "aria-controls": panelId,
3357
3692
  className: cx('dropdownButton'),
3358
3693
  pt: ptm('dropdownButton'),
3359
3694
  __parentMetadata: {
@@ -3373,21 +3708,27 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3373
3708
  };
3374
3709
  var createButtonBar = function createButtonBar() {
3375
3710
  if (props.showButtonBar) {
3376
- var _localeOptions4 = PrimeReact.localeOptions(props.locale),
3377
- today = _localeOptions4.today,
3378
- clear = _localeOptions4.clear;
3711
+ var _localeOptions11 = PrimeReact.localeOptions(props.locale),
3712
+ today = _localeOptions11.today,
3713
+ clear = _localeOptions11.clear,
3714
+ now = _localeOptions11.now;
3715
+ var nowDate = new Date();
3716
+ var isHidden = props.minDate && props.minDate > nowDate || props.maxDate && props.maxDate < nowDate;
3379
3717
  var buttonbarProps = mergeProps({
3380
3718
  className: cx('buttonbar')
3381
3719
  }, ptm('buttonbar'));
3382
3720
  return /*#__PURE__*/React__namespace.createElement("div", buttonbarProps, /*#__PURE__*/React__namespace.createElement(button.Button, {
3383
3721
  type: "button",
3384
- label: today,
3722
+ label: props.showTime ? now : today,
3385
3723
  onClick: onTodayButtonClick,
3386
3724
  onKeyDown: function onKeyDown(e) {
3387
3725
  return onContainerButtonKeydown(e);
3388
3726
  },
3389
3727
  className: utils.classNames(props.todayButtonClassName, cx('todayButton')),
3390
- pt: ptm('todayButton')
3728
+ pt: ptm('todayButton'),
3729
+ style: isHidden ? {
3730
+ visibility: 'hidden'
3731
+ } : undefined
3391
3732
  }), /*#__PURE__*/React__namespace.createElement(button.Button, {
3392
3733
  type: "button",
3393
3734
  label: clear,
@@ -3417,6 +3758,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3417
3758
  className: cx('monthPicker')
3418
3759
  }, ptm('monthPicker'));
3419
3760
  return /*#__PURE__*/React__namespace.createElement("div", monthPickerProps, monthPickerValues().map(function (m, i) {
3761
+ var selected = isMonthSelected(i);
3420
3762
  var monthProps = mergeProps({
3421
3763
  className: cx('month', {
3422
3764
  isMonthSelected: isMonthSelected,
@@ -3431,18 +3773,23 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3431
3773
  return onMonthCellKeydown(event, i);
3432
3774
  },
3433
3775
  'data-p-disabled': isMonthYearDisabled(i, currentYear),
3434
- 'data-p-highlight': isMonthSelected(i)
3776
+ 'data-p-highlight': selected
3435
3777
  }, ptm('month', {
3436
3778
  context: {
3437
3779
  month: m,
3438
3780
  monthIndex: i,
3439
- selected: isMonthSelected(i),
3781
+ selected: selected,
3440
3782
  disabled: isMonthYearDisabled(i, currentYear)
3441
3783
  }
3442
3784
  }));
3443
3785
  return /*#__PURE__*/React__namespace.createElement("span", _extends({}, monthProps, {
3444
3786
  key: "month".concat(i + 1)
3445
- }), m);
3787
+ }), m, selected && /*#__PURE__*/React__namespace.createElement("div", {
3788
+ "aria-live": "polite",
3789
+ className: "p-hidden-accessible",
3790
+ "data-p-hidden-accessible": true,
3791
+ pt: ptm('hiddenMonth')
3792
+ }, m));
3446
3793
  }));
3447
3794
  }
3448
3795
  return null;
@@ -3453,6 +3800,7 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3453
3800
  className: cx('yearPicker')
3454
3801
  }, ptm('yearPicker'));
3455
3802
  return /*#__PURE__*/React__namespace.createElement("div", yearPickerProps, yearPickerValues().map(function (y, i) {
3803
+ var selected = isYearSelected(y);
3456
3804
  var yearProps = mergeProps({
3457
3805
  className: cx('year', {
3458
3806
  isYearSelected: isYearSelected,
@@ -3462,19 +3810,27 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3462
3810
  onClick: function onClick(event) {
3463
3811
  return onYearSelect(event, y);
3464
3812
  },
3813
+ onKeyDown: function onKeyDown(event) {
3814
+ return onYearCellKeydown(event, y);
3815
+ },
3465
3816
  'data-p-highlight': isYearSelected(y),
3466
3817
  'data-p-disabled': isMonthYearDisabled(-1, y)
3467
3818
  }, ptm('year', {
3468
3819
  context: {
3469
3820
  year: y,
3470
3821
  yearIndex: i,
3471
- selected: isYearSelected(i),
3822
+ selected: selected,
3472
3823
  disabled: isMonthYearDisabled(-1, y)
3473
3824
  }
3474
3825
  }));
3475
3826
  return /*#__PURE__*/React__namespace.createElement("span", _extends({}, yearProps, {
3476
3827
  key: "year".concat(i + 1)
3477
- }), y);
3828
+ }), y, selected && /*#__PURE__*/React__namespace.createElement("div", {
3829
+ "aria-live": "polite",
3830
+ className: "p-hidden-accessible",
3831
+ "data-p-hidden-accessible": true,
3832
+ pt: ptm('hiddenYear')
3833
+ }, y));
3478
3834
  }));
3479
3835
  }
3480
3836
  return null;
@@ -3501,7 +3857,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3501
3857
  id: props.id,
3502
3858
  className: utils.classNames(props.className, cx('root', {
3503
3859
  focusedState: focusedState,
3504
- isFilled: isFilled
3860
+ isFilled: isFilled,
3861
+ panelVisible: visible
3505
3862
  })),
3506
3863
  style: props.style
3507
3864
  }, CalendarBase.getOtherProps(props), ptm('root'));
@@ -3509,6 +3866,8 @@ this.primereact.calendar = (function (exports, React, PrimeReact, button, compon
3509
3866
  ref: elementRef
3510
3867
  }, rootProps), content, /*#__PURE__*/React__namespace.createElement(CalendarPanel, {
3511
3868
  hostName: "Calendar",
3869
+ id: panelId,
3870
+ locale: props.locale,
3512
3871
  ref: overlayRef,
3513
3872
  className: panelClassName,
3514
3873
  style: props.panelStyle,