primevue 3.22.4 → 3.24.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.
- package/LICENSE.md +1 -1
- package/README.md +13 -13
- package/accordion/Accordion.d.ts +53 -21
- package/accordiontab/AccordionTab.d.ts +33 -12
- package/autocomplete/AutoComplete.d.ts +111 -84
- package/avatar/Avatar.d.ts +38 -25
- package/avatar/Avatar.vue +1 -1
- package/avatar/avatar.cjs.js +2 -1
- package/avatar/avatar.cjs.min.js +1 -1
- package/avatar/avatar.esm.js +2 -1
- package/avatar/avatar.esm.min.js +1 -1
- package/avatar/avatar.js +2 -1
- package/avatar/avatar.min.js +1 -1
- package/avatargroup/AvatarGroup.d.ts +30 -14
- package/badge/Badge.d.ts +34 -20
- package/badge/Badge.vue +16 -5
- package/badge/badge.cjs.js +15 -5
- package/badge/badge.cjs.min.js +1 -1
- package/badge/badge.esm.js +15 -5
- package/badge/badge.esm.min.js +1 -1
- package/badge/badge.js +16 -7
- package/badge/badge.min.js +1 -1
- package/badgedirective/BadgeDirective.d.ts +60 -1
- package/blockui/BlockUI.d.ts +36 -16
- package/breadcrumb/Breadcrumb.d.ts +37 -20
- package/breadcrumb/Breadcrumb.vue +1 -1
- package/breadcrumb/breadcrumb.cjs.js +2 -1
- package/breadcrumb/breadcrumb.cjs.min.js +1 -1
- package/breadcrumb/breadcrumb.esm.js +2 -1
- package/breadcrumb/breadcrumb.esm.min.js +1 -1
- package/breadcrumb/breadcrumb.js +2 -1
- package/breadcrumb/breadcrumb.min.js +1 -1
- package/button/Button.d.ts +74 -17
- package/button/Button.vue +51 -8
- package/button/button.cjs.js +51 -8
- package/button/button.cjs.min.js +1 -1
- package/button/button.esm.js +51 -8
- package/button/button.esm.min.js +1 -1
- package/button/button.js +51 -8
- package/button/button.min.js +1 -1
- package/calendar/Calendar.d.ts +112 -77
- package/calendar/Calendar.vue +4 -4
- package/calendar/calendar.cjs.js +4 -4
- package/calendar/calendar.cjs.min.js +1 -1
- package/calendar/calendar.esm.js +4 -4
- package/calendar/calendar.esm.min.js +1 -1
- package/calendar/calendar.js +4 -4
- package/calendar/calendar.min.js +1 -1
- package/card/Card.d.ts +35 -15
- package/carousel/Carousel.d.ts +47 -29
- package/cascadeselect/CascadeSelect.d.ts +70 -59
- package/chart/Chart.d.ts +41 -23
- package/checkbox/Checkbox.d.ts +39 -15
- package/checkbox/Checkbox.vue +1 -1
- package/checkbox/checkbox.cjs.js +1 -1
- package/checkbox/checkbox.cjs.min.js +1 -1
- package/checkbox/checkbox.esm.js +1 -1
- package/checkbox/checkbox.esm.min.js +1 -1
- package/checkbox/checkbox.js +1 -1
- package/checkbox/checkbox.min.js +1 -1
- package/chip/Chip.d.ts +35 -14
- package/chips/Chips.d.ts +45 -20
- package/colorpicker/ColorPicker.d.ts +46 -28
- package/column/Column.d.ts +81 -65
- package/columngroup/ColumnGroup.d.ts +29 -13
- package/config/PrimeVue.d.ts +1 -2
- package/config/config.cjs.js +20 -2
- package/config/config.cjs.min.js +1 -1
- package/config/config.esm.js +20 -2
- package/config/config.esm.min.js +1 -1
- package/config/config.js +20 -2
- package/config/config.min.js +1 -1
- package/confirmationoptions/ConfirmationOptions.d.ts +15 -6
- package/confirmationservice/ConfirmationService.d.ts +11 -0
- package/confirmdialog/ConfirmDialog.d.ts +35 -17
- package/confirmpopup/ConfirmPopup.d.ts +32 -17
- package/contextmenu/ContextMenu.d.ts +51 -35
- package/core/core.js +368 -121
- package/core/core.min.js +8 -8
- package/datatable/DataTable.d.ts +248 -205
- package/datatable/DataTable.vue +78 -117
- package/datatable/TableBody.vue +3 -17
- package/datatable/datatable.cjs.js +73 -67
- package/datatable/datatable.cjs.min.js +1 -1
- package/datatable/datatable.esm.js +73 -67
- package/datatable/datatable.esm.min.js +1 -1
- package/datatable/datatable.js +73 -67
- package/datatable/datatable.min.js +1 -1
- package/dataview/DataView.d.ts +65 -47
- package/dataviewlayoutoptions/DataViewLayoutOptions.d.ts +33 -13
- package/deferredcontent/DeferredContent.d.ts +30 -13
- package/dialog/Dialog.d.ts +67 -46
- package/dialog/Dialog.vue +1 -1
- package/dialog/dialog.cjs.js +1 -1
- package/dialog/dialog.cjs.min.js +1 -1
- package/dialog/dialog.esm.js +1 -1
- package/dialog/dialog.esm.min.js +1 -1
- package/dialog/dialog.js +1 -1
- package/dialog/dialog.min.js +1 -1
- package/dialogservice/DialogService.d.ts +13 -2
- package/divider/Divider.d.ts +35 -30
- package/dock/Dock.d.ts +49 -36
- package/dropdown/Dropdown.d.ts +90 -82
- package/dropdown/Dropdown.vue +1 -1
- package/dropdown/dropdown.cjs.js +1 -1
- package/dropdown/dropdown.cjs.min.js +1 -1
- package/dropdown/dropdown.esm.js +1 -1
- package/dropdown/dropdown.esm.min.js +1 -1
- package/dropdown/dropdown.js +1 -1
- package/dropdown/dropdown.min.js +1 -1
- package/dynamicdialog/DynamicDialog.d.ts +30 -10
- package/dynamicdialog/DynamicDialog.vue +2 -2
- package/dynamicdialog/dynamicdialog.cjs.js +3 -3
- package/dynamicdialog/dynamicdialog.cjs.min.js +1 -1
- package/dynamicdialog/dynamicdialog.esm.js +2 -2
- package/dynamicdialog/dynamicdialog.esm.min.js +1 -1
- package/dynamicdialog/dynamicdialog.js +3 -3
- package/dynamicdialog/dynamicdialog.min.js +1 -1
- package/dynamicdialogoptions/DynamicDialogOptions.d.ts +28 -8
- package/editor/Editor.d.ts +48 -17
- package/fieldset/Fieldset.d.ts +43 -16
- package/fileupload/FileUpload.d.ts +101 -47
- package/focustrap/FocusTrap.d.ts +42 -3
- package/fullcalendar/FullCalendar.d.ts +1 -1
- package/galleria/Galleria.d.ts +64 -40
- package/image/Image.d.ts +33 -14
- package/inlinemessage/InlineMessage.d.ts +31 -17
- package/inplace/Inplace.d.ts +41 -18
- package/inputmask/InputMask.d.ts +41 -17
- package/inputnumber/InputNumber.d.ts +60 -41
- package/inputswitch/InputSwitch.d.ts +35 -15
- package/inputswitch/InputSwitch.vue +1 -0
- package/inputswitch/inputswitch.cjs.js +1 -1
- package/inputswitch/inputswitch.cjs.min.js +1 -1
- package/inputswitch/inputswitch.esm.js +1 -1
- package/inputswitch/inputswitch.esm.min.js +1 -1
- package/inputswitch/inputswitch.js +1 -1
- package/inputswitch/inputswitch.min.js +1 -1
- package/inputtext/InputText.d.ts +32 -12
- package/knob/Knob.d.ts +47 -21
- package/listbox/Listbox.d.ts +81 -60
- package/megamenu/MegaMenu.d.ts +42 -27
- package/megamenu/MegaMenu.vue +17 -0
- package/megamenu/megamenu.cjs.js +1 -1
- package/megamenu/megamenu.cjs.min.js +1 -1
- package/megamenu/megamenu.esm.js +1 -1
- package/megamenu/megamenu.esm.min.js +1 -1
- package/megamenu/megamenu.js +1 -1
- package/megamenu/megamenu.min.js +1 -1
- package/menu/Menu.d.ts +57 -28
- package/menu/Menu.vue +6 -0
- package/menu/menu.cjs.js +26 -8
- package/menu/menu.cjs.min.js +1 -1
- package/menu/menu.esm.js +27 -9
- package/menu/menu.esm.min.js +1 -1
- package/menu/menu.js +26 -8
- package/menu/menu.min.js +1 -1
- package/menubar/Menubar.d.ts +36 -19
- package/menuitem/MenuItem.d.ts +22 -10
- package/message/Message.d.ts +40 -21
- package/multiselect/MultiSelect.d.ts +111 -90
- package/orderlist/OrderList.d.ts +51 -23
- package/organizationchart/OrganizationChart.d.ts +43 -26
- package/overlaypanel/OverlayPanel.d.ts +46 -26
- package/package.json +2 -2
- package/paginator/Paginator.d.ts +49 -24
- package/panel/Panel.d.ts +39 -14
- package/panelmenu/PanelMenu.d.ts +49 -21
- package/password/Password.d.ts +47 -28
- package/picklist/PickList.d.ts +74 -33
- package/progressbar/ProgressBar.d.ts +34 -17
- package/progressspinner/ProgressSpinner.d.ts +32 -13
- package/radiobutton/RadioButton.d.ts +32 -14
- package/rating/Rating.d.ts +51 -25
- package/resources/themes/arya-blue/theme.css +34 -11
- package/resources/themes/arya-green/theme.css +34 -11
- package/resources/themes/arya-orange/theme.css +34 -11
- package/resources/themes/arya-purple/theme.css +34 -11
- package/resources/themes/bootstrap4-dark-blue/theme.css +34 -11
- package/resources/themes/bootstrap4-dark-purple/theme.css +34 -11
- package/resources/themes/bootstrap4-light-blue/theme.css +34 -11
- package/resources/themes/bootstrap4-light-purple/theme.css +34 -11
- package/resources/themes/fluent-light/theme.css +34 -11
- package/resources/themes/lara-dark-blue/theme.css +34 -11
- package/resources/themes/lara-dark-indigo/theme.css +34 -11
- package/resources/themes/lara-dark-purple/theme.css +34 -11
- package/resources/themes/lara-dark-teal/theme.css +34 -11
- package/resources/themes/lara-light-blue/theme.css +34 -11
- package/resources/themes/lara-light-indigo/theme.css +34 -11
- package/resources/themes/lara-light-purple/theme.css +34 -11
- package/resources/themes/lara-light-teal/theme.css +34 -11
- package/resources/themes/luna-amber/theme.css +34 -11
- package/resources/themes/luna-blue/theme.css +34 -11
- package/resources/themes/luna-green/theme.css +34 -11
- package/resources/themes/luna-pink/theme.css +34 -11
- package/resources/themes/md-dark-deeppurple/theme.css +34 -11
- package/resources/themes/md-dark-indigo/theme.css +34 -11
- package/resources/themes/md-light-deeppurple/theme.css +34 -11
- package/resources/themes/md-light-indigo/theme.css +34 -11
- package/resources/themes/mdc-dark-deeppurple/theme.css +34 -11
- package/resources/themes/mdc-dark-indigo/theme.css +34 -11
- package/resources/themes/mdc-light-deeppurple/theme.css +34 -11
- package/resources/themes/mdc-light-indigo/theme.css +34 -11
- package/resources/themes/mira/fonts/Inter-Bold.woff +0 -0
- package/resources/themes/mira/fonts/Inter-Bold.woff2 +0 -0
- package/resources/themes/mira/fonts/Inter-Medium.woff +0 -0
- package/resources/themes/mira/fonts/Inter-Medium.woff2 +0 -0
- package/resources/themes/mira/fonts/Inter-Regular.woff +0 -0
- package/resources/themes/mira/fonts/Inter-Regular.woff2 +0 -0
- package/resources/themes/mira/fonts/Inter-SemiBold.woff +0 -0
- package/resources/themes/mira/fonts/Inter-SemiBold.woff2 +0 -0
- package/resources/themes/mira/theme.css +6089 -0
- package/resources/themes/nano/theme.css +5861 -0
- package/resources/themes/nova/theme.css +34 -11
- package/resources/themes/nova-accent/theme.css +34 -11
- package/resources/themes/nova-alt/theme.css +34 -11
- package/resources/themes/nova-vue/theme.css +34 -11
- package/resources/themes/rhea/theme.css +34 -11
- package/resources/themes/saga-blue/theme.css +34 -11
- package/resources/themes/saga-green/theme.css +34 -11
- package/resources/themes/saga-orange/theme.css +34 -11
- package/resources/themes/saga-purple/theme.css +34 -11
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
- package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
- package/resources/themes/soho-dark/theme.css +5854 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
- package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
- package/resources/themes/soho-light/theme.css +5908 -0
- package/resources/themes/tailwind-light/theme.css +34 -11
- package/resources/themes/vela-blue/theme.css +34 -11
- package/resources/themes/vela-green/theme.css +34 -11
- package/resources/themes/vela-orange/theme.css +34 -11
- package/resources/themes/vela-purple/theme.css +34 -11
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
- package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
- package/resources/themes/viva-dark/theme.css +6016 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
- package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
- package/resources/themes/viva-light/theme.css +6016 -0
- package/ripple/Ripple.d.ts +24 -1
- package/row/Row.d.ts +28 -10
- package/scrollpanel/ScrollPanel.d.ts +29 -11
- package/scrolltop/ScrollTop.d.ts +35 -18
- package/selectbutton/SelectButton.d.ts +47 -27
- package/sidebar/Sidebar.d.ts +46 -27
- package/skeleton/Skeleton.d.ts +36 -22
- package/slider/Slider.d.ts +46 -23
- package/speeddial/SpeedDial.d.ts +64 -51
- package/splitbutton/SplitButton.d.ts +73 -24
- package/splitbutton/SplitButton.vue +41 -1
- package/splitbutton/splitbutton.cjs.js +43 -3
- package/splitbutton/splitbutton.cjs.min.js +1 -1
- package/splitbutton/splitbutton.esm.js +43 -3
- package/splitbutton/splitbutton.esm.min.js +1 -1
- package/splitbutton/splitbutton.js +43 -3
- package/splitbutton/splitbutton.min.js +1 -1
- package/splitter/Splitter.d.ts +49 -30
- package/splitterpanel/SplitterPanel.d.ts +28 -10
- package/steps/Steps.d.ts +36 -15
- package/styleclass/StyleClass.d.ts +72 -1
- package/tabmenu/TabMenu.d.ts +41 -16
- package/tabmenu/TabMenu.vue +1 -1
- package/tabmenu/tabmenu.cjs.js +1 -0
- package/tabmenu/tabmenu.cjs.min.js +1 -1
- package/tabmenu/tabmenu.esm.js +1 -0
- package/tabmenu/tabmenu.esm.min.js +1 -1
- package/tabmenu/tabmenu.js +1 -0
- package/tabmenu/tabmenu.min.js +1 -1
- package/tabpanel/TabPanel.d.ts +29 -11
- package/tabview/TabView.d.ts +47 -19
- package/tag/Tag.d.ts +33 -15
- package/tag/Tag.vue +1 -1
- package/tag/tag.cjs.js +4 -2
- package/tag/tag.cjs.min.js +1 -1
- package/tag/tag.esm.js +5 -3
- package/tag/tag.esm.min.js +1 -1
- package/tag/tag.js +4 -2
- package/tag/tag.min.js +1 -1
- package/terminal/Terminal.d.ts +30 -14
- package/terminalservice/TerminalService.d.ts +24 -5
- package/textarea/Textarea.d.ts +33 -11
- package/tieredmenu/TieredMenu.d.ts +45 -31
- package/timeline/Timeline.d.ts +41 -32
- package/toast/Toast.d.ts +63 -35
- package/toast/Toast.vue +4 -2
- package/toast/ToastMessage.vue +4 -4
- package/toast/toast.cjs.js +8 -6
- package/toast/toast.cjs.min.js +1 -1
- package/toast/toast.esm.js +8 -6
- package/toast/toast.esm.min.js +1 -1
- package/toast/toast.js +8 -6
- package/toast/toast.min.js +1 -1
- package/toastservice/ToastService.d.ts +16 -3
- package/togglebutton/ToggleButton.d.ts +42 -22
- package/toolbar/Toolbar.d.ts +34 -14
- package/tooltip/Tooltip.d.ts +99 -1
- package/tree/Tree.d.ts +55 -36
- package/treeselect/TreeSelect.d.ts +63 -55
- package/treetable/TreeTable.d.ts +121 -107
- package/tristatecheckbox/TriStateCheckbox.d.ts +35 -12
- package/ts-helpers.d.ts +2 -2
- package/utils/utils.cjs.js +20 -22
- package/utils/utils.cjs.min.js +1 -1
- package/utils/utils.esm.js +20 -22
- package/utils/utils.esm.min.js +1 -1
- package/utils/utils.js +20 -22
- package/utils/utils.min.js +1 -1
- package/vetur-attributes.json +62 -2
- package/vetur-tags.json +17 -2
- package/virtualscroller/VirtualScroller.d.ts +99 -43
- package/virtualscroller/VirtualScroller.vue +248 -72
- package/virtualscroller/virtualscroller.cjs.js +234 -72
- package/virtualscroller/virtualscroller.cjs.min.js +1 -1
- package/virtualscroller/virtualscroller.esm.js +234 -72
- package/virtualscroller/virtualscroller.esm.min.js +1 -1
- package/virtualscroller/virtualscroller.js +235 -74
- package/virtualscroller/virtualscroller.min.js +1 -1
- package/web-types.json +1930 -1742
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
this.primevue = this.primevue || {};
|
|
2
|
-
this.primevue.virtualscroller = (function (vue) {
|
|
2
|
+
this.primevue.virtualscroller = (function (utils, vue) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
5
|
var script = {
|
|
@@ -34,6 +34,10 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
34
34
|
type: Number,
|
|
35
35
|
default: 0
|
|
36
36
|
},
|
|
37
|
+
resizeDelay: {
|
|
38
|
+
type: Number,
|
|
39
|
+
default: 10
|
|
40
|
+
},
|
|
37
41
|
lazy: {
|
|
38
42
|
type: Boolean,
|
|
39
43
|
default: false
|
|
@@ -65,12 +69,29 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
65
69
|
tabindex: {
|
|
66
70
|
type: Number,
|
|
67
71
|
default: 0
|
|
72
|
+
},
|
|
73
|
+
inline: {
|
|
74
|
+
type: Boolean,
|
|
75
|
+
default: false
|
|
76
|
+
},
|
|
77
|
+
step: {
|
|
78
|
+
type: Number,
|
|
79
|
+
default: 0
|
|
80
|
+
},
|
|
81
|
+
appendOnly: {
|
|
82
|
+
type: Boolean,
|
|
83
|
+
default: false
|
|
84
|
+
},
|
|
85
|
+
autoSize: {
|
|
86
|
+
type: Boolean,
|
|
87
|
+
default: false
|
|
68
88
|
}
|
|
69
89
|
},
|
|
70
90
|
data() {
|
|
71
91
|
return {
|
|
72
92
|
first: this.isBoth() ? { rows: 0, cols: 0 } : 0,
|
|
73
93
|
last: this.isBoth() ? { rows: 0, cols: 0 } : 0,
|
|
94
|
+
page: this.isBoth() ? { rows: 0, cols: 0 } : 0,
|
|
74
95
|
numItemsInViewport: this.isBoth() ? { rows: 0, cols: 0 } : 0,
|
|
75
96
|
lastScrollPos: this.isBoth() ? { top: 0, left: 0 } : 0,
|
|
76
97
|
d_numToleratedItems: this.numToleratedItems,
|
|
@@ -84,6 +105,15 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
84
105
|
content: null,
|
|
85
106
|
lastScrollPos: null,
|
|
86
107
|
scrollTimeout: null,
|
|
108
|
+
resizeTimeout: null,
|
|
109
|
+
defaultWidth: 0,
|
|
110
|
+
defaultHeight: 0,
|
|
111
|
+
defaultContentWidth: 0,
|
|
112
|
+
defaultContentHeight: 0,
|
|
113
|
+
isRangeChanged: false,
|
|
114
|
+
lazyLoadState: {},
|
|
115
|
+
resizeListener: null,
|
|
116
|
+
initialized: false,
|
|
87
117
|
watch: {
|
|
88
118
|
numToleratedItems(newValue) {
|
|
89
119
|
this.d_numToleratedItems = newValue;
|
|
@@ -94,22 +124,59 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
94
124
|
items(newValue, oldValue) {
|
|
95
125
|
if (!oldValue || oldValue.length !== (newValue || []).length) {
|
|
96
126
|
this.init();
|
|
127
|
+
this.calculateAutoSize();
|
|
97
128
|
}
|
|
98
129
|
},
|
|
130
|
+
itemSize() {
|
|
131
|
+
this.init();
|
|
132
|
+
this.calculateAutoSize();
|
|
133
|
+
},
|
|
99
134
|
orientation() {
|
|
100
135
|
this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;
|
|
136
|
+
},
|
|
137
|
+
scrollHeight() {
|
|
138
|
+
this.init();
|
|
139
|
+
this.calculateAutoSize();
|
|
140
|
+
},
|
|
141
|
+
scrollWidth() {
|
|
142
|
+
this.init();
|
|
143
|
+
this.calculateAutoSize();
|
|
101
144
|
}
|
|
102
145
|
},
|
|
103
146
|
mounted() {
|
|
104
|
-
this.
|
|
147
|
+
this.viewInit();
|
|
105
148
|
|
|
106
149
|
this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;
|
|
150
|
+
this.lazyLoadState = this.lazyLoadState || {};
|
|
151
|
+
},
|
|
152
|
+
updated() {
|
|
153
|
+
!this.initialized && this.viewInit();
|
|
154
|
+
},
|
|
155
|
+
unmounted() {
|
|
156
|
+
this.unbindResizeListener();
|
|
157
|
+
|
|
158
|
+
this.initialized = false;
|
|
107
159
|
},
|
|
108
160
|
methods: {
|
|
161
|
+
viewInit() {
|
|
162
|
+
if (utils.DomHandler.isVisible(this.element)) {
|
|
163
|
+
this.setContentEl(this.content);
|
|
164
|
+
this.init();
|
|
165
|
+
this.bindResizeListener();
|
|
166
|
+
|
|
167
|
+
this.defaultWidth = utils.DomHandler.getWidth(this.element);
|
|
168
|
+
this.defaultHeight = utils.DomHandler.getHeight(this.element);
|
|
169
|
+
this.defaultContentWidth = utils.DomHandler.getWidth(this.content);
|
|
170
|
+
this.defaultContentHeight = utils.DomHandler.getHeight(this.content);
|
|
171
|
+
this.initialized = true;
|
|
172
|
+
}
|
|
173
|
+
},
|
|
109
174
|
init() {
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
175
|
+
if (!this.disabled) {
|
|
176
|
+
this.setSize();
|
|
177
|
+
this.calculateOptions();
|
|
178
|
+
this.setSpacerSize();
|
|
179
|
+
}
|
|
113
180
|
},
|
|
114
181
|
isVertical() {
|
|
115
182
|
return this.orientation === 'vertical';
|
|
@@ -121,31 +188,34 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
121
188
|
return this.orientation === 'both';
|
|
122
189
|
},
|
|
123
190
|
scrollTo(options) {
|
|
124
|
-
this.
|
|
191
|
+
this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;
|
|
192
|
+
this.element?.scrollTo(options);
|
|
125
193
|
},
|
|
126
194
|
scrollToIndex(index, behavior = 'auto') {
|
|
127
195
|
const both = this.isBoth();
|
|
128
196
|
const horizontal = this.isHorizontal();
|
|
129
197
|
const first = this.first;
|
|
130
198
|
const { numToleratedItems } = this.calculateNumItems();
|
|
199
|
+
const contentPos = this.getContentPosition();
|
|
131
200
|
const itemSize = this.itemSize;
|
|
132
201
|
const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);
|
|
133
|
-
const calculateCoord = (_first, _size) => _first * _size;
|
|
202
|
+
const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;
|
|
134
203
|
const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
|
|
204
|
+
let newFirst = both ? { rows: 0, cols: 0 } : 0;
|
|
205
|
+
let isRangeChanged = false;
|
|
135
206
|
|
|
136
207
|
if (both) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
scrollTo(calculateCoord(newFirst.cols, itemSize[1]), calculateCoord(newFirst.rows, itemSize[0]));
|
|
141
|
-
}
|
|
208
|
+
newFirst = { rows: calculateFirst(index[0], numToleratedItems[0]), cols: calculateFirst(index[1], numToleratedItems[1]) };
|
|
209
|
+
scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPos.left), calculateCoord(newFirst.rows, itemSize[0], contentPos.top));
|
|
210
|
+
isRangeChanged = newFirst.rows !== first.rows || newFirst.cols !== first.cols;
|
|
142
211
|
} else {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
horizontal ? scrollTo(calculateCoord(newFirst, itemSize), 0) : scrollTo(0, calculateCoord(newFirst, itemSize));
|
|
147
|
-
}
|
|
212
|
+
newFirst = calculateFirst(index, numToleratedItems);
|
|
213
|
+
horizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPos.left), 0) : scrollTo(0, calculateCoord(newFirst, itemSize, contentPos.top));
|
|
214
|
+
isRangeChanged = newFirst !== first;
|
|
148
215
|
}
|
|
216
|
+
|
|
217
|
+
this.isRangeChanged = isRangeChanged;
|
|
218
|
+
this.first = newFirst;
|
|
149
219
|
},
|
|
150
220
|
scrollInView(index, to, behavior = 'auto') {
|
|
151
221
|
if (to) {
|
|
@@ -198,8 +268,7 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
198
268
|
if (this.element) {
|
|
199
269
|
const both = this.isBoth();
|
|
200
270
|
const horizontal = this.isHorizontal();
|
|
201
|
-
const scrollTop = this.element.scrollTop;
|
|
202
|
-
const scrollLeft = this.element.scrollLeft;
|
|
271
|
+
const { scrollTop, scrollLeft } = this.element.scrollTop;
|
|
203
272
|
|
|
204
273
|
if (both) {
|
|
205
274
|
firstInViewport = { rows: calculateFirstInViewport(scrollTop, this.itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this.itemSize[1]) };
|
|
@@ -242,7 +311,7 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
242
311
|
const both = this.isBoth();
|
|
243
312
|
const first = this.first;
|
|
244
313
|
const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();
|
|
245
|
-
const calculateLast = (_first, _num, _numT, _isCols) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);
|
|
314
|
+
const calculateLast = (_first, _num, _numT, _isCols = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);
|
|
246
315
|
const last = both
|
|
247
316
|
? { rows: calculateLast(first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(first.cols, numItemsInViewport.cols, numToleratedItems[1], true) }
|
|
248
317
|
: calculateLast(first, numItemsInViewport, numToleratedItems);
|
|
@@ -257,23 +326,55 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
257
326
|
}
|
|
258
327
|
|
|
259
328
|
if (this.lazy) {
|
|
260
|
-
|
|
329
|
+
Promise.resolve().then(() => {
|
|
330
|
+
this.lazyLoadState = {
|
|
331
|
+
first: this.step ? (both ? { rows: 0, cols: first.cols } : 0) : first,
|
|
332
|
+
last: Math.min(this.step ? this.step : last, this.items.length)
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
this.$emit('lazy-load', this.lazyLoadState);
|
|
336
|
+
});
|
|
261
337
|
}
|
|
262
338
|
},
|
|
263
|
-
|
|
264
|
-
if (this.
|
|
265
|
-
|
|
266
|
-
|
|
339
|
+
calculateAutoSize() {
|
|
340
|
+
if (this.autoSize && !this.d_loading) {
|
|
341
|
+
Promise.resolve().then(() => {
|
|
342
|
+
if (this.content) {
|
|
343
|
+
const both = this.isBoth();
|
|
344
|
+
const horizontal = this.isHorizontal();
|
|
345
|
+
const vertical = this.isVertical();
|
|
346
|
+
|
|
347
|
+
this.content.style.minHeight = this.content.style.minWidth = 'auto';
|
|
348
|
+
this.content.style.position = 'relative';
|
|
349
|
+
this.element.style.contain = 'none';
|
|
350
|
+
|
|
351
|
+
const [contentWidth, contentHeight] = [utils.DomHandler.getWidth(this.content), utils.DomHandler.getHeight(this.content)];
|
|
352
|
+
|
|
353
|
+
contentWidth !== this.defaultContentWidth && (this.element.style.width = '');
|
|
354
|
+
contentHeight !== this.defaultContentHeight && (this.element.style.height = '');
|
|
267
355
|
|
|
268
|
-
|
|
356
|
+
const [width, height] = [utils.DomHandler.getWidth(this.element), utils.DomHandler.getHeight(this.element)];
|
|
357
|
+
|
|
358
|
+
(both || horizontal) && (this.element.style.width = width < this.defaultWidth ? width + 'px' : this.scrollWidth || this.defaultWidth + 'px');
|
|
359
|
+
(both || vertical) && (this.element.style.height = height < this.defaultHeight ? height + 'px' : this.scrollHeight || this.defaultHeight + 'px');
|
|
360
|
+
|
|
361
|
+
this.content.style.minHeight = this.content.style.minWidth = '';
|
|
362
|
+
this.content.style.position = '';
|
|
363
|
+
this.element.style.contain = '';
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
getLast(last = 0, isCols) {
|
|
369
|
+
return this.items ? Math.min(isCols ? (this.columns || this.items[0]).length : this.items.length, last) : 0;
|
|
269
370
|
},
|
|
270
371
|
getContentPosition() {
|
|
271
372
|
if (this.content) {
|
|
272
373
|
const style = getComputedStyle(this.content);
|
|
273
|
-
const left =
|
|
274
|
-
const right =
|
|
275
|
-
const top =
|
|
276
|
-
const bottom =
|
|
374
|
+
const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);
|
|
375
|
+
const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);
|
|
376
|
+
const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);
|
|
377
|
+
const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);
|
|
277
378
|
|
|
278
379
|
return { left, right, top, bottom, x: left + right, y: top + bottom };
|
|
279
380
|
}
|
|
@@ -315,15 +416,12 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
315
416
|
}
|
|
316
417
|
},
|
|
317
418
|
setContentPosition(pos) {
|
|
318
|
-
if (this.content) {
|
|
419
|
+
if (this.content && !this.appendOnly) {
|
|
319
420
|
const both = this.isBoth();
|
|
320
421
|
const horizontal = this.isHorizontal();
|
|
321
422
|
const first = pos ? pos.first : this.first;
|
|
322
423
|
const calculateTranslateVal = (_first, _size) => _first * _size;
|
|
323
|
-
|
|
324
|
-
const setTransform = (_x = 0, _y = 0) => {
|
|
325
|
-
this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } };
|
|
326
|
-
};
|
|
424
|
+
const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });
|
|
327
425
|
|
|
328
426
|
if (both) {
|
|
329
427
|
setTransform(calculateTranslateVal(first.cols, this.itemSize[1]), calculateTranslateVal(first.rows, this.itemSize[0]));
|
|
@@ -372,33 +470,39 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
372
470
|
if (both) {
|
|
373
471
|
const isScrollDown = this.lastScrollPos.top <= scrollTop;
|
|
374
472
|
const isScrollRight = this.lastScrollPos.left <= scrollLeft;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
rows:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
473
|
+
|
|
474
|
+
if (!this.appendOnly || (this.appendOnly && (isScrollDown || isScrollRight))) {
|
|
475
|
+
const currentIndex = { rows: calculateCurrentIndex(scrollTop, this.itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this.itemSize[1]) };
|
|
476
|
+
const triggerIndex = {
|
|
477
|
+
rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
|
|
478
|
+
cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
|
|
479
|
+
};
|
|
480
|
+
|
|
481
|
+
newFirst = {
|
|
482
|
+
rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
|
|
483
|
+
cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
|
|
484
|
+
};
|
|
485
|
+
newLast = {
|
|
486
|
+
rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),
|
|
487
|
+
cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;
|
|
491
|
+
newScrollPos = { top: scrollTop, left: scrollLeft };
|
|
492
|
+
}
|
|
392
493
|
} else {
|
|
393
494
|
const scrollPos = horizontal ? scrollLeft : scrollTop;
|
|
394
495
|
const isScrollDownOrRight = this.lastScrollPos <= scrollPos;
|
|
395
|
-
const currentIndex = calculateCurrentIndex(scrollPos, this.itemSize);
|
|
396
|
-
const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
|
|
397
496
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
497
|
+
if (!this.appendOnly || (this.appendOnly && isScrollDownOrRight)) {
|
|
498
|
+
const currentIndex = calculateCurrentIndex(scrollPos, this.itemSize);
|
|
499
|
+
const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
|
|
500
|
+
|
|
501
|
+
newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
|
|
502
|
+
newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);
|
|
503
|
+
isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;
|
|
504
|
+
newScrollPos = scrollPos;
|
|
505
|
+
}
|
|
402
506
|
}
|
|
403
507
|
|
|
404
508
|
return {
|
|
@@ -422,21 +526,29 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
422
526
|
|
|
423
527
|
this.$emit('scroll-index-change', newState);
|
|
424
528
|
|
|
425
|
-
if (this.lazy) {
|
|
426
|
-
|
|
529
|
+
if (this.lazy && this.isPageChanged(first)) {
|
|
530
|
+
const lazyLoadState = {
|
|
531
|
+
first: this.step ? Math.min(this.getPageByFirst(first) * this.step, this.items.length - this.step) : first,
|
|
532
|
+
last: Math.min(this.step ? (this.getPageByFirst(first) + 1) * this.step : last, this.items.length)
|
|
533
|
+
};
|
|
534
|
+
const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;
|
|
535
|
+
|
|
536
|
+
isLazyStateChanged && this.$emit('lazy-load', lazyLoadState);
|
|
537
|
+
this.lazyLoadState = lazyLoadState;
|
|
427
538
|
}
|
|
428
539
|
}
|
|
429
540
|
},
|
|
430
541
|
onScroll(event) {
|
|
431
542
|
this.$emit('scroll', event);
|
|
432
543
|
|
|
433
|
-
if (this.delay) {
|
|
544
|
+
if (this.delay && this.isPageChanged()) {
|
|
434
545
|
if (this.scrollTimeout) {
|
|
435
546
|
clearTimeout(this.scrollTimeout);
|
|
436
547
|
}
|
|
437
548
|
|
|
438
549
|
if (!this.d_loading && this.showLoader) {
|
|
439
|
-
const { isRangeChanged
|
|
550
|
+
const { isRangeChanged } = this.onScrollPositionChange(event);
|
|
551
|
+
const changed = isRangeChanged || (this.step ? this.isPageChanged() : false);
|
|
440
552
|
|
|
441
553
|
changed && (this.d_loading = true);
|
|
442
554
|
}
|
|
@@ -444,14 +556,56 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
444
556
|
this.scrollTimeout = setTimeout(() => {
|
|
445
557
|
this.onScrollChange(event);
|
|
446
558
|
|
|
447
|
-
if (this.d_loading && this.showLoader && !this.lazy) {
|
|
559
|
+
if (this.d_loading && this.showLoader && (!this.lazy || this.loading === undefined)) {
|
|
448
560
|
this.d_loading = false;
|
|
561
|
+
this.page = this.getPageByFirst();
|
|
449
562
|
}
|
|
450
563
|
}, this.delay);
|
|
451
564
|
} else {
|
|
452
565
|
this.onScrollChange(event);
|
|
453
566
|
}
|
|
454
567
|
},
|
|
568
|
+
onResize() {
|
|
569
|
+
if (this.resizeTimeout) {
|
|
570
|
+
clearTimeout(this.resizeTimeout);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
this.resizeTimeout = setTimeout(() => {
|
|
574
|
+
if (utils.DomHandler.isVisible(this.element)) {
|
|
575
|
+
const both = this.isBoth();
|
|
576
|
+
const vertical = this.isVertical();
|
|
577
|
+
const horizontal = this.isHorizontal();
|
|
578
|
+
const [width, height] = [utils.DomHandler.getWidth(this.element), utils.DomHandler.getHeight(this.element)];
|
|
579
|
+
const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];
|
|
580
|
+
const reinit = both ? isDiffWidth || isDiffHeight : horizontal ? isDiffWidth : vertical ? isDiffHeight : false;
|
|
581
|
+
|
|
582
|
+
if (reinit) {
|
|
583
|
+
this.d_numToleratedItems = this.numToleratedItems;
|
|
584
|
+
this.defaultWidth = width;
|
|
585
|
+
this.defaultHeight = height;
|
|
586
|
+
this.defaultContentWidth = utils.DomHandler.getWidth(this.content);
|
|
587
|
+
this.defaultContentHeight = utils.DomHandler.getHeight(this.content);
|
|
588
|
+
|
|
589
|
+
this.init();
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}, this.resizeDelay);
|
|
593
|
+
},
|
|
594
|
+
bindResizeListener() {
|
|
595
|
+
if (!this.resizeListener) {
|
|
596
|
+
this.resizeListener = this.onResize.bind(this);
|
|
597
|
+
|
|
598
|
+
window.addEventListener('resize', this.resizeListener);
|
|
599
|
+
window.addEventListener('orientationchange', this.resizeListener);
|
|
600
|
+
}
|
|
601
|
+
},
|
|
602
|
+
unbindResizeListener() {
|
|
603
|
+
if (this.resizeListener) {
|
|
604
|
+
window.removeEventListener('resize', this.resizeListener);
|
|
605
|
+
window.removeEventListener('orientationchange', this.resizeListener);
|
|
606
|
+
this.resizeListener = null;
|
|
607
|
+
}
|
|
608
|
+
},
|
|
455
609
|
getOptions(renderedIndex) {
|
|
456
610
|
const count = (this.items || []).length;
|
|
457
611
|
const index = this.isBoth() ? this.first.rows + renderedIndex : this.first + renderedIndex;
|
|
@@ -478,6 +632,15 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
478
632
|
...extOptions
|
|
479
633
|
};
|
|
480
634
|
},
|
|
635
|
+
getPageByFirst(first) {
|
|
636
|
+
return Math.floor(((first ?? this.first) + this.d_numToleratedItems * 4) / (this.step || 1));
|
|
637
|
+
},
|
|
638
|
+
isPageChanged(first) {
|
|
639
|
+
return this.step ? this.page !== this.getPageByFirst(first ?? this.first) : true;
|
|
640
|
+
},
|
|
641
|
+
setContentEl(el) {
|
|
642
|
+
this.content = el || this.content || utils.DomHandler.findSingle(this.element, '.p-virtualscroller-content');
|
|
643
|
+
},
|
|
481
644
|
elementRef(el) {
|
|
482
645
|
this.element = el;
|
|
483
646
|
},
|
|
@@ -490,8 +653,9 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
490
653
|
return [
|
|
491
654
|
'p-virtualscroller',
|
|
492
655
|
{
|
|
493
|
-
'p-
|
|
494
|
-
'p-
|
|
656
|
+
'p-virtualscroller-inline': this.inline,
|
|
657
|
+
'p-virtualscroller-both p-both-scroll': this.isBoth(),
|
|
658
|
+
'p-virtualscroller-horizontal p-horizontal-scroll': this.isHorizontal()
|
|
495
659
|
},
|
|
496
660
|
this.class
|
|
497
661
|
];
|
|
@@ -513,13 +677,10 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
513
677
|
];
|
|
514
678
|
},
|
|
515
679
|
loadedItems() {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
return items.slice(this.first.rows, this.last.rows).map((item) => (this.columns ? item : item.slice(this.first.cols, this.last.cols)));
|
|
521
|
-
} else if (this.isHorizontal() && this.columns) return items;
|
|
522
|
-
else return items.slice(this.first, this.last);
|
|
680
|
+
if (this.items && !this.d_loading) {
|
|
681
|
+
if (this.isBoth()) return this.items.slice(this.appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this.columns ? item : item.slice(this.appendOnly ? 0 : this.first.cols, this.last.cols)));
|
|
682
|
+
else if (this.isHorizontal() && this.columns) return this.items;
|
|
683
|
+
else return this.items.slice(this.appendOnly ? 0 : this.first, this.last);
|
|
523
684
|
}
|
|
524
685
|
|
|
525
686
|
return [];
|
|
@@ -648,11 +809,11 @@ this.primevue.virtualscroller = (function (vue) {
|
|
|
648
809
|
}
|
|
649
810
|
}
|
|
650
811
|
|
|
651
|
-
var css_248z = "\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\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
|
|
812
|
+
var css_248z = "\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\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 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: flex;\n align-items: center;\n justify-content: center;\n}\n.p-virtualscroller-loading-icon {\n font-size: 2rem;\n}\n.p-virtualscroller-horizontal > .p-virtualscroller-content {\n display: flex;\n}\n\n/* Inline */\n.p-virtualscroller-inline .p-virtualscroller-content {\n position: static;\n}\n";
|
|
652
813
|
styleInject(css_248z);
|
|
653
814
|
|
|
654
815
|
script.render = render;
|
|
655
816
|
|
|
656
817
|
return script;
|
|
657
818
|
|
|
658
|
-
})(Vue);
|
|
819
|
+
})(primevue.utils, Vue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
this.primevue=this.primevue||{},this.primevue.virtualscroller=function(t){"use strict";var s={name:"VirtualScroller",emits:["update:numToleratedItems","scroll","scroll-index-change","lazy-load"],props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:"vertical"},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0}},data(){return{first:this.isBoth()?{rows:0,cols:0}:0,last:this.isBoth()?{rows:0,cols:0}:0,numItemsInViewport:this.isBoth()?{rows:0,cols:0}:0,lastScrollPos:this.isBoth()?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{}}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,watch:{numToleratedItems(t){this.d_numToleratedItems=t},loading(t){this.d_loading=t},items(t,s){s&&s.length===(t||[]).length||this.init()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0}},mounted(){this.init(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},methods:{init(){this.setSize(),this.calculateOptions(),this.setSpacerSize()},isVertical(){return"vertical"===this.orientation},isHorizontal(){return"horizontal"===this.orientation},isBoth(){return"both"===this.orientation},scrollTo(t){this.element&&this.element.scrollTo(t)},scrollToIndex(t,s="auto"){const e=this.isBoth(),i=this.isHorizontal(),o=this.first,{numToleratedItems:l}=this.calculateNumItems(),n=this.itemSize,r=(t=0,s)=>t<=s?0:t,a=(t,s)=>t*s,h=(t=0,e=0)=>this.scrollTo({left:t,top:e,behavior:s});if(e){const s={rows:r(t[0],l[0]),cols:r(t[1],l[1])};s.rows===o.rows&&s.cols===o.cols||h(a(s.cols,n[1]),a(s.rows,n[0]))}else{const s=r(t,l);s!==o&&(i?h(a(s,n),0):h(0,a(s,n)))}},scrollInView(t,s,e="auto"){if(s){const i=this.isBoth(),o=this.isHorizontal(),{first:l,viewport:n}=this.getRenderedRange(),r=(t=0,s=0)=>this.scrollTo({left:t,top:s,behavior:e}),a="to-end"===s;if("to-start"===s){if(i)n.first.rows-l.rows>t[0]?r(n.first.cols*this.itemSize[1],(n.first.rows-1)*this.itemSize[0]):n.first.cols-l.cols>t[1]&&r((n.first.cols-1)*this.itemSize[1],n.first.rows*this.itemSize[0]);else if(n.first-l>t){const t=(n.first-1)*this.itemSize;o?r(t,0):r(0,t)}}else if(a)if(i)n.last.rows-l.rows<=t[0]+1?r(n.first.cols*this.itemSize[1],(n.first.rows+1)*this.itemSize[0]):n.last.cols-l.cols<=t[1]+1&&r((n.first.cols+1)*this.itemSize[1],n.first.rows*this.itemSize[0]);else if(n.last-l<=t+1){const t=(n.first+1)*this.itemSize;o?r(t,0):r(0,t)}}else this.scrollToIndex(t,e)},getRenderedRange(){const t=(t,s)=>Math.floor(t/(s||t));let s=this.first,e=0;if(this.element){const i=this.isBoth(),o=this.isHorizontal(),l=this.element.scrollTop,n=this.element.scrollLeft;if(i)s={rows:t(l,this.itemSize[0]),cols:t(n,this.itemSize[1])},e={rows:s.rows+this.numItemsInViewport.rows,cols:s.cols+this.numItemsInViewport.cols};else{s=t(o?n:l,this.itemSize),e=s+this.numItemsInViewport}}return{first:this.first,last:this.last,viewport:{first:s,last:e}}},calculateNumItems(){const t=this.isBoth(),s=this.isHorizontal(),e=this.itemSize,i=this.getContentPosition(),o=this.element?this.element.offsetWidth-i.left:0,l=this.element?this.element.offsetHeight-i.top:0,n=(t,s)=>Math.ceil(t/(s||t)),r=t=>Math.ceil(t/2),a=t?{rows:n(l,e[0]),cols:n(o,e[1])}:n(s?o:l,e);return{numItemsInViewport:a,numToleratedItems:this.d_numToleratedItems||(t?[r(a.rows),r(a.cols)]:r(a))}},calculateOptions(){const t=this.isBoth(),s=this.first,{numItemsInViewport:e,numToleratedItems:i}=this.calculateNumItems(),o=(t,s,e,i)=>this.getLast(t+s+(t<e?2:3)*e,i),l=t?{rows:o(s.rows,e.rows,i[0]),cols:o(s.cols,e.cols,i[1],!0)}:o(s,e,i);this.last=l,this.numItemsInViewport=e,this.d_numToleratedItems=i,this.$emit("update:numToleratedItems",this.d_numToleratedItems),this.showLoader&&(this.loaderArr=t?Array.from({length:e.rows}).map((()=>Array.from({length:e.cols}))):Array.from({length:e})),this.lazy&&this.$emit("lazy-load",{first:s,last:l})},getLast(t=0,s){return this.items?Math.min(s?(this.columns||this.items[0]).length:this.items.length,t):0},getContentPosition(){if(this.content){const t=getComputedStyle(this.content),s=parseInt(t.paddingLeft,10)+Math.max(parseInt(t.left,10),0),e=parseInt(t.paddingRight,10)+Math.max(parseInt(t.right,10),0),i=parseInt(t.paddingTop,10)+Math.max(parseInt(t.top,10),0),o=parseInt(t.paddingBottom,10)+Math.max(parseInt(t.bottom,10),0);return{left:s,right:e,top:i,bottom:o,x:s+e,y:i+o}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){const t=this.isBoth(),s=this.isHorizontal(),e=this.element.parentElement,i=this.scrollWidth||`${this.element.offsetWidth||e.offsetWidth}px`,o=this.scrollHeight||`${this.element.offsetHeight||e.offsetHeight}px`,l=(t,s)=>this.element.style[t]=s;t||s?(l("height",o),l("width",i)):l("height",o)}},setSpacerSize(){const t=this.items;if(t){const s=this.isBoth(),e=this.isHorizontal(),i=this.getContentPosition(),o=(t,s,e,i=0)=>this.spacerStyle={...this.spacerStyle,[`${t}`]:(s||[]).length*e+i+"px"};s?(o("height",t,this.itemSize[0],i.y),o("width",this.columns||t[1],this.itemSize[1],i.x)):e?o("width",this.columns||t,this.itemSize,i.x):o("height",t,this.itemSize,i.y)}},setContentPosition(t){if(this.content){const s=this.isBoth(),e=this.isHorizontal(),i=t?t.first:this.first,o=(t,s)=>t*s,l=(t=0,s=0)=>{this.contentStyle={...this.contentStyle,transform:`translate3d(${t}px, ${s}px, 0)`}};if(s)l(o(i.cols,this.itemSize[1]),o(i.rows,this.itemSize[0]));else{const t=o(i,this.itemSize);e?l(t,0):l(0,t)}}},onScrollPositionChange(t){const s=t.target,e=this.isBoth(),i=this.isHorizontal(),o=this.getContentPosition(),l=(t,s)=>t?t>s?t-s:t:0,n=(t,s)=>Math.floor(t/(s||t)),r=(t,s,e,i,o,l)=>t<=o?o:l?e-i-o:s+o-1,a=(t,s,e,i,o,l,n)=>t<=l?0:Math.max(0,n?t<s?e:t-l:t>s?e:t-2*l),h=(t,s,e,i,o,l)=>{let n=s+i+2*o;return t>=o&&(n+=o+1),this.getLast(n,l)},c=l(s.scrollTop,o.top),m=l(s.scrollLeft,o.left);let d=e?{rows:0,cols:0}:0,u=this.last,p=!1,f=this.lastScrollPos;if(e){const t=this.lastScrollPos.top<=c,s=this.lastScrollPos.left<=m,e={rows:n(c,this.itemSize[0]),cols:n(m,this.itemSize[1])},i={rows:r(e.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],t),cols:r(e.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],s)};d={rows:a(e.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],t),cols:a(e.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],s)},u={rows:h(e.rows,d.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:h(e.cols,d.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},p=d.rows!==this.first.rows||u.rows!==this.last.rows||d.cols!==this.first.cols||u.cols!==this.last.cols,f={top:c,left:m}}else{const t=i?m:c,s=this.lastScrollPos<=t,e=n(t,this.itemSize);d=a(e,r(e,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,s),this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,s),u=h(e,d,this.last,this.numItemsInViewport,this.d_numToleratedItems),p=d!==this.first||u!==this.last,f=t}return{first:d,last:u,isRangeChanged:p,scrollPos:f}},onScrollChange(t){const{first:s,last:e,isRangeChanged:i,scrollPos:o}=this.onScrollPositionChange(t);if(i){const t={first:s,last:e};this.setContentPosition(t),this.first=s,this.last=e,this.lastScrollPos=o,this.$emit("scroll-index-change",t),this.lazy&&this.$emit("lazy-load",t)}},onScroll(t){if(this.$emit("scroll",t),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),!this.d_loading&&this.showLoader){const{isRangeChanged:s}=this.onScrollPositionChange(t);s&&(this.d_loading=!0)}this.scrollTimeout=setTimeout((()=>{this.onScrollChange(t),this.d_loading&&this.showLoader&&!this.lazy&&(this.d_loading=!1)}),this.delay)}else this.onScrollChange(t)},getOptions(t){const s=(this.items||[]).length,e=this.isBoth()?this.first.rows+t:this.first+t;return{index:e,count:s,first:0===e,last:e===s-1,even:e%2==0,odd:e%2!=0}},getLoaderOptions(t,s){let e=this.loaderArr.length;return{index:t,count:e,first:0===t,last:t===e-1,even:t%2==0,odd:t%2!=0,...s}},elementRef(t){this.element=t},contentRef(t){this.content=t}},computed:{containerClass(){return["p-virtualscroller",{"p-both-scroll":this.isBoth(),"p-horizontal-scroll":this.isHorizontal()},this.class]},contentClass(){return["p-virtualscroller-content",{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return["p-virtualscroller-loader",{"p-component-overlay":!this.$slots.loader}]},loadedItems(){const t=this.items;return t&&!this.d_loading?this.isBoth()?t.slice(this.first.rows,this.last.rows).map((t=>this.columns?t:t.slice(this.first.cols,this.last.cols))):this.isHorizontal()&&this.columns?t:t.slice(this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){const t=this.isBoth(),s=this.isHorizontal();if(t||s)return this.d_loading&&this.loaderDisabled?t?this.loaderArr[0]:this.loaderArr:this.columns.slice(t?this.first.cols:this.first,t?this.last.cols:this.last)}return this.columns}}};const e=["tabindex"],i={key:1,class:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"};return function(t,s){void 0===s&&(s={});var e=s.insertAt;if(t&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===e&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}("\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\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 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: flex;\n align-items: center;\n justify-content: center;\n}\n"),s.render=function(s,o,l,n,r,a){return l.disabled?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.renderSlot(s.$slots,"default"),t.renderSlot(s.$slots,"content",{items:l.items,rows:l.items,columns:a.loadedColumns})],64)):(t.openBlock(),t.createElementBlock("div",{key:0,ref:a.elementRef,class:t.normalizeClass(a.containerClass),tabindex:l.tabindex,style:t.normalizeStyle(l.style),onScroll:o[0]||(o[0]=(...t)=>a.onScroll&&a.onScroll(...t))},[t.renderSlot(s.$slots,"content",{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:r.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:l.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:r.spacerStyle,contentStyle:r.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},(()=>[t.createElementVNode("div",{ref:a.contentRef,class:t.normalizeClass(a.contentClass),style:t.normalizeStyle(r.contentStyle)},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(a.loadedItems,((e,i)=>t.renderSlot(s.$slots,"item",{key:i,item:e,options:a.getOptions(i)}))),128))],6)])),l.showSpacer?(t.openBlock(),t.createElementBlock("div",{key:0,class:"p-virtualscroller-spacer",style:t.normalizeStyle(r.spacerStyle)},null,4)):t.createCommentVNode("",!0),!l.loaderDisabled&&l.showLoader&&r.d_loading?(t.openBlock(),t.createElementBlock("div",{key:1,class:t.normalizeClass(a.loaderClass)},[s.$slots&&s.$slots.loader?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(r.loaderArr,((e,i)=>t.renderSlot(s.$slots,"loader",{key:i,options:a.getLoaderOptions(i,a.isBoth()&&{numCols:s.d_numItemsInViewport.cols})}))),128)):(t.openBlock(),t.createElementBlock("i",i))],2)):t.createCommentVNode("",!0)],46,e))},s}(Vue);
|
|
1
|
+
this.primevue=this.primevue||{},this.primevue.virtualscroller=function(t,e){"use strict";var s={name:"VirtualScroller",emits:["update:numToleratedItems","scroll","scroll-index-change","lazy-load"],props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:"vertical"},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1}},data(){return{first:this.isBoth()?{rows:0,cols:0}:0,last:this.isBoth()?{rows:0,cols:0}:0,page:this.isBoth()?{rows:0,cols:0}:0,numItemsInViewport:this.isBoth()?{rows:0,cols:0}:0,lastScrollPos:this.isBoth()?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{}}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,watch:{numToleratedItems(t){this.d_numToleratedItems=t},loading(t){this.d_loading=t},items(t,e){e&&e.length===(t||[]).length||(this.init(),this.calculateAutoSize())},itemSize(){this.init(),this.calculateAutoSize()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.init(),this.calculateAutoSize()},scrollWidth(){this.init(),this.calculateAutoSize()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.initialized=!1},methods:{viewInit(){t.DomHandler.isVisible(this.element)&&(this.setContentEl(this.content),this.init(),this.bindResizeListener(),this.defaultWidth=t.DomHandler.getWidth(this.element),this.defaultHeight=t.DomHandler.getHeight(this.element),this.defaultContentWidth=t.DomHandler.getWidth(this.content),this.defaultContentHeight=t.DomHandler.getHeight(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},isVertical(){return"vertical"===this.orientation},isHorizontal(){return"horizontal"===this.orientation},isBoth(){return"both"===this.orientation},scrollTo(t){this.lastScrollPos=this.both?{top:0,left:0}:0,this.element?.scrollTo(t)},scrollToIndex(t,e="auto"){const s=this.isBoth(),i=this.isHorizontal(),o=this.first,{numToleratedItems:l}=this.calculateNumItems(),n=this.getContentPosition(),r=this.itemSize,h=(t=0,e)=>t<=e?0:t,a=(t,e,s)=>t*e+s,d=(t=0,s=0)=>this.scrollTo({left:t,top:s,behavior:e});let c=s?{rows:0,cols:0}:0,m=!1;s?(c={rows:h(t[0],l[0]),cols:h(t[1],l[1])},d(a(c.cols,r[1],n.left),a(c.rows,r[0],n.top)),m=c.rows!==o.rows||c.cols!==o.cols):(c=h(t,l),i?d(a(c,r,n.left),0):d(0,a(c,r,n.top)),m=c!==o),this.isRangeChanged=m,this.first=c},scrollInView(t,e,s="auto"){if(e){const i=this.isBoth(),o=this.isHorizontal(),{first:l,viewport:n}=this.getRenderedRange(),r=(t=0,e=0)=>this.scrollTo({left:t,top:e,behavior:s}),h="to-end"===e;if("to-start"===e){if(i)n.first.rows-l.rows>t[0]?r(n.first.cols*this.itemSize[1],(n.first.rows-1)*this.itemSize[0]):n.first.cols-l.cols>t[1]&&r((n.first.cols-1)*this.itemSize[1],n.first.rows*this.itemSize[0]);else if(n.first-l>t){const t=(n.first-1)*this.itemSize;o?r(t,0):r(0,t)}}else if(h)if(i)n.last.rows-l.rows<=t[0]+1?r(n.first.cols*this.itemSize[1],(n.first.rows+1)*this.itemSize[0]):n.last.cols-l.cols<=t[1]+1&&r((n.first.cols+1)*this.itemSize[1],n.first.rows*this.itemSize[0]);else if(n.last-l<=t+1){const t=(n.first+1)*this.itemSize;o?r(t,0):r(0,t)}}else this.scrollToIndex(t,s)},getRenderedRange(){const t=(t,e)=>Math.floor(t/(e||t));let e=this.first,s=0;if(this.element){const i=this.isBoth(),o=this.isHorizontal(),{scrollTop:l,scrollLeft:n}=this.element.scrollTop;if(i)e={rows:t(l,this.itemSize[0]),cols:t(n,this.itemSize[1])},s={rows:e.rows+this.numItemsInViewport.rows,cols:e.cols+this.numItemsInViewport.cols};else{e=t(o?n:l,this.itemSize),s=e+this.numItemsInViewport}}return{first:this.first,last:this.last,viewport:{first:e,last:s}}},calculateNumItems(){const t=this.isBoth(),e=this.isHorizontal(),s=this.itemSize,i=this.getContentPosition(),o=this.element?this.element.offsetWidth-i.left:0,l=this.element?this.element.offsetHeight-i.top:0,n=(t,e)=>Math.ceil(t/(e||t)),r=t=>Math.ceil(t/2),h=t?{rows:n(l,s[0]),cols:n(o,s[1])}:n(e?o:l,s);return{numItemsInViewport:h,numToleratedItems:this.d_numToleratedItems||(t?[r(h.rows),r(h.cols)]:r(h))}},calculateOptions(){const t=this.isBoth(),e=this.first,{numItemsInViewport:s,numToleratedItems:i}=this.calculateNumItems(),o=(t,e,s,i=!1)=>this.getLast(t+e+(t<s?2:3)*s,i),l=t?{rows:o(e.rows,s.rows,i[0]),cols:o(e.cols,s.cols,i[1],!0)}:o(e,s,i);this.last=l,this.numItemsInViewport=s,this.d_numToleratedItems=i,this.$emit("update:numToleratedItems",this.d_numToleratedItems),this.showLoader&&(this.loaderArr=t?Array.from({length:s.rows}).map((()=>Array.from({length:s.cols}))):Array.from({length:s})),this.lazy&&Promise.resolve().then((()=>{this.lazyLoadState={first:this.step?t?{rows:0,cols:e.cols}:0:e,last:Math.min(this.step?this.step:l,this.items.length)},this.$emit("lazy-load",this.lazyLoadState)}))},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then((()=>{if(this.content){const e=this.isBoth(),s=this.isHorizontal(),i=this.isVertical();this.content.style.minHeight=this.content.style.minWidth="auto",this.content.style.position="relative",this.element.style.contain="none";const[o,l]=[t.DomHandler.getWidth(this.content),t.DomHandler.getHeight(this.content)];o!==this.defaultContentWidth&&(this.element.style.width=""),l!==this.defaultContentHeight&&(this.element.style.height="");const[n,r]=[t.DomHandler.getWidth(this.element),t.DomHandler.getHeight(this.element)];(e||s)&&(this.element.style.width=n<this.defaultWidth?n+"px":this.scrollWidth||this.defaultWidth+"px"),(e||i)&&(this.element.style.height=r<this.defaultHeight?r+"px":this.scrollHeight||this.defaultHeight+"px"),this.content.style.minHeight=this.content.style.minWidth="",this.content.style.position="",this.element.style.contain=""}}))},getLast(t=0,e){return this.items?Math.min(e?(this.columns||this.items[0]).length:this.items.length,t):0},getContentPosition(){if(this.content){const t=getComputedStyle(this.content),e=parseFloat(t.paddingLeft)+Math.max(parseFloat(t.left)||0,0),s=parseFloat(t.paddingRight)+Math.max(parseFloat(t.right)||0,0),i=parseFloat(t.paddingTop)+Math.max(parseFloat(t.top)||0,0),o=parseFloat(t.paddingBottom)+Math.max(parseFloat(t.bottom)||0,0);return{left:e,right:s,top:i,bottom:o,x:e+s,y:i+o}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){const t=this.isBoth(),e=this.isHorizontal(),s=this.element.parentElement,i=this.scrollWidth||`${this.element.offsetWidth||s.offsetWidth}px`,o=this.scrollHeight||`${this.element.offsetHeight||s.offsetHeight}px`,l=(t,e)=>this.element.style[t]=e;t||e?(l("height",o),l("width",i)):l("height",o)}},setSpacerSize(){const t=this.items;if(t){const e=this.isBoth(),s=this.isHorizontal(),i=this.getContentPosition(),o=(t,e,s,i=0)=>this.spacerStyle={...this.spacerStyle,[`${t}`]:(e||[]).length*s+i+"px"};e?(o("height",t,this.itemSize[0],i.y),o("width",this.columns||t[1],this.itemSize[1],i.x)):s?o("width",this.columns||t,this.itemSize,i.x):o("height",t,this.itemSize,i.y)}},setContentPosition(t){if(this.content&&!this.appendOnly){const e=this.isBoth(),s=this.isHorizontal(),i=t?t.first:this.first,o=(t,e)=>t*e,l=(t=0,e=0)=>this.contentStyle={...this.contentStyle,transform:`translate3d(${t}px, ${e}px, 0)`};if(e)l(o(i.cols,this.itemSize[1]),o(i.rows,this.itemSize[0]));else{const t=o(i,this.itemSize);s?l(t,0):l(0,t)}}},onScrollPositionChange(t){const e=t.target,s=this.isBoth(),i=this.isHorizontal(),o=this.getContentPosition(),l=(t,e)=>t?t>e?t-e:t:0,n=(t,e)=>Math.floor(t/(e||t)),r=(t,e,s,i,o,l)=>t<=o?o:l?s-i-o:e+o-1,h=(t,e,s,i,o,l,n)=>t<=l?0:Math.max(0,n?t<e?s:t-l:t>e?s:t-2*l),a=(t,e,s,i,o,l)=>{let n=e+i+2*o;return t>=o&&(n+=o+1),this.getLast(n,l)},d=l(e.scrollTop,o.top),c=l(e.scrollLeft,o.left);let m=s?{rows:0,cols:0}:0,u=this.last,p=!1,f=this.lastScrollPos;if(s){const t=this.lastScrollPos.top<=d,e=this.lastScrollPos.left<=c;if(!this.appendOnly||this.appendOnly&&(t||e)){const s={rows:n(d,this.itemSize[0]),cols:n(c,this.itemSize[1])},i={rows:r(s.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],t),cols:r(s.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],e)};m={rows:h(s.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],t),cols:h(s.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],e)},u={rows:a(s.rows,m.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:a(s.cols,m.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},p=m.rows!==this.first.rows||u.rows!==this.last.rows||m.cols!==this.first.cols||u.cols!==this.last.cols||this.isRangeChanged,f={top:d,left:c}}}else{const t=i?c:d,e=this.lastScrollPos<=t;if(!this.appendOnly||this.appendOnly&&e){const s=n(t,this.itemSize);m=h(s,r(s,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,e),this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,e),u=a(s,m,this.last,this.numItemsInViewport,this.d_numToleratedItems),p=m!==this.first||u!==this.last||this.isRangeChanged,f=t}}return{first:m,last:u,isRangeChanged:p,scrollPos:f}},onScrollChange(t){const{first:e,last:s,isRangeChanged:i,scrollPos:o}=this.onScrollPositionChange(t);if(i){const t={first:e,last:s};if(this.setContentPosition(t),this.first=e,this.last=s,this.lastScrollPos=o,this.$emit("scroll-index-change",t),this.lazy&&this.isPageChanged(e)){const t={first:this.step?Math.min(this.getPageByFirst(e)*this.step,this.items.length-this.step):e,last:Math.min(this.step?(this.getPageByFirst(e)+1)*this.step:s,this.items.length)};(this.lazyLoadState.first!==t.first||this.lazyLoadState.last!==t.last)&&this.$emit("lazy-load",t),this.lazyLoadState=t}}},onScroll(t){if(this.$emit("scroll",t),this.delay&&this.isPageChanged()){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),!this.d_loading&&this.showLoader){const{isRangeChanged:e}=this.onScrollPositionChange(t);(e||!!this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout((()=>{this.onScrollChange(t),!this.d_loading||!this.showLoader||this.lazy&&void 0!==this.loading||(this.d_loading=!1,this.page=this.getPageByFirst())}),this.delay)}else this.onScrollChange(t)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout((()=>{if(t.DomHandler.isVisible(this.element)){const e=this.isBoth(),s=this.isVertical(),i=this.isHorizontal(),[o,l]=[t.DomHandler.getWidth(this.element),t.DomHandler.getHeight(this.element)],[n,r]=[o!==this.defaultWidth,l!==this.defaultHeight];(e?n||r:i?n:!!s&&r)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=o,this.defaultHeight=l,this.defaultContentWidth=t.DomHandler.getWidth(this.content),this.defaultContentHeight=t.DomHandler.getHeight(this.content),this.init())}}),this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener("resize",this.resizeListener),window.addEventListener("orientationchange",this.resizeListener))},unbindResizeListener(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),window.removeEventListener("orientationchange",this.resizeListener),this.resizeListener=null)},getOptions(t){const e=(this.items||[]).length,s=this.isBoth()?this.first.rows+t:this.first+t;return{index:s,count:e,first:0===s,last:s===e-1,even:s%2==0,odd:s%2!=0}},getLoaderOptions(t,e){let s=this.loaderArr.length;return{index:t,count:s,first:0===t,last:t===s-1,even:t%2==0,odd:t%2!=0,...e}},getPageByFirst(t){return Math.floor(((t??this.first)+4*this.d_numToleratedItems)/(this.step||1))},isPageChanged(t){return!this.step||this.page!==this.getPageByFirst(t??this.first)},setContentEl(e){this.content=e||this.content||t.DomHandler.findSingle(this.element,".p-virtualscroller-content")},elementRef(t){this.element=t},contentRef(t){this.content=t}},computed:{containerClass(){return["p-virtualscroller",{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal()},this.class]},contentClass(){return["p-virtualscroller-content",{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return["p-virtualscroller-loader",{"p-component-overlay":!this.$slots.loader}]},loadedItems(){return this.items&&!this.d_loading?this.isBoth()?this.items.slice(this.appendOnly?0:this.first.rows,this.last.rows).map((t=>this.columns?t:t.slice(this.appendOnly?0:this.first.cols,this.last.cols))):this.isHorizontal()&&this.columns?this.items:this.items.slice(this.appendOnly?0:this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){const t=this.isBoth(),e=this.isHorizontal();if(t||e)return this.d_loading&&this.loaderDisabled?t?this.loaderArr[0]:this.loaderArr:this.columns.slice(t?this.first.cols:this.first,t?this.last.cols:this.last)}return this.columns}}};const i=["tabindex"],o={key:1,class:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"};return function(t,e){void 0===e&&(e={});var s=e.insertAt;if(t&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===s&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}("\n.p-virtualscroller {\n position: relative;\n overflow: auto;\n contain: strict;\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 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: flex;\n align-items: center;\n justify-content: center;\n}\n.p-virtualscroller-loading-icon {\n font-size: 2rem;\n}\n.p-virtualscroller-horizontal > .p-virtualscroller-content {\n display: flex;\n}\n\n/* Inline */\n.p-virtualscroller-inline .p-virtualscroller-content {\n position: static;\n}\n"),s.render=function(t,s,l,n,r,h){return l.disabled?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.renderSlot(t.$slots,"default"),e.renderSlot(t.$slots,"content",{items:l.items,rows:l.items,columns:h.loadedColumns})],64)):(e.openBlock(),e.createElementBlock("div",{key:0,ref:h.elementRef,class:e.normalizeClass(h.containerClass),tabindex:l.tabindex,style:e.normalizeStyle(l.style),onScroll:s[0]||(s[0]=(...t)=>h.onScroll&&h.onScroll(...t))},[e.renderSlot(t.$slots,"content",{styleClass:h.contentClass,items:h.loadedItems,getItemOptions:h.getOptions,loading:r.d_loading,getLoaderOptions:h.getLoaderOptions,itemSize:l.itemSize,rows:h.loadedRows,columns:h.loadedColumns,contentRef:h.contentRef,spacerStyle:r.spacerStyle,contentStyle:r.contentStyle,vertical:h.isVertical(),horizontal:h.isHorizontal(),both:h.isBoth()},(()=>[e.createElementVNode("div",{ref:h.contentRef,class:e.normalizeClass(h.contentClass),style:e.normalizeStyle(r.contentStyle)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.loadedItems,((s,i)=>e.renderSlot(t.$slots,"item",{key:i,item:s,options:h.getOptions(i)}))),128))],6)])),l.showSpacer?(e.openBlock(),e.createElementBlock("div",{key:0,class:"p-virtualscroller-spacer",style:e.normalizeStyle(r.spacerStyle)},null,4)):e.createCommentVNode("",!0),!l.loaderDisabled&&l.showLoader&&r.d_loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(h.loaderClass)},[t.$slots&&t.$slots.loader?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(r.loaderArr,((s,i)=>e.renderSlot(t.$slots,"loader",{key:i,options:h.getLoaderOptions(i,h.isBoth()&&{numCols:t.d_numItemsInViewport.cols})}))),128)):(e.openBlock(),e.createElementBlock("i",o))],2)):e.createCommentVNode("",!0)],46,i))},s}(primevue.utils,Vue);
|