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
@@ -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,
@@ -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() {
@@ -2105,27 +2351,34 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2105
2351
  return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
2106
2352
  };
2107
2353
  var isDayDisabled = function isDayDisabled(day, month, year) {
2354
+ var isDisabled = false;
2355
+
2356
+ // first check for disabled dates
2108
2357
  if (props.disabledDates) {
2109
2358
  if (props.disabledDates.some(function (d) {
2110
2359
  return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2111
2360
  })) {
2112
- return true;
2113
- }
2114
- } else if (props.enabledDates) {
2115
- if (!props.enabledDates.some(function (d) {
2116
- return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2117
- })) {
2118
- return true;
2361
+ isDisabled = true;
2119
2362
  }
2120
2363
  }
2121
- if (props.disabledDays && currentView === 'date') {
2364
+
2365
+ // next if not disabled then check for disabled days
2366
+ if (!isDisabled && props.disabledDays && currentView === 'date') {
2122
2367
  var weekday = new Date(year, month, day);
2123
2368
  var weekdayNumber = weekday.getDay();
2124
2369
  if (props.disabledDays.indexOf(weekdayNumber) !== -1) {
2125
- return true;
2370
+ isDisabled = true;
2126
2371
  }
2127
2372
  }
2128
- return false;
2373
+
2374
+ // last check for enabled dates to force dates enabled
2375
+ if (props.enabledDates) {
2376
+ var isEnabled = props.enabledDates.some(function (d) {
2377
+ return d.getFullYear() === year && d.getMonth() === month && d.getDate() === day;
2378
+ });
2379
+ isDisabled = isDisabled ? !isEnabled : isEnabled;
2380
+ }
2381
+ return isDisabled;
2129
2382
  };
2130
2383
  var isMonthYearDisabled = function isMonthYearDisabled(month, year) {
2131
2384
  var daysCountInAllMonth = month === -1 ? new Array(12).fill(0).map(function (_, i) {
@@ -2576,6 +2829,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2576
2829
  setCurrentMonth(viewDate.getMonth());
2577
2830
  setCurrentYear(viewDate.getFullYear());
2578
2831
  setCurrentView(props.view);
2832
+ if (!idState) {
2833
+ var uniqueId = UniqueComponentId();
2834
+ !idState && setIdState(uniqueId);
2835
+ }
2579
2836
  if (props.inline) {
2580
2837
  overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
2581
2838
  if (!props.disabled) {
@@ -2623,8 +2880,14 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2623
2880
  // eslint-disable-next-line react-hooks/exhaustive-deps
2624
2881
  }, [props.disabled, props.mask, props.readOnlyInput]);
2625
2882
  useUpdateEffect(function () {
2626
- setCurrentView(props.view);
2883
+ if (viewChangedWithKeyDown.current) {
2884
+ setCurrentView(props.view);
2885
+ }
2886
+ viewChangedWithKeyDown.current = false;
2627
2887
  }, [props.view]);
2888
+ useUpdateEffect(function () {
2889
+ focusToFirstCell();
2890
+ }, [currentView]);
2628
2891
  useUpdateEffect(function () {
2629
2892
  if (!props.onViewDateChange && !viewStateChanged.current) {
2630
2893
  setValue(props.value);
@@ -2715,12 +2978,16 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2715
2978
  if (Array.isArray(prevPropValue)) {
2716
2979
  prevPropValue = prevPropValue[0];
2717
2980
  }
2981
+ var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
2982
+ if (isClearClicked.current && props.showTime) {
2983
+ viewDate.setHours(0, 0, 0);
2984
+ isClearClicked.current = false;
2985
+ }
2718
2986
  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
2987
  validateDate(viewDate);
2721
- setViewDateState(viewDate);
2722
- viewStateChanged.current = true;
2723
2988
  }
2989
+ setViewDateState(viewDate);
2990
+ viewStateChanged.current = true;
2724
2991
  };
2725
2992
  var createBackwardNavigator = function createBackwardNavigator(isVisible) {
2726
2993
  var navigatorProps = isVisible ? {
@@ -2740,9 +3007,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2740
3007
  var backwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread({}, previousIconProps), {
2741
3008
  props: props
2742
3009
  });
3010
+ var _localeOptions4 = localeOptions(props.locale),
3011
+ prevDecade = _localeOptions4.prevDecade,
3012
+ prevYear = _localeOptions4.prevYear,
3013
+ prevMonth = _localeOptions4.prevMonth;
3014
+ var previousButtonLabel = currentView === 'year' ? prevDecade : currentView === 'month' ? prevYear : prevMonth;
2743
3015
  var previousButtonProps = mergeProps(_objectSpread({
2744
3016
  type: 'button',
2745
- className: cx('previousButton')
3017
+ className: cx('previousButton'),
3018
+ 'aria-label': previousButtonLabel
2746
3019
  }, navigatorProps), ptm('previousButton'));
2747
3020
  return /*#__PURE__*/React.createElement("button", _extends({
2748
3021
  ref: previousButton
@@ -2766,9 +3039,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2766
3039
  var forwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread({}, nextIconProps), {
2767
3040
  props: props
2768
3041
  });
3042
+ var _localeOptions5 = localeOptions(props.locale),
3043
+ nextDecade = _localeOptions5.nextDecade,
3044
+ nextYear = _localeOptions5.nextYear,
3045
+ nextMonth = _localeOptions5.nextMonth;
3046
+ var nextButtonLabel = currentView === 'year' ? nextDecade : currentView === 'month' ? nextYear : nextMonth;
2769
3047
  var nextButtonProps = mergeProps(_objectSpread({
2770
3048
  type: 'button',
2771
- className: cx('nextButton')
3049
+ className: cx('nextButton'),
3050
+ 'aria-label': nextButtonLabel
2772
3051
  }, navigatorProps), ptm('nextButton'));
2773
3052
  return /*#__PURE__*/React.createElement("button", _extends({
2774
3053
  ref: nextButton
@@ -2825,6 +3104,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2825
3104
  }
2826
3105
  var monthTitleProps = mergeProps({
2827
3106
  className: cx('monthTitle'),
3107
+ onKeyDown: onContainerButtonKeydown,
3108
+ 'aria-label': localeOption('chooseMonth', props.locale),
2828
3109
  onClick: switchToMonthView,
2829
3110
  disabled: switchViewButtonDisabled()
2830
3111
  }, ptm('monthTitle'));
@@ -2883,6 +3164,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2883
3164
  var displayYear = props.numberOfMonths > 1 ? metaYear : currentYear;
2884
3165
  var yearTitleProps = mergeProps({
2885
3166
  className: cx('yearTitle'),
3167
+ 'aria-label': localeOption('chooseYear', props.locale),
2886
3168
  onClick: function onClick(e) {
2887
3169
  return switchToYearView(e);
2888
3170
  },
@@ -2941,25 +3223,33 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2941
3223
  };
2942
3224
  var createDateCellContent = function createDateCellContent(date, className, groupIndex) {
2943
3225
  var content = props.dateTemplate ? props.dateTemplate(date) : date.day;
3226
+ var selected = isSelected(date);
2944
3227
  var dayLabelProps = mergeProps({
2945
3228
  className: cx('dayLabel', {
2946
3229
  className: className
2947
3230
  }),
3231
+ 'aria-selected': selected,
3232
+ 'aria-disabled': !date.selectable,
2948
3233
  onClick: function onClick(e) {
2949
3234
  return onDateSelect(e, date);
2950
3235
  },
2951
3236
  onKeyDown: function onKeyDown(e) {
2952
3237
  return onDateCellKeydown(e, date, groupIndex);
2953
3238
  },
2954
- 'data-p-highlight': isSelected(date),
3239
+ 'data-p-highlight': selected,
2955
3240
  'data-p-disabled': !date.selectable
2956
3241
  }, ptm('dayLabel', {
2957
3242
  context: {
2958
- selected: isSelected(date),
3243
+ selected: selected,
2959
3244
  disabled: !date.selectable
2960
3245
  }
2961
3246
  }));
2962
- return /*#__PURE__*/React.createElement("span", dayLabelProps, content);
3247
+ return /*#__PURE__*/React.createElement("span", dayLabelProps, content, selected && /*#__PURE__*/React.createElement("div", {
3248
+ "aria-live": "polite",
3249
+ className: "p-hidden-accessible",
3250
+ "data-p-hidden-accessible": true,
3251
+ pt: ptm('hiddenSelectedDay')
3252
+ }));
2963
3253
  };
2964
3254
  var createWeek = function createWeek(weekDates, weekNumber, groupIndex) {
2965
3255
  var week = weekDates.map(function (date) {
@@ -2973,6 +3263,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
2973
3263
  className: cx('day', {
2974
3264
  date: date
2975
3265
  }),
3266
+ 'aria-label': date.day,
2976
3267
  'data-p-today': date.today,
2977
3268
  'data-p-other-month': date.otherMonth
2978
3269
  }, ptm('day', {
@@ -3021,6 +3312,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3021
3312
  key: UniqueComponentId('calendar_container_')
3022
3313
  }, ptm('container'));
3023
3314
  var tableProps = mergeProps({
3315
+ role: 'grid',
3024
3316
  className: cx('table')
3025
3317
  }, ptm('table'));
3026
3318
  var tableHeaderProps = mergeProps(ptm('tableHeader'));
@@ -3124,6 +3416,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3124
3416
  if (hour === 0) hour = 12;else if (hour > 11 && hour !== 12) hour = hour - 12;
3125
3417
  }
3126
3418
  var hourProps = mergeProps(ptm('hour'));
3419
+ var _localeOptions6 = localeOptions(props.locale),
3420
+ nextHour = _localeOptions6.nextHour,
3421
+ prevHour = _localeOptions6.prevHour;
3127
3422
  var hourDisplay = hour < 10 ? '0' + hour : hour;
3128
3423
  var hourPickerProps = mergeProps({
3129
3424
  className: cx('hourPicker')
@@ -3131,26 +3426,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3131
3426
  var incrementButtonProps = mergeProps({
3132
3427
  type: 'button',
3133
3428
  className: cx('incrementButton'),
3429
+ 'aria-label': nextHour,
3134
3430
  onMouseDown: function onMouseDown(e) {
3135
3431
  return onTimePickerElementMouseDown(e, 0, 1);
3136
3432
  },
3137
3433
  onMouseUp: onTimePickerElementMouseUp,
3138
3434
  onMouseLeave: onTimePickerElementMouseLeave,
3139
3435
  onKeyDown: function onKeyDown(e) {
3140
- return onContainerButtonKeydown(e);
3141
- }
3436
+ return onPickerKeyDown(e, 0, 1);
3437
+ },
3438
+ onKeyUp: onPickerKeyUp
3142
3439
  }, ptm('incrementButton'));
3143
3440
  var decrementButtonProps = mergeProps({
3144
3441
  type: 'button',
3145
3442
  className: cx('decrementButton'),
3443
+ 'aria-label': prevHour,
3146
3444
  onMouseDown: function onMouseDown(e) {
3147
3445
  return onTimePickerElementMouseDown(e, 0, -1);
3148
3446
  },
3149
3447
  onMouseUp: onTimePickerElementMouseUp,
3150
3448
  onMouseLeave: onTimePickerElementMouseLeave,
3151
3449
  onKeyDown: function onKeyDown(e) {
3152
- return onContainerButtonKeydown(e);
3153
- }
3450
+ return onPickerKeyDown(e, 0, -1);
3451
+ },
3452
+ onKeyUp: onPickerKeyUp
3154
3453
  }, ptm('decrementButton'));
3155
3454
  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
3455
  };
@@ -3159,6 +3458,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3159
3458
  var minute = doStepMinute(currentTime.getMinutes());
3160
3459
  minute = minute > 59 ? minute - 60 : minute;
3161
3460
  var minuteProps = mergeProps(ptm('minute'));
3461
+ var _localeOptions7 = localeOptions(props.locale),
3462
+ nextMinute = _localeOptions7.nextMinute,
3463
+ prevMinute = _localeOptions7.prevMinute;
3162
3464
  var minuteDisplay = minute < 10 ? '0' + minute : minute;
3163
3465
  var minutePickerProps = mergeProps({
3164
3466
  className: cx('minutePicker')
@@ -3166,32 +3468,39 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3166
3468
  var incrementButtonProps = mergeProps({
3167
3469
  type: 'button',
3168
3470
  className: cx('incrementButton'),
3471
+ 'aria-label': nextMinute,
3169
3472
  onMouseDown: function onMouseDown(e) {
3170
3473
  return onTimePickerElementMouseDown(e, 1, 1);
3171
3474
  },
3172
3475
  onMouseUp: onTimePickerElementMouseUp,
3173
3476
  onMouseLeave: onTimePickerElementMouseLeave,
3174
3477
  onKeyDown: function onKeyDown(e) {
3175
- return onContainerButtonKeydown(e);
3176
- }
3478
+ return onPickerKeyDown(e, 1, 1);
3479
+ },
3480
+ onKeyUp: onPickerKeyUp
3177
3481
  }, ptm('incrementButton'));
3178
3482
  var decrementButtonProps = mergeProps({
3179
3483
  type: 'button',
3180
3484
  className: cx('decrementButton'),
3485
+ 'aria-label': prevMinute,
3181
3486
  onMouseDown: function onMouseDown(e) {
3182
3487
  return onTimePickerElementMouseDown(e, 1, -1);
3183
3488
  },
3184
3489
  onMouseUp: onTimePickerElementMouseUp,
3185
3490
  onMouseLeave: onTimePickerElementMouseLeave,
3186
3491
  onKeyDown: function onKeyDown(e) {
3187
- return onContainerButtonKeydown(e);
3188
- }
3492
+ return onPickerKeyDown(e, 1, -1);
3493
+ },
3494
+ onKeyUp: onPickerKeyUp
3189
3495
  }, ptm('decrementButton'));
3190
3496
  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
3497
  };
3192
3498
  var createSecondPicker = function createSecondPicker() {
3193
3499
  if (props.showSeconds) {
3194
3500
  var currentTime = getCurrentDateTime();
3501
+ var _localeOptions8 = localeOptions(props.locale),
3502
+ nextSecond = _localeOptions8.nextSecond,
3503
+ prevSecond = _localeOptions8.prevSecond;
3195
3504
  var secondProps = mergeProps(ptm('second'));
3196
3505
  var second = currentTime.getSeconds();
3197
3506
  var secondDisplay = second < 10 ? '0' + second : second;
@@ -3201,26 +3510,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3201
3510
  var incrementButtonProps = mergeProps({
3202
3511
  type: 'button',
3203
3512
  className: cx('incrementButton'),
3513
+ 'aria-label': nextSecond,
3204
3514
  onMouseDown: function onMouseDown(e) {
3205
3515
  return onTimePickerElementMouseDown(e, 2, 1);
3206
3516
  },
3207
3517
  onMouseUp: onTimePickerElementMouseUp,
3208
3518
  onMouseLeave: onTimePickerElementMouseLeave,
3209
3519
  onKeyDown: function onKeyDown(e) {
3210
- return onContainerButtonKeydown(e);
3211
- }
3520
+ return onPickerKeyDown(e, 2, 1);
3521
+ },
3522
+ onKeyUp: onPickerKeyUp
3212
3523
  }, ptm('incrementButton'));
3213
3524
  var decrementButtonProps = mergeProps({
3214
3525
  type: 'button',
3215
3526
  className: cx('decrementButton'),
3527
+ 'aria-label': prevSecond,
3216
3528
  onMouseDown: function onMouseDown(e) {
3217
3529
  return onTimePickerElementMouseDown(e, 2, -1);
3218
3530
  },
3219
3531
  onMouseUp: onTimePickerElementMouseUp,
3220
3532
  onMouseLeave: onTimePickerElementMouseLeave,
3221
3533
  onKeyDown: function onKeyDown(e) {
3222
- return onContainerButtonKeydown(e);
3223
- }
3534
+ return onPickerKeyDown(e, 2, -1);
3535
+ },
3536
+ onKeyUp: onPickerKeyUp
3224
3537
  }, ptm('decrementButton'));
3225
3538
  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
3539
  }
@@ -3229,6 +3542,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3229
3542
  var createMiliSecondPicker = function createMiliSecondPicker() {
3230
3543
  if (props.showMillisec) {
3231
3544
  var currentTime = getCurrentDateTime();
3545
+ var _localeOptions9 = localeOptions(props.locale),
3546
+ nextMilliSecond = _localeOptions9.nextMilliSecond,
3547
+ prevMilliSecond = _localeOptions9.prevMilliSecond;
3232
3548
  var millisecondProps = mergeProps(ptm('millisecond'));
3233
3549
  var millisecond = currentTime.getMilliseconds();
3234
3550
  var millisecondDisplay = millisecond < 100 ? (millisecond < 10 ? '00' : '0') + millisecond : millisecond;
@@ -3238,26 +3554,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3238
3554
  var incrementButtonProps = mergeProps({
3239
3555
  type: 'button',
3240
3556
  className: cx('incrementButton'),
3557
+ 'aria-label': nextMilliSecond,
3241
3558
  onMouseDown: function onMouseDown(e) {
3242
3559
  return onTimePickerElementMouseDown(e, 3, 1);
3243
3560
  },
3244
3561
  onMouseUp: onTimePickerElementMouseUp,
3245
3562
  onMouseLeave: onTimePickerElementMouseLeave,
3246
3563
  onKeyDown: function onKeyDown(e) {
3247
- return onContainerButtonKeydown(e);
3248
- }
3564
+ return onPickerKeyDown(e, 3, 1);
3565
+ },
3566
+ onKeyUp: onPickerKeyUp
3249
3567
  }, ptm('incrementButton'));
3250
3568
  var decrementButtonProps = mergeProps({
3251
3569
  type: 'button',
3252
3570
  className: cx('decrementButton'),
3571
+ 'aria-label': prevMilliSecond,
3253
3572
  onMouseDown: function onMouseDown(e) {
3254
3573
  return onTimePickerElementMouseDown(e, 3, -1);
3255
3574
  },
3256
3575
  onMouseUp: onTimePickerElementMouseUp,
3257
3576
  onMouseLeave: onTimePickerElementMouseLeave,
3258
3577
  onKeyDown: function onKeyDown(e) {
3259
- return onContainerButtonKeydown(e);
3260
- }
3578
+ return onPickerKeyDown(e, 3, -1);
3579
+ },
3580
+ onKeyUp: onPickerKeyUp
3261
3581
  }, ptm('decrementButton'));
3262
3582
  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
3583
  }
@@ -3266,6 +3586,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3266
3586
  var createAmPmPicker = function createAmPmPicker() {
3267
3587
  if (props.hourFormat === '12') {
3268
3588
  var currentTime = getCurrentDateTime();
3589
+ var _localeOptions10 = localeOptions(props.locale),
3590
+ am = _localeOptions10.am,
3591
+ pm = _localeOptions10.pm;
3269
3592
  var hour = currentTime.getHours();
3270
3593
  var display = hour > 11 ? 'PM' : 'AM';
3271
3594
  var ampmProps = mergeProps(ptm('ampm'));
@@ -3275,6 +3598,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3275
3598
  var incrementButtonProps = mergeProps({
3276
3599
  type: 'button',
3277
3600
  className: cx('incrementButton'),
3601
+ 'aria-label': am,
3278
3602
  onClick: function onClick(e) {
3279
3603
  return toggleAmPm(e);
3280
3604
  }
@@ -3282,6 +3606,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3282
3606
  var decrementButtonProps = mergeProps({
3283
3607
  type: 'button',
3284
3608
  className: cx('decrementButton'),
3609
+ 'aria-label': pm,
3285
3610
  onClick: function onClick(e) {
3286
3611
  return toggleAmPm(e);
3287
3612
  }
@@ -3313,6 +3638,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3313
3638
  id: props.inputId,
3314
3639
  name: props.name,
3315
3640
  type: "text",
3641
+ role: "combobox",
3316
3642
  className: props.inputClassName,
3317
3643
  style: props.inputStyle,
3318
3644
  readOnly: props.readOnlyInput,
@@ -3325,7 +3651,12 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3325
3651
  onFocus: onInputFocus,
3326
3652
  onBlur: onInputBlur,
3327
3653
  onKeyDown: onInputKeyDown,
3654
+ "aria-expanded": overlayVisibleState,
3655
+ "aria-autocomplete": "none",
3656
+ "aria-haspopup": "dialog",
3657
+ "aria-controls": panelId,
3328
3658
  "aria-labelledby": props.ariaLabelledBy,
3659
+ "aria-label": props.ariaLabel,
3329
3660
  inputMode: props.inputMode,
3330
3661
  tooltip: props.tooltip,
3331
3662
  tooltipOptions: props.tooltipOptions,
@@ -3345,6 +3676,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3345
3676
  onClick: onButtonClick,
3346
3677
  tabIndex: "-1",
3347
3678
  disabled: props.disabled,
3679
+ "aria-haspopup": "dialog",
3680
+ "aria-label": localeOption('chooseDate', props.locale),
3681
+ "aria-expanded": overlayVisibleState,
3682
+ "aria-controls": panelId,
3348
3683
  className: cx('dropdownButton'),
3349
3684
  pt: ptm('dropdownButton'),
3350
3685
  __parentMetadata: {
@@ -3364,21 +3699,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3364
3699
  };
3365
3700
  var createButtonBar = function createButtonBar() {
3366
3701
  if (props.showButtonBar) {
3367
- var _localeOptions4 = localeOptions(props.locale),
3368
- today = _localeOptions4.today,
3369
- clear = _localeOptions4.clear;
3702
+ var _localeOptions11 = localeOptions(props.locale),
3703
+ today = _localeOptions11.today,
3704
+ clear = _localeOptions11.clear,
3705
+ now = _localeOptions11.now;
3706
+ var nowDate = new Date();
3707
+ var isHidden = props.minDate && props.minDate > nowDate || props.maxDate && props.maxDate < nowDate;
3370
3708
  var buttonbarProps = mergeProps({
3371
3709
  className: cx('buttonbar')
3372
3710
  }, ptm('buttonbar'));
3373
3711
  return /*#__PURE__*/React.createElement("div", buttonbarProps, /*#__PURE__*/React.createElement(Button, {
3374
3712
  type: "button",
3375
- label: today,
3713
+ label: props.showTime ? now : today,
3376
3714
  onClick: onTodayButtonClick,
3377
3715
  onKeyDown: function onKeyDown(e) {
3378
3716
  return onContainerButtonKeydown(e);
3379
3717
  },
3380
3718
  className: classNames(props.todayButtonClassName, cx('todayButton')),
3381
- pt: ptm('todayButton')
3719
+ pt: ptm('todayButton'),
3720
+ style: isHidden ? {
3721
+ visibility: 'hidden'
3722
+ } : undefined
3382
3723
  }), /*#__PURE__*/React.createElement(Button, {
3383
3724
  type: "button",
3384
3725
  label: clear,
@@ -3408,6 +3749,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3408
3749
  className: cx('monthPicker')
3409
3750
  }, ptm('monthPicker'));
3410
3751
  return /*#__PURE__*/React.createElement("div", monthPickerProps, monthPickerValues().map(function (m, i) {
3752
+ var selected = isMonthSelected(i);
3411
3753
  var monthProps = mergeProps({
3412
3754
  className: cx('month', {
3413
3755
  isMonthSelected: isMonthSelected,
@@ -3422,18 +3764,23 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3422
3764
  return onMonthCellKeydown(event, i);
3423
3765
  },
3424
3766
  'data-p-disabled': isMonthYearDisabled(i, currentYear),
3425
- 'data-p-highlight': isMonthSelected(i)
3767
+ 'data-p-highlight': selected
3426
3768
  }, ptm('month', {
3427
3769
  context: {
3428
3770
  month: m,
3429
3771
  monthIndex: i,
3430
- selected: isMonthSelected(i),
3772
+ selected: selected,
3431
3773
  disabled: isMonthYearDisabled(i, currentYear)
3432
3774
  }
3433
3775
  }));
3434
3776
  return /*#__PURE__*/React.createElement("span", _extends({}, monthProps, {
3435
3777
  key: "month".concat(i + 1)
3436
- }), m);
3778
+ }), m, selected && /*#__PURE__*/React.createElement("div", {
3779
+ "aria-live": "polite",
3780
+ className: "p-hidden-accessible",
3781
+ "data-p-hidden-accessible": true,
3782
+ pt: ptm('hiddenMonth')
3783
+ }, m));
3437
3784
  }));
3438
3785
  }
3439
3786
  return null;
@@ -3444,6 +3791,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3444
3791
  className: cx('yearPicker')
3445
3792
  }, ptm('yearPicker'));
3446
3793
  return /*#__PURE__*/React.createElement("div", yearPickerProps, yearPickerValues().map(function (y, i) {
3794
+ var selected = isYearSelected(y);
3447
3795
  var yearProps = mergeProps({
3448
3796
  className: cx('year', {
3449
3797
  isYearSelected: isYearSelected,
@@ -3453,19 +3801,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3453
3801
  onClick: function onClick(event) {
3454
3802
  return onYearSelect(event, y);
3455
3803
  },
3804
+ onKeyDown: function onKeyDown(event) {
3805
+ return onYearCellKeydown(event, y);
3806
+ },
3456
3807
  'data-p-highlight': isYearSelected(y),
3457
3808
  'data-p-disabled': isMonthYearDisabled(-1, y)
3458
3809
  }, ptm('year', {
3459
3810
  context: {
3460
3811
  year: y,
3461
3812
  yearIndex: i,
3462
- selected: isYearSelected(i),
3813
+ selected: selected,
3463
3814
  disabled: isMonthYearDisabled(-1, y)
3464
3815
  }
3465
3816
  }));
3466
3817
  return /*#__PURE__*/React.createElement("span", _extends({}, yearProps, {
3467
3818
  key: "year".concat(i + 1)
3468
- }), y);
3819
+ }), y, selected && /*#__PURE__*/React.createElement("div", {
3820
+ "aria-live": "polite",
3821
+ className: "p-hidden-accessible",
3822
+ "data-p-hidden-accessible": true,
3823
+ pt: ptm('hiddenYear')
3824
+ }, y));
3469
3825
  }));
3470
3826
  }
3471
3827
  return null;
@@ -3492,7 +3848,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3492
3848
  id: props.id,
3493
3849
  className: classNames(props.className, cx('root', {
3494
3850
  focusedState: focusedState,
3495
- isFilled: isFilled
3851
+ isFilled: isFilled,
3852
+ panelVisible: visible
3496
3853
  })),
3497
3854
  style: props.style
3498
3855
  }, CalendarBase.getOtherProps(props), ptm('root'));
@@ -3500,6 +3857,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
3500
3857
  ref: elementRef
3501
3858
  }, rootProps), content, /*#__PURE__*/React.createElement(CalendarPanel, {
3502
3859
  hostName: "Calendar",
3860
+ id: panelId,
3861
+ locale: props.locale,
3503
3862
  ref: overlayRef,
3504
3863
  className: panelClassName,
3505
3864
  style: props.panelStyle,