vxe-pc-ui 4.20.33 → 4.20.35
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/dist/all.esm.js +44793 -43931
- package/dist/all.esm.min.js +3 -3
- package/dist/style.css +433 -2
- package/dist/style.mini.css +1 -1
- package/es/alert/src/alert.js +117 -114
- package/es/anchor/src/anchor-link.js +110 -107
- package/es/anchor/src/anchor.js +212 -209
- package/es/avatar/src/avatar.js +132 -129
- package/es/backtop/src/backtop.js +267 -264
- package/es/badge/src/badge.js +102 -99
- package/es/breadcrumb/src/breadcrumb-item.js +104 -101
- package/es/breadcrumb/src/breadcrumb.js +70 -67
- package/es/button/src/button-group.js +88 -85
- package/es/calendar/src/calendar.js +1371 -1368
- package/es/card/src/card.js +235 -232
- package/es/carousel/src/carousel-item.js +78 -75
- package/es/carousel/src/carousel.js +392 -389
- package/es/cascader/src/cascader.js +1667 -1664
- package/es/checkbox/src/button.js +198 -195
- package/es/checkbox/src/checkbox.js +181 -178
- package/es/checkbox/src/group.js +210 -207
- package/es/collapse/src/collapse-pane.js +98 -95
- package/es/collapse/src/collapse.js +340 -337
- package/es/color-picker/src/color-picker.js +1116 -1113
- package/es/components.d.ts +1 -0
- package/es/components.js +3 -0
- package/es/context-menu/src/context-menu.js +601 -598
- package/es/countdown/src/countdown.js +224 -221
- package/es/date-panel/src/date-panel.js +1905 -1902
- package/es/date-picker/src/date-picker.js +1537 -1534
- package/es/date-range-picker/src/date-range-picker.js +1412 -1409
- package/es/divider/src/divider.js +80 -77
- package/es/drawer/src/drawer.js +778 -775
- package/es/empty/src/empty.js +100 -97
- package/es/form/src/form-group.js +74 -71
- package/es/form/src/form-item.js +76 -73
- package/es/form/src/form.js +789 -786
- package/es/icon/src/icon.js +59 -56
- package/es/icon/style.css +1 -1
- package/es/icon/style.mini.css +1 -1
- package/es/icon-picker/src/icon-picker.js +719 -716
- package/es/image/src/group.js +130 -127
- package/es/image/src/image.js +243 -240
- package/es/image/src/preview.js +627 -624
- package/es/index.esm.js +2 -0
- package/es/index.js +2 -0
- package/es/input/src/input.js +2700 -2697
- package/es/layout-aside/src/layout-aside.js +138 -135
- package/es/layout-body/src/layout-body.js +145 -142
- package/es/layout-container/src/layout-container.js +71 -68
- package/es/layout-footer/src/layout-footer.js +60 -57
- package/es/layout-header/src/layout-header.js +58 -55
- package/es/link/src/link.js +131 -128
- package/es/list/src/list.js +2174 -2171
- package/es/loading/src/loading.js +141 -138
- package/es/mention/src/mention.js +49 -46
- package/es/menu/src/menu.js +799 -796
- package/es/modal/src/modal.js +1519 -1527
- package/es/notice-bar/src/notice-bar.js +168 -165
- package/es/number-input/src/number-input.js +1094 -1091
- package/es/pager/src/pager.js +767 -764
- package/es/password-input/src/password-input.js +431 -428
- package/es/print/src/page-break.js +63 -60
- package/es/print/src/print.js +303 -300
- package/es/pulldown/src/pulldown.js +403 -400
- package/es/radio/src/button.js +214 -211
- package/es/radio/src/group.js +195 -192
- package/es/radio/src/radio.js +194 -191
- package/es/rate/src/rate.js +164 -161
- package/es/result/src/result.js +116 -113
- package/es/row/src/col.js +133 -130
- package/es/row/src/row.js +111 -108
- package/es/scrollbar/src/scrollbar.js +518 -515
- package/es/segmented/src/segmented.js +240 -237
- package/es/select/src/optgroup.js +44 -41
- package/es/select/src/option.js +39 -35
- package/es/select/src/select.js +1914 -1891
- package/es/slider/src/slider.js +419 -416
- package/es/space/src/space.js +190 -187
- package/es/splitter/src/splitter-panel.js +146 -143
- package/es/splitter/src/splitter.js +917 -914
- package/es/step-item/index.d.ts +76 -0
- package/es/step-item/index.js +17 -0
- package/es/steps/index.d.ts +288 -34
- package/es/steps/src/step-info.d.ts +6 -0
- package/es/steps/src/step-info.js +20 -0
- package/es/steps/src/step-item.d.ts +14 -0
- package/es/steps/src/step-item.js +39 -0
- package/es/steps/src/steps.d.ts +68 -8
- package/es/steps/src/steps.js +299 -47
- package/es/steps/src/util.d.ts +7 -0
- package/es/steps/src/util.js +44 -0
- package/es/steps/style.css +297 -0
- package/es/steps/style.mini.css +1 -0
- package/es/style.css +433 -2
- package/es/style.mini.css +1 -1
- package/es/switch/src/switch.js +228 -225
- package/es/table-select/src/table-select.js +865 -862
- package/es/table-transfer/src/table-transfer.js +61 -58
- package/es/tabs/src/tab-pane.js +102 -99
- package/es/tabs/src/tabs.js +936 -933
- package/es/tag/src/tag.js +163 -160
- package/es/text/src/text.js +232 -229
- package/es/text-ellipsis/src/text-ellipsis.js +252 -249
- package/es/textarea/src/textarea.js +434 -431
- package/es/timeline/index.d.ts +92 -0
- package/es/timeline/src/timeline-info.d.ts +6 -0
- package/es/timeline/src/timeline-info.js +19 -0
- package/es/timeline/src/timeline-item.d.ts +11 -8
- package/es/timeline/src/timeline-item.js +33 -45
- package/es/timeline/src/timeline.d.ts +22 -0
- package/es/timeline/src/timeline.js +220 -48
- package/es/timeline/src/util.d.ts +7 -0
- package/es/timeline/src/util.js +44 -0
- package/es/timeline/style.css +122 -0
- package/es/timeline/style.mini.css +1 -0
- package/es/timeline-item/index.d.ts +42 -34
- package/es/tip/src/tip.js +117 -114
- package/es/tooltip/src/tooltip.js +552 -549
- package/es/tour/src/tour.js +49 -46
- package/es/transfer/src/transfer.js +95 -92
- package/es/tree/src/tree.js +3379 -3376
- package/es/tree-select/src/tree-select.js +969 -966
- package/es/ui/index.js +8 -2
- package/es/ui/src/log.js +1 -1
- package/es/upload/src/upload.js +1791 -1788
- package/es/vxe-icon/style.css +1 -1
- package/es/vxe-icon/style.mini.css +1 -1
- package/es/vxe-steps/style.css +297 -0
- package/es/vxe-steps/style.mini.css +1 -0
- package/es/vxe-timeline/style.css +122 -0
- package/es/vxe-timeline/style.mini.css +1 -0
- package/es/watermark/src/watermark.js +158 -155
- package/lib/alert/src/alert.js +117 -114
- package/lib/anchor/src/anchor-link.js +110 -107
- package/lib/anchor/src/anchor.js +212 -209
- package/lib/avatar/src/avatar.js +132 -129
- package/lib/backtop/src/backtop.js +267 -264
- package/lib/badge/src/badge.js +102 -99
- package/lib/breadcrumb/src/breadcrumb-item.js +104 -101
- package/lib/breadcrumb/src/breadcrumb.js +70 -67
- package/lib/button/src/button-group.js +88 -85
- package/lib/calendar/src/calendar.js +1371 -1368
- package/lib/card/src/card.js +235 -232
- package/lib/carousel/src/carousel-item.js +78 -75
- package/lib/carousel/src/carousel.js +392 -389
- package/lib/cascader/src/cascader.js +1665 -1662
- package/lib/checkbox/src/button.js +198 -195
- package/lib/checkbox/src/checkbox.js +181 -178
- package/lib/checkbox/src/group.js +210 -207
- package/lib/collapse/src/collapse-pane.js +98 -95
- package/lib/collapse/src/collapse.js +340 -337
- package/lib/color-picker/src/color-picker.js +1116 -1113
- package/lib/components.js +3 -0
- package/lib/context-menu/src/context-menu.js +601 -598
- package/lib/countdown/src/countdown.js +224 -221
- package/lib/date-panel/src/date-panel.js +1905 -1902
- package/lib/date-picker/src/date-picker.js +1537 -1534
- package/lib/date-range-picker/src/date-range-picker.js +1412 -1409
- package/lib/divider/src/divider.js +80 -77
- package/lib/drawer/src/drawer.js +778 -775
- package/lib/empty/src/empty.js +100 -97
- package/lib/form/src/form-group.js +74 -71
- package/lib/form/src/form-item.js +76 -73
- package/lib/form/src/form.js +789 -786
- package/lib/icon/src/icon.js +59 -56
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.mini.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +719 -716
- package/lib/image/src/group.js +130 -127
- package/lib/image/src/image.js +243 -240
- package/lib/image/src/preview.js +627 -624
- package/lib/index.common.js +2 -0
- package/lib/index.js +2 -0
- package/lib/index.umd.js +47724 -46862
- package/lib/index.umd.min.js +3 -3
- package/lib/input/src/input.js +2700 -2697
- package/lib/layout-aside/src/layout-aside.js +138 -135
- package/lib/layout-body/src/layout-body.js +145 -142
- package/lib/layout-container/src/layout-container.js +71 -68
- package/lib/layout-footer/src/layout-footer.js +60 -57
- package/lib/layout-header/src/layout-header.js +58 -55
- package/lib/link/src/link.js +131 -128
- package/lib/list/src/list.js +2173 -2170
- package/lib/loading/src/loading.js +141 -138
- package/lib/mention/src/mention.js +49 -46
- package/lib/menu/src/menu.js +799 -796
- package/lib/modal/src/modal.js +1519 -1527
- package/lib/notice-bar/src/notice-bar.js +168 -165
- package/lib/number-input/src/number-input.js +1094 -1091
- package/lib/pager/src/pager.js +767 -764
- package/lib/password-input/src/password-input.js +431 -428
- package/lib/print/src/page-break.js +63 -60
- package/lib/print/src/print.js +303 -300
- package/lib/pulldown/src/pulldown.js +403 -400
- package/lib/radio/src/button.js +214 -211
- package/lib/radio/src/group.js +195 -192
- package/lib/radio/src/radio.js +194 -191
- package/lib/rate/src/rate.js +164 -161
- package/lib/result/src/result.js +116 -113
- package/lib/row/src/col.js +133 -130
- package/lib/row/src/row.js +111 -108
- package/lib/scrollbar/src/scrollbar.js +518 -515
- package/lib/segmented/src/segmented.js +240 -237
- package/lib/select/src/optgroup.js +44 -41
- package/lib/select/src/option.js +39 -35
- package/lib/select/src/select.js +1915 -1892
- package/lib/slider/src/slider.js +419 -416
- package/lib/space/src/space.js +190 -187
- package/lib/splitter/src/splitter-panel.js +146 -143
- package/lib/splitter/src/splitter.js +917 -914
- package/lib/step-item/index.js +47 -0
- package/lib/steps/src/step-info.js +49 -0
- package/lib/steps/src/step-item.js +59 -0
- package/lib/steps/src/steps.js +298 -46
- package/lib/steps/src/util.js +74 -0
- package/lib/steps/style/style.css +297 -0
- package/lib/steps/style/style.mini.css +1 -0
- package/lib/style.css +433 -2
- package/lib/style.mini.css +1 -1
- package/lib/switch/src/switch.js +228 -225
- package/lib/table-select/src/table-select.js +865 -862
- package/lib/table-transfer/src/table-transfer.js +61 -58
- package/lib/tabs/src/tab-pane.js +102 -99
- package/lib/tabs/src/tabs.js +936 -933
- package/lib/tag/src/tag.js +163 -160
- package/lib/text/src/text.js +232 -229
- package/lib/text-ellipsis/src/text-ellipsis.js +252 -249
- package/lib/textarea/src/textarea.js +434 -431
- package/lib/timeline/src/timeline-info.js +48 -0
- package/lib/timeline/src/timeline-item.js +32 -54
- package/lib/timeline/src/timeline.js +219 -47
- package/lib/timeline/src/util.js +74 -0
- package/lib/timeline/style/style.css +122 -0
- package/lib/timeline/style/style.mini.css +1 -0
- package/lib/tip/src/tip.js +117 -114
- package/lib/tooltip/src/tooltip.js +552 -549
- package/lib/tour/src/tour.js +49 -46
- package/lib/transfer/src/transfer.js +95 -92
- package/lib/tree/src/tree.js +3379 -3376
- package/lib/tree-select/src/tree-select.js +969 -966
- package/lib/ui/index.js +8 -2
- package/lib/ui/src/log.js +1 -1
- package/lib/upload/src/upload.js +1788 -1785
- package/lib/vxe-icon/style/style.css +1 -1
- package/lib/vxe-icon/style/style.mini.css +1 -1
- package/lib/vxe-steps/style/style.css +297 -0
- package/lib/vxe-steps/style/style.mini.css +1 -0
- package/lib/vxe-timeline/style/style.css +122 -0
- package/lib/vxe-timeline/style/style.mini.css +1 -0
- package/lib/watermark/src/watermark.js +158 -155
- package/package.json +10 -3
- package/packages/alert/src/alert.ts +2 -2
- package/packages/anchor/src/anchor-link.ts +2 -2
- package/packages/anchor/src/anchor.ts +2 -2
- package/packages/avatar/src/avatar.ts +2 -2
- package/packages/backtop/src/backtop.ts +2 -2
- package/packages/badge/src/badge.ts +2 -2
- package/packages/breadcrumb/src/breadcrumb-item.ts +2 -2
- package/packages/breadcrumb/src/breadcrumb.ts +2 -2
- package/packages/button/src/button-group.ts +2 -2
- package/packages/calendar/src/calendar.ts +2 -2
- package/packages/card/src/card.ts +2 -2
- package/packages/carousel/src/carousel-item.ts +2 -2
- package/packages/carousel/src/carousel.ts +2 -2
- package/packages/cascader/src/cascader.ts +2 -2
- package/packages/checkbox/src/button.ts +3 -15
- package/packages/checkbox/src/checkbox.ts +2 -2
- package/packages/checkbox/src/group.ts +2 -2
- package/packages/collapse/src/collapse-pane.ts +2 -2
- package/packages/collapse/src/collapse.ts +2 -2
- package/packages/color-picker/src/color-picker.ts +2 -2
- package/packages/components.ts +3 -0
- package/packages/context-menu/src/context-menu.ts +3 -16
- package/packages/countdown/src/countdown.ts +2 -2
- package/packages/date-panel/src/date-panel.ts +2 -2
- package/packages/date-picker/src/date-picker.ts +2 -2
- package/packages/date-range-picker/src/date-range-picker.ts +2 -2
- package/packages/divider/src/divider.ts +2 -2
- package/packages/drawer/src/drawer.ts +2 -2
- package/packages/empty/src/empty.ts +2 -2
- package/packages/form/src/form-group.ts +2 -2
- package/packages/form/src/form-item.ts +2 -2
- package/packages/form/src/form.ts +2 -2
- package/packages/icon/src/icon.ts +2 -2
- package/packages/icon-picker/src/icon-picker.ts +2 -2
- package/packages/image/src/group.ts +2 -2
- package/packages/image/src/image.ts +2 -2
- package/packages/image/src/preview.ts +3 -16
- package/packages/index.ts +2 -2
- package/packages/input/src/input.ts +2 -2
- package/packages/layout-aside/src/layout-aside.ts +2 -2
- package/packages/layout-body/src/layout-body.ts +2 -2
- package/packages/layout-container/src/layout-container.ts +3 -14
- package/packages/layout-footer/src/layout-footer.ts +2 -2
- package/packages/layout-header/src/layout-header.ts +2 -2
- package/packages/link/src/link.ts +2 -2
- package/packages/list/src/list.ts +2 -2
- package/packages/loading/src/loading.ts +2 -2
- package/packages/mention/src/mention.ts +2 -2
- package/packages/menu/src/menu.ts +2 -2
- package/packages/modal/src/modal.ts +5 -20
- package/packages/notice-bar/src/notice-bar.ts +2 -2
- package/packages/number-input/src/number-input.ts +3 -17
- package/packages/pager/src/pager.ts +2 -2
- package/packages/password-input/src/password-input.ts +2 -2
- package/packages/print/src/page-break.ts +2 -2
- package/packages/print/src/print.ts +2 -2
- package/packages/pulldown/src/pulldown.ts +2 -2
- package/packages/radio/src/button.ts +3 -16
- package/packages/radio/src/group.ts +3 -17
- package/packages/radio/src/radio.ts +2 -2
- package/packages/rate/src/rate.ts +2 -2
- package/packages/result/src/result.ts +2 -2
- package/packages/row/src/col.ts +2 -2
- package/packages/row/src/row.ts +2 -2
- package/packages/scrollbar/src/scrollbar.ts +3 -4
- package/packages/segmented/src/segmented.ts +2 -2
- package/packages/select/src/optgroup.ts +2 -2
- package/packages/select/src/option.ts +5 -3
- package/packages/select/src/select.ts +29 -10
- package/packages/slider/src/slider.ts +3 -18
- package/packages/space/src/space.ts +2 -2
- package/packages/splitter/src/splitter-panel.ts +2 -2
- package/packages/splitter/src/splitter.ts +2 -2
- package/packages/step-item/index.ts +16 -0
- package/packages/steps/src/step-info.ts +18 -0
- package/packages/steps/src/step-item.ts +41 -0
- package/packages/steps/src/steps.ts +273 -13
- package/packages/steps/src/util.ts +44 -0
- package/packages/switch/src/switch.ts +2 -2
- package/packages/table-select/src/table-select.ts +2 -2
- package/packages/table-transfer/src/table-transfer.ts +3 -15
- package/packages/tabs/src/tab-pane.ts +2 -2
- package/packages/tabs/src/tabs.ts +2 -2
- package/packages/tag/src/tag.ts +2 -2
- package/packages/text/src/text.ts +2 -2
- package/packages/text-ellipsis/src/text-ellipsis.ts +2 -2
- package/packages/textarea/src/textarea.ts +2 -2
- package/packages/timeline/src/timeline-info.ts +17 -0
- package/packages/timeline/src/timeline-item.ts +25 -50
- package/packages/timeline/src/timeline.ts +201 -18
- package/packages/timeline/src/util.ts +44 -0
- package/packages/tip/src/tip.ts +2 -2
- package/packages/tooltip/src/tooltip.ts +2 -2
- package/packages/tour/src/tour.ts +2 -2
- package/packages/transfer/src/transfer.ts +2 -2
- package/packages/tree/src/tree.ts +2 -2
- package/packages/tree-select/src/tree-select.ts +2 -2
- package/packages/ui/index.ts +8 -1
- package/packages/upload/src/upload.ts +2 -2
- package/packages/watermark/src/watermark.ts +2 -2
- package/styles/all.scss +1 -0
- package/styles/components/step-item.scss +0 -0
- package/styles/components/steps.scss +354 -0
- package/styles/components/timeline.scss +133 -0
- package/styles/theme/base.scss +9 -0
- package/styles/theme/dark.scss +2 -1
- package/styles/theme/light.scss +1 -0
- package/styles/variable.scss +2 -1
- package/types/all.d.ts +3 -0
- package/types/components/gantt.d.ts +1 -3
- package/types/components/optgroup.d.ts +0 -1
- package/types/components/option.d.ts +0 -1
- package/types/components/select.d.ts +1 -13
- package/types/components/step-item.d.ts +72 -0
- package/types/components/steps.d.ts +67 -8
- package/types/components/table.d.ts +7 -66
- package/types/components/timeline-item.d.ts +21 -17
- package/types/components/timeline.d.ts +41 -8
- package/types/handles/form-design.d.ts +1 -4
- package/types/ui/global-config.d.ts +2 -0
- package/types/ui/global-icon.d.ts +7 -0
- /package/dist/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/dist/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/dist/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/es/icon/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/es/icon/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/es/icon/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/es/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/es/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/es/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/es/vxe-icon/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/es/vxe-icon/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/es/vxe-icon/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/lib/icon/style/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/lib/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/lib/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/lib/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
- /package/lib/vxe-icon/style/{iconfont.1793089621562.ttf → iconfont.1793359478136.ttf} +0 -0
- /package/lib/vxe-icon/style/{iconfont.1793089621562.woff → iconfont.1793359478136.woff} +0 -0
- /package/lib/vxe-icon/style/{iconfont.1793089621562.woff2 → iconfont.1793359478136.woff2} +0 -0
package/es/list/src/list.js
CHANGED
|
@@ -78,1125 +78,1140 @@ function createInternalData() {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
let crossListDragRowObj = null;
|
|
81
|
-
var list_default =
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
81
|
+
var list_default = (
|
|
82
|
+
/* define-vxe-component start */
|
|
83
|
+
defineVxeComponent({
|
|
84
|
+
name: "VxeList",
|
|
85
|
+
props: {
|
|
86
|
+
data: Array,
|
|
87
|
+
height: [Number, String],
|
|
88
|
+
maxHeight: [Number, String],
|
|
89
|
+
loading: Boolean,
|
|
90
|
+
className: [String, Function],
|
|
91
|
+
size: {
|
|
92
|
+
type: String,
|
|
93
|
+
default: () => getConfig().list.size || getConfig().size
|
|
94
|
+
},
|
|
95
|
+
autoResize: {
|
|
96
|
+
type: Boolean,
|
|
97
|
+
default: () => getConfig().list.autoResize
|
|
98
|
+
},
|
|
99
|
+
syncResize: [Boolean, String, Number],
|
|
100
|
+
showSeq: {
|
|
101
|
+
type: Boolean,
|
|
102
|
+
default: () => getConfig().list.showSeq
|
|
103
|
+
},
|
|
104
|
+
showRadio: {
|
|
105
|
+
type: Boolean,
|
|
106
|
+
default: () => getConfig().list.showRadio
|
|
107
|
+
},
|
|
108
|
+
checkRowKey: [String, Number],
|
|
109
|
+
radioConfig: Object,
|
|
110
|
+
showCheckbox: {
|
|
111
|
+
type: Boolean,
|
|
112
|
+
default: () => getConfig().list.showCheckbox
|
|
113
|
+
},
|
|
114
|
+
checkRowKeys: Array,
|
|
115
|
+
checkboxConfig: Object,
|
|
116
|
+
rowConfig: Object,
|
|
117
|
+
dragConfig: Object,
|
|
118
|
+
menuConfig: Object,
|
|
119
|
+
virtualYConfig: Object,
|
|
120
|
+
scrollY: Object,
|
|
121
|
+
useScrollbar: {
|
|
122
|
+
type: Boolean,
|
|
123
|
+
default: () => getDefaultConfig(getConfig().list.useScrollbar, getConfig().useScrollbar)
|
|
124
|
+
},
|
|
125
|
+
scrollbarConfig: Object
|
|
122
126
|
},
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (rowHeight) {
|
|
194
|
-
stys["--vxe-ui-list-row-height"] = toCssUnit(rowHeight);
|
|
195
|
-
}
|
|
196
|
-
if (barWidth || barHeight) {
|
|
197
|
-
stys["--vxe-ui-scrollbar-y-width"] = toCssUnit(barWidth || barHeight);
|
|
198
|
-
stys["--vxe-ui-scrollbar-x-height"] = toCssUnit(barHeight || barWidth);
|
|
199
|
-
}
|
|
200
|
-
return stys;
|
|
201
|
-
});
|
|
202
|
-
const computeVirtualStyles = computed(() => {
|
|
203
|
-
const { height, maxHeight } = props;
|
|
204
|
-
const { customHeight, customMaxHeight, headHeight, footHeight } = reactData;
|
|
205
|
-
const style = {};
|
|
206
|
-
if (height) {
|
|
207
|
-
style.height = toCssUnit(Math.max(20, customHeight - headHeight - footHeight));
|
|
208
|
-
} else if (maxHeight) {
|
|
209
|
-
style.height = "auto";
|
|
210
|
-
style.maxHeight = toCssUnit(Math.max(20, customMaxHeight - headHeight - footHeight));
|
|
211
|
-
}
|
|
212
|
-
return style;
|
|
213
|
-
});
|
|
214
|
-
const computeScrollbarOpts = computed(() => {
|
|
215
|
-
return Object.assign({}, getConfig().list.scrollbarConfig, props.scrollbarConfig);
|
|
216
|
-
});
|
|
217
|
-
const computeScrollbarXOpts = computed(() => {
|
|
218
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
219
|
-
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig);
|
|
220
|
-
});
|
|
221
|
-
const computeScrollbarYOpts = computed(() => {
|
|
222
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
223
|
-
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
|
|
224
|
-
});
|
|
225
|
-
const computeScrollXHeight = computed(() => {
|
|
226
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
227
|
-
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
228
|
-
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
|
|
229
|
-
});
|
|
230
|
-
const computeScrollYWidth = computed(() => {
|
|
231
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
232
|
-
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
233
|
-
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
|
|
234
|
-
});
|
|
235
|
-
const computeScrollXVisible = computed(() => {
|
|
236
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
237
|
-
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
238
|
-
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
239
|
-
});
|
|
240
|
-
const computeScrollYVisible = computed(() => {
|
|
241
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
242
|
-
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
243
|
-
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
244
|
-
});
|
|
245
|
-
const computeScrollXAutoHide = computed(() => {
|
|
246
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
247
|
-
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
248
|
-
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
249
|
-
});
|
|
250
|
-
const computeScrollYAutoHide = computed(() => {
|
|
251
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
252
|
-
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
253
|
-
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
254
|
-
});
|
|
255
|
-
const computeScrollbarWrapperClss = computed(() => {
|
|
256
|
-
const { yThumbHeight, xThumbWidth } = reactData;
|
|
257
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
258
|
-
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
259
|
-
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
260
|
-
const scrollXVisible = computeScrollXVisible.value;
|
|
261
|
-
const scrollYVisible = computeScrollYVisible.value;
|
|
262
|
-
return domUtils.buildClass(
|
|
263
|
-
[
|
|
264
|
-
"vxe-scrollbar is--virtual",
|
|
265
|
-
scrollbarOpts.fluentOverlay ? "is--fluent-overlay" : "is--default-mode",
|
|
266
|
-
`ov-x--${scrollXVisible === false ? "hidden" : "visible"}`,
|
|
267
|
-
`ov-y--${scrollYVisible === false ? "hidden" : "visible"}`,
|
|
268
|
-
`sx-pos--${scrollbarXToTop ? "top" : "bottom"}`,
|
|
269
|
-
`sy-pos--${scrollbarYToLeft ? "left" : "right"}`
|
|
270
|
-
],
|
|
271
|
-
{
|
|
272
|
-
"overflow-y": yThumbHeight,
|
|
273
|
-
"overflow-x": xThumbWidth
|
|
127
|
+
emits: ["update:checkRowKey", "update:checkRowKeys", "row-click", "row-dblclick", "current-change", "radio-change", "checkbox-change", "checkbox-all", "scroll", "row-dragstart", "row-dragover", "row-dragend", "row-remove-dragend", "row-insert-dragend", "row-menu", "menu-click"],
|
|
128
|
+
setup(props, context) {
|
|
129
|
+
const { slots, emit } = context;
|
|
130
|
+
const xID = XEUtils.uniqueId();
|
|
131
|
+
const browseObj = XEUtils.browse();
|
|
132
|
+
const reactData = reactive(createReactData());
|
|
133
|
+
const internalData = createInternalData();
|
|
134
|
+
const crossListDragRowInfo = getCrossListDragRowInfo();
|
|
135
|
+
const refElem = ref();
|
|
136
|
+
const refHeaderElem = ref();
|
|
137
|
+
const refFooterElem = ref();
|
|
138
|
+
const refVirtualWrapper = ref();
|
|
139
|
+
const refVirtualSpaceElem = ref();
|
|
140
|
+
const refVirtualBody = ref();
|
|
141
|
+
const refDragRowLineElem = ref();
|
|
142
|
+
const refDragTipElem = ref();
|
|
143
|
+
const { computeSize } = useFns.useSize(props);
|
|
144
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props);
|
|
145
|
+
const refMaps = {
|
|
146
|
+
refElem
|
|
147
|
+
};
|
|
148
|
+
const $xeList = {
|
|
149
|
+
xID,
|
|
150
|
+
props,
|
|
151
|
+
context,
|
|
152
|
+
reactData,
|
|
153
|
+
internalData,
|
|
154
|
+
getRefMaps: () => refMaps
|
|
155
|
+
};
|
|
156
|
+
const { refTrackXElem, refTrackYElem, refThumbXElem, refThumbYElem, updateThumbSize, updateThumbOffset, clickTrackXEvent, clickTrackYEvent, pointerdownThumbXEvent, pointermoveThumbXEvent, cleatPointerThumbEvent, pointerdownThumbYEvent, pointermoveThumbYEvent } = useFns.useInitVScrollbar($xeList);
|
|
157
|
+
const computeRowOpts = computed(() => {
|
|
158
|
+
return Object.assign({}, getConfig().list.rowConfig, props.rowConfig);
|
|
159
|
+
});
|
|
160
|
+
const computeDragOpts = computed(() => {
|
|
161
|
+
return Object.assign({}, getConfig().list.dragConfig, props.dragConfig);
|
|
162
|
+
});
|
|
163
|
+
const computeSYOpts = computed(() => {
|
|
164
|
+
return Object.assign({}, getConfig().list.virtualYConfig || getConfig().list.scrollY, props.virtualYConfig || props.scrollY);
|
|
165
|
+
});
|
|
166
|
+
const computeKeyField = computed(() => {
|
|
167
|
+
const rowOpts = computeRowOpts.value;
|
|
168
|
+
const { keyField } = rowOpts;
|
|
169
|
+
return keyField || "";
|
|
170
|
+
});
|
|
171
|
+
const computeIsDrag = computed(() => {
|
|
172
|
+
const { dragConfig } = props;
|
|
173
|
+
const dragOpts = computeDragOpts.value;
|
|
174
|
+
return dragConfig && isEnableConf(dragOpts);
|
|
175
|
+
});
|
|
176
|
+
const computeRowHeight = computed(() => {
|
|
177
|
+
const rowOpts = computeRowOpts.value;
|
|
178
|
+
const { height } = rowOpts;
|
|
179
|
+
return height;
|
|
180
|
+
});
|
|
181
|
+
const computeRadioOpts = computed(() => {
|
|
182
|
+
return Object.assign({ showIcon: true }, getConfig().list.radioConfig, props.radioConfig);
|
|
183
|
+
});
|
|
184
|
+
const computeCheckboxOpts = computed(() => {
|
|
185
|
+
return Object.assign({ showIcon: true }, getConfig().list.checkboxConfig, props.checkboxConfig);
|
|
186
|
+
});
|
|
187
|
+
const computeMenuOpts = computed(() => {
|
|
188
|
+
return Object.assign({}, getConfig().list.menuConfig, props.menuConfig);
|
|
189
|
+
});
|
|
190
|
+
const computeWrapperStyles = computed(() => {
|
|
191
|
+
const rowHeight = computeRowHeight.value;
|
|
192
|
+
const barWidth = computeScrollYWidth.value;
|
|
193
|
+
const barHeight = computeScrollXHeight.value;
|
|
194
|
+
const stys = {};
|
|
195
|
+
if (rowHeight) {
|
|
196
|
+
stys["--vxe-ui-list-row-height"] = toCssUnit(rowHeight);
|
|
274
197
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
198
|
+
if (barWidth || barHeight) {
|
|
199
|
+
stys["--vxe-ui-scrollbar-y-width"] = toCssUnit(barWidth || barHeight);
|
|
200
|
+
stys["--vxe-ui-scrollbar-x-height"] = toCssUnit(barHeight || barWidth);
|
|
201
|
+
}
|
|
202
|
+
return stys;
|
|
203
|
+
});
|
|
204
|
+
const computeVirtualStyles = computed(() => {
|
|
205
|
+
const { height, maxHeight } = props;
|
|
206
|
+
const { customHeight, customMaxHeight, headHeight, footHeight } = reactData;
|
|
207
|
+
const style = {};
|
|
208
|
+
if (height) {
|
|
209
|
+
style.height = toCssUnit(Math.max(20, customHeight - headHeight - footHeight));
|
|
210
|
+
} else if (maxHeight) {
|
|
211
|
+
style.height = "auto";
|
|
212
|
+
style.maxHeight = toCssUnit(Math.max(20, customMaxHeight - headHeight - footHeight));
|
|
213
|
+
}
|
|
214
|
+
return style;
|
|
215
|
+
});
|
|
216
|
+
const computeScrollbarOpts = computed(() => {
|
|
217
|
+
return Object.assign({}, getConfig().list.scrollbarConfig, props.scrollbarConfig);
|
|
218
|
+
});
|
|
219
|
+
const computeScrollbarXOpts = computed(() => {
|
|
220
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
221
|
+
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig);
|
|
222
|
+
});
|
|
223
|
+
const computeScrollbarYOpts = computed(() => {
|
|
224
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
225
|
+
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
|
|
226
|
+
});
|
|
227
|
+
const computeScrollXHeight = computed(() => {
|
|
228
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
229
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
230
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
|
|
231
|
+
});
|
|
232
|
+
const computeScrollYWidth = computed(() => {
|
|
233
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
234
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
235
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
|
|
236
|
+
});
|
|
237
|
+
const computeScrollXVisible = computed(() => {
|
|
238
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
239
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
240
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
241
|
+
});
|
|
242
|
+
const computeScrollYVisible = computed(() => {
|
|
243
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
244
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
245
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
246
|
+
});
|
|
247
|
+
const computeScrollXAutoHide = computed(() => {
|
|
248
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
249
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
250
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
251
|
+
});
|
|
252
|
+
const computeScrollYAutoHide = computed(() => {
|
|
253
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
254
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
255
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
256
|
+
});
|
|
257
|
+
const computeScrollbarWrapperClss = computed(() => {
|
|
258
|
+
const { yThumbHeight, xThumbWidth } = reactData;
|
|
259
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
260
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
261
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
262
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
263
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
264
|
+
return domUtils.buildClass(
|
|
265
|
+
[
|
|
266
|
+
"vxe-scrollbar is--virtual",
|
|
267
|
+
scrollbarOpts.fluentOverlay ? "is--fluent-overlay" : "is--default-mode",
|
|
268
|
+
`ov-x--${scrollXVisible === false ? "hidden" : "visible"}`,
|
|
269
|
+
`ov-y--${scrollYVisible === false ? "hidden" : "visible"}`,
|
|
270
|
+
`sx-pos--${scrollbarXToTop ? "top" : "bottom"}`,
|
|
271
|
+
`sy-pos--${scrollbarYToLeft ? "left" : "right"}`
|
|
272
|
+
],
|
|
273
|
+
{
|
|
274
|
+
"overflow-y": yThumbHeight,
|
|
275
|
+
"overflow-x": xThumbWidth
|
|
314
276
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
const
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
const
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
277
|
+
);
|
|
278
|
+
});
|
|
279
|
+
const computeScrollbarXToTop = computed(() => {
|
|
280
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
281
|
+
return scrollbarXOpts.position === "top";
|
|
282
|
+
});
|
|
283
|
+
const computeScrollbarYToLeft = computed(() => {
|
|
284
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
285
|
+
return scrollbarYOpts.position === "left";
|
|
286
|
+
});
|
|
287
|
+
const dispatchEvent = (type, params, evnt) => {
|
|
288
|
+
emit(type, createEvent(evnt, { $list: $xeList }, params));
|
|
289
|
+
};
|
|
290
|
+
const emitCheckboxMode = (value) => {
|
|
291
|
+
emit("update:checkRowKeys", value);
|
|
292
|
+
};
|
|
293
|
+
const emitRadioMode = (value) => {
|
|
294
|
+
emit("update:checkRowKey", value);
|
|
295
|
+
};
|
|
296
|
+
const getRowId = (row) => {
|
|
297
|
+
const keyField = computeKeyField.value;
|
|
298
|
+
return getRowIdByField(row, keyField);
|
|
299
|
+
};
|
|
300
|
+
const getParentElem = () => {
|
|
301
|
+
const el = refElem.value;
|
|
302
|
+
return el ? el.parentElement : null;
|
|
303
|
+
};
|
|
304
|
+
const calcTableHeight = (key) => {
|
|
305
|
+
const { parentHeight } = reactData;
|
|
306
|
+
const val = props[key];
|
|
307
|
+
let num = 0;
|
|
308
|
+
if (val) {
|
|
309
|
+
if (val === "100%" || val === "auto") {
|
|
310
|
+
num = parentHeight;
|
|
311
|
+
} else {
|
|
312
|
+
if (isScale(val)) {
|
|
313
|
+
num = Math.floor((XEUtils.toInteger(val) || 1) / 100 * parentHeight);
|
|
314
|
+
} else {
|
|
315
|
+
num = XEUtils.toNumber(val);
|
|
316
|
+
}
|
|
317
|
+
num = Math.max(40, num);
|
|
353
318
|
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
319
|
+
}
|
|
320
|
+
return num;
|
|
321
|
+
};
|
|
322
|
+
const updateHeight = () => {
|
|
323
|
+
const headEl = refHeaderElem.value;
|
|
324
|
+
const footEl = refFooterElem.value;
|
|
325
|
+
reactData.headHeight = headEl ? Math.floor(headEl.offsetHeight) : 0;
|
|
326
|
+
reactData.footHeight = footEl ? Math.floor(footEl.offsetHeight) : 0;
|
|
327
|
+
reactData.customHeight = calcTableHeight("height");
|
|
328
|
+
reactData.customMaxHeight = calcTableHeight("maxHeight");
|
|
329
|
+
};
|
|
330
|
+
const updateYSpace = () => {
|
|
365
331
|
const { scrollYLoad } = reactData;
|
|
366
|
-
const { scrollYStore } = internalData;
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
332
|
+
const { scrollYStore, fullData } = internalData;
|
|
333
|
+
reactData.bodyHeight = scrollYLoad ? fullData.length * scrollYStore.rowHeight : 0;
|
|
334
|
+
reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0;
|
|
335
|
+
};
|
|
336
|
+
const updateAfterFullData = () => {
|
|
337
|
+
const { fullData } = internalData;
|
|
338
|
+
internalData.afterList = fullData.slice(0);
|
|
339
|
+
updateAfterDataIndex();
|
|
340
|
+
};
|
|
341
|
+
const handleData = (force) => {
|
|
342
|
+
const { scrollYLoad } = reactData;
|
|
343
|
+
const { fullData, scrollYStore, rowMaps } = internalData;
|
|
344
|
+
const keyField = computeKeyField.value;
|
|
345
|
+
if (force) {
|
|
346
|
+
updateAfterFullData();
|
|
347
|
+
}
|
|
348
|
+
const rowList = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
|
|
349
|
+
if (keyField) {
|
|
350
|
+
rowList.forEach((item, $index) => {
|
|
351
|
+
const rowid = getRowIdByField(item, keyField);
|
|
352
|
+
const rowRest = rowMaps[rowid];
|
|
353
|
+
if (rowRest) {
|
|
354
|
+
rowRest.$index = $index;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
reactData.rowList = rowList;
|
|
359
|
+
return nextTick();
|
|
360
|
+
};
|
|
361
|
+
const updateYData = () => {
|
|
362
|
+
handleData();
|
|
363
|
+
updateYSpace();
|
|
364
|
+
};
|
|
365
|
+
const computeScrollLoad = () => {
|
|
366
|
+
return nextTick().then(() => {
|
|
367
|
+
const { scrollYLoad } = reactData;
|
|
368
|
+
const { scrollYStore } = internalData;
|
|
369
|
+
const virtualBodyElem = refVirtualBody.value;
|
|
370
|
+
const sYOpts = computeSYOpts.value;
|
|
371
|
+
let rowHeight = 0;
|
|
372
|
+
let firstRowElem;
|
|
373
|
+
if (virtualBodyElem) {
|
|
374
|
+
if (sYOpts.sItem) {
|
|
375
|
+
firstRowElem = virtualBodyElem.querySelector(sYOpts.sItem);
|
|
376
|
+
}
|
|
377
|
+
if (!firstRowElem) {
|
|
378
|
+
firstRowElem = virtualBodyElem.children[0];
|
|
379
|
+
}
|
|
374
380
|
}
|
|
375
|
-
if (
|
|
376
|
-
|
|
381
|
+
if (firstRowElem) {
|
|
382
|
+
rowHeight = firstRowElem.offsetHeight;
|
|
383
|
+
}
|
|
384
|
+
rowHeight = Math.max(12, rowHeight);
|
|
385
|
+
scrollYStore.rowHeight = rowHeight;
|
|
386
|
+
if (scrollYLoad) {
|
|
387
|
+
const scrollBodyElem = refVirtualWrapper.value;
|
|
388
|
+
const visibleYSize = Math.max(8, Math.ceil(scrollBodyElem.clientHeight / rowHeight));
|
|
389
|
+
const offsetYSize = sYOpts.oSize ? XEUtils.toNumber(sYOpts.oSize) : browseObj.edge ? 10 : 0;
|
|
390
|
+
scrollYStore.offsetSize = offsetYSize;
|
|
391
|
+
scrollYStore.visibleSize = visibleYSize;
|
|
392
|
+
scrollYStore.endIndex = Math.max(scrollYStore.startIndex + visibleYSize + offsetYSize, scrollYStore.endIndex);
|
|
393
|
+
updateYData();
|
|
394
|
+
} else {
|
|
395
|
+
updateYSpace();
|
|
377
396
|
}
|
|
397
|
+
});
|
|
398
|
+
};
|
|
399
|
+
const clearScroll = () => {
|
|
400
|
+
const scrollBodyElem = refVirtualWrapper.value;
|
|
401
|
+
if (scrollBodyElem) {
|
|
402
|
+
scrollBodyElem.scrollTop = 0;
|
|
378
403
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
scrollYStore.offsetSize = offsetYSize;
|
|
389
|
-
scrollYStore.visibleSize = visibleYSize;
|
|
390
|
-
scrollYStore.endIndex = Math.max(scrollYStore.startIndex + visibleYSize + offsetYSize, scrollYStore.endIndex);
|
|
391
|
-
updateYData();
|
|
392
|
-
} else {
|
|
393
|
-
updateYSpace();
|
|
404
|
+
return nextTick();
|
|
405
|
+
};
|
|
406
|
+
const scrollTo = (scrollLeft, scrollTop) => {
|
|
407
|
+
const scrollBodyElem = refVirtualWrapper.value;
|
|
408
|
+
if (scrollLeft) {
|
|
409
|
+
if (!XEUtils.isNumber(scrollLeft)) {
|
|
410
|
+
scrollTop = scrollLeft.top;
|
|
411
|
+
scrollLeft = scrollLeft.left;
|
|
412
|
+
}
|
|
394
413
|
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
const clearScroll = () => {
|
|
398
|
-
const scrollBodyElem = refVirtualWrapper.value;
|
|
399
|
-
if (scrollBodyElem) {
|
|
400
|
-
scrollBodyElem.scrollTop = 0;
|
|
401
|
-
}
|
|
402
|
-
return nextTick();
|
|
403
|
-
};
|
|
404
|
-
const scrollTo = (scrollLeft, scrollTop) => {
|
|
405
|
-
const scrollBodyElem = refVirtualWrapper.value;
|
|
406
|
-
if (scrollLeft) {
|
|
407
|
-
if (!XEUtils.isNumber(scrollLeft)) {
|
|
408
|
-
scrollTop = scrollLeft.top;
|
|
409
|
-
scrollLeft = scrollLeft.left;
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
if (XEUtils.isNumber(scrollLeft)) {
|
|
413
|
-
scrollBodyElem.scrollLeft = scrollLeft;
|
|
414
|
-
}
|
|
415
|
-
if (XEUtils.isNumber(scrollTop)) {
|
|
416
|
-
scrollBodyElem.scrollTop = scrollTop;
|
|
417
|
-
}
|
|
418
|
-
if (reactData.scrollYLoad) {
|
|
419
|
-
return new Promise((resolve) => {
|
|
420
|
-
setTimeout(() => {
|
|
421
|
-
nextTick(() => {
|
|
422
|
-
resolve();
|
|
423
|
-
});
|
|
424
|
-
}, 50);
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
return nextTick();
|
|
428
|
-
};
|
|
429
|
-
const refreshScroll = () => {
|
|
430
|
-
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
431
|
-
return clearScroll().then(() => {
|
|
432
|
-
if (lastScrollLeft || lastScrollTop) {
|
|
433
|
-
internalData.lastScrollLeft = 0;
|
|
434
|
-
internalData.lastScrollTop = 0;
|
|
435
|
-
return scrollTo(lastScrollLeft, lastScrollTop);
|
|
414
|
+
if (XEUtils.isNumber(scrollLeft)) {
|
|
415
|
+
scrollBodyElem.scrollLeft = scrollLeft;
|
|
436
416
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
417
|
+
if (XEUtils.isNumber(scrollTop)) {
|
|
418
|
+
scrollBodyElem.scrollTop = scrollTop;
|
|
419
|
+
}
|
|
420
|
+
if (reactData.scrollYLoad) {
|
|
421
|
+
return new Promise((resolve) => {
|
|
422
|
+
setTimeout(() => {
|
|
423
|
+
nextTick(() => {
|
|
424
|
+
resolve();
|
|
425
|
+
});
|
|
426
|
+
}, 50);
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
return nextTick();
|
|
430
|
+
};
|
|
431
|
+
const refreshScroll = () => {
|
|
432
|
+
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
433
|
+
return clearScroll().then(() => {
|
|
434
|
+
if (lastScrollLeft || lastScrollTop) {
|
|
435
|
+
internalData.lastScrollLeft = 0;
|
|
436
|
+
internalData.lastScrollTop = 0;
|
|
437
|
+
return scrollTo(lastScrollLeft, lastScrollTop);
|
|
438
|
+
}
|
|
445
439
|
});
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
let parentHeight = 0;
|
|
454
|
-
if (parentEl && hasClass(parentEl, "vxe-scrollbar--view-inner")) {
|
|
455
|
-
parentEl = parentEl.parentElement;
|
|
456
|
-
}
|
|
457
|
-
if (parentEl) {
|
|
458
|
-
const parentStyle = getComputedStyle(parentEl);
|
|
459
|
-
parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
|
|
460
|
-
}
|
|
461
|
-
reactData.parentHeight = parentHeight;
|
|
462
|
-
updateHeight();
|
|
463
|
-
if (el.clientWidth && el.clientHeight) {
|
|
464
|
-
return computeScrollLoad().then(() => {
|
|
465
|
-
updateScrollbar();
|
|
440
|
+
};
|
|
441
|
+
const updateScrollbar = () => {
|
|
442
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
443
|
+
if (isVScrollbar) {
|
|
444
|
+
return nextTick().then(() => {
|
|
445
|
+
updateThumbSize();
|
|
446
|
+
updateThumbOffset();
|
|
466
447
|
});
|
|
467
448
|
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
const scrollBodyElem = evnt.currentTarget;
|
|
489
|
-
const scrollTop = scrollBodyElem.scrollTop;
|
|
490
|
-
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
491
|
-
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
492
|
-
const isY = scrollTop !== internalData.lastScrollTop;
|
|
493
|
-
const isVScrollbar = computeIsVScrollbar.value;
|
|
494
|
-
if (isVScrollbar) {
|
|
495
|
-
updateThumbOffset();
|
|
496
|
-
}
|
|
497
|
-
internalData.lastScrollTop = scrollTop;
|
|
498
|
-
internalData.lastScrollLeft = scrollLeft;
|
|
499
|
-
if (reactData.scrollYLoad) {
|
|
500
|
-
loadYData(evnt);
|
|
501
|
-
}
|
|
502
|
-
dispatchEvent("scroll", { scrollLeft, scrollTop, isX, isY }, evnt);
|
|
503
|
-
};
|
|
504
|
-
const updateRadioModeValue = () => {
|
|
505
|
-
const { checkRowKey } = props;
|
|
506
|
-
const { fullKeyMaps } = internalData;
|
|
507
|
-
if (checkRowKey) {
|
|
508
|
-
const row = fullKeyMaps[checkRowKey];
|
|
509
|
-
reactData.selectRadioRow = row || null;
|
|
510
|
-
} else {
|
|
511
|
-
reactData.selectRadioRow = null;
|
|
512
|
-
}
|
|
513
|
-
};
|
|
514
|
-
const updateCheckboxModeValue = () => {
|
|
515
|
-
const { checkRowKeys } = props;
|
|
516
|
-
const { fullKeyMaps } = internalData;
|
|
517
|
-
const keyField = computeKeyField.value;
|
|
518
|
-
const selectMaps = {};
|
|
519
|
-
if (checkRowKeys && checkRowKeys.length) {
|
|
520
|
-
for (const rowKey of checkRowKeys) {
|
|
521
|
-
const row = fullKeyMaps[rowKey];
|
|
522
|
-
if (row) {
|
|
523
|
-
const rowid = getRowIdByField(row, keyField);
|
|
524
|
-
selectMaps[rowid] = row;
|
|
449
|
+
return Promise.resolve();
|
|
450
|
+
};
|
|
451
|
+
const recalculate = () => {
|
|
452
|
+
const el = refElem.value;
|
|
453
|
+
if (el) {
|
|
454
|
+
let parentEl = el.parentElement;
|
|
455
|
+
let parentHeight = 0;
|
|
456
|
+
if (parentEl && hasClass(parentEl, "vxe-scrollbar--view-inner")) {
|
|
457
|
+
parentEl = parentEl.parentElement;
|
|
458
|
+
}
|
|
459
|
+
if (parentEl) {
|
|
460
|
+
const parentStyle = getComputedStyle(parentEl);
|
|
461
|
+
parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight));
|
|
462
|
+
}
|
|
463
|
+
reactData.parentHeight = parentHeight;
|
|
464
|
+
updateHeight();
|
|
465
|
+
if (el.clientWidth && el.clientHeight) {
|
|
466
|
+
return computeScrollLoad().then(() => {
|
|
467
|
+
updateScrollbar();
|
|
468
|
+
});
|
|
525
469
|
}
|
|
526
470
|
}
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
const
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
471
|
+
return nextTick();
|
|
472
|
+
};
|
|
473
|
+
const loadYData = (evnt) => {
|
|
474
|
+
const { scrollYStore } = internalData;
|
|
475
|
+
const { startIndex, endIndex, visibleSize, offsetSize, rowHeight } = scrollYStore;
|
|
476
|
+
const scrollBodyElem = evnt.currentTarget;
|
|
477
|
+
const scrollTop = scrollBodyElem.scrollTop;
|
|
478
|
+
const toVisibleIndex = Math.floor(scrollTop / rowHeight);
|
|
479
|
+
const offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize);
|
|
480
|
+
const offsetEndIndex = toVisibleIndex + visibleSize + offsetSize;
|
|
481
|
+
if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
|
|
482
|
+
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
|
|
483
|
+
scrollYStore.startIndex = offsetStartIndex;
|
|
484
|
+
scrollYStore.endIndex = offsetEndIndex;
|
|
485
|
+
updateYData();
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
const scrollEvent = (evnt) => {
|
|
490
|
+
const scrollBodyElem = evnt.currentTarget;
|
|
491
|
+
const scrollTop = scrollBodyElem.scrollTop;
|
|
492
|
+
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
493
|
+
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
494
|
+
const isY = scrollTop !== internalData.lastScrollTop;
|
|
495
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
496
|
+
if (isVScrollbar) {
|
|
497
|
+
updateThumbOffset();
|
|
498
|
+
}
|
|
499
|
+
internalData.lastScrollTop = scrollTop;
|
|
500
|
+
internalData.lastScrollLeft = scrollLeft;
|
|
501
|
+
if (reactData.scrollYLoad) {
|
|
502
|
+
loadYData(evnt);
|
|
503
|
+
}
|
|
504
|
+
dispatchEvent("scroll", { scrollLeft, scrollTop, isX, isY }, evnt);
|
|
505
|
+
};
|
|
506
|
+
const updateRadioModeValue = () => {
|
|
507
|
+
const { checkRowKey } = props;
|
|
508
|
+
const { fullKeyMaps } = internalData;
|
|
509
|
+
if (checkRowKey) {
|
|
510
|
+
const row = fullKeyMaps[checkRowKey];
|
|
511
|
+
reactData.selectRadioRow = row || null;
|
|
540
512
|
} else {
|
|
541
|
-
|
|
542
|
-
item,
|
|
543
|
-
index,
|
|
544
|
-
$index: -1,
|
|
545
|
-
_index: vtIndex
|
|
546
|
-
};
|
|
547
|
-
rowMaps[roweid] = rest;
|
|
513
|
+
reactData.selectRadioRow = null;
|
|
548
514
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
515
|
+
};
|
|
516
|
+
const updateCheckboxModeValue = () => {
|
|
517
|
+
const { checkRowKeys } = props;
|
|
518
|
+
const { fullKeyMaps } = internalData;
|
|
519
|
+
const keyField = computeKeyField.value;
|
|
520
|
+
const selectMaps = {};
|
|
521
|
+
if (checkRowKeys && checkRowKeys.length) {
|
|
522
|
+
for (const rowKey of checkRowKeys) {
|
|
523
|
+
const row = fullKeyMaps[rowKey];
|
|
524
|
+
if (row) {
|
|
525
|
+
const rowid = getRowIdByField(row, keyField);
|
|
526
|
+
selectMaps[rowid] = row;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
internalData.selectCheckboxMaps = selectMaps;
|
|
531
|
+
updateCheckboxStatus();
|
|
532
|
+
};
|
|
533
|
+
const updateAfterDataIndex = () => {
|
|
534
|
+
const { afterList, rowMaps } = internalData;
|
|
535
|
+
const keyField = computeKeyField.value;
|
|
536
|
+
let vtIndex = 0;
|
|
537
|
+
afterList.forEach((item, index) => {
|
|
538
|
+
const roweid = getRowIdByField(item, keyField);
|
|
539
|
+
const rowRest = rowMaps[roweid];
|
|
540
|
+
if (rowRest) {
|
|
541
|
+
rowRest._index = vtIndex;
|
|
542
|
+
} else {
|
|
543
|
+
const rest = {
|
|
544
|
+
item,
|
|
545
|
+
index,
|
|
546
|
+
$index: -1,
|
|
547
|
+
_index: vtIndex
|
|
548
|
+
};
|
|
549
|
+
rowMaps[roweid] = rest;
|
|
550
|
+
}
|
|
551
|
+
vtIndex++;
|
|
568
552
|
});
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
recalculate();
|
|
600
|
-
};
|
|
601
|
-
const clearRowDropOrigin = () => {
|
|
602
|
-
const el = refElem.value;
|
|
603
|
-
if (el) {
|
|
604
|
-
const clss = "row--drag-origin";
|
|
605
|
-
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
606
|
-
;
|
|
607
|
-
elem.draggable = false;
|
|
608
|
-
removeClass(elem, clss);
|
|
553
|
+
};
|
|
554
|
+
const cacheRowMap = () => {
|
|
555
|
+
const { fullData } = internalData;
|
|
556
|
+
const keyField = computeKeyField.value;
|
|
557
|
+
const keyMaps = {};
|
|
558
|
+
const rowMaps = {};
|
|
559
|
+
if (keyField) {
|
|
560
|
+
fullData.forEach((row, rowIndex) => {
|
|
561
|
+
const rowid = getRowIdByField(row, keyField);
|
|
562
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
563
|
+
keyMaps[rowKey] = row;
|
|
564
|
+
rowMaps[rowid] = {
|
|
565
|
+
item: row,
|
|
566
|
+
index: rowIndex,
|
|
567
|
+
$index: -1,
|
|
568
|
+
_index: -1
|
|
569
|
+
};
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
internalData.fullKeyMaps = keyMaps;
|
|
573
|
+
internalData.rowMaps = rowMaps;
|
|
574
|
+
};
|
|
575
|
+
const loadData = (datas) => {
|
|
576
|
+
const { scrollYStore } = internalData;
|
|
577
|
+
const sYOpts = computeSYOpts.value;
|
|
578
|
+
const fullData = datas ? datas.slice(0) : [];
|
|
579
|
+
Object.assign(scrollYStore, {
|
|
580
|
+
startIndex: 0,
|
|
581
|
+
endIndex: 1,
|
|
582
|
+
visibleSize: 0
|
|
609
583
|
});
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
584
|
+
internalData.fullData = fullData;
|
|
585
|
+
internalData.insertRowMaps = {};
|
|
586
|
+
reactData.insertRowFlag++;
|
|
587
|
+
internalData.removeRowMaps = {};
|
|
588
|
+
reactData.removeRowFlag++;
|
|
589
|
+
reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
|
|
590
|
+
cacheRowMap();
|
|
591
|
+
handleData(true);
|
|
592
|
+
updateRadioModeValue();
|
|
593
|
+
updateCheckboxModeValue();
|
|
594
|
+
return computeScrollLoad().then(() => {
|
|
595
|
+
refreshScroll();
|
|
621
596
|
});
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
const { dragRow } = reactData;
|
|
626
|
-
const dragOpts = computeDragOpts.value;
|
|
627
|
-
const { tooltipMethod } = dragOpts;
|
|
628
|
-
const rTooltipMethod = tooltipMethod;
|
|
629
|
-
let tipContent = "";
|
|
630
|
-
if (rTooltipMethod) {
|
|
631
|
-
const rtParams = {
|
|
632
|
-
$list: $xeList,
|
|
633
|
-
row: dragRow
|
|
634
|
-
};
|
|
635
|
-
tipContent = `${rTooltipMethod(rtParams) || ""}`;
|
|
636
|
-
} else {
|
|
637
|
-
tipContent = getI18n("vxe.list.dragTip", [rowEl.textContent || ""]);
|
|
638
|
-
}
|
|
639
|
-
reactData.dragTipText = tipContent;
|
|
640
|
-
};
|
|
641
|
-
const hideDropTip = () => {
|
|
642
|
-
const rdTipEl = refDragTipElem.value;
|
|
643
|
-
const rdLineEl = refDragRowLineElem.value;
|
|
644
|
-
if (rdTipEl) {
|
|
645
|
-
rdTipEl.style.display = "";
|
|
646
|
-
}
|
|
647
|
-
if (rdLineEl) {
|
|
648
|
-
rdLineEl.style.display = "";
|
|
649
|
-
}
|
|
650
|
-
};
|
|
651
|
-
const clearCrossListDragStatus = () => {
|
|
652
|
-
crossListDragRowObj = null;
|
|
653
|
-
crossListDragRowInfo.row = null;
|
|
654
|
-
};
|
|
655
|
-
const clearDragStatus = () => {
|
|
656
|
-
const { dragRow } = reactData;
|
|
657
|
-
if (dragRow) {
|
|
658
|
-
hideDropTip();
|
|
659
|
-
clearRowDropOrigin();
|
|
597
|
+
};
|
|
598
|
+
const handleRowDragEndClearStatus = () => {
|
|
599
|
+
clearRowDragData();
|
|
660
600
|
clearCrossListDragStatus();
|
|
661
|
-
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
601
|
+
recalculate();
|
|
602
|
+
};
|
|
603
|
+
const clearRowDropOrigin = () => {
|
|
604
|
+
const el = refElem.value;
|
|
605
|
+
if (el) {
|
|
606
|
+
const clss = "row--drag-origin";
|
|
607
|
+
XEUtils.arrayEach(el.querySelectorAll(`.${clss}`), (elem) => {
|
|
608
|
+
;
|
|
609
|
+
elem.draggable = false;
|
|
610
|
+
removeClass(elem, clss);
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
const updateRowDropOrigin = (row) => {
|
|
615
|
+
const sYOpts = computeSYOpts.value;
|
|
616
|
+
const { sItem } = sYOpts;
|
|
617
|
+
const el = refElem.value;
|
|
618
|
+
if (el) {
|
|
619
|
+
const clss = "row--drag-origin";
|
|
620
|
+
const rowid = getRowId(row);
|
|
621
|
+
XEUtils.arrayEach(el.querySelectorAll(`.vxe-list--row[rowid="${rowid}"]` + (sItem ? `${sItem}[rowid="${rowid}"]` : "")), (elem) => {
|
|
622
|
+
addClass(elem, clss);
|
|
623
|
+
});
|
|
624
|
+
}
|
|
625
|
+
};
|
|
626
|
+
const updateRowDropTipContent = (rowEl) => {
|
|
627
|
+
const { dragRow } = reactData;
|
|
628
|
+
const dragOpts = computeDragOpts.value;
|
|
629
|
+
const { tooltipMethod } = dragOpts;
|
|
630
|
+
const rTooltipMethod = tooltipMethod;
|
|
631
|
+
let tipContent = "";
|
|
632
|
+
if (rTooltipMethod) {
|
|
633
|
+
const rtParams = {
|
|
634
|
+
$list: $xeList,
|
|
635
|
+
row: dragRow
|
|
636
|
+
};
|
|
637
|
+
tipContent = `${rTooltipMethod(rtParams) || ""}`;
|
|
638
|
+
} else {
|
|
639
|
+
tipContent = getI18n("vxe.list.dragTip", [rowEl.textContent || ""]);
|
|
640
|
+
}
|
|
641
|
+
reactData.dragTipText = tipContent;
|
|
642
|
+
};
|
|
643
|
+
const hideDropTip = () => {
|
|
644
|
+
const rdTipEl = refDragTipElem.value;
|
|
703
645
|
const rdLineEl = refDragRowLineElem.value;
|
|
646
|
+
if (rdTipEl) {
|
|
647
|
+
rdTipEl.style.display = "";
|
|
648
|
+
}
|
|
704
649
|
if (rdLineEl) {
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
650
|
+
rdLineEl.style.display = "";
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
const clearCrossListDragStatus = () => {
|
|
654
|
+
crossListDragRowObj = null;
|
|
655
|
+
crossListDragRowInfo.row = null;
|
|
656
|
+
};
|
|
657
|
+
const clearDragStatus = () => {
|
|
658
|
+
const { dragRow } = reactData;
|
|
659
|
+
if (dragRow) {
|
|
660
|
+
hideDropTip();
|
|
661
|
+
clearRowDropOrigin();
|
|
662
|
+
clearCrossListDragStatus();
|
|
663
|
+
reactData.dragRow = null;
|
|
664
|
+
}
|
|
665
|
+
};
|
|
666
|
+
const handleRowDragMousedownEvent = (evnt, params) => {
|
|
667
|
+
evnt.stopPropagation();
|
|
668
|
+
const { row } = params;
|
|
669
|
+
const dragConfig = computeDragOpts.value;
|
|
670
|
+
const { isCrossListDrag, trigger, dragStartMethod } = dragConfig;
|
|
671
|
+
const dragEl = evnt.currentTarget;
|
|
672
|
+
const rowEl = trigger === "row" ? dragEl : dragEl.parentElement.parentElement;
|
|
673
|
+
clearRowDropOrigin();
|
|
674
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
675
|
+
rowEl.draggable = false;
|
|
676
|
+
reactData.dragRow = null;
|
|
677
|
+
hideDropTip();
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
680
|
+
if (isCrossListDrag) {
|
|
681
|
+
crossListDragRowInfo.row = row;
|
|
682
|
+
crossListDragRowObj = { $oldList: $xeList, $newList: null };
|
|
683
|
+
}
|
|
684
|
+
const dragstartEventParams = {
|
|
685
|
+
row
|
|
686
|
+
};
|
|
687
|
+
reactData.dragRow = row;
|
|
688
|
+
reactData.isCrossDragRow = false;
|
|
689
|
+
rowEl.draggable = true;
|
|
690
|
+
updateRowDropOrigin(row);
|
|
691
|
+
updateRowDropTipContent(rowEl);
|
|
692
|
+
dispatchEvent("row-dragstart", dragstartEventParams, evnt);
|
|
693
|
+
};
|
|
694
|
+
const handleRowDragMouseupEvent = () => {
|
|
695
|
+
clearDragStatus();
|
|
696
|
+
};
|
|
697
|
+
const showDropTip = (evnt, rowEl, showLine, dragPos) => {
|
|
698
|
+
const wrapperEl = refElem.value;
|
|
699
|
+
if (!wrapperEl) {
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
702
|
+
const wrapperRect = wrapperEl.getBoundingClientRect();
|
|
703
|
+
const wrapperHeight = wrapperEl.clientHeight;
|
|
704
|
+
if (rowEl) {
|
|
705
|
+
const rdLineEl = refDragRowLineElem.value;
|
|
706
|
+
if (rdLineEl) {
|
|
707
|
+
if (showLine) {
|
|
708
|
+
const trRect = rowEl.getBoundingClientRect();
|
|
709
|
+
let rowHeight = rowEl.clientHeight;
|
|
710
|
+
const offsetTop = Math.max(1, trRect.y - wrapperRect.y);
|
|
711
|
+
if (offsetTop + rowHeight > wrapperHeight) {
|
|
712
|
+
rowHeight = wrapperHeight - offsetTop;
|
|
713
|
+
}
|
|
714
|
+
rdLineEl.style.display = "block";
|
|
715
|
+
rdLineEl.style.top = `${offsetTop}px`;
|
|
716
|
+
rdLineEl.style.height = `${rowHeight}px`;
|
|
717
|
+
rdLineEl.setAttribute("drag-pos", dragPos);
|
|
718
|
+
} else {
|
|
719
|
+
rdLineEl.style.display = "";
|
|
711
720
|
}
|
|
712
|
-
rdLineEl.style.display = "block";
|
|
713
|
-
rdLineEl.style.top = `${offsetTop}px`;
|
|
714
|
-
rdLineEl.style.height = `${rowHeight}px`;
|
|
715
|
-
rdLineEl.setAttribute("drag-pos", dragPos);
|
|
716
|
-
} else {
|
|
717
|
-
rdLineEl.style.display = "";
|
|
718
721
|
}
|
|
719
722
|
}
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
status: false
|
|
746
|
-
};
|
|
747
|
-
if (!(el && prevDragRow && dragRow)) {
|
|
748
|
-
return Promise.resolve(errRest);
|
|
749
|
-
}
|
|
750
|
-
if (prevDragRow !== dragRow) {
|
|
751
|
-
const dragParams = {
|
|
752
|
-
oldRow: dragRow,
|
|
753
|
-
newRow: prevDragRow,
|
|
754
|
-
dragRow,
|
|
755
|
-
dragPos: prevDragPos,
|
|
756
|
-
offsetIndex: dragOffsetIndex
|
|
723
|
+
const rdTipEl = refDragTipElem.value;
|
|
724
|
+
if (rdTipEl) {
|
|
725
|
+
rdTipEl.style.display = "block";
|
|
726
|
+
rdTipEl.style.top = `${Math.min(wrapperEl.clientHeight - wrapperEl.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
|
|
727
|
+
rdTipEl.style.left = `${Math.min(wrapperEl.clientWidth - wrapperEl.scrollLeft - rdTipEl.clientWidth - 1, evnt.clientX - wrapperRect.x)}px`;
|
|
728
|
+
rdTipEl.setAttribute("drag-status", showLine ? "normal" : "disabled");
|
|
729
|
+
}
|
|
730
|
+
};
|
|
731
|
+
const clearRowDragData = () => {
|
|
732
|
+
const wrapperEl = refElem.value;
|
|
733
|
+
const dtClss = [".vxe-list--row"];
|
|
734
|
+
hideDropTip();
|
|
735
|
+
clearRowDropOrigin();
|
|
736
|
+
clearRowAnimate(wrapperEl, dtClss);
|
|
737
|
+
reactData.dragRow = null;
|
|
738
|
+
};
|
|
739
|
+
const handleRowDragSwapEvent = (evnt, dragRow, prevDragRow, prevDragPos) => {
|
|
740
|
+
const { fullData } = internalData;
|
|
741
|
+
const dragConfig = computeDragOpts.value;
|
|
742
|
+
const { animation, dragEndMethod } = dragConfig;
|
|
743
|
+
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
744
|
+
const dragOffsetIndex = prevDragPos === "bottom" ? 1 : 0;
|
|
745
|
+
const el = refElem.value;
|
|
746
|
+
const errRest = {
|
|
747
|
+
status: false
|
|
757
748
|
};
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
const newRowid = getRowKey(prevDragRow);
|
|
761
|
-
let dragRowHeight = 0;
|
|
762
|
-
let dragOffsetTop = -1;
|
|
763
|
-
if (animation) {
|
|
764
|
-
const prevRowEl = el.querySelector(`.vxe-list--row[rowid="${newRowid}"]`);
|
|
765
|
-
const oldRowEl = el.querySelector(`.vxe-list--row[rowid="${dragRowid}"]`);
|
|
766
|
-
const targetRowEl = prevRowEl || oldRowEl;
|
|
767
|
-
if (targetRowEl) {
|
|
768
|
-
dragRowHeight = targetRowEl.offsetHeight;
|
|
769
|
-
}
|
|
770
|
-
if (oldRowEl) {
|
|
771
|
-
dragOffsetTop = oldRowEl.offsetTop;
|
|
772
|
-
}
|
|
749
|
+
if (!(el && prevDragRow && dragRow)) {
|
|
750
|
+
return Promise.resolve(errRest);
|
|
773
751
|
}
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
const
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
const
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
newIndex: nafIndex,
|
|
798
|
-
oldIndex: oafIndex
|
|
799
|
-
}
|
|
800
|
-
};
|
|
801
|
-
dispatchEvent("row-dragend", dragendEventParams, evnt);
|
|
752
|
+
if (prevDragRow !== dragRow) {
|
|
753
|
+
const dragParams = {
|
|
754
|
+
oldRow: dragRow,
|
|
755
|
+
newRow: prevDragRow,
|
|
756
|
+
dragRow,
|
|
757
|
+
dragPos: prevDragPos,
|
|
758
|
+
offsetIndex: dragOffsetIndex
|
|
759
|
+
};
|
|
760
|
+
const dragRowid = getRowId(dragRow);
|
|
761
|
+
const _dragRowIndex = findRowIndexOfByKey(fullData, dragRowid);
|
|
762
|
+
const newRowid = getRowKey(prevDragRow);
|
|
763
|
+
let dragRowHeight = 0;
|
|
764
|
+
let dragOffsetTop = -1;
|
|
765
|
+
if (animation) {
|
|
766
|
+
const prevRowEl = el.querySelector(`.vxe-list--row[rowid="${newRowid}"]`);
|
|
767
|
+
const oldRowEl = el.querySelector(`.vxe-list--row[rowid="${dragRowid}"]`);
|
|
768
|
+
const targetRowEl = prevRowEl || oldRowEl;
|
|
769
|
+
if (targetRowEl) {
|
|
770
|
+
dragRowHeight = targetRowEl.offsetHeight;
|
|
771
|
+
}
|
|
772
|
+
if (oldRowEl) {
|
|
773
|
+
dragOffsetTop = oldRowEl.offsetTop;
|
|
774
|
+
}
|
|
802
775
|
}
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
776
|
+
let oafIndex = -1;
|
|
777
|
+
let nafIndex = -1;
|
|
778
|
+
return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then((status) => {
|
|
779
|
+
if (!status) {
|
|
780
|
+
return errRest;
|
|
781
|
+
}
|
|
782
|
+
oafIndex = findRowIndexOf(fullData, dragRow);
|
|
783
|
+
fullData.splice(oafIndex, 1);
|
|
784
|
+
const pafIndex = findRowIndexOf(fullData, prevDragRow);
|
|
785
|
+
nafIndex = pafIndex + dragOffsetIndex;
|
|
786
|
+
fullData.splice(nafIndex, 0, dragRow);
|
|
787
|
+
handleData();
|
|
788
|
+
if (reactData.scrollYLoad) {
|
|
789
|
+
updateYSpace();
|
|
790
|
+
}
|
|
791
|
+
if (evnt) {
|
|
792
|
+
const dragendEventParams = {
|
|
793
|
+
oldRow: dragRow,
|
|
794
|
+
newRow: prevDragRow,
|
|
795
|
+
dragRow,
|
|
796
|
+
dragPos: prevDragPos,
|
|
797
|
+
offsetIndex: dragOffsetIndex,
|
|
798
|
+
_index: {
|
|
799
|
+
newIndex: nafIndex,
|
|
800
|
+
oldIndex: oafIndex
|
|
801
|
+
}
|
|
802
|
+
};
|
|
803
|
+
dispatchEvent("row-dragend", dragendEventParams, evnt);
|
|
804
|
+
}
|
|
805
|
+
return nextTick().then(() => {
|
|
806
|
+
if (animation) {
|
|
807
|
+
const { rowList } = reactData;
|
|
808
|
+
const { fullData: fullData2 } = internalData;
|
|
809
|
+
const _newRowIndex = findRowIndexOfByKey(fullData2, dragRowid);
|
|
810
|
+
const firstRow = fullData2[0];
|
|
811
|
+
const _firstRowIndex = findRowIndexOf(fullData2, firstRow);
|
|
812
|
+
const wrapperEl = el;
|
|
813
|
+
if (_firstRowIndex > -1) {
|
|
814
|
+
const _lastRowIndex = _firstRowIndex + fullData2.length;
|
|
815
|
+
let rsIndex = -1;
|
|
816
|
+
let reIndex = -1;
|
|
817
|
+
let offsetRate = 1;
|
|
818
|
+
if (_dragRowIndex < _firstRowIndex) {
|
|
819
|
+
rsIndex = 0;
|
|
820
|
+
reIndex = _newRowIndex - _firstRowIndex;
|
|
821
|
+
} else if (_dragRowIndex > _lastRowIndex) {
|
|
822
|
+
const $newRowIndex = findRowIndexOfByKey(rowList, dragRowid);
|
|
823
|
+
rsIndex = $newRowIndex + 1;
|
|
824
|
+
reIndex = fullData2.length;
|
|
831
825
|
offsetRate = -1;
|
|
826
|
+
} else {
|
|
827
|
+
if (_newRowIndex > _dragRowIndex) {
|
|
828
|
+
rsIndex = _dragRowIndex - _firstRowIndex;
|
|
829
|
+
reIndex = rsIndex + _newRowIndex - _dragRowIndex;
|
|
830
|
+
} else {
|
|
831
|
+
rsIndex = _newRowIndex - _firstRowIndex;
|
|
832
|
+
reIndex = rsIndex + _dragRowIndex - _newRowIndex + 1;
|
|
833
|
+
offsetRate = -1;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
const dragRangeList = fullData2.slice(rsIndex, reIndex);
|
|
837
|
+
if (dragRangeList.length) {
|
|
838
|
+
const dtClss = [];
|
|
839
|
+
dragRangeList.forEach((obj) => {
|
|
840
|
+
const rowid = getRowId(obj);
|
|
841
|
+
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
842
|
+
});
|
|
843
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(","));
|
|
844
|
+
moveRowAnimateToTb(dtTrList, offsetRate * dragRowHeight);
|
|
832
845
|
}
|
|
833
846
|
}
|
|
834
|
-
const
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
840
|
-
});
|
|
841
|
-
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(","));
|
|
842
|
-
moveRowAnimateToTb(dtTrList, offsetRate * dragRowHeight);
|
|
847
|
+
const drClss = [`.vxe-list--row[rowid="${dragRowid}"]`];
|
|
848
|
+
const newDtTrList = wrapperEl.querySelectorAll(drClss.join(","));
|
|
849
|
+
const newTrEl = newDtTrList[0];
|
|
850
|
+
if (dragOffsetTop > -1 && newTrEl) {
|
|
851
|
+
moveRowAnimateToTb(newDtTrList, dragOffsetTop - newTrEl.offsetTop);
|
|
843
852
|
}
|
|
844
853
|
}
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
}).then(() => {
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
854
|
+
recalculate();
|
|
855
|
+
}).then(() => {
|
|
856
|
+
return {
|
|
857
|
+
status: true
|
|
858
|
+
};
|
|
859
|
+
});
|
|
860
|
+
}).catch(() => {
|
|
861
|
+
return errRest;
|
|
862
|
+
}).then((rest) => {
|
|
863
|
+
clearRowDragData();
|
|
864
|
+
clearCrossListDragStatus();
|
|
865
|
+
return rest;
|
|
857
866
|
});
|
|
858
|
-
}).catch(() => {
|
|
859
|
-
return errRest;
|
|
860
|
-
}).then((rest) => {
|
|
861
|
-
clearRowDragData();
|
|
862
|
-
clearCrossListDragStatus();
|
|
863
|
-
return rest;
|
|
864
|
-
});
|
|
865
|
-
}
|
|
866
|
-
clearRowDragData();
|
|
867
|
-
clearCrossListDragStatus();
|
|
868
|
-
return Promise.resolve(errRest);
|
|
869
|
-
};
|
|
870
|
-
const handleRowDragDragstartEvent = (evnt) => {
|
|
871
|
-
if (evnt.dataTransfer) {
|
|
872
|
-
evnt.dataTransfer.setDragImage(getTpImg(), 0, 0);
|
|
873
|
-
}
|
|
874
|
-
};
|
|
875
|
-
const handleRowDragDragendEvent = (evnt) => {
|
|
876
|
-
const { dragRow } = reactData;
|
|
877
|
-
const { prevDragRow, prevDragPos } = internalData;
|
|
878
|
-
const dragConfig = computeDragOpts.value;
|
|
879
|
-
const { isCrossListDrag } = dragConfig;
|
|
880
|
-
if (isCrossListDrag && crossListDragRowObj) {
|
|
881
|
-
const { $newList } = crossListDragRowObj;
|
|
882
|
-
if ($newList && $newList.xID !== $xeList.xID) {
|
|
883
|
-
$newList.handleCrossListRowDragInsertEvent(evnt);
|
|
884
|
-
return;
|
|
885
867
|
}
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
const
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
if (row) {
|
|
901
|
-
evnt.preventDefault();
|
|
902
|
-
const offsetY = evnt.clientY - rowEl.getBoundingClientRect().y;
|
|
903
|
-
const dragPos = offsetY < rowEl.clientHeight / 2 ? "top" : "bottom";
|
|
904
|
-
internalData.prevDragRow = row;
|
|
905
|
-
internalData.prevDragPos = dragPos;
|
|
868
|
+
clearRowDragData();
|
|
869
|
+
clearCrossListDragStatus();
|
|
870
|
+
return Promise.resolve(errRest);
|
|
871
|
+
};
|
|
872
|
+
const handleRowDragDragstartEvent = (evnt) => {
|
|
873
|
+
if (evnt.dataTransfer) {
|
|
874
|
+
evnt.dataTransfer.setDragImage(getTpImg(), 0, 0);
|
|
875
|
+
}
|
|
876
|
+
};
|
|
877
|
+
const handleRowDragDragendEvent = (evnt) => {
|
|
878
|
+
const { dragRow } = reactData;
|
|
879
|
+
const { prevDragRow, prevDragPos } = internalData;
|
|
880
|
+
const dragConfig = computeDragOpts.value;
|
|
881
|
+
const { isCrossListDrag } = dragConfig;
|
|
906
882
|
if (isCrossListDrag && crossListDragRowObj) {
|
|
907
|
-
const { $
|
|
908
|
-
if ($
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
883
|
+
const { $newList } = crossListDragRowObj;
|
|
884
|
+
if ($newList && $newList.xID !== $xeList.xID) {
|
|
885
|
+
$newList.handleCrossListRowDragInsertEvent(evnt);
|
|
886
|
+
return;
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
handleRowDragSwapEvent(evnt, dragRow, prevDragRow, prevDragPos);
|
|
890
|
+
};
|
|
891
|
+
const handleRowDragDragoverEvent = (evnt) => {
|
|
892
|
+
const { dragRow } = reactData;
|
|
893
|
+
const { fullData } = internalData;
|
|
894
|
+
const dragConfig = computeDragOpts.value;
|
|
895
|
+
const { isCrossListDrag } = dragConfig;
|
|
896
|
+
if (!dragRow) {
|
|
897
|
+
evnt.preventDefault();
|
|
898
|
+
}
|
|
899
|
+
const rowEl = evnt.currentTarget;
|
|
900
|
+
const rowid = rowEl.getAttribute("rowid") || "";
|
|
901
|
+
const row = findRowByKey(fullData, rowid);
|
|
902
|
+
if (row) {
|
|
903
|
+
evnt.preventDefault();
|
|
904
|
+
const offsetY = evnt.clientY - rowEl.getBoundingClientRect().y;
|
|
905
|
+
const dragPos = offsetY < rowEl.clientHeight / 2 ? "top" : "bottom";
|
|
906
|
+
internalData.prevDragRow = row;
|
|
907
|
+
internalData.prevDragPos = dragPos;
|
|
908
|
+
if (isCrossListDrag && crossListDragRowObj) {
|
|
909
|
+
const { $oldList, $newList } = crossListDragRowObj;
|
|
910
|
+
if ($oldList) {
|
|
911
|
+
const oldListReactData = $oldList.reactData;
|
|
912
|
+
if ($oldList.xID === $xeList.xID) {
|
|
913
|
+
if ($newList) {
|
|
914
|
+
$newList.hideCrossListRowDropClearStatus();
|
|
915
|
+
}
|
|
916
|
+
reactData.isCrossDragRow = false;
|
|
917
|
+
oldListReactData.isCrossDragRow = false;
|
|
918
|
+
crossListDragRowObj.$newList = null;
|
|
919
|
+
} else {
|
|
920
|
+
if ($newList && $newList.xID !== $xeList.xID) {
|
|
921
|
+
$newList.hideCrossListRowDropClearStatus();
|
|
922
|
+
}
|
|
923
|
+
$oldList.hideCrossListRowDropClearStatus();
|
|
924
|
+
oldListReactData.isCrossDragRow = true;
|
|
925
|
+
reactData.dragTipText = oldListReactData.dragTipText;
|
|
926
|
+
crossListDragRowObj.$newList = $xeList;
|
|
927
|
+
showDropTip(evnt, rowEl, true, dragPos);
|
|
928
|
+
return;
|
|
920
929
|
}
|
|
921
|
-
$oldList.hideCrossListRowDropClearStatus();
|
|
922
|
-
oldListReactData.isCrossDragRow = true;
|
|
923
|
-
reactData.dragTipText = oldListReactData.dragTipText;
|
|
924
|
-
crossListDragRowObj.$newList = $xeList;
|
|
925
|
-
showDropTip(evnt, rowEl, true, dragPos);
|
|
926
|
-
return;
|
|
927
930
|
}
|
|
928
931
|
}
|
|
932
|
+
if (dragRow && getRowId(dragRow) === rowid) {
|
|
933
|
+
showDropTip(evnt, rowEl, false, dragPos);
|
|
934
|
+
return;
|
|
935
|
+
}
|
|
936
|
+
const dragOffsetIndex = dragPos === "bottom" ? 1 : 0;
|
|
937
|
+
const offsetIndex = dragOffsetIndex;
|
|
938
|
+
const dragoverEventParams = {
|
|
939
|
+
oldRow: dragRow,
|
|
940
|
+
targetRow: row,
|
|
941
|
+
dragPos,
|
|
942
|
+
dragRow,
|
|
943
|
+
offsetIndex
|
|
944
|
+
};
|
|
945
|
+
showDropTip(evnt, rowEl, true, dragPos);
|
|
946
|
+
dispatchEvent("row-dragover", dragoverEventParams, evnt);
|
|
929
947
|
}
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
948
|
+
};
|
|
949
|
+
const handleRowMousedownEvent = (evnt, row) => {
|
|
950
|
+
const dragConfig = computeDragOpts.value;
|
|
951
|
+
const isDrag = computeIsDrag.value;
|
|
952
|
+
const { trigger, disabledMethod } = dragConfig;
|
|
953
|
+
let isRowDrag = false;
|
|
954
|
+
if (isDrag) {
|
|
955
|
+
isRowDrag = trigger === "row";
|
|
933
956
|
}
|
|
934
|
-
const
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
const
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
}
|
|
981
|
-
if (showCheckbox && checkboxOpts.trigger === "row") {
|
|
982
|
-
triggerCheckbox = true;
|
|
983
|
-
changeCheckboxEvent(evnt, row);
|
|
984
|
-
}
|
|
985
|
-
dispatchEvent("row-click", { row, triggerCurrent, triggerRadio, triggerCheckbox }, evnt);
|
|
986
|
-
};
|
|
987
|
-
const handleRowDblclickEvent = (evnt, row) => {
|
|
988
|
-
dispatchEvent("row-dblclick", { row }, evnt);
|
|
989
|
-
};
|
|
990
|
-
const getRowKey = (row) => {
|
|
991
|
-
const keyField = computeKeyField.value;
|
|
992
|
-
return getRowKeyByField(row, keyField);
|
|
993
|
-
};
|
|
994
|
-
const eqRowKey = (rowKey1, rowKey2) => {
|
|
995
|
-
return "" + rowKey1 === "" + rowKey2;
|
|
996
|
-
};
|
|
997
|
-
const eqRow = (row1, row2) => {
|
|
998
|
-
if (row1 && row2) {
|
|
999
|
-
if (row1 === row2) {
|
|
1000
|
-
return true;
|
|
1001
|
-
}
|
|
1002
|
-
return eqRowKey(getRowId(row1), getRowId(row2));
|
|
1003
|
-
}
|
|
1004
|
-
return false;
|
|
1005
|
-
};
|
|
1006
|
-
const eqRowByKey = (row, rowKey) => {
|
|
1007
|
-
return row && eqRowKey(getRowKey(row), rowKey);
|
|
1008
|
-
};
|
|
1009
|
-
const findRow = (list, row) => {
|
|
1010
|
-
return row ? XEUtils.find(list, (obj) => eqRow(obj, row)) : null;
|
|
1011
|
-
};
|
|
1012
|
-
const findRowByKey = (list, rowKey) => {
|
|
1013
|
-
const keyField = computeKeyField.value;
|
|
1014
|
-
return XEUtils.find(list, (obj) => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
1015
|
-
};
|
|
1016
|
-
const findRowIndexOf = (list, row) => {
|
|
1017
|
-
return row ? XEUtils.findIndexOf(list, (obj) => eqRow(obj, row)) : -1;
|
|
1018
|
-
};
|
|
1019
|
-
const findRowIndexOfByKey = (list, rowKey) => {
|
|
1020
|
-
const keyField = computeKeyField.value;
|
|
1021
|
-
return XEUtils.findIndexOf(list, (obj) => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
1022
|
-
};
|
|
1023
|
-
const isCheckedByRadioRowKey = (rowKey) => {
|
|
1024
|
-
const { selectRadioRow } = reactData;
|
|
1025
|
-
return getRowKey(selectRadioRow) === rowKey;
|
|
1026
|
-
};
|
|
1027
|
-
const isCheckedByRadioRow = (row) => {
|
|
1028
|
-
return isCheckedByRadioRowKey(getRowKey(row));
|
|
1029
|
-
};
|
|
1030
|
-
const isCheckedByCheckboxRowKey = (rowid) => {
|
|
1031
|
-
const { updateCheckboxFlag } = reactData;
|
|
1032
|
-
const { selectCheckboxMaps } = internalData;
|
|
1033
|
-
return !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
1034
|
-
};
|
|
1035
|
-
const isCheckedByCheckboxRow = (row) => {
|
|
1036
|
-
return isCheckedByCheckboxRowKey(getRowKey(row));
|
|
1037
|
-
};
|
|
1038
|
-
const setCurrentRow = (row) => {
|
|
1039
|
-
internalData.currentRow = row;
|
|
1040
|
-
reactData.currRowFlag++;
|
|
1041
|
-
return nextTick();
|
|
1042
|
-
};
|
|
1043
|
-
const setCurrentRowByKey = (rowKey) => {
|
|
1044
|
-
const { fullData } = internalData;
|
|
1045
|
-
internalData.currentRow = findRowByKey(fullData, rowKey);
|
|
1046
|
-
reactData.currRowFlag++;
|
|
1047
|
-
return nextTick();
|
|
1048
|
-
};
|
|
1049
|
-
const getCurrentRow = () => {
|
|
1050
|
-
const { currentRow } = internalData;
|
|
1051
|
-
return currentRow;
|
|
1052
|
-
};
|
|
1053
|
-
const getCurrentRowKey = () => {
|
|
1054
|
-
const { currentRow } = internalData;
|
|
1055
|
-
return currentRow ? getRowKey(currentRow) : null;
|
|
1056
|
-
};
|
|
1057
|
-
const clearCurrentRow = () => {
|
|
1058
|
-
internalData.currentRow = null;
|
|
1059
|
-
reactData.currRowFlag++;
|
|
1060
|
-
return nextTick();
|
|
1061
|
-
};
|
|
1062
|
-
const setRadioRow = (row) => {
|
|
1063
|
-
reactData.selectRadioRow = row;
|
|
1064
|
-
const value = getRowKey(row);
|
|
1065
|
-
emitRadioMode(value);
|
|
1066
|
-
return nextTick();
|
|
1067
|
-
};
|
|
1068
|
-
const setRadioRowByKey = (rowKey) => {
|
|
1069
|
-
const { fullData } = internalData;
|
|
1070
|
-
reactData.selectRadioRow = findRowByKey(fullData, rowKey);
|
|
1071
|
-
const value = rowKey;
|
|
1072
|
-
emitRadioMode(value);
|
|
1073
|
-
return nextTick();
|
|
1074
|
-
};
|
|
1075
|
-
const getRadioRow = () => {
|
|
1076
|
-
const { selectRadioRow } = reactData;
|
|
1077
|
-
return selectRadioRow;
|
|
1078
|
-
};
|
|
1079
|
-
const getRadioRowKey = () => {
|
|
1080
|
-
const { selectRadioRow } = reactData;
|
|
1081
|
-
return selectRadioRow ? getRowKey(selectRadioRow) : null;
|
|
1082
|
-
};
|
|
1083
|
-
const clearRadioRow = () => {
|
|
1084
|
-
const value = null;
|
|
1085
|
-
reactData.selectRadioRow = value;
|
|
1086
|
-
emitRadioMode(value);
|
|
1087
|
-
return nextTick();
|
|
1088
|
-
};
|
|
1089
|
-
const setCheckboxRow = (row, checked) => {
|
|
1090
|
-
const { selectCheckboxMaps } = internalData;
|
|
1091
|
-
const keyField = computeKeyField.value;
|
|
1092
|
-
const rowList = row ? XEUtils.isArray(row) ? row : [row] : [];
|
|
1093
|
-
rowList.forEach(
|
|
1094
|
-
checked ? (obj) => {
|
|
1095
|
-
const rowid = getRowIdByField(obj, keyField);
|
|
1096
|
-
if (!selectCheckboxMaps[rowid]) {
|
|
1097
|
-
selectCheckboxMaps[rowid] = obj;
|
|
1098
|
-
}
|
|
1099
|
-
} : (obj) => {
|
|
1100
|
-
const rowid = getRowIdByField(obj, keyField);
|
|
1101
|
-
if (selectCheckboxMaps[rowid]) {
|
|
1102
|
-
delete selectCheckboxMaps[rowid];
|
|
957
|
+
const params = { row, $list: $xeList };
|
|
958
|
+
if (isRowDrag && !(disabledMethod && disabledMethod(params))) {
|
|
959
|
+
handleRowDragMousedownEvent(evnt, params);
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
const handleRowClickEvent = (evnt, row) => {
|
|
963
|
+
const { showRadio, showCheckbox } = props;
|
|
964
|
+
const { currentRow } = internalData;
|
|
965
|
+
const radioOpts = computeRadioOpts.value;
|
|
966
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
967
|
+
const rowOpts = computeRowOpts.value;
|
|
968
|
+
const { isCurrent } = rowOpts;
|
|
969
|
+
let triggerCurrent = false;
|
|
970
|
+
let triggerRadio = false;
|
|
971
|
+
let triggerCheckbox = false;
|
|
972
|
+
if (isCurrent) {
|
|
973
|
+
triggerCurrent = true;
|
|
974
|
+
changeCurrentEvent(evnt, row);
|
|
975
|
+
} else if (currentRow) {
|
|
976
|
+
internalData.currentRow = null;
|
|
977
|
+
reactData.currRowFlag++;
|
|
978
|
+
}
|
|
979
|
+
if (showRadio && radioOpts.trigger === "row") {
|
|
980
|
+
triggerRadio = true;
|
|
981
|
+
changeRadioEvent(evnt, row);
|
|
982
|
+
}
|
|
983
|
+
if (showCheckbox && checkboxOpts.trigger === "row") {
|
|
984
|
+
triggerCheckbox = true;
|
|
985
|
+
changeCheckboxEvent(evnt, row);
|
|
986
|
+
}
|
|
987
|
+
dispatchEvent("row-click", { row, triggerCurrent, triggerRadio, triggerCheckbox }, evnt);
|
|
988
|
+
};
|
|
989
|
+
const handleRowDblclickEvent = (evnt, row) => {
|
|
990
|
+
dispatchEvent("row-dblclick", { row }, evnt);
|
|
991
|
+
};
|
|
992
|
+
const getRowKey = (row) => {
|
|
993
|
+
const keyField = computeKeyField.value;
|
|
994
|
+
return getRowKeyByField(row, keyField);
|
|
995
|
+
};
|
|
996
|
+
const eqRowKey = (rowKey1, rowKey2) => {
|
|
997
|
+
return "" + rowKey1 === "" + rowKey2;
|
|
998
|
+
};
|
|
999
|
+
const eqRow = (row1, row2) => {
|
|
1000
|
+
if (row1 && row2) {
|
|
1001
|
+
if (row1 === row2) {
|
|
1002
|
+
return true;
|
|
1103
1003
|
}
|
|
1004
|
+
return eqRowKey(getRowId(row1), getRowId(row2));
|
|
1104
1005
|
}
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
const
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1006
|
+
return false;
|
|
1007
|
+
};
|
|
1008
|
+
const eqRowByKey = (row, rowKey) => {
|
|
1009
|
+
return row && eqRowKey(getRowKey(row), rowKey);
|
|
1010
|
+
};
|
|
1011
|
+
const findRow = (list, row) => {
|
|
1012
|
+
return row ? XEUtils.find(list, (obj) => eqRow(obj, row)) : null;
|
|
1013
|
+
};
|
|
1014
|
+
const findRowByKey = (list, rowKey) => {
|
|
1015
|
+
const keyField = computeKeyField.value;
|
|
1016
|
+
return XEUtils.find(list, (obj) => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
1017
|
+
};
|
|
1018
|
+
const findRowIndexOf = (list, row) => {
|
|
1019
|
+
return row ? XEUtils.findIndexOf(list, (obj) => eqRow(obj, row)) : -1;
|
|
1020
|
+
};
|
|
1021
|
+
const findRowIndexOfByKey = (list, rowKey) => {
|
|
1022
|
+
const keyField = computeKeyField.value;
|
|
1023
|
+
return XEUtils.findIndexOf(list, (obj) => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
1024
|
+
};
|
|
1025
|
+
const isCheckedByRadioRowKey = (rowKey) => {
|
|
1026
|
+
const { selectRadioRow } = reactData;
|
|
1027
|
+
return getRowKey(selectRadioRow) === rowKey;
|
|
1028
|
+
};
|
|
1029
|
+
const isCheckedByRadioRow = (row) => {
|
|
1030
|
+
return isCheckedByRadioRowKey(getRowKey(row));
|
|
1031
|
+
};
|
|
1032
|
+
const isCheckedByCheckboxRowKey = (rowid) => {
|
|
1033
|
+
const { updateCheckboxFlag } = reactData;
|
|
1034
|
+
const { selectCheckboxMaps } = internalData;
|
|
1035
|
+
return !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
1036
|
+
};
|
|
1037
|
+
const isCheckedByCheckboxRow = (row) => {
|
|
1038
|
+
return isCheckedByCheckboxRowKey(getRowKey(row));
|
|
1039
|
+
};
|
|
1040
|
+
const setCurrentRow = (row) => {
|
|
1041
|
+
internalData.currentRow = row;
|
|
1042
|
+
reactData.currRowFlag++;
|
|
1043
|
+
return nextTick();
|
|
1044
|
+
};
|
|
1045
|
+
const setCurrentRowByKey = (rowKey) => {
|
|
1046
|
+
const { fullData } = internalData;
|
|
1047
|
+
internalData.currentRow = findRowByKey(fullData, rowKey);
|
|
1048
|
+
reactData.currRowFlag++;
|
|
1049
|
+
return nextTick();
|
|
1050
|
+
};
|
|
1051
|
+
const getCurrentRow = () => {
|
|
1052
|
+
const { currentRow } = internalData;
|
|
1053
|
+
return currentRow;
|
|
1054
|
+
};
|
|
1055
|
+
const getCurrentRowKey = () => {
|
|
1056
|
+
const { currentRow } = internalData;
|
|
1057
|
+
return currentRow ? getRowKey(currentRow) : null;
|
|
1058
|
+
};
|
|
1059
|
+
const clearCurrentRow = () => {
|
|
1060
|
+
internalData.currentRow = null;
|
|
1061
|
+
reactData.currRowFlag++;
|
|
1062
|
+
return nextTick();
|
|
1063
|
+
};
|
|
1064
|
+
const setRadioRow = (row) => {
|
|
1065
|
+
reactData.selectRadioRow = row;
|
|
1066
|
+
const value = getRowKey(row);
|
|
1067
|
+
emitRadioMode(value);
|
|
1068
|
+
return nextTick();
|
|
1069
|
+
};
|
|
1070
|
+
const setRadioRowByKey = (rowKey) => {
|
|
1071
|
+
const { fullData } = internalData;
|
|
1072
|
+
reactData.selectRadioRow = findRowByKey(fullData, rowKey);
|
|
1073
|
+
const value = rowKey;
|
|
1074
|
+
emitRadioMode(value);
|
|
1075
|
+
return nextTick();
|
|
1076
|
+
};
|
|
1077
|
+
const getRadioRow = () => {
|
|
1078
|
+
const { selectRadioRow } = reactData;
|
|
1079
|
+
return selectRadioRow;
|
|
1080
|
+
};
|
|
1081
|
+
const getRadioRowKey = () => {
|
|
1082
|
+
const { selectRadioRow } = reactData;
|
|
1083
|
+
return selectRadioRow ? getRowKey(selectRadioRow) : null;
|
|
1084
|
+
};
|
|
1085
|
+
const clearRadioRow = () => {
|
|
1086
|
+
const value = null;
|
|
1087
|
+
reactData.selectRadioRow = value;
|
|
1088
|
+
emitRadioMode(value);
|
|
1089
|
+
return nextTick();
|
|
1090
|
+
};
|
|
1091
|
+
const setCheckboxRow = (row, checked) => {
|
|
1092
|
+
const { selectCheckboxMaps } = internalData;
|
|
1093
|
+
const keyField = computeKeyField.value;
|
|
1094
|
+
const rowList = row ? XEUtils.isArray(row) ? row : [row] : [];
|
|
1095
|
+
rowList.forEach(
|
|
1096
|
+
checked ? (obj) => {
|
|
1097
|
+
const rowid = getRowIdByField(obj, keyField);
|
|
1098
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
1099
|
+
selectCheckboxMaps[rowid] = obj;
|
|
1121
1100
|
}
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
const row = fullKeyMaps[key || ""];
|
|
1125
|
-
if (row) {
|
|
1126
|
-
const rowid = getRowIdByField(row, keyField);
|
|
1101
|
+
} : (obj) => {
|
|
1102
|
+
const rowid = getRowIdByField(obj, keyField);
|
|
1127
1103
|
if (selectCheckboxMaps[rowid]) {
|
|
1128
1104
|
delete selectCheckboxMaps[rowid];
|
|
1129
1105
|
}
|
|
1130
1106
|
}
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1107
|
+
);
|
|
1108
|
+
const value = getCheckboxRowKeys();
|
|
1109
|
+
emitCheckboxMode(value);
|
|
1110
|
+
return updateCheckboxStatus();
|
|
1111
|
+
};
|
|
1112
|
+
const setCheckboxRowByKey = (rowKey, checked) => {
|
|
1113
|
+
const { selectCheckboxMaps, fullKeyMaps } = internalData;
|
|
1114
|
+
const keyField = computeKeyField.value;
|
|
1115
|
+
const rowKeys = rowKey ? XEUtils.isArray(rowKey) ? rowKey : [rowKey] : [];
|
|
1116
|
+
rowKeys.forEach(
|
|
1117
|
+
checked ? (key) => {
|
|
1118
|
+
const row = fullKeyMaps[key || ""];
|
|
1119
|
+
if (row) {
|
|
1120
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1121
|
+
if (row && !selectCheckboxMaps[rowid]) {
|
|
1122
|
+
selectCheckboxMaps[rowid] = row;
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
} : (key) => {
|
|
1126
|
+
const row = fullKeyMaps[key || ""];
|
|
1127
|
+
if (row) {
|
|
1128
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1129
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1130
|
+
delete selectCheckboxMaps[rowid];
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1145
1133
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
const
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1134
|
+
);
|
|
1135
|
+
const value = getCheckboxRowKeys();
|
|
1136
|
+
emitCheckboxMode(value);
|
|
1137
|
+
return updateCheckboxStatus();
|
|
1138
|
+
};
|
|
1139
|
+
const getCheckboxRecords = () => {
|
|
1140
|
+
const { updateCheckboxFlag } = reactData;
|
|
1141
|
+
const { selectCheckboxMaps } = internalData;
|
|
1142
|
+
const rowList = [];
|
|
1143
|
+
if (updateCheckboxFlag) {
|
|
1144
|
+
XEUtils.each(selectCheckboxMaps, (row) => {
|
|
1145
|
+
if (row) {
|
|
1146
|
+
rowList.push(row);
|
|
1147
|
+
}
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
1150
|
+
return rowList;
|
|
1151
|
+
};
|
|
1152
|
+
const getCheckboxRowKeys = () => {
|
|
1153
|
+
const { updateCheckboxFlag } = reactData;
|
|
1154
|
+
const { selectCheckboxMaps } = internalData;
|
|
1155
|
+
const keyField = computeKeyField.value;
|
|
1156
|
+
const rowKeys = [];
|
|
1157
|
+
if (updateCheckboxFlag) {
|
|
1158
|
+
XEUtils.each(selectCheckboxMaps, (row) => {
|
|
1159
|
+
if (row) {
|
|
1160
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
1161
|
+
rowKeys.push(rowKey);
|
|
1162
|
+
}
|
|
1163
|
+
});
|
|
1164
|
+
}
|
|
1165
|
+
return rowKeys;
|
|
1166
|
+
};
|
|
1167
|
+
const clearCheckboxRow = () => {
|
|
1168
|
+
internalData.selectCheckboxMaps = {};
|
|
1169
|
+
reactData.updateCheckboxFlag++;
|
|
1170
|
+
reactData.isAllChecked = false;
|
|
1171
|
+
reactData.isAllIndeterminate = false;
|
|
1172
|
+
const value = [];
|
|
1173
|
+
emitCheckboxMode(value);
|
|
1174
|
+
return nextTick();
|
|
1175
|
+
};
|
|
1176
|
+
const setAllCheckboxRow = (checked) => {
|
|
1177
|
+
const { fullData, selectCheckboxMaps } = internalData;
|
|
1178
|
+
const keyField = computeKeyField.value;
|
|
1179
|
+
if (checked) {
|
|
1180
|
+
const value = [];
|
|
1181
|
+
for (const row of fullData) {
|
|
1158
1182
|
const rowKey = getRowKeyByField(row, keyField);
|
|
1159
|
-
|
|
1183
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1184
|
+
selectCheckboxMaps[rowid] = row;
|
|
1185
|
+
value.push(rowKey);
|
|
1160
1186
|
}
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
return rowKeys;
|
|
1164
|
-
};
|
|
1165
|
-
const clearCheckboxRow = () => {
|
|
1166
|
-
internalData.selectCheckboxMaps = {};
|
|
1167
|
-
reactData.updateCheckboxFlag++;
|
|
1168
|
-
reactData.isAllChecked = false;
|
|
1169
|
-
reactData.isAllIndeterminate = false;
|
|
1170
|
-
const value = [];
|
|
1171
|
-
emitCheckboxMode(value);
|
|
1172
|
-
return nextTick();
|
|
1173
|
-
};
|
|
1174
|
-
const setAllCheckboxRow = (checked) => {
|
|
1175
|
-
const { fullData, selectCheckboxMaps } = internalData;
|
|
1176
|
-
const keyField = computeKeyField.value;
|
|
1177
|
-
if (checked) {
|
|
1178
|
-
const value = [];
|
|
1179
|
-
for (const row of fullData) {
|
|
1180
|
-
const rowKey = getRowKeyByField(row, keyField);
|
|
1181
|
-
const rowid = getRowIdByField(row, keyField);
|
|
1182
|
-
selectCheckboxMaps[rowid] = row;
|
|
1183
|
-
value.push(rowKey);
|
|
1187
|
+
emitCheckboxMode(value);
|
|
1188
|
+
return updateCheckboxStatus();
|
|
1184
1189
|
}
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1190
|
+
return clearCheckboxRow();
|
|
1191
|
+
};
|
|
1192
|
+
const updateCheckboxStatus = () => {
|
|
1193
|
+
const { selectCheckboxMaps, fullData } = internalData;
|
|
1194
|
+
const keyField = computeKeyField.value;
|
|
1195
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1196
|
+
const { checkMethod } = checkboxOpts;
|
|
1197
|
+
let hasChecked = false;
|
|
1198
|
+
let hasUnchecked = false;
|
|
1199
|
+
if (checkMethod) {
|
|
1200
|
+
for (const row of fullData) {
|
|
1201
|
+
if (checkMethod({ row, $list: $xeList })) {
|
|
1202
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1203
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1204
|
+
hasChecked = true;
|
|
1205
|
+
} else {
|
|
1206
|
+
hasUnchecked = true;
|
|
1207
|
+
if (hasChecked) {
|
|
1208
|
+
break;
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
} else {
|
|
1214
|
+
for (const row of fullData) {
|
|
1200
1215
|
const rowid = getRowIdByField(row, keyField);
|
|
1201
1216
|
if (selectCheckboxMaps[rowid]) {
|
|
1202
1217
|
hasChecked = true;
|
|
@@ -1208,336 +1223,153 @@ var list_default = defineVxeComponent({
|
|
|
1208
1223
|
}
|
|
1209
1224
|
}
|
|
1210
1225
|
}
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
}
|
|
1222
|
-
}
|
|
1223
|
-
}
|
|
1224
|
-
reactData.isAllChecked = hasChecked && !hasUnchecked;
|
|
1225
|
-
reactData.isAllIndeterminate = hasChecked && hasUnchecked;
|
|
1226
|
-
reactData.updateCheckboxFlag++;
|
|
1227
|
-
return nextTick();
|
|
1228
|
-
};
|
|
1229
|
-
const changeCheckboxAllEvent = (evnt) => {
|
|
1230
|
-
const { isAllChecked } = reactData;
|
|
1231
|
-
const isChecked = !isAllChecked;
|
|
1232
|
-
if (isChecked) {
|
|
1233
|
-
setAllCheckboxRow(true);
|
|
1234
|
-
} else {
|
|
1235
|
-
clearCheckboxRow();
|
|
1236
|
-
}
|
|
1237
|
-
dispatchEvent("checkbox-all", { checked: isChecked }, evnt);
|
|
1238
|
-
};
|
|
1239
|
-
const changeCheckboxEvent = (evnt, row) => {
|
|
1240
|
-
evnt.preventDefault();
|
|
1241
|
-
evnt.stopPropagation();
|
|
1242
|
-
const { selectCheckboxMaps } = internalData;
|
|
1243
|
-
const checkboxOpts = computeCheckboxOpts.value;
|
|
1244
|
-
const { checkMethod } = checkboxOpts;
|
|
1245
|
-
const rowid = getRowId(row);
|
|
1246
|
-
const isDisabled = checkMethod ? !checkMethod({ $list: $xeList, row }) : false;
|
|
1247
|
-
if (isDisabled) {
|
|
1248
|
-
return;
|
|
1249
|
-
}
|
|
1250
|
-
let isChecked = false;
|
|
1251
|
-
if (selectCheckboxMaps[rowid]) {
|
|
1252
|
-
delete selectCheckboxMaps[rowid];
|
|
1253
|
-
} else {
|
|
1254
|
-
isChecked = true;
|
|
1255
|
-
selectCheckboxMaps[rowid] = row;
|
|
1256
|
-
}
|
|
1257
|
-
reactData.updateCheckboxFlag++;
|
|
1258
|
-
updateCheckboxStatus();
|
|
1259
|
-
const rowids = XEUtils.keys(selectCheckboxMaps);
|
|
1260
|
-
const value = rowids.map(deModelValue);
|
|
1261
|
-
emitCheckboxMode(value);
|
|
1262
|
-
dispatchEvent("checkbox-change", { row, value, checked: isChecked }, evnt);
|
|
1263
|
-
};
|
|
1264
|
-
const changeCurrentEvent = (evnt, row) => {
|
|
1265
|
-
evnt.preventDefault();
|
|
1266
|
-
const rowOpts = computeRowOpts.value;
|
|
1267
|
-
const { currentMethod } = rowOpts;
|
|
1268
|
-
let isDisabled = false;
|
|
1269
|
-
if (currentMethod) {
|
|
1270
|
-
isDisabled = !currentMethod({ row });
|
|
1271
|
-
}
|
|
1272
|
-
if (isDisabled) {
|
|
1273
|
-
return;
|
|
1274
|
-
}
|
|
1275
|
-
const isChecked = true;
|
|
1276
|
-
internalData.currentRow = row;
|
|
1277
|
-
reactData.currRowFlag++;
|
|
1278
|
-
dispatchEvent("current-change", { row, checked: isChecked }, evnt);
|
|
1279
|
-
};
|
|
1280
|
-
const changeRadioEvent = (evnt, row) => {
|
|
1281
|
-
evnt.preventDefault();
|
|
1282
|
-
evnt.stopPropagation();
|
|
1283
|
-
const { selectRadioRow } = reactData;
|
|
1284
|
-
const radioOpts = computeRadioOpts.value;
|
|
1285
|
-
const { strict, checkMethod } = radioOpts;
|
|
1286
|
-
const rowKey = getRowKey(row);
|
|
1287
|
-
const isDisabled = checkMethod ? !checkMethod({ $list: $xeList, row }) : false;
|
|
1288
|
-
if (isDisabled) {
|
|
1289
|
-
return;
|
|
1290
|
-
}
|
|
1291
|
-
const value = rowKey;
|
|
1292
|
-
let isChecked = true;
|
|
1293
|
-
if (strict) {
|
|
1294
|
-
if (selectRadioRow && rowKey === getRowKey(selectRadioRow)) {
|
|
1295
|
-
isChecked = false;
|
|
1296
|
-
reactData.selectRadioRow = null;
|
|
1226
|
+
reactData.isAllChecked = hasChecked && !hasUnchecked;
|
|
1227
|
+
reactData.isAllIndeterminate = hasChecked && hasUnchecked;
|
|
1228
|
+
reactData.updateCheckboxFlag++;
|
|
1229
|
+
return nextTick();
|
|
1230
|
+
};
|
|
1231
|
+
const changeCheckboxAllEvent = (evnt) => {
|
|
1232
|
+
const { isAllChecked } = reactData;
|
|
1233
|
+
const isChecked = !isAllChecked;
|
|
1234
|
+
if (isChecked) {
|
|
1235
|
+
setAllCheckboxRow(true);
|
|
1297
1236
|
} else {
|
|
1298
|
-
|
|
1237
|
+
clearCheckboxRow();
|
|
1299
1238
|
}
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
const rowRest = getItemCacheObj(item);
|
|
1313
|
-
fullData[funcName](item);
|
|
1314
|
-
rowMaps[rowid] = rowRest;
|
|
1315
|
-
});
|
|
1316
|
-
};
|
|
1317
|
-
const handleInsertRowAt = (records, targetRowOrRowKey, isInsertNextRow) => {
|
|
1318
|
-
const { fullData, rowMaps, removeRowMaps, insertRowMaps } = internalData;
|
|
1319
|
-
const keyField = computeKeyField.value;
|
|
1320
|
-
if (!keyField) {
|
|
1321
|
-
errLog("vxe.error.reqSupportProp", ["insert() | insertAt() | insertNextAt()", "row-config.keyField"]);
|
|
1322
|
-
return Promise.resolve({ row: null, rows: [] });
|
|
1323
|
-
}
|
|
1324
|
-
if (!XEUtils.isArray(records)) {
|
|
1325
|
-
records = [records];
|
|
1326
|
-
}
|
|
1327
|
-
let targetRow = targetRowOrRowKey;
|
|
1328
|
-
if (XEUtils.isString(targetRowOrRowKey) || XEUtils.isNumber(targetRowOrRowKey)) {
|
|
1329
|
-
const rowRest = rowMaps[targetRowOrRowKey];
|
|
1330
|
-
if (rowRest) {
|
|
1331
|
-
targetRow = rowRest.item;
|
|
1332
|
-
}
|
|
1333
|
-
}
|
|
1334
|
-
if (!records.length) {
|
|
1335
|
-
return Promise.resolve({ row: null, rows: [] });
|
|
1336
|
-
}
|
|
1337
|
-
const newRecords = records.map((record) => XEUtils.assign({}, record));
|
|
1338
|
-
if (XEUtils.eqNull(targetRow)) {
|
|
1339
|
-
insertListRow(newRecords, false);
|
|
1340
|
-
} else {
|
|
1341
|
-
if (targetRow === -1) {
|
|
1342
|
-
insertListRow(newRecords, true);
|
|
1343
|
-
} else {
|
|
1344
|
-
const rowIndex = fullData.findIndex((item) => targetRow[keyField] === item[keyField]);
|
|
1345
|
-
if (rowIndex > -1) {
|
|
1346
|
-
newRecords.forEach((item) => {
|
|
1347
|
-
const rowid = getRowIdByField(item, keyField);
|
|
1348
|
-
const rowRest = getItemCacheObj(item);
|
|
1349
|
-
rowMaps[rowid] = rowRest;
|
|
1350
|
-
});
|
|
1351
|
-
let targetIndex = rowIndex;
|
|
1352
|
-
if (isInsertNextRow) {
|
|
1353
|
-
targetIndex = targetIndex + 1;
|
|
1354
|
-
}
|
|
1355
|
-
fullData.splice(targetIndex, 0, ...newRecords);
|
|
1356
|
-
} else {
|
|
1357
|
-
warnLog("vxe.error.unableInsert");
|
|
1358
|
-
insertListRow(newRecords, true);
|
|
1359
|
-
}
|
|
1239
|
+
dispatchEvent("checkbox-all", { checked: isChecked }, evnt);
|
|
1240
|
+
};
|
|
1241
|
+
const changeCheckboxEvent = (evnt, row) => {
|
|
1242
|
+
evnt.preventDefault();
|
|
1243
|
+
evnt.stopPropagation();
|
|
1244
|
+
const { selectCheckboxMaps } = internalData;
|
|
1245
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1246
|
+
const { checkMethod } = checkboxOpts;
|
|
1247
|
+
const rowid = getRowId(row);
|
|
1248
|
+
const isDisabled = checkMethod ? !checkMethod({ $list: $xeList, row }) : false;
|
|
1249
|
+
if (isDisabled) {
|
|
1250
|
+
return;
|
|
1360
1251
|
}
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
if (removeRowMaps[rowid]) {
|
|
1365
|
-
delete removeRowMaps[rowid];
|
|
1366
|
-
if (insertRowMaps[rowid]) {
|
|
1367
|
-
delete insertRowMaps[rowid];
|
|
1368
|
-
}
|
|
1252
|
+
let isChecked = false;
|
|
1253
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1254
|
+
delete selectCheckboxMaps[rowid];
|
|
1369
1255
|
} else {
|
|
1370
|
-
|
|
1256
|
+
isChecked = true;
|
|
1257
|
+
selectCheckboxMaps[rowid] = row;
|
|
1371
1258
|
}
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
}
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
$event: evnt,
|
|
1415
|
-
$list: $xeList
|
|
1416
|
-
};
|
|
1417
|
-
if (tmMethod) {
|
|
1418
|
-
tmMethod(params, evnt);
|
|
1419
|
-
}
|
|
1420
|
-
dispatchEvent("menu-click", params, eventParams.$event);
|
|
1421
|
-
}
|
|
1422
|
-
}
|
|
1423
|
-
});
|
|
1259
|
+
reactData.updateCheckboxFlag++;
|
|
1260
|
+
updateCheckboxStatus();
|
|
1261
|
+
const rowids = XEUtils.keys(selectCheckboxMaps);
|
|
1262
|
+
const value = rowids.map(deModelValue);
|
|
1263
|
+
emitCheckboxMode(value);
|
|
1264
|
+
dispatchEvent("checkbox-change", { row, value, checked: isChecked }, evnt);
|
|
1265
|
+
};
|
|
1266
|
+
const changeCurrentEvent = (evnt, row) => {
|
|
1267
|
+
evnt.preventDefault();
|
|
1268
|
+
const rowOpts = computeRowOpts.value;
|
|
1269
|
+
const { currentMethod } = rowOpts;
|
|
1270
|
+
let isDisabled = false;
|
|
1271
|
+
if (currentMethod) {
|
|
1272
|
+
isDisabled = !currentMethod({ row });
|
|
1273
|
+
}
|
|
1274
|
+
if (isDisabled) {
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
const isChecked = true;
|
|
1278
|
+
internalData.currentRow = row;
|
|
1279
|
+
reactData.currRowFlag++;
|
|
1280
|
+
dispatchEvent("current-change", { row, checked: isChecked }, evnt);
|
|
1281
|
+
};
|
|
1282
|
+
const changeRadioEvent = (evnt, row) => {
|
|
1283
|
+
evnt.preventDefault();
|
|
1284
|
+
evnt.stopPropagation();
|
|
1285
|
+
const { selectRadioRow } = reactData;
|
|
1286
|
+
const radioOpts = computeRadioOpts.value;
|
|
1287
|
+
const { strict, checkMethod } = radioOpts;
|
|
1288
|
+
const rowKey = getRowKey(row);
|
|
1289
|
+
const isDisabled = checkMethod ? !checkMethod({ $list: $xeList, row }) : false;
|
|
1290
|
+
if (isDisabled) {
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
const value = rowKey;
|
|
1294
|
+
let isChecked = true;
|
|
1295
|
+
if (strict) {
|
|
1296
|
+
if (selectRadioRow && rowKey === getRowKey(selectRadioRow)) {
|
|
1297
|
+
isChecked = false;
|
|
1298
|
+
reactData.selectRadioRow = null;
|
|
1299
|
+
} else {
|
|
1300
|
+
reactData.selectRadioRow = row;
|
|
1424
1301
|
}
|
|
1302
|
+
} else {
|
|
1303
|
+
reactData.selectRadioRow = row;
|
|
1425
1304
|
}
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
const
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
* @param {Array} datas 数据
|
|
1439
|
-
*/
|
|
1440
|
-
reloadData(datas) {
|
|
1441
|
-
clearScroll();
|
|
1442
|
-
return loadData(datas);
|
|
1443
|
-
},
|
|
1444
|
-
getFullData() {
|
|
1445
|
-
const { fullData } = internalData;
|
|
1446
|
-
return fullData;
|
|
1447
|
-
},
|
|
1448
|
-
recalculate,
|
|
1449
|
-
scrollTo,
|
|
1450
|
-
refreshScroll,
|
|
1451
|
-
clearScroll,
|
|
1452
|
-
getRowKey,
|
|
1453
|
-
eqRowKey,
|
|
1454
|
-
eqRow,
|
|
1455
|
-
eqRowByKey,
|
|
1456
|
-
findRow,
|
|
1457
|
-
findRowByKey,
|
|
1458
|
-
findRowIndexOf,
|
|
1459
|
-
findRowIndexOfByKey,
|
|
1460
|
-
isCheckedByRadioRowKey,
|
|
1461
|
-
isCheckedByRadioRow,
|
|
1462
|
-
isCheckedByCheckboxRowKey,
|
|
1463
|
-
isCheckedByCheckboxRow,
|
|
1464
|
-
setCurrentRow,
|
|
1465
|
-
setCurrentRowByKey,
|
|
1466
|
-
getCurrentRow,
|
|
1467
|
-
getCurrentRowKey,
|
|
1468
|
-
clearCurrentRow,
|
|
1469
|
-
setRadioRow,
|
|
1470
|
-
setRadioRowByKey,
|
|
1471
|
-
getRadioRow,
|
|
1472
|
-
getRadioRowKey,
|
|
1473
|
-
clearRadioRow,
|
|
1474
|
-
setCheckboxRow,
|
|
1475
|
-
setCheckboxRowByKey,
|
|
1476
|
-
getCheckboxRecords,
|
|
1477
|
-
getCheckboxRows: getCheckboxRecords,
|
|
1478
|
-
getCheckboxRowKeys,
|
|
1479
|
-
clearCheckboxRow,
|
|
1480
|
-
setAllCheckboxRow,
|
|
1481
|
-
insert(records) {
|
|
1482
|
-
return handleInsertRowAt(records, null);
|
|
1483
|
-
},
|
|
1484
|
-
insertAt(records, targetRowOrRowKey) {
|
|
1485
|
-
return handleInsertRowAt(records, targetRowOrRowKey);
|
|
1486
|
-
},
|
|
1487
|
-
insertNextAt(records, targetRowOrRowKey) {
|
|
1488
|
-
return handleInsertRowAt(records, targetRowOrRowKey, true);
|
|
1489
|
-
},
|
|
1490
|
-
getInsertRecords() {
|
|
1491
|
-
const { insertRowMaps } = internalData;
|
|
1492
|
-
const insertRecords = [];
|
|
1493
|
-
XEUtils.each(insertRowMaps, (item) => {
|
|
1494
|
-
insertRecords.push(item);
|
|
1305
|
+
emitRadioMode(value);
|
|
1306
|
+
dispatchEvent("radio-change", { row, value, checked: isChecked }, evnt);
|
|
1307
|
+
};
|
|
1308
|
+
const insertListRow = (newRecords, isAppend) => {
|
|
1309
|
+
const { fullData, rowMaps } = internalData;
|
|
1310
|
+
const keyField = computeKeyField.value;
|
|
1311
|
+
const funcName = isAppend ? "push" : "unshift";
|
|
1312
|
+
newRecords.forEach((item) => {
|
|
1313
|
+
const rowid = getRowIdByField(item, keyField);
|
|
1314
|
+
const rowRest = getItemCacheObj(item);
|
|
1315
|
+
fullData[funcName](item);
|
|
1316
|
+
rowMaps[rowid] = rowRest;
|
|
1495
1317
|
});
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
const rowid = getRowId(row);
|
|
1500
|
-
return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
|
|
1501
|
-
},
|
|
1502
|
-
remove(rows) {
|
|
1503
|
-
const { fullData, insertRowMaps, removeRowMaps } = internalData;
|
|
1318
|
+
};
|
|
1319
|
+
const handleInsertRowAt = (records, targetRowOrRowKey, isInsertNextRow) => {
|
|
1320
|
+
const { fullData, rowMaps, removeRowMaps, insertRowMaps } = internalData;
|
|
1504
1321
|
const keyField = computeKeyField.value;
|
|
1505
1322
|
if (!keyField) {
|
|
1506
1323
|
errLog("vxe.error.reqSupportProp", ["insert() | insertAt() | insertNextAt()", "row-config.keyField"]);
|
|
1507
1324
|
return Promise.resolve({ row: null, rows: [] });
|
|
1508
1325
|
}
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1326
|
+
if (!XEUtils.isArray(records)) {
|
|
1327
|
+
records = [records];
|
|
1328
|
+
}
|
|
1329
|
+
let targetRow = targetRowOrRowKey;
|
|
1330
|
+
if (XEUtils.isString(targetRowOrRowKey) || XEUtils.isNumber(targetRowOrRowKey)) {
|
|
1331
|
+
const rowRest = rowMaps[targetRowOrRowKey];
|
|
1332
|
+
if (rowRest) {
|
|
1333
|
+
targetRow = rowRest.item;
|
|
1334
|
+
}
|
|
1514
1335
|
}
|
|
1515
|
-
if (!
|
|
1336
|
+
if (!records.length) {
|
|
1516
1337
|
return Promise.resolve({ row: null, rows: [] });
|
|
1517
1338
|
}
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
removeRowMaps[rowid] = item;
|
|
1522
|
-
}
|
|
1523
|
-
});
|
|
1524
|
-
if (fullData === rows) {
|
|
1525
|
-
rows = delList = fullData.slice(0);
|
|
1526
|
-
internalData.fullData = [];
|
|
1339
|
+
const newRecords = records.map((record) => XEUtils.assign({}, record));
|
|
1340
|
+
if (XEUtils.eqNull(targetRow)) {
|
|
1341
|
+
insertListRow(newRecords, false);
|
|
1527
1342
|
} else {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1343
|
+
if (targetRow === -1) {
|
|
1344
|
+
insertListRow(newRecords, true);
|
|
1345
|
+
} else {
|
|
1346
|
+
const rowIndex = fullData.findIndex((item) => targetRow[keyField] === item[keyField]);
|
|
1531
1347
|
if (rowIndex > -1) {
|
|
1532
|
-
|
|
1533
|
-
|
|
1348
|
+
newRecords.forEach((item) => {
|
|
1349
|
+
const rowid = getRowIdByField(item, keyField);
|
|
1350
|
+
const rowRest = getItemCacheObj(item);
|
|
1351
|
+
rowMaps[rowid] = rowRest;
|
|
1352
|
+
});
|
|
1353
|
+
let targetIndex = rowIndex;
|
|
1354
|
+
if (isInsertNextRow) {
|
|
1355
|
+
targetIndex = targetIndex + 1;
|
|
1356
|
+
}
|
|
1357
|
+
fullData.splice(targetIndex, 0, ...newRecords);
|
|
1358
|
+
} else {
|
|
1359
|
+
warnLog("vxe.error.unableInsert");
|
|
1360
|
+
insertListRow(newRecords, true);
|
|
1534
1361
|
}
|
|
1535
|
-
}
|
|
1362
|
+
}
|
|
1536
1363
|
}
|
|
1537
|
-
|
|
1538
|
-
const rowid =
|
|
1539
|
-
if (
|
|
1540
|
-
delete
|
|
1364
|
+
newRecords.forEach((newItem) => {
|
|
1365
|
+
const rowid = getRowIdByField(newItem, keyField);
|
|
1366
|
+
if (removeRowMaps[rowid]) {
|
|
1367
|
+
delete removeRowMaps[rowid];
|
|
1368
|
+
if (insertRowMaps[rowid]) {
|
|
1369
|
+
delete insertRowMaps[rowid];
|
|
1370
|
+
}
|
|
1371
|
+
} else {
|
|
1372
|
+
insertRowMaps[rowid] = newItem;
|
|
1541
1373
|
}
|
|
1542
1374
|
});
|
|
1543
1375
|
reactData.removeRowFlag++;
|
|
@@ -1550,196 +1382,237 @@ var list_default = defineVxeComponent({
|
|
|
1550
1382
|
updateYSpace();
|
|
1551
1383
|
}
|
|
1552
1384
|
return nextTick().then(() => {
|
|
1553
|
-
return
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
},
|
|
1558
|
-
getRemoveRecords() {
|
|
1559
|
-
const { removeRowMaps } = internalData;
|
|
1560
|
-
const removeRecords = [];
|
|
1561
|
-
XEUtils.each(removeRowMaps, (item) => {
|
|
1562
|
-
removeRecords.push(item);
|
|
1385
|
+
return {
|
|
1386
|
+
row: newRecords.length ? newRecords[newRecords.length - 1] : null,
|
|
1387
|
+
rows: newRecords
|
|
1388
|
+
};
|
|
1563
1389
|
});
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
const
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
const dragRowRest = rowMaps[dragRowid];
|
|
1599
|
-
let dragRowHeight = 0;
|
|
1600
|
-
let rsIndex = -1;
|
|
1601
|
-
if (dragRowRest) {
|
|
1602
|
-
if (animation) {
|
|
1603
|
-
const oldItemEl = el.querySelector(`.vxe-list--row[rowid="${dragRowid}"]`);
|
|
1604
|
-
const targetItemEl = oldItemEl;
|
|
1605
|
-
if (targetItemEl) {
|
|
1606
|
-
dragRowHeight = targetItemEl.offsetHeight;
|
|
1390
|
+
};
|
|
1391
|
+
const handleContextmenuEvent = (evnt, row) => {
|
|
1392
|
+
const { menuConfig } = props;
|
|
1393
|
+
const menuOpts = computeMenuOpts.value;
|
|
1394
|
+
const rowOpts = computeRowOpts.value;
|
|
1395
|
+
const { isCurrent } = rowOpts;
|
|
1396
|
+
if (menuConfig ? isEnableConf(menuOpts) : menuOpts.enabled) {
|
|
1397
|
+
const { options, visibleMethod } = menuOpts;
|
|
1398
|
+
if (!visibleMethod || visibleMethod({ $list: $xeList, options, row })) {
|
|
1399
|
+
if (isCurrent) {
|
|
1400
|
+
changeCurrentEvent(evnt, row);
|
|
1401
|
+
} else if (internalData.currentRow) {
|
|
1402
|
+
internalData.currentRow = null;
|
|
1403
|
+
reactData.currRowFlag++;
|
|
1404
|
+
}
|
|
1405
|
+
if (VxeUI.contextMenu) {
|
|
1406
|
+
VxeUI.contextMenu.openByEvent(evnt, {
|
|
1407
|
+
options,
|
|
1408
|
+
events: {
|
|
1409
|
+
optionClick(eventParams) {
|
|
1410
|
+
const { option } = eventParams;
|
|
1411
|
+
const gMenuOpts = menus.get(option.code);
|
|
1412
|
+
const tmMethod = gMenuOpts ? gMenuOpts.listMenuMethod : null;
|
|
1413
|
+
const params = {
|
|
1414
|
+
menu: option,
|
|
1415
|
+
row,
|
|
1416
|
+
$event: evnt,
|
|
1417
|
+
$list: $xeList
|
|
1418
|
+
};
|
|
1419
|
+
if (tmMethod) {
|
|
1420
|
+
tmMethod(params, evnt);
|
|
1421
|
+
}
|
|
1422
|
+
dispatchEvent("menu-click", params, eventParams.$event);
|
|
1423
|
+
}
|
|
1607
1424
|
}
|
|
1608
|
-
}
|
|
1609
|
-
rsIndex = dragRowRest.$index;
|
|
1425
|
+
});
|
|
1610
1426
|
}
|
|
1611
|
-
const dragRangeList = rsIndex > -1 && rsIndex < rowList.length - 1 ? rowList.slice(rsIndex + 1) : [];
|
|
1612
|
-
const dragList = [dragRow];
|
|
1613
|
-
$xeList.remove(dragList).then(() => {
|
|
1614
|
-
if (animation && dragRowHeight && dragRangeList.length) {
|
|
1615
|
-
const wrapperEl = el;
|
|
1616
|
-
const dtClss = [];
|
|
1617
|
-
dragRangeList.forEach((item) => {
|
|
1618
|
-
const rowid = getRowId(item);
|
|
1619
|
-
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
1620
|
-
});
|
|
1621
|
-
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(","));
|
|
1622
|
-
moveRowAnimateToTb(dtTrList, dragRowHeight);
|
|
1623
|
-
}
|
|
1624
|
-
});
|
|
1625
|
-
dispatchEvent(
|
|
1626
|
-
"row-remove-dragend",
|
|
1627
|
-
{
|
|
1628
|
-
row: dragRow
|
|
1629
|
-
},
|
|
1630
|
-
evnt
|
|
1631
|
-
);
|
|
1632
|
-
handleRowDragEndClearStatus();
|
|
1633
1427
|
}
|
|
1634
1428
|
}
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1429
|
+
dispatchEvent("row-menu", { row }, evnt);
|
|
1430
|
+
};
|
|
1431
|
+
const listMethods = {
|
|
1432
|
+
dispatchEvent,
|
|
1433
|
+
getScrollViewElem() {
|
|
1434
|
+
const viewEl = refVirtualWrapper.value;
|
|
1435
|
+
return viewEl || null;
|
|
1436
|
+
},
|
|
1437
|
+
loadData,
|
|
1438
|
+
/**
|
|
1439
|
+
* 重新加载数据
|
|
1440
|
+
* @param {Array} datas 数据
|
|
1441
|
+
*/
|
|
1442
|
+
reloadData(datas) {
|
|
1443
|
+
clearScroll();
|
|
1444
|
+
return loadData(datas);
|
|
1445
|
+
},
|
|
1446
|
+
getFullData() {
|
|
1447
|
+
const { fullData } = internalData;
|
|
1448
|
+
return fullData;
|
|
1449
|
+
},
|
|
1450
|
+
recalculate,
|
|
1451
|
+
scrollTo,
|
|
1452
|
+
refreshScroll,
|
|
1453
|
+
clearScroll,
|
|
1454
|
+
getRowKey,
|
|
1455
|
+
eqRowKey,
|
|
1456
|
+
eqRow,
|
|
1457
|
+
eqRowByKey,
|
|
1458
|
+
findRow,
|
|
1459
|
+
findRowByKey,
|
|
1460
|
+
findRowIndexOf,
|
|
1461
|
+
findRowIndexOfByKey,
|
|
1462
|
+
isCheckedByRadioRowKey,
|
|
1463
|
+
isCheckedByRadioRow,
|
|
1464
|
+
isCheckedByCheckboxRowKey,
|
|
1465
|
+
isCheckedByCheckboxRow,
|
|
1466
|
+
setCurrentRow,
|
|
1467
|
+
setCurrentRowByKey,
|
|
1468
|
+
getCurrentRow,
|
|
1469
|
+
getCurrentRowKey,
|
|
1470
|
+
clearCurrentRow,
|
|
1471
|
+
setRadioRow,
|
|
1472
|
+
setRadioRowByKey,
|
|
1473
|
+
getRadioRow,
|
|
1474
|
+
getRadioRowKey,
|
|
1475
|
+
clearRadioRow,
|
|
1476
|
+
setCheckboxRow,
|
|
1477
|
+
setCheckboxRowByKey,
|
|
1478
|
+
getCheckboxRecords,
|
|
1479
|
+
getCheckboxRows: getCheckboxRecords,
|
|
1480
|
+
getCheckboxRowKeys,
|
|
1481
|
+
clearCheckboxRow,
|
|
1482
|
+
setAllCheckboxRow,
|
|
1483
|
+
insert(records) {
|
|
1484
|
+
return handleInsertRowAt(records, null);
|
|
1485
|
+
},
|
|
1486
|
+
insertAt(records, targetRowOrRowKey) {
|
|
1487
|
+
return handleInsertRowAt(records, targetRowOrRowKey);
|
|
1488
|
+
},
|
|
1489
|
+
insertNextAt(records, targetRowOrRowKey) {
|
|
1490
|
+
return handleInsertRowAt(records, targetRowOrRowKey, true);
|
|
1491
|
+
},
|
|
1492
|
+
getInsertRecords() {
|
|
1493
|
+
const { insertRowMaps } = internalData;
|
|
1494
|
+
const insertRecords = [];
|
|
1495
|
+
XEUtils.each(insertRowMaps, (item) => {
|
|
1496
|
+
insertRecords.push(item);
|
|
1497
|
+
});
|
|
1498
|
+
return insertRecords;
|
|
1499
|
+
},
|
|
1500
|
+
isInsertByRow(row) {
|
|
1501
|
+
const rowid = getRowId(row);
|
|
1502
|
+
return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
|
|
1503
|
+
},
|
|
1504
|
+
remove(rows) {
|
|
1505
|
+
const { fullData, insertRowMaps, removeRowMaps } = internalData;
|
|
1506
|
+
const keyField = computeKeyField.value;
|
|
1507
|
+
if (!keyField) {
|
|
1508
|
+
errLog("vxe.error.reqSupportProp", ["insert() | insertAt() | insertNextAt()", "row-config.keyField"]);
|
|
1509
|
+
return Promise.resolve({ row: null, rows: [] });
|
|
1510
|
+
}
|
|
1511
|
+
let delList = [];
|
|
1512
|
+
if (!rows) {
|
|
1513
|
+
rows = fullData;
|
|
1514
|
+
} else if (!XEUtils.isArray(rows)) {
|
|
1515
|
+
rows = [rows];
|
|
1516
|
+
}
|
|
1517
|
+
if (!rows.length) {
|
|
1518
|
+
return Promise.resolve({ row: null, rows: [] });
|
|
1519
|
+
}
|
|
1520
|
+
rows.forEach((item) => {
|
|
1521
|
+
if (!$xeList.isInsertByRow(item)) {
|
|
1522
|
+
const rowid = getRowId(item);
|
|
1523
|
+
removeRowMaps[rowid] = item;
|
|
1524
|
+
}
|
|
1525
|
+
});
|
|
1526
|
+
if (fullData === rows) {
|
|
1527
|
+
rows = delList = fullData.slice(0);
|
|
1528
|
+
internalData.fullData = [];
|
|
1529
|
+
} else {
|
|
1530
|
+
rows.forEach((item) => {
|
|
1531
|
+
const rowid = getRowId(item);
|
|
1532
|
+
const rowIndex = XEUtils.findIndexOf(fullData, (item2) => rowid === getRowId(item2));
|
|
1533
|
+
if (rowIndex > -1) {
|
|
1534
|
+
const rItems = fullData.splice(rowIndex, 1);
|
|
1535
|
+
delList.push(rItems[0]);
|
|
1650
1536
|
}
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1537
|
+
});
|
|
1538
|
+
}
|
|
1539
|
+
rows.forEach((item) => {
|
|
1540
|
+
const rowid = getRowId(item);
|
|
1541
|
+
if (insertRowMaps[rowid]) {
|
|
1542
|
+
delete insertRowMaps[rowid];
|
|
1657
1543
|
}
|
|
1544
|
+
});
|
|
1545
|
+
reactData.removeRowFlag++;
|
|
1546
|
+
reactData.insertRowFlag++;
|
|
1547
|
+
cacheRowMap();
|
|
1548
|
+
handleData(true);
|
|
1549
|
+
updateAfterDataIndex();
|
|
1550
|
+
updateCheckboxStatus();
|
|
1551
|
+
if (reactData.scrollYLoad) {
|
|
1552
|
+
updateYSpace();
|
|
1658
1553
|
}
|
|
1554
|
+
return nextTick().then(() => {
|
|
1555
|
+
return recalculate();
|
|
1556
|
+
}).then(() => {
|
|
1557
|
+
return { row: delList.length ? delList[delList.length - 1] : null, rows: delList };
|
|
1558
|
+
});
|
|
1559
|
+
},
|
|
1560
|
+
getRemoveRecords() {
|
|
1561
|
+
const { removeRowMaps } = internalData;
|
|
1562
|
+
const removeRecords = [];
|
|
1563
|
+
XEUtils.each(removeRowMaps, (item) => {
|
|
1564
|
+
removeRecords.push(item);
|
|
1565
|
+
});
|
|
1566
|
+
return removeRecords;
|
|
1567
|
+
},
|
|
1568
|
+
isRemoveByRow(row) {
|
|
1569
|
+
const rowid = getRowId(row);
|
|
1570
|
+
return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid];
|
|
1571
|
+
},
|
|
1572
|
+
getRecordset() {
|
|
1573
|
+
return {
|
|
1574
|
+
insertRecords: $xeList.getInsertRecords(),
|
|
1575
|
+
removeRecords: $xeList.getRemoveRecords()
|
|
1576
|
+
};
|
|
1659
1577
|
}
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
const {
|
|
1578
|
+
};
|
|
1579
|
+
const listPrivateMethods = {
|
|
1580
|
+
handleCrossListRowDragCancelEvent() {
|
|
1581
|
+
clearRowDragData();
|
|
1582
|
+
clearCrossListDragStatus();
|
|
1583
|
+
},
|
|
1584
|
+
/**
|
|
1585
|
+
* 处理跨树拖拽完成
|
|
1586
|
+
*/
|
|
1587
|
+
handleCrossListRowDragFinishEvent(evnt) {
|
|
1588
|
+
const { rowList } = reactData;
|
|
1589
|
+
const { rowMaps } = internalData;
|
|
1590
|
+
const dragOpts = computeDragOpts.value;
|
|
1591
|
+
const { animation, isCrossListDrag } = dragOpts;
|
|
1671
1592
|
const el = refElem.value;
|
|
1672
1593
|
if (!el) {
|
|
1673
1594
|
return;
|
|
1674
1595
|
}
|
|
1675
|
-
if (
|
|
1676
|
-
const dragRow =
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
const errRest = {
|
|
1689
|
-
status: false
|
|
1690
|
-
};
|
|
1691
|
-
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
1692
|
-
if (!status) {
|
|
1693
|
-
if ($oldList) {
|
|
1694
|
-
if ($oldList.xID !== $xeList.xID) {
|
|
1695
|
-
$oldList.handleCrossListRowDragCancelEvent(evnt);
|
|
1596
|
+
if (isCrossListDrag && crossListDragRowObj && crossListDragRowInfo) {
|
|
1597
|
+
const { row: dragRow } = crossListDragRowInfo;
|
|
1598
|
+
if (dragRow) {
|
|
1599
|
+
const dragRowid = getRowId(dragRow);
|
|
1600
|
+
const dragRowRest = rowMaps[dragRowid];
|
|
1601
|
+
let dragRowHeight = 0;
|
|
1602
|
+
let rsIndex = -1;
|
|
1603
|
+
if (dragRowRest) {
|
|
1604
|
+
if (animation) {
|
|
1605
|
+
const oldItemEl = el.querySelector(`.vxe-list--row[rowid="${dragRowid}"]`);
|
|
1606
|
+
const targetItemEl = oldItemEl;
|
|
1607
|
+
if (targetItemEl) {
|
|
1608
|
+
dragRowHeight = targetItemEl.offsetHeight;
|
|
1696
1609
|
}
|
|
1697
1610
|
}
|
|
1698
|
-
|
|
1699
|
-
return errRest;
|
|
1611
|
+
rsIndex = dragRowRest.$index;
|
|
1700
1612
|
}
|
|
1701
|
-
|
|
1613
|
+
const dragRangeList = rsIndex > -1 && rsIndex < rowList.length - 1 ? rowList.slice(rsIndex + 1) : [];
|
|
1702
1614
|
const dragList = [dragRow];
|
|
1703
|
-
$
|
|
1704
|
-
if (prevDragRow) {
|
|
1705
|
-
if (prevDragPos === "bottom") {
|
|
1706
|
-
insertRest = $xeList.insertNextAt(dragList, prevDragRow);
|
|
1707
|
-
} else {
|
|
1708
|
-
insertRest = $xeList.insertAt(dragList, prevDragRow);
|
|
1709
|
-
}
|
|
1710
|
-
} else {
|
|
1711
|
-
insertRest = $xeList.insert(dragList);
|
|
1712
|
-
}
|
|
1713
|
-
$xeList.dispatchEvent(
|
|
1714
|
-
"row-insert-dragend",
|
|
1715
|
-
{
|
|
1716
|
-
oldRow,
|
|
1717
|
-
newRow: prevDragRow,
|
|
1718
|
-
dragRow,
|
|
1719
|
-
dragPos: prevDragPos,
|
|
1720
|
-
offsetIndex: dragOffsetIndex
|
|
1721
|
-
},
|
|
1722
|
-
evnt
|
|
1723
|
-
);
|
|
1724
|
-
clearRowDragData();
|
|
1725
|
-
insertRest.then(() => {
|
|
1726
|
-
const { rowList } = reactData;
|
|
1727
|
-
const { rowMaps } = internalData;
|
|
1728
|
-
const oldRowid = getRowId(dragRow);
|
|
1729
|
-
const oldRowRest = rowMaps[oldRowid];
|
|
1730
|
-
let dragRowHeight = 0;
|
|
1731
|
-
let rsIndex = -1;
|
|
1732
|
-
if (oldRowRest) {
|
|
1733
|
-
if (animation) {
|
|
1734
|
-
const oldItemEl = el.querySelector(`.vxe-list--row[rowid="${oldRowid}"]`);
|
|
1735
|
-
const targetItemEl = oldItemEl;
|
|
1736
|
-
if (targetItemEl) {
|
|
1737
|
-
dragRowHeight = targetItemEl.offsetHeight;
|
|
1738
|
-
}
|
|
1739
|
-
}
|
|
1740
|
-
rsIndex = oldRowRest.$index;
|
|
1741
|
-
}
|
|
1742
|
-
const dragRangeList = rsIndex > -1 ? rowList.slice(rsIndex) : [];
|
|
1615
|
+
$xeList.remove(dragList).then(() => {
|
|
1743
1616
|
if (animation && dragRowHeight && dragRangeList.length) {
|
|
1744
1617
|
const wrapperEl = el;
|
|
1745
1618
|
const dtClss = [];
|
|
@@ -1748,691 +1621,821 @@ var list_default = defineVxeComponent({
|
|
|
1748
1621
|
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
1749
1622
|
});
|
|
1750
1623
|
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(","));
|
|
1751
|
-
moveRowAnimateToTb(dtTrList,
|
|
1624
|
+
moveRowAnimateToTb(dtTrList, dragRowHeight);
|
|
1752
1625
|
}
|
|
1753
1626
|
});
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
}
|
|
1757
|
-
},
|
|
1758
|
-
hideCrossListRowDropClearStatus() {
|
|
1759
|
-
hideDropTip();
|
|
1760
|
-
}
|
|
1761
|
-
};
|
|
1762
|
-
const bindScrollbarResize = () => {
|
|
1763
|
-
const { scrollObserver } = internalData;
|
|
1764
|
-
const isVScrollbar = computeIsVScrollbar.value;
|
|
1765
|
-
if (isVScrollbar) {
|
|
1766
|
-
if (!scrollObserver) {
|
|
1767
|
-
const el = refElem.value;
|
|
1768
|
-
const viewSpaceEl = refVirtualSpaceElem.value;
|
|
1769
|
-
const viewInnerEl = refVirtualBody.value;
|
|
1770
|
-
const scrollObserver2 = globalResize.create(() => {
|
|
1771
|
-
reScrollFlag.value++;
|
|
1772
|
-
});
|
|
1773
|
-
if (el) {
|
|
1774
|
-
scrollObserver2.observe(el);
|
|
1775
|
-
}
|
|
1776
|
-
if (viewSpaceEl) {
|
|
1777
|
-
scrollObserver2.observe(viewSpaceEl);
|
|
1778
|
-
}
|
|
1779
|
-
if (viewInnerEl) {
|
|
1780
|
-
scrollObserver2.observe(viewInnerEl);
|
|
1781
|
-
}
|
|
1782
|
-
internalData.scrollObserver = scrollObserver2;
|
|
1783
|
-
}
|
|
1784
|
-
}
|
|
1785
|
-
};
|
|
1786
|
-
Object.assign($xeList, listMethods, listPrivateMethods);
|
|
1787
|
-
const renderDragTip = () => {
|
|
1788
|
-
const { dragRow, dragTipText } = reactData;
|
|
1789
|
-
const dragOpts = computeDragOpts.value;
|
|
1790
|
-
const isDrag = computeIsDrag.value;
|
|
1791
|
-
const dRow = dragRow;
|
|
1792
|
-
if (isDrag) {
|
|
1793
|
-
return h(
|
|
1794
|
-
"div",
|
|
1795
|
-
{
|
|
1796
|
-
class: "vxe-list--drag-wrapper"
|
|
1797
|
-
},
|
|
1798
|
-
[
|
|
1799
|
-
h("div", {
|
|
1800
|
-
ref: refDragRowLineElem,
|
|
1801
|
-
class: [
|
|
1802
|
-
"vxe-list--drag-row-line",
|
|
1627
|
+
dispatchEvent(
|
|
1628
|
+
"row-remove-dragend",
|
|
1803
1629
|
{
|
|
1804
|
-
|
|
1805
|
-
}
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
"div",
|
|
1810
|
-
{
|
|
1811
|
-
ref: refDragTipElem,
|
|
1812
|
-
class: "vxe-list--drag-sort-tip"
|
|
1813
|
-
},
|
|
1814
|
-
[
|
|
1815
|
-
h(
|
|
1816
|
-
"div",
|
|
1817
|
-
{
|
|
1818
|
-
class: "vxe-list--drag-sort-tip-wrapper"
|
|
1819
|
-
},
|
|
1820
|
-
[
|
|
1821
|
-
h(
|
|
1822
|
-
"div",
|
|
1823
|
-
{
|
|
1824
|
-
class: "vxe-list--drag-sort-tip-status"
|
|
1825
|
-
},
|
|
1826
|
-
[
|
|
1827
|
-
h("span", {
|
|
1828
|
-
class: ["vxe-list--drag-sort-tip-normal-status", getIcon().LIST_DRAG_STATUS_NODE]
|
|
1829
|
-
}),
|
|
1830
|
-
h("span", {
|
|
1831
|
-
class: ["vxe-list--drag-sort-tip-disabled-status", getIcon().LIST_DRAG_DISABLED]
|
|
1832
|
-
})
|
|
1833
|
-
]
|
|
1834
|
-
),
|
|
1835
|
-
h(
|
|
1836
|
-
"div",
|
|
1837
|
-
{
|
|
1838
|
-
class: "vxe-list--drag-sort-tip-content"
|
|
1839
|
-
},
|
|
1840
|
-
dragTipText
|
|
1841
|
-
)
|
|
1842
|
-
]
|
|
1843
|
-
)
|
|
1844
|
-
]
|
|
1845
|
-
) : renderEmptyElement($xeList)
|
|
1846
|
-
]
|
|
1847
|
-
);
|
|
1848
|
-
}
|
|
1849
|
-
return renderEmptyElement($xeList);
|
|
1850
|
-
};
|
|
1851
|
-
const renderRadio = (row, rowid, isDisabled, isChecked) => {
|
|
1852
|
-
const { showRadio } = props;
|
|
1853
|
-
const radioOpts = computeRadioOpts.value;
|
|
1854
|
-
const { showIcon, visibleMethod } = radioOpts;
|
|
1855
|
-
const isVisible = !visibleMethod || visibleMethod({ $list: $xeList, row });
|
|
1856
|
-
if (showRadio && showIcon && isVisible) {
|
|
1857
|
-
return h(
|
|
1858
|
-
"div",
|
|
1859
|
-
{
|
|
1860
|
-
key: "ct2",
|
|
1861
|
-
class: [
|
|
1862
|
-
"vxe-list--radio-option",
|
|
1863
|
-
{
|
|
1864
|
-
"is--checked": isChecked,
|
|
1865
|
-
"is--disabled": isDisabled
|
|
1866
|
-
}
|
|
1867
|
-
],
|
|
1868
|
-
onClick(evnt) {
|
|
1869
|
-
if (!isDisabled) {
|
|
1870
|
-
changeRadioEvent(evnt, row);
|
|
1871
|
-
}
|
|
1630
|
+
row: dragRow
|
|
1631
|
+
},
|
|
1632
|
+
evnt
|
|
1633
|
+
);
|
|
1634
|
+
handleRowDragEndClearStatus();
|
|
1872
1635
|
}
|
|
1873
|
-
}
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
"is--checked": isChecked,
|
|
1897
|
-
"is--disabled": isDisabled
|
|
1898
|
-
}
|
|
1899
|
-
],
|
|
1900
|
-
onClick(evnt) {
|
|
1901
|
-
if (!isDisabled) {
|
|
1902
|
-
changeCheckboxEvent(evnt, row);
|
|
1636
|
+
}
|
|
1637
|
+
},
|
|
1638
|
+
/**
|
|
1639
|
+
* 处理跨树拖至新的空树
|
|
1640
|
+
*/
|
|
1641
|
+
handleCrossListRowDragoverEmptyEvent(evnt) {
|
|
1642
|
+
const { rowList } = reactData;
|
|
1643
|
+
const dragOpts = computeDragOpts.value;
|
|
1644
|
+
const { isCrossListDrag } = dragOpts;
|
|
1645
|
+
if (isCrossListDrag && crossListDragRowObj && !rowList.length) {
|
|
1646
|
+
const { $oldList, $newList } = crossListDragRowObj;
|
|
1647
|
+
if ($oldList) {
|
|
1648
|
+
const oldListReactData = $oldList;
|
|
1649
|
+
if ($oldList.xID !== $xeList.xID) {
|
|
1650
|
+
if ($newList && $newList.xID !== $xeList.xID) {
|
|
1651
|
+
$newList.hideCrossListRowDropClearStatus();
|
|
1652
|
+
}
|
|
1653
|
+
evnt.preventDefault();
|
|
1654
|
+
$oldList.hideCrossListRowDropClearStatus();
|
|
1655
|
+
crossListDragRowObj.$newList = $xeList;
|
|
1656
|
+
internalData.prevDragRow = null;
|
|
1657
|
+
reactData.dragTipText = oldListReactData.dragTipText;
|
|
1658
|
+
showDropTip(evnt, evnt.currentTarget, true, "");
|
|
1903
1659
|
}
|
|
1904
1660
|
}
|
|
1905
|
-
}
|
|
1906
|
-
[
|
|
1907
|
-
h("span", {
|
|
1908
|
-
class: ["vxe-checkbox--icon", isChecked ? getIcon().CHECKBOX_CHECKED : isDisabled ? getIcon().CHECKBOX_DISABLED_UNCHECKED : getIcon().CHECKBOX_UNCHECKED]
|
|
1909
|
-
})
|
|
1910
|
-
]
|
|
1911
|
-
);
|
|
1912
|
-
}
|
|
1913
|
-
return renderEmptyElement($xeList);
|
|
1914
|
-
};
|
|
1915
|
-
const renderRow = (row, rowIndex) => {
|
|
1916
|
-
const { showRadio, showCheckbox } = props;
|
|
1917
|
-
const { selectRadioRow, currRowFlag, updateCheckboxFlag } = reactData;
|
|
1918
|
-
const { selectCheckboxMaps, currentRow } = internalData;
|
|
1919
|
-
const contentSlot = slots.content;
|
|
1920
|
-
const extraSlot = slots.extra;
|
|
1921
|
-
const dragOpts = computeDragOpts.value;
|
|
1922
|
-
const { trigger, icon, disabledMethod, visibleMethod } = dragOpts;
|
|
1923
|
-
const radioOpts = computeRadioOpts.value;
|
|
1924
|
-
const checkboxOpts = computeCheckboxOpts.value;
|
|
1925
|
-
const rowOpts = computeRowOpts.value;
|
|
1926
|
-
const { useKey, contentField, className: rowClassName, isCurrent } = rowOpts;
|
|
1927
|
-
const isDrag = computeIsDrag.value;
|
|
1928
|
-
const keyField = computeKeyField.value;
|
|
1929
|
-
const isRowFnCls = rowClassName && XEUtils.isFunction(rowClassName);
|
|
1930
|
-
const hasKey = keyField || useKey || isDrag || isCurrent || showRadio || showCheckbox;
|
|
1931
|
-
const rowKey = hasKey && keyField ? getRowIdByField(row, keyField) : "";
|
|
1932
|
-
const rowid = enModelValue(rowKey);
|
|
1933
|
-
const rowParams = { row, $list: $xeList };
|
|
1934
|
-
let isRadioChecked = false;
|
|
1935
|
-
let isRadioDisabled = false;
|
|
1936
|
-
if (showRadio) {
|
|
1937
|
-
isRadioChecked = selectRadioRow && (row === selectRadioRow || eqRowByKey(selectRadioRow, rowKey));
|
|
1938
|
-
isRadioDisabled = radioOpts.checkMethod ? !radioOpts.checkMethod({ $list: $xeList, row }) : false;
|
|
1939
|
-
}
|
|
1940
|
-
let isCheckboxChecked = false;
|
|
1941
|
-
let isCheckboxDisabled = false;
|
|
1942
|
-
if (showCheckbox) {
|
|
1943
|
-
isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
1944
|
-
isCheckboxDisabled = checkboxOpts.checkMethod ? !checkboxOpts.checkMethod({ $list: $xeList, row }) : false;
|
|
1945
|
-
}
|
|
1946
|
-
const ctVNs = [];
|
|
1947
|
-
if (showRadio) {
|
|
1948
|
-
ctVNs.push(renderRadio(row, rowid, isRadioDisabled, isRadioChecked));
|
|
1949
|
-
}
|
|
1950
|
-
if (showCheckbox) {
|
|
1951
|
-
ctVNs.push(renderCheckbox(row, rowid, isCheckboxDisabled, isCheckboxChecked));
|
|
1952
|
-
}
|
|
1953
|
-
let isDragDisabled = false;
|
|
1954
|
-
if (isDrag && keyField && (!visibleMethod || visibleMethod(rowParams))) {
|
|
1955
|
-
const handleOns = {};
|
|
1956
|
-
if (trigger !== "row") {
|
|
1957
|
-
isDragDisabled = !!(disabledMethod && disabledMethod(rowParams));
|
|
1958
|
-
handleOns.onMousedown = (evnt) => {
|
|
1959
|
-
if (!isDragDisabled) {
|
|
1960
|
-
handleRowDragMousedownEvent(evnt, rowParams);
|
|
1961
|
-
}
|
|
1962
|
-
};
|
|
1963
|
-
handleOns.onMouseup = handleRowDragMouseupEvent;
|
|
1964
|
-
}
|
|
1965
|
-
ctVNs.push(
|
|
1966
|
-
h(
|
|
1967
|
-
"div",
|
|
1968
|
-
{
|
|
1969
|
-
key: "ct1",
|
|
1970
|
-
class: "vxe-list--row-drag"
|
|
1971
|
-
},
|
|
1972
|
-
[
|
|
1973
|
-
h(
|
|
1974
|
-
"span",
|
|
1975
|
-
{
|
|
1976
|
-
class: "vxe-list--drag-handle",
|
|
1977
|
-
...handleOns
|
|
1978
|
-
},
|
|
1979
|
-
[
|
|
1980
|
-
h("i", {
|
|
1981
|
-
class: icon || getIcon().LIST_DRAG
|
|
1982
|
-
})
|
|
1983
|
-
]
|
|
1984
|
-
)
|
|
1985
|
-
]
|
|
1986
|
-
)
|
|
1987
|
-
);
|
|
1988
|
-
}
|
|
1989
|
-
ctVNs.push(
|
|
1990
|
-
h(
|
|
1991
|
-
"div",
|
|
1992
|
-
{
|
|
1993
|
-
key: "ct5",
|
|
1994
|
-
class: "vxe-list--row-content"
|
|
1995
|
-
},
|
|
1996
|
-
contentSlot ? contentSlot(rowParams) : contentField ? getText(row[contentField]) : ""
|
|
1997
|
-
)
|
|
1998
|
-
);
|
|
1999
|
-
if (extraSlot) {
|
|
2000
|
-
ctVNs.push(
|
|
2001
|
-
h(
|
|
2002
|
-
"div",
|
|
2003
|
-
{
|
|
2004
|
-
key: "ct7",
|
|
2005
|
-
class: "vxe-list--row-extra"
|
|
2006
|
-
},
|
|
2007
|
-
extraSlot(rowParams)
|
|
2008
|
-
)
|
|
2009
|
-
);
|
|
2010
|
-
}
|
|
2011
|
-
const rowOns = {
|
|
2012
|
-
onMousedown(evnt) {
|
|
2013
|
-
handleRowMousedownEvent(evnt, row);
|
|
2014
|
-
},
|
|
2015
|
-
onMouseup: handleRowDragMouseupEvent,
|
|
2016
|
-
onClick(evnt) {
|
|
2017
|
-
handleRowClickEvent(evnt, row);
|
|
2018
|
-
},
|
|
2019
|
-
onDblclick(evnt) {
|
|
2020
|
-
handleRowDblclickEvent(evnt, row);
|
|
1661
|
+
}
|
|
2021
1662
|
},
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
class: [
|
|
2036
|
-
"vxe-list--row",
|
|
2037
|
-
isRowFnCls ? rowClassName(rowParams) : rowClassName || "",
|
|
2038
|
-
{
|
|
2039
|
-
"is--drag-disabled": isDragDisabled,
|
|
2040
|
-
"is--current": currRowFlag && currentRow && eqRowByKey(currentRow, rowKey),
|
|
2041
|
-
"is-radio--disabled": isRadioDisabled,
|
|
2042
|
-
"is-radio--checked": isRadioChecked,
|
|
2043
|
-
"is-checkbox--disabled": isCheckboxDisabled,
|
|
2044
|
-
"is-checkbox--checked": isCheckboxChecked
|
|
1663
|
+
/**
|
|
1664
|
+
* 处理跨树拖插入
|
|
1665
|
+
*/
|
|
1666
|
+
handleCrossListRowDragInsertEvent(evnt) {
|
|
1667
|
+
const { prevDragRow, prevDragPos } = internalData;
|
|
1668
|
+
const dragOpts = computeDragOpts.value;
|
|
1669
|
+
const { animation, isCrossListDrag, dragEndMethod } = dragOpts;
|
|
1670
|
+
if (isCrossListDrag && crossListDragRowObj && crossListDragRowInfo) {
|
|
1671
|
+
const { row: oldRow } = crossListDragRowInfo;
|
|
1672
|
+
const { $oldList } = crossListDragRowObj;
|
|
1673
|
+
const el = refElem.value;
|
|
1674
|
+
if (!el) {
|
|
1675
|
+
return;
|
|
2045
1676
|
}
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
1677
|
+
if ($oldList && oldRow) {
|
|
1678
|
+
const dragRow = oldRow;
|
|
1679
|
+
let dragOffsetIndex = -1;
|
|
1680
|
+
if (prevDragRow) {
|
|
1681
|
+
dragOffsetIndex = prevDragPos === "bottom" ? 1 : 0;
|
|
1682
|
+
}
|
|
1683
|
+
const dragParams = {
|
|
1684
|
+
oldRow: dragRow,
|
|
1685
|
+
newRow: prevDragRow,
|
|
1686
|
+
dragRow,
|
|
1687
|
+
dragPos: prevDragPos,
|
|
1688
|
+
offsetIndex: dragOffsetIndex
|
|
1689
|
+
};
|
|
1690
|
+
const errRest = {
|
|
1691
|
+
status: false
|
|
1692
|
+
};
|
|
1693
|
+
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
1694
|
+
if (!status) {
|
|
1695
|
+
if ($oldList) {
|
|
1696
|
+
if ($oldList.xID !== $xeList.xID) {
|
|
1697
|
+
$oldList.handleCrossListRowDragCancelEvent(evnt);
|
|
1698
|
+
}
|
|
1699
|
+
}
|
|
1700
|
+
handleRowDragEndClearStatus();
|
|
1701
|
+
return errRest;
|
|
1702
|
+
}
|
|
1703
|
+
let insertRest = Promise.resolve();
|
|
1704
|
+
const dragList = [dragRow];
|
|
1705
|
+
$oldList.handleCrossListRowDragFinishEvent(evnt);
|
|
1706
|
+
if (prevDragRow) {
|
|
1707
|
+
if (prevDragPos === "bottom") {
|
|
1708
|
+
insertRest = $xeList.insertNextAt(dragList, prevDragRow);
|
|
1709
|
+
} else {
|
|
1710
|
+
insertRest = $xeList.insertAt(dragList, prevDragRow);
|
|
1711
|
+
}
|
|
1712
|
+
} else {
|
|
1713
|
+
insertRest = $xeList.insert(dragList);
|
|
1714
|
+
}
|
|
1715
|
+
$xeList.dispatchEvent(
|
|
1716
|
+
"row-insert-dragend",
|
|
1717
|
+
{
|
|
1718
|
+
oldRow,
|
|
1719
|
+
newRow: prevDragRow,
|
|
1720
|
+
dragRow,
|
|
1721
|
+
dragPos: prevDragPos,
|
|
1722
|
+
offsetIndex: dragOffsetIndex
|
|
1723
|
+
},
|
|
1724
|
+
evnt
|
|
1725
|
+
);
|
|
1726
|
+
clearRowDragData();
|
|
1727
|
+
insertRest.then(() => {
|
|
1728
|
+
const { rowList } = reactData;
|
|
1729
|
+
const { rowMaps } = internalData;
|
|
1730
|
+
const oldRowid = getRowId(dragRow);
|
|
1731
|
+
const oldRowRest = rowMaps[oldRowid];
|
|
1732
|
+
let dragRowHeight = 0;
|
|
1733
|
+
let rsIndex = -1;
|
|
1734
|
+
if (oldRowRest) {
|
|
1735
|
+
if (animation) {
|
|
1736
|
+
const oldItemEl = el.querySelector(`.vxe-list--row[rowid="${oldRowid}"]`);
|
|
1737
|
+
const targetItemEl = oldItemEl;
|
|
1738
|
+
if (targetItemEl) {
|
|
1739
|
+
dragRowHeight = targetItemEl.offsetHeight;
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
rsIndex = oldRowRest.$index;
|
|
1743
|
+
}
|
|
1744
|
+
const dragRangeList = rsIndex > -1 ? rowList.slice(rsIndex) : [];
|
|
1745
|
+
if (animation && dragRowHeight && dragRangeList.length) {
|
|
1746
|
+
const wrapperEl = el;
|
|
1747
|
+
const dtClss = [];
|
|
1748
|
+
dragRangeList.forEach((item) => {
|
|
1749
|
+
const rowid = getRowId(item);
|
|
1750
|
+
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
1751
|
+
});
|
|
1752
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(","));
|
|
1753
|
+
moveRowAnimateToTb(dtTrList, -dragRowHeight);
|
|
1754
|
+
}
|
|
1755
|
+
});
|
|
1756
|
+
});
|
|
2105
1757
|
}
|
|
2106
|
-
|
|
2107
|
-
style: wrapperStyles,
|
|
2108
|
-
...leOns
|
|
1758
|
+
}
|
|
2109
1759
|
},
|
|
2110
|
-
|
|
2111
|
-
|
|
1760
|
+
hideCrossListRowDropClearStatus() {
|
|
1761
|
+
hideDropTip();
|
|
1762
|
+
}
|
|
1763
|
+
};
|
|
1764
|
+
const bindScrollbarResize = () => {
|
|
1765
|
+
const { scrollObserver } = internalData;
|
|
1766
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
1767
|
+
if (isVScrollbar) {
|
|
1768
|
+
if (!scrollObserver) {
|
|
1769
|
+
const el = refElem.value;
|
|
1770
|
+
const viewSpaceEl = refVirtualSpaceElem.value;
|
|
1771
|
+
const viewInnerEl = refVirtualBody.value;
|
|
1772
|
+
const scrollObserver2 = globalResize.create(() => {
|
|
1773
|
+
reScrollFlag.value++;
|
|
1774
|
+
});
|
|
1775
|
+
if (el) {
|
|
1776
|
+
scrollObserver2.observe(el);
|
|
1777
|
+
}
|
|
1778
|
+
if (viewSpaceEl) {
|
|
1779
|
+
scrollObserver2.observe(viewSpaceEl);
|
|
1780
|
+
}
|
|
1781
|
+
if (viewInnerEl) {
|
|
1782
|
+
scrollObserver2.observe(viewInnerEl);
|
|
1783
|
+
}
|
|
1784
|
+
internalData.scrollObserver = scrollObserver2;
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
};
|
|
1788
|
+
Object.assign($xeList, listMethods, listPrivateMethods);
|
|
1789
|
+
const renderDragTip = () => {
|
|
1790
|
+
const { dragRow, dragTipText } = reactData;
|
|
1791
|
+
const dragOpts = computeDragOpts.value;
|
|
1792
|
+
const isDrag = computeIsDrag.value;
|
|
1793
|
+
const dRow = dragRow;
|
|
1794
|
+
if (isDrag) {
|
|
1795
|
+
return h(
|
|
2112
1796
|
"div",
|
|
2113
1797
|
{
|
|
2114
|
-
|
|
2115
|
-
class: "vxe-list--header-wrapper"
|
|
1798
|
+
class: "vxe-list--drag-wrapper"
|
|
2116
1799
|
},
|
|
2117
1800
|
[
|
|
2118
|
-
|
|
1801
|
+
h("div", {
|
|
1802
|
+
ref: refDragRowLineElem,
|
|
1803
|
+
class: [
|
|
1804
|
+
"vxe-list--drag-row-line",
|
|
1805
|
+
{
|
|
1806
|
+
"is--guides": dragOpts.showGuidesStatus
|
|
1807
|
+
}
|
|
1808
|
+
]
|
|
1809
|
+
}),
|
|
1810
|
+
dRow && dragOpts.showDragTip ? h(
|
|
2119
1811
|
"div",
|
|
2120
1812
|
{
|
|
2121
|
-
|
|
1813
|
+
ref: refDragTipElem,
|
|
1814
|
+
class: "vxe-list--drag-sort-tip"
|
|
2122
1815
|
},
|
|
2123
1816
|
[
|
|
2124
1817
|
h(
|
|
2125
1818
|
"div",
|
|
2126
1819
|
{
|
|
2127
|
-
class:
|
|
2128
|
-
"vxe-list--checkbox-header",
|
|
2129
|
-
{
|
|
2130
|
-
"is--checked": isAllChecked,
|
|
2131
|
-
"is--indeterminate": isAllIndeterminate
|
|
2132
|
-
}
|
|
2133
|
-
],
|
|
2134
|
-
onClick: changeCheckboxAllEvent
|
|
1820
|
+
class: "vxe-list--drag-sort-tip-wrapper"
|
|
2135
1821
|
},
|
|
2136
1822
|
[
|
|
2137
|
-
h("span", {
|
|
2138
|
-
class: ["vxe-checkbox--icon", isAllChecked ? getIcon().CHECKBOX_CHECKED : isAllIndeterminate ? getIcon().CHECKBOX_INDETERMINATE : getIcon().CHECKBOX_UNCHECKED]
|
|
2139
|
-
}),
|
|
2140
1823
|
h(
|
|
2141
|
-
"
|
|
1824
|
+
"div",
|
|
1825
|
+
{
|
|
1826
|
+
class: "vxe-list--drag-sort-tip-status"
|
|
1827
|
+
},
|
|
1828
|
+
[
|
|
1829
|
+
h("span", {
|
|
1830
|
+
class: ["vxe-list--drag-sort-tip-normal-status", getIcon().LIST_DRAG_STATUS_NODE]
|
|
1831
|
+
}),
|
|
1832
|
+
h("span", {
|
|
1833
|
+
class: ["vxe-list--drag-sort-tip-disabled-status", getIcon().LIST_DRAG_DISABLED]
|
|
1834
|
+
})
|
|
1835
|
+
]
|
|
1836
|
+
),
|
|
1837
|
+
h(
|
|
1838
|
+
"div",
|
|
2142
1839
|
{
|
|
2143
|
-
class: "vxe-
|
|
1840
|
+
class: "vxe-list--drag-sort-tip-content"
|
|
2144
1841
|
},
|
|
2145
|
-
|
|
1842
|
+
dragTipText
|
|
2146
1843
|
)
|
|
2147
1844
|
]
|
|
2148
1845
|
)
|
|
2149
1846
|
]
|
|
2150
|
-
) : renderEmptyElement($xeList),
|
|
2151
|
-
headerSlot ? h(
|
|
2152
|
-
"div",
|
|
2153
|
-
{
|
|
2154
|
-
class: "vxe-list--header-content"
|
|
2155
|
-
},
|
|
2156
|
-
headerSlot({ items: rowList, $list: $xeList })
|
|
2157
1847
|
) : renderEmptyElement($xeList)
|
|
2158
1848
|
]
|
|
2159
|
-
)
|
|
2160
|
-
|
|
1849
|
+
);
|
|
1850
|
+
}
|
|
1851
|
+
return renderEmptyElement($xeList);
|
|
1852
|
+
};
|
|
1853
|
+
const renderRadio = (row, rowid, isDisabled, isChecked) => {
|
|
1854
|
+
const { showRadio } = props;
|
|
1855
|
+
const radioOpts = computeRadioOpts.value;
|
|
1856
|
+
const { showIcon, visibleMethod } = radioOpts;
|
|
1857
|
+
const isVisible = !visibleMethod || visibleMethod({ $list: $xeList, row });
|
|
1858
|
+
if (showRadio && showIcon && isVisible) {
|
|
1859
|
+
return h(
|
|
2161
1860
|
"div",
|
|
2162
1861
|
{
|
|
2163
|
-
|
|
2164
|
-
class:
|
|
2165
|
-
|
|
2166
|
-
|
|
1862
|
+
key: "ct2",
|
|
1863
|
+
class: [
|
|
1864
|
+
"vxe-list--radio-option",
|
|
1865
|
+
{
|
|
1866
|
+
"is--checked": isChecked,
|
|
1867
|
+
"is--disabled": isDisabled
|
|
1868
|
+
}
|
|
1869
|
+
],
|
|
1870
|
+
onClick(evnt) {
|
|
1871
|
+
if (!isDisabled) {
|
|
1872
|
+
changeRadioEvent(evnt, row);
|
|
1873
|
+
}
|
|
1874
|
+
}
|
|
2167
1875
|
},
|
|
2168
1876
|
[
|
|
2169
|
-
h("
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
style: {
|
|
2173
|
-
height: bodyHeight ? `${bodyHeight}px` : ""
|
|
2174
|
-
}
|
|
2175
|
-
}),
|
|
2176
|
-
h(
|
|
2177
|
-
"div",
|
|
2178
|
-
{
|
|
2179
|
-
ref: refVirtualBody,
|
|
2180
|
-
class: [
|
|
2181
|
-
"vxe-list--body",
|
|
2182
|
-
{
|
|
2183
|
-
"trigger--row": trigger === "row",
|
|
2184
|
-
"checkbox--highlight": checkboxOpts.highlight,
|
|
2185
|
-
"radio--highlight": radioOpts.highlight,
|
|
2186
|
-
"row--hover": isHover,
|
|
2187
|
-
"is--padding": padding
|
|
2188
|
-
}
|
|
2189
|
-
],
|
|
2190
|
-
style: {
|
|
2191
|
-
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ""
|
|
2192
|
-
}
|
|
2193
|
-
},
|
|
2194
|
-
defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i))
|
|
2195
|
-
)
|
|
1877
|
+
h("span", {
|
|
1878
|
+
class: ["vxe-radio--icon", isChecked ? getIcon().RADIO_CHECKED : isDisabled ? getIcon().RADIO_DISABLED_UNCHECKED : getIcon().RADIO_UNCHECKED]
|
|
1879
|
+
})
|
|
2196
1880
|
]
|
|
2197
|
-
)
|
|
2198
|
-
|
|
1881
|
+
);
|
|
1882
|
+
}
|
|
1883
|
+
return renderEmptyElement($xeList);
|
|
1884
|
+
};
|
|
1885
|
+
const renderCheckbox = (row, rowid, isDisabled, isChecked) => {
|
|
1886
|
+
const { showCheckbox } = props;
|
|
1887
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1888
|
+
const { showIcon, visibleMethod } = checkboxOpts;
|
|
1889
|
+
const isVisible = !visibleMethod || visibleMethod({ $list: $xeList, row });
|
|
1890
|
+
if (showCheckbox && showIcon && isVisible) {
|
|
1891
|
+
return h(
|
|
2199
1892
|
"div",
|
|
2200
1893
|
{
|
|
2201
|
-
|
|
2202
|
-
class:
|
|
1894
|
+
key: "ct3",
|
|
1895
|
+
class: [
|
|
1896
|
+
"vxe-list--checkbox-option",
|
|
1897
|
+
{
|
|
1898
|
+
"is--checked": isChecked,
|
|
1899
|
+
"is--disabled": isDisabled
|
|
1900
|
+
}
|
|
1901
|
+
],
|
|
1902
|
+
onClick(evnt) {
|
|
1903
|
+
if (!isDisabled) {
|
|
1904
|
+
changeCheckboxEvent(evnt, row);
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
2203
1907
|
},
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
1908
|
+
[
|
|
1909
|
+
h("span", {
|
|
1910
|
+
class: ["vxe-checkbox--icon", isChecked ? getIcon().CHECKBOX_CHECKED : isDisabled ? getIcon().CHECKBOX_DISABLED_UNCHECKED : getIcon().CHECKBOX_UNCHECKED]
|
|
1911
|
+
})
|
|
1912
|
+
]
|
|
1913
|
+
);
|
|
1914
|
+
}
|
|
1915
|
+
return renderEmptyElement($xeList);
|
|
1916
|
+
};
|
|
1917
|
+
const renderRow = (row, rowIndex) => {
|
|
1918
|
+
const { showRadio, showCheckbox } = props;
|
|
1919
|
+
const { selectRadioRow, currRowFlag, updateCheckboxFlag } = reactData;
|
|
1920
|
+
const { selectCheckboxMaps, currentRow } = internalData;
|
|
1921
|
+
const contentSlot = slots.content;
|
|
1922
|
+
const extraSlot = slots.extra;
|
|
1923
|
+
const dragOpts = computeDragOpts.value;
|
|
1924
|
+
const { trigger, icon, disabledMethod, visibleMethod } = dragOpts;
|
|
1925
|
+
const radioOpts = computeRadioOpts.value;
|
|
1926
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1927
|
+
const rowOpts = computeRowOpts.value;
|
|
1928
|
+
const { useKey, contentField, className: rowClassName, isCurrent } = rowOpts;
|
|
1929
|
+
const isDrag = computeIsDrag.value;
|
|
1930
|
+
const keyField = computeKeyField.value;
|
|
1931
|
+
const isRowFnCls = rowClassName && XEUtils.isFunction(rowClassName);
|
|
1932
|
+
const hasKey = keyField || useKey || isDrag || isCurrent || showRadio || showCheckbox;
|
|
1933
|
+
const rowKey = hasKey && keyField ? getRowIdByField(row, keyField) : "";
|
|
1934
|
+
const rowid = enModelValue(rowKey);
|
|
1935
|
+
const rowParams = { row, $list: $xeList };
|
|
1936
|
+
let isRadioChecked = false;
|
|
1937
|
+
let isRadioDisabled = false;
|
|
1938
|
+
if (showRadio) {
|
|
1939
|
+
isRadioChecked = selectRadioRow && (row === selectRadioRow || eqRowByKey(selectRadioRow, rowKey));
|
|
1940
|
+
isRadioDisabled = radioOpts.checkMethod ? !radioOpts.checkMethod({ $list: $xeList, row }) : false;
|
|
1941
|
+
}
|
|
1942
|
+
let isCheckboxChecked = false;
|
|
1943
|
+
let isCheckboxDisabled = false;
|
|
1944
|
+
if (showCheckbox) {
|
|
1945
|
+
isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
1946
|
+
isCheckboxDisabled = checkboxOpts.checkMethod ? !checkboxOpts.checkMethod({ $list: $xeList, row }) : false;
|
|
1947
|
+
}
|
|
1948
|
+
const ctVNs = [];
|
|
1949
|
+
if (showRadio) {
|
|
1950
|
+
ctVNs.push(renderRadio(row, rowid, isRadioDisabled, isRadioChecked));
|
|
1951
|
+
}
|
|
1952
|
+
if (showCheckbox) {
|
|
1953
|
+
ctVNs.push(renderCheckbox(row, rowid, isCheckboxDisabled, isCheckboxChecked));
|
|
1954
|
+
}
|
|
1955
|
+
let isDragDisabled = false;
|
|
1956
|
+
if (isDrag && keyField && (!visibleMethod || visibleMethod(rowParams))) {
|
|
1957
|
+
const handleOns = {};
|
|
1958
|
+
if (trigger !== "row") {
|
|
1959
|
+
isDragDisabled = !!(disabledMethod && disabledMethod(rowParams));
|
|
1960
|
+
handleOns.onMousedown = (evnt) => {
|
|
1961
|
+
if (!isDragDisabled) {
|
|
1962
|
+
handleRowDragMousedownEvent(evnt, rowParams);
|
|
1963
|
+
}
|
|
1964
|
+
};
|
|
1965
|
+
handleOns.onMouseup = handleRowDragMouseupEvent;
|
|
1966
|
+
}
|
|
1967
|
+
ctVNs.push(
|
|
1968
|
+
h(
|
|
1969
|
+
"div",
|
|
1970
|
+
{
|
|
1971
|
+
key: "ct1",
|
|
1972
|
+
class: "vxe-list--row-drag"
|
|
1973
|
+
},
|
|
1974
|
+
[
|
|
1975
|
+
h(
|
|
1976
|
+
"span",
|
|
1977
|
+
{
|
|
1978
|
+
class: "vxe-list--drag-handle",
|
|
1979
|
+
...handleOns
|
|
1980
|
+
},
|
|
1981
|
+
[
|
|
1982
|
+
h("i", {
|
|
1983
|
+
class: icon || getIcon().LIST_DRAG
|
|
1984
|
+
})
|
|
1985
|
+
]
|
|
1986
|
+
)
|
|
1987
|
+
]
|
|
1988
|
+
)
|
|
1989
|
+
);
|
|
1990
|
+
}
|
|
1991
|
+
ctVNs.push(
|
|
1992
|
+
h(
|
|
2210
1993
|
"div",
|
|
2211
1994
|
{
|
|
2212
|
-
|
|
1995
|
+
key: "ct5",
|
|
1996
|
+
class: "vxe-list--row-content"
|
|
2213
1997
|
},
|
|
2214
|
-
[
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
1998
|
+
contentSlot ? contentSlot(rowParams) : contentField ? getText(row[contentField]) : ""
|
|
1999
|
+
)
|
|
2000
|
+
);
|
|
2001
|
+
if (extraSlot) {
|
|
2002
|
+
ctVNs.push(
|
|
2003
|
+
h(
|
|
2004
|
+
"div",
|
|
2005
|
+
{
|
|
2006
|
+
key: "ct7",
|
|
2007
|
+
class: "vxe-list--row-extra"
|
|
2008
|
+
},
|
|
2009
|
+
extraSlot(rowParams)
|
|
2010
|
+
)
|
|
2011
|
+
);
|
|
2012
|
+
}
|
|
2013
|
+
const rowOns = {
|
|
2014
|
+
onMousedown(evnt) {
|
|
2015
|
+
handleRowMousedownEvent(evnt, row);
|
|
2016
|
+
},
|
|
2017
|
+
onMouseup: handleRowDragMouseupEvent,
|
|
2018
|
+
onClick(evnt) {
|
|
2019
|
+
handleRowClickEvent(evnt, row);
|
|
2020
|
+
},
|
|
2021
|
+
onDblclick(evnt) {
|
|
2022
|
+
handleRowDblclickEvent(evnt, row);
|
|
2023
|
+
},
|
|
2024
|
+
onContextmenu(evnt) {
|
|
2025
|
+
handleContextmenuEvent(evnt, row);
|
|
2026
|
+
}
|
|
2027
|
+
};
|
|
2028
|
+
if (isDrag) {
|
|
2029
|
+
rowOns.onDragstart = handleRowDragDragstartEvent;
|
|
2030
|
+
rowOns.onDragend = handleRowDragDragendEvent;
|
|
2031
|
+
rowOns.onDragover = handleRowDragDragoverEvent;
|
|
2032
|
+
}
|
|
2033
|
+
return h(
|
|
2034
|
+
"div",
|
|
2035
|
+
{
|
|
2036
|
+
key: hasKey && keyField ? rowid : rowIndex,
|
|
2037
|
+
class: [
|
|
2038
|
+
"vxe-list--row",
|
|
2039
|
+
isRowFnCls ? rowClassName(rowParams) : rowClassName || "",
|
|
2040
|
+
{
|
|
2041
|
+
"is--drag-disabled": isDragDisabled,
|
|
2042
|
+
"is--current": currRowFlag && currentRow && eqRowByKey(currentRow, rowKey),
|
|
2043
|
+
"is-radio--disabled": isRadioDisabled,
|
|
2044
|
+
"is-radio--checked": isRadioChecked,
|
|
2045
|
+
"is-checkbox--disabled": isCheckboxDisabled,
|
|
2046
|
+
"is-checkbox--checked": isCheckboxChecked
|
|
2047
|
+
}
|
|
2048
|
+
],
|
|
2049
|
+
rowid: hasKey && keyField ? rowid : void 0,
|
|
2050
|
+
...rowOns
|
|
2051
|
+
},
|
|
2052
|
+
ctVNs
|
|
2053
|
+
);
|
|
2054
|
+
};
|
|
2055
|
+
const renderVN = () => {
|
|
2056
|
+
const { showCheckbox, className, loading } = props;
|
|
2057
|
+
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData;
|
|
2058
|
+
const defaultSlot = slots.default;
|
|
2059
|
+
const headerSlot = slots.header;
|
|
2060
|
+
const footerSlot = slots.footer;
|
|
2061
|
+
const vSize = computeSize.value;
|
|
2062
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
2063
|
+
const wrapperStyles = computeWrapperStyles.value;
|
|
2064
|
+
const virtualStyles = computeVirtualStyles.value;
|
|
2065
|
+
const radioOpts = computeRadioOpts.value;
|
|
2066
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
2067
|
+
const { showHeader, headerTitle } = checkboxOpts;
|
|
2068
|
+
const dragOpts = computeDragOpts.value;
|
|
2069
|
+
const { trigger, isCrossListDrag } = dragOpts;
|
|
2070
|
+
const rowOpts = computeRowOpts.value;
|
|
2071
|
+
const { isHover, padding } = rowOpts;
|
|
2072
|
+
const isDrag = computeIsDrag.value;
|
|
2073
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
2074
|
+
const scrollXVisible = computeScrollXVisible.value;
|
|
2075
|
+
const scrollYVisible = computeScrollYVisible.value;
|
|
2076
|
+
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
2077
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
2078
|
+
const scrollXAutoHide = computeScrollXAutoHide.value;
|
|
2079
|
+
const scrollYAutoHide = computeScrollYAutoHide.value;
|
|
2080
|
+
const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
|
|
2081
|
+
const showDefChekboxHead = showCheckbox && showHeader !== false;
|
|
2082
|
+
const leOns = {};
|
|
2083
|
+
if (isCrossListDrag && !rowList.length) {
|
|
2084
|
+
leOns.onDragover = $xeList.handleCrossListRowDragoverEmptyEvent;
|
|
2085
|
+
}
|
|
2086
|
+
return h(
|
|
2087
|
+
"div",
|
|
2088
|
+
{
|
|
2089
|
+
ref: refElem,
|
|
2090
|
+
class: [
|
|
2091
|
+
"vxe-list",
|
|
2092
|
+
isVScrollbar ? `ov-x--${scrollXVisible === false ? "hidden" : "visible"}` : "",
|
|
2093
|
+
isVScrollbar ? `ov-y--${scrollYVisible === false ? "hidden" : "visible"}` : "",
|
|
2094
|
+
isVScrollbar ? `sx-pos--${scrollbarXToTop ? "top" : "bottom"}` : "",
|
|
2095
|
+
isVScrollbar ? `sy-pos--${scrollbarYToLeft ? "left" : "right"}` : "",
|
|
2096
|
+
className ? XEUtils.isFunction(className) ? className({ $list: $xeList }) : className : "",
|
|
2097
|
+
{
|
|
2098
|
+
[`size--${vSize}`]: vSize,
|
|
2099
|
+
"is--virtual-scrollbar": isVScrollbar,
|
|
2100
|
+
"ov-padding": isVScrollbar && scrollbarOpts.padding,
|
|
2101
|
+
"ov-x--auto-hide": isVScrollbar && scrollXAutoHide,
|
|
2102
|
+
"ov-y--auto-hide": isVScrollbar && scrollYAutoHide,
|
|
2103
|
+
"overflow-y": yThumbHeight,
|
|
2104
|
+
"overflow-x": xThumbWidth,
|
|
2105
|
+
"is--drag": isDrag,
|
|
2106
|
+
"is--loading": loading
|
|
2107
|
+
}
|
|
2108
|
+
],
|
|
2109
|
+
style: wrapperStyles,
|
|
2110
|
+
...leOns
|
|
2111
|
+
},
|
|
2112
|
+
[
|
|
2113
|
+
headerSlot || showDefChekboxHead ? h(
|
|
2114
|
+
"div",
|
|
2115
|
+
{
|
|
2116
|
+
ref: refHeaderElem,
|
|
2117
|
+
class: "vxe-list--header-wrapper"
|
|
2118
|
+
},
|
|
2119
|
+
[
|
|
2120
|
+
showDefChekboxHead ? h(
|
|
2121
|
+
"div",
|
|
2122
|
+
{
|
|
2123
|
+
class: "vxe-list--header-left"
|
|
2124
|
+
},
|
|
2125
|
+
[
|
|
2126
|
+
h(
|
|
2127
|
+
"div",
|
|
2128
|
+
{
|
|
2129
|
+
class: [
|
|
2130
|
+
"vxe-list--checkbox-header",
|
|
2131
|
+
{
|
|
2132
|
+
"is--checked": isAllChecked,
|
|
2133
|
+
"is--indeterminate": isAllIndeterminate
|
|
2134
|
+
}
|
|
2135
|
+
],
|
|
2136
|
+
onClick: changeCheckboxAllEvent
|
|
2137
|
+
},
|
|
2138
|
+
[
|
|
2139
|
+
h("span", {
|
|
2140
|
+
class: ["vxe-checkbox--icon", isAllChecked ? getIcon().CHECKBOX_CHECKED : isAllIndeterminate ? getIcon().CHECKBOX_INDETERMINATE : getIcon().CHECKBOX_UNCHECKED]
|
|
2141
|
+
}),
|
|
2142
|
+
h(
|
|
2143
|
+
"span",
|
|
2144
|
+
{
|
|
2145
|
+
class: "vxe-checkbox--label"
|
|
2146
|
+
},
|
|
2147
|
+
XEUtils.eqNull(headerTitle) ? getI18n("vxe.list.allChecked") : getText(headerTitle)
|
|
2148
|
+
)
|
|
2149
|
+
]
|
|
2150
|
+
)
|
|
2151
|
+
]
|
|
2152
|
+
) : renderEmptyElement($xeList),
|
|
2153
|
+
headerSlot ? h(
|
|
2154
|
+
"div",
|
|
2155
|
+
{
|
|
2156
|
+
class: "vxe-list--header-content"
|
|
2157
|
+
},
|
|
2158
|
+
headerSlot({ items: rowList, $list: $xeList })
|
|
2159
|
+
) : renderEmptyElement($xeList)
|
|
2160
|
+
]
|
|
2161
|
+
) : renderEmptyElement($xeList),
|
|
2162
|
+
h(
|
|
2163
|
+
"div",
|
|
2164
|
+
{
|
|
2165
|
+
ref: refVirtualWrapper,
|
|
2166
|
+
class: "vxe-list--virtual-wrapper",
|
|
2167
|
+
style: virtualStyles,
|
|
2168
|
+
onScroll: scrollEvent
|
|
2169
|
+
},
|
|
2170
|
+
[
|
|
2171
|
+
h("div", {
|
|
2172
|
+
ref: refVirtualSpaceElem,
|
|
2173
|
+
class: "vxe-list--y-space",
|
|
2174
|
+
style: {
|
|
2175
|
+
height: bodyHeight ? `${bodyHeight}px` : ""
|
|
2176
|
+
}
|
|
2177
|
+
}),
|
|
2178
|
+
h(
|
|
2179
|
+
"div",
|
|
2180
|
+
{
|
|
2181
|
+
ref: refVirtualBody,
|
|
2182
|
+
class: [
|
|
2183
|
+
"vxe-list--body",
|
|
2184
|
+
{
|
|
2185
|
+
"trigger--row": trigger === "row",
|
|
2186
|
+
"checkbox--highlight": checkboxOpts.highlight,
|
|
2187
|
+
"radio--highlight": radioOpts.highlight,
|
|
2188
|
+
"row--hover": isHover,
|
|
2189
|
+
"is--padding": padding
|
|
2190
|
+
}
|
|
2191
|
+
],
|
|
2192
|
+
style: {
|
|
2193
|
+
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ""
|
|
2194
|
+
}
|
|
2195
|
+
},
|
|
2196
|
+
defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i))
|
|
2197
|
+
)
|
|
2198
|
+
]
|
|
2199
|
+
),
|
|
2200
|
+
footerSlot ? h(
|
|
2201
|
+
"div",
|
|
2202
|
+
{
|
|
2203
|
+
ref: refFooterElem,
|
|
2204
|
+
class: "vxe-list--footer-wrapper"
|
|
2205
|
+
},
|
|
2206
|
+
footerSlot({ items: rowList, $list: $xeList })
|
|
2207
|
+
) : renderEmptyElement($xeList),
|
|
2208
|
+
/**
|
|
2209
|
+
* 滚动条
|
|
2210
|
+
*/
|
|
2211
|
+
isVScrollbar ? h(
|
|
2212
|
+
"div",
|
|
2213
|
+
{
|
|
2214
|
+
class: scrollbarWrapperClss
|
|
2215
|
+
},
|
|
2216
|
+
[
|
|
2217
|
+
scrollXVisible === false ? renderEmptyElement($xeList) : h(
|
|
2218
|
+
"div",
|
|
2219
|
+
{
|
|
2220
|
+
ref: refTrackXElem,
|
|
2221
|
+
class: "vxe-scrollbar--track-x",
|
|
2222
|
+
onClick: clickTrackXEvent
|
|
2223
|
+
},
|
|
2224
|
+
[
|
|
2225
|
+
h("div", {
|
|
2226
|
+
ref: refThumbXElem,
|
|
2227
|
+
class: "vxe-scrollbar--thumb-x",
|
|
2228
|
+
onPointerdown: pointerdownThumbXEvent,
|
|
2229
|
+
onPointermove: pointermoveThumbXEvent,
|
|
2230
|
+
onPointerup: cleatPointerThumbEvent,
|
|
2231
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
2232
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
2233
|
+
})
|
|
2234
|
+
]
|
|
2235
|
+
),
|
|
2236
|
+
scrollYVisible === false ? renderEmptyElement($xeList) : h(
|
|
2237
|
+
"div",
|
|
2238
|
+
{
|
|
2239
|
+
ref: refTrackYElem,
|
|
2240
|
+
class: "vxe-scrollbar--track-y",
|
|
2241
|
+
onClick: clickTrackYEvent
|
|
2242
|
+
},
|
|
2243
|
+
[
|
|
2244
|
+
h("div", {
|
|
2245
|
+
ref: refThumbYElem,
|
|
2246
|
+
class: "vxe-scrollbar--thumb-y",
|
|
2247
|
+
onPointerdown: pointerdownThumbYEvent,
|
|
2248
|
+
onPointermove: pointermoveThumbYEvent,
|
|
2249
|
+
onPointerup: cleatPointerThumbEvent,
|
|
2250
|
+
onPointercancel: cleatPointerThumbEvent,
|
|
2251
|
+
onLostpointercapture: cleatPointerThumbEvent
|
|
2252
|
+
})
|
|
2253
|
+
]
|
|
2254
|
+
)
|
|
2255
|
+
]
|
|
2256
|
+
) : renderEmptyElement($xeList),
|
|
2257
|
+
/**
|
|
2258
|
+
* 拖拽提示
|
|
2259
|
+
*/
|
|
2260
|
+
renderDragTip(),
|
|
2261
|
+
/**
|
|
2262
|
+
* 加载中
|
|
2263
|
+
*/
|
|
2264
|
+
h(VxeLoadingComponent, {
|
|
2265
|
+
class: "vxe-list--loading",
|
|
2266
|
+
modelValue: loading
|
|
2267
|
+
})
|
|
2268
|
+
]
|
|
2269
|
+
);
|
|
2270
|
+
};
|
|
2271
|
+
const dataFlag = ref(0);
|
|
2272
|
+
watch(
|
|
2273
|
+
() => props.data ? props.data.length : -1,
|
|
2274
|
+
() => {
|
|
2275
|
+
dataFlag.value++;
|
|
2276
|
+
}
|
|
2267
2277
|
);
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
()
|
|
2278
|
-
()
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
() => props.maxHeight,
|
|
2295
|
-
() => {
|
|
2296
|
-
reLayoutFlag.value++;
|
|
2297
|
-
}
|
|
2298
|
-
);
|
|
2299
|
-
watch(
|
|
2300
|
-
() => props.syncResize,
|
|
2301
|
-
() => {
|
|
2302
|
-
reLayoutFlag.value++;
|
|
2303
|
-
}
|
|
2304
|
-
);
|
|
2305
|
-
watch(computeIsVScrollbar, () => {
|
|
2306
|
-
nextTick(() => {
|
|
2307
|
-
bindScrollbarResize();
|
|
2308
|
-
nextTick(() => {
|
|
2278
|
+
watch(
|
|
2279
|
+
() => props.data,
|
|
2280
|
+
() => {
|
|
2281
|
+
dataFlag.value++;
|
|
2282
|
+
}
|
|
2283
|
+
);
|
|
2284
|
+
watch(dataFlag, () => {
|
|
2285
|
+
loadData(props.data || []);
|
|
2286
|
+
});
|
|
2287
|
+
const reScrollFlag = ref(0);
|
|
2288
|
+
const reLayoutFlag = ref(0);
|
|
2289
|
+
watch(
|
|
2290
|
+
() => props.height,
|
|
2291
|
+
() => {
|
|
2292
|
+
reLayoutFlag.value++;
|
|
2293
|
+
}
|
|
2294
|
+
);
|
|
2295
|
+
watch(
|
|
2296
|
+
() => props.maxHeight,
|
|
2297
|
+
() => {
|
|
2298
|
+
reLayoutFlag.value++;
|
|
2299
|
+
}
|
|
2300
|
+
);
|
|
2301
|
+
watch(
|
|
2302
|
+
() => props.syncResize,
|
|
2303
|
+
() => {
|
|
2309
2304
|
reLayoutFlag.value++;
|
|
2305
|
+
}
|
|
2306
|
+
);
|
|
2307
|
+
watch(computeIsVScrollbar, () => {
|
|
2308
|
+
nextTick(() => {
|
|
2309
|
+
bindScrollbarResize();
|
|
2310
|
+
nextTick(() => {
|
|
2311
|
+
reLayoutFlag.value++;
|
|
2312
|
+
});
|
|
2310
2313
|
});
|
|
2311
2314
|
});
|
|
2312
|
-
|
|
2313
|
-
watch(computeRowHeight, () => {
|
|
2314
|
-
reLayoutFlag.value++;
|
|
2315
|
-
});
|
|
2316
|
-
watch(computeScrollYWidth, () => {
|
|
2317
|
-
reLayoutFlag.value++;
|
|
2318
|
-
});
|
|
2319
|
-
watch(computeScrollXHeight, () => {
|
|
2320
|
-
reLayoutFlag.value++;
|
|
2321
|
-
});
|
|
2322
|
-
watch(computeScrollXVisible, () => {
|
|
2323
|
-
nextTick(() => {
|
|
2315
|
+
watch(computeRowHeight, () => {
|
|
2324
2316
|
reLayoutFlag.value++;
|
|
2325
2317
|
});
|
|
2326
|
-
|
|
2327
|
-
watch(computeScrollYVisible, () => {
|
|
2328
|
-
nextTick(() => {
|
|
2318
|
+
watch(computeScrollYWidth, () => {
|
|
2329
2319
|
reLayoutFlag.value++;
|
|
2330
2320
|
});
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
recalculate().then(() => {
|
|
2334
|
-
recalculate();
|
|
2321
|
+
watch(computeScrollXHeight, () => {
|
|
2322
|
+
reLayoutFlag.value++;
|
|
2335
2323
|
});
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2324
|
+
watch(computeScrollXVisible, () => {
|
|
2325
|
+
nextTick(() => {
|
|
2326
|
+
reLayoutFlag.value++;
|
|
2327
|
+
});
|
|
2340
2328
|
});
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
() => props.checkRowKeys ? props.checkRowKeys.length : -1,
|
|
2351
|
-
() => {
|
|
2352
|
-
checkKeyFlag.value++;
|
|
2353
|
-
}
|
|
2354
|
-
);
|
|
2355
|
-
watch(
|
|
2356
|
-
() => props.checkRowKeys,
|
|
2357
|
-
() => {
|
|
2358
|
-
checkKeyFlag.value++;
|
|
2359
|
-
}
|
|
2360
|
-
);
|
|
2361
|
-
watch(checkKeyFlag, () => {
|
|
2362
|
-
updateCheckboxModeValue();
|
|
2363
|
-
});
|
|
2364
|
-
onActivated(() => {
|
|
2365
|
-
recalculate().then(() => {
|
|
2366
|
-
refreshScroll();
|
|
2329
|
+
watch(computeScrollYVisible, () => {
|
|
2330
|
+
nextTick(() => {
|
|
2331
|
+
reLayoutFlag.value++;
|
|
2332
|
+
});
|
|
2333
|
+
});
|
|
2334
|
+
watch(reLayoutFlag, () => {
|
|
2335
|
+
recalculate().then(() => {
|
|
2336
|
+
recalculate();
|
|
2337
|
+
});
|
|
2367
2338
|
});
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
const keyField = computeKeyField.value;
|
|
2378
|
-
if (!keyField) {
|
|
2379
|
-
if (showSeq) {
|
|
2380
|
-
errLog("vxe.error.reqSupportProp", ["show-seq", "row-config.keyField"]);
|
|
2339
|
+
watch(reScrollFlag, () => {
|
|
2340
|
+
updateScrollbar().then(() => {
|
|
2341
|
+
updateScrollbar();
|
|
2342
|
+
});
|
|
2343
|
+
});
|
|
2344
|
+
watch(
|
|
2345
|
+
() => props.checkRowKey,
|
|
2346
|
+
() => {
|
|
2347
|
+
updateRadioModeValue();
|
|
2381
2348
|
}
|
|
2382
|
-
|
|
2383
|
-
|
|
2349
|
+
);
|
|
2350
|
+
const checkKeyFlag = ref(0);
|
|
2351
|
+
watch(
|
|
2352
|
+
() => props.checkRowKeys ? props.checkRowKeys.length : -1,
|
|
2353
|
+
() => {
|
|
2354
|
+
checkKeyFlag.value++;
|
|
2384
2355
|
}
|
|
2385
|
-
|
|
2386
|
-
|
|
2356
|
+
);
|
|
2357
|
+
watch(
|
|
2358
|
+
() => props.checkRowKeys,
|
|
2359
|
+
() => {
|
|
2360
|
+
checkKeyFlag.value++;
|
|
2387
2361
|
}
|
|
2388
|
-
|
|
2389
|
-
|
|
2362
|
+
);
|
|
2363
|
+
watch(checkKeyFlag, () => {
|
|
2364
|
+
updateCheckboxModeValue();
|
|
2365
|
+
});
|
|
2366
|
+
onActivated(() => {
|
|
2367
|
+
recalculate().then(() => {
|
|
2368
|
+
refreshScroll();
|
|
2369
|
+
});
|
|
2370
|
+
});
|
|
2371
|
+
nextTick(() => {
|
|
2372
|
+
loadData(props.data || []);
|
|
2373
|
+
});
|
|
2374
|
+
onMounted(() => {
|
|
2375
|
+
const { showSeq, showRadio, showCheckbox, autoResize } = props;
|
|
2376
|
+
const rowOpts = computeRowOpts.value;
|
|
2377
|
+
const { useKey } = rowOpts;
|
|
2378
|
+
const isDrag = computeIsDrag.value;
|
|
2379
|
+
const keyField = computeKeyField.value;
|
|
2380
|
+
if (!keyField) {
|
|
2381
|
+
if (showSeq) {
|
|
2382
|
+
errLog("vxe.error.reqSupportProp", ["show-seq", "row-config.keyField"]);
|
|
2383
|
+
}
|
|
2384
|
+
if (showRadio) {
|
|
2385
|
+
errLog("vxe.error.reqSupportProp", ["show-radio", "row-config.keyField"]);
|
|
2386
|
+
}
|
|
2387
|
+
if (showCheckbox) {
|
|
2388
|
+
errLog("vxe.error.reqSupportProp", ["show-checkbox", "row-config.keyField"]);
|
|
2389
|
+
}
|
|
2390
|
+
if (isDrag) {
|
|
2391
|
+
errLog("vxe.error.reqSupportProp", ["drag-config", "row-config.keyField"]);
|
|
2392
|
+
}
|
|
2390
2393
|
}
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2394
|
+
if (useKey && !keyField) {
|
|
2395
|
+
errLog("vxe.error.reqSupportProp", ["row-config.useKey", "row-config.keyField"]);
|
|
2396
|
+
}
|
|
2397
|
+
if (autoResize) {
|
|
2398
|
+
const el = refElem.value;
|
|
2399
|
+
const parentEl = getParentElem();
|
|
2400
|
+
const resizeObserver = globalResize.create(() => {
|
|
2401
|
+
if (props.autoResize) {
|
|
2402
|
+
reLayoutFlag.value++;
|
|
2403
|
+
}
|
|
2404
|
+
});
|
|
2405
|
+
if (el) {
|
|
2406
|
+
resizeObserver.observe(el);
|
|
2401
2407
|
}
|
|
2408
|
+
if (parentEl) {
|
|
2409
|
+
resizeObserver.observe(parentEl);
|
|
2410
|
+
}
|
|
2411
|
+
internalData.resizeObserver = resizeObserver;
|
|
2412
|
+
}
|
|
2413
|
+
reLayoutFlag.value++;
|
|
2414
|
+
bindScrollbarResize();
|
|
2415
|
+
globalEvents.on($xeList, "resize", () => {
|
|
2416
|
+
reLayoutFlag.value++;
|
|
2402
2417
|
});
|
|
2403
|
-
|
|
2404
|
-
|
|
2418
|
+
});
|
|
2419
|
+
onBeforeUnmount(() => {
|
|
2420
|
+
const { scrollObserver, resizeObserver } = internalData;
|
|
2421
|
+
if (resizeObserver) {
|
|
2422
|
+
resizeObserver.disconnect();
|
|
2405
2423
|
}
|
|
2406
|
-
if (
|
|
2407
|
-
|
|
2424
|
+
if (scrollObserver) {
|
|
2425
|
+
scrollObserver.disconnect();
|
|
2408
2426
|
}
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
bindScrollbarResize();
|
|
2413
|
-
globalEvents.on($xeList, "resize", () => {
|
|
2414
|
-
reLayoutFlag.value++;
|
|
2427
|
+
globalEvents.off($xeList, "resize");
|
|
2428
|
+
XEUtils.assign(reactData, createReactData());
|
|
2429
|
+
XEUtils.assign(internalData, createInternalData());
|
|
2415
2430
|
});
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
}
|
|
2425
|
-
globalEvents.off($xeList, "resize");
|
|
2426
|
-
XEUtils.assign(reactData, createReactData());
|
|
2427
|
-
XEUtils.assign(internalData, createInternalData());
|
|
2428
|
-
});
|
|
2429
|
-
$xeList.renderVN = renderVN;
|
|
2430
|
-
return $xeList;
|
|
2431
|
-
},
|
|
2432
|
-
render() {
|
|
2433
|
-
return this.renderVN();
|
|
2434
|
-
}
|
|
2435
|
-
});
|
|
2431
|
+
$xeList.renderVN = renderVN;
|
|
2432
|
+
return $xeList;
|
|
2433
|
+
},
|
|
2434
|
+
render() {
|
|
2435
|
+
return this.renderVN();
|
|
2436
|
+
}
|
|
2437
|
+
})
|
|
2438
|
+
);
|
|
2436
2439
|
export {
|
|
2437
2440
|
list_default as default
|
|
2438
2441
|
};
|