primereact 10.3.2 → 10.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/api/api.cjs.js +20 -0
  2. package/api/api.cjs.min.js +1 -1
  3. package/api/api.d.ts +5 -1
  4. package/api/api.esm.js +20 -0
  5. package/api/api.esm.min.js +1 -1
  6. package/api/api.js +20 -0
  7. package/api/api.min.js +1 -1
  8. package/calendar/calendar.cjs.js +493 -141
  9. package/calendar/calendar.cjs.min.js +1 -1
  10. package/calendar/calendar.d.ts +4 -0
  11. package/calendar/calendar.esm.js +494 -142
  12. package/calendar/calendar.esm.min.js +1 -1
  13. package/calendar/calendar.js +493 -141
  14. package/calendar/calendar.min.js +1 -1
  15. package/contextmenu/contextmenu.cjs.js +4 -4
  16. package/contextmenu/contextmenu.cjs.min.js +1 -1
  17. package/contextmenu/contextmenu.esm.js +4 -4
  18. package/contextmenu/contextmenu.esm.min.js +1 -1
  19. package/contextmenu/contextmenu.js +4 -4
  20. package/contextmenu/contextmenu.min.js +1 -1
  21. package/core/core.js +40 -0
  22. package/core/core.min.js +2 -2
  23. package/datatable/datatable.cjs.js +3 -0
  24. package/datatable/datatable.cjs.min.js +1 -1
  25. package/datatable/datatable.esm.js +3 -0
  26. package/datatable/datatable.esm.min.js +1 -1
  27. package/datatable/datatable.js +3 -0
  28. package/datatable/datatable.min.js +1 -1
  29. package/dataview/dataview.cjs.js +27 -25
  30. package/dataview/dataview.cjs.min.js +1 -1
  31. package/dataview/dataview.d.ts +6 -0
  32. package/dataview/dataview.esm.js +27 -25
  33. package/dataview/dataview.esm.min.js +1 -1
  34. package/dataview/dataview.js +27 -25
  35. package/dataview/dataview.min.js +1 -1
  36. package/menubar/menubar.cjs.js +4 -4
  37. package/menubar/menubar.cjs.min.js +1 -1
  38. package/menubar/menubar.esm.js +4 -4
  39. package/menubar/menubar.esm.min.js +1 -1
  40. package/menubar/menubar.js +4 -4
  41. package/menubar/menubar.min.js +1 -1
  42. package/package.json +1 -1
  43. package/paginator/paginator.cjs.js +20 -0
  44. package/paginator/paginator.cjs.min.js +1 -1
  45. package/paginator/paginator.esm.js +20 -0
  46. package/paginator/paginator.esm.min.js +1 -1
  47. package/paginator/paginator.js +20 -0
  48. package/paginator/paginator.min.js +1 -1
  49. package/picklist/picklist.cjs.js +20 -0
  50. package/picklist/picklist.cjs.min.js +1 -1
  51. package/picklist/picklist.esm.js +20 -0
  52. package/picklist/picklist.esm.min.js +1 -1
  53. package/picklist/picklist.js +20 -0
  54. package/picklist/picklist.min.js +1 -1
  55. package/primereact.all.cjs.js +760 -246
  56. package/primereact.all.cjs.min.js +1 -1
  57. package/primereact.all.esm.js +760 -246
  58. package/primereact.all.esm.min.js +1 -1
  59. package/primereact.all.js +760 -246
  60. package/primereact.all.min.js +1 -1
  61. package/splitbutton/splitbutton.cjs.js +4 -4
  62. package/splitbutton/splitbutton.cjs.min.js +1 -1
  63. package/splitbutton/splitbutton.esm.js +4 -4
  64. package/splitbutton/splitbutton.esm.min.js +1 -1
  65. package/splitbutton/splitbutton.js +4 -4
  66. package/splitbutton/splitbutton.min.js +1 -1
  67. package/tieredmenu/tieredmenu.cjs.js +4 -4
  68. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  69. package/tieredmenu/tieredmenu.esm.js +4 -4
  70. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  71. package/tieredmenu/tieredmenu.js +4 -4
  72. package/tieredmenu/tieredmenu.min.js +1 -1
  73. package/toast/toast.cjs.js +20 -0
  74. package/toast/toast.cjs.min.js +1 -1
  75. package/toast/toast.esm.js +20 -0
  76. package/toast/toast.esm.min.js +1 -1
  77. package/toast/toast.js +20 -0
  78. package/toast/toast.min.js +1 -1
  79. package/treetable/treetable.cjs.js +205 -68
  80. package/treetable/treetable.cjs.min.js +1 -1
  81. package/treetable/treetable.esm.js +206 -69
  82. package/treetable/treetable.esm.min.js +1 -1
  83. package/treetable/treetable.js +205 -68
  84. package/treetable/treetable.min.js +1 -1
  85. package/web-types.json +16 -1
@@ -2791,7 +2791,27 @@ var locales = {
2791
2791
  dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
2792
2792
  monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
2793
2793
  monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
2794
+ chooseYear: 'Choose Year',
2795
+ chooseMonth: 'Choose Month',
2796
+ chooseDate: 'Choose Date',
2797
+ prevDecade: 'Previous Decade',
2798
+ nextDecade: 'Next Decade',
2799
+ prevYear: 'Previous Year',
2800
+ nextYear: 'Next Year',
2801
+ prevMonth: 'Previous Month',
2802
+ nextMonth: 'Next Month',
2803
+ prevHour: 'Previous Hour',
2804
+ nextHour: 'Next Hour',
2805
+ prevMinute: 'Previous Minute',
2806
+ nextMinute: 'Next Minute',
2807
+ prevSecond: 'Previous Second',
2808
+ nextSecond: 'Next Second',
2809
+ prevMilliSecond: 'Previous Second',
2810
+ nextMilliSecond: 'Next Second',
2811
+ am: 'am',
2812
+ pm: 'pm',
2794
2813
  today: 'Today',
2814
+ now: 'Now',
2795
2815
  weekHeader: 'Wk',
2796
2816
  firstDayOfWeek: 0,
2797
2817
  showMonthAfterYear: false,
@@ -9997,13 +10017,14 @@ var BreadCrumb = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
9997
10017
  }));
9998
10018
  BreadCrumb.displayName = 'BreadCrumb';
9999
10019
 
10000
- var styles$Y = "\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";
10020
+ var styles$Y = "\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";
10001
10021
  var classes$11 = {
10002
10022
  root: function root(_ref) {
10003
10023
  var props = _ref.props,
10004
10024
  focusedState = _ref.focusedState,
10005
- isFilled = _ref.isFilled;
10006
- 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));
10025
+ isFilled = _ref.isFilled,
10026
+ panelVisible = _ref.panelVisible;
10027
+ 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));
10007
10028
  },
10008
10029
  dropdownButton: 'p-datepicker-trigger',
10009
10030
  buttonbar: 'p-datepicker-buttonbar',
@@ -10082,6 +10103,7 @@ var CalendarBase = ComponentBase.extend({
10082
10103
  __TYPE: 'Calendar',
10083
10104
  appendTo: null,
10084
10105
  ariaLabelledBy: null,
10106
+ ariaLabel: null,
10085
10107
  autoZIndex: true,
10086
10108
  autoFocus: false,
10087
10109
  baseZIndex: 0,
@@ -10189,6 +10211,10 @@ var CalendarPanel = /*#__PURE__*/React.forwardRef(function (props, ref) {
10189
10211
  panelClassName: props.className
10190
10212
  }),
10191
10213
  style: props.style,
10214
+ role: props.inline ? null : 'dialog',
10215
+ id: props.id,
10216
+ 'aria-label': localeOption('chooseDate', props.locale),
10217
+ 'aria-modal': props.inline ? null : 'true',
10192
10218
  onClick: props.onClick,
10193
10219
  onMouseUp: props.onMouseUp
10194
10220
  }, props.ptm('panel', {
@@ -10245,6 +10271,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10245
10271
  _React$useState6 = _slicedToArray(_React$useState5, 2),
10246
10272
  viewDateState = _React$useState6[0],
10247
10273
  setViewDateState = _React$useState6[1];
10274
+ var _React$useState7 = React.useState(props.id),
10275
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
10276
+ idState = _React$useState8[0],
10277
+ setIdState = _React$useState8[1];
10248
10278
  var metaData = {
10249
10279
  props: props,
10250
10280
  state: {
@@ -10273,26 +10303,29 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10273
10303
  var isOverlayClicked = React.useRef(false);
10274
10304
  var previousButton = React.useRef(false);
10275
10305
  var nextButton = React.useRef(false);
10306
+ var viewChangedWithKeyDown = React.useRef(false);
10276
10307
  var onChangeRef = React.useRef(null);
10277
- var _React$useState7 = React.useState('date'),
10278
- _React$useState8 = _slicedToArray(_React$useState7, 2),
10279
- currentView = _React$useState8[0],
10280
- setCurrentView = _React$useState8[1];
10281
- var _React$useState9 = React.useState(null),
10308
+ var isClearClicked = React.useRef(false);
10309
+ var _React$useState9 = React.useState('date'),
10282
10310
  _React$useState10 = _slicedToArray(_React$useState9, 2),
10283
- currentMonth = _React$useState10[0],
10284
- setCurrentMonth = _React$useState10[1];
10311
+ currentView = _React$useState10[0],
10312
+ setCurrentView = _React$useState10[1];
10285
10313
  var _React$useState11 = React.useState(null),
10286
10314
  _React$useState12 = _slicedToArray(_React$useState11, 2),
10287
- currentYear = _React$useState12[0],
10288
- setCurrentYear = _React$useState12[1];
10289
- var _React$useState13 = React.useState([]),
10315
+ currentMonth = _React$useState12[0],
10316
+ setCurrentMonth = _React$useState12[1];
10317
+ var _React$useState13 = React.useState(null),
10290
10318
  _React$useState14 = _slicedToArray(_React$useState13, 2),
10291
- yearOptions = _React$useState14[0],
10292
- setYearOptions = _React$useState14[1];
10319
+ currentYear = _React$useState14[0],
10320
+ setCurrentYear = _React$useState14[1];
10321
+ var _React$useState15 = React.useState([]),
10322
+ _React$useState16 = _slicedToArray(_React$useState15, 2),
10323
+ yearOptions = _React$useState16[0],
10324
+ setYearOptions = _React$useState16[1];
10293
10325
  var previousValue = usePrevious(props.value);
10294
10326
  var visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState);
10295
10327
  var attributeSelector = UniqueComponentId();
10328
+ var panelId = idState + '_panel';
10296
10329
  var _useOverlayListener = useOverlayListener({
10297
10330
  target: elementRef,
10298
10331
  overlay: overlayRef,
@@ -10300,7 +10333,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10300
10333
  var type = _ref.type,
10301
10334
  valid = _ref.valid;
10302
10335
  if (valid) {
10303
- type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside') : hide();
10336
+ type === 'outside' ? !isOverlayClicked.current && !isNavIconClicked(event.target) && hide('outside', reFocusInputField) : hide(null, reFocusInputField);
10304
10337
  }
10305
10338
  isOverlayClicked.current = false;
10306
10339
  },
@@ -10330,21 +10363,34 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10330
10363
  setFocusedState(false);
10331
10364
  };
10332
10365
  var onInputKeyDown = function onInputKeyDown(event) {
10333
- switch (event.which) {
10334
- //escape
10335
- case 27:
10366
+ switch (event.code) {
10367
+ case 'ArrowDown':
10336
10368
  {
10337
- hide();
10369
+ if (!overlayVisibleState) {
10370
+ show();
10371
+ } else {
10372
+ focusToFirstCell();
10373
+ event.preventDefault();
10374
+ }
10338
10375
  break;
10339
10376
  }
10340
-
10341
- //tab
10342
- case 9:
10377
+ case 'Escape':
10343
10378
  {
10344
- visible && trapFocus(event);
10379
+ hide();
10345
10380
  props.touchUI && disableModality();
10346
10381
  break;
10347
10382
  }
10383
+ case 'Tab':
10384
+ {
10385
+ if (overlayRef && overlayRef.current) {
10386
+ DomHandler.getFocusableElements(overlayRef.current).forEach(function (el) {
10387
+ return el.tabIndex = '-1';
10388
+ });
10389
+ hide();
10390
+ props.touchUI && disableModality();
10391
+ }
10392
+ break;
10393
+ }
10348
10394
  }
10349
10395
  };
10350
10396
  var onUserInput = function onUserInput(event) {
@@ -10407,28 +10453,40 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10407
10453
  navForward(event);
10408
10454
  };
10409
10455
  var onContainerButtonKeydown = function onContainerButtonKeydown(event) {
10410
- switch (event.which) {
10411
- //tab
10412
- case 9:
10413
- trapFocus(event);
10456
+ switch (event.code) {
10457
+ case 'Tab':
10458
+ !props.inline && trapFocus(event);
10414
10459
  break;
10415
-
10416
- //escape
10417
- case 27:
10460
+ case 'Escape':
10418
10461
  hide(null, reFocusInputField);
10419
10462
  event.preventDefault();
10420
10463
  break;
10421
10464
  }
10422
10465
  };
10466
+ var onPickerKeyDown = function onPickerKeyDown(event, type, direction) {
10467
+ if (event.code === 'Enter' || event.code === 'Space') {
10468
+ onTimePickerElementMouseDown(event, type, direction);
10469
+ event.preventDefault();
10470
+ return;
10471
+ }
10472
+ onContainerButtonKeydown(event);
10473
+ };
10474
+ var onPickerKeyUp = function onPickerKeyUp(event) {
10475
+ if (event.code === 'Enter' || event.code === 'Space') {
10476
+ onTimePickerElementMouseUp();
10477
+ event.preventDefault();
10478
+ return;
10479
+ }
10480
+ };
10423
10481
  var trapFocus = function trapFocus(event) {
10424
- event.preventDefault();
10482
+ event === null || event === void 0 || event.preventDefault();
10425
10483
  var focusableElements = DomHandler.getFocusableElements(overlayRef.current);
10426
10484
  if (focusableElements && focusableElements.length > 0) {
10427
10485
  if (!document.activeElement) {
10428
10486
  focusableElements[0].focus();
10429
10487
  } else {
10430
10488
  var focusedIndex = focusableElements.indexOf(document.activeElement);
10431
- if (event.shiftKey) {
10489
+ if (event !== null && event !== void 0 && event.shiftKey) {
10432
10490
  if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();else focusableElements[focusedIndex - 1].focus();
10433
10491
  } else {
10434
10492
  if (focusedIndex === -1 || focusedIndex === focusableElements.length - 1) focusableElements[0].focus();else focusableElements[focusedIndex + 1].focus();
@@ -10461,7 +10519,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10461
10519
  };
10462
10520
  var initFocusableCell = function initFocusableCell() {
10463
10521
  var cell;
10464
- if (props.view === 'month') {
10522
+ if (currentView === 'month') {
10465
10523
  var cells = DomHandler.find(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"]');
10466
10524
  var selectedCell = DomHandler.findSingle(overlayRef.current, '[data-pc-section="monthpicker"] [data-pc-section="month"][data-p-highlight="true"]');
10467
10525
  cells.forEach(function (cell) {
@@ -10479,6 +10537,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10479
10537
  cell.tabIndex = '0';
10480
10538
  }
10481
10539
  };
10540
+ var focusToFirstCell = function focusToFirstCell() {
10541
+ if (currentView) {
10542
+ var cell;
10543
+ if (currentView === 'date') {
10544
+ cell = DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
10545
+ if (!cell) {
10546
+ var todayCell = DomHandler.findSingle(overlayRef.current, 'td.p-datepicker-today span:not(.p-disabled)');
10547
+ cell = todayCell || DomHandler.findSingle(overlayRef.current, 'table td span:not([data-p-disabled="true"])');
10548
+ }
10549
+ } else if (currentView === 'month' || currentView === 'year') {
10550
+ cell = DomHandler.findSingle(overlayRef.current, 'span[data-p-highlight="true"]');
10551
+ if (!cell) {
10552
+ cell = DomHandler.findSingle(overlayRef.current, "[data-pc-section=\"".concat(currentView, "picker\"] [data-pc-section=\"").concat(currentView, "\"]:not([data-p-disabled=\"true\"])"));
10553
+ }
10554
+ }
10555
+ if (cell) {
10556
+ cell.tabIndex = '0';
10557
+ cell && cell.focus();
10558
+ }
10559
+ }
10560
+ };
10482
10561
  var navBackward = function navBackward(event) {
10483
10562
  if (props.disabled) {
10484
10563
  event.preventDefault();
@@ -10608,6 +10687,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
10608
10687
  props.onTodayButtonClick && props.onTodayButtonClick(event);
10609
10688
  };
10610
10689
  var onClearButtonClick = function onClearButtonClick(event) {
10690
+ isClearClicked.current = true;
10611
10691
  updateModel(event, null);
10612
10692
  updateInputfield(null);
10613
10693
  hide();
@@ -11089,23 +11169,29 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11089
11169
  var onDateCellKeydown = function onDateCellKeydown(event, date, groupIndex) {
11090
11170
  var cellContent = event.currentTarget;
11091
11171
  var cell = cellContent.parentElement;
11092
- switch (event.which) {
11093
- //down arrow
11094
- case 40:
11172
+ var cellIndex = DomHandler.index(cell);
11173
+ switch (event.code) {
11174
+ case 'ArrowDown':
11095
11175
  {
11096
11176
  cellContent.tabIndex = '-1';
11097
- var cellIndex = DomHandler.index(cell);
11098
11177
  var nextRow = cell.parentElement.nextElementSibling;
11099
11178
  if (nextRow) {
11100
- var focusCell = nextRow.children[cellIndex].children[0];
11101
- if (DomHandler.hasClass(focusCell, 'p-disabled')) {
11179
+ var tableRowIndex = DomHandler.index(cell.parentElement);
11180
+ var tableRows = Array.from(cell.parentElement.parentElement.children);
11181
+ var nextTableRows = tableRows.slice(tableRowIndex + 1);
11182
+ var hasNextFocusableDate = nextTableRows.find(function (el) {
11183
+ var focusCell = el.children[cellIndex].children[0];
11184
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
11185
+ });
11186
+ if (hasNextFocusableDate) {
11187
+ var focusCell = hasNextFocusableDate.children[cellIndex].children[0];
11188
+ focusCell.tabIndex = '0';
11189
+ focusCell.focus();
11190
+ } else {
11102
11191
  navigation.current = {
11103
11192
  backward: false
11104
11193
  };
11105
11194
  navForward(event);
11106
- } else {
11107
- nextRow.children[cellIndex].children[0].tabIndex = '0';
11108
- nextRow.children[cellIndex].children[0].focus();
11109
11195
  }
11110
11196
  } else {
11111
11197
  navigation.current = {
@@ -11116,46 +11202,58 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11116
11202
  event.preventDefault();
11117
11203
  break;
11118
11204
  }
11119
-
11120
- //up arrow
11121
- case 38:
11205
+ case 'ArrowUp':
11122
11206
  {
11123
11207
  cellContent.tabIndex = '-1';
11124
- var _cellIndex = DomHandler.index(cell);
11125
- var prevRow = cell.parentElement.previousElementSibling;
11126
- if (prevRow) {
11127
- var _focusCell = prevRow.children[_cellIndex].children[0];
11128
- if (DomHandler.hasClass(_focusCell, 'p-disabled')) {
11208
+ if (event.altKey) {
11209
+ hide(null, reFocusInputField);
11210
+ } else {
11211
+ var prevRow = cell.parentElement.previousElementSibling;
11212
+ if (prevRow) {
11213
+ var _tableRowIndex = DomHandler.index(cell.parentElement);
11214
+ var _tableRows = Array.from(cell.parentElement.parentElement.children);
11215
+ var prevTableRows = _tableRows.slice(0, _tableRowIndex).reverse();
11216
+ var _hasNextFocusableDate = prevTableRows.find(function (el) {
11217
+ var focusCell = el.children[cellIndex].children[0];
11218
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
11219
+ });
11220
+ if (_hasNextFocusableDate) {
11221
+ var _focusCell = _hasNextFocusableDate.children[cellIndex].children[0];
11222
+ _focusCell.tabIndex = '0';
11223
+ _focusCell.focus();
11224
+ } else {
11225
+ navigation.current = {
11226
+ backward: true
11227
+ };
11228
+ navBackward(event);
11229
+ }
11230
+ } else {
11129
11231
  navigation.current = {
11130
11232
  backward: true
11131
11233
  };
11132
11234
  navBackward(event);
11133
- } else {
11134
- _focusCell.tabIndex = '0';
11135
- _focusCell.focus();
11136
11235
  }
11137
- } else {
11138
- navigation.current = {
11139
- backward: true
11140
- };
11141
- navBackward(event);
11142
11236
  }
11143
11237
  event.preventDefault();
11144
11238
  break;
11145
11239
  }
11146
-
11147
- //left arrow
11148
- case 37:
11240
+ case 'ArrowLeft':
11149
11241
  {
11150
11242
  cellContent.tabIndex = '-1';
11151
11243
  var prevCell = cell.previousElementSibling;
11152
11244
  if (prevCell) {
11153
- var _focusCell2 = prevCell.children[0];
11154
- if (DomHandler.hasClass(_focusCell2, 'p-disabled')) {
11155
- navigateToMonth(true, groupIndex, event);
11156
- } else {
11245
+ var cells = Array.from(cell.parentElement.children);
11246
+ var prevCells = cells.slice(0, cellIndex).reverse();
11247
+ var _hasNextFocusableDate2 = prevCells.find(function (el) {
11248
+ var focusCell = el.children[0];
11249
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
11250
+ });
11251
+ if (_hasNextFocusableDate2) {
11252
+ var _focusCell2 = _hasNextFocusableDate2.children[0];
11157
11253
  _focusCell2.tabIndex = '0';
11158
11254
  _focusCell2.focus();
11255
+ } else {
11256
+ navigateToMonth(true, groupIndex, event);
11159
11257
  }
11160
11258
  } else {
11161
11259
  navigateToMonth(true, groupIndex, event);
@@ -11163,19 +11261,23 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11163
11261
  event.preventDefault();
11164
11262
  break;
11165
11263
  }
11166
-
11167
- //right arrow
11168
- case 39:
11264
+ case 'ArrowRight':
11169
11265
  {
11170
11266
  cellContent.tabIndex = '-1';
11171
11267
  var nextCell = cell.nextElementSibling;
11172
11268
  if (nextCell) {
11173
- var _focusCell3 = nextCell.children[0];
11174
- if (DomHandler.hasClass(_focusCell3, 'p-disabled')) {
11175
- navigateToMonth(false, groupIndex, event);
11176
- } else {
11269
+ var _cells = Array.from(cell.parentElement.children);
11270
+ var nextCells = _cells.slice(cellIndex + 1);
11271
+ var _hasNextFocusableDate3 = nextCells.find(function (el) {
11272
+ var focusCell = el.children[0];
11273
+ return !DomHandler.getAttribute(focusCell, 'data-p-disabled');
11274
+ });
11275
+ if (_hasNextFocusableDate3) {
11276
+ var _focusCell3 = _hasNextFocusableDate3.children[0];
11177
11277
  _focusCell3.tabIndex = '0';
11178
11278
  _focusCell3.focus();
11279
+ } else {
11280
+ navigateToMonth(false, groupIndex, event);
11179
11281
  }
11180
11282
  } else {
11181
11283
  navigateToMonth(false, groupIndex, event);
@@ -11183,27 +11285,75 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11183
11285
  event.preventDefault();
11184
11286
  break;
11185
11287
  }
11186
-
11187
- //enter
11188
- case 13:
11288
+ case 'Enter':
11289
+ case 'NumpadEnter':
11290
+ case 'Space':
11189
11291
  {
11190
11292
  onDateSelect(event, date);
11191
11293
  event.preventDefault();
11192
11294
  break;
11193
11295
  }
11194
-
11195
- //escape
11196
- case 27:
11296
+ case 'Escape':
11197
11297
  {
11198
11298
  hide(null, reFocusInputField);
11199
11299
  event.preventDefault();
11200
11300
  break;
11201
11301
  }
11202
-
11203
- //tab
11204
- case 9:
11302
+ case 'Tab':
11205
11303
  {
11206
- trapFocus(event);
11304
+ if (!props.inline) trapFocus(event);
11305
+ break;
11306
+ }
11307
+ case 'Home':
11308
+ {
11309
+ cellContent.tabIndex = '-1';
11310
+ var currentRow = cell.parentElement;
11311
+ var _focusCell4 = currentRow.children[0].children[0];
11312
+ if (DomHandler.getAttribute(_focusCell4, 'data-p-disabled')) {
11313
+ navigateToMonth(groupIndex, true, event);
11314
+ } else {
11315
+ _focusCell4.tabIndex = '0';
11316
+ _focusCell4.focus();
11317
+ }
11318
+ event.preventDefault();
11319
+ break;
11320
+ }
11321
+ case 'End':
11322
+ {
11323
+ cellContent.tabIndex = '-1';
11324
+ var _currentRow = cell.parentElement;
11325
+ var _focusCell5 = _currentRow.children[_currentRow.children.length - 1].children[0];
11326
+ if (DomHandler.getAttribute(_focusCell5, 'data-p-disabled')) {
11327
+ navigateToMonth(groupIndex, false, event);
11328
+ } else {
11329
+ _focusCell5.tabIndex = '0';
11330
+ _focusCell5.focus();
11331
+ }
11332
+ event.preventDefault();
11333
+ break;
11334
+ }
11335
+ case 'PageUp':
11336
+ {
11337
+ cellContent.tabIndex = '-1';
11338
+ if (event.shiftKey) {
11339
+ navigation.current = {
11340
+ backward: true
11341
+ };
11342
+ navBackward(event);
11343
+ } else navigateToMonth(groupIndex, true, event);
11344
+ event.preventDefault();
11345
+ break;
11346
+ }
11347
+ case 'PageDown':
11348
+ {
11349
+ cellContent.tabIndex = '-1';
11350
+ if (event.shiftKey) {
11351
+ navigation.current = {
11352
+ backward: false
11353
+ };
11354
+ navForward(event);
11355
+ } else navigateToMonth(groupIndex, false, event);
11356
+ event.preventDefault();
11207
11357
  break;
11208
11358
  }
11209
11359
  }
@@ -11230,18 +11380,18 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11230
11380
  navForward(event);
11231
11381
  } else {
11232
11382
  var nextMonthContainer = overlayRef.current.children[groupIndex + 1];
11233
- var _focusCell4 = DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
11234
- _focusCell4.tabIndex = '0';
11235
- _focusCell4.focus();
11383
+ var _focusCell6 = DomHandler.findSingle(nextMonthContainer, 'table td span:not([data-p-disabled="true"])');
11384
+ _focusCell6.tabIndex = '0';
11385
+ _focusCell6.focus();
11236
11386
  }
11237
11387
  }
11238
11388
  };
11239
11389
  var onMonthCellKeydown = function onMonthCellKeydown(event, index) {
11240
11390
  var cell = event.currentTarget;
11241
- switch (event.which) {
11391
+ switch (event.code) {
11242
11392
  //arrows
11243
- case 38:
11244
- case 40:
11393
+ case 'ArrowUp':
11394
+ case 'ArrowDown':
11245
11395
  {
11246
11396
  cell.tabIndex = '-1';
11247
11397
  var cells = cell.parentElement.children;
@@ -11254,51 +11404,162 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11254
11404
  event.preventDefault();
11255
11405
  break;
11256
11406
  }
11257
-
11258
- //left arrow
11259
- case 37:
11407
+ case 'ArrowLeft':
11260
11408
  {
11261
11409
  cell.tabIndex = '-1';
11262
11410
  var prevCell = cell.previousElementSibling;
11263
11411
  if (prevCell) {
11264
11412
  prevCell.tabIndex = '0';
11265
11413
  prevCell.focus();
11414
+ } else {
11415
+ navigation.current = {
11416
+ backward: true
11417
+ };
11418
+ navBackward(event);
11266
11419
  }
11267
11420
  event.preventDefault();
11268
11421
  break;
11269
11422
  }
11270
-
11271
- //right arrow
11272
- case 39:
11423
+ case 'ArrowRight':
11273
11424
  {
11274
11425
  cell.tabIndex = '-1';
11275
11426
  var _nextCell = cell.nextElementSibling;
11276
11427
  if (_nextCell) {
11277
11428
  _nextCell.tabIndex = '0';
11278
11429
  _nextCell.focus();
11430
+ } else {
11431
+ navigation.current = {
11432
+ backward: false
11433
+ };
11434
+ navForward(event);
11279
11435
  }
11280
11436
  event.preventDefault();
11281
11437
  break;
11282
11438
  }
11283
-
11284
- //enter
11285
- case 13:
11439
+ case 'PageUp':
11440
+ {
11441
+ if (event.shiftKey) return;
11442
+ navigation.current = {
11443
+ backward: true
11444
+ };
11445
+ navBackward(event);
11446
+ break;
11447
+ }
11448
+ case 'PageDown':
11449
+ {
11450
+ if (event.shiftKey) return;
11451
+ navigation.current = {
11452
+ backward: false
11453
+ };
11454
+ navForward(event);
11455
+ break;
11456
+ }
11457
+ case 'Enter':
11458
+ case 'NumpadEnter':
11459
+ case 'Space':
11286
11460
  {
11461
+ if (props.view !== 'month') viewChangedWithKeyDown.current = true;
11287
11462
  onMonthSelect(event, index);
11288
11463
  event.preventDefault();
11289
11464
  break;
11290
11465
  }
11291
-
11292
- //escape
11293
- case 27:
11466
+ case 'Escape':
11294
11467
  {
11295
11468
  hide(null, reFocusInputField);
11296
11469
  event.preventDefault();
11297
11470
  break;
11298
11471
  }
11299
-
11300
- //tab
11301
- case 9:
11472
+ case 'Tab':
11473
+ {
11474
+ trapFocus(event);
11475
+ break;
11476
+ }
11477
+ }
11478
+ };
11479
+ var onYearCellKeydown = function onYearCellKeydown(event, index) {
11480
+ var cell = event.currentTarget;
11481
+ switch (event.code) {
11482
+ //arrows
11483
+ case 'ArrowUp':
11484
+ case 'ArrowDown':
11485
+ {
11486
+ cell.tabIndex = '-1';
11487
+ var cells = cell.parentElement.children;
11488
+ var cellIndex = DomHandler.index(cell);
11489
+ var nextCell = cells[event.code === 'ArrowDown' ? cellIndex + 2 : cellIndex - 2];
11490
+ if (nextCell) {
11491
+ nextCell.tabIndex = '0';
11492
+ nextCell.focus();
11493
+ }
11494
+ event.preventDefault();
11495
+ break;
11496
+ }
11497
+ case 'ArrowLeft':
11498
+ {
11499
+ cell.tabIndex = '-1';
11500
+ var prevCell = cell.previousElementSibling;
11501
+ if (prevCell) {
11502
+ prevCell.tabIndex = '0';
11503
+ prevCell.focus();
11504
+ } else {
11505
+ navigation.current = {
11506
+ backward: true
11507
+ };
11508
+ navBackward(event);
11509
+ }
11510
+ event.preventDefault();
11511
+ break;
11512
+ }
11513
+ case 'ArrowRight':
11514
+ {
11515
+ cell.tabIndex = '-1';
11516
+ var _nextCell2 = cell.nextElementSibling;
11517
+ if (_nextCell2) {
11518
+ _nextCell2.tabIndex = '0';
11519
+ _nextCell2.focus();
11520
+ } else {
11521
+ navigation.current = {
11522
+ backward: false
11523
+ };
11524
+ navForward(event);
11525
+ }
11526
+ event.preventDefault();
11527
+ break;
11528
+ }
11529
+ case 'PageUp':
11530
+ {
11531
+ if (event.shiftKey) return;
11532
+ navigation.current = {
11533
+ backward: true
11534
+ };
11535
+ navBackward(event);
11536
+ break;
11537
+ }
11538
+ case 'PageDown':
11539
+ {
11540
+ if (event.shiftKey) return;
11541
+ navigation.current = {
11542
+ backward: false
11543
+ };
11544
+ navForward(event);
11545
+ break;
11546
+ }
11547
+ case 'Enter':
11548
+ case 'NumpadEnter':
11549
+ case 'Space':
11550
+ {
11551
+ if (props.view !== 'year') viewChangedWithKeyDown.current = true;
11552
+ onYearSelect(event, index);
11553
+ event.preventDefault();
11554
+ break;
11555
+ }
11556
+ case 'Escape':
11557
+ {
11558
+ hide(null, reFocusInputField);
11559
+ event.preventDefault();
11560
+ break;
11561
+ }
11562
+ case 'Tab':
11302
11563
  {
11303
11564
  trapFocus(event);
11304
11565
  break;
@@ -11415,10 +11676,16 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11415
11676
  return _currentYear;
11416
11677
  };
11417
11678
  var switchToMonthView = function switchToMonthView(event) {
11679
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
11680
+ viewChangedWithKeyDown.current = true;
11681
+ }
11418
11682
  setCurrentView('month');
11419
11683
  event.preventDefault();
11420
11684
  };
11421
11685
  var switchToYearView = function switchToYearView(event) {
11686
+ if (event && event.code && (event.code === 'Enter' || event.code === 'Space')) {
11687
+ viewChangedWithKeyDown.current = true;
11688
+ }
11422
11689
  setCurrentView('year');
11423
11690
  event.preventDefault();
11424
11691
  };
@@ -11559,7 +11826,6 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
11559
11826
  var onOverlayEntered = function onOverlayEntered() {
11560
11827
  bindOverlayListener();
11561
11828
  props.onShow && props.onShow();
11562
- DomHandler.focusFirstElement(overlayRef.current);
11563
11829
  setFocusedState(false);
11564
11830
  };
11565
11831
  var onOverlayExit = function onOverlayExit() {
@@ -12430,6 +12696,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12430
12696
  setCurrentMonth(viewDate.getMonth());
12431
12697
  setCurrentYear(viewDate.getFullYear());
12432
12698
  setCurrentView(props.view);
12699
+ if (!idState) {
12700
+ var uniqueId = UniqueComponentId();
12701
+ !idState && setIdState(uniqueId);
12702
+ }
12433
12703
  if (props.inline) {
12434
12704
  overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
12435
12705
  if (!props.disabled) {
@@ -12477,8 +12747,14 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12477
12747
  // eslint-disable-next-line react-hooks/exhaustive-deps
12478
12748
  }, [props.disabled, props.mask, props.readOnlyInput]);
12479
12749
  useUpdateEffect(function () {
12480
- setCurrentView(props.view);
12750
+ if (viewChangedWithKeyDown.current) {
12751
+ setCurrentView(props.view);
12752
+ }
12753
+ viewChangedWithKeyDown.current = false;
12481
12754
  }, [props.view]);
12755
+ useUpdateEffect(function () {
12756
+ focusToFirstCell();
12757
+ }, [currentView]);
12482
12758
  useUpdateEffect(function () {
12483
12759
  if (!props.onViewDateChange && !viewStateChanged.current) {
12484
12760
  setValue(props.value);
@@ -12569,12 +12845,16 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12569
12845
  if (Array.isArray(prevPropValue)) {
12570
12846
  prevPropValue = prevPropValue[0];
12571
12847
  }
12848
+ var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
12849
+ if (isClearClicked.current && props.showTime) {
12850
+ viewDate.setHours(0, 0, 0);
12851
+ isClearClicked.current = false;
12852
+ }
12572
12853
  if (!prevPropValue && propValue || propValue && propValue instanceof Date && propValue.getTime() !== prevPropValue.getTime()) {
12573
- var viewDate = props.viewDate && isValidDate(props.viewDate) ? props.viewDate : propValue && isValidDate(propValue) ? propValue : new Date();
12574
12854
  validateDate(viewDate);
12575
- setViewDateState(viewDate);
12576
- viewStateChanged.current = true;
12577
12855
  }
12856
+ setViewDateState(viewDate);
12857
+ viewStateChanged.current = true;
12578
12858
  };
12579
12859
  var createBackwardNavigator = function createBackwardNavigator(isVisible) {
12580
12860
  var navigatorProps = isVisible ? {
@@ -12594,9 +12874,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12594
12874
  var backwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread$1z({}, previousIconProps), {
12595
12875
  props: props
12596
12876
  });
12877
+ var _localeOptions4 = localeOptions(props.locale),
12878
+ prevDecade = _localeOptions4.prevDecade,
12879
+ prevYear = _localeOptions4.prevYear,
12880
+ prevMonth = _localeOptions4.prevMonth;
12881
+ var previousButtonLabel = currentView === 'year' ? prevDecade : currentView === 'month' ? prevYear : prevMonth;
12597
12882
  var previousButtonProps = mergeProps(_objectSpread$1z({
12598
12883
  type: 'button',
12599
- className: cx('previousButton')
12884
+ className: cx('previousButton'),
12885
+ 'aria-label': previousButtonLabel
12600
12886
  }, navigatorProps), ptm('previousButton'));
12601
12887
  return /*#__PURE__*/React.createElement("button", _extends({
12602
12888
  ref: previousButton
@@ -12620,9 +12906,15 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12620
12906
  var forwardNavigatorIcon = IconUtils.getJSXIcon(icon, _objectSpread$1z({}, nextIconProps), {
12621
12907
  props: props
12622
12908
  });
12909
+ var _localeOptions5 = localeOptions(props.locale),
12910
+ nextDecade = _localeOptions5.nextDecade,
12911
+ nextYear = _localeOptions5.nextYear,
12912
+ nextMonth = _localeOptions5.nextMonth;
12913
+ var nextButtonLabel = currentView === 'year' ? nextDecade : currentView === 'month' ? nextYear : nextMonth;
12623
12914
  var nextButtonProps = mergeProps(_objectSpread$1z({
12624
12915
  type: 'button',
12625
- className: cx('nextButton')
12916
+ className: cx('nextButton'),
12917
+ 'aria-label': nextButtonLabel
12626
12918
  }, navigatorProps), ptm('nextButton'));
12627
12919
  return /*#__PURE__*/React.createElement("button", _extends({
12628
12920
  ref: nextButton
@@ -12679,6 +12971,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12679
12971
  }
12680
12972
  var monthTitleProps = mergeProps({
12681
12973
  className: cx('monthTitle'),
12974
+ onKeyDown: onContainerButtonKeydown,
12975
+ 'aria-label': localeOption('chooseMonth', props.locale),
12682
12976
  onClick: switchToMonthView,
12683
12977
  disabled: switchViewButtonDisabled()
12684
12978
  }, ptm('monthTitle'));
@@ -12737,6 +13031,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12737
13031
  var displayYear = props.numberOfMonths > 1 ? metaYear : currentYear;
12738
13032
  var yearTitleProps = mergeProps({
12739
13033
  className: cx('yearTitle'),
13034
+ 'aria-label': localeOption('chooseYear', props.locale),
12740
13035
  onClick: function onClick(e) {
12741
13036
  return switchToYearView(e);
12742
13037
  },
@@ -12795,25 +13090,33 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12795
13090
  };
12796
13091
  var createDateCellContent = function createDateCellContent(date, className, groupIndex) {
12797
13092
  var content = props.dateTemplate ? props.dateTemplate(date) : date.day;
13093
+ var selected = isSelected(date);
12798
13094
  var dayLabelProps = mergeProps({
12799
13095
  className: cx('dayLabel', {
12800
13096
  className: className
12801
13097
  }),
13098
+ 'aria-selected': selected,
13099
+ 'aria-disabled': !date.selectable,
12802
13100
  onClick: function onClick(e) {
12803
13101
  return onDateSelect(e, date);
12804
13102
  },
12805
13103
  onKeyDown: function onKeyDown(e) {
12806
13104
  return onDateCellKeydown(e, date, groupIndex);
12807
13105
  },
12808
- 'data-p-highlight': isSelected(date),
13106
+ 'data-p-highlight': selected,
12809
13107
  'data-p-disabled': !date.selectable
12810
13108
  }, ptm('dayLabel', {
12811
13109
  context: {
12812
- selected: isSelected(date),
13110
+ selected: selected,
12813
13111
  disabled: !date.selectable
12814
13112
  }
12815
13113
  }));
12816
- return /*#__PURE__*/React.createElement("span", dayLabelProps, content);
13114
+ return /*#__PURE__*/React.createElement("span", dayLabelProps, content, selected && /*#__PURE__*/React.createElement("div", {
13115
+ "aria-live": "polite",
13116
+ className: "p-hidden-accessible",
13117
+ "data-p-hidden-accessible": true,
13118
+ pt: ptm('hiddenSelectedDay')
13119
+ }));
12817
13120
  };
12818
13121
  var createWeek = function createWeek(weekDates, weekNumber, groupIndex) {
12819
13122
  var week = weekDates.map(function (date) {
@@ -12827,6 +13130,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12827
13130
  className: cx('day', {
12828
13131
  date: date
12829
13132
  }),
13133
+ 'aria-label': date.day,
12830
13134
  'data-p-today': date.today,
12831
13135
  'data-p-other-month': date.otherMonth
12832
13136
  }, ptm('day', {
@@ -12875,6 +13179,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12875
13179
  key: UniqueComponentId('calendar_container_')
12876
13180
  }, ptm('container'));
12877
13181
  var tableProps = mergeProps({
13182
+ role: 'grid',
12878
13183
  className: cx('table')
12879
13184
  }, ptm('table'));
12880
13185
  var tableHeaderProps = mergeProps(ptm('tableHeader'));
@@ -12978,6 +13283,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12978
13283
  if (hour === 0) hour = 12;else if (hour > 11 && hour !== 12) hour = hour - 12;
12979
13284
  }
12980
13285
  var hourProps = mergeProps(ptm('hour'));
13286
+ var _localeOptions6 = localeOptions(props.locale),
13287
+ nextHour = _localeOptions6.nextHour,
13288
+ prevHour = _localeOptions6.prevHour;
12981
13289
  var hourDisplay = hour < 10 ? '0' + hour : hour;
12982
13290
  var hourPickerProps = mergeProps({
12983
13291
  className: cx('hourPicker')
@@ -12985,26 +13293,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
12985
13293
  var incrementButtonProps = mergeProps({
12986
13294
  type: 'button',
12987
13295
  className: cx('incrementButton'),
13296
+ 'aria-label': nextHour,
12988
13297
  onMouseDown: function onMouseDown(e) {
12989
13298
  return onTimePickerElementMouseDown(e, 0, 1);
12990
13299
  },
12991
13300
  onMouseUp: onTimePickerElementMouseUp,
12992
13301
  onMouseLeave: onTimePickerElementMouseLeave,
12993
13302
  onKeyDown: function onKeyDown(e) {
12994
- return onContainerButtonKeydown(e);
12995
- }
13303
+ return onPickerKeyDown(e, 0, 1);
13304
+ },
13305
+ onKeyUp: onPickerKeyUp
12996
13306
  }, ptm('incrementButton'));
12997
13307
  var decrementButtonProps = mergeProps({
12998
13308
  type: 'button',
12999
13309
  className: cx('decrementButton'),
13310
+ 'aria-label': prevHour,
13000
13311
  onMouseDown: function onMouseDown(e) {
13001
13312
  return onTimePickerElementMouseDown(e, 0, -1);
13002
13313
  },
13003
13314
  onMouseUp: onTimePickerElementMouseUp,
13004
13315
  onMouseLeave: onTimePickerElementMouseLeave,
13005
13316
  onKeyDown: function onKeyDown(e) {
13006
- return onContainerButtonKeydown(e);
13007
- }
13317
+ return onPickerKeyDown(e, 0, -1);
13318
+ },
13319
+ onKeyUp: onPickerKeyUp
13008
13320
  }, ptm('decrementButton'));
13009
13321
  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)));
13010
13322
  };
@@ -13013,6 +13325,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13013
13325
  var minute = doStepMinute(currentTime.getMinutes());
13014
13326
  minute = minute > 59 ? minute - 60 : minute;
13015
13327
  var minuteProps = mergeProps(ptm('minute'));
13328
+ var _localeOptions7 = localeOptions(props.locale),
13329
+ nextMinute = _localeOptions7.nextMinute,
13330
+ prevMinute = _localeOptions7.prevMinute;
13016
13331
  var minuteDisplay = minute < 10 ? '0' + minute : minute;
13017
13332
  var minutePickerProps = mergeProps({
13018
13333
  className: cx('minutePicker')
@@ -13020,32 +13335,39 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13020
13335
  var incrementButtonProps = mergeProps({
13021
13336
  type: 'button',
13022
13337
  className: cx('incrementButton'),
13338
+ 'aria-label': nextMinute,
13023
13339
  onMouseDown: function onMouseDown(e) {
13024
13340
  return onTimePickerElementMouseDown(e, 1, 1);
13025
13341
  },
13026
13342
  onMouseUp: onTimePickerElementMouseUp,
13027
13343
  onMouseLeave: onTimePickerElementMouseLeave,
13028
13344
  onKeyDown: function onKeyDown(e) {
13029
- return onContainerButtonKeydown(e);
13030
- }
13345
+ return onPickerKeyDown(e, 1, 1);
13346
+ },
13347
+ onKeyUp: onPickerKeyUp
13031
13348
  }, ptm('incrementButton'));
13032
13349
  var decrementButtonProps = mergeProps({
13033
13350
  type: 'button',
13034
13351
  className: cx('decrementButton'),
13352
+ 'aria-label': prevMinute,
13035
13353
  onMouseDown: function onMouseDown(e) {
13036
13354
  return onTimePickerElementMouseDown(e, 1, -1);
13037
13355
  },
13038
13356
  onMouseUp: onTimePickerElementMouseUp,
13039
13357
  onMouseLeave: onTimePickerElementMouseLeave,
13040
13358
  onKeyDown: function onKeyDown(e) {
13041
- return onContainerButtonKeydown(e);
13042
- }
13359
+ return onPickerKeyDown(e, 1, -1);
13360
+ },
13361
+ onKeyUp: onPickerKeyUp
13043
13362
  }, ptm('decrementButton'));
13044
13363
  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)));
13045
13364
  };
13046
13365
  var createSecondPicker = function createSecondPicker() {
13047
13366
  if (props.showSeconds) {
13048
13367
  var currentTime = getCurrentDateTime();
13368
+ var _localeOptions8 = localeOptions(props.locale),
13369
+ nextSecond = _localeOptions8.nextSecond,
13370
+ prevSecond = _localeOptions8.prevSecond;
13049
13371
  var secondProps = mergeProps(ptm('second'));
13050
13372
  var second = currentTime.getSeconds();
13051
13373
  var secondDisplay = second < 10 ? '0' + second : second;
@@ -13055,26 +13377,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13055
13377
  var incrementButtonProps = mergeProps({
13056
13378
  type: 'button',
13057
13379
  className: cx('incrementButton'),
13380
+ 'aria-label': nextSecond,
13058
13381
  onMouseDown: function onMouseDown(e) {
13059
13382
  return onTimePickerElementMouseDown(e, 2, 1);
13060
13383
  },
13061
13384
  onMouseUp: onTimePickerElementMouseUp,
13062
13385
  onMouseLeave: onTimePickerElementMouseLeave,
13063
13386
  onKeyDown: function onKeyDown(e) {
13064
- return onContainerButtonKeydown(e);
13065
- }
13387
+ return onPickerKeyDown(e, 2, 1);
13388
+ },
13389
+ onKeyUp: onPickerKeyUp
13066
13390
  }, ptm('incrementButton'));
13067
13391
  var decrementButtonProps = mergeProps({
13068
13392
  type: 'button',
13069
13393
  className: cx('decrementButton'),
13394
+ 'aria-label': prevSecond,
13070
13395
  onMouseDown: function onMouseDown(e) {
13071
13396
  return onTimePickerElementMouseDown(e, 2, -1);
13072
13397
  },
13073
13398
  onMouseUp: onTimePickerElementMouseUp,
13074
13399
  onMouseLeave: onTimePickerElementMouseLeave,
13075
13400
  onKeyDown: function onKeyDown(e) {
13076
- return onContainerButtonKeydown(e);
13077
- }
13401
+ return onPickerKeyDown(e, 2, -1);
13402
+ },
13403
+ onKeyUp: onPickerKeyUp
13078
13404
  }, ptm('decrementButton'));
13079
13405
  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)));
13080
13406
  }
@@ -13083,6 +13409,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13083
13409
  var createMiliSecondPicker = function createMiliSecondPicker() {
13084
13410
  if (props.showMillisec) {
13085
13411
  var currentTime = getCurrentDateTime();
13412
+ var _localeOptions9 = localeOptions(props.locale),
13413
+ nextMilliSecond = _localeOptions9.nextMilliSecond,
13414
+ prevMilliSecond = _localeOptions9.prevMilliSecond;
13086
13415
  var millisecondProps = mergeProps(ptm('millisecond'));
13087
13416
  var millisecond = currentTime.getMilliseconds();
13088
13417
  var millisecondDisplay = millisecond < 100 ? (millisecond < 10 ? '00' : '0') + millisecond : millisecond;
@@ -13092,26 +13421,30 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13092
13421
  var incrementButtonProps = mergeProps({
13093
13422
  type: 'button',
13094
13423
  className: cx('incrementButton'),
13424
+ 'aria-label': nextMilliSecond,
13095
13425
  onMouseDown: function onMouseDown(e) {
13096
13426
  return onTimePickerElementMouseDown(e, 3, 1);
13097
13427
  },
13098
13428
  onMouseUp: onTimePickerElementMouseUp,
13099
13429
  onMouseLeave: onTimePickerElementMouseLeave,
13100
13430
  onKeyDown: function onKeyDown(e) {
13101
- return onContainerButtonKeydown(e);
13102
- }
13431
+ return onPickerKeyDown(e, 3, 1);
13432
+ },
13433
+ onKeyUp: onPickerKeyUp
13103
13434
  }, ptm('incrementButton'));
13104
13435
  var decrementButtonProps = mergeProps({
13105
13436
  type: 'button',
13106
13437
  className: cx('decrementButton'),
13438
+ 'aria-label': prevMilliSecond,
13107
13439
  onMouseDown: function onMouseDown(e) {
13108
13440
  return onTimePickerElementMouseDown(e, 3, -1);
13109
13441
  },
13110
13442
  onMouseUp: onTimePickerElementMouseUp,
13111
13443
  onMouseLeave: onTimePickerElementMouseLeave,
13112
13444
  onKeyDown: function onKeyDown(e) {
13113
- return onContainerButtonKeydown(e);
13114
- }
13445
+ return onPickerKeyDown(e, 3, -1);
13446
+ },
13447
+ onKeyUp: onPickerKeyUp
13115
13448
  }, ptm('decrementButton'));
13116
13449
  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)));
13117
13450
  }
@@ -13120,6 +13453,9 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13120
13453
  var createAmPmPicker = function createAmPmPicker() {
13121
13454
  if (props.hourFormat === '12') {
13122
13455
  var currentTime = getCurrentDateTime();
13456
+ var _localeOptions10 = localeOptions(props.locale),
13457
+ am = _localeOptions10.am,
13458
+ pm = _localeOptions10.pm;
13123
13459
  var hour = currentTime.getHours();
13124
13460
  var display = hour > 11 ? 'PM' : 'AM';
13125
13461
  var ampmProps = mergeProps(ptm('ampm'));
@@ -13129,6 +13465,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13129
13465
  var incrementButtonProps = mergeProps({
13130
13466
  type: 'button',
13131
13467
  className: cx('incrementButton'),
13468
+ 'aria-label': am,
13132
13469
  onClick: function onClick(e) {
13133
13470
  return toggleAmPm(e);
13134
13471
  }
@@ -13136,6 +13473,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13136
13473
  var decrementButtonProps = mergeProps({
13137
13474
  type: 'button',
13138
13475
  className: cx('decrementButton'),
13476
+ 'aria-label': pm,
13139
13477
  onClick: function onClick(e) {
13140
13478
  return toggleAmPm(e);
13141
13479
  }
@@ -13167,6 +13505,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13167
13505
  id: props.inputId,
13168
13506
  name: props.name,
13169
13507
  type: "text",
13508
+ role: "combobox",
13170
13509
  className: props.inputClassName,
13171
13510
  style: props.inputStyle,
13172
13511
  readOnly: props.readOnlyInput,
@@ -13179,7 +13518,12 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13179
13518
  onFocus: onInputFocus,
13180
13519
  onBlur: onInputBlur,
13181
13520
  onKeyDown: onInputKeyDown,
13521
+ "aria-expanded": overlayVisibleState,
13522
+ "aria-autocomplete": "none",
13523
+ "aria-haspopup": "dialog",
13524
+ "aria-controls": panelId,
13182
13525
  "aria-labelledby": props.ariaLabelledBy,
13526
+ "aria-label": props.ariaLabel,
13183
13527
  inputMode: props.inputMode,
13184
13528
  tooltip: props.tooltip,
13185
13529
  tooltipOptions: props.tooltipOptions,
@@ -13199,6 +13543,10 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13199
13543
  onClick: onButtonClick,
13200
13544
  tabIndex: "-1",
13201
13545
  disabled: props.disabled,
13546
+ "aria-haspopup": "dialog",
13547
+ "aria-label": localeOption('chooseDate', props.locale),
13548
+ "aria-expanded": overlayVisibleState,
13549
+ "aria-controls": panelId,
13202
13550
  className: cx('dropdownButton'),
13203
13551
  pt: ptm('dropdownButton'),
13204
13552
  __parentMetadata: {
@@ -13218,21 +13566,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13218
13566
  };
13219
13567
  var createButtonBar = function createButtonBar() {
13220
13568
  if (props.showButtonBar) {
13221
- var _localeOptions4 = localeOptions(props.locale),
13222
- today = _localeOptions4.today,
13223
- clear = _localeOptions4.clear;
13569
+ var _localeOptions11 = localeOptions(props.locale),
13570
+ today = _localeOptions11.today,
13571
+ clear = _localeOptions11.clear,
13572
+ now = _localeOptions11.now;
13573
+ var nowDate = new Date();
13574
+ var isHidden = props.minDate && props.minDate > nowDate || props.maxDate && props.maxDate < nowDate;
13224
13575
  var buttonbarProps = mergeProps({
13225
13576
  className: cx('buttonbar')
13226
13577
  }, ptm('buttonbar'));
13227
13578
  return /*#__PURE__*/React.createElement("div", buttonbarProps, /*#__PURE__*/React.createElement(Button, {
13228
13579
  type: "button",
13229
- label: today,
13580
+ label: props.showTime ? now : today,
13230
13581
  onClick: onTodayButtonClick,
13231
13582
  onKeyDown: function onKeyDown(e) {
13232
13583
  return onContainerButtonKeydown(e);
13233
13584
  },
13234
13585
  className: classNames(props.todayButtonClassName, cx('todayButton')),
13235
- pt: ptm('todayButton')
13586
+ pt: ptm('todayButton'),
13587
+ style: isHidden ? {
13588
+ visibility: 'hidden'
13589
+ } : undefined
13236
13590
  }), /*#__PURE__*/React.createElement(Button, {
13237
13591
  type: "button",
13238
13592
  label: clear,
@@ -13262,6 +13616,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13262
13616
  className: cx('monthPicker')
13263
13617
  }, ptm('monthPicker'));
13264
13618
  return /*#__PURE__*/React.createElement("div", monthPickerProps, monthPickerValues().map(function (m, i) {
13619
+ var selected = isMonthSelected(i);
13265
13620
  var monthProps = mergeProps({
13266
13621
  className: cx('month', {
13267
13622
  isMonthSelected: isMonthSelected,
@@ -13276,18 +13631,23 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13276
13631
  return onMonthCellKeydown(event, i);
13277
13632
  },
13278
13633
  'data-p-disabled': isMonthYearDisabled(i, currentYear),
13279
- 'data-p-highlight': isMonthSelected(i)
13634
+ 'data-p-highlight': selected
13280
13635
  }, ptm('month', {
13281
13636
  context: {
13282
13637
  month: m,
13283
13638
  monthIndex: i,
13284
- selected: isMonthSelected(i),
13639
+ selected: selected,
13285
13640
  disabled: isMonthYearDisabled(i, currentYear)
13286
13641
  }
13287
13642
  }));
13288
13643
  return /*#__PURE__*/React.createElement("span", _extends({}, monthProps, {
13289
13644
  key: "month".concat(i + 1)
13290
- }), m);
13645
+ }), m, selected && /*#__PURE__*/React.createElement("div", {
13646
+ "aria-live": "polite",
13647
+ className: "p-hidden-accessible",
13648
+ "data-p-hidden-accessible": true,
13649
+ pt: ptm('hiddenMonth')
13650
+ }, m));
13291
13651
  }));
13292
13652
  }
13293
13653
  return null;
@@ -13298,6 +13658,7 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13298
13658
  className: cx('yearPicker')
13299
13659
  }, ptm('yearPicker'));
13300
13660
  return /*#__PURE__*/React.createElement("div", yearPickerProps, yearPickerValues().map(function (y, i) {
13661
+ var selected = isYearSelected(y);
13301
13662
  var yearProps = mergeProps({
13302
13663
  className: cx('year', {
13303
13664
  isYearSelected: isYearSelected,
@@ -13307,19 +13668,27 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13307
13668
  onClick: function onClick(event) {
13308
13669
  return onYearSelect(event, y);
13309
13670
  },
13671
+ onKeyDown: function onKeyDown(event) {
13672
+ return onYearCellKeydown(event, y);
13673
+ },
13310
13674
  'data-p-highlight': isYearSelected(y),
13311
13675
  'data-p-disabled': isMonthYearDisabled(-1, y)
13312
13676
  }, ptm('year', {
13313
13677
  context: {
13314
13678
  year: y,
13315
13679
  yearIndex: i,
13316
- selected: isYearSelected(i),
13680
+ selected: selected,
13317
13681
  disabled: isMonthYearDisabled(-1, y)
13318
13682
  }
13319
13683
  }));
13320
13684
  return /*#__PURE__*/React.createElement("span", _extends({}, yearProps, {
13321
13685
  key: "year".concat(i + 1)
13322
- }), y);
13686
+ }), y, selected && /*#__PURE__*/React.createElement("div", {
13687
+ "aria-live": "polite",
13688
+ className: "p-hidden-accessible",
13689
+ "data-p-hidden-accessible": true,
13690
+ pt: ptm('hiddenYear')
13691
+ }, y));
13323
13692
  }));
13324
13693
  }
13325
13694
  return null;
@@ -13346,7 +13715,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13346
13715
  id: props.id,
13347
13716
  className: classNames(props.className, cx('root', {
13348
13717
  focusedState: focusedState,
13349
- isFilled: isFilled
13718
+ isFilled: isFilled,
13719
+ panelVisible: visible
13350
13720
  })),
13351
13721
  style: props.style
13352
13722
  }, CalendarBase.getOtherProps(props), ptm('root'));
@@ -13354,6 +13724,8 @@ var Calendar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
13354
13724
  ref: elementRef
13355
13725
  }, rootProps), content, /*#__PURE__*/React.createElement(CalendarPanel, {
13356
13726
  hostName: "Calendar",
13727
+ id: panelId,
13728
+ locale: props.locale,
13357
13729
  ref: overlayRef,
13358
13730
  className: panelClassName,
13359
13731
  style: props.panelStyle,
@@ -18563,7 +18935,7 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
18563
18935
  menuRef.current.style.top = top + 'px';
18564
18936
  }
18565
18937
  };
18566
- var createProcessedItems = function createProcessedItems(items, level) {
18938
+ var createProcessedItems = React.useCallback(function (items, level) {
18567
18939
  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
18568
18940
  var parentKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
18569
18941
  var processedItems = [];
@@ -18582,7 +18954,7 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
18582
18954
  processedItems.push(newItem);
18583
18955
  });
18584
18956
  return processedItems;
18585
- };
18957
+ }, []);
18586
18958
  var onLeafClick = function onLeafClick(event) {
18587
18959
  setResetMenuState(true);
18588
18960
  hide(event);
@@ -18630,11 +19002,11 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
18630
19002
  show(currentEvent.current);
18631
19003
  }
18632
19004
  }, [reshowState]);
18633
- useUpdateEffect(function () {
19005
+ React.useEffect(function () {
18634
19006
  var itemsToProcess = props.model || [];
18635
19007
  var processed = createProcessedItems(itemsToProcess, 0, null, '');
18636
19008
  setProcessedItems(processed);
18637
- }, [props.model]);
19009
+ }, [props.model, createProcessedItems]);
18638
19010
  useUpdateEffect(function () {
18639
19011
  var _focusedItemId = focusedItemInfo.index !== -1 ? "".concat(idState).concat(ObjectUtils.isNotEmpty(focusedItemInfo.parentKey) ? '_' + focusedItemInfo.parentKey : '', "_").concat(focusedItemInfo.index) : null;
18640
19012
  setFocusedItemId(_focusedItemId);
@@ -23947,6 +24319,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
23947
24319
  var rowEditorSaveButtonProps = mergeProps({
23948
24320
  type: 'button',
23949
24321
  name: 'row-save',
24322
+ 'aria-label': ariaLabel$1('saveEdit'),
23950
24323
  onClick: rowEditorProps.onSaveClick,
23951
24324
  className: rowEditorProps.saveClassName,
23952
24325
  tabIndex: props.tabIndex,
@@ -23955,6 +24328,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
23955
24328
  var rowEditorCancelButtonProps = mergeProps({
23956
24329
  type: 'button',
23957
24330
  name: 'row-cancel',
24331
+ 'aria-label': ariaLabel$1('cancelEdit'),
23958
24332
  onClick: rowEditorProps.onCancelClick,
23959
24333
  className: rowEditorProps.cancelClassName,
23960
24334
  tabIndex: props.tabIndex
@@ -23969,6 +24343,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
23969
24343
  var rowEditorInitButtonProps = mergeProps({
23970
24344
  type: 'button',
23971
24345
  name: 'row-edit',
24346
+ 'aria-label': ariaLabel$1('editRow'),
23972
24347
  onClick: rowEditorProps.onInitClick,
23973
24348
  className: rowEditorProps.initClassName,
23974
24349
  tabIndex: props.tabIndex,
@@ -29160,7 +29535,7 @@ DataTable.displayName = 'DataTable';
29160
29535
  var classes$M = {
29161
29536
  loadingIcon: 'p-dataview-loading-icon',
29162
29537
  loadingOverlay: 'p-dataview-loading-overlay p-component-overlay',
29163
- emptyMessage: 'p-col-12 col-12 p-dataview-emptymessage',
29538
+ emptyMessage: 'p-dataview-emptymessage',
29164
29539
  header: 'p-dataview-header',
29165
29540
  footer: 'p-dataview-footer',
29166
29541
  content: 'p-dataview-content',
@@ -29175,7 +29550,7 @@ var classes$M = {
29175
29550
  return classNames('p-dataview p-component', _defineProperty(_defineProperty({}, "p-dataview-".concat(props.layout), !!props.layout), 'p-dataview-loading', props.loading));
29176
29551
  }
29177
29552
  };
29178
- var styles$I = "\n@layer primereact {\n .p-dataview-loading {\n position: relative;\n min-height: 4rem;\n }\n \n .p-dataview .p-dataview-loading-overlay {\n position: absolute;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n}\n";
29553
+ var styles$I = "\n@layer primereact {\n .p-dataview-loading {\n position: relative;\n min-height: 4rem;\n }\n\n .p-dataview .p-dataview-loading-overlay {\n position: absolute;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n}\n";
29179
29554
  var DataViewBase = ComponentBase.extend({
29180
29555
  defaultProps: {
29181
29556
  __TYPE: 'DataView',
@@ -29209,6 +29584,7 @@ var DataViewBase = ComponentBase.extend({
29209
29584
  loadingIcon: null,
29210
29585
  gutter: false,
29211
29586
  itemTemplate: null,
29587
+ listTemplate: null,
29212
29588
  onPage: null,
29213
29589
  children: undefined
29214
29590
  },
@@ -29231,7 +29607,7 @@ var DataViewLayoutOptionsBase = ComponentBase.extend({
29231
29607
  },
29232
29608
  css: {
29233
29609
  classes: {
29234
- root: 'p-dataview-layout-options p-selectbutton p-buttonset',
29610
+ root: 'p-dataview p-component p-dataview-layout-options p-selectbutton p-buttonset',
29235
29611
  listButton: function listButton(_ref3) {
29236
29612
  var props = _ref3.props;
29237
29613
  return classNames('p-button p-button-icon-only', {
@@ -29366,6 +29742,15 @@ var DataView = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
29366
29742
  setRowsState(event.rows);
29367
29743
  }
29368
29744
  };
29745
+ var getItems = function getItems(value) {
29746
+ if (props.paginator) {
29747
+ var currentFirst = props.lazy ? 0 : first;
29748
+ var totalRecords = getTotalRecords();
29749
+ var last = Math.min(rows + currentFirst, totalRecords);
29750
+ return value.slice(currentFirst, last) || [];
29751
+ }
29752
+ return value;
29753
+ };
29369
29754
  var sort = function sort() {
29370
29755
  if (props.value) {
29371
29756
  // performance optimization to prevent resolving field data in each loop
@@ -29453,23 +29838,8 @@ var DataView = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
29453
29838
  };
29454
29839
  var createItems = function createItems(value) {
29455
29840
  if (ObjectUtils.isNotEmpty(value)) {
29456
- if (props.paginator) {
29457
- var currentFirst = props.lazy ? 0 : first;
29458
- var totalRecords = getTotalRecords();
29459
- var last = Math.min(rows + currentFirst, totalRecords);
29460
- var items = [];
29461
- for (var i = currentFirst; i < last; i++) {
29462
- var val = value[i];
29463
- val && items.push( /*#__PURE__*/React.createElement(DataViewItem, {
29464
- key: getItemRenderKey(value) || i,
29465
- template: props.itemTemplate,
29466
- layout: props.layout,
29467
- item: val
29468
- }));
29469
- }
29470
- return items;
29471
- }
29472
- return value.map(function (item, index) {
29841
+ var items = getItems(value);
29842
+ return items.map(function (item, index) {
29473
29843
  return /*#__PURE__*/React.createElement(DataViewItem, {
29474
29844
  key: getItemRenderKey(item) || index,
29475
29845
  template: props.itemTemplate,
@@ -29481,14 +29851,21 @@ var DataView = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
29481
29851
  return createEmptyMessage();
29482
29852
  };
29483
29853
  var createContent = function createContent(value) {
29484
- var items = createItems(value);
29485
- var gridProps = mergeProps({
29486
- className: cx('grid')
29487
- }, ptm('grid'));
29488
29854
  var contentProps = mergeProps({
29489
29855
  className: cx('content')
29490
29856
  }, ptm('content'));
29491
- return /*#__PURE__*/React.createElement("div", contentProps, /*#__PURE__*/React.createElement("div", gridProps, items));
29857
+ var content = null;
29858
+ if (props.listTemplate) {
29859
+ var items = getItems(value);
29860
+ content = ObjectUtils.getJSXElement(props.listTemplate, items, props.layout);
29861
+ } else {
29862
+ var _items = createItems(value);
29863
+ var gridProps = mergeProps({
29864
+ className: cx('grid')
29865
+ }, ptm('grid'));
29866
+ content = /*#__PURE__*/React.createElement("div", gridProps, _items);
29867
+ }
29868
+ return /*#__PURE__*/React.createElement("div", contentProps, content);
29492
29869
  };
29493
29870
  var processData = function processData() {
29494
29871
  var data = props.value;
@@ -38414,7 +38791,7 @@ var Menubar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (i
38414
38791
  });
38415
38792
  }
38416
38793
  };
38417
- var createProcessedItems = function createProcessedItems(items) {
38794
+ var createProcessedItems = React.useCallback(function (items) {
38418
38795
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
38419
38796
  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
38420
38797
  var parentKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
@@ -38433,7 +38810,7 @@ var Menubar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (i
38433
38810
  _processedItems.push(newItem);
38434
38811
  });
38435
38812
  return _processedItems;
38436
- };
38813
+ }, []);
38437
38814
  useMountEffect(function () {
38438
38815
  if (!idState) {
38439
38816
  setIdState(UniqueComponentId());
@@ -38450,11 +38827,11 @@ var Menubar = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (i
38450
38827
  ZIndexUtils.clear(rootMenuRef.current);
38451
38828
  }
38452
38829
  }, [mobileActiveState]);
38453
- useUpdateEffect(function () {
38830
+ React.useEffect(function () {
38454
38831
  var itemsToProcess = props.model || [];
38455
38832
  var processed = createProcessedItems(itemsToProcess, 0, null, '');
38456
38833
  setProcessedItems(processed);
38457
- }, [props.model]);
38834
+ }, [props.model, createProcessedItems]);
38458
38835
  useUpdateEffect(function () {
38459
38836
  var processedItem = activeItemPath.find(function (p) {
38460
38837
  return p.key === focusedItemInfo.parentKey;
@@ -48820,7 +49197,7 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
48820
49197
  });
48821
49198
  }
48822
49199
  };
48823
- var createProcessedItems = function createProcessedItems(items) {
49200
+ var createProcessedItems = React.useCallback(function (items) {
48824
49201
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
48825
49202
  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
48826
49203
  var parentKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
@@ -48839,7 +49216,7 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
48839
49216
  processedItems.push(newItem);
48840
49217
  });
48841
49218
  return processedItems;
48842
- };
49219
+ }, []);
48843
49220
  var createStyle = function createStyle() {
48844
49221
  if (!styleElementRef.current) {
48845
49222
  styleElementRef.current = DomHandler.createInlineStyle(context && context.nonce || PrimeReact.nonce, context && context.styleContainer);
@@ -48895,11 +49272,11 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
48895
49272
  !attributeSelectorState && setAttributeSelectorState(uniqueId);
48896
49273
  }
48897
49274
  });
48898
- useUpdateEffect(function () {
49275
+ React.useEffect(function () {
48899
49276
  var itemsToProcess = props.model || [];
48900
49277
  var processed = createProcessedItems(itemsToProcess);
48901
49278
  setProcessedItems(processed);
48902
- }, props.model);
49279
+ }, [props.model, createProcessedItems]);
48903
49280
  useUpdateEffect(function () {
48904
49281
  var processedItem = activeItemPath.find(function (p) {
48905
49282
  return p.key === focusedItemInfo.parentKey;
@@ -54900,6 +55277,7 @@ var TreeTableBodyCell = function TreeTableBodyCell(props) {
54900
55277
  var align = getColumnProp('align');
54901
55278
  /* eslint-enable */
54902
55279
  var bodyCellProps = mergeProps({
55280
+ role: 'cell',
54903
55281
  className: classNames(bodyClassName || props.className, cx('bodyCell', {
54904
55282
  bodyProps: props,
54905
55283
  editingState: editingState,
@@ -54995,11 +55373,13 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
54995
55373
  event.stopPropagation();
54996
55374
  };
54997
55375
  var expand = function expand(event) {
55376
+ var navigateFocusToChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
54998
55377
  var expandedKeys = props.expandedKeys ? _objectSpread$5({}, props.expandedKeys) : {};
54999
55378
  expandedKeys[props.node.key] = true;
55000
55379
  props.onToggle({
55001
55380
  originalEvent: event,
55002
- value: expandedKeys
55381
+ value: expandedKeys,
55382
+ navigateFocusToChild: navigateFocusToChild
55003
55383
  });
55004
55384
  invokeToggleEvents(event, true);
55005
55385
  };
@@ -55180,49 +55560,147 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
55180
55560
  });
55181
55561
  }
55182
55562
  };
55183
- var _onKeyDown = function onKeyDown(event) {
55184
- if (event.target === elementRef.current) {
55185
- var rowElement = event.currentTarget;
55186
- switch (event.which) {
55187
- //down arrow
55188
- case 40:
55189
- var nextRow = rowElement.nextElementSibling;
55190
- if (nextRow) {
55191
- nextRow.focus();
55192
- }
55193
- event.preventDefault();
55194
- break;
55563
+ var _onKeyDown = function onKeyDown(event, item) {
55564
+ switch (event.code) {
55565
+ case 'ArrowDown':
55566
+ onArrowDownKey(event);
55567
+ break;
55568
+ case 'ArrowUp':
55569
+ onArrowUpKey(event);
55570
+ break;
55571
+ case 'ArrowLeft':
55572
+ onArrowLeftKey(event);
55573
+ break;
55574
+ case 'ArrowRight':
55575
+ onArrowRightKey(event);
55576
+ break;
55577
+ case 'Home':
55578
+ onHomeKey(event);
55579
+ break;
55580
+ case 'End':
55581
+ onEndKey(event);
55582
+ break;
55583
+ case 'Enter':
55584
+ case 'NumpadEnter':
55585
+ case 'Space':
55586
+ if (!DomHandler.isClickable(event.target)) {
55587
+ onEnterKey(event);
55588
+ }
55589
+ break;
55590
+ case 'Tab':
55591
+ onTabKey();
55592
+ break;
55593
+ }
55594
+ };
55595
+ var onArrowDownKey = function onArrowDownKey(event) {
55596
+ var nextElementSibling = event.currentTarget.nextElementSibling;
55597
+ nextElementSibling && focusRowChange(event.currentTarget, nextElementSibling);
55598
+ event.preventDefault();
55599
+ };
55600
+ var onArrowUpKey = function onArrowUpKey(event) {
55601
+ var previousElementSibling = event.currentTarget.previousElementSibling;
55602
+ previousElementSibling && focusRowChange(event.currentTarget, previousElementSibling);
55603
+ event.preventDefault();
55604
+ };
55605
+ var onArrowRightKey = function onArrowRightKey(event) {
55606
+ var ishiddenIcon = DomHandler.findSingle(event.currentTarget, 'button').style.visibility === 'hidden';
55607
+ DomHandler.findSingle(elementRef.current, '[data-pc-section="rowtoggler"]');
55608
+ if (ishiddenIcon) return;
55195
55609
 
55196
- //up arrow
55197
- case 38:
55198
- var previousRow = rowElement.previousElementSibling;
55199
- if (previousRow) {
55200
- previousRow.focus();
55201
- }
55202
- event.preventDefault();
55203
- break;
55610
+ // !expanded && togglerElement.click();
55611
+ !expanded && expand(event, true);
55204
55612
 
55205
- //right arrow
55206
- case 39:
55207
- if (!expanded) {
55208
- expand(event);
55209
- }
55210
- event.preventDefault();
55211
- break;
55613
+ // this.$nextTick(() => {
55614
+ // this.onArrowDownKey(event);
55615
+ // });
55212
55616
 
55213
- //left arrow
55214
- case 37:
55215
- if (expanded) {
55216
- collapse(event);
55217
- }
55218
- event.preventDefault();
55219
- break;
55617
+ event.preventDefault();
55618
+ };
55619
+ var onArrowLeftKey = function onArrowLeftKey(event) {
55620
+ if (props.level === 0 && !expanded) {
55621
+ return;
55622
+ }
55623
+ var currentTarget = event.currentTarget;
55624
+ var ishiddenIcon = DomHandler.findSingle(currentTarget, 'button').style.visibility === 'hidden';
55625
+ DomHandler.findSingle(currentTarget, '[data-pc-section="rowtoggler"]');
55626
+ if (expanded && !ishiddenIcon) {
55627
+ // togglerElement.click();
55628
+ collapse(event);
55629
+ return;
55630
+ }
55631
+ var target = findBeforeClickableNode(currentTarget);
55632
+ target && focusRowChange(currentTarget, target);
55633
+ };
55634
+ var onHomeKey = function onHomeKey(event) {
55635
+ var findFirstElement = DomHandler.findSingle(event.currentTarget.parentElement, "tr[aria-level=\"".concat(props.level + 1, "\"]"));
55636
+ findFirstElement && DomHandler.focus(findFirstElement);
55637
+ event.preventDefault();
55638
+ };
55639
+ var onEndKey = function onEndKey(event) {
55640
+ var nodes = DomHandler.find(event.currentTarget.parentElement, "tr[aria-level=\"".concat(props.level + 1, "\"]"));
55641
+ var findFirstElement = nodes[nodes.length - 1];
55642
+ DomHandler.focus(findFirstElement);
55643
+ event.preventDefault();
55644
+ };
55645
+ var onEnterKey = function onEnterKey(event) {
55646
+ event.preventDefault();
55647
+ setTabIndexForSelectionMode(event, nodeTouched.current);
55648
+ if (props.selectionMode === 'checkbox') {
55649
+ // this.toggleCheckbox();
55650
+ onCheckboxChange(event);
55651
+ return;
55652
+ }
55220
55653
 
55221
- //enter
55222
- case 13:
55223
- _onClick(event);
55224
- event.preventDefault();
55225
- break;
55654
+ // this.$emit('node-click', {
55655
+ // originalEvent: event,
55656
+ // nodeTouched: nodeTouched.current,
55657
+ // node: this.node
55658
+ // });
55659
+
55660
+ props.onRowClick(event, props.node);
55661
+ nodeTouched.current = false;
55662
+ };
55663
+ var onTabKey = function onTabKey() {
55664
+ var rows = _toConsumableArray(DomHandler.find(elementRef.current.parentElement, 'tr'));
55665
+ var hasSelectedRow = rows.some(function (row) {
55666
+ return DomHandler.getAttribute(row, 'data-p-highlight') || row.getAttribute('aria-checked') === 'true';
55667
+ });
55668
+ rows.forEach(function (row) {
55669
+ row.tabIndex = -1;
55670
+ });
55671
+ if (hasSelectedRow) {
55672
+ var selectedNodes = rows.filter(function (node) {
55673
+ return DomHandler.getAttribute(node, 'data-p-highlight') || node.getAttribute('aria-checked') === 'true';
55674
+ });
55675
+ selectedNodes[0].tabIndex = 0;
55676
+ return;
55677
+ }
55678
+ rows[0].tabIndex = 0;
55679
+ };
55680
+ var focusRowChange = function focusRowChange(firstFocusableRow, currentFocusedRow) {
55681
+ firstFocusableRow.tabIndex = '-1';
55682
+ currentFocusedRow.tabIndex = '0';
55683
+ DomHandler.focus(currentFocusedRow);
55684
+ };
55685
+ var findBeforeClickableNode = function findBeforeClickableNode(node) {
55686
+ var prevNode = node.previousElementSibling;
55687
+ if (prevNode) {
55688
+ var prevNodeButton = prevNode.querySelector('button');
55689
+ if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {
55690
+ return prevNode;
55691
+ }
55692
+ return findBeforeClickableNode(prevNode);
55693
+ }
55694
+ return null;
55695
+ };
55696
+ var setTabIndexForSelectionMode = function setTabIndexForSelectionMode(event, nodeTouched) {
55697
+ if (props.selectionMode !== null) {
55698
+ var elements = _toConsumableArray(DomHandler.find(elementRef.current.parentElement, 'tr'));
55699
+ event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;
55700
+ if (elements.every(function (element) {
55701
+ return element.tabIndex === -1;
55702
+ })) {
55703
+ elements[0].tabIndex = 0;
55226
55704
  }
55227
55705
  }
55228
55706
  };
@@ -55407,6 +55885,12 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
55407
55885
  var rowProps = mergeProps({
55408
55886
  tabIndex: 0,
55409
55887
  className: className,
55888
+ 'aria-expanded': expanded,
55889
+ 'aria-level': props.level + 1,
55890
+ 'aria-posinset': props.ariaPosInSet,
55891
+ 'aria-setsize': props.ariaSetSize,
55892
+ 'aria-checked': isChecked(),
55893
+ 'aria-selected': isSelected(),
55410
55894
  style: props.node.style,
55411
55895
  onClick: function onClick(e) {
55412
55896
  return _onClick(e);
@@ -55598,6 +56082,8 @@ var TreeTableBody = /*#__PURE__*/React.memo(function (props) {
55598
56082
  key: "".concat(node.key || JSON.stringify(node.data), "_").concat(index),
55599
56083
  level: 0,
55600
56084
  rowIndex: index,
56085
+ ariaSetSize: props.value.length,
56086
+ ariaPosInSet: index + 1,
55601
56087
  selectOnEdit: props.selectOnEdit,
55602
56088
  node: node,
55603
56089
  originalOptions: props.originalOptions,
@@ -55661,6 +56147,7 @@ var TreeTableBody = /*#__PURE__*/React.memo(function (props) {
55661
56147
  };
55662
56148
  var content = props.value && props.value.length ? createRows() : createEmptyMessage();
55663
56149
  var tbodyProps = mergeProps({
56150
+ role: 'rowgroup',
55664
56151
  className: cx('tbody')
55665
56152
  }, getPTOptions('tbody'));
55666
56153
  return /*#__PURE__*/React.createElement("tbody", tbodyProps, content);
@@ -55707,7 +56194,8 @@ var TreeTableFooter = /*#__PURE__*/React.memo(function (props) {
55707
56194
  var rowColumns = React.Children.toArray(RowBase.getCProp(row, 'children'));
55708
56195
  var rowFooterCells = rowColumns.map(createFooterCell);
55709
56196
  var footerRowProps = mergeProps(ptm('footerRow', {
55710
- hostName: props.hostName
56197
+ hostName: props.hostName,
56198
+ role: 'row'
55711
56199
  }));
55712
56200
  return /*#__PURE__*/React.createElement("tr", _extends({}, footerRowProps, {
55713
56201
  key: index
@@ -55736,6 +56224,7 @@ var TreeTableFooter = /*#__PURE__*/React.memo(function (props) {
55736
56224
  var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
55737
56225
  if (hasFooter()) {
55738
56226
  var tfootProps = mergeProps({
56227
+ role: 'rowgroup',
55739
56228
  className: cx('tfoot')
55740
56229
  }, ptm('tfoot', {
55741
56230
  hostName: props.hostName
@@ -55796,7 +56285,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
55796
56285
  }
55797
56286
  };
55798
56287
  var onHeaderKeyDown = function onHeaderKeyDown(event, column) {
55799
- if (event.key === 'Enter') {
56288
+ if (event.key === 'Enter' && event.key === 'Space') {
55800
56289
  onHeaderClick(event, column);
55801
56290
  event.preventDefault();
55802
56291
  }
@@ -55970,6 +56459,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
55970
56459
  if (options.filterOnly) {
55971
56460
  var frozen = getColumnProp(column, 'frozen');
55972
56461
  var headerCellProps = mergeProps({
56462
+ role: 'columnheader',
55973
56463
  key: getColumnProp(column, 'columnKey') || getColumnProp(column, 'field') || options.index,
55974
56464
  className: classNames(cx('headerCell', {
55975
56465
  options: options,
@@ -56001,11 +56491,14 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56001
56491
  var sortIconElement = createSortIcon(column, sorted, sortOrder);
56002
56492
  var ariaSortData = getAriaSort(column, sorted, sortOrder);
56003
56493
  var sortBadge = createSortBadge(column, sortMetaDataIndex);
56494
+ var ariaSort = sorted ? sortOrder ? sortOrder < 0 ? 'descending' : 'ascending' : 'none' : null;
56004
56495
  var headerTooltip = getColumnProp(column, 'headerTooltip');
56005
56496
  var hasTooltip = ObjectUtils.isNotEmpty(headerTooltip);
56006
56497
  var title = createTitle(column, options);
56007
56498
  var resizer = createResizer(column);
56008
- var _headerCellProps = mergeProps({
56499
+ var sortable = getColumnProp(column, 'sortable');
56500
+ var _headerCellProps = mergeProps(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
56501
+ role: 'columnheader',
56009
56502
  className: classNames(getColumnProp(column, 'headerClassName') || getColumnProp(column, 'className'), cx('headerCell', {
56010
56503
  headerProps: props,
56011
56504
  frozen: _frozen,
@@ -56016,7 +56509,8 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56016
56509
  align: align
56017
56510
  })),
56018
56511
  style: getColumnProp(column, 'headerStyle') || getColumnProp(column, 'style'),
56019
- tabIndex: getColumnProp(column, 'sortable') ? props.tabIndex : null,
56512
+ tabIndex: sortable ? props.tabIndex : null,
56513
+ 'aria-sort': ariaSort,
56020
56514
  onClick: function onClick(e) {
56021
56515
  return onHeaderClick(e, column);
56022
56516
  },
@@ -56027,25 +56521,16 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56027
56521
  return onHeaderKeyDown(e, column);
56028
56522
  },
56029
56523
  rowSpan: getColumnProp(column, 'rowSpan'),
56030
- colSpan: getColumnProp(column, 'colSpan'),
56031
- 'aria-sort': ariaSortData,
56032
- onDragStart: function onDragStart(e) {
56033
- return _onDragStart(e, column);
56034
- },
56035
- onDragOver: function onDragOver(e) {
56036
- return _onDragOver(e, column);
56037
- },
56038
- onDragLeave: function onDragLeave(e) {
56039
- return _onDragLeave(e, column);
56040
- },
56041
- onDrop: function onDrop(e) {
56042
- return _onDrop(e, column);
56043
- },
56044
- 'data-p-sortable-column': getColumnProp(column, 'sortable'),
56045
- 'data-p-resizable-column': props.resizableColumns,
56046
- 'data-p-highlight': sorted,
56047
- 'data-p-frozen-column': getColumnProp(column, 'frozen')
56048
- }, getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
56524
+ colSpan: getColumnProp(column, 'colSpan')
56525
+ }, "aria-sort", ariaSortData), "onDragStart", function onDragStart(e) {
56526
+ return _onDragStart(e, column);
56527
+ }), "onDragOver", function onDragOver(e) {
56528
+ return _onDragOver(e, column);
56529
+ }), "onDragLeave", function onDragLeave(e) {
56530
+ return _onDragLeave(e, column);
56531
+ }), "onDrop", function onDrop(e) {
56532
+ return _onDrop(e, column);
56533
+ }), 'data-p-sortable-column', sortable), 'data-p-resizable-column', props.resizableColumns), 'data-p-highlight', sorted), 'data-p-frozen-column', getColumnProp(column, 'frozen')), getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
56049
56534
  context: {
56050
56535
  sorted: sorted,
56051
56536
  frozen: _frozen,
@@ -56080,7 +56565,9 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56080
56565
  var headerRowProps = mergeProps(ptm('headerRow', {
56081
56566
  hostName: props.hostName
56082
56567
  }));
56083
- return /*#__PURE__*/React.createElement("tr", _extends({}, headerRowProps, {
56568
+ return /*#__PURE__*/React.createElement("tr", _extends({
56569
+ role: "row"
56570
+ }, headerRowProps, {
56084
56571
  key: index
56085
56572
  }), rowHeaderCells);
56086
56573
  };
@@ -56091,7 +56578,8 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56091
56578
  var createColumns = function createColumns(columns) {
56092
56579
  if (columns) {
56093
56580
  var headerRowProps = mergeProps(ptm('headerRow', {
56094
- hostName: props.hostName
56581
+ hostName: props.hostName,
56582
+ role: 'row'
56095
56583
  }));
56096
56584
  if (hasColumnFilter(columns)) {
56097
56585
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
@@ -56108,7 +56596,9 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56108
56596
  });
56109
56597
  })));
56110
56598
  } else {
56111
- return /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
56599
+ return /*#__PURE__*/React.createElement("tr", _extends({
56600
+ role: "row"
56601
+ }, headerRowProps), columns.map(function (col, i) {
56112
56602
  return createHeaderCell(col, {
56113
56603
  index: i,
56114
56604
  filterOnly: false,
@@ -56122,6 +56612,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
56122
56612
  };
56123
56613
  var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
56124
56614
  var theadProps = mergeProps({
56615
+ role: 'rowgroup',
56125
56616
  className: cx('thead')
56126
56617
  }, ptm('thead', {
56127
56618
  hostName: props.hostName
@@ -56372,6 +56863,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
56372
56863
  var columnSortable = React.useRef(null);
56373
56864
  var columnSortFunction = React.useRef(null);
56374
56865
  var columnField = React.useRef(null);
56866
+ var childFocusEvent = React.useRef(null);
56375
56867
  var _useEventListener = useEventListener({
56376
56868
  type: 'mousemove',
56377
56869
  listener: function listener(event) {
@@ -56396,10 +56888,19 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
56396
56888
  bindDocumentMouseUpListener = _useEventListener4[0],
56397
56889
  unbindDocumentMouseUpListener = _useEventListener4[1];
56398
56890
  var onToggle = function onToggle(event) {
56891
+ var originalEvent = event.originalEvent,
56892
+ value = event.value,
56893
+ navigateFocusToChild = event.navigateFocusToChild;
56399
56894
  if (props.onToggle) {
56400
- props.onToggle(event);
56895
+ props.onToggle({
56896
+ originalEvent: originalEvent,
56897
+ value: value
56898
+ });
56401
56899
  } else {
56402
- setExpandedKeysState(event.value);
56900
+ if (navigateFocusToChild) {
56901
+ childFocusEvent.current = originalEvent;
56902
+ }
56903
+ setExpandedKeysState(value);
56403
56904
  }
56404
56905
  };
56405
56906
  var onPageChange = function onPageChange(event) {
@@ -57102,6 +57603,17 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
57102
57603
  }
57103
57604
  return data;
57104
57605
  };
57606
+ useUpdateEffect(function () {
57607
+ if (childFocusEvent.current) {
57608
+ var nodeElement = childFocusEvent.current.target;
57609
+ var nextElementSibling = nodeElement.nextElementSibling;
57610
+ if (nextElementSibling) {
57611
+ nodeElement.tabIndex = '-1';
57612
+ nextElementSibling.tabIndex = '0';
57613
+ DomHandler.focus(nextElementSibling);
57614
+ }
57615
+ }
57616
+ }, [expandedKeysState]);
57105
57617
  React.useImperativeHandle(ref, function () {
57106
57618
  return {
57107
57619
  props: props,
@@ -57251,6 +57763,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
57251
57763
  className: ptCallbacks.cx('wrapper')
57252
57764
  }, ptCallbacks.ptm('wrapper'));
57253
57765
  var tableProps = mergeProps({
57766
+ role: 'table',
57254
57767
  style: props.tableStyle,
57255
57768
  className: classNames(props.tableClassName, ptCallbacks.cx('table'))
57256
57769
  }, ptCallbacks.ptm('table'));
@@ -57334,6 +57847,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
57334
57847
  ref: reorderIndicatorDownRef
57335
57848
  }, reorderIndicatorDownProps), reorderIndicatorDownIcon);
57336
57849
  var rootProps = mergeProps({
57850
+ role: 'table',
57337
57851
  id: props.id,
57338
57852
  className: classNames(props.className, ptCallbacks.cx('root', {
57339
57853
  isRowSelectionMode: isRowSelectionMode