vxe-pc-ui 4.20.8 → 4.20.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/all.esm.js +2041 -2125
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/card/src/card.js +8 -6
  5. package/es/date-panel/src/date-panel.js +58 -36
  6. package/es/date-panel/style.css +22 -20
  7. package/es/date-panel/style.min.css +1 -1
  8. package/es/drawer/src/drawer.js +7 -5
  9. package/es/icon/style.css +1 -1
  10. package/es/icon-picker/src/icon-picker.js +74 -38
  11. package/es/icon-picker/style.css +9 -3
  12. package/es/icon-picker/style.min.css +1 -1
  13. package/es/layout-aside/src/layout-aside.js +6 -4
  14. package/es/layout-body/src/layout-body.js +6 -4
  15. package/es/layout-container/src/layout-container.js +11 -3
  16. package/es/list/src/list.js +81 -208
  17. package/es/menu/src/menu.js +7 -5
  18. package/es/modal/src/modal.js +7 -5
  19. package/es/scrollbar/src/scrollbar.js +28 -173
  20. package/es/select/src/select.js +243 -8
  21. package/es/select/style.css +44 -0
  22. package/es/select/style.min.css +1 -1
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/tabs/src/tabs.js +5 -4
  26. package/es/tooltip/src/tooltip.js +7 -5
  27. package/es/tooltip/style.css +2 -0
  28. package/es/tooltip/style.min.css +1 -1
  29. package/es/tree/src/tree.js +86 -212
  30. package/es/ui/index.js +1 -1
  31. package/es/ui/src/log.js +1 -1
  32. package/es/vxe-date-panel/style.css +22 -20
  33. package/es/vxe-date-panel/style.min.css +1 -1
  34. package/es/vxe-icon-picker/style.css +9 -3
  35. package/es/vxe-icon-picker/style.min.css +1 -1
  36. package/es/vxe-select/style.css +44 -0
  37. package/es/vxe-select/style.min.css +1 -1
  38. package/es/vxe-tooltip/style.css +2 -0
  39. package/es/vxe-tooltip/style.min.css +1 -1
  40. package/lib/card/src/card.js +9 -6
  41. package/lib/card/src/card.min.js +1 -1
  42. package/lib/date-panel/src/date-panel.js +56 -34
  43. package/lib/date-panel/src/date-panel.min.js +1 -1
  44. package/lib/date-panel/style/style.css +22 -20
  45. package/lib/date-panel/style/style.min.css +1 -1
  46. package/lib/drawer/src/drawer.js +7 -4
  47. package/lib/drawer/src/drawer.min.js +1 -1
  48. package/lib/icon/style/style.css +1 -1
  49. package/lib/icon/style/style.min.css +1 -1
  50. package/lib/icon-picker/src/icon-picker.js +101 -45
  51. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  52. package/lib/icon-picker/style/style.css +9 -3
  53. package/lib/icon-picker/style/style.min.css +1 -1
  54. package/lib/index.umd.js +1049 -859
  55. package/lib/index.umd.min.js +1 -1
  56. package/lib/layout-aside/src/layout-aside.js +7 -4
  57. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  58. package/lib/layout-body/src/layout-body.js +7 -4
  59. package/lib/layout-body/src/layout-body.min.js +1 -1
  60. package/lib/layout-container/src/layout-container.js +20 -4
  61. package/lib/layout-container/src/layout-container.min.js +1 -1
  62. package/lib/list/src/list.js +95 -232
  63. package/lib/list/src/list.min.js +1 -1
  64. package/lib/menu/src/menu.js +8 -4
  65. package/lib/menu/src/menu.min.js +1 -1
  66. package/lib/modal/src/modal.js +7 -4
  67. package/lib/modal/src/modal.min.js +1 -1
  68. package/lib/scrollbar/src/scrollbar.js +42 -199
  69. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  70. package/lib/select/src/select.js +315 -68
  71. package/lib/select/src/select.min.js +1 -1
  72. package/lib/select/style/style.css +44 -0
  73. package/lib/select/style/style.min.css +1 -1
  74. package/lib/style.css +1 -1
  75. package/lib/style.min.css +1 -1
  76. package/lib/tabs/src/tabs.js +6 -5
  77. package/lib/tabs/src/tabs.min.js +1 -1
  78. package/lib/tooltip/src/tooltip.js +7 -4
  79. package/lib/tooltip/src/tooltip.min.js +1 -1
  80. package/lib/tooltip/style/style.css +2 -0
  81. package/lib/tooltip/style/style.min.css +1 -1
  82. package/lib/tree/src/tree.js +101 -235
  83. package/lib/tree/src/tree.min.js +1 -1
  84. package/lib/ui/index.js +1 -1
  85. package/lib/ui/index.min.js +1 -1
  86. package/lib/ui/src/log.js +1 -1
  87. package/lib/ui/src/log.min.js +1 -1
  88. package/lib/vxe-date-panel/style/style.css +22 -20
  89. package/lib/vxe-date-panel/style/style.min.css +1 -1
  90. package/lib/vxe-icon-picker/style/style.css +9 -3
  91. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  92. package/lib/vxe-select/style/style.css +44 -0
  93. package/lib/vxe-select/style/style.min.css +1 -1
  94. package/lib/vxe-tooltip/style/style.css +2 -0
  95. package/lib/vxe-tooltip/style/style.min.css +1 -1
  96. package/package.json +2 -2
  97. package/packages/card/src/card.ts +8 -6
  98. package/packages/date-panel/src/date-panel.ts +58 -36
  99. package/packages/drawer/src/drawer.ts +7 -5
  100. package/packages/icon-picker/src/icon-picker.ts +80 -38
  101. package/packages/layout-aside/src/layout-aside.ts +6 -4
  102. package/packages/layout-body/src/layout-body.ts +6 -4
  103. package/packages/layout-container/src/layout-container.ts +13 -3
  104. package/packages/list/src/list.ts +98 -224
  105. package/packages/menu/src/menu.ts +7 -5
  106. package/packages/modal/src/modal.ts +7 -5
  107. package/packages/scrollbar/src/scrollbar.ts +44 -189
  108. package/packages/select/src/select.ts +278 -8
  109. package/packages/tabs/src/tabs.ts +5 -4
  110. package/packages/tooltip/src/tooltip.ts +7 -5
  111. package/packages/tree/src/tree.ts +103 -228
  112. package/styles/components/date-panel.scss +31 -29
  113. package/styles/components/icon-picker.scss +9 -3
  114. package/styles/components/select.scss +77 -0
  115. package/styles/components/tooltip.scss +1 -0
  116. package/types/components/card.d.ts +2 -2
  117. package/types/components/drawer.d.ts +2 -2
  118. package/types/components/gantt-module/gantt-view.d.ts +7 -16
  119. package/types/components/grid.d.ts +3 -1
  120. package/types/components/icon-picker.d.ts +21 -1
  121. package/types/components/layout-aside.d.ts +2 -2
  122. package/types/components/layout-body.d.ts +2 -2
  123. package/types/components/layout-container.d.ts +3 -1
  124. package/types/components/list.d.ts +6 -2
  125. package/types/components/menu.d.ts +2 -2
  126. package/types/components/modal.d.ts +2 -2
  127. package/types/components/scrollbar.d.ts +17 -14
  128. package/types/components/select.d.ts +28 -3
  129. package/types/components/table.d.ts +28 -22
  130. package/types/components/tabs.d.ts +2 -2
  131. package/types/components/tooltip.d.ts +2 -2
  132. package/types/components/tree.d.ts +8 -17
  133. /package/es/icon/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  134. /package/es/icon/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  135. /package/es/icon/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  136. /package/es/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  137. /package/es/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  138. /package/es/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  139. /package/lib/icon/style/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  140. /package/lib/icon/style/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  141. /package/lib/icon/style/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
  142. /package/lib/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
  143. /package/lib/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
  144. /package/lib/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
@@ -15,6 +15,21 @@ var _log = require("../../ui/src/log");
15
15
  var _input = _interopRequireDefault(require("../../input"));
16
16
  var _button = _interopRequireDefault(require("../../button"));
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ const {
19
+ getConfig,
20
+ getIcon,
21
+ getI18n,
22
+ baseUtils,
23
+ domUtils,
24
+ globalEvents,
25
+ GLOBAL_EVENT_KEYS,
26
+ globalResize,
27
+ createEvent,
28
+ renderEmptyElement
29
+ } = _ui.VxeUI;
30
+ const {
31
+ getDefVal
32
+ } = baseUtils;
18
33
  const {
19
34
  errLog
20
35
  } = (0, _log.createComponentLog)('select');
@@ -36,6 +51,9 @@ function createReactData() {
36
51
  currentOption: null,
37
52
  searchValue: '',
38
53
  searchLoading: false,
54
+ // 滚动条
55
+ yThumbHeight: 0,
56
+ xThumbWidth: 0,
39
57
  panelIndex: 0,
40
58
  panelStyle: {},
41
59
  panelPlacement: null,
@@ -55,8 +73,14 @@ function createInternalData() {
55
73
  optGroupKeyMaps: {},
56
74
  optFullValMaps: {},
57
75
  remoteValMaps: {},
58
- lastScrollLeft: 0,
76
+ // 滚动条
77
+ // scrollObserver: undefined,
78
+ // isThumbDrag: false,
79
+ thumbDragOffset: 0,
80
+ yThumbTop: 0,
81
+ xThumbLeft: 0,
59
82
  lastScrollTop: 0,
83
+ lastScrollLeft: 0,
60
84
  scrollYStore: {
61
85
  startIndex: 0,
62
86
  endIndex: 0,
@@ -75,11 +99,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
75
99
  defaultConfig: Object,
76
100
  emptyValue: {
77
101
  type: [String, Number, Boolean, Array],
78
- default: () => (0, _ui.getConfig)().select.emptyValue
102
+ default: () => getConfig().select.emptyValue
79
103
  },
80
104
  clearable: {
81
105
  type: Boolean,
82
- default: () => (0, _ui.getConfig)().select.clearable
106
+ default: () => getConfig().select.clearable
83
107
  },
84
108
  placeholder: String,
85
109
  readonly: {
@@ -94,12 +118,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
94
118
  multiple: Boolean,
95
119
  multiCharOverflow: {
96
120
  type: [Number, String],
97
- default: () => (0, _ui.getConfig)().select.multiCharOverflow
121
+ default: () => getConfig().select.multiCharOverflow
98
122
  },
99
123
  prefixIcon: String,
100
124
  allowCreate: {
101
125
  type: Boolean,
102
- default: () => (0, _ui.getConfig)().select.allowCreate
126
+ default: () => getConfig().select.allowCreate
103
127
  },
104
128
  placement: String,
105
129
  lazyOptions: Array,
@@ -121,12 +145,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
121
145
  },
122
146
  showRadio: {
123
147
  type: Boolean,
124
- default: () => (0, _ui.getConfig)().select.showRadio
148
+ default: () => getConfig().select.showRadio
125
149
  },
126
150
  radioConfig: Object,
127
151
  showCheckbox: {
128
152
  type: Boolean,
129
- default: () => (0, _ui.getConfig)().select.showCheckedButton
153
+ default: () => getConfig().select.showCheckedButton
130
154
  },
131
155
  checkboxConfig: Object,
132
156
  /**
@@ -136,7 +160,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
136
160
  zIndex: Number,
137
161
  size: {
138
162
  type: String,
139
- default: () => (0, _ui.getConfig)().select.size || (0, _ui.getConfig)().size
163
+ default: () => getConfig().select.size || getConfig().size
140
164
  },
141
165
  filterable: Boolean,
142
166
  /**
@@ -150,27 +174,27 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
150
174
  emptyText: String,
151
175
  checkedClosable: {
152
176
  type: Boolean,
153
- default: () => (0, _ui.getConfig)().select.checkedClosable
177
+ default: () => getConfig().select.checkedClosable
154
178
  },
155
179
  clearClosable: {
156
180
  type: Boolean,
157
- default: () => (0, _ui.getConfig)().select.clearClosable
181
+ default: () => getConfig().select.clearClosable
158
182
  },
159
183
  showCloseButton: {
160
184
  type: Boolean,
161
- default: () => (0, _ui.getConfig)().select.showCloseButton
185
+ default: () => getConfig().select.showCloseButton
162
186
  },
163
187
  showTotalButton: {
164
188
  type: Boolean,
165
- default: () => (0, _ui.getConfig)().select.showTotalButton
189
+ default: () => getConfig().select.showTotalButton
166
190
  },
167
191
  showCheckedButton: {
168
192
  type: Boolean,
169
- default: () => (0, _ui.getConfig)().select.showCheckedButton
193
+ default: () => getConfig().select.showCheckedButton
170
194
  },
171
195
  showClearButton: {
172
196
  type: Boolean,
173
- default: () => (0, _ui.getConfig)().select.showClearButton
197
+ default: () => getConfig().select.showClearButton
174
198
  },
175
199
  transfer: {
176
200
  type: Boolean,
@@ -179,6 +203,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
179
203
  popupConfig: Object,
180
204
  virtualYConfig: Object,
181
205
  scrollY: Object,
206
+ useScrollbar: {
207
+ type: Boolean,
208
+ default: () => getDefVal(getConfig().select.useScrollbar, getConfig().useScrollbar)
209
+ },
210
+ scrollbarConfig: Object,
182
211
  /**
183
212
  * 已废弃,被 remote-config.queryMethod 替换
184
213
  * @deprecated
@@ -190,7 +219,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
190
219
  */
191
220
  optionId: {
192
221
  type: String,
193
- default: () => (0, _ui.getConfig)().select.optionId
222
+ default: () => getConfig().select.optionId
194
223
  },
195
224
  /**
196
225
  * 已废弃,被 option-config.useKey 替换
@@ -216,10 +245,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
216
245
  const refInpSearch = (0, _vue.ref)();
217
246
  const refVirtualWrapper = (0, _vue.ref)();
218
247
  const refOptionPanel = (0, _vue.ref)();
248
+ const refVirtualSpaceElem = (0, _vue.ref)();
219
249
  const refVirtualBody = (0, _vue.ref)();
220
250
  const {
221
251
  computeSize
222
- } = (0, _ui.useSize)(props);
252
+ } = _ui.useFns.useSize(props);
253
+ const {
254
+ computeIsVScrollbar
255
+ } = _ui.useFns.useVScrollbar(props);
223
256
  const reactData = (0, _vue.reactive)(createReactData());
224
257
  const internalData = createInternalData();
225
258
  const refMaps = {
@@ -233,6 +266,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
233
266
  internalData,
234
267
  getRefMaps: () => refMaps
235
268
  };
269
+ const {
270
+ refTrackXElem,
271
+ refTrackYElem,
272
+ refThumbXElem,
273
+ refThumbYElem,
274
+ updateThumbSize,
275
+ updateThumbOffset,
276
+ clickTrackXEvent,
277
+ clickTrackYEvent,
278
+ pointerdownThumbXEvent,
279
+ pointermoveThumbXEvent,
280
+ cleatPointerThumbEvent,
281
+ pointerdownThumbYEvent,
282
+ pointermoveThumbYEvent
283
+ } = _ui.useFns.useInitVScrollbar($xeSelect);
236
284
  const computeFormReadonly = (0, _vue.computed)(() => {
237
285
  const {
238
286
  readonly
@@ -266,7 +314,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
266
314
  return popupOpts.transfer;
267
315
  }
268
316
  if (transfer === null) {
269
- const globalTransfer = (0, _ui.getConfig)().select.transfer;
317
+ const globalTransfer = getConfig().select.transfer;
270
318
  if (_xeUtils.default.isBoolean(globalTransfer)) {
271
319
  return globalTransfer;
272
320
  }
@@ -283,11 +331,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
283
331
  if (placeholder) {
284
332
  return (0, _utils.getFuncText)(placeholder);
285
333
  }
286
- const globalPlaceholder = (0, _ui.getConfig)().select.placeholder;
334
+ const globalPlaceholder = getConfig().select.placeholder;
287
335
  if (globalPlaceholder) {
288
336
  return (0, _utils.getFuncText)(globalPlaceholder);
289
337
  }
290
- return (0, _ui.getI18n)('vxe.base.pleaseSelect');
338
+ return getI18n('vxe.base.pleaseSelect');
291
339
  });
292
340
  const computeDefaultOpts = (0, _vue.computed)(() => {
293
341
  return Object.assign({}, props.defaultConfig);
@@ -319,25 +367,25 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
319
367
  return checkMaxLimit(selectVals);
320
368
  });
321
369
  const computePopupOpts = (0, _vue.computed)(() => {
322
- return Object.assign({}, (0, _ui.getConfig)().select.popupConfig, props.popupConfig);
370
+ return Object.assign({}, getConfig().select.popupConfig, props.popupConfig);
323
371
  });
324
372
  const computeVirtualYOpts = (0, _vue.computed)(() => {
325
- return Object.assign({}, (0, _ui.getConfig)().select.virtualYConfig || (0, _ui.getConfig)().select.scrollY, props.virtualYConfig || props.scrollY);
373
+ return Object.assign({}, getConfig().select.virtualYConfig || getConfig().select.scrollY, props.virtualYConfig || props.scrollY);
326
374
  });
327
375
  const computeRemoteOpts = (0, _vue.computed)(() => {
328
- return Object.assign({}, (0, _ui.getConfig)().select.remoteConfig, props.remoteConfig);
376
+ return Object.assign({}, getConfig().select.remoteConfig, props.remoteConfig);
329
377
  });
330
378
  const computeFilterOpts = (0, _vue.computed)(() => {
331
- return Object.assign({}, (0, _ui.getConfig)().select.filterConfig, props.filterConfig);
379
+ return Object.assign({}, getConfig().select.filterConfig, props.filterConfig);
332
380
  });
333
381
  const computeOptionOpts = (0, _vue.computed)(() => {
334
- return Object.assign({}, (0, _ui.getConfig)().select.optionConfig, props.optionConfig);
382
+ return Object.assign({}, getConfig().select.optionConfig, props.optionConfig);
335
383
  });
336
384
  const computeRadioOpts = (0, _vue.computed)(() => {
337
- return Object.assign({}, (0, _ui.getConfig)().select.radioConfig, props.radioConfig);
385
+ return Object.assign({}, getConfig().select.radioConfig, props.radioConfig);
338
386
  });
339
387
  const computeCheckboxOpts = (0, _vue.computed)(() => {
340
- return Object.assign({}, (0, _ui.getConfig)().select.checkboxConfig, props.checkboxConfig);
388
+ return Object.assign({}, getConfig().select.checkboxConfig, props.checkboxConfig);
341
389
  });
342
390
  const computeMultiMaxCharNum = (0, _vue.computed)(() => {
343
391
  return _xeUtils.default.toNumber(props.multiCharOverflow);
@@ -419,6 +467,71 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
419
467
  }
420
468
  return labels.join(', ');
421
469
  });
470
+ const computeScrollbarOpts = (0, _vue.computed)(() => {
471
+ return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
472
+ });
473
+ const computeScrollbarXOpts = (0, _vue.computed)(() => {
474
+ const scrollbarOpts = computeScrollbarOpts.value;
475
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
476
+ visible: false
477
+ });
478
+ });
479
+ const computeScrollbarYOpts = (0, _vue.computed)(() => {
480
+ const scrollbarOpts = computeScrollbarOpts.value;
481
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
482
+ });
483
+ const computeScrollXHeight = (0, _vue.computed)(() => {
484
+ const scrollbarOpts = computeScrollbarOpts.value;
485
+ const scrollbarXOpts = computeScrollbarXOpts.value;
486
+ return getDefVal(getDefVal(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
487
+ });
488
+ const computeScrollYWidth = (0, _vue.computed)(() => {
489
+ const scrollbarOpts = computeScrollbarOpts.value;
490
+ const scrollbarYOpts = computeScrollbarYOpts.value;
491
+ return getDefVal(getDefVal(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
492
+ });
493
+ const computeScrollXVisible = (0, _vue.computed)(() => {
494
+ const scrollbarOpts = computeScrollbarOpts.value;
495
+ const scrollbarXOpts = computeScrollbarXOpts.value;
496
+ return getDefVal(scrollbarXOpts.visible, scrollbarOpts.visible);
497
+ });
498
+ const computeScrollYVisible = (0, _vue.computed)(() => {
499
+ const scrollbarOpts = computeScrollbarOpts.value;
500
+ const scrollbarYOpts = computeScrollbarYOpts.value;
501
+ return getDefVal(scrollbarYOpts.visible, scrollbarOpts.visible);
502
+ });
503
+ const computeScrollXAutoHide = (0, _vue.computed)(() => {
504
+ const scrollbarOpts = computeScrollbarOpts.value;
505
+ const scrollbarXOpts = computeScrollbarXOpts.value;
506
+ return getDefVal(getDefVal(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
507
+ });
508
+ const computeScrollYAutoHide = (0, _vue.computed)(() => {
509
+ const scrollbarOpts = computeScrollbarOpts.value;
510
+ const scrollbarYOpts = computeScrollbarYOpts.value;
511
+ return getDefVal(getDefVal(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
512
+ });
513
+ const computeScrollbarWrapperClss = (0, _vue.computed)(() => {
514
+ const {
515
+ yThumbHeight,
516
+ xThumbWidth
517
+ } = reactData;
518
+ const scrollbarXToTop = computeScrollbarXToTop.value;
519
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
520
+ const scrollXVisible = computeScrollXVisible.value;
521
+ const scrollYVisible = computeScrollYVisible.value;
522
+ return domUtils.buildClass(['vxe-scrollbar is--virtual', `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`, `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`], {
523
+ 'overflow-y': yThumbHeight,
524
+ 'overflow-x': xThumbWidth
525
+ });
526
+ });
527
+ const computeScrollbarXToTop = (0, _vue.computed)(() => {
528
+ const scrollbarXOpts = computeScrollbarXOpts.value;
529
+ return scrollbarXOpts.position === 'top';
530
+ });
531
+ const computeScrollbarYToLeft = (0, _vue.computed)(() => {
532
+ const scrollbarYOpts = computeScrollbarYOpts.value;
533
+ return scrollbarYOpts.position === 'left';
534
+ });
422
535
  const callSlot = (slotFunc, params) => {
423
536
  if (slotFunc) {
424
537
  if (_xeUtils.default.isString(slotFunc)) {
@@ -431,7 +544,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
431
544
  return [];
432
545
  };
433
546
  const dispatchEvent = (type, params, evnt) => {
434
- emit(type, (0, _ui.createEvent)(evnt, {
547
+ emit(type, createEvent(evnt, {
435
548
  $select: $xeSelect
436
549
  }, params));
437
550
  };
@@ -780,7 +893,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
780
893
  if (checkMaxLimit(currVlas)) {
781
894
  if (_ui.VxeUI) {
782
895
  _ui.VxeUI.modal.message({
783
- content: (0, _ui.getI18n)('vxe.select.overSizeErr', [max]),
896
+ content: getI18n('vxe.select.overSizeErr', [max]),
784
897
  status: 'warning'
785
898
  });
786
899
  }
@@ -965,12 +1078,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
965
1078
  trigger
966
1079
  } = popupOpts;
967
1080
  if (!isDisabled) {
968
- const isTab = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.TAB);
969
- const isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
970
- const isEsc = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ESCAPE);
971
- const isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
972
- const isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
973
- const isDel = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.DELETE);
1081
+ const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB);
1082
+ const isEnter = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER);
1083
+ const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
1084
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
1085
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
1086
+ const isDel = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.DELETE);
974
1087
  if (isTab) {
975
1088
  reactData.isActivated = false;
976
1089
  }
@@ -1336,13 +1449,25 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1336
1449
  }
1337
1450
  });
1338
1451
  };
1452
+ const updateScrollbar = () => {
1453
+ const isVScrollbar = computeIsVScrollbar.value;
1454
+ if (isVScrollbar) {
1455
+ return (0, _vue.nextTick)().then(() => {
1456
+ updateThumbSize();
1457
+ updateThumbOffset();
1458
+ });
1459
+ }
1460
+ return Promise.resolve();
1461
+ };
1339
1462
  /**
1340
1463
  * 重新计算列表
1341
1464
  */
1342
1465
  const recalculate = () => {
1343
1466
  const el = refElem.value;
1344
1467
  if (el && el.clientWidth && el.clientHeight) {
1345
- return computeScrollLoad();
1468
+ return computeScrollLoad().then(() => {
1469
+ return updateScrollbar();
1470
+ });
1346
1471
  }
1347
1472
  return Promise.resolve();
1348
1473
  };
@@ -1384,6 +1509,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1384
1509
  const scrollLeft = scrollBodyElem.scrollLeft;
1385
1510
  const isX = scrollLeft !== internalData.lastScrollLeft;
1386
1511
  const isY = scrollTop !== internalData.lastScrollTop;
1512
+ updateThumbOffset();
1387
1513
  internalData.lastScrollTop = scrollTop;
1388
1514
  internalData.lastScrollLeft = scrollLeft;
1389
1515
  if (reactData.scrollYLoad) {
@@ -1471,6 +1597,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1471
1597
  };
1472
1598
  const selectMethods = {
1473
1599
  dispatchEvent,
1600
+ getScrollViewElem() {
1601
+ const viewEl = refVirtualWrapper.value;
1602
+ return viewEl || null;
1603
+ },
1474
1604
  loadData,
1475
1605
  reloadData(datas) {
1476
1606
  internalData.isLoaded = false;
@@ -1524,6 +1654,28 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1524
1654
  recalculate,
1525
1655
  clearScroll
1526
1656
  };
1657
+ const bindScrollbarResize = () => {
1658
+ const isVScrollbar = computeIsVScrollbar.value;
1659
+ const {
1660
+ scrollObserver
1661
+ } = internalData;
1662
+ if (isVScrollbar) {
1663
+ if (!scrollObserver) {
1664
+ const el = refElem.value;
1665
+ const viewInnerEl = refVirtualSpaceElem.value;
1666
+ const scrollObserver = globalResize.create(() => {
1667
+ reScrollFlag.value++;
1668
+ });
1669
+ if (el) {
1670
+ scrollObserver.observe(el);
1671
+ }
1672
+ if (viewInnerEl) {
1673
+ scrollObserver.observe(viewInnerEl);
1674
+ }
1675
+ internalData.scrollObserver = scrollObserver;
1676
+ }
1677
+ }
1678
+ };
1527
1679
  Object.assign($xeSelect, selectMethods);
1528
1680
  const renderRadio = (option, isOptGroup, isChecked, isDisabled) => {
1529
1681
  const radioOpts = computeRadioOpts.value;
@@ -1532,7 +1684,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1532
1684
  trigger
1533
1685
  } = radioOpts;
1534
1686
  if (isOptGroup || showIcon === false) {
1535
- return (0, _ui.renderEmptyElement)($xeSelect);
1687
+ return renderEmptyElement($xeSelect);
1536
1688
  }
1537
1689
  const ons = {};
1538
1690
  if (!trigger || trigger === 'default') {
@@ -1549,7 +1701,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1549
1701
  'is--disabled': isDisabled
1550
1702
  }]
1551
1703
  }, ons), [(0, _vue.h)('span', {
1552
- class: ['vxe-radio--icon', isChecked ? (0, _ui.getIcon)().RADIO_CHECKED : isDisabled ? (0, _ui.getIcon)().RADIO_DISABLED_UNCHECKED : (0, _ui.getIcon)().RADIO_UNCHECKED]
1704
+ class: ['vxe-radio--icon', isChecked ? getIcon().RADIO_CHECKED : isDisabled ? getIcon().RADIO_DISABLED_UNCHECKED : getIcon().RADIO_UNCHECKED]
1553
1705
  })]);
1554
1706
  };
1555
1707
  const renderCheckbox = (option, isOptGroup, isChecked, isDisabled) => {
@@ -1559,7 +1711,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1559
1711
  trigger
1560
1712
  } = checkboxOpts;
1561
1713
  if (isOptGroup || showIcon === false) {
1562
- return (0, _ui.renderEmptyElement)($xeSelect);
1714
+ return renderEmptyElement($xeSelect);
1563
1715
  }
1564
1716
  const ons = {};
1565
1717
  if (!trigger || trigger === 'default') {
@@ -1576,7 +1728,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1576
1728
  'is--disabled': isDisabled
1577
1729
  }]
1578
1730
  }, ons), [(0, _vue.h)('span', {
1579
- class: ['vxe-checkbox--icon', isChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : isDisabled ? (0, _ui.getIcon)().CHECKBOX_DISABLED_UNCHECKED : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
1731
+ class: ['vxe-checkbox--icon', isChecked ? getIcon().CHECKBOX_CHECKED : isDisabled ? getIcon().CHECKBOX_DISABLED_UNCHECKED : getIcon().CHECKBOX_UNCHECKED]
1580
1732
  })]);
1581
1733
  };
1582
1734
  const renderOption = list => {
@@ -1685,8 +1837,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1685
1837
  key: 2,
1686
1838
  class: 'vxe-select-option--add-icon'
1687
1839
  }, [(0, _vue.h)('i', {
1688
- class: (0, _ui.getIcon)().SELECT_ADD_OPTION
1689
- })]) : (0, _ui.renderEmptyElement)($xeSelect)] : optVNs) : (0, _ui.renderEmptyElement)($xeSelect);
1840
+ class: getIcon().SELECT_ADD_OPTION
1841
+ })]) : renderEmptyElement($xeSelect)] : optVNs) : renderEmptyElement($xeSelect);
1690
1842
  });
1691
1843
  };
1692
1844
  const renderOpts = () => {
@@ -1698,17 +1850,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1698
1850
  return [(0, _vue.h)('div', {
1699
1851
  class: 'vxe-select--search-loading'
1700
1852
  }, [(0, _vue.h)('i', {
1701
- class: ['vxe-select--search-icon', (0, _ui.getIcon)().SELECT_LOADED]
1853
+ class: ['vxe-select--search-icon', getIcon().SELECT_LOADED]
1702
1854
  }), (0, _vue.h)('span', {
1703
1855
  class: 'vxe-select--search-text'
1704
- }, (0, _ui.getI18n)('vxe.select.loadingText'))])];
1856
+ }, getI18n('vxe.select.loadingText'))])];
1705
1857
  }
1706
1858
  if (optList.length) {
1707
1859
  return renderOption(optList);
1708
1860
  }
1709
1861
  return [(0, _vue.h)('div', {
1710
1862
  class: 'vxe-select--empty-placeholder'
1711
- }, props.emptyText || (0, _ui.getI18n)('vxe.select.emptyText'))];
1863
+ }, props.emptyText || getI18n('vxe.select.emptyText'))];
1712
1864
  };
1713
1865
  const renderVN = () => {
1714
1866
  const {
@@ -1728,9 +1880,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1728
1880
  optList,
1729
1881
  visiblePanel,
1730
1882
  bodyHeight,
1731
- topSpaceHeight
1883
+ topSpaceHeight,
1884
+ xThumbWidth,
1885
+ yThumbHeight
1732
1886
  } = reactData;
1733
1887
  const vSize = computeSize.value;
1888
+ const isVScrollbar = computeIsVScrollbar.value;
1734
1889
  const isDisabled = computeIsDisabled.value;
1735
1890
  const selectLabel = computeSelectLabel.value;
1736
1891
  const fullLabel = computeFullLabel.value;
@@ -1761,6 +1916,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1761
1916
  appendTo
1762
1917
  } = popupOpts;
1763
1918
  const ppClassName = popupOpts.className || props.popupClassName;
1919
+ const scrollbarOpts = computeScrollbarOpts.value;
1920
+ const scrollXVisible = computeScrollXVisible.value;
1921
+ const scrollYVisible = computeScrollYVisible.value;
1922
+ const scrollbarXToTop = computeScrollbarXToTop.value;
1923
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
1924
+ const scrollXAutoHide = computeScrollXAutoHide.value;
1925
+ const scrollYAutoHide = computeScrollYAutoHide.value;
1926
+ const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
1764
1927
  return (0, _vue.h)('div', {
1765
1928
  ref: refElem,
1766
1929
  class: ['vxe-select', className ? _xeUtils.default.isFunction(className) ? className({
@@ -1785,7 +1948,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1785
1948
  disabled: isDisabled,
1786
1949
  type: 'text',
1787
1950
  prefixIcon: props.prefixIcon,
1788
- suffixIcon: loading ? (0, _ui.getIcon)().SELECT_LOADED : visiblePanel ? (0, _ui.getIcon)().SELECT_OPEN : (0, _ui.getIcon)().SELECT_CLOSE,
1951
+ suffixIcon: loading ? getIcon().SELECT_LOADED : visiblePanel ? getIcon().SELECT_OPEN : getIcon().SELECT_CLOSE,
1789
1952
  autoFocus: false,
1790
1953
  title: fullLabel,
1791
1954
  modelValue: selectLabel,
@@ -1824,33 +1987,41 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1824
1987
  clearable: true,
1825
1988
  disabled: false,
1826
1989
  readonly: false,
1827
- placeholder: (0, _ui.getI18n)('vxe.select.search'),
1828
- prefixIcon: (0, _ui.getIcon)().INPUT_SEARCH,
1990
+ placeholder: getI18n('vxe.select.search'),
1991
+ prefixIcon: getIcon().INPUT_SEARCH,
1829
1992
  'onUpdate:modelValue': modelSearchEvent,
1830
1993
  onFocus: focusSearchEvent,
1831
1994
  onChange: triggerSearchEvent,
1832
1995
  onSearch: triggerSearchEvent
1833
- })]) : (0, _ui.renderEmptyElement)($xeSelect), showCheckedButton && multiple || showClearButton || headerSlot ? (0, _vue.h)('div', {
1996
+ })]) : renderEmptyElement($xeSelect), showCheckedButton && multiple || showClearButton || headerSlot ? (0, _vue.h)('div', {
1834
1997
  class: 'vxe-select--panel-header'
1835
1998
  }, headerSlot ? callSlot(headerSlot, {}) : [(0, _vue.h)('div', {
1836
1999
  class: 'vxe-select--header-button'
1837
2000
  }, [(0, _vue.h)('div', {
1838
2001
  class: 'vxe-select--header-btns'
1839
2002
  }, [showCheckedButton && multiple ? (0, _vue.h)(_button.default, {
1840
- content: (0, _ui.getI18n)('vxe.select.allChecked'),
2003
+ content: getI18n('vxe.select.allChecked'),
1841
2004
  mode: 'text',
1842
2005
  onClick: allCheckedPanelEvent
1843
- }) : (0, _ui.renderEmptyElement)($xeSelect), showClearButton ? (0, _vue.h)(_button.default, {
1844
- content: (0, _ui.getI18n)('vxe.select.clear'),
2006
+ }) : renderEmptyElement($xeSelect), showClearButton ? (0, _vue.h)(_button.default, {
2007
+ content: getI18n('vxe.select.clear'),
1845
2008
  mode: 'text',
1846
2009
  onClick: clearCheckedPanelEvent
1847
- }) : (0, _ui.renderEmptyElement)($xeSelect)])])]) : (0, _ui.renderEmptyElement)($xeSelect), (0, _vue.h)('div', {
1848
- class: 'vxe-select--panel-body'
2010
+ }) : renderEmptyElement($xeSelect)])])]) : renderEmptyElement($xeSelect), (0, _vue.h)('div', {
2011
+ class: ['vxe-select--panel-body', isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
2012
+ 'is--virtual-scrollbar': isVScrollbar,
2013
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
2014
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
2015
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
2016
+ 'overflow-y': yThumbHeight,
2017
+ 'overflow-x': xThumbWidth
2018
+ }]
1849
2019
  }, [(0, _vue.h)('div', {
1850
2020
  ref: refVirtualWrapper,
1851
2021
  class: 'vxe-select-option--wrapper',
1852
2022
  onScroll: scrollEvent
1853
2023
  }, [(0, _vue.h)('div', {
2024
+ ref: refVirtualSpaceElem,
1854
2025
  class: 'vxe-select--y-space',
1855
2026
  style: {
1856
2027
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -1861,19 +2032,49 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1861
2032
  style: {
1862
2033
  marginTop: `${topSpaceHeight}px`
1863
2034
  }
1864
- }, renderOpts())])]), footerSlot || showTotalButton || showCloseButton && multiple ? (0, _vue.h)('div', {
2035
+ }, renderOpts())]),
2036
+ /**
2037
+ * 滚动条
2038
+ */
2039
+ isVScrollbar ? (0, _vue.h)('div', {
2040
+ class: scrollbarWrapperClss
2041
+ }, [scrollXVisible === false ? renderEmptyElement($xeSelect) : (0, _vue.h)('div', {
2042
+ ref: refTrackXElem,
2043
+ class: 'vxe-scrollbar--track-x',
2044
+ onClick: clickTrackXEvent
2045
+ }, [(0, _vue.h)('div', {
2046
+ ref: refThumbXElem,
2047
+ class: 'vxe-scrollbar--thumb-x',
2048
+ onPointerdown: pointerdownThumbXEvent,
2049
+ onPointermove: pointermoveThumbXEvent,
2050
+ onPointerup: cleatPointerThumbEvent,
2051
+ onPointercancel: cleatPointerThumbEvent,
2052
+ onLostpointercapture: cleatPointerThumbEvent
2053
+ })]), scrollYVisible === false ? renderEmptyElement($xeSelect) : (0, _vue.h)('div', {
2054
+ ref: refTrackYElem,
2055
+ class: 'vxe-scrollbar--track-y',
2056
+ onClick: clickTrackYEvent
2057
+ }, [(0, _vue.h)('div', {
2058
+ ref: refThumbYElem,
2059
+ class: 'vxe-scrollbar--thumb-y',
2060
+ onPointerdown: pointerdownThumbYEvent,
2061
+ onPointermove: pointermoveThumbYEvent,
2062
+ onPointerup: cleatPointerThumbEvent,
2063
+ onPointercancel: cleatPointerThumbEvent,
2064
+ onLostpointercapture: cleatPointerThumbEvent
2065
+ })])]) : renderEmptyElement($xeSelect)]), footerSlot || showTotalButton || showCloseButton && multiple ? (0, _vue.h)('div', {
1865
2066
  class: 'vxe-select--panel-footer'
1866
2067
  }, footerSlot ? callSlot(footerSlot, {}) : [(0, _vue.h)('div', {
1867
2068
  class: 'vxe-select--footer-button'
1868
2069
  }, [showTotalButton ? (0, _vue.h)('div', {
1869
2070
  class: 'vxe-select--total-btns'
1870
- }, (0, _ui.getI18n)('vxe.select.total', [selectVals.length, optList.length])) : (0, _ui.renderEmptyElement)($xeSelect), showCloseButton && multiple ? (0, _vue.h)('div', {
2071
+ }, getI18n('vxe.select.total', [selectVals.length, optList.length])) : renderEmptyElement($xeSelect), showCloseButton && multiple ? (0, _vue.h)('div', {
1871
2072
  class: 'vxe-select--oper-btns'
1872
2073
  }, [(0, _vue.h)(_button.default, {
1873
- content: (0, _ui.getI18n)('vxe.select.close'),
2074
+ content: getI18n('vxe.select.close'),
1874
2075
  mode: 'text',
1875
2076
  onClick: closePanelEvent
1876
- })]) : (0, _ui.renderEmptyElement)($xeSelect)])]) : (0, _ui.renderEmptyElement)($xeSelect)])] : [])])]);
2077
+ })]) : renderEmptyElement($xeSelect)])]) : renderEmptyElement($xeSelect)])] : [])])]);
1877
2078
  };
1878
2079
  (0, _vue.watch)(() => reactData.staticOptions, val => {
1879
2080
  loadData(val);
@@ -1884,6 +2085,42 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1884
2085
  (0, _vue.watch)(() => props.optionGroups, val => {
1885
2086
  loadData(val || []);
1886
2087
  });
2088
+ const reScrollFlag = (0, _vue.ref)(0);
2089
+ const reLayoutFlag = (0, _vue.ref)(0);
2090
+ (0, _vue.watch)(computeIsVScrollbar, () => {
2091
+ (0, _vue.nextTick)(() => {
2092
+ bindScrollbarResize();
2093
+ (0, _vue.nextTick)(() => {
2094
+ reLayoutFlag.value++;
2095
+ });
2096
+ });
2097
+ });
2098
+ (0, _vue.watch)(computeScrollYWidth, () => {
2099
+ reLayoutFlag.value++;
2100
+ });
2101
+ (0, _vue.watch)(computeScrollXHeight, () => {
2102
+ reLayoutFlag.value++;
2103
+ });
2104
+ (0, _vue.watch)(computeScrollXVisible, () => {
2105
+ (0, _vue.nextTick)(() => {
2106
+ reLayoutFlag.value++;
2107
+ });
2108
+ });
2109
+ (0, _vue.watch)(computeScrollYVisible, () => {
2110
+ (0, _vue.nextTick)(() => {
2111
+ reLayoutFlag.value++;
2112
+ });
2113
+ });
2114
+ (0, _vue.watch)(reLayoutFlag, () => {
2115
+ recalculate().then(() => {
2116
+ recalculate();
2117
+ });
2118
+ });
2119
+ (0, _vue.watch)(reScrollFlag, () => {
2120
+ updateScrollbar().then(() => {
2121
+ updateScrollbar();
2122
+ });
2123
+ });
1887
2124
  (0, _vue.onMounted)(() => {
1888
2125
  (0, _vue.nextTick)(() => {
1889
2126
  const {
@@ -1896,18 +2133,28 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1896
2133
  loadData(options);
1897
2134
  }
1898
2135
  });
1899
- _ui.globalEvents.on($xeSelect, 'mousedown', handleGlobalMousedownEvent);
1900
- _ui.globalEvents.on($xeSelect, 'keydown', handleGlobalKeydownEvent);
1901
- _ui.globalEvents.on($xeSelect, 'blur', handleGlobalBlurEvent);
1902
- _ui.globalEvents.on($xeSelect, 'resize', handleGlobalResizeEvent);
1903
- _ui.globalEvents.on($xeSelect, 'scroll', handleGlobalScrollEvent);
2136
+ reLayoutFlag.value++;
2137
+ bindScrollbarResize();
2138
+ globalEvents.on($xeSelect, 'mousedown', handleGlobalMousedownEvent);
2139
+ globalEvents.on($xeSelect, 'keydown', handleGlobalKeydownEvent);
2140
+ globalEvents.on($xeSelect, 'blur', handleGlobalBlurEvent);
2141
+ globalEvents.on($xeSelect, 'resize', handleGlobalResizeEvent);
2142
+ globalEvents.on($xeSelect, 'scroll', handleGlobalScrollEvent);
2143
+ });
2144
+ (0, _vue.onBeforeUnmount)(() => {
2145
+ const {
2146
+ scrollObserver
2147
+ } = internalData;
2148
+ if (scrollObserver) {
2149
+ scrollObserver.disconnect();
2150
+ }
1904
2151
  });
1905
2152
  (0, _vue.onUnmounted)(() => {
1906
- _ui.globalEvents.off($xeSelect, 'mousedown');
1907
- _ui.globalEvents.off($xeSelect, 'keydown');
1908
- _ui.globalEvents.off($xeSelect, 'blur');
1909
- _ui.globalEvents.off($xeSelect, 'resize');
1910
- _ui.globalEvents.off($xeSelect, 'scroll');
2153
+ globalEvents.off($xeSelect, 'mousedown');
2154
+ globalEvents.off($xeSelect, 'keydown');
2155
+ globalEvents.off($xeSelect, 'blur');
2156
+ globalEvents.off($xeSelect, 'resize');
2157
+ globalEvents.off($xeSelect, 'scroll');
1911
2158
  _xeUtils.default.assign(reactData, createReactData());
1912
2159
  _xeUtils.default.assign(internalData, createInternalData());
1913
2160
  });