primevue 4.3.1 → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/accordionheader/AccordionHeader.vue +8 -2
  2. package/accordionheader/index.mjs +8 -1
  3. package/accordionheader/index.mjs.map +1 -1
  4. package/autocomplete/AutoComplete.vue +72 -16
  5. package/autocomplete/index.d.ts +3 -3
  6. package/autocomplete/index.mjs +84 -37
  7. package/autocomplete/index.mjs.map +1 -1
  8. package/avatar/Avatar.vue +13 -4
  9. package/avatar/index.d.ts +3 -3
  10. package/avatar/index.mjs +26 -6
  11. package/avatar/index.mjs.map +1 -1
  12. package/badge/Badge.vue +13 -2
  13. package/badge/index.d.ts +1 -1
  14. package/badge/index.mjs +18 -3
  15. package/badge/index.mjs.map +1 -1
  16. package/blockui/BlockUI.vue +15 -4
  17. package/blockui/index.mjs +13 -4
  18. package/blockui/index.mjs.map +1 -1
  19. package/button/Button.vue +30 -3
  20. package/button/index.d.ts +3 -7
  21. package/button/index.mjs +28 -9
  22. package/button/index.mjs.map +1 -1
  23. package/cascadeselect/CascadeSelect.vue +1 -1
  24. package/cascadeselect/index.d.ts +2 -2
  25. package/cascadeselect/index.mjs +1 -2
  26. package/cascadeselect/index.mjs.map +1 -1
  27. package/checkbox/Checkbox.vue +15 -5
  28. package/checkbox/index.d.ts +2 -2
  29. package/checkbox/index.mjs +29 -7
  30. package/checkbox/index.mjs.map +1 -1
  31. package/chip/BaseChip.vue +1 -1
  32. package/chip/Chip.vue +9 -1
  33. package/chip/index.d.ts +1 -1
  34. package/chip/index.mjs +13 -3
  35. package/chip/index.mjs.map +1 -1
  36. package/colorpicker/ColorPicker.vue +10 -2
  37. package/colorpicker/index.d.ts +1 -1
  38. package/colorpicker/index.mjs +9 -2
  39. package/colorpicker/index.mjs.map +1 -1
  40. package/column/index.d.ts +3 -3
  41. package/columngroup/index.d.ts +2 -2
  42. package/confirmationoptions/index.d.ts +1 -1
  43. package/datatable/BodyCell.vue +4 -1
  44. package/datatable/BodyRow.vue +2 -0
  45. package/datatable/ColumnFilter.vue +1 -1
  46. package/datatable/DataTable.vue +103 -44
  47. package/datatable/HeaderCheckbox.vue +2 -2
  48. package/datatable/RowCheckbox.vue +1 -1
  49. package/datatable/TableBody.vue +12 -1
  50. package/datatable/TableFooter.vue +9 -1
  51. package/datatable/TableHeader.vue +9 -2
  52. package/datatable/index.d.ts +45 -37
  53. package/datatable/index.mjs +170 -101
  54. package/datatable/index.mjs.map +1 -1
  55. package/dataview/DataView.vue +4 -0
  56. package/dataview/index.d.ts +61 -4
  57. package/dataview/index.mjs +6 -2
  58. package/dataview/index.mjs.map +1 -1
  59. package/datepicker/DatePicker.vue +370 -234
  60. package/datepicker/index.d.ts +162 -6
  61. package/datepicker/index.mjs +644 -384
  62. package/datepicker/index.mjs.map +1 -1
  63. package/dialog/Dialog.vue +48 -39
  64. package/dialog/index.d.ts +26 -1
  65. package/dialog/index.mjs +73 -50
  66. package/dialog/index.mjs.map +1 -1
  67. package/divider/Divider.vue +13 -3
  68. package/divider/index.d.ts +4 -4
  69. package/divider/index.mjs +18 -5
  70. package/divider/index.mjs.map +1 -1
  71. package/dock/index.d.ts +4 -4
  72. package/drawer/Drawer.vue +30 -20
  73. package/drawer/index.d.ts +12 -2
  74. package/drawer/index.mjs +42 -25
  75. package/drawer/index.mjs.map +1 -1
  76. package/fieldset/Fieldset.vue +8 -2
  77. package/fieldset/index.mjs +20 -10
  78. package/fieldset/index.mjs.map +1 -1
  79. package/fileupload/FileUpload.vue +1 -1
  80. package/fileupload/index.d.ts +2 -2
  81. package/fileupload/index.mjs +2 -2
  82. package/fileupload/index.mjs.map +1 -1
  83. package/floatlabel/index.d.ts +2 -2
  84. package/galleria/Galleria.vue +39 -3
  85. package/galleria/GalleriaItem.vue +8 -9
  86. package/galleria/index.d.ts +3 -3
  87. package/galleria/index.mjs +48 -11
  88. package/galleria/index.mjs.map +1 -1
  89. package/inplace/Inplace.vue +1 -1
  90. package/inplace/index.mjs +3 -2
  91. package/inplace/index.mjs.map +1 -1
  92. package/inputchips/index.d.ts +2 -2
  93. package/inputmask/InputMask.vue +15 -1
  94. package/inputmask/index.d.ts +3 -3
  95. package/inputmask/index.mjs +12 -1
  96. package/inputmask/index.mjs.map +1 -1
  97. package/inputnumber/BaseInputNumber.vue +4 -0
  98. package/inputnumber/InputNumber.vue +29 -14
  99. package/inputnumber/index.d.ts +6 -6
  100. package/inputnumber/index.mjs +47 -25
  101. package/inputnumber/index.mjs.map +1 -1
  102. package/inputotp/index.d.ts +3 -3
  103. package/inputtext/InputText.vue +10 -1
  104. package/inputtext/index.d.ts +4 -5
  105. package/inputtext/index.mjs +14 -1
  106. package/inputtext/index.mjs.map +1 -1
  107. package/keyfilter/index.mjs +12 -19
  108. package/keyfilter/index.mjs.map +1 -1
  109. package/knob/Knob.vue +1 -1
  110. package/knob/index.mjs +1 -1
  111. package/knob/index.mjs.map +1 -1
  112. package/listbox/Listbox.vue +9 -2
  113. package/listbox/index.mjs +11 -3
  114. package/listbox/index.mjs.map +1 -1
  115. package/megamenu/index.d.ts +2 -2
  116. package/menu/Menu.vue +8 -2
  117. package/menu/Menuitem.vue +14 -4
  118. package/menu/index.mjs +36 -16
  119. package/menu/index.mjs.map +1 -1
  120. package/message/Message.vue +16 -7
  121. package/message/index.d.ts +2 -2
  122. package/message/index.mjs +35 -13
  123. package/message/index.mjs.map +1 -1
  124. package/metergroup/MeterGroup.vue +9 -3
  125. package/metergroup/MeterGroupLabel.vue +10 -1
  126. package/metergroup/index.mjs +32 -7
  127. package/metergroup/index.mjs.map +1 -1
  128. package/multiselect/MultiSelect.vue +41 -6
  129. package/multiselect/index.d.ts +3 -3
  130. package/multiselect/index.mjs +53 -21
  131. package/multiselect/index.mjs.map +1 -1
  132. package/organizationchart/index.d.ts +2 -2
  133. package/overlaybadge/index.d.ts +1 -1
  134. package/package.json +3 -3
  135. package/paginator/Paginator.vue +2 -0
  136. package/paginator/index.d.ts +8 -0
  137. package/paginator/index.mjs +3 -1
  138. package/paginator/index.mjs.map +1 -1
  139. package/panel/Panel.vue +29 -22
  140. package/panel/index.d.ts +22 -2
  141. package/panel/index.mjs +55 -31
  142. package/panel/index.mjs.map +1 -1
  143. package/panelmenu/PanelMenuList.vue +1 -1
  144. package/panelmenu/index.mjs +1 -1
  145. package/panelmenu/index.mjs.map +1 -1
  146. package/password/Password.vue +21 -3
  147. package/password/index.d.ts +3 -3
  148. package/password/index.mjs +32 -10
  149. package/password/index.mjs.map +1 -1
  150. package/popover/Popover.vue +3 -3
  151. package/popover/index.mjs +3 -4
  152. package/popover/index.mjs.map +1 -1
  153. package/progressbar/ProgressBar.vue +11 -4
  154. package/progressbar/index.mjs +21 -7
  155. package/progressbar/index.mjs.map +1 -1
  156. package/radiobutton/RadioButton.vue +13 -3
  157. package/radiobutton/index.d.ts +3 -3
  158. package/radiobutton/index.mjs +24 -4
  159. package/radiobutton/index.mjs.map +1 -1
  160. package/rating/Rating.vue +19 -2
  161. package/rating/index.mjs +28 -7
  162. package/rating/index.mjs.map +1 -1
  163. package/scrolltop/ScrollTop.vue +2 -2
  164. package/scrolltop/index.d.ts +2 -2
  165. package/scrolltop/index.mjs +4 -2
  166. package/scrolltop/index.mjs.map +1 -1
  167. package/select/Select.vue +56 -16
  168. package/select/index.d.ts +2 -2
  169. package/select/index.mjs +111 -74
  170. package/select/index.mjs.map +1 -1
  171. package/selectbutton/SelectButton.vue +26 -9
  172. package/selectbutton/index.d.ts +2 -2
  173. package/selectbutton/index.mjs +30 -10
  174. package/selectbutton/index.mjs.map +1 -1
  175. package/skeleton/Skeleton.vue +7 -1
  176. package/skeleton/index.d.ts +3 -3
  177. package/skeleton/index.mjs +12 -1
  178. package/skeleton/index.mjs.map +1 -1
  179. package/slider/Slider.vue +11 -2
  180. package/slider/index.d.ts +2 -2
  181. package/slider/index.mjs +27 -8
  182. package/slider/index.mjs.map +1 -1
  183. package/speeddial/index.d.ts +5 -5
  184. package/splitbutton/index.d.ts +1 -1
  185. package/splitter/Splitter.vue +10 -2
  186. package/splitter/index.d.ts +3 -3
  187. package/splitter/index.mjs +19 -6
  188. package/splitter/index.mjs.map +1 -1
  189. package/step/Step.vue +25 -7
  190. package/step/index.mjs +44 -14
  191. package/step/index.mjs.map +1 -1
  192. package/steppanel/StepPanel.vue +9 -3
  193. package/steppanel/index.d.ts +8 -0
  194. package/steppanel/index.mjs +23 -8
  195. package/steppanel/index.mjs.map +1 -1
  196. package/stepper/StepperSeparator.vue +5 -2
  197. package/stepper/index.d.ts +4 -0
  198. package/tab/Tab.vue +12 -6
  199. package/tab/index.mjs +13 -5
  200. package/tab/index.mjs.map +1 -1
  201. package/tablist/TabList.vue +13 -2
  202. package/tablist/index.mjs +21 -8
  203. package/tablist/index.mjs.map +1 -1
  204. package/tabpanel/TabPanel.vue +2 -2
  205. package/tabpanel/index.mjs +2 -2
  206. package/tabpanel/index.mjs.map +1 -1
  207. package/tag/Tag.vue +11 -2
  208. package/tag/index.mjs +17 -3
  209. package/tag/index.mjs.map +1 -1
  210. package/textarea/Textarea.vue +10 -1
  211. package/textarea/index.d.ts +4 -5
  212. package/textarea/index.mjs +14 -1
  213. package/textarea/index.mjs.map +1 -1
  214. package/tieredmenu/TieredMenu.vue +1 -1
  215. package/tieredmenu/index.mjs +1 -2
  216. package/tieredmenu/index.mjs.map +1 -1
  217. package/timeline/Timeline.vue +16 -7
  218. package/timeline/index.d.ts +3 -3
  219. package/timeline/index.mjs +42 -11
  220. package/timeline/index.mjs.map +1 -1
  221. package/toast/Toast.vue +10 -1
  222. package/toast/ToastMessage.vue +29 -19
  223. package/toast/index.d.ts +2 -2
  224. package/toast/index.mjs +77 -38
  225. package/toast/index.mjs.map +1 -1
  226. package/togglebutton/ToggleButton.vue +10 -1
  227. package/togglebutton/index.d.ts +3 -3
  228. package/togglebutton/index.mjs +19 -4
  229. package/togglebutton/index.mjs.map +1 -1
  230. package/toggleswitch/ToggleSwitch.vue +11 -3
  231. package/toggleswitch/index.mjs +20 -5
  232. package/toggleswitch/index.mjs.map +1 -1
  233. package/tooltip/index.mjs +22 -22
  234. package/tooltip/index.mjs.map +1 -1
  235. package/tree/Tree.vue +14 -2
  236. package/tree/TreeNode.vue +2 -2
  237. package/tree/index.d.ts +3 -3
  238. package/tree/index.mjs +28 -10
  239. package/tree/index.mjs.map +1 -1
  240. package/treeselect/TreeSelect.vue +1 -1
  241. package/treeselect/index.d.ts +6 -6
  242. package/treeselect/index.mjs +1 -2
  243. package/treeselect/index.mjs.map +1 -1
  244. package/treetable/index.d.ts +7 -7
  245. package/treetable/style/index.mjs +2 -3
  246. package/treetable/style/index.mjs.map +1 -1
  247. package/umd/primevue.min.js +1 -1
  248. package/virtualscroller/VirtualScroller.vue +13 -2
  249. package/virtualscroller/index.d.ts +2 -2
  250. package/virtualscroller/index.mjs +14 -4
  251. package/virtualscroller/index.mjs.map +1 -1
  252. package/virtualscroller/style/index.mjs +1 -1
  253. package/virtualscroller/style/index.mjs.map +1 -1
  254. package/web-types.json +1 -1
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div :class="cx('root')" data-scrollselectors=".p-datatable-wrapper" v-bind="ptmi('root')">
2
+ <div :class="cx('root')" data-scrollselectors=".p-datatable-wrapper" :data-p="dataP" v-bind="ptmi('root')">
3
3
  <slot></slot>
4
4
  <div v-if="loading" :class="cx('mask')" v-bind="ptm('mask')">
5
5
  <slot v-if="$slots.loading" name="loading"></slot>
@@ -25,9 +25,10 @@
25
25
  @page="onPage($event)"
26
26
  :alwaysShow="alwaysShowPaginator"
27
27
  :unstyled="unstyled"
28
+ :data-p-top="true"
28
29
  :pt="ptm('pcPaginator')"
29
30
  >
30
- <template v-if="$slots.paginatorcontainer" #container>
31
+ <template v-if="$slots.paginatorcontainer" #container="slotProps">
31
32
  <slot
32
33
  name="paginatorcontainer"
33
34
  :first="slotProps.first"
@@ -35,12 +36,14 @@
35
36
  :rows="slotProps.rows"
36
37
  :page="slotProps.page"
37
38
  :pageCount="slotProps.pageCount"
39
+ :pageLinks="slotProps.pageLinks"
38
40
  :totalRecords="slotProps.totalRecords"
39
41
  :firstPageCallback="slotProps.firstPageCallback"
40
42
  :lastPageCallback="slotProps.lastPageCallback"
41
43
  :prevPageCallback="slotProps.prevPageCallback"
42
44
  :nextPageCallback="slotProps.nextPageCallback"
43
45
  :rowChangeCallback="slotProps.rowChangeCallback"
46
+ :changePageCallback="slotProps.changePageCallback"
44
47
  ></slot>
45
48
  </template>
46
49
  <template v-if="$slots.paginatorstart" #start>
@@ -68,7 +71,7 @@
68
71
  <slot name="paginatorrowsperpagedropdownicon" :class="slotProps.class"></slot>
69
72
  </template>
70
73
  </DTPaginator>
71
- <div :class="cx('tableContainer')" :style="[sx('tableContainer'), { maxHeight: virtualScrollerDisabled ? scrollHeight : '' }]" v-bind="ptm('tableContainer')">
74
+ <div :class="cx('tableContainer')" :style="[sx('tableContainer'), { maxHeight: virtualScrollerDisabled ? scrollHeight : '' }]" :data-p="dataP" v-bind="ptm('tableContainer')">
72
75
  <DTVirtualScroller
73
76
  ref="virtualScroller"
74
77
  v-bind="virtualScrollerOptions"
@@ -130,6 +133,7 @@
130
133
  :selection="selection"
131
134
  :selectionKeys="d_selectionKeys"
132
135
  :selectionMode="selectionMode"
136
+ :rowHover="rowHover"
133
137
  :contextMenu="contextMenu"
134
138
  :contextMenuSelection="contextMenuSelection"
135
139
  :rowGroupMode="rowGroupMode"
@@ -186,6 +190,7 @@
186
190
  :selection="selection"
187
191
  :selectionKeys="d_selectionKeys"
188
192
  :selectionMode="selectionMode"
193
+ :rowHover="rowHover"
189
194
  :contextMenu="contextMenu"
190
195
  :contextMenuSelection="contextMenuSelection"
191
196
  :rowGroupMode="rowGroupMode"
@@ -256,6 +261,7 @@
256
261
  @page="onPage($event)"
257
262
  :alwaysShow="alwaysShowPaginator"
258
263
  :unstyled="unstyled"
264
+ :data-p-bottom="true"
259
265
  :pt="ptm('pcPaginator')"
260
266
  >
261
267
  <template v-if="$slots.paginatorcontainer" #container="slotProps">
@@ -266,12 +272,14 @@
266
272
  :rows="slotProps.rows"
267
273
  :page="slotProps.page"
268
274
  :pageCount="slotProps.pageCount"
275
+ :pageLinks="slotProps.pageLinks"
269
276
  :totalRecords="slotProps.totalRecords"
270
277
  :firstPageCallback="slotProps.firstPageCallback"
271
278
  :lastPageCallback="slotProps.lastPageCallback"
272
279
  :prevPageCallback="slotProps.prevPageCallback"
273
280
  :nextPageCallback="slotProps.nextPageCallback"
274
281
  :rowChangeCallback="slotProps.rowChangeCallback"
282
+ :changePageCallback="slotProps.changePageCallback"
275
283
  ></slot>
276
284
  </template>
277
285
  <template v-if="$slots.paginatorstart" #start>
@@ -313,6 +321,7 @@
313
321
  </template>
314
322
 
315
323
  <script>
324
+ import { cn } from '@primeuix/utils';
316
325
  import {
317
326
  addClass,
318
327
  addStyle,
@@ -1371,20 +1380,24 @@ export default {
1371
1380
  },
1372
1381
  bindColumnResizeEvents() {
1373
1382
  if (!this.documentColumnResizeListener) {
1374
- this.documentColumnResizeListener = document.addEventListener('mousemove', () => {
1383
+ this.documentColumnResizeListener = (event) => {
1375
1384
  if (this.columnResizing) {
1376
1385
  this.onColumnResize(event);
1377
1386
  }
1378
- });
1387
+ };
1388
+
1389
+ document.addEventListener('mousemove', this.documentColumnResizeListener);
1379
1390
  }
1380
1391
 
1381
1392
  if (!this.documentColumnResizeEndListener) {
1382
- this.documentColumnResizeEndListener = document.addEventListener('mouseup', () => {
1393
+ this.documentColumnResizeEndListener = () => {
1383
1394
  if (this.columnResizing) {
1384
1395
  this.columnResizing = false;
1385
1396
  this.onColumnResizeEnd();
1386
1397
  }
1387
- });
1398
+ };
1399
+
1400
+ document.addEventListener('mouseup', this.documentColumnResizeEndListener);
1388
1401
  }
1389
1402
  },
1390
1403
  unbindColumnResizeEvents() {
@@ -1706,7 +1719,8 @@ export default {
1706
1719
  }
1707
1720
 
1708
1721
  if (this.d_sortField) {
1709
- state.sortField = this.d_sortField;
1722
+ // Functions can't be serialized, so don't attempt to save them
1723
+ if (typeof this.d_sortField !== 'function') state.sortField = this.d_sortField;
1710
1724
  state.sortOrder = this.d_sortOrder;
1711
1725
  }
1712
1726
 
@@ -1758,51 +1772,90 @@ export default {
1758
1772
  return value;
1759
1773
  };
1760
1774
 
1761
- if (stateString) {
1762
- let restoredState = JSON.parse(stateString, reviver);
1775
+ let parsedState;
1776
+ try {
1777
+ parsedState = JSON.parse(stateString, reviver);
1778
+ } catch (error) {}
1779
+ if (!parsedState || typeof parsedState !== 'object') {
1780
+ storage.removeItem(this.stateKey);
1781
+ return;
1782
+ }
1763
1783
 
1764
- if (this.paginator) {
1765
- this.d_first = restoredState.first;
1766
- this.d_rows = restoredState.rows;
1767
- }
1784
+ const restoredState = {};
1768
1785
 
1769
- if (restoredState.sortField) {
1770
- this.d_sortField = restoredState.sortField;
1771
- this.d_sortOrder = restoredState.sortOrder;
1786
+ if (this.paginator) {
1787
+ if (typeof parsedState.first === 'number') {
1788
+ this.d_first = parsedState.first;
1789
+ this.$emit('update:first', this.d_first);
1790
+ restoredState.first = this.d_first;
1772
1791
  }
1773
-
1774
- if (restoredState.multiSortMeta) {
1775
- this.d_multiSortMeta = restoredState.multiSortMeta;
1792
+ if (typeof parsedState.rows === 'number') {
1793
+ this.d_rows = parsedState.rows;
1794
+ this.$emit('update:rows', this.d_rows);
1795
+ restoredState.rows = this.d_rows;
1776
1796
  }
1797
+ }
1777
1798
 
1778
- if (restoredState.filters) {
1779
- this.$emit('update:filters', restoredState.filters);
1780
- }
1799
+ if (typeof parsedState.sortField === 'string') {
1800
+ this.d_sortField = parsedState.sortField;
1801
+ this.$emit('update:sortField', this.d_sortField);
1802
+ restoredState.sortField = this.d_sortField;
1803
+ }
1781
1804
 
1782
- if (this.resizableColumns) {
1783
- this.columnWidthsState = restoredState.columnWidths;
1784
- this.tableWidthState = restoredState.tableWidth;
1785
- }
1805
+ if (typeof parsedState.sortOrder === 'number') {
1806
+ this.d_sortOrder = parsedState.sortOrder;
1807
+ this.$emit('update:sortOrder', this.d_sortOrder);
1808
+ restoredState.sortOrder = this.d_sortOrder;
1809
+ }
1786
1810
 
1787
- if (this.reorderableColumns) {
1788
- this.d_columnOrder = restoredState.columnOrder;
1789
- }
1811
+ if (Array.isArray(parsedState.multiSortMeta)) {
1812
+ this.d_multiSortMeta = parsedState.multiSortMeta;
1813
+ this.$emit('update:multiSortMeta', this.d_multiSortMeta);
1814
+ restoredState.multiSortMeta = this.d_multiSortMeta;
1815
+ }
1790
1816
 
1791
- if (restoredState.expandedRows) {
1792
- this.$emit('update:expandedRows', restoredState.expandedRows);
1793
- }
1817
+ if (this.hasFilters && typeof parsedState.filters === 'object' && parsedState.filters !== null) {
1818
+ this.d_filters = this.cloneFilters(parsedState.filters);
1819
+ this.$emit('update:filters', this.d_filters);
1820
+ restoredState.filters = this.d_filters;
1821
+ }
1794
1822
 
1795
- if (restoredState.expandedRowGroups) {
1796
- this.$emit('update:expandedRowGroups', restoredState.expandedRowGroups);
1823
+ if (this.resizableColumns) {
1824
+ if (typeof parsedState.columnWidths === 'string') {
1825
+ this.columnWidthsState = parsedState.columnWidths;
1826
+ restoredState.columnWidths = this.columnWidthsState;
1797
1827
  }
1798
-
1799
- if (restoredState.selection) {
1800
- this.d_selectionKeys = restoredState.d_selectionKeys;
1801
- this.$emit('update:selection', restoredState.selection);
1828
+ if (typeof parsedState.tableWidth === 'string') {
1829
+ this.tableWidthState = parsedState.tableWidth;
1830
+ restoredState.tableWidth = this.tableWidthState;
1802
1831
  }
1832
+ }
1833
+
1834
+ if (this.reorderableColumns && Array.isArray(parsedState.columnOrder)) {
1835
+ this.d_columnOrder = parsedState.columnOrder;
1836
+ restoredState.columnOrder = this.d_columnOrder;
1837
+ }
1803
1838
 
1804
- this.$emit('state-restore', restoredState);
1839
+ if (typeof parsedState.expandedRows === 'object' && parsedState.expandedRows !== null) {
1840
+ this.$emit('update:expandedRows', parsedState.expandedRows);
1841
+ restoredState.expandedRows = parsedState.expandedRows;
1805
1842
  }
1843
+
1844
+ if (Array.isArray(parsedState.expandedRowGroups)) {
1845
+ this.$emit('update:expandedRowGroups', parsedState.expandedRowGroups);
1846
+ restoredState.expandedRowGroups = parsedState.expandedRowGroups;
1847
+ }
1848
+
1849
+ if (typeof parsedState.selection === 'object' && parsedState.selection !== null) {
1850
+ if (typeof parsedState.selectionKeys === 'object' && parsedState.selectionKeys !== null) {
1851
+ this.d_selectionKeys = parsedState.selectionKeys;
1852
+ restoredState.selectionKeys = this.d_selectionKeys;
1853
+ }
1854
+ this.$emit('update:selection', parsedState.selection);
1855
+ restoredState.selection = parsedState.selection;
1856
+ }
1857
+
1858
+ this.$emit('state-restore', restoredState);
1806
1859
  },
1807
1860
  saveColumnWidths(state) {
1808
1861
  let widths = [];
@@ -1926,11 +1979,11 @@ export default {
1926
1979
  this.$emit('filter', this.createLazyLoadEvent());
1927
1980
  }
1928
1981
  },
1929
- cloneFilters() {
1982
+ cloneFilters(filters) {
1930
1983
  let cloned = {};
1931
1984
 
1932
- if (this.filters) {
1933
- Object.entries(this.filters).forEach(([prop, value]) => {
1985
+ if (filters) {
1986
+ Object.entries(filters).forEach(([prop, value]) => {
1934
1987
  cloned[prop] = value.operator
1935
1988
  ? {
1936
1989
  operator: value.operator,
@@ -1984,7 +2037,7 @@ export default {
1984
2037
  columns() {
1985
2038
  const cols = this.d_columns.get(this);
1986
2039
 
1987
- if (this.reorderableColumns && this.d_columnOrder) {
2040
+ if (cols && this.reorderableColumns && this.d_columnOrder) {
1988
2041
  let orderedColumns = [];
1989
2042
 
1990
2043
  for (let columnKey of this.d_columnOrder) {
@@ -2094,6 +2147,12 @@ export default {
2094
2147
  },
2095
2148
  virtualScrollerDisabled() {
2096
2149
  return isEmpty(this.virtualScrollerOptions) || !this.scrollable;
2150
+ },
2151
+ dataP() {
2152
+ return cn({
2153
+ scrollable: this.scrollable,
2154
+ 'flex-scrollable': this.scrollable && this.scrollHeight === 'flex'
2155
+ });
2097
2156
  }
2098
2157
  },
2099
2158
  components: {
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <Checkbox :modelValue="checked" :binary="true" :disabled="disabled" :aria-label="headerCheckboxAriaLabel" @change="onChange" :unstyled="unstyled" :pt="getColumnPT('pcHeaderCheckbox')">
3
- <template #icon="slotProps">
3
+ <!--<template #icon="slotProps">
4
4
  <component v-if="headerCheckboxIconTemplate" :is="headerCheckboxIconTemplate" :checked="slotProps.checked" :class="slotProps.class" />
5
5
  <CheckIcon v-else-if="!headerCheckboxIconTemplate && slotProps.checked" :class="slotProps.class" v-bind="getColumnPT('pcHeaderCheckbox')['icon']" />
6
- </template>
6
+ </template>-->
7
7
  </Checkbox>
8
8
  </template>
9
9
 
@@ -2,7 +2,7 @@
2
2
  <Checkbox :modelValue="checked" :binary="true" :disabled="$attrs.disabled" :aria-label="checkboxAriaLabel" @change="onChange" :unstyled="unstyled" :pt="getColumnPT('pcRowCheckbox')">
3
3
  <template #icon="slotProps">
4
4
  <component v-if="rowCheckboxIconTemplate" :is="rowCheckboxIconTemplate" :checked="slotProps.checked" :class="slotProps.class" />
5
- <CheckIcon v-else-if="!rowCheckboxIconTemplate && slotProps.checked" :class="slotProps.class" v-bind="getColumnPT('pcRowCheckbox')['icon']" />
5
+ <CheckIcon v-else-if="!rowCheckboxIconTemplate && slotProps.checked" :class="slotProps.class" v-bind="getColumnPT('pcRowCheckbox.icon')" />
6
6
  </template>
7
7
  </Checkbox>
8
8
  </template>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <tbody :ref="bodyRef" :class="cx('tbody')" role="rowgroup" :style="bodyContentStyle" v-bind="ptm('tbody', ptmTBodyOptions)">
2
+ <tbody :ref="bodyRef" :class="cx('tbody')" role="rowgroup" :style="bodyContentStyle" :data-p="dataP" v-bind="ptm('tbody', ptmTBodyOptions)">
3
3
  <template v-if="!empty">
4
4
  <template v-for="(rowData, rowIndex) of value" :key="getRowKey(rowData, rowIndex)">
5
5
  <DTBodyRow
@@ -70,6 +70,7 @@
70
70
  </template>
71
71
 
72
72
  <script>
73
+ import { cn } from '@primeuix/utils';
73
74
  import { getOuterHeight } from '@primeuix/utils/dom';
74
75
  import { resolveFieldData } from '@primeuix/utils/object';
75
76
  import BaseComponent from '@primevue/core/basecomponent';
@@ -168,6 +169,10 @@ export default {
168
169
  type: String,
169
170
  default: null
170
171
  },
172
+ rowHover: {
173
+ type: Boolean,
174
+ default: false
175
+ },
171
176
  contextMenu: {
172
177
  type: Boolean,
173
178
  default: false
@@ -289,6 +294,12 @@ export default {
289
294
  scrollable: this.$parentInstance?.$parentInstance?.scrollable
290
295
  }
291
296
  };
297
+ },
298
+ dataP() {
299
+ return cn({
300
+ hoverable: this.rowHover || this.selectionMode,
301
+ frozen: this.frozenRow
302
+ });
292
303
  }
293
304
  },
294
305
  components: {
@@ -1,5 +1,13 @@
1
1
  <template>
2
- <tfoot v-if="hasFooter" :class="cx('tfoot')" :style="sx('tfoot')" role="rowgroup" v-bind="columnGroup ? { ...ptm('tfoot', ptmTFootOptions), ...getColumnGroupPT('root') } : ptm('tfoot', ptmTFootOptions)" data-pc-section="tfoot">
2
+ <tfoot
3
+ v-if="hasFooter"
4
+ :class="cx('tfoot')"
5
+ :style="sx('tfoot')"
6
+ role="rowgroup"
7
+ v-bind="columnGroup ? { ...ptm('tfoot', ptmTFootOptions), ...getColumnGroupPT('root') } : ptm('tfoot', ptmTFootOptions)"
8
+ :data-p-scrollable="$parentInstance?.$parentInstance?.scrollable"
9
+ data-pc-section="tfoot"
10
+ >
3
11
  <tr v-if="!columnGroup" role="row" v-bind="ptm('footerRow')">
4
12
  <template v-for="(col, i) of columns" :key="columnProp(col, 'columnKey') || columnProp(col, 'field') || i">
5
13
  <DTFooterCell v-if="!columnProp(col, 'hidden')" :column="col" :pt="pt" />
@@ -1,5 +1,12 @@
1
1
  <template>
2
- <thead :class="cx('thead')" :style="sx('thead')" role="rowgroup" v-bind="columnGroup ? { ...ptm('thead', ptmTHeadOptions), ...getColumnGroupPT('root') } : ptm('thead', ptmTHeadOptions)" data-pc-section="thead">
2
+ <thead
3
+ :class="cx('thead')"
4
+ :style="sx('thead')"
5
+ role="rowgroup"
6
+ v-bind="columnGroup ? { ...ptm('thead', ptmTHeadOptions), ...getColumnGroupPT('root') } : ptm('thead', ptmTHeadOptions)"
7
+ :data-p-scrollable="$parentInstance?.$parentInstance?.scrollable"
8
+ data-pc-section="thead"
9
+ >
3
10
  <template v-if="!columnGroup">
4
11
  <tr role="row" v-bind="ptm('headerRow')">
5
12
  <template v-for="(col, i) of columns" :key="columnProp(col, 'columnKey') || columnProp(col, 'field') || i">
@@ -97,7 +104,7 @@
97
104
  @constraint-add="$emit('constraint-add', $event)"
98
105
  @constraint-remove="$emit('constraint-remove', $event)"
99
106
  @apply-click="$emit('apply-click', $event)"
100
- @change="$emit('checkbox-change', $event)"
107
+ @checkbox-change="$emit('checkbox-change', $event)"
101
108
  :unstyled="unstyled"
102
109
  :pt="pt"
103
110
  />