primevue 3.30.1 → 3.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/basecomponent/BaseComponent.vue +1 -1
  2. package/basecomponent/basecomponent.cjs.js +1 -1
  3. package/basecomponent/basecomponent.cjs.min.js +1 -1
  4. package/basecomponent/basecomponent.esm.js +1 -1
  5. package/basecomponent/basecomponent.esm.min.js +1 -1
  6. package/basecomponent/basecomponent.js +1 -1
  7. package/basecomponent/basecomponent.min.js +1 -1
  8. package/basedirective/basedirective.cjs.js +1 -1
  9. package/basedirective/basedirective.cjs.min.js +1 -1
  10. package/basedirective/basedirective.esm.js +1 -1
  11. package/basedirective/basedirective.esm.min.js +1 -1
  12. package/basedirective/basedirective.js +1 -1
  13. package/basedirective/basedirective.min.js +1 -1
  14. package/column/Column.d.ts +48 -0
  15. package/columngroup/ColumnGroup.d.ts +5 -0
  16. package/core/core.js +19 -13
  17. package/core/core.min.js +5 -5
  18. package/datatable/BaseDataTable.vue +7 -1
  19. package/datatable/BodyCell.vue +5 -3
  20. package/datatable/ColumnFilter.vue +43 -8
  21. package/datatable/DataTable.d.ts +30 -0
  22. package/datatable/FooterCell.vue +3 -1
  23. package/datatable/HeaderCell.vue +6 -2
  24. package/datatable/HeaderCheckbox.vue +5 -2
  25. package/datatable/RowCheckbox.vue +5 -2
  26. package/datatable/RowRadioButton.vue +5 -2
  27. package/datatable/TableBody.vue +33 -13
  28. package/datatable/TableFooter.vue +10 -2
  29. package/datatable/TableHeader.vue +12 -2
  30. package/datatable/datatable.cjs.js +149 -43
  31. package/datatable/datatable.cjs.min.js +1 -1
  32. package/datatable/datatable.esm.js +149 -43
  33. package/datatable/datatable.esm.min.js +1 -1
  34. package/datatable/datatable.js +150 -44
  35. package/datatable/datatable.min.js +1 -1
  36. package/dialog/Dialog.vue +13 -1
  37. package/dialog/dialog.cjs.js +6 -2
  38. package/dialog/dialog.cjs.min.js +1 -1
  39. package/dialog/dialog.esm.js +6 -2
  40. package/dialog/dialog.esm.min.js +1 -1
  41. package/dialog/dialog.js +6 -2
  42. package/dialog/dialog.min.js +1 -1
  43. package/dock/Dock.d.ts +4 -0
  44. package/dock/DockSub.vue +9 -8
  45. package/dock/dock.cjs.js +9 -8
  46. package/dock/dock.cjs.min.js +1 -1
  47. package/dock/dock.esm.js +9 -8
  48. package/dock/dock.esm.min.js +1 -1
  49. package/dock/dock.js +9 -8
  50. package/dock/dock.min.js +1 -1
  51. package/galleria/Galleria.d.ts +4 -0
  52. package/galleria/GalleriaContent.vue +16 -6
  53. package/galleria/GalleriaItem.vue +2 -1
  54. package/galleria/GalleriaThumbnails.vue +1 -0
  55. package/galleria/galleria.cjs.js +34 -17
  56. package/galleria/galleria.cjs.min.js +1 -1
  57. package/galleria/galleria.esm.js +35 -18
  58. package/galleria/galleria.esm.min.js +1 -1
  59. package/galleria/galleria.js +34 -17
  60. package/galleria/galleria.min.js +1 -1
  61. package/message/BaseMessage.vue +2 -2
  62. package/message/Message.d.ts +10 -0
  63. package/message/Message.vue +3 -3
  64. package/message/message.cjs.js +8 -8
  65. package/message/message.cjs.min.js +1 -1
  66. package/message/message.esm.js +8 -8
  67. package/message/message.esm.min.js +1 -1
  68. package/message/message.js +8 -8
  69. package/message/message.min.js +1 -1
  70. package/multiselect/MultiSelect.vue +2 -1
  71. package/multiselect/multiselect.cjs.js +4 -4
  72. package/multiselect/multiselect.cjs.min.js +1 -1
  73. package/multiselect/multiselect.esm.js +5 -5
  74. package/multiselect/multiselect.esm.min.js +1 -1
  75. package/multiselect/multiselect.js +4 -4
  76. package/multiselect/multiselect.min.js +1 -1
  77. package/overlaypanel/OverlayPanel.vue +4 -2
  78. package/overlaypanel/overlaypanel.cjs.js +4 -2
  79. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  80. package/overlaypanel/overlaypanel.esm.js +4 -2
  81. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  82. package/overlaypanel/overlaypanel.js +4 -2
  83. package/overlaypanel/overlaypanel.min.js +1 -1
  84. package/package.json +1 -1
  85. package/scrollpanel/ScrollPanel.vue +2 -0
  86. package/scrollpanel/scrollpanel.cjs.js +6 -2
  87. package/scrollpanel/scrollpanel.cjs.min.js +1 -1
  88. package/scrollpanel/scrollpanel.esm.js +6 -2
  89. package/scrollpanel/scrollpanel.esm.min.js +1 -1
  90. package/scrollpanel/scrollpanel.js +6 -2
  91. package/scrollpanel/scrollpanel.min.js +1 -1
  92. package/sidebar/Sidebar.vue +1 -1
  93. package/sidebar/sidebar.cjs.js +3 -1
  94. package/sidebar/sidebar.cjs.min.js +1 -1
  95. package/sidebar/sidebar.esm.js +3 -1
  96. package/sidebar/sidebar.esm.min.js +1 -1
  97. package/sidebar/sidebar.js +3 -1
  98. package/sidebar/sidebar.min.js +1 -1
  99. package/splitbutton/SplitButton.vue +2 -1
  100. package/splitbutton/splitbutton.cjs.js +4 -2
  101. package/splitbutton/splitbutton.cjs.min.js +1 -1
  102. package/splitbutton/splitbutton.esm.js +4 -2
  103. package/splitbutton/splitbutton.esm.min.js +1 -1
  104. package/splitbutton/splitbutton.js +4 -2
  105. package/splitbutton/splitbutton.min.js +1 -1
  106. package/tabmenu/TabMenu.vue +71 -72
  107. package/tabmenu/tabmenu.cjs.js +67 -75
  108. package/tabmenu/tabmenu.cjs.min.js +1 -1
  109. package/tabmenu/tabmenu.esm.js +67 -75
  110. package/tabmenu/tabmenu.esm.min.js +1 -1
  111. package/tabmenu/tabmenu.js +67 -75
  112. package/tabmenu/tabmenu.min.js +1 -1
  113. package/tabview/TabView.vue +2 -0
  114. package/tabview/tabview.cjs.js +6 -2
  115. package/tabview/tabview.cjs.min.js +1 -1
  116. package/tabview/tabview.esm.js +6 -2
  117. package/tabview/tabview.esm.min.js +1 -1
  118. package/tabview/tabview.js +6 -2
  119. package/tabview/tabview.min.js +1 -1
  120. package/toast/BaseToast.vue +2 -2
  121. package/toast/Toast.d.ts +10 -0
  122. package/toast/ToastMessage.vue +3 -2
  123. package/toast/toast.cjs.js +7 -6
  124. package/toast/toast.cjs.min.js +1 -1
  125. package/toast/toast.esm.js +7 -6
  126. package/toast/toast.esm.min.js +1 -1
  127. package/toast/toast.js +7 -6
  128. package/toast/toast.min.js +1 -1
  129. package/tree/Tree.d.ts +9 -0
  130. package/tree/TreeNode.vue +3 -1
  131. package/tree/tree.cjs.js +3 -1
  132. package/tree/tree.cjs.min.js +1 -1
  133. package/tree/tree.esm.js +3 -1
  134. package/tree/tree.esm.min.js +1 -1
  135. package/tree/tree.js +3 -1
  136. package/tree/tree.min.js +1 -1
  137. package/treetable/BaseTreeTable.vue +7 -1
  138. package/treetable/BodyCell.vue +14 -4
  139. package/treetable/FooterCell.vue +3 -1
  140. package/treetable/HeaderCell.vue +9 -2
  141. package/treetable/TreeTable.d.ts +30 -8
  142. package/treetable/TreeTable.vue +9 -2
  143. package/treetable/TreeTableRow.vue +10 -1
  144. package/treetable/treetable.cjs.js +58 -13
  145. package/treetable/treetable.cjs.min.js +1 -1
  146. package/treetable/treetable.esm.js +59 -14
  147. package/treetable/treetable.esm.min.js +1 -1
  148. package/treetable/treetable.js +58 -13
  149. package/treetable/treetable.min.js +1 -1
  150. package/vetur-attributes.json +8 -0
  151. package/vetur-tags.json +2 -0
  152. package/web-types.json +21 -1
@@ -259,7 +259,9 @@ const classes = {
259
259
  'p-datatable-striped': props.stripedRows,
260
260
  'p-datatable-gridlines': props.showGridlines,
261
261
  'p-datatable-grouped-header': instance.headerColumnGroup != null,
262
- 'p-datatable-grouped-footer': instance.footerColumnGroup != null
262
+ 'p-datatable-grouped-footer': instance.footerColumnGroup != null,
263
+ 'p-datatable-sm': props.size === 'small',
264
+ 'p-datatable-lg': props.size === 'large'
263
265
  }
264
266
  ],
265
267
  loadingOverlay: 'p-datatable-loading-overlay p-component-overlay',
@@ -709,6 +711,10 @@ export default {
709
711
  type: Boolean,
710
712
  default: false
711
713
  },
714
+ size: {
715
+ type: String,
716
+ default: null
717
+ },
712
718
  tableStyle: {
713
719
  type: null,
714
720
  default: null
@@ -46,8 +46,8 @@
46
46
  </template>
47
47
  <template v-else-if="columnProp('rowReorder')">
48
48
  <component v-if="column.children && column.children.rowreordericon" :is="column.children.rowreordericon" :class="cx('rowReorderIcon')" />
49
- <i v-else-if="columnProp('rowReorderIcon')" :class="[cx('rowReorderIcon'), columnProp('rowReorderIcon')]" />
50
- <BarsIcon v-else :class="cx('rowReorderIcon')" data-pc-section="rowreordericon" />
49
+ <i v-else-if="columnProp('rowReorderIcon')" :class="[cx('rowReorderIcon'), columnProp('rowReorderIcon')]" v-bind="getColumnPT('rowReorderIcon')" />
50
+ <BarsIcon v-else :class="cx('rowReorderIcon')" v-bind="getColumnPT('rowReorderIcon')" />
51
51
  </template>
52
52
  <template v-else-if="columnProp('expander')">
53
53
  <button v-ripple :class="cx('rowToggler')" type="button" :aria-expanded="isRowExpanded" :aria-controls="ariaControls" :aria-label="expandButtonAriaLabel" @click="toggleRow" v-bind="getColumnPT('rowToggler')">
@@ -214,7 +214,9 @@ export default {
214
214
  state: this.$data
215
215
  },
216
216
  context: {
217
- index: this.index
217
+ index: this.index,
218
+ size: this.$parentInstance?.$parentInstance?.size,
219
+ showGridlines: this.$parentInstance?.$parentInstance?.showGridlines
218
220
  }
219
221
  };
220
222
 
@@ -14,11 +14,11 @@
14
14
  :class="cx('filterMenuButton')"
15
15
  @click="toggleMenu($event)"
16
16
  @keydown="onToggleButtonKeyDown($event)"
17
- v-bind="getColumnPT('filterMenuButton')"
17
+ v-bind="getColumnPT('filterMenuButton', ptmFilterMenuParams)"
18
18
  >
19
- <component :is="filterIconTemplate || 'FilterIcon'" />
19
+ <component :is="filterIconTemplate || 'FilterIcon'" v-bind="getColumnPT('filterMenuIcon')" />
20
20
  </button>
21
- <button v-if="showClearButton && display === 'row'" :class="cx('headerFilterClearButton')" type="button" @click="clearFilter()" v-bind="getColumnPT('headerFilterClearButton')">
21
+ <button v-if="showClearButton && display === 'row'" :class="cx('headerFilterClearButton')" type="button" @click="clearFilter()" v-bind="getColumnPT('headerFilterClearButton', ptmHeaderFilterClearParams)">
22
22
  <component :is="filterClearIconTemplate || 'FilterSlashIcon'" v-bind="getColumnPT('filterClearIcon')" />
23
23
  </button>
24
24
  <Portal>
@@ -47,7 +47,7 @@
47
47
  @keydown="onRowMatchModeKeyDown($event)"
48
48
  @keydown.enter.prevent="onRowMatchModeChange(matchMode.value)"
49
49
  :tabindex="i === 0 ? '0' : null"
50
- v-bind="getColumnPT('filterRowItem')"
50
+ v-bind="getColumnPT('filterRowItem', ptmFilterRowItemOptions(matchMode))"
51
51
  >
52
52
  {{ matchMode.label }}
53
53
  </li>
@@ -96,6 +96,9 @@
96
96
  @click="removeConstraint(i)"
97
97
  :label="removeRuleButtonLabel"
98
98
  :unstyled="unstyled"
99
+ text
100
+ severity="danger"
101
+ size="small"
99
102
  :pt="getColumnPT('filterRemoveButton')"
100
103
  data-pc-section="filterremovebutton"
101
104
  >
@@ -114,6 +117,9 @@
114
117
  :class="cx('filterAddRuleButton')"
115
118
  @click="addConstraint()"
116
119
  :unstyled="unstyled"
120
+ text
121
+ severity="info"
122
+ size="small"
117
123
  :pt="getColumnPT('filterAddRuleButton')"
118
124
  data-pc-section="filteraddrulebutton"
119
125
  >
@@ -130,6 +136,8 @@
130
136
  :label="clearButtonLabel"
131
137
  @click="clearFilter"
132
138
  :unstyled="unstyled"
139
+ size="small"
140
+ outlined
133
141
  :pt="getColumnPT('filterClearButton')"
134
142
  data-pc-section="filterclearbutton"
135
143
  ></CFButton>
@@ -142,6 +150,7 @@
142
150
  :label="applyButtonLabel"
143
151
  @click="applyFilter()"
144
152
  :unstyled="unstyled"
153
+ size="small"
145
154
  :pt="getColumnPT('filterApplyButton')"
146
155
  data-pc-section="filterapplybutton"
147
156
  ></CFButton>
@@ -169,6 +178,7 @@ import TrashIcon from 'primevue/icons/trash';
169
178
  import OverlayEventBus from 'primevue/overlayeventbus';
170
179
  import Portal from 'primevue/portal';
171
180
  import { ConnectedOverlayScrollHandler, DomHandler, UniqueComponentId, ZIndexUtils } from 'primevue/utils';
181
+ import { mergeProps } from 'vue';
172
182
 
173
183
  export default {
174
184
  name: 'ColumnFilter',
@@ -316,18 +326,28 @@ export default {
316
326
  }
317
327
  },
318
328
  methods: {
319
- getColumnPT(key) {
320
- return this.ptmo(this.getColumnProp(), key, {
329
+ getColumnPT(key, params) {
330
+ const columnMetaData = {
321
331
  props: this.column.props,
322
332
  parent: {
323
333
  props: this.$props,
324
334
  state: this.$data
325
- }
326
- });
335
+ },
336
+ ...params
337
+ };
338
+
339
+ return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));
327
340
  },
328
341
  getColumnProp() {
329
342
  return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;
330
343
  },
344
+ ptmFilterRowItemOptions(matchMode) {
345
+ return {
346
+ context: {
347
+ highlighted: matchMode && this.isRowMatchModeSelected(matchMode.value)
348
+ }
349
+ };
350
+ },
331
351
  clearFilter() {
332
352
  let _filters = { ...this.filters };
333
353
 
@@ -667,6 +687,21 @@ export default {
667
687
  },
668
688
  filterConstraintAriaLabel() {
669
689
  return this.$primevue.config.locale ? this.$primevue.config.locale.filterConstraint : undefined;
690
+ },
691
+ ptmHeaderFilterClearParams() {
692
+ return {
693
+ context: {
694
+ hidden: this.hasRowFilter()
695
+ }
696
+ };
697
+ },
698
+ ptmFilterMenuParams() {
699
+ return {
700
+ context: {
701
+ overlayVisible: this.overlayVisible,
702
+ active: this.hasFilter()
703
+ }
704
+ };
670
705
  }
671
706
  },
672
707
  components: {
@@ -25,6 +25,7 @@ export interface DataTablePassThroughMethodOptions {
25
25
  instance: any;
26
26
  props: DataTableProps;
27
27
  state: DataTableState;
28
+ context: DataTableContext;
28
29
  }
29
30
 
30
31
  /**
@@ -721,6 +722,31 @@ export interface DataTableState {
721
722
  d_editing: boolean;
722
723
  }
723
724
 
725
+ /**
726
+ * Defines current options in DataTable component.
727
+ */
728
+ export interface DataTableContext {
729
+ /**
730
+ * Current index of the row.
731
+ */
732
+ index: number;
733
+ /**
734
+ * Current selectable state of row as a boolean.
735
+ * @defaultValue false
736
+ */
737
+ selectable: boolean;
738
+ /**
739
+ * Current selected state of row as a boolean.
740
+ * @defaultValue false
741
+ */
742
+ selected: boolean;
743
+ /**
744
+ * Current stripedRows state of row as a boolean.
745
+ * @defaultValue false
746
+ */
747
+ stripedRows: boolean;
748
+ }
749
+
724
750
  /**
725
751
  * Defines valid properties in DataTable component.
726
752
  */
@@ -1013,6 +1039,10 @@ export interface DataTableProps {
1013
1039
  * @defaultValue false
1014
1040
  */
1015
1041
  stripedRows?: boolean | undefined;
1042
+ /**
1043
+ * Defines the size of the table.
1044
+ */
1045
+ size?: 'small' | 'large' | undefined;
1016
1046
  /**
1017
1047
  * Inline style of the table element.
1018
1048
  */
@@ -51,7 +51,9 @@ export default {
51
51
  state: this.$data
52
52
  },
53
53
  context: {
54
- index: this.index
54
+ index: this.index,
55
+ size: this.$parentInstance?.$parentInstance?.size,
56
+ showGridlines: this.$parentInstance?.$parentInstance?.showGridlines || false
55
57
  }
56
58
  };
57
59
 
@@ -27,7 +27,7 @@
27
27
  <component v-if="column.children && column.children.header" :is="column.children.header" :column="column" />
28
28
  <span v-if="columnProp('header')" :class="cx('headerTitle')" v-bind="getColumnPT('headerTitle')">{{ columnProp('header') }}</span>
29
29
  <span v-if="columnProp('sortable')" v-bind="getColumnPT('sort')">
30
- <component :is="(column.children && column.children.sorticon) || sortableColumnIcon" :sorted="sortState.sorted" :sortOrder="sortState.sortOrder" data-pc-section="sorticon" :class="cx('sortIcon')" />
30
+ <component :is="(column.children && column.children.sorticon) || sortableColumnIcon" :sorted="sortState.sorted" :sortOrder="sortState.sortOrder" data-pc-section="sorticon" :class="cx('sortIcon')" v-bind="getColumnPT('sorticon')" />
31
31
  </span>
32
32
  <span v-if="isMultiSorted()" :class="cx('sortBadge')" v-bind="getColumnPT('sortBadge')">{{ getBadgeValue() }}</span>
33
33
  <DTHeaderCheckbox
@@ -214,7 +214,11 @@ export default {
214
214
  state: this.$data
215
215
  },
216
216
  context: {
217
- index: this.index
217
+ index: this.index,
218
+ sorted: this.isColumnSorted(),
219
+ resizable: this.resizableColumns,
220
+ size: this.$parentInstance?.$parentInstance?.size,
221
+ showGridlines: this.$parentInstance?.$parentInstance?.showGridlines || false
218
222
  }
219
223
  };
220
224
 
@@ -24,6 +24,7 @@
24
24
  import BaseComponent from 'primevue/basecomponent';
25
25
  import CheckIcon from 'primevue/icons/check';
26
26
  import { DomHandler } from 'primevue/utils';
27
+ import { mergeProps } from 'vue';
27
28
 
28
29
  export default {
29
30
  name: 'HeaderCheckbox',
@@ -46,7 +47,7 @@ export default {
46
47
  },
47
48
  methods: {
48
49
  getColumnPT(key) {
49
- return this.ptmo(this.getColumnProp(), key, {
50
+ const columnMetaData = {
50
51
  props: this.column.props,
51
52
  parent: {
52
53
  props: this.$props,
@@ -57,7 +58,9 @@ export default {
57
58
  focused: this.focused,
58
59
  disabled: this.disabled
59
60
  }
60
- });
61
+ };
62
+
63
+ return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));
61
64
  },
62
65
  getColumnProp() {
63
66
  return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo:
@@ -25,6 +25,7 @@
25
25
  import BaseComponent from 'primevue/basecomponent';
26
26
  import CheckIcon from 'primevue/icons/check';
27
27
  import { DomHandler } from 'primevue/utils';
28
+ import { mergeProps } from 'vue';
28
29
 
29
30
  export default {
30
31
  name: 'RowCheckbox',
@@ -51,7 +52,7 @@ export default {
51
52
  },
52
53
  methods: {
53
54
  getColumnPT(key) {
54
- return this.ptmo(this.getColumnProp(), key, {
55
+ const columnMetaData = {
55
56
  props: this.column.props,
56
57
  parent: {
57
58
  props: this.$props,
@@ -63,7 +64,9 @@ export default {
63
64
  focused: this.focused,
64
65
  disabled: this.$attrs.disabled
65
66
  }
66
- });
67
+ };
68
+
69
+ return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));
67
70
  },
68
71
  getColumnProp() {
69
72
  return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo:
@@ -12,6 +12,7 @@
12
12
  <script>
13
13
  import BaseComponent from 'primevue/basecomponent';
14
14
  import { DomHandler } from 'primevue/utils';
15
+ import { mergeProps } from 'vue';
15
16
 
16
17
  export default {
17
18
  name: 'RowRadioButton',
@@ -36,7 +37,7 @@ export default {
36
37
  },
37
38
  methods: {
38
39
  getColumnPT(key) {
39
- return this.ptmo(this.getColumnProp(), key, {
40
+ const columnMetaData = {
40
41
  props: this.column.props,
41
42
  parent: {
42
43
  props: this.$props,
@@ -48,7 +49,9 @@ export default {
48
49
  focused: this.focused,
49
50
  disabled: this.$attrs.disabled
50
51
  }
51
- });
52
+ };
53
+
54
+ return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));
52
55
  },
53
56
  getColumnProp() {
54
57
  return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo:
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <tbody :ref="bodyRef" :class="cx('tbody')" role="rowgroup" :style="bodyStyle" v-bind="ptm('tbody')">
2
+ <tbody :ref="bodyRef" :class="cx('tbody')" role="rowgroup" :style="bodyStyle" v-bind="ptm('tbody', ptmTBodyOptions)">
3
3
  <template v-if="!empty">
4
4
  <template v-for="(rowData, index) of value">
5
5
  <tr
@@ -10,14 +10,14 @@
10
10
  role="row"
11
11
  v-bind="ptm('rowGroupHeader')"
12
12
  >
13
- <td :colspan="columnsLength - 1" v-bind="{ ...getColumnPT('root'), ...getColumnPT('bodyCell') }">
14
- <button v-if="expandableRowGroups" :class="cx('rowGroupToggler')" @click="onRowGroupToggle($event, rowData)" type="button" v-bind="getColumnPT('rowGroupToggler')">
13
+ <td :colspan="columnsLength - 1" v-bind="{ ...ptm('column.root'), ...ptm('column.bodyCell') }" data-pc-section="bodycell">
14
+ <button v-if="expandableRowGroups" :class="cx('rowGroupToggler')" @click="onRowGroupToggle($event, rowData)" type="button" v-bind="ptm('rowGroupToggler')">
15
15
  <component v-if="templates['rowgrouptogglericon']" :is="templates['rowgrouptogglericon']" :expanded="isRowGroupExpanded(rowData)" />
16
16
  <template v-else>
17
- <span v-if="isRowGroupExpanded(rowData) && expandedRowIcon" :class="[cx('rowGroupTogglerIcon'), expandedRowIcon]" v-bind="getColumnPT('rowGroupTogglerIcon')" />
18
- <ChevronDownIcon v-else-if="isRowGroupExpanded(rowData) && !expandedRowIcon" :class="cx('rowGroupTogglerIcon')" v-bind="getColumnPT('rowGroupTogglerIcon')" />
19
- <span v-else-if="!isRowGroupExpanded(rowData) && collapsedRowIcon" :class="[cx('rowGroupTogglerIcon'), collapsedRowIcon]" v-bind="getColumnPT('rowGroupTogglerIcon')" />
20
- <ChevronRightIcon v-else-if="!isRowGroupExpanded(rowData) && !collapsedRowIcon" :class="cx('rowGroupTogglerIcon')" v-bind="getColumnPT('rowGroupTogglerIcon')" />
17
+ <span v-if="isRowGroupExpanded(rowData) && expandedRowIcon" :class="[cx('rowGroupTogglerIcon'), expandedRowIcon]" v-bind="ptm('rowGroupTogglerIcon')" />
18
+ <ChevronDownIcon v-else-if="isRowGroupExpanded(rowData) && !expandedRowIcon" :class="cx('rowGroupTogglerIcon')" v-bind="ptm('rowGroupTogglerIcon')" />
19
+ <span v-else-if="!isRowGroupExpanded(rowData) && collapsedRowIcon" :class="[cx('rowGroupTogglerIcon'), collapsedRowIcon]" v-bind="ptm('rowGroupTogglerIcon')" />
20
+ <ChevronRightIcon v-else-if="!isRowGroupExpanded(rowData) && !collapsedRowIcon" :class="cx('rowGroupTogglerIcon')" v-bind="ptm('rowGroupTogglerIcon')" />
21
21
  </template>
22
22
  </button>
23
23
  <component :is="templates['groupheader']" :data="rowData" :index="getRowIndex(index)" />
@@ -42,7 +42,7 @@
42
42
  @dragleave="onRowDragLeave($event)"
43
43
  @dragend="onRowDragEnd($event)"
44
44
  @drop="onRowDrop($event)"
45
- v-bind="ptm('bodyRow')"
45
+ v-bind="getBodyRowPTOptions('bodyRow', rowData, index)"
46
46
  :data-p-selectable-row="selectionMode ? true : false"
47
47
  :data-p-highlight="selection && isSelected(rowData)"
48
48
  :data-p-highlight-contextmenu="contextMenuSelection && isSelectedWithContextMenu(rowData)"
@@ -102,7 +102,7 @@
102
102
  role="row"
103
103
  v-bind="ptm('rowGroupFooter')"
104
104
  >
105
- <td :colspan="columnsLength - 1" v-bind="{ ...getColumnPT('root'), ...getColumnPT('bodyCell') }">
105
+ <td :colspan="columnsLength - 1" v-bind="{ ...ptm('column.root'), ...ptm('column.footerCell') }" data-pc-section="footercell">
106
106
  <component :is="templates['groupfooter']" :data="rowData" :index="getRowIndex(index)" />
107
107
  </td>
108
108
  </tr>
@@ -121,6 +121,7 @@ import BaseComponent from 'primevue/basecomponent';
121
121
  import ChevronDownIcon from 'primevue/icons/chevrondown';
122
122
  import ChevronRightIcon from 'primevue/icons/chevronright';
123
123
  import { DomHandler, ObjectUtils, UniqueComponentId } from 'primevue/utils';
124
+ import { mergeProps } from 'vue';
124
125
  import BodyCell from './BodyCell.vue';
125
126
 
126
127
  export default {
@@ -306,18 +307,30 @@ export default {
306
307
  columnProp(col, prop) {
307
308
  return ObjectUtils.getVNodeProp(col, prop);
308
309
  },
309
- getColumnPT(column, key) {
310
- return this.ptmo(this.getColumnProp(column), key, {
311
- props: column.props,
310
+ getColumnPT(currentColumn, key) {
311
+ const columnMetaData = {
312
+ props: currentColumn.props,
312
313
  parent: {
313
314
  props: this.$props,
314
315
  state: this.$data
315
316
  }
316
- });
317
+ };
318
+
319
+ return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(currentColumn), key, columnMetaData));
317
320
  },
318
321
  getColumnProp(column) {
319
322
  return column.props && column.props.pt ? column.props.pt : undefined; //@todo
320
323
  },
324
+ getBodyRowPTOptions(key, rowdata, index) {
325
+ return this.ptm(key, {
326
+ context: {
327
+ index,
328
+ selectable: this.$parentInstance?.$parentInstance?.rowHover || this.$parentInstance?.$parentInstance?.selectionMode,
329
+ selected: this.isSelected(rowdata),
330
+ stripedRows: this.$parentInstance?.$parentInstance?.stripedRows || false
331
+ }
332
+ });
333
+ },
321
334
  shouldRenderRowGroupHeader(value, rowData, i) {
322
335
  let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.groupRowsBy);
323
336
  let prevRowData = value[i - 1];
@@ -609,6 +622,13 @@ export default {
609
622
  },
610
623
  nameAttributeSelector() {
611
624
  return UniqueComponentId();
625
+ },
626
+ ptmTBodyOptions() {
627
+ return {
628
+ context: {
629
+ scrollable: this.$parentInstance?.$parentInstance?.scrollable
630
+ }
631
+ };
612
632
  }
613
633
  },
614
634
  components: {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <tfoot v-if="hasFooter" :class="cx('tfoot')" :style="sx('tfoot')" role="rowgroup" v-bind="columnGroup ? { ...ptm('tfoot'), ...getColumnGroupPT('root') } : ptm('tfoot')" data-pc-section="tfoot">
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">
3
3
  <tr v-if="!columnGroup" role="row" v-bind="ptm('footerRow')">
4
4
  <template v-for="(col, i) of columns" :key="columnProp(col, 'columnKey') || columnProp(col, 'field') || i">
5
5
  <DTFooterCell v-if="!columnProp(col, 'hidden')" :column="col" :pt="pt" />
@@ -47,7 +47,8 @@ export default {
47
47
  state: this.$data
48
48
  },
49
49
  context: {
50
- type: 'header'
50
+ type: 'footer',
51
+ scrollable: this.ptmTFootOptions.context.scrollable
51
52
  }
52
53
  };
53
54
 
@@ -119,6 +120,13 @@ export default {
119
120
  }
120
121
 
121
122
  return hasFooter;
123
+ },
124
+ ptmTFootOptions() {
125
+ return {
126
+ context: {
127
+ scrollable: this.$parentInstance?.$parentInstance?.scrollable
128
+ }
129
+ };
122
130
  }
123
131
  },
124
132
  components: {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <thead :class="cx('thead')" :style="sx('thead')" role="rowgroup" v-bind="columnGroup ? { ...ptm('thead'), ...getColumnGroupPT('root') } : ptm('thead')" data-pc-section="thead">
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">
3
3
  <template v-if="!columnGroup">
4
4
  <tr role="row" v-bind="ptm('headerRow')">
5
5
  <template v-for="(col, i) of columns" :key="columnProp(col, 'columnKey') || columnProp(col, 'field') || i">
@@ -244,7 +244,8 @@ export default {
244
244
  state: this.$data
245
245
  },
246
246
  context: {
247
- type: 'header'
247
+ type: 'header',
248
+ scrollable: this.$parentInstance?.$parentInstance?.scrollable
248
249
  }
249
250
  };
250
251
 
@@ -323,6 +324,15 @@ export default {
323
324
  }
324
325
  }
325
326
  },
327
+ computed: {
328
+ ptmTHeadOptions() {
329
+ return {
330
+ context: {
331
+ scrollable: this.$parentInstance?.$parentInstance?.scrollable
332
+ }
333
+ };
334
+ }
335
+ },
326
336
  components: {
327
337
  DTHeaderCell: HeaderCell,
328
338
  DTHeaderCheckbox: HeaderCheckbox,