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
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <td :style="containerStyle" :class="containerClass" role="cell"
3
+ :colspan="columnProp('colspan')" :rowspan="columnProp('rowspan')">
4
+ <ColumnSlot :data="column.$scopedSlots.footer" :column="column" type="footer" v-if="column.$scopedSlots && column.$scopedSlots.footer"/>
5
+ {{columnProp('footer')}}
6
+ </td>
7
+ </template>
8
+
9
+ <script>
10
+ import ColumnSlot from './ColumnSlot';
11
+ import DomHandler from '../utils/DomHandler';
12
+ import ObjectUtils from '../utils/ObjectUtils';
13
+
14
+ export default {
15
+ props: {
16
+ column: {
17
+ type: null,
18
+ default: null
19
+ }
20
+ },
21
+ data() {
22
+ return {
23
+ styleObject: {
24
+ left: '',
25
+ right: ''
26
+ }
27
+ }
28
+ },
29
+ mounted() {
30
+ if (this.columnProp('frozen')) {
31
+ this.updateStickyPosition();
32
+ }
33
+ },
34
+ updated() {
35
+ if (this.columnProp('frozen')) {
36
+ this.updateStickyPosition();
37
+ }
38
+ },
39
+ methods: {
40
+ columnProp(prop) {
41
+ return ObjectUtils.getVNodeProp(this.column, prop);
42
+ },
43
+ updateStickyPosition() {
44
+ if (this.columnProp('frozen')) {
45
+ let align = this.columnProp('alignFrozen');
46
+ if (align === 'right') {
47
+ let right = 0;
48
+ let next = this.$el.nextElementSibling;
49
+ if (next) {
50
+ right = DomHandler.getOuterWidth(next) + parseFloat(next.style.left);
51
+ }
52
+ this.styleObject.right = right + 'px';
53
+ }
54
+ else {
55
+ let left = 0;
56
+ let prev = this.$el.previousElementSibling;
57
+ if (prev) {
58
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);
59
+ }
60
+ this.styleObject.left = left + 'px';
61
+ }
62
+ }
63
+ }
64
+ },
65
+ computed: {
66
+ containerClass() {
67
+ return [this.columnProp('footerClass'), this.columnProp('className'), {
68
+ 'p-frozen-column': this.columnProp('frozen')
69
+ }];
70
+ },
71
+ containerStyle() {
72
+ let bodyStyle = this.columnProp('footerStyle');
73
+ let columnStyle = this.columnProp('styles');
74
+
75
+ return this.columnProp('frozen') ? [columnStyle, bodyStyle, this.styleObject]: [columnStyle, bodyStyle];
76
+ }
77
+ },
78
+ components: {
79
+ 'ColumnSlot': ColumnSlot
80
+ }
81
+ }
82
+ </script>
@@ -0,0 +1,246 @@
1
+ <template>
2
+ <th :style="containerStyle" :class="containerClass" :tabindex="columnProp('sortable') ? '0' : null" role="cell"
3
+ @click="onClick" @keydown="onKeyDown" @mousedown="onMouseDown"
4
+ @dragstart="onDragStart" @dragover="onDragOver" @dragleave="onDragLeave" @drop="onDrop"
5
+ :colspan="columnProp('colspan')" :rowspan="columnProp('rowspan')" :aria-sort="ariaSort">
6
+ <span class="p-column-resizer" @mousedown="onResizeStart" v-if="resizableColumns && !columnProp('frozen')"></span>
7
+ <div class="p-column-header-content">
8
+ <ColumnSlot :data="column.$scopedSlots.header" :column="column" type="header" v-if="column.$scopedSlots && column.$scopedSlots.header"/>
9
+ <span class="p-column-title" v-if="columnProp('header')">{{columnProp('header')}}</span>
10
+ <span v-if="columnProp('sortable')" :class="sortableColumnIcon"></span>
11
+ <span v-if="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
12
+ <DTHeaderCheckbox :checked="allRowsSelected" @change="onHeaderCheckboxChange" :disabled="empty" v-if="columnProp('selectionMode') ==='multiple' && filterDisplay !== 'row'" />
13
+ <DTColumnFilter v-if="filterDisplay === 'menu' && column.$scopedSlots.filter" :field="columnProp('filterField')||columnProp('field')" :type="columnProp('dataType')" display="menu"
14
+ :showMenu="columnProp('showFilterMenu')" :filterElement="column.$scopedSlots.filter" :templates="column.$scopedSlots"
15
+ :filterHeaderTemplate="column.$scopedSlots.filterheader" :filterFooterTemplate="column.$scopedSlots.filterfooter"
16
+ :filterClearTemplate="column.$scopedSlots.filterclear" :filterApplyTemplate="column.$scopedSlots.filterapply"
17
+ :filters="filters" :filtersStore="filtersStore" @filter-change="$emit('filter-change', $event)" @filter-apply="$emit('filter-apply')" :filterMenuStyle="columnProp('filterMenuStyle')" :filterMenuClass="columnProp('filterMenuClass')"
18
+ :showOperator="columnProp('showFilterOperator')" :showClearButton="columnProp('showClearButton')" :showApplyButton="columnProp('showApplyButton')"
19
+ :showMatchModes="columnProp('showFilterMatchModes')" :showAddButton="columnProp('showAddButton')" :matchModeOptions="columnProp('filterMatchModeOptions')" :maxConstraints="columnProp('maxConstraints')"
20
+ @operator-change="$emit('operator-change',$event)" @matchmode-change="$emit('matchmode-change', $event)" @constraint-add="$emit('constraint-add', $event)" @constraint-remove="$emit('constraint-remove', $event)" @apply-click="$emit('apply-click',$event)"/>
21
+ </div>
22
+ </th>
23
+ </template>
24
+
25
+ <script>
26
+ import DomHandler from '../utils/DomHandler';
27
+ import ObjectUtils from '../utils/ObjectUtils';
28
+ import ColumnSlot from './ColumnSlot.vue';
29
+ import HeaderCheckbox from './HeaderCheckbox.vue';
30
+ import ColumnFilter from './ColumnFilter.vue';
31
+
32
+ export default {
33
+ props: {
34
+ column: {
35
+ type: Object,
36
+ default: null
37
+ },
38
+ resizableColumns: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ groupRowsBy: {
43
+ type: [Array,String],
44
+ default: null
45
+ },
46
+ sortMode: {
47
+ type: String,
48
+ default: 'single'
49
+ },
50
+ groupRowSortField: {
51
+ type: [String, Function],
52
+ default: null
53
+ },
54
+ sortField: {
55
+ type: [String, Function],
56
+ default: null
57
+ },
58
+ sortOrder: {
59
+ type: Number,
60
+ default: null
61
+ },
62
+ multiSortMeta: {
63
+ type: Array,
64
+ default: null
65
+ },
66
+ allRowsSelected: {
67
+ type: Boolean,
68
+ default: false
69
+ },
70
+ empty: {
71
+ type: Boolean,
72
+ default: false
73
+ },
74
+ filterDisplay: {
75
+ type: String,
76
+ default: null
77
+ },
78
+ filters: {
79
+ type: Object,
80
+ default: null
81
+ },
82
+ filtersStore: {
83
+ type: Object,
84
+ default: null
85
+ },
86
+ filterColumn: {
87
+ type: Boolean,
88
+ default: false
89
+ }
90
+ },
91
+ data() {
92
+ return {
93
+ styleObject: {
94
+ left: '',
95
+ right: ''
96
+ }
97
+ }
98
+ },
99
+ mounted() {
100
+ if (this.columnProp('frozen')) {
101
+ this.updateStickyPosition();
102
+ }
103
+ },
104
+ updated() {
105
+ if (this.columnProp('frozen')) {
106
+ this.updateStickyPosition();
107
+ }
108
+ },
109
+ methods: {
110
+ columnProp(prop) {
111
+ return ObjectUtils.getVNodeProp(this.column, prop);
112
+ },
113
+ onClick(event) {
114
+ this.$emit('column-click', {originalEvent: event, column: this.column});
115
+ },
116
+ onKeyDown(event) {
117
+ if (event.which === 13 && event.currentTarget.nodeName === 'TH' && DomHandler.hasClass(event.currentTarget, 'p-sortable-column')) {
118
+ this.$emit('column-click', {originalEvent: event, column: this.column});
119
+ }
120
+ },
121
+ onMouseDown(event) {
122
+ this.$emit('column-mousedown', {originalEvent: event, column: this.column});
123
+ },
124
+ onDragStart(event) {
125
+ this.$emit('column-dragstart', event);
126
+ },
127
+ onDragOver(event) {
128
+ this.$emit('column-dragover', event);
129
+ },
130
+ onDragLeave(event) {
131
+ this.$emit('column-dragleave', event);
132
+ },
133
+ onDrop(event) {
134
+ this.$emit('column-drop', event);
135
+ },
136
+ onResizeStart(event) {
137
+ this.$emit('column-resizestart', event);
138
+ },
139
+ getMultiSortMetaIndex() {
140
+ return this.multiSortMeta.findIndex(meta => (meta.field === this.columnProp('field') || meta.field === this.columnProp('sortField')));
141
+ },
142
+ getBadgeValue() {
143
+ let index = this.getMultiSortMetaIndex();
144
+
145
+ return (this.groupRowsBy && this.groupRowsBy === this.groupRowSortField) && index > -1 ? index : index + 1;
146
+ },
147
+ isMultiSorted() {
148
+ return this.sortMode === 'multiple' && this.columnProp('sortable') && this.getMultiSortMetaIndex() > -1
149
+ },
150
+ isColumnSorted() {
151
+ return this.sortMode === 'single' ? (this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField'))) : this.isMultiSorted();
152
+ },
153
+ updateStickyPosition() {
154
+ if (this.columnProp('frozen')) {
155
+ let align = this.columnProp('alignFrozen');
156
+ if (align === 'right') {
157
+ let right = 0;
158
+ let next = this.$el.nextElementSibling;
159
+ if (next) {
160
+ right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
161
+ }
162
+ this.styleObject.right = right + 'px';
163
+ }
164
+ else {
165
+ let left = 0;
166
+ let prev = this.$el.previousElementSibling;
167
+ if (prev) {
168
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
169
+ }
170
+ this.styleObject.left = left + 'px';
171
+ }
172
+
173
+ let filterRow = this.$el.parentElement.nextElementSibling;
174
+ if (filterRow) {
175
+ let index = DomHandler.index(this.$el);
176
+ filterRow.children[index].style.left = this.styleObject.left;
177
+ filterRow.children[index].style.right = this.styleObject.right;
178
+ }
179
+ }
180
+ },
181
+ onHeaderCheckboxChange(event) {
182
+ this.$emit('checkbox-change', event);
183
+ }
184
+ },
185
+ computed: {
186
+ containerClass() {
187
+ return [this.filterColumn ? this.columnProp('filterHeaderClass') : this.columnProp('headerClass'), this.columnProp('className'), {
188
+ 'p-sortable-column': this.columnProp('sortable'),
189
+ 'p-resizable-column': this.resizableColumns,
190
+ 'p-highlight': this.isColumnSorted(),
191
+ 'p-filter-column': this.filterColumn,
192
+ 'p-frozen-column': this.columnProp('frozen')
193
+ }];
194
+ },
195
+ containerStyle() {
196
+ let headerStyle = this.filterColumn ? this.columnProp('filterHeaderStyle'): this.columnProp('headerStyle');
197
+ let columnStyle = this.columnProp('styles');
198
+
199
+ return this.columnProp('frozen') ? [columnStyle, headerStyle, this.styleObject]: [columnStyle, headerStyle];
200
+ },
201
+ sortableColumnIcon() {
202
+ let sorted = false;
203
+ let sortOrder = null;
204
+
205
+ if (this.sortMode === 'single') {
206
+ sorted = this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField'));
207
+ sortOrder = sorted ? this.sortOrder: 0;
208
+ }
209
+ else if (this.sortMode === 'multiple') {
210
+ let metaIndex = this.getMultiSortMetaIndex();
211
+ if (metaIndex > -1) {
212
+ sorted = true;
213
+ sortOrder = this.multiSortMeta[metaIndex].order;
214
+ }
215
+ }
216
+
217
+ return [
218
+ 'p-sortable-column-icon pi pi-fw', {
219
+ 'pi-sort-alt': !sorted,
220
+ 'pi-sort-amount-up-alt': sorted && sortOrder > 0,
221
+ 'pi-sort-amount-down': sorted && sortOrder < 0
222
+ }
223
+ ];
224
+ },
225
+ ariaSort() {
226
+ if (this.columnProp('sortable')) {
227
+ const sortIcon = this.sortableColumnIcon;
228
+ if (sortIcon[1]['pi-sort-amount-down'])
229
+ return 'descending';
230
+ else if (sortIcon[1]['pi-sort-amount-up-alt'])
231
+ return 'ascending';
232
+ else
233
+ return 'none';
234
+ }
235
+ else {
236
+ return null;
237
+ }
238
+ }
239
+ },
240
+ components: {
241
+ 'DTHeaderCheckbox': HeaderCheckbox,
242
+ 'DTColumnFilter': ColumnFilter,
243
+ 'ColumnSlot': ColumnSlot
244
+ }
245
+ }
246
+ </script>
@@ -1,42 +1,42 @@
1
1
  <template>
2
- <tbody class="p-datatable-tbody">
2
+ <tbody class="p-datatable-tbody" role="rowgroup">
3
3
  <template v-if="!empty">
4
4
  <template v-for="(rowData, index) of value">
5
- <tr class="p-rowgroup-header" v-if="templates['groupheader'] && rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, index)" :key="getRowKey(rowData, index) + '_subheader'">
6
- <td :colspan="columns.length - 1">
5
+ <tr class="p-rowgroup-header" :style="rowGroupHeaderStyle" v-if="templates['groupheader'] && rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, index)" :key="getRowKey(rowData, index) + '_subheader' + index" role="row">
6
+ <td :colspan="columnsLength - 1">
7
7
  <button class="p-row-toggler p-link" @click="onRowGroupToggle($event, rowData)" v-if="expandableRowGroups" type="button">
8
8
  <span :class="rowGroupTogglerIcon(rowData)"></span>
9
9
  </button>
10
10
  <DTRowExpansionTemplate :template="templates['groupheader']" :data="rowData" :index="index" />
11
11
  </td>
12
12
  </tr>
13
- <tr :class="getRowClass(rowData)" :key="getRowKey(rowData, index)"
13
+ <tr :class="getRowClass(rowData)" :style="rowStyle" :key="getRowKey(rowData, index)"
14
14
  v-if="expandableRowGroups ? isRowGroupExpanded(rowData): true"
15
- @click="onRowClick($event, rowData, index)" @dblclick="onRowDblClick($event, rowData, index)" @contextmenu="onRowRightClick($event, rowData, index)" @touchend="onRowTouchEnd($event)"
16
- @keydown="onRowKeyDown($event, rowData, index)" :tabindex="selectionMode || contextMenu ? '0' : null"
17
- @mousedown="onRowMouseDown($event)" @dragstart="onRowDragStart($event, index)" @dragover="onRowDragOver($event,index)" @dragleave="onRowDragLeave($event)" @dragend="onRowDragEnd($event)" @drop="onRowDrop($event)">
15
+ @click="onRowClick($event, rowData, index)" @dblclick="onRowDblClick($event, rowData, index)" @contextmenu="onRowRightClick($event, rowData, index)" @touchend="onRowTouchEnd($event)" @keydown="onRowKeyDown($event, rowData, index)" :tabindex="selectionMode || contextMenu ? '0' : null"
16
+ @mousedown="onRowMouseDown($event)" @dragstart="onRowDragStart($event, index)" @dragover="onRowDragOver($event,index)" @dragleave="onRowDragLeave($event)" @dragend="onRowDragEnd($event)" @drop="onRowDrop($event)" role="row">
18
17
  <template v-for="(col,i) of columns">
19
- <DTBodyCell v-if="shouldRenderBodyCell(value, col, index)" :key="col.columnKey||col.field||i" :rowData="rowData" :column="col" :index="index" :selected="isSelected(rowData)"
20
- :rowTogglerIcon="col.expander ? rowTogglerIcon(rowData): null"
18
+ <DTBodyCell v-if="shouldRenderBodyCell(value, col, index)" :rowData="rowData" :column="col" :rowIndex="index" :index="i" :selected="isSelected(rowData)" :key="columnProp(col,'columnKey')+i||columnProp(col,'field')+i||i"
19
+ :rowTogglerIcon="columnProp(col,'expander') ? rowTogglerIcon(rowData): null" :frozenRow="frozenRow"
21
20
  :rowspan="rowGroupMode === 'rowspan' ? calculateRowGroupSize(value, col, index) : null"
22
- :editMode="editMode" :editing="editMode === 'row' && isRowEditing(rowData)"
21
+ :editMode="editMode" :editing="editMode === 'row' && isRowEditing(rowData)" :responsiveLayout="responsiveLayout"
23
22
  @radio-change="onRadioChange($event)" @checkbox-change="onCheckboxChange($event)" @row-toggle="onRowToggle($event)"
24
23
  @cell-edit-init="onCellEditInit($event)" @cell-edit-complete="onCellEditComplete($event)" @cell-edit-cancel="onCellEditCancel($event)"
25
- @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"/>
24
+ @row-edit-init="onRowEditInit($event)" @row-edit-save="onRowEditSave($event)" @row-edit-cancel="onRowEditCancel($event)"
25
+ :editingMeta="editingMeta" @editing-meta-change="onEditingMetaChange"/>
26
26
  </template>
27
27
  </tr>
28
- <tr class="p-datatable-row-expansion" v-if="templates['expansion'] && expandedRows && isRowExpanded(rowData)" :key="getRowKey(rowData, index) + '_expansion'">
29
- <td :colspan="columns.length">
28
+ <tr class="p-datatable-row-expansion" v-if="templates['expansion'] && expandedRows && isRowExpanded(rowData)" :key="getRowKey(rowData, index) + '_expansion' + index" role="row">
29
+ <td :colspan="columnsLength">
30
30
  <DTRowExpansionTemplate :template="templates['expansion']" :data="rowData" :index="index" />
31
31
  </td>
32
32
  </tr>
33
- <tr class="p-rowgroup-footer" v-if="templates['groupfooter'] && rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, index)" :key="getRowKey(rowData, index) + '_subfooter'">
33
+ <tr class="p-rowgroup-footer" v-if="templates['groupfooter'] && rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, index)" :key="getRowKey(rowData, index) + '_subfooter' + index" role="row">
34
34
  <DTRowExpansionTemplate :template="templates['groupfooter']" :data="rowData" :index="index" />
35
35
  </tr>
36
36
  </template>
37
37
  </template>
38
38
  <tr v-else class="p-datatable-emptymessage">
39
- <td :colspan="columns.length">
39
+ <td :colspan="columnsLength">
40
40
  <DTSlotTemplate :template="templates.empty" v-if="templates.empty && !loading"/>
41
41
  <DTSlotTemplate :template="templates.loading" v-if="templates.loading && loading"/>
42
42
  </td>
@@ -45,6 +45,7 @@
45
45
  </template>
46
46
 
47
47
  <script>
48
+ import DomHandler from '../utils/DomHandler';
48
49
  import ObjectUtils from '../utils/ObjectUtils';
49
50
  import BodyCell from './BodyCell.vue';
50
51
 
@@ -101,6 +102,10 @@ export default {
101
102
  type: null,
102
103
  default: null
103
104
  },
105
+ frozenRow: {
106
+ type: Boolean,
107
+ default: false
108
+ },
104
109
  empty: {
105
110
  type: Boolean,
106
111
  default: false
@@ -165,6 +170,10 @@ export default {
165
170
  type: null,
166
171
  default: null
167
172
  },
173
+ rowStyle: {
174
+ type: null,
175
+ default: null
176
+ },
168
177
  editMode: {
169
178
  type: String,
170
179
  default: null
@@ -181,6 +190,10 @@ export default {
181
190
  type: null,
182
191
  default: null
183
192
  },
193
+ editingMeta: {
194
+ type: Object,
195
+ default: null
196
+ },
184
197
  loading: {
185
198
  type: Boolean,
186
199
  default: false
@@ -188,9 +201,43 @@ export default {
188
201
  templates: {
189
202
  type: null,
190
203
  default: null
204
+ },
205
+ scrollable: {
206
+ type: Boolean,
207
+ default: false
208
+ },
209
+ responsiveLayout: {
210
+ type: String,
211
+ default: 'stack'
212
+ }
213
+ },
214
+ mounted() {
215
+ if (this.frozenRow) {
216
+ this.updateFrozenRowStickyPosition();
217
+ }
218
+
219
+ if (this.scrollable && this.rowGroupMode === 'subheader') {
220
+ this.updateFrozenRowGroupHeaderStickyPosition();
221
+ }
222
+ },
223
+ updated() {
224
+ if (this.frozenRow) {
225
+ this.updateFrozenRowStickyPosition();
226
+ }
227
+
228
+ if (this.scrollable && this.rowGroupMode === 'subheader') {
229
+ this.updateFrozenRowGroupHeaderStickyPosition();
230
+ }
231
+ },
232
+ data() {
233
+ return {
234
+ rowGroupHeaderStyleObject: {}
191
235
  }
192
236
  },
193
237
  methods: {
238
+ columnProp(col, prop) {
239
+ return ObjectUtils.getVNodeProp(col, prop);
240
+ },
194
241
  shouldRenderRowGroupHeader(value, rowData, i) {
195
242
  let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.groupRowsBy);
196
243
  let prevRowData = value[i - 1];
@@ -208,7 +255,7 @@ export default {
208
255
  getRowClass(rowData) {
209
256
  let rowStyleClass = [];
210
257
  if (this.selectionMode) {
211
- rowStyleClass.push('p-selectable-row');
258
+ rowStyleClass.push('p-selectable-row');
212
259
  }
213
260
 
214
261
  if (this.selection) {
@@ -252,14 +299,14 @@ export default {
252
299
  shouldRenderBodyCell(value, column, i) {
253
300
  if (this.rowGroupMode) {
254
301
  if (this.rowGroupMode === 'subheader') {
255
- return this.groupRowsBy !== column.field;
302
+ return this.groupRowsBy !== this.columnProp(column, 'field');
256
303
  }
257
304
  else if (this.rowGroupMode === 'rowspan') {
258
305
  if (this.isGrouped(column)) {
259
306
  let prevRowData = value[i - 1];
260
307
  if (prevRowData) {
261
- let currentRowFieldData = ObjectUtils.resolveFieldData(value[i], column.field);
262
- let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, column.field);
308
+ let currentRowFieldData = ObjectUtils.resolveFieldData(value[i], this.columnProp(column, 'field'));
309
+ let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.columnProp(column, 'field'));
263
310
  return currentRowFieldData !== previousRowFieldData;
264
311
  }
265
312
  else {
@@ -272,12 +319,12 @@ export default {
272
319
  }
273
320
  }
274
321
  else {
275
- return true;
322
+ return !this.columnProp(column, 'hidden');
276
323
  }
277
324
  },
278
325
  calculateRowGroupSize(value, column, index) {
279
326
  if (this.isGrouped(column)) {
280
- let currentRowFieldData = ObjectUtils.resolveFieldData(value[index], column.field);
327
+ let currentRowFieldData = ObjectUtils.resolveFieldData(value[index], this.columnProp(column, 'field'));
281
328
  let nextRowFieldData = currentRowFieldData;
282
329
  let groupRowSpan = 0;
283
330
 
@@ -285,7 +332,7 @@ export default {
285
332
  groupRowSpan++;
286
333
  let nextRowData = value[++index];
287
334
  if (nextRowData) {
288
- nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, column.field);
335
+ nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.columnProp(column, 'field'));
289
336
  }
290
337
  else {
291
338
  break;
@@ -307,7 +354,7 @@ export default {
307
354
  return ['p-row-toggler-icon pi', icon];
308
355
  },
309
356
  isGrouped(column) {
310
- if (this.groupRowsBy) {
357
+ if (this.groupRowsBy && this.columnProp(column, 'field')) {
311
358
  if (Array.isArray(this.groupRowsBy))
312
359
  return this.groupRowsBy.indexOf(column.field) > -1;
313
360
  else
@@ -447,6 +494,28 @@ export default {
447
494
  },
448
495
  onRowEditCancel(event) {
449
496
  this.$emit('row-edit-cancel', event);
497
+ },
498
+ onEditingMetaChange(event) {
499
+ this.$emit('editing-meta-change', event);
500
+ },
501
+ updateFrozenRowStickyPosition() {
502
+ this.$el.style.top = DomHandler.getOuterHeight(this.$el.previousElementSibling) + 'px';
503
+ },
504
+ updateFrozenRowGroupHeaderStickyPosition() {
505
+ let tableHeaderHeight = DomHandler.getOuterHeight(this.$el.previousElementSibling);
506
+ this.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';
507
+ }
508
+ },
509
+ computed: {
510
+ columnsLength() {
511
+ return this.columns ? this.columns.length : 0;
512
+ },
513
+ rowGroupHeaderStyle() {
514
+ if (this.scrollable) {
515
+ return {top: this.rowGroupHeaderStyleObject.top};
516
+ }
517
+
518
+ return null;
450
519
  }
451
520
  },
452
521
  components: {
@@ -1,26 +1,23 @@
1
1
  <template>
2
- <tfoot class="p-datatable-tfoot" v-if="hasFooter">
3
- <tr v-if="!columnGroup">
4
- <td v-for="(col,i) of columns" :key="col.columnKey||col.field||i" :style="col.footerStyle" :class="col.footerClass"
5
- :colspan="col.colspan" :rowspan="col.rowspan">
6
- <DTColumnSlot :column="col" type="footer" v-if="col.$scopedSlots.footer" />
7
- {{col.footer}}
8
- </td>
2
+ <tfoot class="p-datatable-tfoot" v-if="hasFooter" role="rowgroup">
3
+ <tr v-if="!columnGroup" role="row">
4
+ <template v-for="(col,i) of columns">
5
+ <DTFooterCell :column="col" v-if="!columnProp(col,'hidden')" :key="columnProp(col,'columnKey')||columnProp(col,'field')||i"/>
6
+ </template>
9
7
  </tr>
10
8
  <template v-else>
11
- <tr v-for="(row,i) of columnGroup.rows" :key="i">
12
- <td v-for="(col,i) of row.columns" :key="col.columnKey||col.field||i" :style="col.footerStyle" :class="col.footerClass"
13
- :colspan="col.colspan" :rowspan="col.rowspan">
14
- <DTColumnSlot :column="col" type="footer" v-if="col.$scopedSlots.footer" />
15
- {{col.footer}}
16
- </td>
9
+ <tr v-for="(row,i) of columnGroup.$scopedSlots.default()" role="row" :key="i">
10
+ <template v-for="(col,j) of getFooterColumns(row)">
11
+ <DTFooterCell :column="col.child" v-if="!columnProp(col,'hidden')" :key="columnProp(col,'columnKey')||columnProp(col,'field')||j"/>
12
+ </template>
17
13
  </tr>
18
14
  </template>
19
15
  </tfoot>
20
16
  </template>
21
17
 
22
18
  <script>
23
- import ColumnSlot from './ColumnSlot.vue';
19
+ import FooterCell from './FooterCell.vue';
20
+ import ObjectUtils from '../utils/ObjectUtils';
24
21
 
25
22
  export default {
26
23
  props: {
@@ -33,6 +30,25 @@ export default {
33
30
  default: null
34
31
  },
35
32
  },
33
+ methods: {
34
+ columnProp(col, prop) {
35
+ return ObjectUtils.getVNodeProp(col, prop);
36
+ },
37
+ getFooterColumns(row){
38
+ let cols = [];
39
+
40
+ if (row.child && row.child.$scopedSlots.default) {
41
+ row.child.$scopedSlots.default().forEach(child => {
42
+ if (child.child && child.child.children && child.child.children instanceof Array)
43
+ cols = [...cols, ...child.child.children];
44
+ else if (child.componentOptions.tag === 'Column')
45
+ cols.push(child);
46
+ });
47
+
48
+ return cols;
49
+ }
50
+ }
51
+ },
36
52
  computed: {
37
53
  hasFooter() {
38
54
  let hasFooter = false;
@@ -40,9 +56,9 @@ export default {
40
56
  if (this.columnGroup) {
41
57
  hasFooter = true;
42
58
  }
43
- else {
59
+ else if (this.columns) {
44
60
  for (let col of this.columns) {
45
- if (col.footer || col.$scopedSlots.footer) {
61
+ if (this.columnProp(col, 'footer') || (col.$scopedSlots && col.$scopedSlots.footer)) {
46
62
  hasFooter = true;
47
63
  break;
48
64
  }
@@ -53,7 +69,7 @@ export default {
53
69
  }
54
70
  },
55
71
  components: {
56
- 'DTColumnSlot': ColumnSlot
72
+ 'DTFooterCell': FooterCell
57
73
  }
58
74
  }
59
- </script>
75
+ </script>