primereact 8.0.0-rc.1 → 8.0.0-rc.2

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 (349) hide show
  1. package/README.md +4 -2
  2. package/accordion/accordion.cjs.js +1 -1
  3. package/accordion/accordion.cjs.min.js +1 -1
  4. package/accordion/accordion.d.ts +2 -0
  5. package/accordion/accordion.esm.js +1 -1
  6. package/accordion/accordion.esm.min.js +1 -1
  7. package/accordion/accordion.js +1 -1
  8. package/accordion/accordion.min.js +1 -1
  9. package/api/api.cjs.js +2 -5
  10. package/api/api.cjs.min.js +1 -1
  11. package/api/api.esm.js +2 -5
  12. package/api/api.esm.min.js +1 -1
  13. package/api/api.js +2 -5
  14. package/api/api.min.js +1 -1
  15. package/autocomplete/autocomplete.cjs.js +5 -0
  16. package/autocomplete/autocomplete.cjs.min.js +1 -1
  17. package/autocomplete/autocomplete.d.ts +2 -1
  18. package/autocomplete/autocomplete.esm.js +5 -0
  19. package/autocomplete/autocomplete.esm.min.js +1 -1
  20. package/autocomplete/autocomplete.js +5 -0
  21. package/autocomplete/autocomplete.min.js +1 -1
  22. package/avatar/avatar.d.ts +1 -0
  23. package/avatargroup/avatargroup.d.ts +1 -0
  24. package/badge/badge.d.ts +1 -0
  25. package/blockui/blockui.d.ts +1 -0
  26. package/breadcrumb/breadcrumb.cjs.js +7 -5
  27. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  28. package/breadcrumb/breadcrumb.d.ts +1 -0
  29. package/breadcrumb/breadcrumb.esm.js +8 -6
  30. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  31. package/breadcrumb/breadcrumb.js +7 -5
  32. package/breadcrumb/breadcrumb.min.js +1 -1
  33. package/button/button.cjs.js +3 -1
  34. package/button/button.cjs.min.js +1 -1
  35. package/button/button.d.ts +1 -0
  36. package/button/button.esm.js +3 -1
  37. package/button/button.esm.min.js +1 -1
  38. package/button/button.js +3 -1
  39. package/button/button.min.js +1 -1
  40. package/calendar/calendar.cjs.js +314 -151
  41. package/calendar/calendar.cjs.min.js +1 -1
  42. package/calendar/calendar.d.ts +8 -0
  43. package/calendar/calendar.esm.js +314 -151
  44. package/calendar/calendar.esm.min.js +1 -1
  45. package/calendar/calendar.js +315 -152
  46. package/calendar/calendar.min.css +1 -1
  47. package/calendar/calendar.min.js +1 -1
  48. package/captcha/captcha.d.ts +1 -0
  49. package/card/card.d.ts +1 -0
  50. package/carousel/carousel.d.ts +1 -0
  51. package/cascadeselect/cascadeselect.d.ts +4 -2
  52. package/chart/chart.d.ts +1 -0
  53. package/checkbox/checkbox.cjs.js +5 -13
  54. package/checkbox/checkbox.cjs.min.js +1 -1
  55. package/checkbox/checkbox.d.ts +2 -2
  56. package/checkbox/checkbox.esm.js +5 -13
  57. package/checkbox/checkbox.esm.min.js +1 -1
  58. package/checkbox/checkbox.js +5 -13
  59. package/checkbox/checkbox.min.js +1 -1
  60. package/chip/chip.d.ts +1 -0
  61. package/chips/chips.d.ts +1 -0
  62. package/colorpicker/colorpicker.d.ts +1 -0
  63. package/column/column.d.ts +2 -1
  64. package/columngroup/columngroup.d.ts +3 -1
  65. package/common/common.min.css +1 -1
  66. package/confirmdialog/confirmdialog.cjs.js +2 -2
  67. package/confirmdialog/confirmdialog.d.ts +1 -0
  68. package/confirmdialog/confirmdialog.esm.js +2 -2
  69. package/confirmdialog/confirmdialog.js +2 -2
  70. package/confirmpopup/confirmpopup.cjs.js +2 -2
  71. package/confirmpopup/confirmpopup.d.ts +1 -0
  72. package/confirmpopup/confirmpopup.esm.js +2 -2
  73. package/confirmpopup/confirmpopup.js +2 -2
  74. package/contextmenu/contextmenu.cjs.js +6 -2
  75. package/contextmenu/contextmenu.cjs.min.js +1 -1
  76. package/contextmenu/contextmenu.d.ts +1 -0
  77. package/contextmenu/contextmenu.esm.js +7 -3
  78. package/contextmenu/contextmenu.esm.min.js +1 -1
  79. package/contextmenu/contextmenu.js +6 -2
  80. package/contextmenu/contextmenu.min.js +1 -1
  81. package/core/core.js +197 -134
  82. package/core/core.min.js +9 -9
  83. package/datascroller/datascroller.d.ts +1 -0
  84. package/datatable/datatable.cjs.js +4 -4
  85. package/datatable/datatable.cjs.min.js +1 -1
  86. package/datatable/datatable.d.ts +2 -1
  87. package/datatable/datatable.esm.js +4 -4
  88. package/datatable/datatable.esm.min.js +1 -1
  89. package/datatable/datatable.js +4 -4
  90. package/datatable/datatable.min.js +1 -1
  91. package/dataview/dataview.d.ts +2 -0
  92. package/deferredcontent/deferredcontent.d.ts +1 -0
  93. package/dialog/dialog.d.ts +1 -0
  94. package/divider/divider.d.ts +1 -0
  95. package/dock/dock.cjs.js +5 -3
  96. package/dock/dock.cjs.min.js +1 -1
  97. package/dock/dock.d.ts +1 -0
  98. package/dock/dock.esm.js +6 -4
  99. package/dock/dock.esm.min.js +1 -1
  100. package/dock/dock.js +5 -3
  101. package/dock/dock.min.js +1 -1
  102. package/dropdown/dropdown.cjs.js +2 -6
  103. package/dropdown/dropdown.cjs.min.js +1 -1
  104. package/dropdown/dropdown.d.ts +4 -2
  105. package/dropdown/dropdown.esm.js +2 -6
  106. package/dropdown/dropdown.esm.min.js +1 -1
  107. package/dropdown/dropdown.js +2 -6
  108. package/dropdown/dropdown.min.js +1 -1
  109. package/editor/editor.d.ts +1 -0
  110. package/fieldset/fieldset.d.ts +1 -0
  111. package/fileupload/fileupload.d.ts +2 -1
  112. package/fullcalendar/fullcalendar.d.ts +1 -0
  113. package/galleria/galleria.d.ts +1 -0
  114. package/gmap/gmap.cjs.js +27 -12
  115. package/gmap/gmap.cjs.min.js +1 -1
  116. package/gmap/gmap.d.ts +1 -0
  117. package/gmap/gmap.esm.js +27 -12
  118. package/gmap/gmap.esm.min.js +1 -1
  119. package/gmap/gmap.js +27 -12
  120. package/gmap/gmap.min.js +1 -1
  121. package/image/image.d.ts +1 -0
  122. package/inplace/inplace.d.ts +7 -2
  123. package/inputmask/inputmask.cjs.js +2 -0
  124. package/inputmask/inputmask.cjs.min.js +1 -1
  125. package/inputmask/inputmask.d.ts +1 -0
  126. package/inputmask/inputmask.esm.js +2 -0
  127. package/inputmask/inputmask.esm.min.js +1 -1
  128. package/inputmask/inputmask.js +2 -0
  129. package/inputmask/inputmask.min.js +1 -1
  130. package/inputnumber/inputnumber.cjs.js +8 -5
  131. package/inputnumber/inputnumber.cjs.min.js +1 -1
  132. package/inputnumber/inputnumber.d.ts +1 -0
  133. package/inputnumber/inputnumber.esm.js +8 -5
  134. package/inputnumber/inputnumber.esm.min.js +1 -1
  135. package/inputnumber/inputnumber.js +8 -5
  136. package/inputnumber/inputnumber.min.js +1 -1
  137. package/inputswitch/inputswitch.cjs.js +7 -10
  138. package/inputswitch/inputswitch.cjs.min.js +1 -1
  139. package/inputswitch/inputswitch.d.ts +2 -1
  140. package/inputswitch/inputswitch.esm.js +7 -10
  141. package/inputswitch/inputswitch.esm.min.js +1 -1
  142. package/inputswitch/inputswitch.js +7 -10
  143. package/inputswitch/inputswitch.min.js +1 -1
  144. package/inputtext/inputtext.cjs.js +12 -2
  145. package/inputtext/inputtext.cjs.min.js +1 -1
  146. package/inputtext/inputtext.d.ts +1 -0
  147. package/inputtext/inputtext.esm.js +12 -2
  148. package/inputtext/inputtext.esm.min.js +1 -1
  149. package/inputtext/inputtext.js +12 -2
  150. package/inputtext/inputtext.min.js +1 -1
  151. package/inputtextarea/inputtextarea.d.ts +1 -0
  152. package/keyfilter/keyfilter.cjs.js +54 -1
  153. package/keyfilter/keyfilter.cjs.min.js +1 -1
  154. package/keyfilter/keyfilter.esm.js +54 -1
  155. package/keyfilter/keyfilter.esm.min.js +1 -1
  156. package/keyfilter/keyfilter.js +146 -93
  157. package/keyfilter/keyfilter.min.js +1 -1
  158. package/knob/knob.d.ts +1 -0
  159. package/listbox/listbox.d.ts +4 -2
  160. package/megamenu/megamenu.cjs.js +8 -5
  161. package/megamenu/megamenu.cjs.min.js +1 -1
  162. package/megamenu/megamenu.d.ts +1 -0
  163. package/megamenu/megamenu.esm.js +9 -6
  164. package/megamenu/megamenu.esm.min.js +1 -1
  165. package/megamenu/megamenu.js +8 -5
  166. package/megamenu/megamenu.min.js +1 -1
  167. package/mention/mention.d.ts +1 -0
  168. package/menu/menu.cjs.js +4 -2
  169. package/menu/menu.cjs.min.js +1 -1
  170. package/menu/menu.d.ts +1 -0
  171. package/menu/menu.esm.js +5 -3
  172. package/menu/menu.esm.min.js +1 -1
  173. package/menu/menu.js +4 -2
  174. package/menu/menu.min.js +1 -1
  175. package/menubar/menubar.cjs.js +6 -2
  176. package/menubar/menubar.cjs.min.js +1 -1
  177. package/menubar/menubar.d.ts +1 -0
  178. package/menubar/menubar.esm.js +7 -3
  179. package/menubar/menubar.esm.min.js +1 -1
  180. package/menubar/menubar.js +6 -2
  181. package/menubar/menubar.min.js +1 -1
  182. package/menuitem/menuitem.d.ts +0 -2
  183. package/message/message.d.ts +1 -0
  184. package/messages/messages.d.ts +1 -0
  185. package/multiselect/multiselect.cjs.js +5 -13
  186. package/multiselect/multiselect.cjs.min.js +1 -1
  187. package/multiselect/multiselect.d.ts +4 -2
  188. package/multiselect/multiselect.esm.js +5 -13
  189. package/multiselect/multiselect.esm.min.js +1 -1
  190. package/multiselect/multiselect.js +5 -13
  191. package/multiselect/multiselect.min.js +1 -1
  192. package/multistatecheckbox/multistatecheckbox.d.ts +1 -0
  193. package/orderlist/orderlist.d.ts +1 -0
  194. package/organizationchart/organizationchart.d.ts +1 -0
  195. package/overlaypanel/overlaypanel.d.ts +1 -0
  196. package/package.json +3 -2
  197. package/paginator/paginator.cjs.js +11 -5
  198. package/paginator/paginator.d.ts +1 -0
  199. package/paginator/paginator.esm.js +11 -5
  200. package/paginator/paginator.js +11 -5
  201. package/panel/panel.d.ts +1 -0
  202. package/panelmenu/panelmenu.cjs.js +12 -6
  203. package/panelmenu/panelmenu.cjs.min.js +1 -1
  204. package/panelmenu/panelmenu.d.ts +1 -0
  205. package/panelmenu/panelmenu.esm.js +13 -7
  206. package/panelmenu/panelmenu.esm.min.js +1 -1
  207. package/panelmenu/panelmenu.js +12 -6
  208. package/panelmenu/panelmenu.min.js +1 -1
  209. package/password/password.d.ts +1 -0
  210. package/picklist/picklist.d.ts +1 -0
  211. package/primereact.all.cjs.js +506 -257
  212. package/primereact.all.cjs.min.js +1 -1
  213. package/primereact.all.esm.js +506 -257
  214. package/primereact.all.esm.min.js +1 -1
  215. package/primereact.all.js +506 -257
  216. package/primereact.all.min.js +1 -1
  217. package/progressbar/progressbar.d.ts +1 -0
  218. package/progressspinner/progressspinner.d.ts +2 -1
  219. package/radiobutton/radiobutton.d.ts +2 -1
  220. package/rating/rating.d.ts +1 -0
  221. package/resources/primereact.css +165 -140
  222. package/resources/primereact.min.css +1 -1
  223. package/resources/themes/arya-blue/theme.css +51 -13
  224. package/resources/themes/arya-green/theme.css +51 -13
  225. package/resources/themes/arya-orange/theme.css +51 -13
  226. package/resources/themes/arya-purple/theme.css +51 -13
  227. package/resources/themes/bootstrap4-dark-blue/theme.css +51 -13
  228. package/resources/themes/bootstrap4-dark-purple/theme.css +51 -13
  229. package/resources/themes/bootstrap4-light-blue/theme.css +51 -13
  230. package/resources/themes/bootstrap4-light-purple/theme.css +51 -13
  231. package/resources/themes/fluent-light/theme.css +51 -13
  232. package/resources/themes/lara-dark-blue/theme.css +51 -13
  233. package/resources/themes/lara-dark-indigo/theme.css +51 -13
  234. package/resources/themes/lara-dark-purple/theme.css +51 -13
  235. package/resources/themes/lara-dark-teal/theme.css +51 -13
  236. package/resources/themes/lara-light-blue/theme.css +51 -13
  237. package/resources/themes/lara-light-indigo/theme.css +51 -13
  238. package/resources/themes/lara-light-purple/theme.css +51 -13
  239. package/resources/themes/lara-light-teal/theme.css +51 -13
  240. package/resources/themes/luna-amber/theme.css +51 -13
  241. package/resources/themes/luna-blue/theme.css +51 -13
  242. package/resources/themes/luna-green/theme.css +51 -13
  243. package/resources/themes/luna-pink/theme.css +51 -13
  244. package/resources/themes/md-dark-deeppurple/theme.css +54 -13
  245. package/resources/themes/md-dark-indigo/theme.css +54 -13
  246. package/resources/themes/md-light-deeppurple/theme.css +54 -13
  247. package/resources/themes/md-light-indigo/theme.css +54 -13
  248. package/resources/themes/mdc-dark-deeppurple/theme.css +54 -13
  249. package/resources/themes/mdc-dark-indigo/theme.css +54 -13
  250. package/resources/themes/mdc-light-deeppurple/theme.css +54 -13
  251. package/resources/themes/mdc-light-indigo/theme.css +54 -13
  252. package/resources/themes/nova/theme.css +51 -13
  253. package/resources/themes/nova-accent/theme.css +51 -13
  254. package/resources/themes/nova-alt/theme.css +51 -13
  255. package/resources/themes/rhea/theme.css +51 -13
  256. package/resources/themes/saga-blue/theme.css +51 -13
  257. package/resources/themes/saga-green/theme.css +51 -13
  258. package/resources/themes/saga-orange/theme.css +51 -13
  259. package/resources/themes/saga-purple/theme.css +51 -13
  260. package/resources/themes/tailwind-light/theme.css +50 -12
  261. package/resources/themes/vela-blue/theme.css +51 -13
  262. package/resources/themes/vela-green/theme.css +51 -13
  263. package/resources/themes/vela-orange/theme.css +51 -13
  264. package/resources/themes/vela-purple/theme.css +51 -13
  265. package/ripple/ripple.cjs.js +1 -0
  266. package/ripple/ripple.cjs.min.js +1 -1
  267. package/ripple/ripple.d.ts +3 -1
  268. package/ripple/ripple.esm.js +1 -0
  269. package/ripple/ripple.esm.min.js +1 -1
  270. package/ripple/ripple.js +1 -0
  271. package/ripple/ripple.min.js +1 -1
  272. package/row/row.d.ts +1 -0
  273. package/scrollpanel/scrollpanel.d.ts +1 -0
  274. package/scrolltop/scrolltop.d.ts +1 -0
  275. package/selectbutton/selectbutton.d.ts +4 -2
  276. package/selectitem/selectitem.d.ts +2 -0
  277. package/sidebar/sidebar.d.ts +1 -0
  278. package/skeleton/skeleton.d.ts +1 -0
  279. package/slidemenu/slidemenu.cjs.js +6 -2
  280. package/slidemenu/slidemenu.cjs.min.js +1 -1
  281. package/slidemenu/slidemenu.d.ts +1 -0
  282. package/slidemenu/slidemenu.esm.js +7 -3
  283. package/slidemenu/slidemenu.esm.min.js +1 -1
  284. package/slidemenu/slidemenu.js +6 -2
  285. package/slidemenu/slidemenu.min.js +1 -1
  286. package/slider/slider.d.ts +1 -0
  287. package/speeddial/speeddial.cjs.js +10 -5
  288. package/speeddial/speeddial.cjs.min.js +1 -1
  289. package/speeddial/speeddial.d.ts +1 -0
  290. package/speeddial/speeddial.esm.js +11 -6
  291. package/speeddial/speeddial.esm.min.js +1 -1
  292. package/speeddial/speeddial.js +10 -5
  293. package/speeddial/speeddial.min.js +1 -1
  294. package/splitbutton/splitbutton.cjs.js +5 -3
  295. package/splitbutton/splitbutton.cjs.min.js +1 -1
  296. package/splitbutton/splitbutton.d.ts +1 -0
  297. package/splitbutton/splitbutton.esm.js +6 -4
  298. package/splitbutton/splitbutton.esm.min.js +1 -1
  299. package/splitbutton/splitbutton.js +5 -3
  300. package/splitbutton/splitbutton.min.js +1 -1
  301. package/splitter/splitter.d.ts +2 -0
  302. package/steps/steps.cjs.js +8 -1
  303. package/steps/steps.cjs.min.js +1 -1
  304. package/steps/steps.d.ts +1 -0
  305. package/steps/steps.esm.js +9 -2
  306. package/steps/steps.esm.min.js +1 -1
  307. package/steps/steps.js +8 -1
  308. package/steps/steps.min.js +1 -1
  309. package/styleclass/styleclass.d.ts +1 -0
  310. package/tabmenu/tabmenu.cjs.js +4 -3
  311. package/tabmenu/tabmenu.cjs.min.js +1 -1
  312. package/tabmenu/tabmenu.d.ts +1 -0
  313. package/tabmenu/tabmenu.esm.js +5 -4
  314. package/tabmenu/tabmenu.esm.min.js +1 -1
  315. package/tabmenu/tabmenu.js +4 -3
  316. package/tabmenu/tabmenu.min.js +1 -1
  317. package/tabview/tabview.d.ts +2 -0
  318. package/tag/tag.d.ts +1 -0
  319. package/terminal/terminal.d.ts +1 -0
  320. package/tieredmenu/tieredmenu.cjs.js +6 -3
  321. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  322. package/tieredmenu/tieredmenu.d.ts +1 -0
  323. package/tieredmenu/tieredmenu.esm.js +7 -4
  324. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  325. package/tieredmenu/tieredmenu.js +6 -3
  326. package/tieredmenu/tieredmenu.min.js +1 -1
  327. package/timeline/timeline.d.ts +1 -0
  328. package/toast/toast.d.ts +1 -0
  329. package/togglebutton/togglebutton.d.ts +1 -0
  330. package/toolbar/toolbar.d.ts +1 -0
  331. package/tooltip/tooltip.d.ts +1 -0
  332. package/tree/tree.d.ts +1 -0
  333. package/treeselect/treeselect.cjs.js +0 -1
  334. package/treeselect/treeselect.cjs.min.js +1 -1
  335. package/treeselect/treeselect.d.ts +2 -1
  336. package/treeselect/treeselect.esm.js +0 -1
  337. package/treeselect/treeselect.esm.min.js +1 -1
  338. package/treeselect/treeselect.js +0 -1
  339. package/treeselect/treeselect.min.js +1 -1
  340. package/treetable/treetable.d.ts +2 -1
  341. package/tristatecheckbox/tristatecheckbox.d.ts +1 -0
  342. package/utils/utils.cjs.js +11 -8
  343. package/utils/utils.cjs.min.js +1 -1
  344. package/utils/utils.esm.js +11 -8
  345. package/utils/utils.esm.min.js +1 -1
  346. package/utils/utils.js +11 -8
  347. package/utils/utils.min.js +1 -1
  348. package/virtualscroller/virtualscroller.d.ts +1 -0
  349. package/web-types.json +7 -13
@@ -8,8 +8,8 @@ var button = require('primereact/button');
8
8
  var hooks = require('primereact/hooks');
9
9
  var inputtext = require('primereact/inputtext');
10
10
  var overlayservice = require('primereact/overlayservice');
11
- var ripple = require('primereact/ripple');
12
11
  var utils = require('primereact/utils');
12
+ var ripple = require('primereact/ripple');
13
13
  var csstransition = require('primereact/csstransition');
14
14
  var portal = require('primereact/portal');
15
15
 
@@ -72,11 +72,17 @@ function _extends() {
72
72
  function _typeof(obj) {
73
73
  "@babel/helpers - typeof";
74
74
 
75
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
76
- return typeof obj;
77
- } : function (obj) {
78
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
79
- }, _typeof(obj);
75
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
76
+ _typeof = function _typeof(obj) {
77
+ return typeof obj;
78
+ };
79
+ } else {
80
+ _typeof = function _typeof(obj) {
81
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
82
+ };
83
+ }
84
+
85
+ return _typeof(obj);
80
86
  }
81
87
 
82
88
  function _arrayLikeToArray$1(arr, len) {
@@ -224,8 +230,30 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
224
230
  var overlayEventListener = React__namespace.useRef(null);
225
231
  var touchUIMaskClickListener = React__namespace.useRef(null);
226
232
  var isOverlayClicked = React__namespace.useRef(false);
233
+
234
+ var _React$useState7 = React__namespace.useState('date'),
235
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
236
+ currentView = _React$useState8[0],
237
+ setCurrentView = _React$useState8[1];
238
+
239
+ var _React$useState9 = React__namespace.useState(null),
240
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
241
+ currentMonth = _React$useState10[0],
242
+ setCurrentMonth = _React$useState10[1];
243
+
244
+ var _React$useState11 = React__namespace.useState(null),
245
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
246
+ currentYear = _React$useState12[0],
247
+ setCurrentYear = _React$useState12[1];
248
+
249
+ var _React$useState13 = React__namespace.useState([]),
250
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
251
+ yearOptions = _React$useState14[0],
252
+ setYearOptions = _React$useState14[1];
253
+
227
254
  var previousValue = hooks.usePrevious(props.value);
228
255
  var visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState);
256
+ var attributeSelector = utils.UniqueComponentId();
229
257
 
230
258
  var _useOverlayListener = hooks.useOverlayListener({
231
259
  target: elementRef,
@@ -401,7 +429,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
401
429
  if (navigation.current) {
402
430
  if (navigation.current.button) {
403
431
  initFocusableCell();
404
- if (navigation.backward) utils.DomHandler.findSingle(overlayRef.current, '.p-datepicker-prev').focus();else utils.DomHandler.findSingle(overlayRef.current, '.p-datepicker-next').focus();
432
+ if (navigation.current.backward) utils.DomHandler.findSingle(overlayRef.current, '.p-datepicker-prev').focus();else utils.DomHandler.findSingle(overlayRef.current, '.p-datepicker-next').focus();
405
433
  } else {
406
434
  var cell;
407
435
 
@@ -457,16 +485,22 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
457
485
  var newViewDate = new Date(getViewDate().getTime());
458
486
  newViewDate.setDate(1);
459
487
 
460
- if (props.view === 'date') {
488
+ if (currentView === 'date') {
461
489
  if (newViewDate.getMonth() === 0) {
462
490
  newViewDate.setMonth(11);
463
491
  newViewDate.setFullYear(newViewDate.getFullYear() - 1);
492
+ setCurrentMonth(11);
493
+ decrementYear();
464
494
  } else {
465
495
  newViewDate.setMonth(newViewDate.getMonth() - 1);
496
+ setCurrentMonth(function (prevState) {
497
+ return prevState - 1;
498
+ });
466
499
  }
467
- } else if (props.view === 'month') {
468
- var currentYear = newViewDate.getFullYear();
469
- var newYear = currentYear - 1;
500
+ } else if (currentView === 'month') {
501
+ var _currentYear2 = newViewDate.getFullYear();
502
+
503
+ var newYear = _currentYear2 - 1;
470
504
 
471
505
  if (props.yearNavigator) {
472
506
  var minYear = parseInt(props.yearRange.split(':')[0], 10);
@@ -479,6 +513,12 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
479
513
  newViewDate.setFullYear(newYear);
480
514
  }
481
515
 
516
+ if (currentView === 'month') {
517
+ decrementYear();
518
+ } else if (currentView === 'year') {
519
+ decrementDecade();
520
+ }
521
+
482
522
  updateViewDate(event, newViewDate);
483
523
  event.preventDefault();
484
524
  };
@@ -492,16 +532,22 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
492
532
  var newViewDate = new Date(getViewDate().getTime());
493
533
  newViewDate.setDate(1);
494
534
 
495
- if (props.view === 'date') {
535
+ if (currentView === 'date') {
496
536
  if (newViewDate.getMonth() === 11) {
497
537
  newViewDate.setMonth(0);
498
538
  newViewDate.setFullYear(newViewDate.getFullYear() + 1);
539
+ setCurrentMonth(0);
540
+ incrementYear();
499
541
  } else {
500
542
  newViewDate.setMonth(newViewDate.getMonth() + 1);
543
+ setCurrentMonth(function (prevState) {
544
+ return prevState + 1;
545
+ });
501
546
  }
502
- } else if (props.view === 'month') {
503
- var currentYear = newViewDate.getFullYear();
504
- var newYear = currentYear + 1;
547
+ } else if (currentView === 'month') {
548
+ var _currentYear3 = newViewDate.getFullYear();
549
+
550
+ var newYear = _currentYear3 + 1;
505
551
 
506
552
  if (props.yearNavigator) {
507
553
  var maxYear = parseInt(props.yearRange.split(':')[1], 10);
@@ -514,10 +560,48 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
514
560
  newViewDate.setFullYear(newYear);
515
561
  }
516
562
 
563
+ if (currentView === 'month') {
564
+ incrementYear();
565
+ } else if (currentView === 'year') {
566
+ incrementDecade();
567
+ }
568
+
517
569
  updateViewDate(event, newViewDate);
518
570
  event.preventDefault();
519
571
  };
520
572
 
573
+ var populateYearOptions = function populateYearOptions(start, end) {
574
+ var _yearOptions = [];
575
+
576
+ for (var i = start; i <= end; i++) {
577
+ yearOptions.push(i);
578
+ }
579
+
580
+ setYearOptions(_yearOptions);
581
+ };
582
+
583
+ var decrementYear = function decrementYear() {
584
+ var _currentYear = currentYear - 1;
585
+
586
+ setCurrentYear(_currentYear);
587
+
588
+ if (props.yearNavigator && _currentYear < yearOptions[0]) {
589
+ var difference = yearOptions[yearOptions.length - 1] - yearOptions[0];
590
+ populateYearOptions(yearOptions[0] - difference, yearOptions[yearOptions.length - 1] - difference);
591
+ }
592
+ };
593
+
594
+ var incrementYear = function incrementYear() {
595
+ var _currentYear = currentYear + 1;
596
+
597
+ setCurrentYear(_currentYear);
598
+
599
+ if (props.yearNavigator && _currentYear.current > yearOptions[yearOptions.length - 1]) {
600
+ var difference = yearOptions[yearOptions.length - 1] - yearOptions[0];
601
+ populateYearOptions(yearOptions[0] + difference, yearOptions[yearOptions.length - 1] + difference);
602
+ }
603
+ };
604
+
521
605
  var onMonthDropdownChange = function onMonthDropdownChange(event, value) {
522
606
  var currentViewDate = getViewDate();
523
607
  var newViewDate = new Date(currentViewDate.getTime());
@@ -1214,84 +1298,6 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1214
1298
  }
1215
1299
  };
1216
1300
 
1217
- var onMonthCellKeydown = function onMonthCellKeydown(event, index) {
1218
- var cell = event.currentTarget;
1219
-
1220
- switch (event.which) {
1221
- //arrows
1222
- case 38:
1223
- case 40:
1224
- {
1225
- cell.tabIndex = '-1';
1226
- var cells = cell.parentElement.children;
1227
- var cellIndex = utils.DomHandler.index(cell);
1228
- var nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];
1229
-
1230
- if (nextCell) {
1231
- nextCell.tabIndex = '0';
1232
- nextCell.focus();
1233
- }
1234
-
1235
- event.preventDefault();
1236
- break;
1237
- }
1238
- //left arrow
1239
-
1240
- case 37:
1241
- {
1242
- cell.tabIndex = '-1';
1243
- var prevCell = cell.previousElementSibling;
1244
-
1245
- if (prevCell) {
1246
- prevCell.tabIndex = '0';
1247
- prevCell.focus();
1248
- }
1249
-
1250
- event.preventDefault();
1251
- break;
1252
- }
1253
- //right arrow
1254
-
1255
- case 39:
1256
- {
1257
- cell.tabIndex = '-1';
1258
- var _nextCell = cell.nextElementSibling;
1259
-
1260
- if (_nextCell) {
1261
- _nextCell.tabIndex = '0';
1262
-
1263
- _nextCell.focus();
1264
- }
1265
-
1266
- event.preventDefault();
1267
- break;
1268
- }
1269
- //enter
1270
-
1271
- case 13:
1272
- {
1273
- onMonthSelect(event, index);
1274
- event.preventDefault();
1275
- break;
1276
- }
1277
- //escape
1278
-
1279
- case 27:
1280
- {
1281
- hide(null, reFocusInputField);
1282
- event.preventDefault();
1283
- break;
1284
- }
1285
- //tab
1286
-
1287
- case 9:
1288
- {
1289
- trapFocus(event);
1290
- break;
1291
- }
1292
- }
1293
- };
1294
-
1295
1301
  var onDateSelect = function onDateSelect(event, dateMeta, timeMeta) {
1296
1302
  if (props.disabled || !dateMeta.selectable) {
1297
1303
  event.preventDefault();
@@ -1409,16 +1415,70 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1409
1415
  updateInputfield(selectedValues);
1410
1416
  };
1411
1417
 
1412
- var onMonthSelect = function onMonthSelect(event, month) {
1413
- onDateSelect(event, {
1414
- year: getViewDate().getFullYear(),
1415
- month: month,
1416
- day: 1,
1417
- selectable: true
1418
+ var decrementDecade = function decrementDecade() {
1419
+ setCurrentYear(function (prevState) {
1420
+ return prevState - 10;
1421
+ });
1422
+ };
1423
+
1424
+ var incrementDecade = function incrementDecade() {
1425
+ setCurrentYear(function (prevState) {
1426
+ return prevState + 10;
1418
1427
  });
1428
+ };
1429
+
1430
+ var switchToMonthView = function switchToMonthView(event) {
1431
+ setCurrentView('month');
1432
+ event.preventDefault();
1433
+ };
1434
+
1435
+ var switchToYearView = function switchToYearView(event) {
1436
+ setCurrentView('year');
1419
1437
  event.preventDefault();
1420
1438
  };
1421
1439
 
1440
+ var onMonthSelect = function onMonthSelect(event, month) {
1441
+ if (props.view === 'month') {
1442
+ onDateSelect(event, {
1443
+ year: currentYear,
1444
+ month: month,
1445
+ day: 1,
1446
+ selectable: true
1447
+ });
1448
+ event.preventDefault();
1449
+ } else {
1450
+ setCurrentMonth(month);
1451
+ createMonthsMeta(month, currentYear);
1452
+ var currentDate = new Date(getCurrentDateTime().getTime());
1453
+ currentDate.setMonth(month);
1454
+ currentDate.setYear(currentYear);
1455
+ setViewDateState(currentDate);
1456
+ setCurrentView('date');
1457
+ props.onMonthChange && props.onMonthChange({
1458
+ month: month + 1,
1459
+ year: currentYear
1460
+ });
1461
+ }
1462
+ };
1463
+
1464
+ var onYearSelect = function onYearSelect(event, year) {
1465
+ if (props.view === 'year') {
1466
+ onDateSelect(event, {
1467
+ year: year,
1468
+ month: 0,
1469
+ day: 1,
1470
+ selectable: true
1471
+ });
1472
+ } else {
1473
+ setCurrentYear(year);
1474
+ setCurrentView('month');
1475
+ props.onMonthChange && props.onMonthChange({
1476
+ month: currentMonth + 1,
1477
+ year: year
1478
+ });
1479
+ }
1480
+ };
1481
+
1422
1482
  var updateModel = function updateModel(event, value) {
1423
1483
  if (props.onChange) {
1424
1484
  var newValue = value && value instanceof Date ? new Date(value.getTime()) : value;
@@ -1502,11 +1562,28 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1502
1562
  props.onHide && props.onHide();
1503
1563
  };
1504
1564
 
1565
+ var appendDisabled = function appendDisabled() {
1566
+ return props.appendTo === 'self' || props.inline;
1567
+ };
1568
+
1505
1569
  var alignOverlay = function alignOverlay() {
1506
1570
  if (props.touchUI) {
1507
1571
  enableModality();
1508
- } else {
1509
- utils.DomHandler.alignOverlay(overlayRef.current, inputRef.current.parentElement, props.appendTo || PrimeReact__default["default"].appendTo);
1572
+ } else if (overlayRef && overlayRef.current && inputRef && inputRef.current) {
1573
+ utils.DomHandler.alignOverlay(overlayRef.current, inputRef.current, props.appendTo || PrimeReact__default["default"].appendTo);
1574
+
1575
+ if (appendDisabled()) {
1576
+ utils.DomHandler.relativePosition(overlayRef.current, inputRef.current);
1577
+ } else {
1578
+ if (currentView === 'date') {
1579
+ overlayRef.current.style.width = utils.DomHandler.getOuterWidth(overlayRef.current) + 'px';
1580
+ overlayRef.current.style.minWidth = utils.DomHandler.getOuterWidth(inputRef.current) + 'px';
1581
+ } else {
1582
+ overlayRef.current.style.width = utils.DomHandler.getOuterWidth(inputRef.current) + 'px';
1583
+ }
1584
+
1585
+ utils.DomHandler.absolutePosition(overlayRef.current, inputRef.current);
1586
+ }
1510
1587
  }
1511
1588
  };
1512
1589
 
@@ -1881,9 +1958,30 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
1881
1958
  }
1882
1959
  };
1883
1960
 
1961
+ var isComparable = function isComparable() {
1962
+ return props.value != null && typeof props.value !== 'string';
1963
+ };
1964
+
1884
1965
  var isMonthSelected = function isMonthSelected(month) {
1885
- var viewDate = getViewDate();
1886
- if (props.value && props.value instanceof Date) return props.value.getDate() === 1 && props.value.getMonth() === month && props.value.getFullYear() === viewDate.getFullYear();else return false;
1966
+ if (isComparable()) {
1967
+ var value = isRangeSelection() ? props.value[0] : props.value;
1968
+ return !isMultipleSelection() ? value.getMonth() === month && value.getFullYear() === currentYear : false;
1969
+ }
1970
+
1971
+ return false;
1972
+ };
1973
+
1974
+ var isYearSelected = function isYearSelected(year) {
1975
+ if (isComparable()) {
1976
+ var value = isRangeSelection() ? props.value[0] : props.value;
1977
+ return !isMultipleSelection() && isComparable() ? value.getFullYear() === year : false;
1978
+ }
1979
+
1980
+ return false;
1981
+ };
1982
+
1983
+ var switchViewButtonDisabled = function switchViewButtonDisabled() {
1984
+ return props.numberOfMonths > 1 || props.disabled;
1887
1985
  };
1888
1986
 
1889
1987
  var isDateEquals = function isDateEquals(value, dateMeta) {
@@ -2443,9 +2541,20 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2443
2541
  var viewDate = getViewDate(props.viewDate);
2444
2542
  validateDate(viewDate);
2445
2543
  setViewDateState(viewDate);
2544
+ setCurrentMonth(viewDate.getMonth());
2545
+ setCurrentYear(viewDate.getFullYear());
2546
+ setCurrentView(props.view);
2446
2547
 
2447
2548
  if (props.inline) {
2448
- initFocusableCell();
2549
+ overlayRef && overlayRef.current.setAttribute(attributeSelector, '');
2550
+
2551
+ if (!props.disabled) {
2552
+ initFocusableCell();
2553
+
2554
+ if (props.numberOfMonths === 1) {
2555
+ overlayRef.current.style.width = utils.DomHandler.getOuterWidth(overlayRef.current) + 'px';
2556
+ }
2557
+ }
2449
2558
  } else if (props.mask) {
2450
2559
  utils.mask(inputRef.current, {
2451
2560
  mask: props.mask,
@@ -2483,7 +2592,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2483
2592
  }
2484
2593
  }, [props.onViewDateChange, props.value]);
2485
2594
  hooks.useUpdateEffect(function () {
2486
- if (previousValue !== props.value && (!viewStateChanged.current || !visible)) {
2595
+ if (previousValue !== props.value && (!viewStateChanged || !visible)) {
2487
2596
  updateInputfield(props.value);
2488
2597
  }
2489
2598
  }, [props.value, visible]);
@@ -2524,7 +2633,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2524
2633
  };
2525
2634
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2526
2635
  type: "button",
2527
- className: "p-datepicker-prev p-link"
2636
+ className: "p-datepicker-prev"
2528
2637
  }, navigatorProps), /*#__PURE__*/React__namespace.createElement("span", {
2529
2638
  className: "p-datepicker-prev-icon pi pi-chevron-left"
2530
2639
  }), /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
@@ -2543,13 +2652,13 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2543
2652
  };
2544
2653
  return /*#__PURE__*/React__namespace.createElement("button", _extends({
2545
2654
  type: "button",
2546
- className: "p-datepicker-next p-link"
2655
+ className: "p-datepicker-next"
2547
2656
  }, navigatorProps), /*#__PURE__*/React__namespace.createElement("span", {
2548
2657
  className: "p-datepicker-next-icon pi pi-chevron-right"
2549
2658
  }), /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
2550
2659
  };
2551
2660
 
2552
- var createTitleMonthElement = function createTitleMonthElement(month) {
2661
+ var createTitleMonthElement = function createTitleMonthElement() {
2553
2662
  var monthNames = PrimeReact.localeOption('monthNames', props.locale);
2554
2663
 
2555
2664
  if (props.monthNavigator && props.view !== 'month') {
@@ -2597,25 +2706,28 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2597
2706
  return _content;
2598
2707
  }
2599
2708
 
2600
- return /*#__PURE__*/React__namespace.createElement("span", {
2601
- className: "p-datepicker-month"
2602
- }, monthNames[month]);
2709
+ return currentView === 'date' && /*#__PURE__*/React__namespace.createElement("button", {
2710
+ className: "p-datepicker-month p-link",
2711
+ onClick: switchToMonthView,
2712
+ disabled: switchViewButtonDisabled()
2713
+ }, monthNames[currentMonth]);
2603
2714
  };
2604
2715
 
2605
- var createTitleYearElement = function createTitleYearElement(year) {
2716
+ var createTitleYearElement = function createTitleYearElement() {
2606
2717
  if (props.yearNavigator) {
2607
- var yearOptions = [];
2718
+ var _yearOptions2 = [];
2608
2719
  var years = props.yearRange.split(':');
2609
2720
  var yearStart = parseInt(years[0], 10);
2610
2721
  var yearEnd = parseInt(years[1], 10);
2611
2722
 
2612
2723
  for (var i = yearStart; i <= yearEnd; i++) {
2613
- yearOptions.push(i);
2724
+ _yearOptions2.push(i);
2614
2725
  }
2615
2726
 
2616
2727
  var viewDate = getViewDate();
2617
2728
  var viewYear = viewDate.getFullYear();
2618
- var displayedYearNames = yearOptions.filter(function (year) {
2729
+
2730
+ var displayedYearNames = _yearOptions2.filter(function (year) {
2619
2731
  return !(props.minDate && props.minDate.getFullYear() > year) && !(props.maxDate && props.maxDate.getFullYear() < year);
2620
2732
  });
2621
2733
 
@@ -2655,17 +2767,32 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2655
2767
  return _content2;
2656
2768
  }
2657
2769
 
2658
- return /*#__PURE__*/React__namespace.createElement("span", {
2659
- className: "p-datepicker-year"
2660
- }, year);
2770
+ return currentView !== 'year' && /*#__PURE__*/React__namespace.createElement("button", {
2771
+ className: "p-datepicker-year p-link",
2772
+ onClick: switchToYearView,
2773
+ disabled: switchViewButtonDisabled()
2774
+ }, currentYear);
2775
+ };
2776
+
2777
+ var createTitleDecadeElement = function createTitleDecadeElement() {
2778
+ var years = yearPickerValues();
2779
+
2780
+ if (currentView === 'year') {
2781
+ return /*#__PURE__*/React__namespace.createElement("span", {
2782
+ className: "p-datepicker-decade"
2783
+ }, props.decadeTemplate ? props.decadeTemplate(years) : /*#__PURE__*/React__namespace.createElement("span", null, "".concat(yearPickerValues()[0], " - ").concat(yearPickerValues()[yearPickerValues().length - 1])));
2784
+ }
2785
+
2786
+ return null;
2661
2787
  };
2662
2788
 
2663
2789
  var createTitle = function createTitle(monthMetaData) {
2664
2790
  var month = createTitleMonthElement(monthMetaData.month);
2665
2791
  var year = createTitleYearElement(monthMetaData.year);
2792
+ var decade = createTitleDecadeElement();
2666
2793
  return /*#__PURE__*/React__namespace.createElement("div", {
2667
2794
  className: "p-datepicker-title"
2668
- }, month, year);
2795
+ }, month, year, decade);
2669
2796
  };
2670
2797
 
2671
2798
  var createDayNames = function createDayNames(weekDays) {
@@ -2743,7 +2870,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2743
2870
  var createDateViewGrid = function createDateViewGrid(monthMetaData, weekDays, groupIndex) {
2744
2871
  var dayNames = createDayNames(weekDays);
2745
2872
  var dates = createDates(monthMetaData, groupIndex);
2746
- return /*#__PURE__*/React__namespace.createElement("div", {
2873
+ return currentView === 'date' && /*#__PURE__*/React__namespace.createElement("div", {
2747
2874
  className: "p-datepicker-calendar-container"
2748
2875
  }, /*#__PURE__*/React__namespace.createElement("table", {
2749
2876
  className: "p-datepicker-calendar"
@@ -2779,39 +2906,33 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2779
2906
  return months;
2780
2907
  };
2781
2908
 
2782
- var createMonthViewMonth = function createMonthViewMonth(index) {
2783
- var className = utils.classNames('p-monthpicker-month', {
2784
- 'p-highlight': isMonthSelected(index)
2785
- });
2909
+ var monthPickerValues = function monthPickerValues() {
2910
+ var monthPickerValues = [];
2786
2911
  var monthNamesShort = PrimeReact.localeOption('monthNamesShort', props.locale);
2787
- var monthName = monthNamesShort[index];
2788
- return /*#__PURE__*/React__namespace.createElement("span", {
2789
- key: monthName,
2790
- className: className,
2791
- onClick: function onClick(event) {
2792
- return onMonthSelect(event, index);
2793
- },
2794
- onKeyDown: function onKeyDown(event) {
2795
- return onMonthCellKeydown(event, index);
2796
- }
2797
- }, monthName, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
2912
+
2913
+ for (var i = 0; i <= 11; i++) {
2914
+ monthPickerValues.push(monthNamesShort[i]);
2915
+ }
2916
+
2917
+ return monthPickerValues;
2798
2918
  };
2799
2919
 
2800
- var createMonthViewMonths = function createMonthViewMonths() {
2801
- var months = [];
2920
+ var yearPickerValues = function yearPickerValues() {
2921
+ var yearPickerValues = [];
2922
+ var base = currentYear - currentYear % 10;
2802
2923
 
2803
- for (var i = 0; i <= 11; i++) {
2804
- months.push(createMonthViewMonth(i));
2924
+ for (var i = 0; i < 10; i++) {
2925
+ yearPickerValues.push(base + i);
2805
2926
  }
2806
2927
 
2807
- return months;
2928
+ return yearPickerValues;
2808
2929
  };
2809
2930
 
2810
- var createMonthView = function createMonthView() {
2931
+ var createMonthYearView = function createMonthYearView() {
2811
2932
  var backwardNavigator = createBackwardNavigator(true);
2812
2933
  var forwardNavigator = createForwardNavigator(true);
2813
2934
  var yearElement = createTitleYearElement(getViewDate().getFullYear());
2814
- var months = createMonthViewMonths();
2935
+ var decade = createTitleDecadeElement();
2815
2936
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", {
2816
2937
  className: "p-datepicker-group-container"
2817
2938
  }, /*#__PURE__*/React__namespace.createElement("div", {
@@ -2820,17 +2941,15 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
2820
2941
  className: "p-datepicker-header"
2821
2942
  }, backwardNavigator, /*#__PURE__*/React__namespace.createElement("div", {
2822
2943
  className: "p-datepicker-title"
2823
- }, yearElement), forwardNavigator))), /*#__PURE__*/React__namespace.createElement("div", {
2824
- className: "p-monthpicker"
2825
- }, months));
2944
+ }, yearElement, decade), forwardNavigator))));
2826
2945
  };
2827
2946
 
2828
2947
  var createDatePicker = function createDatePicker() {
2829
2948
  if (!props.timeOnly) {
2830
2949
  if (props.view === 'date') {
2831
2950
  return createDateView();
2832
- } else if (props.view === 'month') {
2833
- return createMonthView();
2951
+ } else {
2952
+ return createMonthYearView();
2834
2953
  }
2835
2954
  }
2836
2955
 
@@ -3022,7 +3141,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
3022
3141
  };
3023
3142
 
3024
3143
  var createTimePicker = function createTimePicker() {
3025
- if (props.showTime || props.timeOnly) {
3144
+ if ((props.showTime || props.timeOnly) && currentView === 'date') {
3026
3145
  return /*#__PURE__*/React__namespace.createElement("div", {
3027
3146
  className: "p-timepicker"
3028
3147
  }, createHourPicker(), createSeparator(':'), createMinutePicker(), props.showSeconds && createSeparator(':'), createSecondPicker(), props.showMillisec && createSeparator('.'), createMiliSecondPicker(), props.hourFormat === '12' && createSeparator(':'), createAmPmPicker());
@@ -3131,6 +3250,46 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
3131
3250
  return null;
3132
3251
  };
3133
3252
 
3253
+ var createMonthPicker = function createMonthPicker() {
3254
+ if (currentView === 'month') {
3255
+ return /*#__PURE__*/React__namespace.createElement("div", {
3256
+ className: "p-monthpicker"
3257
+ }, monthPickerValues().map(function (m, i) {
3258
+ return /*#__PURE__*/React__namespace.createElement("span", {
3259
+ onClick: function onClick(event) {
3260
+ return onMonthSelect(event, i);
3261
+ },
3262
+ key: "month".concat(i + 1),
3263
+ className: utils.classNames('p-monthpicker-month', {
3264
+ 'p-highlight': isMonthSelected(i)
3265
+ })
3266
+ }, m);
3267
+ }));
3268
+ }
3269
+
3270
+ return null;
3271
+ };
3272
+
3273
+ var createYearPicker = function createYearPicker() {
3274
+ if (currentView === 'year') {
3275
+ return /*#__PURE__*/React__namespace.createElement("div", {
3276
+ className: "p-yearpicker"
3277
+ }, yearPickerValues().map(function (y, i) {
3278
+ return /*#__PURE__*/React__namespace.createElement("span", {
3279
+ onClick: function onClick(event) {
3280
+ return onYearSelect(event, y);
3281
+ },
3282
+ key: "year".concat(i + 1),
3283
+ className: utils.classNames('p-yearpicker-year', {
3284
+ 'p-highlight': isYearSelected(y)
3285
+ })
3286
+ }, y);
3287
+ }));
3288
+ }
3289
+
3290
+ return null;
3291
+ };
3292
+
3134
3293
  var otherProps = utils.ObjectUtils.findDiffKeys(props, Calendar.defaultProps);
3135
3294
  var className = utils.classNames('p-calendar p-component p-inputwrapper', props.className, (_classNames = {}, _defineProperty(_classNames, "p-calendar-w-btn p-calendar-w-btn-".concat(props.iconPos), props.showIcon), _defineProperty(_classNames, 'p-calendar-disabled', props.disabled), _defineProperty(_classNames, 'p-calendar-timeonly', props.timeOnly), _defineProperty(_classNames, 'p-inputwrapper-filled', props.value || utils.DomHandler.hasClass(inputRef.current, 'p-filled') && inputRef.current.value !== ''), _defineProperty(_classNames, 'p-inputwrapper-focus', focusedState), _classNames));
3136
3295
  var panelClassName = utils.classNames('p-datepicker p-component', props.panelClassName, {
@@ -3138,7 +3297,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
3138
3297
  'p-disabled': props.disabled,
3139
3298
  'p-datepicker-timeonly': props.timeOnly,
3140
3299
  'p-datepicker-multiple-month': props.numberOfMonths > 1,
3141
- 'p-datepicker-monthpicker': props.view === 'month',
3300
+ 'p-datepicker-monthpicker': currentView === 'month',
3142
3301
  'p-datepicker-touch-ui': props.touchUI
3143
3302
  });
3144
3303
  var content = createContent();
@@ -3146,6 +3305,8 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
3146
3305
  var timePicker = createTimePicker();
3147
3306
  var buttonBar = createButtonBar();
3148
3307
  var footer = createFooter();
3308
+ var monthPicker = createMonthPicker();
3309
+ var yearPicker = createYearPicker();
3149
3310
  return /*#__PURE__*/React__namespace.createElement("span", _extends({
3150
3311
  ref: elementRef,
3151
3312
  id: props.id,
@@ -3165,7 +3326,7 @@ var Calendar = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
3165
3326
  onExit: onOverlayExit,
3166
3327
  onExited: onOverlayExited,
3167
3328
  transitionOptions: props.transitionOptions
3168
- }, datePicker, timePicker, buttonBar, footer));
3329
+ }, datePicker, timePicker, buttonBar, footer, monthPicker, yearPicker));
3169
3330
  }));
3170
3331
  Calendar.displayName = 'Calendar';
3171
3332
  Calendar.defaultProps = {
@@ -3234,6 +3395,7 @@ Calendar.defaultProps = {
3234
3395
  tooltipOptions: null,
3235
3396
  ariaLabelledBy: null,
3236
3397
  dateTemplate: null,
3398
+ decadeTemplate: null,
3237
3399
  headerTemplate: null,
3238
3400
  footerTemplate: null,
3239
3401
  monthNavigatorTemplate: null,
@@ -3249,7 +3411,8 @@ Calendar.defaultProps = {
3249
3411
  onTodayButtonClick: null,
3250
3412
  onClearButtonClick: null,
3251
3413
  onShow: null,
3252
- onHide: null
3414
+ onHide: null,
3415
+ onMonthChange: null
3253
3416
  };
3254
3417
 
3255
3418
  exports.Calendar = Calendar;