primevue 3.15.0 → 3.16.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 (387) hide show
  1. package/autocomplete/AutoComplete.d.ts +182 -38
  2. package/autocomplete/AutoComplete.vue +636 -342
  3. package/autocomplete/autocomplete.cjs.js +745 -416
  4. package/autocomplete/autocomplete.cjs.min.js +1 -1
  5. package/autocomplete/autocomplete.esm.js +747 -418
  6. package/autocomplete/autocomplete.esm.min.js +1 -1
  7. package/autocomplete/autocomplete.js +745 -416
  8. package/autocomplete/autocomplete.min.js +1 -1
  9. package/button/Button.vue +4 -1
  10. package/button/button.cjs.js +5 -1
  11. package/button/button.cjs.min.js +1 -1
  12. package/button/button.esm.js +5 -1
  13. package/button/button.esm.min.js +1 -1
  14. package/button/button.js +5 -1
  15. package/button/button.min.js +1 -1
  16. package/calendar/Calendar.d.ts +51 -12
  17. package/calendar/Calendar.vue +259 -114
  18. package/calendar/calendar.cjs.js +414 -220
  19. package/calendar/calendar.cjs.min.js +1 -1
  20. package/calendar/calendar.esm.js +415 -221
  21. package/calendar/calendar.esm.min.js +1 -1
  22. package/calendar/calendar.js +414 -220
  23. package/calendar/calendar.min.js +1 -1
  24. package/carousel/Carousel.vue +25 -0
  25. package/carousel/carousel.cjs.js +25 -0
  26. package/carousel/carousel.cjs.min.js +1 -1
  27. package/carousel/carousel.esm.js +25 -0
  28. package/carousel/carousel.esm.min.js +1 -1
  29. package/carousel/carousel.js +25 -0
  30. package/carousel/carousel.min.js +1 -1
  31. package/cascadeselect/CascadeSelect.d.ts +97 -17
  32. package/cascadeselect/CascadeSelect.vue +560 -135
  33. package/cascadeselect/CascadeSelectSub.vue +48 -129
  34. package/cascadeselect/cascadeselect.cjs.js +670 -306
  35. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  36. package/cascadeselect/cascadeselect.esm.js +672 -308
  37. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  38. package/cascadeselect/cascadeselect.js +670 -306
  39. package/cascadeselect/cascadeselect.min.js +1 -1
  40. package/checkbox/Checkbox.d.ts +40 -4
  41. package/checkbox/Checkbox.vue +50 -13
  42. package/checkbox/checkbox.cjs.js +64 -23
  43. package/checkbox/checkbox.cjs.min.js +1 -1
  44. package/checkbox/checkbox.esm.js +65 -24
  45. package/checkbox/checkbox.esm.min.js +1 -1
  46. package/checkbox/checkbox.js +64 -23
  47. package/checkbox/checkbox.min.js +1 -1
  48. package/chips/Chips.d.ts +36 -12
  49. package/chips/Chips.vue +116 -22
  50. package/chips/chips.cjs.js +149 -37
  51. package/chips/chips.cjs.min.js +1 -1
  52. package/chips/chips.esm.js +150 -38
  53. package/chips/chips.esm.min.js +1 -1
  54. package/chips/chips.js +150 -39
  55. package/chips/chips.min.js +1 -1
  56. package/colorpicker/ColorPicker.d.ts +3 -6
  57. package/colorpicker/ColorPicker.vue +1 -5
  58. package/colorpicker/colorpicker.cjs.js +2 -7
  59. package/colorpicker/colorpicker.cjs.min.js +1 -1
  60. package/colorpicker/colorpicker.esm.js +2 -7
  61. package/colorpicker/colorpicker.esm.min.js +1 -1
  62. package/colorpicker/colorpicker.js +2 -7
  63. package/colorpicker/colorpicker.min.js +1 -1
  64. package/column/Column.d.ts +4 -0
  65. package/column/Column.vue +4 -0
  66. package/column/column.cjs.js +4 -0
  67. package/column/column.cjs.min.js +1 -1
  68. package/column/column.esm.js +4 -0
  69. package/column/column.esm.min.js +1 -1
  70. package/column/column.js +4 -0
  71. package/column/column.min.js +1 -1
  72. package/config/PrimeVue.d.ts +42 -0
  73. package/config/config.cjs.js +35 -4
  74. package/config/config.cjs.min.js +1 -1
  75. package/config/config.esm.js +35 -4
  76. package/config/config.esm.min.js +1 -1
  77. package/config/config.js +35 -4
  78. package/config/config.min.js +1 -1
  79. package/confirmdialog/ConfirmDialog.vue +4 -1
  80. package/confirmdialog/confirmdialog.cjs.js +6 -2
  81. package/confirmdialog/confirmdialog.cjs.min.js +1 -1
  82. package/confirmdialog/confirmdialog.esm.js +6 -2
  83. package/confirmdialog/confirmdialog.esm.min.js +1 -1
  84. package/confirmdialog/confirmdialog.js +6 -2
  85. package/confirmdialog/confirmdialog.min.js +1 -1
  86. package/contextmenu/ContextMenu.d.ts +1 -1
  87. package/contextmenu/ContextMenuSub.vue +3 -3
  88. package/contextmenu/contextmenu.cjs.js +14 -8
  89. package/contextmenu/contextmenu.cjs.min.js +1 -1
  90. package/contextmenu/contextmenu.esm.js +15 -9
  91. package/contextmenu/contextmenu.esm.min.js +1 -1
  92. package/contextmenu/contextmenu.js +14 -8
  93. package/contextmenu/contextmenu.min.js +1 -1
  94. package/core/core.js +1128 -772
  95. package/core/core.min.js +12 -12
  96. package/datatable/BodyCell.vue +11 -2
  97. package/datatable/DataTable.vue +23 -2
  98. package/datatable/datatable.cjs.js +34 -4
  99. package/datatable/datatable.cjs.min.js +1 -1
  100. package/datatable/datatable.esm.js +34 -4
  101. package/datatable/datatable.esm.min.js +1 -1
  102. package/datatable/datatable.js +34 -4
  103. package/datatable/datatable.min.js +1 -1
  104. package/dialog/Dialog.d.ts +5 -1
  105. package/dropdown/Dropdown.d.ts +92 -38
  106. package/dropdown/Dropdown.vue +538 -399
  107. package/dropdown/dropdown.cjs.js +657 -486
  108. package/dropdown/dropdown.cjs.min.js +1 -1
  109. package/dropdown/dropdown.esm.js +659 -488
  110. package/dropdown/dropdown.esm.min.js +1 -1
  111. package/dropdown/dropdown.js +657 -486
  112. package/dropdown/dropdown.min.js +1 -1
  113. package/editor/Editor.d.ts +32 -0
  114. package/editor/Editor.vue +15 -1
  115. package/editor/editor.cjs.js +15 -1
  116. package/editor/editor.cjs.min.js +1 -1
  117. package/editor/editor.esm.js +15 -1
  118. package/editor/editor.esm.min.js +1 -1
  119. package/editor/editor.js +15 -1
  120. package/editor/editor.min.js +1 -1
  121. package/inputmask/InputMask.vue +9 -6
  122. package/inputmask/inputmask.cjs.js +14 -6
  123. package/inputmask/inputmask.cjs.min.js +1 -1
  124. package/inputmask/inputmask.esm.js +15 -7
  125. package/inputmask/inputmask.esm.min.js +1 -1
  126. package/inputmask/inputmask.js +14 -6
  127. package/inputmask/inputmask.min.js +1 -1
  128. package/inputnumber/InputNumber.d.ts +31 -7
  129. package/inputnumber/InputNumber.vue +53 -20
  130. package/inputnumber/inputnumber.cjs.js +75 -29
  131. package/inputnumber/inputnumber.cjs.min.js +1 -1
  132. package/inputnumber/inputnumber.esm.js +76 -30
  133. package/inputnumber/inputnumber.esm.min.js +1 -1
  134. package/inputnumber/inputnumber.js +75 -29
  135. package/inputnumber/inputnumber.min.js +1 -1
  136. package/inputswitch/InputSwitch.d.ts +24 -8
  137. package/inputswitch/InputSwitch.vue +27 -12
  138. package/inputswitch/inputswitch.cjs.js +38 -20
  139. package/inputswitch/inputswitch.cjs.min.js +1 -1
  140. package/inputswitch/inputswitch.esm.js +39 -21
  141. package/inputswitch/inputswitch.esm.min.js +1 -1
  142. package/inputswitch/inputswitch.js +38 -20
  143. package/inputswitch/inputswitch.min.js +1 -1
  144. package/inputtext/InputText.vue +1 -2
  145. package/inputtext/inputtext.cjs.js +3 -4
  146. package/inputtext/inputtext.cjs.min.js +1 -1
  147. package/inputtext/inputtext.esm.js +4 -5
  148. package/inputtext/inputtext.esm.min.js +1 -1
  149. package/inputtext/inputtext.js +3 -4
  150. package/inputtext/inputtext.min.js +1 -1
  151. package/knob/Knob.d.ts +12 -0
  152. package/knob/Knob.vue +62 -2
  153. package/knob/knob.cjs.js +73 -5
  154. package/knob/knob.cjs.min.js +1 -1
  155. package/knob/knob.esm.js +73 -5
  156. package/knob/knob.esm.min.js +1 -1
  157. package/knob/knob.js +73 -5
  158. package/knob/knob.min.js +1 -1
  159. package/listbox/Listbox.d.ts +53 -7
  160. package/listbox/Listbox.vue +500 -135
  161. package/listbox/listbox.cjs.js +597 -193
  162. package/listbox/listbox.cjs.min.js +1 -1
  163. package/listbox/listbox.esm.js +599 -195
  164. package/listbox/listbox.esm.min.js +1 -1
  165. package/listbox/listbox.js +597 -193
  166. package/listbox/listbox.min.js +1 -1
  167. package/menu/Menu.d.ts +1 -1
  168. package/menu/Menuitem.vue +2 -2
  169. package/menu/menu.cjs.js +12 -6
  170. package/menu/menu.cjs.min.js +1 -1
  171. package/menu/menu.esm.js +13 -7
  172. package/menu/menu.esm.min.js +1 -1
  173. package/menu/menu.js +12 -6
  174. package/menu/menu.min.js +1 -1
  175. package/menubar/MenubarSub.vue +3 -3
  176. package/menubar/menubar.cjs.js +14 -8
  177. package/menubar/menubar.cjs.min.js +1 -1
  178. package/menubar/menubar.esm.js +15 -9
  179. package/menubar/menubar.esm.min.js +1 -1
  180. package/menubar/menubar.js +14 -8
  181. package/menubar/menubar.min.js +1 -1
  182. package/menuitem/MenuItem.d.ts +1 -1
  183. package/multiselect/MultiSelect.d.ts +111 -51
  184. package/multiselect/MultiSelect.vue +629 -338
  185. package/multiselect/multiselect.cjs.js +748 -428
  186. package/multiselect/multiselect.cjs.min.js +1 -1
  187. package/multiselect/multiselect.esm.js +750 -430
  188. package/multiselect/multiselect.esm.min.js +1 -1
  189. package/multiselect/multiselect.js +748 -428
  190. package/multiselect/multiselect.min.js +1 -1
  191. package/overlaypanel/OverlayPanel.d.ts +1 -1
  192. package/overlaypanel/OverlayPanel.vue +14 -2
  193. package/overlaypanel/overlaypanel.cjs.js +14 -2
  194. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  195. package/overlaypanel/overlaypanel.esm.js +14 -2
  196. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  197. package/overlaypanel/overlaypanel.js +14 -2
  198. package/overlaypanel/overlaypanel.min.js +1 -1
  199. package/package.json +2 -2
  200. package/paginator/Paginator.d.ts +2 -2
  201. package/password/Password.d.ts +36 -8
  202. package/password/Password.vue +50 -14
  203. package/password/password.cjs.js +69 -24
  204. package/password/password.cjs.min.js +1 -1
  205. package/password/password.esm.js +71 -26
  206. package/password/password.esm.min.js +1 -1
  207. package/password/password.js +69 -24
  208. package/password/password.min.js +1 -1
  209. package/picklist/PickList.d.ts +8 -0
  210. package/picklist/PickList.vue +10 -2
  211. package/picklist/picklist.cjs.js +68 -50
  212. package/picklist/picklist.cjs.min.js +1 -1
  213. package/picklist/picklist.esm.js +69 -51
  214. package/picklist/picklist.esm.min.js +1 -1
  215. package/picklist/picklist.js +68 -50
  216. package/picklist/picklist.min.js +1 -1
  217. package/portal/Portal.d.ts +1 -1
  218. package/radiobutton/RadioButton.d.ts +28 -4
  219. package/radiobutton/RadioButton.vue +36 -11
  220. package/radiobutton/radiobutton.cjs.js +49 -23
  221. package/radiobutton/radiobutton.cjs.min.js +1 -1
  222. package/radiobutton/radiobutton.esm.js +50 -24
  223. package/radiobutton/radiobutton.esm.min.js +1 -1
  224. package/radiobutton/radiobutton.js +49 -23
  225. package/radiobutton/radiobutton.min.js +1 -1
  226. package/rating/Rating.d.ts +4 -0
  227. package/rating/Rating.vue +61 -7
  228. package/rating/rating.cjs.js +90 -16
  229. package/rating/rating.cjs.min.js +1 -1
  230. package/rating/rating.esm.js +91 -17
  231. package/rating/rating.esm.min.js +1 -1
  232. package/rating/rating.js +90 -16
  233. package/rating/rating.min.js +1 -1
  234. package/resources/primevue.css +8 -0
  235. package/resources/primevue.min.css +1 -1
  236. package/resources/themes/arya-blue/theme.css +82 -40
  237. package/resources/themes/arya-green/theme.css +82 -40
  238. package/resources/themes/arya-orange/theme.css +82 -40
  239. package/resources/themes/arya-purple/theme.css +82 -40
  240. package/resources/themes/bootstrap4-dark-blue/theme.css +82 -40
  241. package/resources/themes/bootstrap4-dark-purple/theme.css +82 -40
  242. package/resources/themes/bootstrap4-light-blue/theme.css +82 -40
  243. package/resources/themes/bootstrap4-light-purple/theme.css +82 -40
  244. package/resources/themes/fluent-light/theme.css +82 -40
  245. package/resources/themes/lara-dark-blue/theme.css +82 -40
  246. package/resources/themes/lara-dark-indigo/theme.css +82 -40
  247. package/resources/themes/lara-dark-purple/theme.css +82 -40
  248. package/resources/themes/lara-dark-teal/theme.css +82 -40
  249. package/resources/themes/lara-light-blue/theme.css +82 -40
  250. package/resources/themes/lara-light-indigo/theme.css +82 -40
  251. package/resources/themes/lara-light-purple/theme.css +82 -40
  252. package/resources/themes/lara-light-teal/theme.css +82 -40
  253. package/resources/themes/luna-amber/theme.css +82 -40
  254. package/resources/themes/luna-blue/theme.css +82 -40
  255. package/resources/themes/luna-green/theme.css +82 -40
  256. package/resources/themes/luna-pink/theme.css +82 -40
  257. package/resources/themes/md-dark-deeppurple/theme.css +82 -40
  258. package/resources/themes/md-dark-indigo/theme.css +82 -40
  259. package/resources/themes/md-light-deeppurple/theme.css +82 -40
  260. package/resources/themes/md-light-indigo/theme.css +82 -40
  261. package/resources/themes/mdc-dark-deeppurple/theme.css +82 -40
  262. package/resources/themes/mdc-dark-indigo/theme.css +82 -40
  263. package/resources/themes/mdc-light-deeppurple/theme.css +82 -40
  264. package/resources/themes/mdc-light-indigo/theme.css +82 -40
  265. package/resources/themes/nova/theme.css +82 -40
  266. package/resources/themes/nova-accent/theme.css +82 -40
  267. package/resources/themes/nova-alt/theme.css +82 -40
  268. package/resources/themes/nova-vue/theme.css +82 -40
  269. package/resources/themes/rhea/theme.css +82 -40
  270. package/resources/themes/saga-blue/theme.css +82 -40
  271. package/resources/themes/saga-green/theme.css +82 -40
  272. package/resources/themes/saga-orange/theme.css +82 -40
  273. package/resources/themes/saga-purple/theme.css +82 -40
  274. package/resources/themes/tailwind-light/theme.css +82 -40
  275. package/resources/themes/vela-blue/theme.css +82 -40
  276. package/resources/themes/vela-green/theme.css +82 -40
  277. package/resources/themes/vela-orange/theme.css +82 -40
  278. package/resources/themes/vela-purple/theme.css +82 -40
  279. package/ripple/ripple.cjs.js +1 -0
  280. package/ripple/ripple.cjs.min.js +1 -1
  281. package/ripple/ripple.esm.js +1 -0
  282. package/ripple/ripple.esm.min.js +1 -1
  283. package/ripple/ripple.js +1 -0
  284. package/ripple/ripple.min.js +1 -1
  285. package/selectbutton/SelectButton.d.ts +6 -2
  286. package/selectbutton/SelectButton.vue +89 -12
  287. package/selectbutton/selectbutton.cjs.js +97 -22
  288. package/selectbutton/selectbutton.cjs.min.js +1 -1
  289. package/selectbutton/selectbutton.esm.js +99 -24
  290. package/selectbutton/selectbutton.esm.min.js +1 -1
  291. package/selectbutton/selectbutton.js +97 -22
  292. package/selectbutton/selectbutton.min.js +1 -1
  293. package/slider/Slider.d.ts +9 -1
  294. package/slider/Slider.vue +50 -34
  295. package/slider/slider.cjs.js +59 -38
  296. package/slider/slider.cjs.min.js +1 -1
  297. package/slider/slider.esm.js +59 -38
  298. package/slider/slider.esm.min.js +1 -1
  299. package/slider/slider.js +59 -38
  300. package/slider/slider.min.js +1 -1
  301. package/splitbutton/SplitButton.d.ts +1 -1
  302. package/splitter/Splitter.vue +30 -1
  303. package/splitter/splitter.cjs.js +30 -1
  304. package/splitter/splitter.cjs.min.js +1 -1
  305. package/splitter/splitter.esm.js +30 -1
  306. package/splitter/splitter.esm.min.js +1 -1
  307. package/splitter/splitter.js +30 -1
  308. package/splitter/splitter.min.js +1 -1
  309. package/textarea/Textarea.vue +1 -2
  310. package/textarea/textarea.cjs.js +3 -5
  311. package/textarea/textarea.cjs.min.js +1 -1
  312. package/textarea/textarea.esm.js +4 -6
  313. package/textarea/textarea.esm.min.js +1 -1
  314. package/textarea/textarea.js +3 -5
  315. package/textarea/textarea.min.js +1 -1
  316. package/tieredmenu/TieredMenu.d.ts +1 -1
  317. package/tieredmenu/TieredMenuSub.vue +3 -3
  318. package/tieredmenu/tieredmenu.cjs.js +14 -8
  319. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  320. package/tieredmenu/tieredmenu.esm.js +15 -9
  321. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  322. package/tieredmenu/tieredmenu.js +14 -8
  323. package/tieredmenu/tieredmenu.min.js +1 -1
  324. package/timeline/Timeline.d.ts +10 -1
  325. package/timeline/Timeline.vue +1 -1
  326. package/timeline/timeline.cjs.js +5 -1
  327. package/timeline/timeline.cjs.min.js +1 -1
  328. package/timeline/timeline.esm.js +5 -1
  329. package/timeline/timeline.esm.min.js +1 -1
  330. package/timeline/timeline.js +5 -1
  331. package/timeline/timeline.min.js +1 -1
  332. package/togglebutton/ToggleButton.d.ts +42 -0
  333. package/togglebutton/ToggleButton.vue +44 -7
  334. package/togglebutton/togglebutton.cjs.js +59 -13
  335. package/togglebutton/togglebutton.cjs.min.js +1 -1
  336. package/togglebutton/togglebutton.esm.js +60 -14
  337. package/togglebutton/togglebutton.esm.min.js +1 -1
  338. package/togglebutton/togglebutton.js +59 -13
  339. package/togglebutton/togglebutton.min.js +1 -1
  340. package/tooltip/tooltip.cjs.js +20 -11
  341. package/tooltip/tooltip.cjs.min.js +1 -1
  342. package/tooltip/tooltip.esm.js +21 -12
  343. package/tooltip/tooltip.esm.min.js +1 -1
  344. package/tooltip/tooltip.js +20 -11
  345. package/tooltip/tooltip.min.js +1 -1
  346. package/tree/Tree.vue +5 -1
  347. package/tree/TreeNode.vue +20 -19
  348. package/tree/tree.cjs.js +47 -32
  349. package/tree/tree.cjs.min.js +1 -1
  350. package/tree/tree.esm.js +47 -32
  351. package/tree/tree.esm.min.js +1 -1
  352. package/tree/tree.js +47 -32
  353. package/tree/tree.min.js +1 -1
  354. package/treeselect/TreeSelect.d.ts +26 -10
  355. package/treeselect/TreeSelect.vue +52 -29
  356. package/treeselect/treeselect.cjs.js +74 -41
  357. package/treeselect/treeselect.cjs.min.js +1 -1
  358. package/treeselect/treeselect.esm.js +76 -43
  359. package/treeselect/treeselect.esm.min.js +1 -1
  360. package/treeselect/treeselect.js +74 -41
  361. package/treeselect/treeselect.min.js +1 -1
  362. package/tristatecheckbox/TriStateCheckbox.d.ts +20 -4
  363. package/tristatecheckbox/TriStateCheckbox.vue +52 -15
  364. package/tristatecheckbox/tristatecheckbox.cjs.js +67 -26
  365. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  366. package/tristatecheckbox/tristatecheckbox.esm.js +68 -27
  367. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  368. package/tristatecheckbox/tristatecheckbox.js +67 -26
  369. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  370. package/utils/Utils.d.ts +3 -2
  371. package/utils/utils.cjs.js +239 -173
  372. package/utils/utils.cjs.min.js +1 -1
  373. package/utils/utils.esm.js +239 -173
  374. package/utils/utils.esm.min.js +1 -1
  375. package/utils/utils.js +239 -173
  376. package/utils/utils.min.js +1 -1
  377. package/vetur-attributes.json +612 -136
  378. package/vetur-tags.json +180 -59
  379. package/virtualscroller/VirtualScroller.d.ts +10 -0
  380. package/virtualscroller/VirtualScroller.vue +18 -17
  381. package/virtualscroller/virtualscroller.cjs.js +22 -20
  382. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  383. package/virtualscroller/virtualscroller.esm.js +22 -20
  384. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  385. package/virtualscroller/virtualscroller.js +22 -20
  386. package/virtualscroller/virtualscroller.min.js +1 -1
  387. package/web-types.json +1745 -338
@@ -5,19 +5,25 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var DomHandler = {
6
6
 
7
7
  innerWidth(el) {
8
- let width = el.offsetWidth;
9
- let style = getComputedStyle(el);
8
+ if (el) {
9
+ let width = el.offsetWidth;
10
+ let style = getComputedStyle(el);
10
11
 
11
- width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
12
- return width;
12
+ width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
13
+ return width;
14
+ }
15
+ return 0;
13
16
  },
14
17
 
15
18
  width(el) {
16
- let width = el.offsetWidth;
17
- let style = getComputedStyle(el);
19
+ if (el) {
20
+ let width = el.offsetWidth;
21
+ let style = getComputedStyle(el);
18
22
 
19
- width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
20
- return width;
23
+ width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
24
+ return width;
25
+ }
26
+ return 0;
21
27
  },
22
28
 
23
29
  getWindowScrollTop() {
@@ -41,9 +47,7 @@ var DomHandler = {
41
47
 
42
48
  return width;
43
49
  }
44
- else {
45
- return 0;
46
- }
50
+ return 0;
47
51
  },
48
52
 
49
53
  getOuterHeight(el, margin) {
@@ -57,9 +61,7 @@ var DomHandler = {
57
61
 
58
62
  return height;
59
63
  }
60
- else {
61
- return 0;
62
- }
64
+ return 0;
63
65
  },
64
66
 
65
67
  getClientHeight(el, margin) {
@@ -72,9 +74,8 @@ var DomHandler = {
72
74
  }
73
75
 
74
76
  return height;
75
- } else {
76
- return 0;
77
77
  }
78
+ return 0;
78
79
  },
79
80
 
80
81
  getViewport() {
@@ -85,56 +86,71 @@ var DomHandler = {
85
86
  w = win.innerWidth || e.clientWidth || g.clientWidth,
86
87
  h = win.innerHeight || e.clientHeight || g.clientHeight;
87
88
 
88
- return {width: w, height: h};
89
+ return { width: w, height: h };
89
90
  },
90
91
 
91
92
  getOffset(el) {
92
- var rect = el.getBoundingClientRect();
93
+ if (el) {
94
+ let rect = el.getBoundingClientRect();
95
+
96
+ return {
97
+ top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
98
+ left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),
99
+ };
100
+ }
93
101
 
94
102
  return {
95
- top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
96
- left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),
103
+ top: 'auto',
104
+ left: 'auto'
97
105
  };
98
106
  },
99
107
 
100
108
  index(element) {
101
- let children = element.parentNode.childNodes;
102
- let num = 0;
103
- for (var i = 0; i < children.length; i++) {
104
- if (children[i] === element) return num;
105
- if (children[i].nodeType === 1) num++;
109
+ if (element) {
110
+ let children = element.parentNode.childNodes;
111
+ let num = 0;
112
+ for (let i = 0; i < children.length; i++) {
113
+ if (children[i] === element) return num;
114
+ if (children[i].nodeType === 1) num++;
115
+ }
106
116
  }
107
117
  return -1;
108
118
  },
109
119
 
110
120
  addMultipleClasses(element, className) {
111
- if (element.classList) {
112
- let styles = className.split(' ');
113
- for (let i = 0; i < styles.length; i++) {
114
- element.classList.add(styles[i]);
115
- }
121
+ if (element && className) {
122
+ if (element.classList) {
123
+ let styles = className.split(' ');
124
+ for (let i = 0; i < styles.length; i++) {
125
+ element.classList.add(styles[i]);
126
+ }
116
127
 
117
- }
118
- else {
119
- let styles = className.split(' ');
120
- for (let i = 0; i < styles.length; i++) {
121
- element.className += ' ' + styles[i];
128
+ }
129
+ else {
130
+ let styles = className.split(' ');
131
+ for (let i = 0; i < styles.length; i++) {
132
+ element.className += ' ' + styles[i];
133
+ }
122
134
  }
123
135
  }
124
136
  },
125
137
 
126
138
  addClass(element, className) {
127
- if (element.classList)
128
- element.classList.add(className);
129
- else
130
- element.className += ' ' + className;
139
+ if (element && className) {
140
+ if (element.classList)
141
+ element.classList.add(className);
142
+ else
143
+ element.className += ' ' + className;
144
+ }
131
145
  },
132
146
 
133
147
  removeClass(element, className) {
134
- if (element.classList)
135
- element.classList.remove(className);
136
- else
137
- element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
148
+ if (element && className) {
149
+ if (element.classList)
150
+ element.classList.remove(className);
151
+ else
152
+ element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
153
+ }
138
154
  },
139
155
 
140
156
  hasClass(element, className) {
@@ -149,99 +165,112 @@ var DomHandler = {
149
165
  },
150
166
 
151
167
  find(element, selector) {
152
- return element.querySelectorAll(selector);
168
+ return element ? element.querySelectorAll(selector) : [];
153
169
  },
154
170
 
155
171
  findSingle(element, selector) {
156
- return element.querySelector(selector);
172
+ if (element) {
173
+ return element.querySelector(selector);
174
+ }
175
+ return null;
157
176
  },
158
177
 
159
178
  getHeight(el) {
160
- let height = el.offsetHeight;
161
- let style = getComputedStyle(el);
179
+ if (el) {
180
+ let height = el.offsetHeight;
181
+ let style = getComputedStyle(el);
162
182
 
163
- height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
183
+ height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
164
184
 
165
- return height;
185
+ return height;
186
+ }
187
+ return 0;
166
188
  },
167
189
 
168
190
  getWidth(el) {
169
- let width = el.offsetWidth;
170
- let style = getComputedStyle(el);
191
+ if (el) {
192
+ let width = el.offsetWidth;
193
+ let style = getComputedStyle(el);
171
194
 
172
- width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
195
+ width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
173
196
 
174
- return width;
197
+ return width;
198
+ }
199
+ return 0;
175
200
  },
176
201
 
177
202
  absolutePosition(element, target) {
178
- let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
179
- let elementOuterHeight = elementDimensions.height;
180
- let elementOuterWidth = elementDimensions.width;
181
- let targetOuterHeight = target.offsetHeight;
182
- let targetOuterWidth = target.offsetWidth;
183
- let targetOffset = target.getBoundingClientRect();
184
- let windowScrollTop = this.getWindowScrollTop();
185
- let windowScrollLeft = this.getWindowScrollLeft();
186
- let viewport = this.getViewport();
187
- let top, left;
188
-
189
- if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
190
- top = targetOffset.top + windowScrollTop - elementOuterHeight;
191
- element.style.transformOrigin = 'bottom';
192
-
193
- if (top < 0) {
194
- top = windowScrollTop;
203
+ if (element) {
204
+ let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
205
+ let elementOuterHeight = elementDimensions.height;
206
+ let elementOuterWidth = elementDimensions.width;
207
+ let targetOuterHeight = target.offsetHeight;
208
+ let targetOuterWidth = target.offsetWidth;
209
+ let targetOffset = target.getBoundingClientRect();
210
+ let windowScrollTop = this.getWindowScrollTop();
211
+ let windowScrollLeft = this.getWindowScrollLeft();
212
+ let viewport = this.getViewport();
213
+ let top, left;
214
+
215
+ if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
216
+ top = targetOffset.top + windowScrollTop - elementOuterHeight;
217
+ element.style.transformOrigin = 'bottom';
218
+
219
+ if (top < 0) {
220
+ top = windowScrollTop;
221
+ }
222
+ }
223
+ else {
224
+ top = targetOuterHeight + targetOffset.top + windowScrollTop;
225
+ element.style.transformOrigin = 'top';
195
226
  }
196
- }
197
- else {
198
- top = targetOuterHeight + targetOffset.top + windowScrollTop;
199
- element.style.transformOrigin = 'top';
200
- }
201
227
 
202
- if (targetOffset.left + elementOuterWidth > viewport.width)
203
- left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
204
- else
205
- left = targetOffset.left + windowScrollLeft;
228
+ if (targetOffset.left + elementOuterWidth > viewport.width)
229
+ left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
230
+ else
231
+ left = targetOffset.left + windowScrollLeft;
206
232
 
207
- element.style.top = top + 'px';
208
- element.style.left = left + 'px';
233
+ element.style.top = top + 'px';
234
+ element.style.left = left + 'px';
235
+ }
209
236
  },
210
237
 
211
238
  relativePosition(element, target) {
212
- let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
213
- const targetHeight = target.offsetHeight;
214
- const targetOffset = target.getBoundingClientRect();
215
- const viewport = this.getViewport();
216
- let top, left;
239
+ if (element) {
240
+ let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
241
+ const targetHeight = target.offsetHeight;
242
+ const targetOffset = target.getBoundingClientRect();
243
+ const viewport = this.getViewport();
244
+ let top, left;
245
+
246
+ if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {
247
+ top = -1 * (elementDimensions.height);
248
+ element.style.transformOrigin = 'bottom';
249
+ if (targetOffset.top + top < 0) {
250
+ top = -1 * targetOffset.top;
251
+ }
252
+ }
253
+ else {
254
+ top = targetHeight;
255
+ element.style.transformOrigin = 'top';
256
+ }
217
257
 
218
- if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {
219
- top = -1 * (elementDimensions.height);
220
- element.style.transformOrigin = 'bottom';
221
- if (targetOffset.top + top < 0) {
222
- top = -1 * targetOffset.top;
258
+ if (elementDimensions.width > viewport.width) {
259
+ // element wider then viewport and cannot fit on screen (align at left side of viewport)
260
+ left = targetOffset.left * -1;
261
+ }
262
+ else if ((targetOffset.left + elementDimensions.width) > viewport.width) {
263
+ // element wider then viewport but can be fit on screen (align at right side of viewport)
264
+ left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
265
+ }
266
+ else {
267
+ // element fits on screen (align with target)
268
+ left = 0;
223
269
  }
224
- }
225
- else {
226
- top = targetHeight;
227
- element.style.transformOrigin = 'top';
228
- }
229
270
 
230
- if (elementDimensions.width > viewport.width) {
231
- // element wider then viewport and cannot fit on screen (align at left side of viewport)
232
- left = targetOffset.left * -1;
233
- }
234
- else if ((targetOffset.left + elementDimensions.width) > viewport.width) {
235
- // element wider then viewport but can be fit on screen (align at right side of viewport)
236
- left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
237
- }
238
- else {
239
- // element fits on screen (align with target)
240
- left = 0;
271
+ element.style.top = top + 'px';
272
+ element.style.left = left + 'px';
241
273
  }
242
-
243
- element.style.top = top + 'px';
244
- element.style.left = left + 'px';
245
274
  },
246
275
 
247
276
  getParents(element, parents = []) {
@@ -281,71 +310,84 @@ var DomHandler = {
281
310
  },
282
311
 
283
312
  getHiddenElementOuterHeight(element) {
284
- element.style.visibility = 'hidden';
285
- element.style.display = 'block';
286
- let elementHeight = element.offsetHeight;
287
- element.style.display = 'none';
288
- element.style.visibility = 'visible';
313
+ if (element) {
314
+ element.style.visibility = 'hidden';
315
+ element.style.display = 'block';
316
+ let elementHeight = element.offsetHeight;
317
+ element.style.display = 'none';
318
+ element.style.visibility = 'visible';
289
319
 
290
- return elementHeight;
320
+ return elementHeight;
321
+ }
322
+ return 0;
291
323
  },
292
324
 
293
325
  getHiddenElementOuterWidth(element) {
294
- element.style.visibility = 'hidden';
295
- element.style.display = 'block';
296
- let elementWidth = element.offsetWidth;
297
- element.style.display = 'none';
298
- element.style.visibility = 'visible';
326
+ if (element) {
327
+ element.style.visibility = 'hidden';
328
+ element.style.display = 'block';
329
+ let elementWidth = element.offsetWidth;
330
+ element.style.display = 'none';
331
+ element.style.visibility = 'visible';
299
332
 
300
- return elementWidth;
333
+ return elementWidth;
334
+ }
335
+ return 0;
301
336
  },
302
337
 
303
338
  getHiddenElementDimensions(element) {
304
- var dimensions = {};
305
- element.style.visibility = 'hidden';
306
- element.style.display = 'block';
307
- dimensions.width = element.offsetWidth;
308
- dimensions.height = element.offsetHeight;
309
- element.style.display = 'none';
310
- element.style.visibility = 'visible';
339
+ if (element) {
340
+ let dimensions = {};
341
+ element.style.visibility = 'hidden';
342
+ element.style.display = 'block';
343
+ dimensions.width = element.offsetWidth;
344
+ dimensions.height = element.offsetHeight;
345
+ element.style.display = 'none';
346
+ element.style.visibility = 'visible';
311
347
 
312
- return dimensions;
348
+ return dimensions;
349
+ }
350
+ return 0;
313
351
  },
314
352
 
315
353
  fadeIn(element, duration) {
316
- element.style.opacity = 0;
354
+ if (element) {
355
+ element.style.opacity = 0;
317
356
 
318
- var last = +new Date();
319
- var opacity = 0;
320
- var tick = function () {
321
- opacity = +element.style.opacity + (new Date().getTime() - last) / duration;
322
- element.style.opacity = opacity;
323
- last = +new Date();
357
+ let last = +new Date();
358
+ let opacity = 0;
359
+ let tick = function () {
360
+ opacity = +element.style.opacity + (new Date().getTime() - last) / duration;
361
+ element.style.opacity = opacity;
362
+ last = +new Date();
324
363
 
325
- if (+opacity < 1) {
326
- (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
327
- }
328
- };
364
+ if (+opacity < 1) {
365
+ (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
366
+ }
367
+ };
329
368
 
330
- tick();
369
+ tick();
370
+ }
331
371
  },
332
372
 
333
373
  fadeOut(element, ms) {
334
- var opacity = 1,
335
- interval = 50,
336
- duration = ms,
337
- gap = interval / duration;
374
+ if (element) {
375
+ let opacity = 1,
376
+ interval = 50,
377
+ duration = ms,
378
+ gap = interval / duration;
338
379
 
339
- let fading = setInterval(() => {
340
- opacity -= gap;
380
+ let fading = setInterval(() => {
381
+ opacity -= gap;
341
382
 
342
- if (opacity <= 0) {
343
- opacity = 0;
344
- clearInterval(fading);
345
- }
383
+ if (opacity <= 0) {
384
+ opacity = 0;
385
+ clearInterval(fading);
386
+ }
346
387
 
347
- element.style.opacity = opacity;
348
- }, interval);
388
+ element.style.opacity = opacity;
389
+ }, interval);
390
+ }
349
391
  },
350
392
 
351
393
  getUserAgent() {
@@ -353,9 +395,9 @@ var DomHandler = {
353
395
  },
354
396
 
355
397
  appendChild(element, target) {
356
- if(this.isElement(target))
398
+ if (this.isElement(target))
357
399
  target.appendChild(element);
358
- else if(target.el && target.elElement)
400
+ else if (target.el && target.elElement)
359
401
  target.elElement.appendChild(element);
360
402
  else
361
403
  throw new Error('Cannot append ' + target + ' to ' + element);
@@ -382,14 +424,14 @@ var DomHandler = {
382
424
  },
383
425
 
384
426
  clearSelection() {
385
- if(window.getSelection) {
386
- if(window.getSelection().empty) {
427
+ if (window.getSelection) {
428
+ if (window.getSelection().empty) {
387
429
  window.getSelection().empty();
388
- } else if(window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
430
+ } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
389
431
  window.getSelection().removeAllRanges();
390
432
  }
391
433
  }
392
- else if(document['selection'] && document['selection'].empty) {
434
+ else if (document['selection'] && document['selection'].empty) {
393
435
  try {
394
436
  document['selection'].empty();
395
437
  } catch(error) {
@@ -399,7 +441,7 @@ var DomHandler = {
399
441
  },
400
442
 
401
443
  calculateScrollbarWidth() {
402
- if(this.calculatedScrollbarWidth != null)
444
+ if (this.calculatedScrollbarWidth != null)
403
445
  return this.calculatedScrollbarWidth;
404
446
 
405
447
  let scrollDiv = document.createElement("div");
@@ -415,7 +457,7 @@ var DomHandler = {
415
457
  },
416
458
 
417
459
  getBrowser() {
418
- if(!this.browser) {
460
+ if (!this.browser) {
419
461
  let matched = this.resolveUserAgent();
420
462
  this.browser = {};
421
463
 
@@ -450,7 +492,7 @@ var DomHandler = {
450
492
  },
451
493
 
452
494
  isVisible(element) {
453
- return element.offsetParent != null;
495
+ return element && element.offsetParent != null;
454
496
  },
455
497
 
456
498
  invokeElementMethod(element, methodName, args) {
@@ -461,13 +503,15 @@ var DomHandler = {
461
503
  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
462
504
  },
463
505
 
464
- getFocusableElements(element) {
465
- let focusableElements = this.find(element, `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
466
- [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
467
- input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
468
- textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
469
- [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])`
470
- );
506
+ getFocusableElements(element, selector = '') {
507
+ let focusableElements = this.find(element, `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
508
+ [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
509
+ input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
510
+ select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
511
+ textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
512
+ [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
513
+ [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector}`
514
+ );
471
515
 
472
516
  let visibleFocusableElements = [];
473
517
  for (let focusableElement of focusableElements) {
@@ -478,8 +522,8 @@ var DomHandler = {
478
522
  return visibleFocusableElements;
479
523
  },
480
524
 
481
- getFirstFocusableElement(element) {
482
- const focusableElements = this.getFocusableElements(element);
525
+ getFirstFocusableElement(element, selector) {
526
+ const focusableElements = this.getFocusableElements(element, selector);
483
527
  return focusableElements.length > 0 ? focusableElements[0] : null;
484
528
  },
485
529
 
@@ -793,8 +837,30 @@ var ObjectUtils = {
793
837
 
794
838
  isNotEmpty(value) {
795
839
  return !this.isEmpty(value);
796
- }
840
+ },
841
+
842
+ isPrintableCharacter(char = '') {
843
+ return this.isNotEmpty(char) && char.length === 1 && char.match(/\S| /);
844
+ },
845
+
846
+ /**
847
+ * Firefox-v103 does not currently support the "findLastIndex" method. It is stated that this method will be supported with Firefox-v104.
848
+ * https://caniuse.com/mdn-javascript_builtins_array_findlastindex
849
+ */
850
+ findLastIndex(arr, callback) {
851
+ let index = -1;
852
+
853
+ if (this.isNotEmpty(arr)) {
854
+ try {
855
+ index = arr.findLastIndex(callback);
856
+ }
857
+ catch {
858
+ index = arr.lastIndexOf([...arr].reverse().find(callback));
859
+ }
860
+ }
797
861
 
862
+ return index;
863
+ }
798
864
  };
799
865
 
800
866
  function handler() {