primevue 2.5.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/accordion/accordion.common.js +1 -1
  2. package/accordion/accordion.umd.js +1 -1
  3. package/accordiontab/accordiontab.common.js +28 -1
  4. package/accordiontab/accordiontab.umd.js +28 -1
  5. package/accordiontab/accordiontab.umd.min.js +1 -1
  6. package/api/Api.d.ts +296 -0
  7. package/api/Api.js +47 -0
  8. package/api/FilterMatchMode.js +26 -0
  9. package/api/FilterOperator.js +12 -0
  10. package/api/FilterService.js +260 -0
  11. package/api/PrimeIcons.js +246 -0
  12. package/api/ToastSeverity.js +14 -0
  13. package/api/api.common.js +4889 -0
  14. package/api/api.umd.js +4899 -0
  15. package/api/api.umd.min.js +1 -0
  16. package/api/demo.html +8 -0
  17. package/api/filtermatchmode.common.js +186 -0
  18. package/api/filtermatchmode.umd.js +196 -0
  19. package/api/filtermatchmode.umd.min.js +1 -0
  20. package/api/filteroperator.common.js +172 -0
  21. package/api/filteroperator.umd.js +182 -0
  22. package/api/filteroperator.umd.min.js +1 -0
  23. package/{utils/filterutils.common.js → api/filterservice.common.js} +207 -110
  24. package/{utils/filterutils.umd.js → api/filterservice.umd.js} +209 -112
  25. package/api/filterservice.umd.min.js +1 -0
  26. package/api/index.d.ts +1 -0
  27. package/api/index.js +2 -0
  28. package/api/primeicons.common.js +406 -0
  29. package/api/primeicons.umd.js +416 -0
  30. package/api/primeicons.umd.min.js +1 -0
  31. package/{confirmationservice/confirmationeventbus.common.js → api/toastseverity.common.js} +9 -9
  32. package/{confirmationservice/confirmationeventbus.umd.js → api/toastseverity.umd.js} +11 -11
  33. package/api/toastseverity.umd.min.js +1 -0
  34. package/autocomplete/AutoComplete.d.ts +1 -0
  35. package/autocomplete/AutoComplete.vue +8 -0
  36. package/autocomplete/autocomplete.common.js +61 -24
  37. package/autocomplete/autocomplete.umd.js +61 -24
  38. package/autocomplete/autocomplete.umd.min.js +1 -1
  39. package/avatar/avatar.common.js +1 -1
  40. package/avatar/avatar.umd.js +1 -1
  41. package/avatargroup/avatargroup.common.js +1 -1
  42. package/avatargroup/avatargroup.umd.js +1 -1
  43. package/badge/badge.common.js +1 -1
  44. package/badge/badge.umd.js +1 -1
  45. package/badgedirective/badgedirective.common.js +27 -0
  46. package/badgedirective/badgedirective.umd.js +27 -0
  47. package/badgedirective/badgedirective.umd.min.js +1 -1
  48. package/blockui/BlockUI.vue +6 -16
  49. package/blockui/blockui.common.js +38 -16
  50. package/blockui/blockui.umd.js +38 -16
  51. package/blockui/blockui.umd.min.js +1 -1
  52. package/breadcrumb/Breadcrumb.d.ts +1 -0
  53. package/breadcrumb/Breadcrumb.vue +6 -2
  54. package/breadcrumb/BreadcrumbItem.vue +30 -11
  55. package/breadcrumb/breadcrumb.common.js +44 -16
  56. package/breadcrumb/breadcrumb.umd.js +44 -16
  57. package/breadcrumb/breadcrumb.umd.min.js +1 -1
  58. package/breadcrumb/breadcrumbitem.common.js +34 -10
  59. package/breadcrumb/breadcrumbitem.umd.js +34 -10
  60. package/breadcrumb/breadcrumbitem.umd.min.js +1 -1
  61. package/button/button.common.js +28 -1
  62. package/button/button.umd.js +28 -1
  63. package/button/button.umd.min.js +1 -1
  64. package/calendar/Calendar.d.ts +5 -0
  65. package/calendar/Calendar.vue +339 -70
  66. package/calendar/calendar.common.js +400 -73
  67. package/calendar/calendar.umd.js +400 -73
  68. package/calendar/calendar.umd.min.js +1 -1
  69. package/card/card.common.js +1 -1
  70. package/card/card.umd.js +1 -1
  71. package/carousel/Carousel.vue +2 -2
  72. package/carousel/carousel.common.js +30 -3
  73. package/carousel/carousel.umd.js +30 -3
  74. package/carousel/carousel.umd.min.js +1 -1
  75. package/cascadeselect/CascadeSelect.d.ts +6 -4
  76. package/cascadeselect/CascadeSelect.vue +3 -1
  77. package/cascadeselect/cascadeselect.common.js +53 -21
  78. package/cascadeselect/cascadeselect.umd.js +53 -21
  79. package/cascadeselect/cascadeselect.umd.min.js +1 -1
  80. package/cascadeselect/cascadeselectsub.common.js +48 -18
  81. package/cascadeselect/cascadeselectsub.umd.js +48 -18
  82. package/cascadeselect/cascadeselectsub.umd.min.js +1 -1
  83. package/chart/Chart.vue +27 -11
  84. package/chart/chart.common.js +30 -12
  85. package/chart/chart.umd.js +30 -12
  86. package/chart/chart.umd.min.js +1 -1
  87. package/checkbox/Checkbox.css +1 -0
  88. package/checkbox/Checkbox.d.ts +2 -0
  89. package/checkbox/Checkbox.vue +11 -3
  90. package/checkbox/checkbox.common.js +38 -22
  91. package/checkbox/checkbox.umd.js +38 -22
  92. package/checkbox/checkbox.umd.min.js +1 -1
  93. package/chip/chip.common.js +1 -1
  94. package/chip/chip.umd.js +1 -1
  95. package/chips/chips.common.js +1 -1
  96. package/chips/chips.umd.js +1 -1
  97. package/colorpicker/colorpicker.common.js +28 -1
  98. package/colorpicker/colorpicker.umd.js +28 -1
  99. package/colorpicker/colorpicker.umd.min.js +1 -1
  100. package/column/Column.vue +72 -12
  101. package/column/column.common.js +71 -11
  102. package/column/column.umd.js +71 -11
  103. package/column/column.umd.min.js +1 -1
  104. package/columngroup/columngroup.common.js +1 -1
  105. package/columngroup/columngroup.umd.js +1 -1
  106. package/common/Common.css +13 -4
  107. package/config/PrimeVue.d.ts +24 -2
  108. package/config/PrimeVue.js +34 -4
  109. package/config/primevue.common.js +3584 -133
  110. package/config/primevue.umd.js +3584 -133
  111. package/config/primevue.umd.min.js +1 -1
  112. package/{confirmationservice → confirmationeventbus}/ConfirmationEventBus.js +3 -3
  113. package/confirmationeventbus/confirmationeventbus.common.js +1773 -0
  114. package/confirmationeventbus/confirmationeventbus.umd.js +1783 -0
  115. package/confirmationeventbus/confirmationeventbus.umd.min.js +1 -0
  116. package/confirmationeventbus/demo.html +8 -0
  117. package/confirmationeventbus/index.d.ts +1 -0
  118. package/confirmationeventbus/index.js +2 -0
  119. package/confirmationservice/ConfirmationService.js +1 -1
  120. package/confirmationservice/confirmationservice.common.js +1605 -6
  121. package/confirmationservice/confirmationservice.umd.js +1605 -6
  122. package/confirmationservice/confirmationservice.umd.min.js +1 -1
  123. package/confirmdialog/ConfirmDialog.vue +9 -3
  124. package/confirmdialog/confirmdialog.common.js +456 -44
  125. package/confirmdialog/confirmdialog.umd.js +456 -44
  126. package/confirmdialog/confirmdialog.umd.min.js +1 -1
  127. package/confirmpopup/ConfirmPopup.d.ts +4 -1
  128. package/confirmpopup/ConfirmPopup.vue +9 -6
  129. package/confirmpopup/confirmpopup.common.js +531 -13
  130. package/confirmpopup/confirmpopup.umd.js +531 -13
  131. package/confirmpopup/confirmpopup.umd.min.js +1 -1
  132. package/contextmenu/ContextMenu.d.ts +1 -0
  133. package/contextmenu/ContextMenu.vue +5 -1
  134. package/contextmenu/ContextMenuSub.vue +33 -13
  135. package/contextmenu/contextmenu.common.js +68 -14
  136. package/contextmenu/contextmenu.umd.js +68 -14
  137. package/contextmenu/contextmenu.umd.min.js +1 -1
  138. package/contextmenu/contextmenusub.common.js +58 -8
  139. package/contextmenu/contextmenusub.umd.js +58 -8
  140. package/contextmenu/contextmenusub.umd.min.js +1 -1
  141. package/datatable/BodyCell.vue +118 -34
  142. package/datatable/ColumnFilter.vue +558 -0
  143. package/datatable/ColumnSlot.vue +21 -1
  144. package/datatable/DataTable.d.ts +41 -15
  145. package/datatable/DataTable.vue +582 -391
  146. package/datatable/FooterCell.vue +82 -0
  147. package/datatable/HeaderCell.vue +246 -0
  148. package/datatable/TableBody.vue +92 -23
  149. package/datatable/TableFooter.vue +34 -18
  150. package/datatable/TableHeader.vue +79 -134
  151. package/datatable/bodycell.common.js +578 -56
  152. package/datatable/bodycell.umd.js +578 -56
  153. package/datatable/bodycell.umd.min.js +1 -1
  154. package/datatable/columnfilter.common.js +7610 -0
  155. package/datatable/columnfilter.umd.js +7620 -0
  156. package/datatable/columnfilter.umd.min.js +1 -0
  157. package/datatable/columnslot.common.js +21 -1
  158. package/datatable/columnslot.umd.js +21 -1
  159. package/datatable/columnslot.umd.min.js +1 -1
  160. package/datatable/datatable.common.js +4340 -1384
  161. package/datatable/datatable.umd.js +4340 -1384
  162. package/datatable/datatable.umd.min.js +1 -1
  163. package/datatable/demo.html +3 -4
  164. package/datatable/footercell.common.js +5453 -0
  165. package/datatable/footercell.umd.js +5463 -0
  166. package/datatable/footercell.umd.min.js +1 -0
  167. package/datatable/headercell.common.js +8058 -0
  168. package/datatable/headercell.umd.js +8068 -0
  169. package/datatable/headercell.umd.min.js +1 -0
  170. package/datatable/headercheckbox.common.js +1 -1
  171. package/datatable/headercheckbox.umd.js +1 -1
  172. package/datatable/rowcheckbox.common.js +1 -1
  173. package/datatable/rowcheckbox.umd.js +1 -1
  174. package/datatable/rowradiobutton.common.js +1 -1
  175. package/datatable/rowradiobutton.umd.js +1 -1
  176. package/datatable/tablebody.common.js +1066 -473
  177. package/datatable/tablebody.umd.js +1066 -473
  178. package/datatable/tablebody.umd.min.js +1 -1
  179. package/datatable/tablefooter.common.js +3785 -105
  180. package/datatable/tablefooter.umd.js +3785 -105
  181. package/datatable/tablefooter.umd.min.js +1 -1
  182. package/datatable/tableheader.common.js +6633 -2138
  183. package/datatable/tableheader.umd.js +6633 -2138
  184. package/datatable/tableheader.umd.min.js +1 -1
  185. package/datatable/tableloadingbody.common.js +22 -2
  186. package/datatable/tableloadingbody.umd.js +22 -2
  187. package/datatable/tableloadingbody.umd.min.js +1 -1
  188. package/dataview/DataView.d.ts +2 -2
  189. package/dataview/DataView.vue +10 -10
  190. package/dataview/dataview.common.js +1971 -80
  191. package/dataview/dataview.umd.js +1971 -80
  192. package/dataview/dataview.umd.min.js +1 -1
  193. package/dataviewlayoutoptions/dataviewlayoutoptions.common.js +1 -1
  194. package/dataviewlayoutoptions/dataviewlayoutoptions.umd.js +1 -1
  195. package/deferredcontent/deferredcontent.common.js +1 -1
  196. package/deferredcontent/deferredcontent.umd.js +1 -1
  197. package/dialog/Dialog.vue +35 -21
  198. package/dialog/dialog.common.js +62 -24
  199. package/dialog/dialog.umd.js +62 -24
  200. package/dialog/dialog.umd.min.js +1 -1
  201. package/divider/divider.common.js +1 -1
  202. package/divider/divider.umd.js +1 -1
  203. package/dock/Dock.d.ts +2 -0
  204. package/dock/Dock.vue +12 -2
  205. package/dock/DockSub.vue +45 -21
  206. package/dock/dock.common.js +44 -15
  207. package/dock/dock.umd.js +44 -15
  208. package/dock/dock.umd.min.js +1 -1
  209. package/dock/docksub.common.js +31 -7
  210. package/dock/docksub.umd.js +31 -7
  211. package/dock/docksub.umd.min.js +1 -1
  212. package/dropdown/Dropdown.d.ts +5 -3
  213. package/dropdown/Dropdown.vue +33 -5
  214. package/dropdown/dropdown.common.js +83 -24
  215. package/dropdown/dropdown.umd.js +83 -24
  216. package/dropdown/dropdown.umd.min.js +1 -1
  217. package/editor/editor.common.js +1 -1
  218. package/editor/editor.umd.js +1 -1
  219. package/fieldset/fieldset.common.js +28 -1
  220. package/fieldset/fieldset.umd.js +28 -1
  221. package/fieldset/fieldset.umd.min.js +1 -1
  222. package/fileupload/FileUpload.vue +5 -2
  223. package/fileupload/fileupload.common.js +55 -19
  224. package/fileupload/fileupload.umd.js +55 -19
  225. package/fileupload/fileupload.umd.min.js +1 -1
  226. package/fullcalendar/fullcalendar.common.js +342 -136
  227. package/fullcalendar/fullcalendar.umd.js +342 -136
  228. package/fullcalendar/fullcalendar.umd.min.js +4 -4
  229. package/galleria/Galleria.vue +3 -8
  230. package/galleria/GalleriaContent.vue +9 -0
  231. package/galleria/galleria.common.js +49 -17
  232. package/galleria/galleria.umd.js +49 -17
  233. package/galleria/galleria.umd.min.js +1 -1
  234. package/galleria/galleriacontent.common.js +40 -4
  235. package/galleria/galleriacontent.umd.js +40 -4
  236. package/galleria/galleriacontent.umd.min.js +1 -1
  237. package/galleria/galleriaitem.common.js +28 -1
  238. package/galleria/galleriaitem.umd.js +28 -1
  239. package/galleria/galleriaitem.umd.min.js +1 -1
  240. package/galleria/galleriathumbnails.common.js +28 -1
  241. package/galleria/galleriathumbnails.umd.js +28 -1
  242. package/galleria/galleriathumbnails.umd.min.js +1 -1
  243. package/imagepreview/ImagePreview.d.ts +10 -0
  244. package/imagepreview/ImagePreview.vue +205 -0
  245. package/imagepreview/demo.html +17 -0
  246. package/{datatable/scrollableview.common.js → imagepreview/imagepreview.common.js} +570 -463
  247. package/{datatable/scrollableview.umd.js → imagepreview/imagepreview.umd.js} +572 -465
  248. package/imagepreview/imagepreview.umd.min.js +1 -0
  249. package/imagepreview/index.d.ts +1 -0
  250. package/imagepreview/index.js +2 -0
  251. package/imagepreview/plugin.js +4 -0
  252. package/inlinemessage/inlinemessage.common.js +1 -1
  253. package/inlinemessage/inlinemessage.umd.js +1 -1
  254. package/inplace/inplace.common.js +29 -2
  255. package/inplace/inplace.umd.js +29 -2
  256. package/inplace/inplace.umd.min.js +1 -1
  257. package/inputmask/InputMask.vue +7 -5
  258. package/inputmask/inputmask.common.js +39 -12
  259. package/inputmask/inputmask.umd.js +39 -12
  260. package/inputmask/inputmask.umd.min.js +1 -1
  261. package/inputnumber/InputNumber.vue +183 -62
  262. package/inputnumber/inputnumber.common.js +249 -113
  263. package/inputnumber/inputnumber.umd.js +249 -113
  264. package/inputnumber/inputnumber.umd.min.js +1 -1
  265. package/inputswitch/InputSwitch.d.ts +2 -0
  266. package/inputswitch/InputSwitch.vue +15 -3
  267. package/inputswitch/inputswitch.common.js +17 -5
  268. package/inputswitch/inputswitch.umd.js +17 -5
  269. package/inputswitch/inputswitch.umd.min.js +1 -1
  270. package/inputtext/inputtext.common.js +3 -7
  271. package/inputtext/inputtext.umd.js +3 -7
  272. package/inputtext/inputtext.umd.min.js +1 -1
  273. package/knob/knob.common.js +1 -1
  274. package/knob/knob.umd.js +1 -1
  275. package/listbox/Listbox.d.ts +3 -3
  276. package/listbox/listbox.common.js +48 -18
  277. package/listbox/listbox.umd.js +48 -18
  278. package/listbox/listbox.umd.min.js +1 -1
  279. package/megamenu/MegaMenu.d.ts +6 -1
  280. package/megamenu/MegaMenu.vue +51 -22
  281. package/megamenu/megamenu.common.js +74 -10
  282. package/megamenu/megamenu.umd.js +74 -10
  283. package/megamenu/megamenu.umd.min.js +1 -1
  284. package/menu/Menu.d.ts +1 -0
  285. package/menu/Menu.vue +11 -4
  286. package/menu/Menuitem.vue +25 -11
  287. package/menu/menu.common.js +68 -17
  288. package/menu/menu.umd.js +68 -17
  289. package/menu/menu.umd.min.js +1 -1
  290. package/menu/menuitem.common.js +55 -11
  291. package/menu/menuitem.umd.js +55 -11
  292. package/menu/menuitem.umd.min.js +1 -1
  293. package/menubar/Menubar.d.ts +1 -0
  294. package/menubar/Menubar.vue +5 -1
  295. package/menubar/MenubarSub.vue +34 -14
  296. package/menubar/menubar.common.js +68 -14
  297. package/menubar/menubar.umd.js +68 -14
  298. package/menubar/menubar.umd.min.js +1 -1
  299. package/menubar/menubarsub.common.js +58 -8
  300. package/menubar/menubarsub.umd.js +58 -8
  301. package/menubar/menubarsub.umd.min.js +1 -1
  302. package/message/Message.d.ts +1 -0
  303. package/message/Message.vue +5 -1
  304. package/message/message.common.js +34 -3
  305. package/message/message.umd.js +34 -3
  306. package/message/message.umd.min.js +1 -1
  307. package/multiselect/MultiSelect.d.ts +4 -3
  308. package/multiselect/MultiSelect.vue +8 -1
  309. package/multiselect/multiselect.common.js +58 -22
  310. package/multiselect/multiselect.umd.js +58 -22
  311. package/multiselect/multiselect.umd.min.js +1 -1
  312. package/orderlist/OrderList.d.ts +2 -0
  313. package/orderlist/OrderList.vue +2 -0
  314. package/orderlist/orderlist.common.js +53 -21
  315. package/orderlist/orderlist.umd.js +53 -21
  316. package/orderlist/orderlist.umd.min.js +1 -1
  317. package/organizationchart/organizationchart.common.js +31 -8
  318. package/organizationchart/organizationchart.umd.js +31 -8
  319. package/organizationchart/organizationchart.umd.min.js +1 -1
  320. package/organizationchart/organizationchartnode.common.js +28 -1
  321. package/organizationchart/organizationchartnode.umd.js +28 -1
  322. package/organizationchart/organizationchartnode.umd.min.js +1 -1
  323. package/overlayeventbus/OverlayEventBus.js +14 -0
  324. package/overlayeventbus/demo.html +8 -0
  325. package/overlayeventbus/index.d.ts +1 -0
  326. package/overlayeventbus/index.js +2 -0
  327. package/overlayeventbus/overlayeventbus.common.js +1773 -0
  328. package/overlayeventbus/overlayeventbus.umd.js +1783 -0
  329. package/overlayeventbus/overlayeventbus.umd.min.js +1 -0
  330. package/overlaypanel/overlaypanel.common.js +28 -1
  331. package/overlaypanel/overlaypanel.umd.js +28 -1
  332. package/overlaypanel/overlaypanel.umd.min.js +1 -1
  333. package/package.json +5 -1
  334. package/paginator/CurrentPageReport.vue +6 -2
  335. package/paginator/JumpToPageDropdown.vue +33 -0
  336. package/paginator/JumpToPageInput.vue +25 -0
  337. package/paginator/Paginator.d.ts +2 -2
  338. package/paginator/Paginator.vue +24 -11
  339. package/paginator/RowsPerPageDropdown.vue +3 -2
  340. package/paginator/currentpagereport.common.js +7 -3
  341. package/paginator/currentpagereport.umd.js +7 -3
  342. package/paginator/currentpagereport.umd.min.js +1 -1
  343. package/paginator/demo.html +3 -3
  344. package/paginator/firstpagelink.common.js +28 -1
  345. package/paginator/firstpagelink.umd.js +28 -1
  346. package/paginator/firstpagelink.umd.min.js +1 -1
  347. package/paginator/jumptopagedropdown.common.js +6501 -0
  348. package/paginator/jumptopagedropdown.umd.js +6511 -0
  349. package/paginator/jumptopagedropdown.umd.min.js +1 -0
  350. package/paginator/jumptopageinput.common.js +7438 -0
  351. package/paginator/jumptopageinput.umd.js +7448 -0
  352. package/paginator/jumptopageinput.umd.min.js +1 -0
  353. package/paginator/lastpagelink.common.js +28 -1
  354. package/paginator/lastpagelink.umd.js +28 -1
  355. package/paginator/lastpagelink.umd.min.js +1 -1
  356. package/paginator/nextpagelink.common.js +28 -1
  357. package/paginator/nextpagelink.umd.js +28 -1
  358. package/paginator/nextpagelink.umd.min.js +1 -1
  359. package/paginator/pagelinks.common.js +28 -1
  360. package/paginator/pagelinks.umd.js +28 -1
  361. package/paginator/pagelinks.umd.min.js +1 -1
  362. package/paginator/paginator.common.js +2277 -119
  363. package/paginator/paginator.umd.js +2277 -119
  364. package/paginator/paginator.umd.min.js +1 -1
  365. package/paginator/prevpagelink.common.js +28 -1
  366. package/paginator/prevpagelink.umd.js +28 -1
  367. package/paginator/prevpagelink.umd.min.js +1 -1
  368. package/paginator/rowsperpagedropdown.common.js +91 -31
  369. package/paginator/rowsperpagedropdown.umd.js +91 -31
  370. package/paginator/rowsperpagedropdown.umd.min.js +1 -1
  371. package/panel/Panel.d.ts +1 -0
  372. package/panel/Panel.vue +1 -1
  373. package/panel/panel.common.js +29 -2
  374. package/panel/panel.umd.js +29 -2
  375. package/panel/panel.umd.min.js +1 -1
  376. package/panelmenu/PanelMenu.d.ts +1 -0
  377. package/panelmenu/PanelMenu.vue +32 -6
  378. package/panelmenu/PanelMenuSub.vue +32 -13
  379. package/panelmenu/panelmenu.common.js +69 -16
  380. package/panelmenu/panelmenu.umd.js +69 -16
  381. package/panelmenu/panelmenu.umd.min.js +1 -1
  382. package/panelmenu/panelmenusub.common.js +29 -7
  383. package/panelmenu/panelmenusub.umd.js +29 -7
  384. package/panelmenu/panelmenusub.umd.min.js +1 -1
  385. package/password/password.common.js +31 -8
  386. package/password/password.umd.js +31 -8
  387. package/password/password.umd.min.js +1 -1
  388. package/picklist/PickList.d.ts +8 -0
  389. package/picklist/PickList.vue +10 -4
  390. package/picklist/picklist.common.js +57 -21
  391. package/picklist/picklist.umd.js +57 -21
  392. package/picklist/picklist.umd.min.js +1 -1
  393. package/progressbar/ProgressBar.vue +18 -14
  394. package/progressbar/progressbar.common.js +7 -5
  395. package/progressbar/progressbar.umd.js +7 -5
  396. package/progressbar/progressbar.umd.min.js +1 -1
  397. package/progressspinner/progressspinner.common.js +1 -1
  398. package/progressspinner/progressspinner.umd.js +1 -1
  399. package/radiobutton/radiobutton.common.js +26 -18
  400. package/radiobutton/radiobutton.umd.js +26 -18
  401. package/radiobutton/radiobutton.umd.min.js +1 -1
  402. package/rating/Rating.vue +1 -1
  403. package/rating/rating.common.js +3 -3
  404. package/rating/rating.umd.js +3 -3
  405. package/rating/rating.umd.min.js +1 -1
  406. package/resources/primevue.css +15 -4
  407. package/resources/primevue.min.css +1 -1
  408. package/resources/themes/arya-blue/theme.css +178 -42
  409. package/resources/themes/arya-green/theme.css +178 -42
  410. package/resources/themes/arya-orange/theme.css +178 -42
  411. package/resources/themes/arya-purple/theme.css +178 -42
  412. package/resources/themes/bootstrap4-dark-blue/theme.css +175 -46
  413. package/resources/themes/bootstrap4-dark-purple/theme.css +175 -46
  414. package/resources/themes/bootstrap4-light-blue/theme.css +175 -46
  415. package/resources/themes/bootstrap4-light-purple/theme.css +175 -46
  416. package/resources/themes/fluent-light/theme.css +182 -46
  417. package/resources/themes/lara-dark-blue/fonts/Inter-Bold.woff +0 -0
  418. package/resources/themes/lara-dark-blue/fonts/Inter-Bold.woff2 +0 -0
  419. package/resources/themes/lara-dark-blue/fonts/Inter-Light.woff +0 -0
  420. package/resources/themes/lara-dark-blue/fonts/Inter-Light.woff2 +0 -0
  421. package/resources/themes/lara-dark-blue/fonts/Inter-Medium.woff +0 -0
  422. package/resources/themes/lara-dark-blue/fonts/Inter-Medium.woff2 +0 -0
  423. package/resources/themes/lara-dark-blue/fonts/Inter-Regular.woff +0 -0
  424. package/resources/themes/lara-dark-blue/fonts/Inter-Regular.woff2 +0 -0
  425. package/resources/themes/lara-dark-blue/fonts/Inter-SemiBold.woff +0 -0
  426. package/resources/themes/lara-dark-blue/fonts/Inter-SemiBold.woff2 +0 -0
  427. package/resources/themes/lara-dark-blue/theme.css +5418 -0
  428. package/resources/themes/lara-dark-indigo/fonts/Inter-Bold.woff +0 -0
  429. package/resources/themes/lara-dark-indigo/fonts/Inter-Bold.woff2 +0 -0
  430. package/resources/themes/lara-dark-indigo/fonts/Inter-Light.woff +0 -0
  431. package/resources/themes/lara-dark-indigo/fonts/Inter-Light.woff2 +0 -0
  432. package/resources/themes/lara-dark-indigo/fonts/Inter-Medium.woff +0 -0
  433. package/resources/themes/lara-dark-indigo/fonts/Inter-Medium.woff2 +0 -0
  434. package/resources/themes/lara-dark-indigo/fonts/Inter-Regular.woff +0 -0
  435. package/resources/themes/lara-dark-indigo/fonts/Inter-Regular.woff2 +0 -0
  436. package/resources/themes/lara-dark-indigo/fonts/Inter-SemiBold.woff +0 -0
  437. package/resources/themes/lara-dark-indigo/fonts/Inter-SemiBold.woff2 +0 -0
  438. package/resources/themes/lara-dark-indigo/theme.css +5418 -0
  439. package/resources/themes/lara-dark-purple/fonts/Inter-Bold.woff +0 -0
  440. package/resources/themes/lara-dark-purple/fonts/Inter-Bold.woff2 +0 -0
  441. package/resources/themes/lara-dark-purple/fonts/Inter-Light.woff +0 -0
  442. package/resources/themes/lara-dark-purple/fonts/Inter-Light.woff2 +0 -0
  443. package/resources/themes/lara-dark-purple/fonts/Inter-Medium.woff +0 -0
  444. package/resources/themes/lara-dark-purple/fonts/Inter-Medium.woff2 +0 -0
  445. package/resources/themes/lara-dark-purple/fonts/Inter-Regular.woff +0 -0
  446. package/resources/themes/lara-dark-purple/fonts/Inter-Regular.woff2 +0 -0
  447. package/resources/themes/lara-dark-purple/fonts/Inter-SemiBold.woff +0 -0
  448. package/resources/themes/lara-dark-purple/fonts/Inter-SemiBold.woff2 +0 -0
  449. package/resources/themes/lara-dark-purple/theme.css +5418 -0
  450. package/resources/themes/lara-dark-teal/fonts/Inter-Bold.woff +0 -0
  451. package/resources/themes/lara-dark-teal/fonts/Inter-Bold.woff2 +0 -0
  452. package/resources/themes/lara-dark-teal/fonts/Inter-Light.woff +0 -0
  453. package/resources/themes/lara-dark-teal/fonts/Inter-Light.woff2 +0 -0
  454. package/resources/themes/lara-dark-teal/fonts/Inter-Medium.woff +0 -0
  455. package/resources/themes/lara-dark-teal/fonts/Inter-Medium.woff2 +0 -0
  456. package/resources/themes/lara-dark-teal/fonts/Inter-Regular.woff +0 -0
  457. package/resources/themes/lara-dark-teal/fonts/Inter-Regular.woff2 +0 -0
  458. package/resources/themes/lara-dark-teal/fonts/Inter-SemiBold.woff +0 -0
  459. package/resources/themes/lara-dark-teal/fonts/Inter-SemiBold.woff2 +0 -0
  460. package/resources/themes/lara-dark-teal/theme.css +5418 -0
  461. package/resources/themes/lara-light-blue/fonts/Inter-Bold.woff +0 -0
  462. package/resources/themes/lara-light-blue/fonts/Inter-Bold.woff2 +0 -0
  463. package/resources/themes/lara-light-blue/fonts/Inter-Light.woff +0 -0
  464. package/resources/themes/lara-light-blue/fonts/Inter-Light.woff2 +0 -0
  465. package/resources/themes/lara-light-blue/fonts/Inter-Medium.woff +0 -0
  466. package/resources/themes/lara-light-blue/fonts/Inter-Medium.woff2 +0 -0
  467. package/resources/themes/lara-light-blue/fonts/Inter-Regular.woff +0 -0
  468. package/resources/themes/lara-light-blue/fonts/Inter-Regular.woff2 +0 -0
  469. package/resources/themes/lara-light-blue/fonts/Inter-SemiBold.woff +0 -0
  470. package/resources/themes/lara-light-blue/fonts/Inter-SemiBold.woff2 +0 -0
  471. package/resources/themes/lara-light-blue/theme.css +5418 -0
  472. package/resources/themes/lara-light-indigo/fonts/Inter-Bold.woff +0 -0
  473. package/resources/themes/lara-light-indigo/fonts/Inter-Bold.woff2 +0 -0
  474. package/resources/themes/lara-light-indigo/fonts/Inter-Light.woff +0 -0
  475. package/resources/themes/lara-light-indigo/fonts/Inter-Light.woff2 +0 -0
  476. package/resources/themes/lara-light-indigo/fonts/Inter-Medium.woff +0 -0
  477. package/resources/themes/lara-light-indigo/fonts/Inter-Medium.woff2 +0 -0
  478. package/resources/themes/lara-light-indigo/fonts/Inter-Regular.woff +0 -0
  479. package/resources/themes/lara-light-indigo/fonts/Inter-Regular.woff2 +0 -0
  480. package/resources/themes/lara-light-indigo/fonts/Inter-SemiBold.woff +0 -0
  481. package/resources/themes/lara-light-indigo/fonts/Inter-SemiBold.woff2 +0 -0
  482. package/resources/themes/lara-light-indigo/theme.css +5418 -0
  483. package/resources/themes/lara-light-purple/fonts/Inter-Bold.woff +0 -0
  484. package/resources/themes/lara-light-purple/fonts/Inter-Bold.woff2 +0 -0
  485. package/resources/themes/lara-light-purple/fonts/Inter-Light.woff +0 -0
  486. package/resources/themes/lara-light-purple/fonts/Inter-Light.woff2 +0 -0
  487. package/resources/themes/lara-light-purple/fonts/Inter-Medium.woff +0 -0
  488. package/resources/themes/lara-light-purple/fonts/Inter-Medium.woff2 +0 -0
  489. package/resources/themes/lara-light-purple/fonts/Inter-Regular.woff +0 -0
  490. package/resources/themes/lara-light-purple/fonts/Inter-Regular.woff2 +0 -0
  491. package/resources/themes/lara-light-purple/fonts/Inter-SemiBold.woff +0 -0
  492. package/resources/themes/lara-light-purple/fonts/Inter-SemiBold.woff2 +0 -0
  493. package/resources/themes/lara-light-purple/theme.css +5418 -0
  494. package/resources/themes/lara-light-teal/fonts/Inter-Bold.woff +0 -0
  495. package/resources/themes/lara-light-teal/fonts/Inter-Bold.woff2 +0 -0
  496. package/resources/themes/lara-light-teal/fonts/Inter-Light.woff +0 -0
  497. package/resources/themes/lara-light-teal/fonts/Inter-Light.woff2 +0 -0
  498. package/resources/themes/lara-light-teal/fonts/Inter-Medium.woff +0 -0
  499. package/resources/themes/lara-light-teal/fonts/Inter-Medium.woff2 +0 -0
  500. package/resources/themes/lara-light-teal/fonts/Inter-Regular.woff +0 -0
  501. package/resources/themes/lara-light-teal/fonts/Inter-Regular.woff2 +0 -0
  502. package/resources/themes/lara-light-teal/fonts/Inter-SemiBold.woff +0 -0
  503. package/resources/themes/lara-light-teal/fonts/Inter-SemiBold.woff2 +0 -0
  504. package/resources/themes/lara-light-teal/theme.css +5418 -0
  505. package/resources/themes/luna-amber/theme.css +175 -46
  506. package/resources/themes/luna-blue/theme.css +175 -46
  507. package/resources/themes/luna-green/theme.css +175 -46
  508. package/resources/themes/luna-pink/theme.css +175 -46
  509. package/resources/themes/md-dark-deeppurple/theme.css +379 -87
  510. package/resources/themes/md-dark-indigo/theme.css +379 -87
  511. package/resources/themes/md-light-deeppurple/theme.css +379 -87
  512. package/resources/themes/md-light-indigo/theme.css +379 -87
  513. package/resources/themes/mdc-dark-deeppurple/theme.css +379 -87
  514. package/resources/themes/mdc-dark-indigo/theme.css +379 -87
  515. package/resources/themes/mdc-light-deeppurple/theme.css +379 -87
  516. package/resources/themes/mdc-light-indigo/theme.css +379 -87
  517. package/resources/themes/nova/theme.css +175 -46
  518. package/resources/themes/nova-accent/theme.css +175 -46
  519. package/resources/themes/nova-alt/theme.css +175 -46
  520. package/resources/themes/nova-vue/theme.css +175 -46
  521. package/resources/themes/rhea/theme.css +175 -46
  522. package/resources/themes/saga-blue/theme.css +178 -42
  523. package/resources/themes/saga-green/theme.css +178 -42
  524. package/resources/themes/saga-orange/theme.css +178 -42
  525. package/resources/themes/saga-purple/theme.css +178 -42
  526. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff +0 -0
  527. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff2 +0 -0
  528. package/resources/themes/tailwind-light/fonts/Inter-Light.woff +0 -0
  529. package/resources/themes/tailwind-light/fonts/Inter-Light.woff2 +0 -0
  530. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff +0 -0
  531. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff2 +0 -0
  532. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff +0 -0
  533. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff2 +0 -0
  534. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff +0 -0
  535. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff2 +0 -0
  536. package/resources/themes/tailwind-light/theme.css +5493 -0
  537. package/resources/themes/vela-blue/theme.css +178 -42
  538. package/resources/themes/vela-green/theme.css +178 -42
  539. package/resources/themes/vela-orange/theme.css +178 -42
  540. package/resources/themes/vela-purple/theme.css +178 -42
  541. package/ripple/ripple.common.js +27 -0
  542. package/ripple/ripple.umd.js +27 -0
  543. package/ripple/ripple.umd.min.js +1 -1
  544. package/row/row.common.js +1 -1
  545. package/row/row.umd.js +1 -1
  546. package/scrollpanel/scrollpanel.common.js +28 -1
  547. package/scrollpanel/scrollpanel.umd.js +28 -1
  548. package/scrollpanel/scrollpanel.umd.min.js +1 -1
  549. package/scrolltop/scrolltop.common.js +28 -1
  550. package/scrolltop/scrolltop.umd.js +28 -1
  551. package/scrolltop/scrolltop.umd.min.js +1 -1
  552. package/selectbutton/SelectButton.d.ts +3 -3
  553. package/selectbutton/SelectButton.vue +6 -1
  554. package/selectbutton/selectbutton.common.js +55 -20
  555. package/selectbutton/selectbutton.umd.js +55 -20
  556. package/selectbutton/selectbutton.umd.min.js +1 -1
  557. package/sidebar/Sidebar.vue +3 -16
  558. package/sidebar/sidebar.common.js +37 -15
  559. package/sidebar/sidebar.umd.js +37 -15
  560. package/sidebar/sidebar.umd.min.js +1 -1
  561. package/skeleton/skeleton.common.js +1 -1
  562. package/skeleton/skeleton.umd.js +1 -1
  563. package/slider/Slider.vue +20 -12
  564. package/slider/slider.common.js +41 -9
  565. package/slider/slider.umd.js +41 -9
  566. package/slider/slider.umd.min.js +1 -1
  567. package/speeddial/SpeedDial.d.ts +1 -0
  568. package/speeddial/SpeedDial.vue +10 -9
  569. package/speeddial/speeddial.common.js +40 -16
  570. package/speeddial/speeddial.umd.js +40 -16
  571. package/speeddial/speeddial.umd.min.js +1 -1
  572. package/splitbutton/splitbutton.common.js +73 -22
  573. package/splitbutton/splitbutton.umd.js +73 -22
  574. package/splitbutton/splitbutton.umd.min.js +1 -1
  575. package/splitter/splitter.common.js +27 -0
  576. package/splitter/splitter.umd.js +27 -0
  577. package/splitter/splitter.umd.min.js +1 -1
  578. package/steps/Steps.d.ts +1 -0
  579. package/steps/Steps.vue +30 -8
  580. package/steps/steps.common.js +33 -6
  581. package/steps/steps.umd.js +33 -6
  582. package/steps/steps.umd.min.js +1 -1
  583. package/styleclass/StyleClass.js +4 -1
  584. package/styleclass/styleclass.common.js +31 -1
  585. package/styleclass/styleclass.umd.js +31 -1
  586. package/styleclass/styleclass.umd.min.js +1 -1
  587. package/tabmenu/TabMenu.d.ts +1 -0
  588. package/tabmenu/TabMenu.vue +39 -10
  589. package/tabmenu/tabmenu.common.js +192 -8
  590. package/tabmenu/tabmenu.umd.js +192 -8
  591. package/tabmenu/tabmenu.umd.min.js +1 -1
  592. package/tabpanel/tabpanel.common.js +1 -1
  593. package/tabpanel/tabpanel.umd.js +1 -1
  594. package/tabview/TabView.d.ts +1 -0
  595. package/tabview/TabView.vue +111 -11
  596. package/tabview/tabview.common.js +124 -22
  597. package/tabview/tabview.umd.js +124 -22
  598. package/tabview/tabview.umd.min.js +1 -1
  599. package/tag/tag.common.js +1 -1
  600. package/tag/tag.umd.js +1 -1
  601. package/terminal/terminal.common.js +1 -1
  602. package/terminal/terminal.umd.js +1 -1
  603. package/textarea/textarea.common.js +3 -7
  604. package/textarea/textarea.umd.js +3 -7
  605. package/textarea/textarea.umd.min.js +1 -1
  606. package/tieredmenu/TieredMenu.d.ts +1 -0
  607. package/tieredmenu/TieredMenu.vue +5 -1
  608. package/tieredmenu/TieredMenuSub.vue +30 -14
  609. package/tieredmenu/demo.html +3 -4
  610. package/tieredmenu/tieredmenu.common.js +63 -13
  611. package/tieredmenu/tieredmenu.umd.js +63 -13
  612. package/tieredmenu/tieredmenu.umd.min.js +1 -1
  613. package/tieredmenu/tieredmenusub.common.js +53 -7
  614. package/tieredmenu/tieredmenusub.umd.js +53 -7
  615. package/tieredmenu/tieredmenusub.umd.min.js +1 -1
  616. package/timeline/timeline.common.js +26 -18
  617. package/timeline/timeline.umd.js +26 -18
  618. package/timeline/timeline.umd.min.js +1 -1
  619. package/toast/Toast.d.ts +4 -1
  620. package/toast/Toast.vue +1 -1
  621. package/toast/toast.common.js +30 -5
  622. package/toast/toast.umd.js +30 -5
  623. package/toast/toast.umd.min.js +1 -1
  624. package/toast/toastmessage.common.js +28 -1
  625. package/toast/toastmessage.umd.js +28 -1
  626. package/toast/toastmessage.umd.min.js +1 -1
  627. package/togglebutton/togglebutton.common.js +28 -1
  628. package/togglebutton/togglebutton.umd.js +28 -1
  629. package/togglebutton/togglebutton.umd.min.js +1 -1
  630. package/toolbar/Toolbar.d.ts +1 -1
  631. package/toolbar/Toolbar.vue +2 -2
  632. package/toolbar/toolbar.common.js +3 -3
  633. package/toolbar/toolbar.umd.js +3 -3
  634. package/toolbar/toolbar.umd.min.js +1 -1
  635. package/tooltip/Tooltip.css +1 -0
  636. package/tooltip/Tooltip.js +37 -2
  637. package/tooltip/tooltip.common.js +1711 -24
  638. package/tooltip/tooltip.umd.js +1711 -24
  639. package/tooltip/tooltip.umd.min.js +1 -1
  640. package/tree/TreeNode.vue +5 -1
  641. package/tree/tree.common.js +63 -31
  642. package/tree/tree.umd.js +63 -31
  643. package/tree/tree.umd.min.js +1 -1
  644. package/tree/treenode.common.js +36 -9
  645. package/tree/treenode.umd.js +36 -9
  646. package/tree/treenode.umd.min.js +1 -1
  647. package/treetable/BodyCell.vue +162 -0
  648. package/treetable/FooterCell.vue +81 -0
  649. package/treetable/HeaderCell.vue +183 -0
  650. package/treetable/TreeTable.d.ts +2 -2
  651. package/treetable/TreeTable.vue +93 -116
  652. package/treetable/bodycell.common.js +5596 -0
  653. package/treetable/bodycell.umd.js +5606 -0
  654. package/treetable/bodycell.umd.min.js +1 -0
  655. package/treetable/demo.html +3 -3
  656. package/treetable/footercell.common.js +5300 -0
  657. package/treetable/footercell.umd.js +5310 -0
  658. package/treetable/footercell.umd.min.js +1 -0
  659. package/treetable/headercell.common.js +5529 -0
  660. package/treetable/headercell.umd.js +5539 -0
  661. package/treetable/headercell.umd.min.js +1 -0
  662. package/treetable/treetable.common.js +3801 -1562
  663. package/treetable/treetable.umd.js +3801 -1562
  664. package/treetable/treetable.umd.min.js +1 -1
  665. package/treetable/treetablerow.common.js +50 -21
  666. package/treetable/treetablerow.umd.js +50 -21
  667. package/treetable/treetablerow.umd.min.js +1 -1
  668. package/treetable/treetablerowloader.common.js +52 -24
  669. package/treetable/treetablerowloader.umd.js +52 -24
  670. package/treetable/treetablerowloader.umd.min.js +1 -1
  671. package/tristatecheckbox/tristatecheckbox.common.js +1 -1
  672. package/tristatecheckbox/tristatecheckbox.umd.js +1 -1
  673. package/utils/ConnectedOverlayScrollHandler.js +1 -1
  674. package/utils/DomHandler.js +23 -1
  675. package/utils/EventBus.js +33 -0
  676. package/utils/ObjectUtils.js +15 -2
  677. package/utils/Utils.d.ts +73 -0
  678. package/utils/Utils.js +47 -0
  679. package/utils/connectedoverlayscrollhandler.common.js +27 -0
  680. package/utils/connectedoverlayscrollhandler.umd.js +27 -0
  681. package/utils/connectedoverlayscrollhandler.umd.min.js +1 -1
  682. package/utils/demo.html +3 -3
  683. package/utils/domhandler.common.js +27 -0
  684. package/utils/domhandler.umd.js +27 -0
  685. package/utils/domhandler.umd.min.js +1 -1
  686. package/utils/eventbus.common.js +1770 -0
  687. package/utils/eventbus.umd.js +1780 -0
  688. package/utils/eventbus.umd.min.js +1 -0
  689. package/utils/index.d.ts +1 -0
  690. package/utils/index.js +2 -0
  691. package/utils/objectutils.common.js +25 -17
  692. package/utils/objectutils.umd.js +25 -17
  693. package/utils/objectutils.umd.min.js +1 -1
  694. package/utils/utils.common.js +5481 -0
  695. package/utils/utils.umd.js +5491 -0
  696. package/utils/utils.umd.min.js +1 -0
  697. package/vetur-attributes.json +148 -20
  698. package/vetur-tags.json +57 -20
  699. package/web-types.json +477 -33
  700. package/confirmationservice/confirmationeventbus.umd.min.js +0 -1
  701. package/datatable/ScrollableView.vue +0 -223
  702. package/datatable/scrollableview.umd.min.js +0 -1
  703. package/utils/FilterUtils.js +0 -176
  704. package/utils/filterutils.umd.min.js +0 -1
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div :class="containerClass">
2
+ <div :class="containerClass" data-scrollselectors=".p-datatable-wrapper">
3
3
  <slot></slot>
4
4
  <div class="p-datatable-loading-overlay p-component-overlay" v-if="loading">
5
5
  <i :class="loadingIconClass"></i>
@@ -7,117 +7,53 @@
7
7
  <div class="p-datatable-header" v-if="$scopedSlots.header">
8
8
  <slot name="header"></slot>
9
9
  </div>
10
- <DTPaginator v-if="paginatorTop" :rows="d_rows" :first="d_first" :totalRecords="totalRecordsLength" :pageLinkSize="pageLinkSize" :template="paginatorTemplate" :rowsPerPageOptions="rowsPerPageOptions"
10
+ <DTPaginator v-if="paginatorTop" :rows="d_rows" :first="lazy ? 0 : d_first" :totalRecords="totalRecordsLength" :pageLinkSize="pageLinkSize" :template="paginatorTemplate" :rowsPerPageOptions="rowsPerPageOptions"
11
11
  :currentPageReportTemplate="currentPageReportTemplate" class="p-paginator-top" @page="onPage($event)" :alwaysShow="alwaysShowPaginator">
12
- <template #left v-if="$scopedSlots.paginatorLeft">
13
- <slot name="paginatorLeft"></slot>
12
+ <template #start v-if="$scopedSlots.paginatorstart">
13
+ <slot name="paginatorstart"></slot>
14
14
  </template>
15
- <template #right v-if="$scopedSlots.paginatorRight">
16
- <slot name="paginatorRight"></slot>
15
+ <template #end v-if="$scopedSlots.paginatorend">
16
+ <slot name="paginatorend"></slot>
17
17
  </template>
18
18
  </DTPaginator>
19
- <div class="p-datatable-wrapper" v-if="!scrollable">
20
- <table ref="table" role="grid">
19
+ <div class="p-datatable-wrapper" :style="{maxHeight: scrollHeight}">
20
+ <table ref="table" role="table" :class="[tableClass, 'p-datatable-table']" :style="tableStyle">
21
21
  <DTTableHeader :columnGroup="headerColumnGroup" :columns="columns" :rowGroupMode="rowGroupMode"
22
- :groupRowsBy="groupRowsBy" :resizableColumns="resizableColumns" :allRowsSelected="allRowsSelected" :empty="empty"
23
- :sortMode="sortMode" :sortField="d_sortField" :sortOrder="d_sortOrder" :multiSortMeta="d_multiSortMeta"
24
- @column-click="onColumnHeaderClick($event)" @column-mousedown="onColumnHeaderMouseDown($event)"
22
+ :groupRowsBy="groupRowsBy" :groupRowSortField="groupRowSortField" :resizableColumns="resizableColumns" :allRowsSelected="allRowsSelected" :empty="empty"
23
+ :sortMode="sortMode" :sortField="d_sortField" :sortOrder="d_sortOrder" :multiSortMeta="d_multiSortMeta" :filters="d_filters" :filtersStore="filters" :filterDisplay="filterDisplay"
24
+ @column-click="onColumnHeaderClick($event)" @column-mousedown="onColumnHeaderMouseDown($event)" @filter-change="onFilterChange" @filter-apply="onFilterApply"
25
25
  @column-dragstart="onColumnHeaderDragStart($event)" @column-dragover="onColumnHeaderDragOver($event)" @column-dragleave="onColumnHeaderDragLeave($event)" @column-drop="onColumnHeaderDrop($event)"
26
26
  @column-resizestart="onColumnResizeStart($event)" @checkbox-change="toggleRowsWithCheckbox($event)" />
27
+ <DTTableBody v-if="frozenValue" :value="frozenValue" :frozenRow="true" class="p-datatable-frozen-tbody" :columns="columns" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
28
+ :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :rowStyle="rowStyle" :editMode="editMode" :compareSelectionBy="compareSelectionBy" :scrollable="scrollable"
29
+ :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
30
+ :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading" :responsiveLayout="responsiveLayout"
31
+ @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-dblclick="onRowDblClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
32
+ @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
33
+ @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
34
+ @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
35
+ @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"
36
+ :editingMeta="d_editingMeta" @editing-meta-change="onEditingMetaChange" />
27
37
  <DTTableBody :value="dataToRender" :columns="columns" :empty="empty" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
28
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :editMode="editMode" :compareSelectionBy="compareSelectionBy"
38
+ :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :rowStyle="rowStyle" :editMode="editMode" :compareSelectionBy="compareSelectionBy" :scrollable="scrollable"
29
39
  :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
30
- :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading"
40
+ :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading" :responsiveLayout="responsiveLayout"
31
41
  @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-dblclick="onRowDblClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
32
42
  @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
33
43
  @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
34
44
  @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
35
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
45
+ @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"
46
+ :editingMeta="d_editingMeta" @editing-meta-change="onEditingMetaChange" />
36
47
  <DTTableFooter :columnGroup="footerColumnGroup" :columns="columns" />
37
48
  </table>
38
49
  </div>
39
- <div class="p-datatable-scrollable-wrapper" v-else>
40
- <DTScrollableView v-if="hasFrozenColumns" :scrollHeight="scrollHeight" :columns="frozenColumns" :frozenWidth="frozenWidth" :frozen="true"
41
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy">
42
- <template #header>
43
- <DTTableHeader :columnGroup="frozenHeaderColumnGroup" :columns="frozenColumns" :rowGroupMode="rowGroupMode"
44
- :groupRowsBy="groupRowsBy" :resizableColumns="resizableColumns" :allRowsSelected="allRowsSelected" :empty="empty"
45
- :sortMode="sortMode" :sortField="d_sortField" :sortOrder="d_sortOrder" :multiSortMeta="d_multiSortMeta"
46
- @column-click="onColumnHeaderClick($event)" @column-mousedown="onColumnHeaderMouseDown($event)"
47
- @column-dragstart="onColumnHeaderDragStart($event)" @column-dragover="onColumnHeaderDragOver($event)" @column-dragleave="onColumnHeaderDragLeave($event)" @column-drop="onColumnHeaderDrop($event)"
48
- @column-resizestart="onColumnResizeStart($event)" @checkbox-change="toggleRowsWithCheckbox($event)" />
49
- </template>
50
- <template #body>
51
- <DTTableBody :value="dataToRender" :columns="frozenColumns" :empty="empty" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
52
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :editMode="editMode" :compareSelectionBy="compareSelectionBy"
53
- :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
54
- :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading"
55
- @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
56
- @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
57
- @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
58
- @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
59
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
60
- </template>
61
- <template #frozenbody>
62
- <DTTableBody v-if="frozenValue" :value="frozenValue" :columns="frozenColumns" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
63
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :editMode="editMode" :compareSelectionBy="compareSelectionBy"
64
- :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
65
- :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading"
66
- @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
67
- @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
68
- @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
69
- @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
70
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
71
- </template>
72
- <template #footer>
73
- <DTTableFooter :columnGroup="frozenFooterColumnGroup" :columns="frozenColumns" />
74
- </template>
75
- </DTScrollableView>
76
- <DTScrollableView :scrollHeight="scrollHeight" :columns="scrollableColumns" :frozenWidth="frozenWidth" :rows="rows"
77
- :virtualScroll="virtualScroll" :virtualRowHeight="virtualRowHeight" :totalRecords="totalRecordsLength" @virtual-scroll="onVirtualScroll"
78
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy">
79
- <template #header>
80
- <DTTableHeader :columnGroup="headerColumnGroup" :columns="scrollableColumns" :rowGroupMode="rowGroupMode"
81
- :groupRowsBy="groupRowsBy" :resizableColumns="resizableColumns" :allRowsSelected="allRowsSelected" :empty="empty"
82
- :sortMode="sortMode" :sortField="d_sortField" :sortOrder="d_sortOrder" :multiSortMeta="d_multiSortMeta"
83
- @column-click="onColumnHeaderClick($event)" @column-mousedown="onColumnHeaderMouseDown($event)"
84
- @column-dragstart="onColumnHeaderDragStart($event)" @column-dragover="onColumnHeaderDragOver($event)" @column-dragleave="onColumnHeaderDragLeave($event)" @column-drop="onColumnHeaderDrop($event)"
85
- @column-resizestart="onColumnResizeStart($event)" @checkbox-change="toggleRowsWithCheckbox($event)" />
86
- </template>
87
- <template #body>
88
- <DTTableBody :value="dataToRender" :columns="scrollableColumns" :empty="empty" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
89
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :editMode="editMode" :compareSelectionBy="compareSelectionBy"
90
- :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
91
- :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading"
92
- @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
93
- @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
94
- @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
95
- @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
96
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
97
- </template>
98
- <template #frozenbody>
99
- <DTTableBody v-if="frozenValue" :value="frozenValue" :columns="scrollableColumns" :dataKey="dataKey" :selection="selection" :selectionKeys="d_selectionKeys" :selectionMode="selectionMode" :contextMenu="contextMenu" :contextMenuSelection="contextMenuSelection"
100
- :rowGroupMode="rowGroupMode" :groupRowsBy="groupRowsBy" :expandableRowGroups="expandableRowGroups" :rowClass="rowClass" :editMode="editMode" :compareSelectionBy="compareSelectionBy"
101
- :expandedRowIcon="expandedRowIcon" :collapsedRowIcon="collapsedRowIcon" :expandedRows="expandedRows" :expandedRowKeys="d_expandedRowKeys" :expandedRowGroups="expandedRowGroups"
102
- :editingRows="editingRows" :editingRowKeys="d_editingRowKeys" :templates="$scopedSlots" :loading="loading"
103
- @rowgroup-toggle="toggleRowGroup" @row-click="onRowClick($event)" @row-rightclick="onRowRightClick($event)" @row-touchend="onRowTouchEnd" @row-keydown="onRowKeyDown"
104
- @row-mousedown="onRowMouseDown" @row-dragstart="onRowDragStart($event)" @row-dragover="onRowDragOver($event)" @row-dragleave="onRowDragLeave($event)" @row-dragend="onRowDragEnd($event)" @row-drop="onRowDrop($event)"
105
- @row-toggle="toggleRow($event)" @radio-change="toggleRowWithRadio($event)" @checkbox-change="toggleRowWithCheckbox($event)"
106
- @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
107
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
108
- </template>
109
- <template #footer>
110
- <DTTableFooter :columnGroup="footerColumnGroup" :columns="scrollableColumns" />
111
- </template>
112
- </DTScrollableView>
113
- </div>
114
- <DTPaginator v-if="paginatorBottom" :rows="d_rows" :first="d_first" :totalRecords="totalRecordsLength" :pageLinkSize="pageLinkSize" :template="paginatorTemplate" :rowsPerPageOptions="rowsPerPageOptions"
50
+ <DTPaginator v-if="paginatorBottom" :rows="d_rows" :first="lazy ? 0 : d_first" :totalRecords="totalRecordsLength" :pageLinkSize="pageLinkSize" :template="paginatorTemplate" :rowsPerPageOptions="rowsPerPageOptions"
115
51
  :currentPageReportTemplate="currentPageReportTemplate" class="p-paginator-bottom" @page="onPage($event)" :alwaysShow="alwaysShowPaginator">
116
- <template #left v-if="$scopedSlots.paginatorLeft">
117
- <slot name="paginatorLeft"></slot>
52
+ <template #start v-if="$scopedSlots.paginatorstart">
53
+ <slot name="paginatorstart"></slot>
118
54
  </template>
119
- <template #right v-if="$scopedSlots.paginatorRight">
120
- <slot name="paginatorRight"></slot>
55
+ <template #end v-if="$scopedSlots.paginatorend">
56
+ <slot name="paginatorend"></slot>
121
57
  </template>
122
58
  </DTPaginator>
123
59
  <div class="p-datatable-footer" v-if="$scopedSlots.footer">
@@ -131,10 +67,12 @@
131
67
 
132
68
  <script>
133
69
  import ObjectUtils from '../utils/ObjectUtils';
134
- import FilterUtils from '../utils/FilterUtils';
135
70
  import DomHandler from '../utils/DomHandler';
136
- import Paginator from '../paginator/Paginator';
137
- import ScrollableView from './ScrollableView.vue';
71
+ import UniqueComponentId from '../utils/UniqueComponentId';
72
+ import FilterMatchMode from '../api/FilterMatchMode';
73
+ import FilterOperator from '../api/FilterOperator';
74
+ import FilterService from '../api/FilterService';
75
+ import Paginator from '../paginator/Paginator.vue';
138
76
  import TableHeader from './TableHeader.vue';
139
77
  import TableBody from './TableBody.vue';
140
78
  import TableFooter from './TableFooter.vue';
@@ -229,6 +167,14 @@ export default {
229
167
  type: Object,
230
168
  default: null
231
169
  },
170
+ filterDisplay: {
171
+ type: String,
172
+ default: null
173
+ },
174
+ globalFilterFields: {
175
+ type: Array,
176
+ default: null
177
+ },
232
178
  filterLocale: {
233
179
  type: String,
234
180
  default: undefined
@@ -269,6 +215,10 @@ export default {
269
215
  type: String,
270
216
  default: 'download'
271
217
  },
218
+ exportFunction: {
219
+ type: Function,
220
+ default: null
221
+ },
272
222
  autoLayout: {
273
223
  type: Boolean,
274
224
  default: false
@@ -333,10 +283,18 @@ export default {
333
283
  type: null,
334
284
  default: null
335
285
  },
286
+ rowStyle: {
287
+ type: null,
288
+ default: null
289
+ },
336
290
  scrollable: {
337
291
  type: Boolean,
338
292
  default: false
339
293
  },
294
+ scrollDirection: {
295
+ type: String,
296
+ default: "vertical"
297
+ },
340
298
  scrollHeight: {
341
299
  type: String,
342
300
  default: null
@@ -345,21 +303,29 @@ export default {
345
303
  type: Array,
346
304
  default: null
347
305
  },
348
- frozenWidth: {
306
+ responsiveLayout: {
349
307
  type: String,
350
- default: null
308
+ default: 'stack'
309
+ },
310
+ breakpoint: {
311
+ type: String,
312
+ default: '960px'
351
313
  },
352
- virtualScroll: {
314
+ showGridlines: {
353
315
  type: Boolean,
354
316
  default: false
355
317
  },
356
- virtualRowHeight: {
357
- type: Number,
358
- default: 28
318
+ stripedRows: {
319
+ type: Boolean,
320
+ default: false
359
321
  },
360
- virtualScrollDelay: {
361
- type: Number,
362
- default: 150
322
+ tableStyle: {
323
+ type: null,
324
+ default: null
325
+ },
326
+ tableClass: {
327
+ type: String,
328
+ default: null
363
329
  }
364
330
  },
365
331
  data() {
@@ -370,10 +336,13 @@ export default {
370
336
  d_sortField: this.sortField,
371
337
  d_sortOrder: this.sortOrder,
372
338
  d_multiSortMeta: this.multiSortMeta ? [...this.multiSortMeta] : [],
339
+ d_groupRowsSortMeta: null,
373
340
  d_selectionKeys: null,
374
341
  d_expandedRowKeys: null,
375
342
  d_columnOrder: null,
376
- d_editingRowKeys: null
343
+ d_editingRowKeys: null,
344
+ d_editingMeta: {},
345
+ d_filters: this.cloneFilters(this.filters)
377
346
  };
378
347
  },
379
348
  rowTouched: false,
@@ -393,7 +362,6 @@ export default {
393
362
  columnWidthsState: null,
394
363
  tableWidthState: null,
395
364
  columnWidthsRestored: false,
396
- virtualScrollTimer: null,
397
365
  watch: {
398
366
  first(newValue) {
399
367
  this.d_first = newValue;
@@ -410,9 +378,12 @@ export default {
410
378
  multiSortMeta(newValue) {
411
379
  this.d_multiSortMeta = newValue;
412
380
  },
413
- selection(newValue) {
414
- if (this.dataKey) {
415
- this.updateSelectionKeys(newValue);
381
+ selection: {
382
+ immediate: true,
383
+ handler(newValue) {
384
+ if (this.dataKey) {
385
+ this.updateSelectionKeys(newValue);
386
+ }
416
387
  }
417
388
  },
418
389
  expandedRows(newValue) {
@@ -424,6 +395,12 @@ export default {
424
395
  if (this.dataKey) {
425
396
  this.updateEditingRowKeys(newValue);
426
397
  }
398
+ },
399
+ filters: {
400
+ deep: true,
401
+ handler: function(newValue) {
402
+ this.d_filters = this.cloneFilters(newValue);
403
+ }
427
404
  }
428
405
  },
429
406
  beforeMount() {
@@ -444,25 +421,41 @@ export default {
444
421
  this.d_columnOrder = columnOrder;
445
422
  }
446
423
 
447
- if (this.resizableColumns && !this.columnWidthsRestored) {
424
+ this.$el.setAttribute(this.attributeSelector, '');
425
+
426
+ if (this.responsiveLayout === 'stack' && !this.scrollable) {
427
+ this.createResponsiveStyle();
428
+ }
429
+
430
+ if (this.isStateful() && this.resizableColumns) {
448
431
  this.restoreColumnWidths();
449
432
  }
433
+
434
+ if (this.editMode === 'row' && this.dataKey && !this.d_editingRowKeys) {
435
+ this.updateEditingRowKeys(this.editingRows);
436
+ }
450
437
  },
451
- beforeDestroy() {
438
+ beforeUnmount() {
452
439
  this.unbindColumnResizeEvents();
440
+ this.destroyStyleElement();
441
+ this.destroyResponsiveStyle();
453
442
  },
454
443
  updated() {
455
444
  if (this.isStateful()) {
456
445
  this.saveState();
446
+ }
457
447
 
458
- if (this.resizableColumns && !this.columnWidthsRestored) {
459
- this.restoreColumnWidths();
460
- this.columnWidthsRestored = true;
461
- }
448
+ if (this.editMode === 'row' && this.dataKey && !this.d_editingRowKeys) {
449
+ this.updateEditingRowKeys(this.editingRows);
462
450
  }
463
451
  },
464
452
  methods: {
453
+ columnProp(col, prop) {
454
+ return ObjectUtils.getVNodeProp(col, prop);
455
+ },
465
456
  onPage(event) {
457
+ this.clearEditingMetaData();
458
+
466
459
  this.d_first = event.first;
467
460
  this.d_rows = event.rows;
468
461
 
@@ -473,14 +466,15 @@ export default {
473
466
  this.$emit('update:first', this.d_first);
474
467
  this.$emit('update:rows', this.d_rows);
475
468
  this.$emit('page', pageEvent);
469
+ this.$emit('value-change', this.processedData);
476
470
  },
477
471
  onColumnHeaderClick(e) {
478
472
  const event = e.originalEvent;
479
473
  const column = e.column;
480
474
 
481
- if (column.sortable) {
475
+ if (this.columnProp(column, 'sortable')) {
482
476
  const targetNode = event.target;
483
- const columnField = column.sortField || column.field;
477
+ const columnField = this.columnProp(column, 'sortField') || this.columnProp(column, 'field');
484
478
 
485
479
  if (DomHandler.hasClass(targetNode, 'p-sortable-column') || DomHandler.hasClass(targetNode, 'p-column-title')
486
480
  || DomHandler.hasClass(targetNode, 'p-sortable-column-icon') || DomHandler.hasClass(targetNode.parentElement, 'p-sortable-column-icon')) {
@@ -516,10 +510,22 @@ export default {
516
510
  }
517
511
 
518
512
  this.$emit('sort', this.createLazyLoadEvent(event));
513
+ this.$emit('value-change', this.processedData);
519
514
  }
520
515
  }
521
516
  },
522
517
  sortSingle(value) {
518
+ this.clearEditingMetaData();
519
+
520
+ if (this.groupRowsBy && this.groupRowsBy === this.sortField) {
521
+ this.d_multiSortMeta = [
522
+ {field: this.sortField, order: this.sortOrder || this.defaultSortOrder},
523
+ {field: this.d_sortField, order: this.d_sortOrder}
524
+ ];
525
+
526
+ return this.sortMultiple(value);
527
+ }
528
+
523
529
  let data = [...value];
524
530
 
525
531
  data.sort((data1, data2) => {
@@ -545,6 +551,17 @@ export default {
545
551
  return data;
546
552
  },
547
553
  sortMultiple(value) {
554
+ this.clearEditingMetaData();
555
+
556
+ if (this.groupRowsBy && (this.d_groupRowsSortMeta || (this.d_multiSortMeta.length && this.groupRowsBy === this.d_multiSortMeta[0].field))) {
557
+ const firstSortMeta = this.d_multiSortMeta[0];
558
+ !this.d_groupRowsSortMeta && (this.d_groupRowsSortMeta = firstSortMeta);
559
+
560
+ if (firstSortMeta.field !== this.d_groupRowsSortMeta.field) {
561
+ this.d_multiSortMeta = [this.d_groupRowsSortMeta, ...this.d_multiSortMeta];
562
+ }
563
+ }
564
+
548
565
  let data = [...value];
549
566
 
550
567
  data.sort((data1, data2) => {
@@ -589,58 +606,92 @@ export default {
589
606
  this.d_multiSortMeta = [...this.d_multiSortMeta];
590
607
  },
591
608
  filter(data) {
592
- this.d_first = 0;
593
- this.$emit('update:first', this.d_first);
609
+ if (!data) {
610
+ return;
611
+ }
612
+
613
+ this.clearEditingMetaData();
614
+
615
+ let globalFilterFieldsArray;
616
+ if (this.filters['global']) {
617
+ globalFilterFieldsArray = this.globalFilterFields|| this.columns.map(col => this.columnProp(col, 'filterField') || this.columnProp(col, 'field'));
618
+ }
594
619
 
595
620
  let filteredValue = [];
596
621
 
597
- for(let i = 0; i < data.length; i++) {
622
+ for (let i = 0; i < data.length; i++) {
598
623
  let localMatch = true;
599
624
  let globalMatch = false;
625
+ let localFiltered = false;
626
+
627
+ for (let prop in this.filters) {
628
+ if (Object.prototype.hasOwnProperty.call(this.filters, prop) && prop !== 'global') {
629
+ localFiltered = true;
630
+ let filterField = prop;
631
+ let filterMeta = this.filters[filterField];
600
632
 
601
- for(let j = 0; j < this.columns.length; j++) {
602
- let col = this.columns[j];
603
- let columnField = col.filterField || col.field;
604
-
605
- //local
606
- if (Object.prototype.hasOwnProperty.call(this.filters, columnField)) {
607
- let filterValue = this.filters[columnField];
608
- let dataFieldValue = ObjectUtils.resolveFieldData(data[i], columnField);
609
- let filterConstraint = col.filterMatchMode === 'custom' ? col.filterFunction : FilterUtils[col.filterMatchMode];
610
- if (!filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {
611
- localMatch = false;
633
+ if (filterMeta.operator) {
634
+ for (let filterConstraint of filterMeta.constraints) {
635
+ localMatch = this.executeLocalFilter(filterField, data[i], filterConstraint);
636
+
637
+ if ((filterMeta.operator === FilterOperator.OR && localMatch) || (filterMeta.operator === FilterOperator.AND && !localMatch)) {
638
+ break;
639
+ }
640
+ }
641
+ }
642
+ else {
643
+ localMatch = this.executeLocalFilter(filterField, data[i], filterMeta);
612
644
  }
613
645
 
614
646
  if (!localMatch) {
615
647
  break;
616
648
  }
617
649
  }
650
+ }
651
+
652
+ if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
653
+ for(let j = 0; j < globalFilterFieldsArray.length; j++) {
654
+ let globalFilterField = globalFilterFieldsArray[j];
655
+ globalMatch = FilterService.filters[this.filters['global'].matchMode || FilterMatchMode.CONTAINS](ObjectUtils.resolveFieldData(data[i], globalFilterField), this.filters['global'].value, this.filterLocale);
618
656
 
619
- if (!col.excludeGlobalFilter && this.hasGlobalFilter() && !globalMatch) {
620
- globalMatch = FilterUtils.contains(ObjectUtils.resolveFieldData(data[i], columnField), this.filters['global'], this.filterLocale);
657
+ if (globalMatch) {
658
+ break;
659
+ }
621
660
  }
622
661
  }
623
662
 
624
- let matches = localMatch;
625
- if(this.hasGlobalFilter()) {
626
- matches = localMatch && globalMatch;
663
+ let matches;
664
+ if (this.filters['global']) {
665
+ matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;
666
+ }
667
+ else {
668
+ matches = localFiltered && localMatch;
627
669
  }
628
670
 
629
- if(matches) {
671
+ if (matches) {
630
672
  filteredValue.push(data[i]);
631
673
  }
632
674
  }
633
675
 
634
- if (filteredValue.length === data.length) {
676
+ if (filteredValue.length === this.value.length) {
635
677
  filteredValue = data;
636
678
  }
637
679
 
638
680
  let filterEvent = this.createLazyLoadEvent();
639
681
  filterEvent.filteredValue = filteredValue;
640
682
  this.$emit('filter', filterEvent);
683
+ this.$emit('value-change', filteredValue);
641
684
 
642
685
  return filteredValue;
643
686
  },
687
+ executeLocalFilter(field, rowData, filterMeta) {
688
+ let filterValue = filterMeta.value;
689
+ let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;
690
+ let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);
691
+ let filterConstraint = FilterService.filters[filterMatchMode];
692
+
693
+ return filterConstraint(dataFieldValue, filterValue, this.filterLocale);
694
+ },
644
695
  onRowClick(e) {
645
696
  const event = e.originalEvent;
646
697
  if (DomHandler.isClickable(event.target)) {
@@ -651,7 +702,7 @@ export default {
651
702
 
652
703
  if (this.selectionMode) {
653
704
  const rowData = e.data;
654
- const rowIndex = e.index + this.d_first;
705
+ const rowIndex = this.d_first + e.index;
655
706
 
656
707
  if (this.isMultipleSelectionMode() && event.shiftKey && this.anchorRowIndex != null) {
657
708
  DomHandler.clearSelection();
@@ -727,6 +778,7 @@ export default {
727
778
  if (DomHandler.isClickable(event.target)) {
728
779
  return;
729
780
  }
781
+
730
782
  this.$emit('row-dblclick', e);
731
783
  },
732
784
  onRowRightClick(event) {
@@ -834,7 +886,7 @@ export default {
834
886
  toggleRowsWithCheckbox(event) {
835
887
  const processedData = this.processedData;
836
888
  const checked = this.allRowsSelected;
837
- const _selection = checked ? [] : (processedData ? [...processedData] : [...this.value]);
889
+ const _selection = checked ? [] : (this.frozenValue ? [...this.frozenValue, ...processedData]: processedData);
838
890
  this.$emit('update:selection', _selection);
839
891
 
840
892
  if (checked)
@@ -937,13 +989,11 @@ export default {
937
989
  }
938
990
 
939
991
  const value = this.processedData;
940
- let _selection = [...this.selection];
992
+ let _selection = [];
941
993
  for(let i = rangeStart; i <= rangeEnd; i++) {
942
994
  let rangeRowData = value[i];
943
- if (!_selection.includes(rangeRowData)) {
944
- _selection.push(rangeRowData);
945
- this.$emit('row-select', {originalEvent: event, data: rangeRowData, type: 'row'});
946
- }
995
+ _selection.push(rangeRowData);
996
+ this.$emit('row-select', {originalEvent: event, data: rangeRowData, type: 'row'});
947
997
  }
948
998
 
949
999
  this.$emit('update:selection', _selection);
@@ -952,19 +1002,23 @@ export default {
952
1002
  let data = this.processedData;
953
1003
  let csv = '\ufeff';
954
1004
 
955
- if (options && options.selectionOnly) {
1005
+ if (options && options.selectionOnly)
956
1006
  data = this.selection || [];
957
- }
1007
+ else if (this.frozenValue)
1008
+ data = data ? [...this.frozenValue, ...data] : this.frozenValue;
958
1009
 
959
1010
  //headers
1011
+ let headerInitiated = false;
960
1012
  for (let i = 0; i < this.columns.length; i++) {
961
1013
  let column = this.columns[i];
962
- if (column.exportable !== false && column.field) {
963
- csv += '"' + (column.header || column.field) + '"';
964
1014
 
965
- if (i < (this.columns.length - 1)) {
1015
+ if (this.columnProp(column, 'exportable') !== false && this.columnProp(column, 'field')) {
1016
+ if (headerInitiated)
966
1017
  csv += this.csvSeparator;
967
- }
1018
+ else
1019
+ headerInitiated = true;
1020
+
1021
+ csv += '"' + (this.columnProp(column, 'header') || this.columnProp(column, 'field')) + '"';
968
1022
  }
969
1023
  }
970
1024
 
@@ -972,16 +1026,22 @@ export default {
972
1026
  if (data) {
973
1027
  data.forEach(record => {
974
1028
  csv += '\n';
1029
+ let rowInitiated = false;
975
1030
  for (let i = 0; i < this.columns.length; i++) {
976
1031
  let column = this.columns[i];
977
- if (column.exportable !== false && column.field) {
978
- let cellData = ObjectUtils.resolveFieldData(record, column.field);
1032
+ if (this.columnProp(column, 'exportable') !== false && this.columnProp(column, 'field')) {
1033
+ if (rowInitiated)
1034
+ csv += this.csvSeparator;
1035
+ else
1036
+ rowInitiated = true;
1037
+
1038
+ let cellData = ObjectUtils.resolveFieldData(record, this.columnProp(column, 'field'));
979
1039
 
980
1040
  if (cellData != null) {
981
1041
  if (this.exportFunction) {
982
1042
  cellData = this.exportFunction({
983
1043
  data: cellData,
984
- field: column.field
1044
+ field: this.columnProp(column, 'field')
985
1045
  });
986
1046
  }
987
1047
  else
@@ -990,12 +1050,7 @@ export default {
990
1050
  else
991
1051
  cellData = '';
992
1052
 
993
-
994
1053
  csv += '"' + cellData + '"';
995
-
996
- if (i < (this.columns.length - 1)) {
997
- csv += this.csvSeparator;
998
- }
999
1054
  }
1000
1055
  }
1001
1056
  });
@@ -1057,33 +1112,26 @@ export default {
1057
1112
  let nextColumnWidth = nextColumn.offsetWidth - delta;
1058
1113
 
1059
1114
  if (newColumnWidth > 15 && nextColumnWidth > 15) {
1060
- if(this.scrollable) {
1061
- const scrollableView = this.findParentScrollableView(this.resizeColumnElement);
1062
- const scrollableBodyTable = DomHandler.findSingle(scrollableView, 'table.p-datatable-scrollable-body-table');
1063
- const scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-datatable-scrollable-header-table');
1064
- const scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-datatable-scrollable-footer-table');
1065
- const resizeColumnIndex = DomHandler.index(this.resizeColumnElement);
1066
-
1067
- this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
1068
- this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
1069
- this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
1070
- }
1071
- else {
1115
+ if (!this.scrollable) {
1072
1116
  this.resizeColumnElement.style.width = newColumnWidth + 'px';
1073
1117
  if(nextColumn) {
1074
1118
  nextColumn.style.width = nextColumnWidth + 'px';
1075
1119
  }
1076
1120
  }
1121
+ else {
1122
+ this.resizeTableCells(newColumnWidth, nextColumnWidth);
1123
+ }
1077
1124
  }
1078
1125
  }
1079
1126
  else if (this.columnResizeMode === 'expand') {
1080
- if (this.scrollable) {
1081
- this.resizeScrollableTable(this.resizeColumnElement, newColumnWidth, delta);
1082
- }
1083
- else {
1084
- this.$refs.table.style.width = this.$refs.table.offsetWidth + delta + 'px';
1127
+ const tableWidth = this.$refs.table.offsetWidth + delta + 'px';
1128
+ this.$refs.table.style.width = tableWidth;
1129
+ this.$refs.table.style.minWidth = tableWidth;
1130
+
1131
+ if (!this.scrollable)
1085
1132
  this.resizeColumnElement.style.width = newColumnWidth + 'px';
1086
- }
1133
+ else
1134
+ this.resizeTableCells(newColumnWidth);
1087
1135
  }
1088
1136
 
1089
1137
  this.$emit('column-resize-end', {
@@ -1102,23 +1150,29 @@ export default {
1102
1150
  this.saveState();
1103
1151
  }
1104
1152
  },
1105
- resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {
1106
- if(table) {
1107
- let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;
1153
+ resizeTableCells(newColumnWidth, nextColumnWidth) {
1154
+ let colIndex = DomHandler.index(this.resizeColumnElement);
1155
+ let widths = [];
1156
+ let headers = DomHandler.find(this.$refs.table, '.p-datatable-thead > tr > th');
1157
+ headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
1108
1158
 
1109
- if(colGroup) {
1110
- let col = colGroup.children[resizeColumnIndex];
1111
- let nextCol = col.nextElementSibling;
1112
- col.style.width = newColumnWidth + 'px';
1159
+ this.destroyStyleElement();
1160
+ this.createStyleElement();
1113
1161
 
1114
- if (nextCol && nextColumnWidth) {
1115
- nextCol.style.width = nextColumnWidth + 'px';
1162
+ let innerHTML = '';
1163
+ widths.forEach((width,index) => {
1164
+ let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;
1165
+ innerHTML += `
1166
+ .p-datatable[${this.attributeSelector}] .p-datatable-thead > tr > th:nth-child(${index+1}) {
1167
+ flex: 0 0 ${colWidth}px !important;
1116
1168
  }
1117
- }
1118
- else {
1119
- throw new Error("Scrollable tables require a colgroup to support resizable columns");
1120
- }
1121
- }
1169
+
1170
+ .p-datatable[${this.attributeSelector}] .p-datatable-tbody > tr > td:nth-child(${index+1}) {
1171
+ flex: 0 0 ${colWidth}px !important;
1172
+ }
1173
+ `
1174
+ });
1175
+ this.styleElement.innerHTML = innerHTML;
1122
1176
  },
1123
1177
  bindColumnResizeEvents() {
1124
1178
  if (!this.documentColumnResizeListener) {
@@ -1147,14 +1201,14 @@ export default {
1147
1201
 
1148
1202
  if (this.documentColumnResizeEndListener) {
1149
1203
  document.removeEventListener('document', this.documentColumnResizeEndListener);
1150
- this.documentColumnResizeEndListener = null;
1204
+ this.documentColumnResizeEndListener = null;
1151
1205
  }
1152
1206
  },
1153
1207
  onColumnHeaderMouseDown(e) {
1154
1208
  const event = e.originalEvent;
1155
1209
  const column = e.column;
1156
1210
 
1157
- if (this.reorderableColumns && column.reorderableColumn) {
1211
+ if (this.reorderableColumns && this.columnProp(column, 'reorderableColumn') !== false) {
1158
1212
  if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
1159
1213
  event.currentTarget.draggable = false;
1160
1214
  else
@@ -1221,7 +1275,8 @@ export default {
1221
1275
  }
1222
1276
 
1223
1277
  if (allowDrop) {
1224
- ObjectUtils.reorderArray(this.d_columnOrder, dragIndex, dropIndex);
1278
+ ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
1279
+ this.updateReorderableColumns();
1225
1280
 
1226
1281
  this.$emit('column-reorder', {
1227
1282
  originalEvent: event,
@@ -1250,63 +1305,18 @@ export default {
1250
1305
  return parent;
1251
1306
  }
1252
1307
  },
1253
- findParentScrollableView(column) {
1254
- if (column) {
1255
- let parent = column.parentElement;
1256
- while (parent && !DomHandler.hasClass(parent, 'p-datatable-scrollable-view')) {
1257
- parent = parent.parentElement;
1258
- }
1259
-
1260
- return parent;
1261
- }
1262
- else {
1263
- return null;
1264
- }
1265
- },
1266
1308
  findColumnByKey(columns, key) {
1267
- if(columns && columns.length) {
1268
- for(let i = 0; i < columns.length; i++) {
1269
- let child = columns[i];
1270
- if(child.columnKey === key || child.field === key) {
1271
- return child;
1309
+ if (columns && columns.length) {
1310
+ for (let i = 0; i < columns.length; i++) {
1311
+ let column = columns[i];
1312
+ if (this.columnProp(column, 'columnKey') === key || this.columnProp(column, 'field') === key) {
1313
+ return column;
1272
1314
  }
1273
1315
  }
1274
1316
  }
1275
1317
 
1276
1318
  return null;
1277
1319
  },
1278
- resizeScrollableTable(column, newColumnWidth, delta) {
1279
- const scrollableView = column ? this.findParentScrollableView(column) : this.$el;
1280
- const scrollableBody = DomHandler.findSingle(scrollableView, '.p-datatable-scrollable-body');
1281
- const scrollableHeader = DomHandler.findSingle(scrollableView, '.p-datatable-scrollable-header');
1282
- const scrollableFooter = DomHandler.findSingle(scrollableView, '.p-datatable-scrollable-footer');
1283
- const scrollableBodyTable = DomHandler.findSingle(scrollableBody, 'table.p-datatable-scrollable-body-table');
1284
- const scrollableHeaderTable = DomHandler.findSingle(scrollableHeader, 'table.p-datatable-scrollable-header-table');
1285
- const scrollableFooterTable = DomHandler.findSingle(scrollableFooter, 'table.p-datatable-scrollable-footer-table');
1286
-
1287
- const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;
1288
- const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;
1289
- const isContainerInViewport = this.$el.offsetWidth >= parseFloat(scrollableBodyTableWidth);
1290
-
1291
- let setWidth = (container, table, width, isContainerInViewport) => {
1292
- if (container && table) {
1293
- container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto'
1294
- table.style.width = width + 'px';
1295
- }
1296
- };
1297
-
1298
- setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);
1299
- setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);
1300
- setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);
1301
-
1302
- if (column) {
1303
- let resizeColumnIndex = DomHandler.index(column);
1304
-
1305
- this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);
1306
- this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);
1307
- this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);
1308
- }
1309
- },
1310
1320
  onRowMouseDown(event) {
1311
1321
  if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))
1312
1322
  event.currentTarget.draggable = true;
@@ -1473,7 +1483,7 @@ export default {
1473
1483
  state.multiSortMeta = this.d_multiSortMeta;
1474
1484
  }
1475
1485
 
1476
- if (this.hasFilters()) {
1486
+ if (this.hasFilters) {
1477
1487
  state.filters = this.filters;
1478
1488
  }
1479
1489
 
@@ -1505,12 +1515,20 @@ export default {
1505
1515
 
1506
1516
  this.$emit('state-save', state);
1507
1517
  },
1508
- restoreState() {
1518
+ restoreState() {debugger;
1509
1519
  const storage = this.getStorage();
1510
1520
  const stateString = storage.getItem(this.stateKey);
1521
+ const dateFormat = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
1522
+ const reviver = function(key, value) {
1523
+ if (typeof value === "string" && dateFormat.test(value)) {
1524
+ return new Date(value);
1525
+ }
1526
+
1527
+ return value;
1528
+ }
1511
1529
 
1512
1530
  if (stateString) {
1513
- let restoredState = JSON.parse(stateString);
1531
+ let restoredState = JSON.parse(stateString, reviver);
1514
1532
 
1515
1533
  if (this.paginator) {
1516
1534
  this.d_first = restoredState.first;
@@ -1563,8 +1581,7 @@ export default {
1563
1581
  state.columnWidths = widths.join(',');
1564
1582
 
1565
1583
  if (this.columnResizeMode === 'expand') {
1566
- state.tableWidth = this.scrollable ? DomHandler.findSingle(this.$el, '.p-datatable-scrollable-header-table').style.width :
1567
- DomHandler.getOuterWidth(this.$refs.table) + 'px';
1584
+ state.tableWidth = DomHandler.getOuterWidth(this.$refs.table) + 'px';
1568
1585
  }
1569
1586
  },
1570
1587
  restoreColumnWidths() {
@@ -1572,28 +1589,32 @@ export default {
1572
1589
  let widths = this.columnWidthsState.split(',');
1573
1590
 
1574
1591
  if (this.columnResizeMode === 'expand' && this.tableWidthState) {
1575
- if (this.scrollable) {
1576
- this.resizeScrollableTable(null, this.tableWidthState, 0);
1577
- }
1578
- else {
1579
- this.$refs.table.style.width = this.tableWidthState;
1580
- this.$el.style.width = this.tableWidthState;
1581
- }
1592
+ this.$refs.table.style.width = this.tableWidthState;
1593
+ this.$refs.table.style.minWidth = this.tableWidthState;
1594
+ this.$el.style.width = this.tableWidthState;
1582
1595
  }
1583
1596
 
1584
- if (this.scrollable) {
1585
- let headerCols = DomHandler.find(this.$el, '.p-datatable-scrollable-header-table > colgroup > col');
1586
- let bodyCols = DomHandler.find(this.$el, '.p-datatable-scrollable-body-table > colgroup > col');
1597
+ this.createStyleElement();
1587
1598
 
1588
- headerCols.forEach((col, index) => col.style.width = widths[index] + 'px');
1589
- bodyCols.forEach((col, index) => col.style.width = widths[index] + 'px');
1599
+ if (this.scrollable && widths && widths.length > 0) {
1600
+ let innerHTML = '';
1601
+ widths.forEach((width,index) => {
1602
+ innerHTML += `
1603
+ .p-datatable[${this.attributeSelector}] .p-datatable-thead > tr > th:nth-child(${index+1}) {
1604
+ flex: 0 0 ${width}px;
1605
+ }
1606
+
1607
+ .p-datatable[${this.attributeSelector}] .p-datatable-tbody > tr > td:nth-child(${index+1}) {
1608
+ flex: 0 0 ${width}px;
1609
+ }
1610
+ `
1611
+ });
1612
+
1613
+ this.styleElement.innerHTML = innerHTML;
1590
1614
  }
1591
1615
  else {
1592
- let headers = DomHandler.find(this.$refs.table, '.p-datatable-thead > tr > th');
1593
- headers.forEach((header, index) => header.style.width = widths[index] + 'px');
1616
+ DomHandler.find(this.$refs.table, '.p-datatable-thead > tr > th').forEach((header, index) => header.style.width = widths[index] + 'px');
1594
1617
  }
1595
-
1596
-
1597
1618
  }
1598
1619
  },
1599
1620
  onCellEditInit(event) {
@@ -1623,29 +1644,25 @@ export default {
1623
1644
  this.$emit('update:editingRows', _editingRows);
1624
1645
  this.$emit('row-edit-cancel', event);
1625
1646
  },
1626
- onVirtualScroll(event) {
1627
- if(this.virtualScrollTimer) {
1628
- clearTimeout(this.virtualScrollTimer);
1629
- }
1647
+ onEditingMetaChange(event) {
1648
+ let { data, field, index, editing } = event;
1649
+ let meta = this.d_editingMeta[index];
1630
1650
 
1631
- this.virtualScrollTimer = setTimeout(() => {
1632
- this.$emit('virtual-scroll', {
1633
- first: (event.page - 1) * this.rows,
1634
- rows: this.rows * 2
1635
- });
1636
- }, this.virtualScrollDelay);
1651
+ if (editing) {
1652
+ !meta && (meta = this.d_editingMeta[index] = { data: { ...data }, fields: [] });
1653
+ meta['fields'].push(field);
1654
+ }
1655
+ else if (meta) {
1656
+ const fields = meta['fields'].filter(f => f !== field);
1657
+ !fields.length ? (delete this.d_editingMeta[index]) : (meta['fields'] = fields);
1658
+ }
1637
1659
  },
1638
- createLazyLoadEvent(event) {
1639
- let filterMatchModes;
1640
- if (this.hasFilters()) {
1641
- filterMatchModes = {};
1642
- this.columns.forEach(col => {
1643
- if (col.field) {
1644
- filterMatchModes[col.field] = col.filterMatchMode;
1645
- }
1646
- });
1660
+ clearEditingMetaData() {
1661
+ if (this.editMode) {
1662
+ this.d_editingMeta = {};
1647
1663
  }
1648
-
1664
+ },
1665
+ createLazyLoadEvent(event) {
1649
1666
  return {
1650
1667
  originalEvent: event,
1651
1668
  first: this.d_first,
@@ -1653,16 +1670,113 @@ export default {
1653
1670
  sortField: this.d_sortField,
1654
1671
  sortOrder: this.d_sortOrder,
1655
1672
  multiSortMeta: this.d_multiSortMeta,
1656
- filters: this.filters,
1657
- filterMatchModes: filterMatchModes
1673
+ filters: this.d_filters
1658
1674
  };
1659
1675
  },
1660
- hasFilters() {
1661
- return this.filters && Object.keys(this.filters).length > 0 && this.filters.constructor === Object;
1662
- },
1663
1676
  hasGlobalFilter() {
1664
1677
  return this.filters && Object.prototype.hasOwnProperty.call(this.filters, 'global');
1665
1678
  },
1679
+ getChildren() {
1680
+ return this.$scopedSlots.default ? this.$scopedSlots.default() : null;
1681
+ },
1682
+ onFilterChange(filters) {
1683
+ this.d_filters = filters;
1684
+ },
1685
+ onFilterApply() {
1686
+ this.d_first = 0;
1687
+ this.$emit('update:first', this.d_first);
1688
+ this.$emit('update:filters', this.d_filters);
1689
+
1690
+ if (this.lazy) {
1691
+ this.$emit('filter', this.createLazyLoadEvent());
1692
+ }
1693
+ },
1694
+ cloneFilters() {
1695
+ let cloned = {};
1696
+ if (this.filters) {
1697
+ Object.entries(this.filters).forEach(([prop,value]) => {
1698
+ cloned[prop] = value.operator ? {operator: value.operator, constraints: value.constraints.map(constraint => {return {...constraint}})} : {...value};
1699
+ });
1700
+ }
1701
+
1702
+ return cloned;
1703
+ },
1704
+ updateReorderableColumns() {
1705
+ let columnOrder = [];
1706
+ this.columns.forEach(col => columnOrder.push(this.columnProp(col, 'columnKey')||this.columnProp(col, 'field')));
1707
+ this.d_columnOrder = columnOrder;
1708
+ },
1709
+ createStyleElement() {
1710
+ this.styleElement = document.createElement('style');
1711
+ this.styleElement.type = 'text/css';
1712
+ document.head.appendChild(this.styleElement);
1713
+ },
1714
+ createResponsiveStyle() {
1715
+ if (!this.responsiveStyleElement) {
1716
+ this.responsiveStyleElement = document.createElement('style');
1717
+ this.responsiveStyleElement.type = 'text/css';
1718
+ document.head.appendChild(this.responsiveStyleElement);
1719
+
1720
+ let innerHTML = `
1721
+ @media screen and (max-width: ${this.breakpoint}) {
1722
+ .p-datatable[${this.attributeSelector}] .p-datatable-thead > tr > th,
1723
+ .p-datatable[${this.attributeSelector}] .p-datatable-tfoot > tr > td {
1724
+ display: none !important;
1725
+ }
1726
+
1727
+ .p-datatable[${this.attributeSelector}] .p-datatable-tbody > tr > td {
1728
+ display: flex;
1729
+ width: 100% !important;
1730
+ align-items: center;
1731
+ justify-content: space-between;
1732
+ }
1733
+
1734
+ .p-datatable[${this.attributeSelector}] .p-datatable-tbody > tr > td:not(:last-child) {
1735
+ border: 0 none;
1736
+ }
1737
+
1738
+ .p-datatable[${this.attributeSelector}].p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {
1739
+ border-top: 0;
1740
+ border-right: 0;
1741
+ border-left: 0;
1742
+ }
1743
+
1744
+ .p-datatable[${this.attributeSelector}] .p-datatable-tbody > tr > td > .p-column-title {
1745
+ display: block;
1746
+ }
1747
+ }
1748
+ `;
1749
+
1750
+ this.responsiveStyleElement.innerHTML = innerHTML;
1751
+ }
1752
+ },
1753
+ destroyResponsiveStyle() {
1754
+ if (this.responsiveStyleElement) {
1755
+ document.head.removeChild(this.responsiveStyleElement);
1756
+ this.responsiveStyleElement = null;
1757
+ }
1758
+ },
1759
+ destroyStyleElement() {
1760
+ if (this.styleElement) {
1761
+ document.head.removeChild(this.styleElement);
1762
+ this.styleElement = null;
1763
+ }
1764
+ },
1765
+ recursiveGetChildren(children, results) {
1766
+ if (!results) {
1767
+ results = [];
1768
+ }
1769
+ if (children && children.length) {
1770
+ children.forEach((child) => {
1771
+ if (child.children instanceof Array) {
1772
+ results.concat(this.recursiveGetChildren(child.children, results));
1773
+ } else if (child.type.name == 'Column') {
1774
+ results.push(child);
1775
+ }
1776
+ });
1777
+ }
1778
+ return results;
1779
+ },
1666
1780
  },
1667
1781
  computed: {
1668
1782
  containerClass() {
@@ -1673,8 +1787,16 @@ export default {
1673
1787
  'p-datatable-resizable': this.resizableColumns,
1674
1788
  'p-datatable-resizable-fit': this.resizableColumns && this.columnResizeMode === 'fit',
1675
1789
  'p-datatable-scrollable': this.scrollable,
1676
- 'p-datatable-virtual-scrollable': this.virtualScroll,
1677
- 'p-datatable-flex-scrollable': (this.scrollable && this.scrollHeight === 'flex')
1790
+ 'p-datatable-scrollable-vertical': this.scrollable && this.scrollDirection === 'vertical',
1791
+ 'p-datatable-scrollable-horizontal': this.scrollable && this.scrollDirection === 'horizontal',
1792
+ 'p-datatable-scrollable-both': this.scrollable && this.scrollDirection === 'both',
1793
+ 'p-datatable-flex-scrollable': (this.scrollable && this.scrollHeight === 'flex'),
1794
+ 'p-datatable-responsive-stack': this.responsiveLayout === 'stack',
1795
+ 'p-datatable-responsive-scroll': this.responsiveLayout === 'scroll',
1796
+ 'p-datatable-striped': this.stripedRows,
1797
+ 'p-datatable-gridlines': this.showGridlines,
1798
+ 'p-datatable-grouped-header': this.headerColumnGroup != null,
1799
+ 'p-datatable-grouped-footer': this.footerColumnGroup != null
1678
1800
  }
1679
1801
  ];
1680
1802
  },
@@ -1700,84 +1822,37 @@ export default {
1700
1822
  }
1701
1823
  return columns;
1702
1824
  },
1703
- frozenColumns() {
1704
- let frozenColumns = [];
1705
-
1706
- for(let col of this.columns) {
1707
- if(col.frozen) {
1708
- frozenColumns = frozenColumns||[];
1709
- frozenColumns.push(col);
1710
- }
1711
- }
1712
-
1713
- return frozenColumns;
1714
- },
1715
- scrollableColumns() {
1716
- let scrollableColumns = [];
1717
-
1718
- for(let col of this.columns) {
1719
- if(!col.frozen) {
1720
- scrollableColumns = scrollableColumns||[];
1721
- scrollableColumns.push(col);
1722
- }
1723
- }
1724
-
1725
- return scrollableColumns;
1726
- },
1727
- hasFrozenColumns() {
1728
- return this.frozenColumns.length > 0;
1729
- },
1730
1825
  headerColumnGroup() {
1731
1826
  if (this.allChildren) {
1732
1827
  for (let child of this.allChildren) {
1733
- if (child.$vnode.tag.indexOf('columngroup') !== -1 && child.type === 'header') {
1734
- return child;
1735
- }
1736
- }
1737
- }
1738
-
1739
- return null;
1740
- },
1741
- frozenHeaderColumnGroup() {
1742
- if (this.allChildren) {
1743
- for (let child of this.allChildren) {
1744
- if (child.$vnode.tag.indexOf('columngroup') !== -1 && child.type === 'frozenheader') {
1828
+ if (child.$vnode.tag.indexOf('columngroup') !== -1 && this.columnProp(child, 'type') === 'header') {
1745
1829
  return child;
1746
1830
  }
1747
1831
  }
1748
1832
  }
1749
-
1750
1833
  return null;
1751
1834
  },
1752
1835
  footerColumnGroup() {
1753
1836
  if (this.allChildren) {
1754
1837
  for (let child of this.allChildren) {
1755
- if (child.$vnode.tag.indexOf('columngroup') !== -1 && child.type === 'footer') {
1838
+ if (child.$vnode.tag.indexOf('columngroup') !== -1 && this.columnProp(child, 'type') === 'footer') {
1756
1839
  return child;
1757
1840
  }
1758
1841
  }
1759
1842
  }
1760
-
1761
1843
  return null;
1762
1844
  },
1763
- frozenFooterColumnGroup() {
1764
- if (this.allChildren) {
1765
- for (let child of this.allChildren) {
1766
- if (child.$vnode.tag.indexOf('columngroup') !== -1 && child.type === 'frozenfooter') {
1767
- return child;
1768
- }
1769
- }
1770
- }
1771
-
1772
- return null;
1845
+ hasFilters() {
1846
+ return this.filters && Object.keys(this.filters).length > 0 && this.filters.constructor === Object;
1773
1847
  },
1774
1848
  processedData() {
1775
- if (this.lazy) {
1776
- return this.value;
1777
- }
1778
- else {
1779
- if (this.value && this.value.length) {
1780
- let data = this.value;
1849
+ let data = this.value || [];
1850
+
1851
+ if (!this.lazy) {
1852
+ if (data && data.length) {
1853
+ if (this.hasFilters) {
1854
+ data = this.filter(data);
1855
+ }
1781
1856
 
1782
1857
  if (this.sorted) {
1783
1858
  if(this.sortMode === 'single')
@@ -1785,17 +1860,10 @@ export default {
1785
1860
  else if(this.sortMode === 'multiple')
1786
1861
  data = this.sortMultiple(data);
1787
1862
  }
1788
-
1789
- if (this.hasFilters()) {
1790
- data = this.filter(data);
1791
- }
1792
-
1793
- return data;
1794
- }
1795
- else {
1796
- return null;
1797
1863
  }
1798
1864
  }
1865
+
1866
+ return data;
1799
1867
  },
1800
1868
  dataToRender() {
1801
1869
  const data = this.processedData;
@@ -1834,13 +1902,19 @@ export default {
1834
1902
  return ['p-datatable-loading-icon pi-spin', this.loadingIcon];
1835
1903
  },
1836
1904
  allRowsSelected() {
1837
- const val = this.processedData;
1838
- return (val && val.length > 0 && this.selection && this.selection.length > 0 && this.selection.length === val.length);
1905
+ const val = this.frozenValue ? [...this.frozenValue, ...this.processedData]: this.processedData;
1906
+ const length = this.lazy ? this.totalRecords : (val ? val.length : 0);
1907
+ return (val && length > 0 && this.selection && this.selection.length > 0 && this.selection.length === length);
1908
+ },
1909
+ attributeSelector() {
1910
+ return UniqueComponentId();
1911
+ },
1912
+ groupRowSortField() {
1913
+ return this.sortMode === 'single' ? this.sortField : (this.d_groupRowsSortMeta ? this.d_groupRowsSortMeta.field : null);
1839
1914
  }
1840
1915
  },
1841
1916
  components: {
1842
1917
  'DTPaginator': Paginator,
1843
- 'DTScrollableView': ScrollableView,
1844
1918
  'DTTableHeader': TableHeader,
1845
1919
  'DTTableBody': TableBody,
1846
1920
  'DTTableFooter': TableFooter,
@@ -1855,7 +1929,7 @@ export default {
1855
1929
 
1856
1930
  .p-datatable table {
1857
1931
  border-collapse: collapse;
1858
- width: 100%;
1932
+ min-width: 100%;
1859
1933
  table-layout: fixed;
1860
1934
  }
1861
1935
 
@@ -1876,10 +1950,11 @@ export default {
1876
1950
  justify-content: center;
1877
1951
  }
1878
1952
 
1879
- .p-datatable-auto-layout > .p-datatable-wrapper {
1953
+ .p-datatable-responsive-scroll > .p-datatable-wrapper {
1880
1954
  overflow-x: auto;
1881
1955
  }
1882
1956
 
1957
+ .p-datatable-responsive-scroll > .p-datatable-wrapper > table,
1883
1958
  .p-datatable-auto-layout > .p-datatable-wrapper > table {
1884
1959
  table-layout: auto;
1885
1960
  }
@@ -1889,60 +1964,102 @@ export default {
1889
1964
  }
1890
1965
 
1891
1966
  /* Scrollable */
1892
- .p-datatable-scrollable-wrapper {
1967
+ .p-datatable-scrollable .p-datatable-wrapper {
1893
1968
  position: relative;
1969
+ overflow: auto;
1894
1970
  }
1895
1971
 
1896
- .p-datatable-scrollable-header,
1897
- .p-datatable-scrollable-footer {
1898
- overflow: hidden;
1972
+ .p-datatable-scrollable .p-datatable-thead,
1973
+ .p-datatable-scrollable .p-datatable-tbody,
1974
+ .p-datatable-scrollable .p-datatable-tfoot {
1975
+ display: block;
1899
1976
  }
1900
1977
 
1901
- .p-datatable-scrollable-body {
1902
- overflow: auto;
1903
- position: relative;
1978
+ .p-datatable-scrollable .p-datatable-thead > tr,
1979
+ .p-datatable-scrollable .p-datatable-tbody > tr,
1980
+ .p-datatable-scrollable .p-datatable-tfoot > tr {
1981
+ display: flex;
1982
+ flex-wrap: nowrap;
1983
+ width: 100%;
1904
1984
  }
1905
1985
 
1906
- .p-datatable-scrollable-body > table > .p-datatable-tbody > tr:first-child > td {
1907
- border-top: 0 none;
1986
+ .p-datatable-scrollable .p-datatable-thead > tr > th,
1987
+ .p-datatable-scrollable .p-datatable-tbody > tr > td,
1988
+ .p-datatable-scrollable .p-datatable-tfoot > tr > td {
1989
+ display: flex;
1990
+ flex: 1 1 0;
1991
+ align-items: center;
1908
1992
  }
1909
1993
 
1910
- .p-datatable-virtual-table {
1911
- position: absolute;
1994
+ .p-datatable-scrollable .p-datatable-thead {
1995
+ position: sticky;
1996
+ top: 0;
1997
+ z-index: 1;
1912
1998
  }
1913
1999
 
1914
- /* Frozen Columns */
1915
- .p-datatable-frozen-view .p-datatable-scrollable-body {
1916
- overflow: hidden;
2000
+ .p-datatable-scrollable .p-datatable-frozen-tbody {
2001
+ position: sticky;
2002
+ z-index: 1;
1917
2003
  }
1918
2004
 
1919
- .p-datatable-frozen-view > .p-datatable-scrollable-body > table > .p-datatable-tbody > tr > td:last-child {
1920
- border-right: 0 none;
2005
+ .p-datatable-scrollable .p-datatable-tfoot {
2006
+ position: sticky;
2007
+ bottom: 0;
2008
+ z-index: 1;
1921
2009
  }
1922
2010
 
1923
- .p-datatable-unfrozen-view {
1924
- position: absolute;
1925
- top: 0;
2011
+ .p-datatable-scrollable .p-frozen-column {
2012
+ position: sticky;
2013
+ background: inherit;
2014
+ }
2015
+
2016
+ .p-datatable-scrollable th.p-frozen-column {
2017
+ z-index: 1;
2018
+ }
2019
+
2020
+ .p-datatable-scrollable-both .p-datatable-thead > tr > th,
2021
+ .p-datatable-scrollable-both .p-datatable-tbody > tr > td,
2022
+ .p-datatable-scrollable-both .p-datatable-tfoot > tr > td,
2023
+ .p-datatable-scrollable-horizontal .p-datatable-thead > tr > th
2024
+ .p-datatable-scrollable-horizontal .p-datatable-tbody > tr > td,
2025
+ .p-datatable-scrollable-horizontal .p-datatable-tfoot > tr > td {
2026
+ flex: 0 0 auto;
1926
2027
  }
1927
2028
 
1928
- /* Flex Scrollable */
1929
2029
  .p-datatable-flex-scrollable {
1930
2030
  display: flex;
1931
2031
  flex-direction: column;
1932
- flex: 1;
1933
2032
  height: 100%;
1934
2033
  }
1935
2034
 
1936
- .p-datatable-flex-scrollable .p-datatable-scrollable-wrapper,
1937
- .p-datatable-flex-scrollable .p-datatable-scrollable-view {
2035
+ .p-datatable-flex-scrollable .p-datatable-wrapper {
1938
2036
  display: flex;
1939
2037
  flex-direction: column;
1940
2038
  flex: 1;
1941
2039
  height: 100%;
1942
2040
  }
1943
2041
 
1944
- .p-datatable-flex-scrollable .p-datatable-scrollable-body {
1945
- flex: 1;
2042
+ .p-datatable-scrollable .p-rowgroup-header {
2043
+ position: sticky;
2044
+ z-index: 1;
2045
+ }
2046
+
2047
+ .p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,
2048
+ .p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot {
2049
+ display: table;
2050
+ border-collapse: collapse;
2051
+ width: 100%;
2052
+ table-layout: fixed;
2053
+ }
2054
+
2055
+ .p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead > tr,
2056
+ .p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot > tr {
2057
+ display: table-row;
2058
+ }
2059
+
2060
+ .p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead > tr > th,
2061
+ .p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot > tr > td {
2062
+ display: table-cell;
1946
2063
  }
1947
2064
 
1948
2065
  /* Resizable */
@@ -1979,6 +2096,11 @@ export default {
1979
2096
  border: 1px solid transparent;
1980
2097
  }
1981
2098
 
2099
+ .p-datatable .p-column-header-content {
2100
+ display: flex;
2101
+ align-items: center;
2102
+ }
2103
+
1982
2104
  .p-datatable .p-column-resizer-helper {
1983
2105
  width: 1px;
1984
2106
  position: absolute;
@@ -2020,4 +2142,73 @@ export default {
2020
2142
  justify-content: center;
2021
2143
  z-index: 2;
2022
2144
  }
2145
+
2146
+ /* Filter */
2147
+ .p-column-filter-row {
2148
+ display: flex;
2149
+ align-items: center;
2150
+ width: 100%;
2151
+ }
2152
+
2153
+ .p-column-filter-menu {
2154
+ display: inline-flex;
2155
+ margin-left: auto;
2156
+ }
2157
+
2158
+ .p-column-filter-row .p-column-filter-element {
2159
+ flex: 1 1 auto;
2160
+ width: 1%;
2161
+ }
2162
+
2163
+ .p-column-filter-menu-button,
2164
+ .p-column-filter-clear-button {
2165
+ display: inline-flex;
2166
+ justify-content: center;
2167
+ align-items: center;
2168
+ cursor: pointer;
2169
+ text-decoration: none;
2170
+ overflow: hidden;
2171
+ position: relative;
2172
+ }
2173
+
2174
+ .p-column-filter-overlay {
2175
+ position: absolute;
2176
+ top: 0;
2177
+ left: 0;
2178
+ }
2179
+
2180
+ .p-column-filter-row-items {
2181
+ margin: 0;
2182
+ padding: 0;
2183
+ list-style: none;
2184
+ }
2185
+
2186
+ .p-column-filter-row-item {
2187
+ cursor: pointer;
2188
+ }
2189
+
2190
+ .p-column-filter-add-button,
2191
+ .p-column-filter-remove-button {
2192
+ justify-content: center;
2193
+ }
2194
+
2195
+ .p-column-filter-add-button .p-button-label,
2196
+ .p-column-filter-remove-button .p-button-label {
2197
+ flex-grow: 0;
2198
+ }
2199
+
2200
+ .p-column-filter-buttonbar {
2201
+ display: flex;
2202
+ align-items: center;
2203
+ justify-content: space-between;
2204
+ }
2205
+
2206
+ .p-column-filter-buttonbar .p-button:not(.p-button-icon-only) {
2207
+ width: auto;
2208
+ }
2209
+
2210
+ /* Responsive */
2211
+ .p-datatable .p-datatable-tbody > tr > td > .p-column-title {
2212
+ display: none;
2213
+ }
2023
2214
  </style>