primevue 3.9.1 → 3.10.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 (195) hide show
  1. package/accordion/Accordion.d.ts +74 -11
  2. package/accordiontab/AccordionTab.d.ts +37 -8
  3. package/api/Api.d.ts +292 -285
  4. package/autocomplete/AutoComplete.d.ts +279 -62
  5. package/avatar/Avatar.d.ts +57 -8
  6. package/avatargroup/AvatarGroup.d.ts +29 -3
  7. package/badge/Badge.d.ts +46 -5
  8. package/blockui/BlockUI.d.ts +52 -11
  9. package/breadcrumb/Breadcrumb.d.ts +49 -9
  10. package/button/Button.d.ts +68 -11
  11. package/calendar/Calendar.d.ts +322 -62
  12. package/calendar/Calendar.vue +48 -20
  13. package/calendar/calendar.cjs.js +120 -93
  14. package/calendar/calendar.cjs.min.js +1 -1
  15. package/calendar/calendar.esm.js +120 -92
  16. package/calendar/calendar.esm.min.js +1 -1
  17. package/calendar/calendar.js +122 -94
  18. package/calendar/calendar.min.js +1 -1
  19. package/card/Card.d.ts +43 -9
  20. package/carousel/Carousel.d.ts +121 -24
  21. package/cascadeselect/CascadeSelect.d.ts +164 -31
  22. package/chart/Chart.d.ts +104 -12
  23. package/chart/Chart.vue +9 -2
  24. package/chart/chart.cjs.js +9 -2
  25. package/chart/chart.cjs.min.js +1 -1
  26. package/chart/chart.esm.js +9 -2
  27. package/chart/chart.esm.min.js +1 -1
  28. package/chart/chart.js +9 -2
  29. package/chart/chart.min.js +1 -1
  30. package/checkbox/Checkbox.d.ts +65 -7
  31. package/chip/Chip.d.ts +50 -4
  32. package/chips/Chips.d.ts +88 -15
  33. package/colorpicker/ColorPicker.d.ts +105 -16
  34. package/column/Column.d.ts +448 -78
  35. package/columngroup/ColumnGroup.d.ts +30 -4
  36. package/confirmationoptions/ConfirmationOptions.d.ts +50 -0
  37. package/confirmationoptions/package.json +3 -0
  38. package/confirmationservice/ConfirmationService.d.ts +2 -1
  39. package/confirmdialog/ConfirmDialog.d.ts +57 -5
  40. package/confirmpopup/ConfirmPopup.d.ts +38 -7
  41. package/contextmenu/ContextMenu.d.ts +88 -16
  42. package/core/core.js +364 -268
  43. package/core/core.min.js +2 -2
  44. package/datatable/BodyCell.vue +26 -1
  45. package/datatable/DataTable.d.ts +1056 -131
  46. package/datatable/DataTable.vue +102 -81
  47. package/datatable/HeaderCheckbox.vue +4 -1
  48. package/datatable/TableBody.vue +53 -14
  49. package/datatable/datatable.cjs.js +414 -307
  50. package/datatable/datatable.cjs.min.js +1 -1
  51. package/datatable/datatable.esm.js +414 -308
  52. package/datatable/datatable.esm.min.js +1 -1
  53. package/datatable/datatable.js +415 -309
  54. package/datatable/datatable.min.js +1 -1
  55. package/dataview/DataView.d.ts +198 -32
  56. package/dataviewlayoutoptions/DataViewLayoutOptions.d.ts +34 -5
  57. package/deferredcontent/DeferredContent.d.ts +31 -6
  58. package/dialog/Dialog.d.ts +188 -35
  59. package/divider/Divider.d.ts +53 -8
  60. package/dock/Dock.d.ts +92 -15
  61. package/dropdown/Dropdown.d.ts +335 -76
  62. package/editor/Editor.d.ts +78 -11
  63. package/fieldset/Fieldset.d.ts +63 -11
  64. package/fileupload/FileUpload.d.ts +255 -37
  65. package/fullcalendar/FullCalendar.d.ts +29 -3
  66. package/galleria/Galleria.d.ts +196 -46
  67. package/image/Image.d.ts +51 -6
  68. package/inlinemessage/InlineMessage.d.ts +34 -6
  69. package/inplace/Inplace.d.ts +57 -12
  70. package/inputmask/InputMask.d.ts +75 -15
  71. package/inputnumber/InputNumber.d.ts +180 -30
  72. package/inputswitch/InputSwitch.d.ts +61 -9
  73. package/inputtext/InputText.d.ts +34 -5
  74. package/knob/Knob.d.ts +92 -18
  75. package/listbox/Listbox.d.ts +240 -55
  76. package/megamenu/MegaMenu.d.ts +60 -12
  77. package/menu/Menu.d.ts +84 -15
  78. package/menubar/Menubar.d.ts +52 -11
  79. package/menuitem/MenuItem.d.ts +80 -0
  80. package/menuitem/package.json +3 -0
  81. package/message/Message.d.ts +57 -11
  82. package/multiselect/MultiSelect.d.ts +363 -83
  83. package/orderlist/OrderList.d.ts +122 -19
  84. package/organizationchart/OrganizationChart.d.ts +137 -15
  85. package/overlaypanel/OverlayPanel.d.ts +107 -12
  86. package/package.json +1 -1
  87. package/paginator/Paginator.d.ts +129 -27
  88. package/panel/Panel.d.ts +64 -9
  89. package/panelmenu/PanelMenu.d.ts +59 -11
  90. package/panelmenu/PanelMenu.vue +2 -2
  91. package/panelmenu/panelmenu.cjs.js +4 -4
  92. package/panelmenu/panelmenu.cjs.min.js +1 -1
  93. package/panelmenu/panelmenu.esm.js +4 -4
  94. package/panelmenu/panelmenu.esm.min.js +1 -1
  95. package/panelmenu/panelmenu.js +4 -4
  96. package/panelmenu/panelmenu.min.js +1 -1
  97. package/password/Password.d.ts +115 -24
  98. package/picklist/PickList.d.ts +199 -32
  99. package/progressbar/ProgressBar.d.ts +43 -8
  100. package/progressspinner/ProgressSpinner.d.ts +39 -6
  101. package/radiobutton/RadioButton.d.ts +51 -6
  102. package/rating/Rating.d.ts +67 -10
  103. package/resources/themes/arya-blue/theme.css +5 -1
  104. package/resources/themes/arya-green/theme.css +5 -1
  105. package/resources/themes/arya-orange/theme.css +5 -1
  106. package/resources/themes/arya-purple/theme.css +5 -1
  107. package/resources/themes/bootstrap4-dark-blue/theme.css +5 -1
  108. package/resources/themes/bootstrap4-dark-purple/theme.css +5 -1
  109. package/resources/themes/bootstrap4-light-blue/theme.css +5 -1
  110. package/resources/themes/bootstrap4-light-purple/theme.css +5 -1
  111. package/resources/themes/fluent-light/theme.css +5 -1
  112. package/resources/themes/lara-dark-blue/theme.css +43 -39
  113. package/resources/themes/lara-dark-indigo/theme.css +43 -39
  114. package/resources/themes/lara-dark-purple/theme.css +43 -39
  115. package/resources/themes/lara-dark-teal/theme.css +43 -39
  116. package/resources/themes/lara-light-blue/theme.css +5 -1
  117. package/resources/themes/lara-light-indigo/theme.css +5 -1
  118. package/resources/themes/lara-light-purple/theme.css +5 -1
  119. package/resources/themes/lara-light-teal/theme.css +5 -1
  120. package/resources/themes/luna-amber/theme.css +5 -1
  121. package/resources/themes/luna-blue/theme.css +5 -1
  122. package/resources/themes/luna-green/theme.css +5 -1
  123. package/resources/themes/luna-pink/theme.css +5 -1
  124. package/resources/themes/md-dark-deeppurple/theme.css +5 -1
  125. package/resources/themes/md-dark-indigo/theme.css +5 -1
  126. package/resources/themes/md-light-deeppurple/theme.css +5 -1
  127. package/resources/themes/md-light-indigo/theme.css +5 -1
  128. package/resources/themes/mdc-dark-deeppurple/theme.css +5 -1
  129. package/resources/themes/mdc-dark-indigo/theme.css +5 -1
  130. package/resources/themes/mdc-light-deeppurple/theme.css +5 -1
  131. package/resources/themes/mdc-light-indigo/theme.css +5 -1
  132. package/resources/themes/nova/theme.css +5 -1
  133. package/resources/themes/nova-accent/theme.css +5 -1
  134. package/resources/themes/nova-alt/theme.css +5 -1
  135. package/resources/themes/nova-vue/theme.css +5 -1
  136. package/resources/themes/rhea/theme.css +5 -1
  137. package/resources/themes/saga-blue/theme.css +5 -1
  138. package/resources/themes/saga-green/theme.css +5 -1
  139. package/resources/themes/saga-orange/theme.css +5 -1
  140. package/resources/themes/saga-purple/theme.css +5 -1
  141. package/resources/themes/tailwind-light/theme.css +5 -1
  142. package/resources/themes/vela-blue/theme.css +5 -1
  143. package/resources/themes/vela-green/theme.css +5 -1
  144. package/resources/themes/vela-orange/theme.css +5 -1
  145. package/resources/themes/vela-purple/theme.css +5 -1
  146. package/row/Row.d.ts +25 -3
  147. package/scrollpanel/ScrollPanel.d.ts +27 -5
  148. package/scrolltop/ScrollTop.d.ts +47 -7
  149. package/selectbutton/SelectButton.d.ts +101 -17
  150. package/sidebar/Sidebar.d.ts +81 -16
  151. package/skeleton/Skeleton.d.ts +58 -9
  152. package/slider/Slider.d.ts +90 -14
  153. package/speeddial/SpeedDial.d.ts +166 -29
  154. package/splitbutton/SplitButton.d.ts +71 -11
  155. package/splitter/Splitter.d.ts +74 -7
  156. package/splitterpanel/SplitterPanel.d.ts +34 -7
  157. package/steps/Steps.d.ts +51 -11
  158. package/tabmenu/TabMenu.d.ts +63 -10
  159. package/tabpanel/TabPanel.d.ts +34 -7
  160. package/tabview/TabView.d.ts +73 -11
  161. package/tag/Tag.d.ts +44 -8
  162. package/terminal/Terminal.d.ts +36 -5
  163. package/terminalservice/TerminalService.d.ts +1 -1
  164. package/textarea/Textarea.d.ts +38 -6
  165. package/tieredmenu/TieredMenu.d.ts +89 -15
  166. package/timeline/Timeline.d.ts +94 -15
  167. package/toast/Toast.d.ts +110 -12
  168. package/toastservice/ToastService.d.ts +17 -5
  169. package/togglebutton/ToggleButton.d.ts +64 -11
  170. package/toolbar/Toolbar.d.ts +31 -6
  171. package/tree/Tree.d.ts +189 -26
  172. package/treeselect/TreeSelect.d.ts +201 -44
  173. package/treetable/TreeTable.d.ts +459 -63
  174. package/tristatecheckbox/TriStateCheckbox.d.ts +39 -5
  175. package/ts-helpers.d.ts +28 -0
  176. package/useconfirm/UseConfirm.d.ts +5 -19
  177. package/usetoast/UseToast.d.ts +3 -5
  178. package/utils/Utils.d.ts +3 -0
  179. package/utils/utils.cjs.js +39 -2
  180. package/utils/utils.cjs.min.js +1 -1
  181. package/utils/utils.esm.js +39 -2
  182. package/utils/utils.esm.min.js +1 -1
  183. package/utils/utils.js +39 -2
  184. package/utils/utils.min.js +1 -1
  185. package/vetur-attributes.json +57 -25
  186. package/vetur-tags.json +11 -3
  187. package/virtualscroller/VirtualScroller.d.ts +294 -53
  188. package/virtualscroller/VirtualScroller.vue +296 -255
  189. package/virtualscroller/virtualscroller.cjs.js +325 -266
  190. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  191. package/virtualscroller/virtualscroller.esm.js +325 -266
  192. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  193. package/virtualscroller/virtualscroller.js +325 -266
  194. package/virtualscroller/virtualscroller.min.js +1 -1
  195. package/web-types.json +153 -28
@@ -4,15 +4,21 @@ var vue = require('vue');
4
4
 
5
5
  var script = {
6
6
  name: 'VirtualScroller',
7
- emits: ['update:numToleratedItems', 'scroll-index-change', 'lazy-load'],
7
+ emits: ['update:numToleratedItems', 'scroll', 'scroll-index-change', 'lazy-load'],
8
8
  props: {
9
+ id: {
10
+ type: String,
11
+ default: null
12
+ },
13
+ style: null,
14
+ class: null,
9
15
  items: {
10
16
  type: Array,
11
17
  default: null
12
18
  },
13
19
  itemSize: {
14
20
  type: [Number,Array],
15
- default: null
21
+ default: 0
16
22
  },
17
23
  scrollHeight: null,
18
24
  scrollWidth: null,
@@ -32,17 +38,27 @@ var script = {
32
38
  type: Boolean,
33
39
  default: false
34
40
  },
35
- showLoader: {
41
+ disabled: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ loaderDisabled: {
36
46
  type: Boolean,
37
47
  default: false
38
48
  },
49
+ columns: {
50
+ type: Array,
51
+ default: null
52
+ },
39
53
  loading: {
40
54
  type: Boolean,
41
55
  default: false
42
56
  },
43
- style: null,
44
- class: null,
45
- disabled: {
57
+ showSpacer: {
58
+ type: Boolean,
59
+ default: true
60
+ },
61
+ showLoader: {
46
62
  type: Boolean,
47
63
  default: false
48
64
  }
@@ -55,15 +71,19 @@ var script = {
55
71
  lastScrollPos: this.isBoth() ? { top: 0, left: 0 } : 0,
56
72
  d_numToleratedItems: this.numToleratedItems,
57
73
  d_loading: this.loading,
58
- loaderArr: null
74
+ loaderArr: [],
75
+ spacerStyle: {},
76
+ contentStyle: {}
59
77
  }
60
78
  },
61
79
  element: null,
62
80
  content: null,
63
- spacer: null,
81
+ lastScrollPos: null,
64
82
  scrollTimeout: null,
65
83
  mounted() {
66
84
  this.init();
85
+
86
+ this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;
67
87
  },
68
88
  watch: {
69
89
  numToleratedItems(newValue) {
@@ -72,67 +92,185 @@ var script = {
72
92
  loading(newValue) {
73
93
  this.d_loading = newValue;
74
94
  },
75
- items(newValue, oldVal) {
76
- if (!oldVal || oldVal.length !== (newValue || []).length) {
95
+ items(newValue, oldValue) {
96
+ if (!oldValue || oldValue.length !== (newValue || []).length) {
77
97
  this.init();
78
98
  }
99
+ },
100
+ orientation() {
101
+ this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;
79
102
  }
80
103
  },
81
104
  methods: {
82
105
  init() {
83
- if (!this.disabled) {
84
- this.setSize();
85
- this.calculateOptions();
86
- this.setSpacerSize();
106
+ this.setSize();
107
+ this.calculateOptions();
108
+ this.setSpacerSize();
109
+ },
110
+ isVertical() {
111
+ return this.orientation === 'vertical';
112
+ },
113
+ isHorizontal() {
114
+ return this.orientation === 'horizontal';
115
+ },
116
+ isBoth() {
117
+ return this.orientation === 'both';
118
+ },
119
+ scrollTo(options) {
120
+ this.element && this.element.scrollTo(options);
121
+ },
122
+ scrollToIndex(index, behavior = 'auto') {
123
+ const both = this.isBoth();
124
+ const horizontal = this.isHorizontal();
125
+ const contentPos = this.getContentPosition();
126
+ const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);
127
+ const calculateCoord = (_first, _size, _cpos) => (_first * _size) + _cpos;
128
+ const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
129
+
130
+ if (both) {
131
+ const newFirst = { rows: calculateFirst(index[0], this.d_numToleratedItems[0]), cols: calculateFirst(index[1], this.d_numToleratedItems[1]) };
132
+ if (newFirst.rows !== this.first.rows || newFirst.cols !== this.first.cols) {
133
+ scrollTo(calculateCoord(newFirst.cols, this.itemSize[1], contentPos.left), calculateCoord(newFirst.rows, this.itemSize[0], contentPos.top));
134
+ this.first = newFirst;
135
+ }
136
+ }
137
+ else {
138
+ const newFirst = calculateFirst(index, this.d_numToleratedItems);
139
+
140
+ if (newFirst !== this.first) {
141
+ horizontal ? scrollTo(calculateCoord(newFirst, this.itemSize, contentPos.left), 0) : scrollTo(0, calculateCoord(newFirst, this.itemSize, contentPos.top));
142
+ this.first = newFirst;
143
+ }
87
144
  }
88
145
  },
89
- getLast(last, isCols) {
90
- return this.items ? Math.min((isCols ? this.items[0].length : this.items.length), last) : 0;
146
+ scrollInView(index, to, behavior = 'auto') {
147
+ if (to) {
148
+ const both = this.isBoth();
149
+ const horizontal = this.isHorizontal();
150
+ const { first, viewport } = this.getRenderedRange();
151
+ const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
152
+ const isToStart = to === 'to-start';
153
+ const isToEnd = to === 'to-end';
154
+
155
+ if (isToStart) {
156
+ if (both) {
157
+ if (viewport.first.rows - first.rows > index[0]) {
158
+ scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows - 1) * this.itemSize[0]);
159
+ }
160
+ else if (viewport.first.cols - first.cols > index[1]) {
161
+ scrollTo((viewport.first.cols - 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);
162
+ }
163
+ }
164
+ else {
165
+ if (viewport.first - first > index) {
166
+ const pos = (viewport.first - 1) * this.itemSize;
167
+ horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
168
+ }
169
+ }
170
+ }
171
+ else if (isToEnd) {
172
+ if (both) {
173
+ if (viewport.last.rows - first.rows <= index[0] + 1) {
174
+ scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows + 1) * this.itemSize[0]);
175
+ }
176
+ else if (viewport.last.cols - first.cols <= index[1] + 1) {
177
+ scrollTo((viewport.first.cols + 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);
178
+ }
179
+ }
180
+ else {
181
+ if (viewport.last - first <= index + 1) {
182
+ const pos = (viewport.first + 1) * this.itemSize;
183
+ horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ else {
189
+ this.scrollToIndex(index, behavior);
190
+ }
191
+ },
192
+ getRenderedRange() {
193
+ const calculateFirstInViewport = (_pos, _size) => Math.floor(_pos / (_size || _pos));
194
+
195
+ let firstInViewport = this.first;
196
+ let lastInViewport = 0;
197
+
198
+ if (this.element) {
199
+ const both = this.isBoth();
200
+ const horizontal = this.isHorizontal();
201
+ const scrollTop = this.element.scrollTop;
202
+ const scrollLeft = this.element.scrollLeft;
203
+
204
+ if (both) {
205
+ firstInViewport = { rows: calculateFirstInViewport(scrollTop, this.itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this.itemSize[1]) };
206
+ lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };
207
+ }
208
+ else {
209
+ const scrollPos = horizontal ? scrollLeft : scrollTop;
210
+ firstInViewport = calculateFirstInViewport(scrollPos, this.itemSize);
211
+ lastInViewport = firstInViewport + this.numItemsInViewport;
212
+ }
213
+ }
214
+
215
+ return {
216
+ first: this.first,
217
+ last: this.last,
218
+ viewport: {
219
+ first: firstInViewport,
220
+ last: lastInViewport
221
+ }
222
+ };
91
223
  },
92
224
  calculateOptions() {
93
- const isBoth = this.isBoth();
94
- const isHorizontal = this.isHorizontal();
95
- const first = this.first;
96
- const itemSize = this.itemSize;
97
- const contentPadding = this.getContentPadding();
98
- const contentWidth = this.element ? this.element.offsetWidth - contentPadding.left : 0;
99
- const contentHeight = this.element ? this.element.offsetHeight - contentPadding.top : 0;
225
+ const both = this.isBoth();
226
+ const horizontal = this.isHorizontal();
227
+ const contentPos = this.getContentPosition();
228
+ const contentWidth = this.element ? this.element.offsetWidth - contentPos.left : 0;
229
+ const contentHeight = this.element ? this.element.offsetHeight - contentPos.top : 0;
100
230
  const calculateNumItemsInViewport = (_contentSize, _itemSize) => Math.ceil(_contentSize / (_itemSize || _contentSize));
101
- const numItemsInViewport = isBoth ?
102
- { rows: calculateNumItemsInViewport(contentHeight, itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, itemSize[1]) } :
103
- calculateNumItemsInViewport((isHorizontal ? contentWidth : contentHeight), itemSize);
231
+ const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);
232
+ const numItemsInViewport = both ?
233
+ { rows: calculateNumItemsInViewport(contentHeight, this.itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, this.itemSize[1]) } :
234
+ calculateNumItemsInViewport((horizontal ? contentWidth : contentHeight), this.itemSize);
104
235
 
105
- let numToleratedItems = this.d_numToleratedItems || Math.ceil((isBoth ? numItemsInViewport.rows : numItemsInViewport) / 2);
106
- const calculateLast = (_first, _num, _isCols) => this.getLast(_first + _num + ((_first < numToleratedItems ? 2 : 3) * numToleratedItems), _isCols);
107
- const last = isBoth ?
108
- { rows: calculateLast(first.rows, numItemsInViewport.rows), cols: calculateLast(first.cols, numItemsInViewport.cols, true) } :
109
- calculateLast(first, numItemsInViewport);
236
+ let numToleratedItems = this.d_numToleratedItems || (both ?
237
+ [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] :
238
+ calculateNumToleratedItems(numItemsInViewport));
239
+
240
+ const calculateLast = (_first, _num, _numT, _isCols) => this.getLast(_first + _num + ((_first < _numT ? 2 : 3) * _numT), _isCols);
241
+ const last = both ?
242
+ { rows: calculateLast(this.first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(this.first.cols, numItemsInViewport.cols, numToleratedItems[1], true) } :
243
+ calculateLast(this.first, numItemsInViewport, numToleratedItems);
110
244
 
111
- this.d_numToleratedItems = numToleratedItems;
112
- this.$emit('update:numToleratedItems', this.d_numToleratedItems);
113
245
  this.last = last;
114
246
  this.numItemsInViewport = numItemsInViewport;
247
+ this.d_numToleratedItems = numToleratedItems;
248
+ this.$emit('update:numToleratedItems', this.d_numToleratedItems);
115
249
 
116
250
  if (this.showLoader) {
117
- if (this.$slots && this.$slots.loader) {
118
- this.loaderArr = Array.from({ length: (isBoth ? numItemsInViewport.rows : numItemsInViewport) });
119
- }
120
- else {
121
- this.loaderArr = Array.from({ length: 1});
122
- }
251
+ this.loaderArr = both ?
252
+ Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) :
253
+ Array.from({ length: numItemsInViewport });
123
254
  }
124
255
 
125
256
  if (this.lazy) {
126
- this.$emit('lazy-load', { first, last });
257
+ this.$emit('lazy-load', { first: this.first, last });
127
258
  }
128
259
  },
129
- getContentPadding() {
260
+ getLast(last = 0, isCols) {
261
+ if (this.items) {
262
+ return Math.min((isCols ? (this.columns || this.items[0]).length : this.items.length), last);
263
+ }
264
+
265
+ return 0;
266
+ },
267
+ getContentPosition() {
130
268
  if (this.content) {
131
269
  const style = getComputedStyle(this.content);
132
- const left = parseInt(parseFloat(style.paddingLeft.slice(0, -2)), 10);
133
- const right = parseInt(parseFloat(style.paddingRight.slice(0, -2)), 10);
134
- const top = parseInt(parseFloat(style.paddingTop.slice(0, -2)), 10);
135
- const bottom = parseInt(parseFloat(style.paddingBottom.slice(0, -2)), 10);
270
+ const left = parseInt(style.paddingLeft, 10) + Math.max(parseInt(style.left, 10), 0);
271
+ const right = parseInt(style.paddingRight, 10) + Math.max(parseInt(style.right, 10), 0);
272
+ const top = parseInt(style.paddingTop, 10) + Math.max(parseInt(style.top, 10), 0);
273
+ const bottom = parseInt(style.paddingBottom, 10) + Math.max(parseInt(style.bottom, 10), 0);
136
274
 
137
275
  return { left, right, top, bottom, x: left + right, y: top + bottom };
138
276
  }
@@ -141,126 +279,125 @@ var script = {
141
279
  },
142
280
  setSize() {
143
281
  if (this.element) {
144
- const isBoth = this.isBoth();
145
- const isHorizontal = this.isHorizontal();
282
+ const both = this.isBoth();
283
+ const horizontal = this.isHorizontal();
146
284
  const parentElement = this.element.parentElement;
147
285
  const width = this.scrollWidth || `${(this.element.offsetWidth || parentElement.offsetWidth)}px`;
148
286
  const height = this.scrollHeight || `${(this.element.offsetHeight || parentElement.offsetHeight)}px`;
149
287
  const setProp = (_name, _value) => this.element.style[_name] = _value;
150
288
 
151
- if (isBoth) {
289
+ if (both || horizontal) {
152
290
  setProp('height', height);
153
291
  setProp('width', width);
154
292
  }
155
293
  else {
156
- isHorizontal ? setProp('width', width) : setProp('height', height);
294
+ setProp('height', height);
157
295
  }
158
296
  }
159
297
  },
160
298
  setSpacerSize() {
161
299
  const items = this.items;
162
300
 
163
- if (this.spacer && items) {
164
- const isBoth = this.isBoth();
165
- const isHorizontal = this.isHorizontal();
166
- const itemSize = this.itemSize;
167
- const contentPadding = this.getContentPadding();
168
- const setProp = (_name, _value, _size, _padding = 0) => this.spacer.style[_name] = (((_value || []).length * _size) + _padding) + 'px';
301
+ if (items) {
302
+ const both = this.isBoth();
303
+ const horizontal = this.isHorizontal();
304
+ const contentPos = this.getContentPosition();
305
+ const setProp = (_name, _value, _size, _cpos = 0) => this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: (((_value || []).length * _size) + _cpos) + 'px' } };
169
306
 
170
- if (isBoth) {
171
- setProp('height', items[0], itemSize[0], contentPadding.y);
172
- setProp('width', items[1], itemSize[1], contentPadding.x);
307
+ if (both) {
308
+ setProp('height', items, this.itemSize[0], contentPos.y);
309
+ setProp('width', (this.columns || items[1]), this.itemSize[1], contentPos.x);
173
310
  }
174
311
  else {
175
- isHorizontal ? setProp('width', items, itemSize, contentPadding.x) : setProp('height', items, itemSize, contentPadding.y);
312
+ horizontal ? setProp('width', (this.columns || items), this.itemSize, contentPos.x) : setProp('height', items, this.itemSize, contentPos.y);
176
313
  }
177
314
  }
178
315
  },
179
316
  setContentPosition(pos) {
180
317
  if (this.content) {
181
- const isBoth = this.isBoth();
182
- const isHorizontal = this.isHorizontal();
183
- const content = this.content;
318
+ const both = this.isBoth();
319
+ const horizontal = this.isHorizontal();
184
320
  const first = pos ? pos.first : this.first;
185
- const itemSize = this.itemSize;
186
321
  const calculateTranslateVal = (_first, _size) => (_first * _size);
187
- const setTransform = (_x = 0, _y = 0) => content.style.transform = `translate3d(${_x}px, ${_y}px, 0)`;
322
+ const setTransform = (_x = 0, _y = 0) => {
323
+ this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } };
324
+ };
188
325
 
189
- if (isBoth) {
190
- setTransform(calculateTranslateVal(first.cols, itemSize[1]), calculateTranslateVal(first.rows, itemSize[0]));
326
+ if (both) {
327
+ setTransform(calculateTranslateVal(first.cols, this.itemSize[1]), calculateTranslateVal(first.rows, this.itemSize[0]));
191
328
  }
192
329
  else {
193
- const translateVal = calculateTranslateVal(first, itemSize);
194
- isHorizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);
330
+ const translateVal = calculateTranslateVal(first, this.itemSize);
331
+ horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);
195
332
  }
196
333
  }
197
334
  },
198
335
  onScrollPositionChange(event) {
199
336
  const target = event.target;
200
- const isBoth = this.isBoth();
201
- const isHorizontal = this.isHorizontal();
202
- const itemSize = this.itemSize;
203
- const contentPadding = this.getContentPadding();
204
- const calculateScrollPos = (_pos, _padding) => _pos ? (_pos > _padding ? _pos - _padding : _pos) : 0;
337
+ const both = this.isBoth();
338
+ const horizontal = this.isHorizontal();
339
+ const contentPos = this.getContentPosition();
340
+ const calculateScrollPos = (_pos, _cpos) => _pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0;
205
341
  const calculateCurrentIndex = (_pos, _size) => Math.floor(_pos / (_size || _pos));
206
- const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _isScrollDownOrRight) => {
207
- return (_currentIndex <= this.d_numToleratedItems ? this.d_numToleratedItems : (_isScrollDownOrRight ? (_last - _num - this.d_numToleratedItems) : (_first + this.d_numToleratedItems - 1)))
342
+ const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {
343
+ return (_currentIndex <= _numT ? _numT : (_isScrollDownOrRight ? (_last - _num - _numT) : (_first + _numT - 1)))
208
344
  };
209
- const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _isScrollDownOrRight) => {
210
- if (_currentIndex <= this.d_numToleratedItems)
345
+ const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {
346
+ if (_currentIndex <= _numT)
211
347
  return 0;
212
348
  else
213
- return _isScrollDownOrRight ?
214
- (_currentIndex < _triggerIndex ? _first : _currentIndex - this.d_numToleratedItems) :
215
- (_currentIndex > _triggerIndex ? _first : _currentIndex - (2 * this.d_numToleratedItems));
349
+ return Math.max(0, _isScrollDownOrRight ?
350
+ (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) :
351
+ (_currentIndex > _triggerIndex ? _first : _currentIndex - (2 * _numT)));
216
352
  };
217
- const calculateLast = (_currentIndex, _first, _last, _num, _isCols) => {
218
- let lastValue = _first + _num + (2 * this.d_numToleratedItems);
353
+ const calculateLast = (_currentIndex, _first, _last, _num, _numT, _isCols) => {
354
+ let lastValue = _first + _num + (2 * _numT);
219
355
 
220
- if (_currentIndex >= this.d_numToleratedItems) {
221
- lastValue += (this.d_numToleratedItems + 1);
356
+ if (_currentIndex >= _numT) {
357
+ lastValue += (_numT + 1);
222
358
  }
223
359
 
224
360
  return this.getLast(lastValue, _isCols);
225
361
  };
226
362
 
227
- const scrollTop = calculateScrollPos(target.scrollTop, contentPadding.top);
228
- const scrollLeft = calculateScrollPos(target.scrollLeft, contentPadding.left);
363
+ const scrollTop = calculateScrollPos(target.scrollTop, contentPos.top);
364
+ const scrollLeft = calculateScrollPos(target.scrollLeft, contentPos.left);
229
365
 
230
366
  let newFirst = 0;
231
367
  let newLast = this.last;
232
368
  let isRangeChanged = false;
233
369
 
234
- if (isBoth) {
370
+ if (both) {
235
371
  const isScrollDown = this.lastScrollPos.top <= scrollTop;
236
372
  const isScrollRight = this.lastScrollPos.left <= scrollLeft;
237
- const currentIndex = { rows: calculateCurrentIndex(scrollTop, itemSize[0]), cols: calculateCurrentIndex(scrollLeft, itemSize[1]) };
373
+ const currentIndex = { rows: calculateCurrentIndex(scrollTop, this.itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this.itemSize[1]) };
238
374
  const triggerIndex = {
239
- rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, isScrollDown),
240
- cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, isScrollRight)
375
+ rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
376
+ cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
241
377
  };
242
378
 
243
379
  newFirst = {
244
- rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, isScrollDown),
245
- cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, isScrollRight)
380
+ rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
381
+ cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
246
382
  };
247
383
  newLast = {
248
- rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows),
249
- cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, true)
384
+ rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),
385
+ cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)
250
386
  };
251
- isRangeChanged = (newFirst.rows !== this.first.rows || newFirst.cols !== this.first.cols) || (newLast.rows !== this.last.rows || newLast.cols !== this.last.cols);
387
+
388
+ isRangeChanged = (newFirst.rows !== this.first.rows && newLast.rows !== this.last.rows) || (newFirst.cols !== this.first.cols && newLast.cols !== this.last.cols);
252
389
 
253
390
  this.lastScrollPos = { top: scrollTop, left: scrollLeft };
254
391
  }
255
392
  else {
256
- const scrollPos = isHorizontal ? scrollLeft : scrollTop;
393
+ const scrollPos = horizontal ? scrollLeft : scrollTop;
257
394
  const isScrollDownOrRight = this.lastScrollPos <= scrollPos;
258
- const currentIndex = calculateCurrentIndex(scrollPos, itemSize);
259
- const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, isScrollDownOrRight);
395
+ const currentIndex = calculateCurrentIndex(scrollPos, this.itemSize);
396
+ const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
260
397
 
261
- newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, isScrollDownOrRight);
262
- newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport);
263
- isRangeChanged = newFirst !== this.first || newLast !== this.last;
398
+ newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
399
+ newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);
400
+ isRangeChanged = newFirst !== this.first && newLast !== this.last;
264
401
 
265
402
  this.lastScrollPos = scrollPos;
266
403
  }
@@ -279,27 +416,27 @@ var script = {
279
416
 
280
417
  this.setContentPosition(newState);
281
418
 
282
- if (this.lazy) {
283
- this.$emit('lazy-load', { first, last });
284
- }
285
419
  this.first = first;
286
420
  this.last = last;
287
421
 
288
- this.$emit('scroll-index-change', { first, last });
422
+ this.$emit('scroll-index-change', newState);
423
+
424
+ if (this.lazy) {
425
+ this.$emit('lazy-load', newState);
426
+ }
289
427
  }
290
428
  },
291
429
  onScroll(event) {
292
- if (this.delay && !this.lazy) {
430
+ this.$emit('scroll', event);
431
+
432
+ if (this.delay) {
293
433
  if (this.scrollTimeout) {
294
434
  clearTimeout(this.scrollTimeout);
295
435
  }
296
436
 
297
437
  if (!this.d_loading && this.showLoader) {
298
438
  const { isRangeChanged: changed } = this.onScrollPositionChange(event);
299
-
300
- if (changed) {
301
- this.d_loading = true;
302
- }
439
+ changed && (this.d_loading = true);
303
440
  }
304
441
 
305
442
  this.scrollTimeout = setTimeout(() => {
@@ -315,8 +452,8 @@ var script = {
315
452
  }
316
453
  },
317
454
  getOptions(renderedIndex) {
318
- let count = this.items.length;
319
- let index = this.isBoth() ? this.first.rows + renderedIndex : this.first + renderedIndex;
455
+ const count = (this.items || []).length;
456
+ const index = this.isBoth() ? this.first.rows + renderedIndex : this.first + renderedIndex;
320
457
  return {
321
458
  index,
322
459
  count,
@@ -326,139 +463,23 @@ var script = {
326
463
  odd: index % 2 !== 0
327
464
  };
328
465
  },
329
- getLoaderOptions(index) {
466
+ getLoaderOptions(index, extOptions) {
330
467
  let count = this.loaderArr.length;
331
468
  return {
332
- loading: this.d_loading,
469
+ index,
470
+ count,
333
471
  first: index === 0,
334
472
  last: index === (count - 1),
335
473
  even: index % 2 === 0,
336
- odd: index % 2 !== 0
337
- }
338
- },
339
- isHorizontal() {
340
- return this.orientation === 'horizontal';
341
- },
342
- isBoth() {
343
- return this.orientation === 'both';
344
- },
345
- scrollTo(options) {
346
- if (this.element) {
347
- this.element.scrollTo(options);
348
- }
349
- },
350
- scrollToIndex(index, behavior = 'auto') {
351
- const isBoth = this.isBoth();
352
- const isHorizontal = this.isHorizontal();
353
- const itemSize = this.itemSize;
354
- const contentPadding = this.getContentPadding();
355
- const calculateFirst = (_index = 0) => (_index <= this.d_numToleratedItems ? 0 : _index);
356
- const calculateCoord = (_first, _size, _padding) => (_first * _size) + _padding;
357
- const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
358
-
359
- if (isBoth) {
360
- const newFirst = { rows: calculateFirst(index[0]), cols: calculateFirst(index[1]) };
361
- if (newFirst.rows !== this.first.rows || newFirst.cols !== this.first.cols)
362
- scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPadding.left),calculateCoord(newFirst.rows, itemSize[0], contentPadding.top));
363
- }
364
- else {
365
- const newFirst = calculateFirst(index);
366
-
367
- if (newFirst !== this.first) {
368
- isHorizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPadding.left), 0) : scrollTo(0, calculateCoord(newFirst, itemSize, contentPadding.top));
369
- }
370
-
371
- this.first = newFirst;
372
- }
373
- },
374
- scrollInView(index, to, behavior = 'auto') {
375
- if (to) {
376
- const isBoth = this.isBoth();
377
- const isHorizontal = this.isHorizontal();
378
- const { first, viewport } = this.getRenderedRange();
379
- const itemSize = this.itemSize;
380
- const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
381
- const isToStart = to === 'to-start';
382
- const isToEnd = to === 'to-end';
383
-
384
- if (isToStart) {
385
- if (isBoth) {
386
- if (viewport.first.rows - first.rows > index[0]) {
387
- scrollTo(viewport.first.cols * itemSize[1], (viewport.first.rows - 1) * itemSize[0]);
388
- }
389
- else if (viewport.first.cols - first.cols > index[1]) {
390
- scrollTo((viewport.first.cols - 1) * itemSize[1], viewport.first.rows * itemSize[0]);
391
- }
392
- }
393
- else {
394
- if (viewport.first - first > index) {
395
- const pos = (viewport.first - 1) * itemSize;
396
- isHorizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
397
- }
398
- }
399
- }
400
- else if (isToEnd) {
401
- if (isBoth) {
402
- if (viewport.last.rows - first.rows <= index[0] + 1) {
403
- scrollTo(viewport.first.cols * itemSize[1], (viewport.first.rows + 1) * itemSize[0]);
404
- }
405
- else if (viewport.last.cols - first.cols <= index[1] + 1) {
406
- scrollTo((viewport.first.cols + 1) * itemSize[1], viewport.first.rows * itemSize[0]);
407
- }
408
- }
409
- else {
410
- if (viewport.last - first <= index + 1) {
411
- const pos = (viewport.first + 1) * itemSize;
412
- isHorizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
413
- }
414
- }
415
- }
416
- }
417
- else {
418
- this.scrollToIndex(index, behavior);
419
- }
420
- },
421
- getRenderedRange() {
422
- const isBoth = this.isBoth();
423
- const isHorizontal = this.isHorizontal();
424
- const itemSize = this.itemSize;
425
- const calculateFirstInViewport = (_pos, _size) => Math.floor(_pos / (_size || _pos));
426
-
427
- let firstInViewport = this.first;
428
- let lastInViewport = 0;
429
-
430
- if (this.element) {
431
- const scrollTop = this.element.scrollTop;
432
- const scrollLeft = this.element.scrollLeft;
433
-
434
- if (isBoth) {
435
- firstInViewport = { rows: calculateFirstInViewport(scrollTop, itemSize[0]), cols: calculateFirstInViewport(scrollLeft, itemSize[1]) };
436
- lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };
437
- }
438
- else {
439
- const scrollPos = isHorizontal ? scrollLeft : scrollTop;
440
- firstInViewport = calculateFirstInViewport(scrollPos, itemSize);
441
- lastInViewport = firstInViewport + this.numItemsInViewport;
442
- }
474
+ odd: index % 2 !== 0,
475
+ ...extOptions
443
476
  }
444
-
445
- return {
446
- first: this.first,
447
- last: this.last,
448
- viewport: {
449
- first: firstInViewport,
450
- last: lastInViewport
451
- }
452
- };
453
477
  },
454
478
  elementRef(el) {
455
479
  this.element = el;
456
480
  },
457
481
  contentRef(el) {
458
482
  this.content = el;
459
- },
460
- spacerRef(el) {
461
- this.spacer = el;
462
483
  }
463
484
  },
464
485
  computed: {
@@ -468,6 +489,11 @@ var script = {
468
489
  'p-horizontal-scroll': this.isHorizontal()
469
490
  }, this.class];
470
491
  },
492
+ contentClass() {
493
+ return ['p-virtualscroller-content', {
494
+ 'p-virtualscroller-loading': this.d_loading
495
+ }];
496
+ },
471
497
  loaderClass() {
472
498
  return ['p-virtualscroller-loader', {
473
499
  'p-component-overlay': !this.$slots.loader
@@ -476,27 +502,41 @@ var script = {
476
502
  loadedItems() {
477
503
  const items = this.items;
478
504
  if (items && !this.d_loading) {
479
- const isBoth = this.isBoth();
480
-
481
- if (isBoth) {
482
- return items.slice(this.first.rows, this.last.rows).map((item) => {
483
- const items = item.slice(this.first.cols, this.last.cols);
484
- return items;
485
- });
486
- }
487
- else {
488
- return items.slice(this.first, this.last).map((item) => {
489
- return item;
490
- });
505
+ if (this.isBoth()) {
506
+ return items.slice(this.first.rows, this.last.rows).map(item => this.columns ? item : item.slice(this.first.cols, this.last.cols));
491
507
  }
508
+ else if (this.isHorizontal() && this.columns)
509
+ return items;
510
+ else
511
+ return items.slice(this.first, this.last);
492
512
  }
493
513
 
494
514
  return [];
515
+ },
516
+ loadedRows() {
517
+ return this.d_loading ? (this.loaderDisabled ? this.loaderArr : []) : this.loadedItems;
518
+ },
519
+ loadedColumns() {
520
+ if (this.columns) {
521
+ const both = this.isBoth();
522
+ const horizontal = this.isHorizontal();
523
+
524
+ if (both || horizontal) {
525
+ return this.d_loading && this.loaderDisabled ?
526
+ (both ? this.loaderArr[0] : this.loaderArr):
527
+ this.columns.slice((both ? this.first.cols : this.first), (both ? this.last.cols : this.last));
528
+ }
529
+ }
530
+
531
+ return this.columns;
495
532
  }
496
533
  }
497
534
  };
498
535
 
499
- const _hoisted_1 = /*#__PURE__*/vue.createVNode("i", { class: "p-virtualscroller-loading-icon pi pi-spinner pi-spin" }, null, -1);
536
+ const _hoisted_1 = {
537
+ key: 1,
538
+ class: "p-virtualscroller-loading-icon pi pi-spinner pi-spin"
539
+ };
500
540
 
501
541
  function render(_ctx, _cache, $props, $setup, $data, $options) {
502
542
  return (!$props.disabled)
@@ -504,18 +544,30 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
504
544
  key: 0,
505
545
  ref: $options.elementRef,
506
546
  class: $options.containerClass,
547
+ tabindex: 0,
507
548
  style: $props.style,
508
549
  onScroll: _cache[1] || (_cache[1] = (...args) => ($options.onScroll && $options.onScroll(...args)))
509
550
  }, [
510
551
  vue.renderSlot(_ctx.$slots, "content", {
511
- styleClass: "p-virtualscroller-content",
512
- contentRef: $options.contentRef,
552
+ styleClass: $options.contentClass,
513
553
  items: $options.loadedItems,
514
- getItemOptions: $options.getOptions
554
+ getItemOptions: $options.getOptions,
555
+ loading: $data.d_loading,
556
+ getLoaderOptions: $options.getLoaderOptions,
557
+ itemSize: $props.itemSize,
558
+ rows: $options.loadedRows,
559
+ columns: $options.loadedColumns,
560
+ contentRef: $options.contentRef,
561
+ spacerStyle: $data.spacerStyle,
562
+ contentStyle: $data.contentStyle,
563
+ vertical: $options.isVertical(),
564
+ horizontal: $options.isHorizontal(),
565
+ both: $options.isBoth()
515
566
  }, () => [
516
567
  vue.createVNode("div", {
517
568
  ref: $options.contentRef,
518
- class: "p-virtualscroller-content"
569
+ class: $options.contentClass,
570
+ style: $data.contentStyle
519
571
  }, [
520
572
  (vue.openBlock(true), vue.createBlock(vue.Fragment, null, vue.renderList($options.loadedItems, (item, index) => {
521
573
  return vue.renderSlot(_ctx.$slots, "item", {
@@ -524,31 +576,38 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
524
576
  options: $options.getOptions(index)
525
577
  })
526
578
  }), 128))
527
- ], 512)
579
+ ], 6)
528
580
  ]),
529
- vue.createVNode("div", {
530
- ref: $options.spacerRef,
531
- class: "p-virtualscroller-spacer"
532
- }, null, 512),
533
- ($data.d_loading)
581
+ ($props.showSpacer)
534
582
  ? (vue.openBlock(), vue.createBlock("div", {
535
583
  key: 0,
584
+ class: "p-virtualscroller-spacer",
585
+ style: $data.spacerStyle
586
+ }, null, 4))
587
+ : vue.createCommentVNode("", true),
588
+ (!$props.loaderDisabled && $props.showLoader && $data.d_loading)
589
+ ? (vue.openBlock(), vue.createBlock("div", {
590
+ key: 1,
536
591
  class: $options.loaderClass
537
592
  }, [
538
- (vue.openBlock(true), vue.createBlock(vue.Fragment, null, vue.renderList($data.loaderArr, (loadItem, index) => {
539
- return vue.renderSlot(_ctx.$slots, "loader", {
540
- key: index,
541
- options: $options.getLoaderOptions(index)
542
- }, () => [
543
- _hoisted_1
544
- ])
545
- }), 128))
593
+ (_ctx.$slots && _ctx.$slots.loader)
594
+ ? (vue.openBlock(true), vue.createBlock(vue.Fragment, { key: 0 }, vue.renderList($data.loaderArr, (_, index) => {
595
+ return vue.renderSlot(_ctx.$slots, "loader", {
596
+ key: index,
597
+ options: $options.getLoaderOptions(index, $options.isBoth() && { numCols: _ctx.d_numItemsInViewport.cols })
598
+ })
599
+ }), 128))
600
+ : (vue.openBlock(), vue.createBlock("i", _hoisted_1))
546
601
  ], 2))
547
602
  : vue.createCommentVNode("", true)
548
603
  ], 38))
549
604
  : (vue.openBlock(), vue.createBlock(vue.Fragment, { key: 1 }, [
550
605
  vue.renderSlot(_ctx.$slots, "default"),
551
- vue.renderSlot(_ctx.$slots, "content", { items: $props.items })
606
+ vue.renderSlot(_ctx.$slots, "content", {
607
+ items: $props.items,
608
+ rows: $props.items,
609
+ columns: $options.loadedColumns
610
+ })
552
611
  ], 64))
553
612
  }
554
613
 
@@ -579,7 +638,7 @@ function styleInject(css, ref) {
579
638
  }
580
639
  }
581
640
 
582
- var css_248z = "\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n will-change: scroll-position;\n}\n.p-virtualscroller-content {\n position: absolute;\n top: 0;\n left: 0;\n contain: content;\n min-height: 100%;\n min-width: 100%;\n will-change: transform;\n}\n.p-virtualscroller-spacer {\n position: absolute;\n top: 0;\n left: 0;\n height: 1px;\n width: 1px;\n -webkit-transform-origin: 0 0;\n transform-origin: 0 0;\n pointer-events: none;\n}\n.p-virtualscroller .p-virtualscroller-loader {\n position: sticky;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.p-virtualscroller-loader.p-component-overlay {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
641
+ var css_248z = "\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n will-change: scroll-position;\n outline: 0 none;\n}\n.p-virtualscroller-content {\n position: absolute;\n top: 0;\n left: 0;\n contain: content;\n min-height: 100%;\n min-width: 100%;\n will-change: transform;\n}\n.p-virtualscroller-spacer {\n position: absolute;\n top: 0;\n left: 0;\n height: 1px;\n width: 1px;\n -webkit-transform-origin: 0 0;\n transform-origin: 0 0;\n pointer-events: none;\n}\n.p-virtualscroller .p-virtualscroller-loader {\n position: sticky;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.p-virtualscroller-loader.p-component-overlay {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
583
642
  styleInject(css_248z);
584
643
 
585
644
  script.render = render;