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
@@ -1,11 +1,14 @@
1
1
  import { h, Teleport, ref, inject, watch, computed, provide, onBeforeUnmount, reactive, nextTick, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
- import { getConfig, getIcon, getI18n, globalEvents, createEvent, renderer, useSize, GLOBAL_EVENT_KEYS, renderEmptyElement } from '../../ui';
4
+ import { VxeUI } from '../../ui';
5
5
  import { getEventTargetNode, getPopupContainer, toCssUnit, updatePanelPlacement } from '../../ui/src/dom';
6
6
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
8
  import VxeInputComponent from '../../input';
9
+ import VxeScrollbarComponent from '../../scrollbar';
10
+ const { getConfig, getIcon, getI18n, baseUtils, globalEvents, createEvent, renderer, useFns, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI;
11
+ const { getDefVal } = baseUtils;
9
12
  function createReactData() {
10
13
  return {
11
14
  initialized: false,
@@ -66,7 +69,12 @@ export default defineVxeComponent({
66
69
  transfer: {
67
70
  type: Boolean,
68
71
  default: null
69
- }
72
+ },
73
+ useScrollbar: {
74
+ type: Boolean,
75
+ default: () => getDefVal(getConfig().iconPicker.useScrollbar, getConfig().useScrollbar)
76
+ },
77
+ scrollbarConfig: Object
70
78
  },
71
79
  emits: [
72
80
  'update:modelValue',
@@ -82,7 +90,8 @@ export default defineVxeComponent({
82
90
  const $xeForm = inject('$xeForm', null);
83
91
  const formItemInfo = inject('xeFormItemInfo', null);
84
92
  const xID = XEUtils.uniqueId();
85
- const { computeSize } = useSize(props);
93
+ const { computeSize } = useFns.useSize(props);
94
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
86
95
  const reactData = reactive(createReactData());
87
96
  const internalData = createInternalData();
88
97
  const refElem = ref();
@@ -200,6 +209,25 @@ export default defineVxeComponent({
200
209
  const iconList = computeIconList.value;
201
210
  return selectIcon ? iconList.find(item => item.icon === selectIcon) : null;
202
211
  });
212
+ const computeScrollbarOpts = computed(() => {
213
+ return Object.assign({}, getConfig().iconPicker.scrollbarConfig, props.scrollbarConfig);
214
+ });
215
+ const computeScrollbarProps = computed(() => {
216
+ const scrollbarOpts = computeScrollbarOpts.value;
217
+ const { viewClassName, viewInnerClassName } = scrollbarOpts;
218
+ return {
219
+ width: scrollbarOpts.width,
220
+ height: scrollbarOpts.height,
221
+ autoHide: scrollbarOpts.autoHide,
222
+ visible: scrollbarOpts.visible,
223
+ xConfig: scrollbarOpts.xConfig,
224
+ yConfig: scrollbarOpts.yConfig,
225
+ className: scrollbarOpts.className,
226
+ viewAttrs: scrollbarOpts.viewAttrs,
227
+ viewClassName: 'vxe-ico-picker--scrollbar-list-wrapper-view' + (viewClassName ? (' ' + viewClassName) : ''),
228
+ viewInnerClassName: 'vxe-ico-picker--scrollbar-list-wrapper-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
229
+ };
230
+ });
203
231
  const updateZindex = () => {
204
232
  if (reactData.panelIndex < getLastZIndex()) {
205
233
  reactData.panelIndex = nextZIndex();
@@ -486,51 +514,59 @@ export default defineVxeComponent({
486
514
  const renderIconWrapper = () => {
487
515
  const { showIconTitle } = props;
488
516
  const { selectIcon, iconList } = reactData;
517
+ const isVScrollbar = computeIsVScrollbar.value;
518
+ const scrollbarProps = computeScrollbarProps.value;
489
519
  if (!iconList.length) {
490
520
  return h('div', {
491
521
  class: 'vxe-ico-picker--empty-placeholder'
492
522
  }, getI18n('vxe.iconPicker.emptyText'));
493
523
  }
524
+ const iconVNs = iconList.map(item => {
525
+ const { iconRender } = item;
526
+ const compConf = iconRender ? renderer.get(iconRender.name) : null;
527
+ const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null;
528
+ return h('div', {
529
+ class: ['vxe-ico-picker--item', {
530
+ 'is--selected': selectIcon === item.icon
531
+ }]
532
+ }, [
533
+ h('div', {
534
+ class: 'vxe-ico-picker--item-inner',
535
+ onClick(evnt) {
536
+ const isDisabled = computeIsDisabled.value;
537
+ if (!isDisabled) {
538
+ handleClickIconEvent(evnt, item);
539
+ }
540
+ }
541
+ }, [
542
+ h('div', {
543
+ class: 'vxe-ico-picker--item-icon'
544
+ }, iconMethod && iconRender
545
+ ? getSlotVNs(iconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
546
+ : [
547
+ h('i', {
548
+ class: item.icon || ''
549
+ })
550
+ ]),
551
+ showIconTitle
552
+ ? h('div', {
553
+ class: 'vxe-ico-picker--item-title'
554
+ }, `${item.title || ''}`)
555
+ : renderEmptyElement($xeIconPicker)
556
+ ])
557
+ ]);
558
+ });
559
+ if (isVScrollbar) {
560
+ return h(VxeScrollbarComponent, Object.assign({ class: 'vxe-ico-picker--scrollbar-list-wrapper' }, scrollbarProps), {
561
+ default: () => iconVNs
562
+ });
563
+ }
494
564
  return h('div', {
495
565
  class: 'vxe-ico-picker--list-wrapper'
496
566
  }, [
497
567
  h('div', {
498
568
  class: 'vxe-ico-picker--list'
499
- }, iconList.map(item => {
500
- const { iconRender } = item;
501
- const compConf = iconRender ? renderer.get(iconRender.name) : null;
502
- const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null;
503
- return h('div', {
504
- class: ['vxe-ico-picker--item', {
505
- 'is--selected': selectIcon === item.icon
506
- }]
507
- }, [
508
- h('div', {
509
- class: 'vxe-ico-picker--item-inner',
510
- onClick(evnt) {
511
- const isDisabled = computeIsDisabled.value;
512
- if (!isDisabled) {
513
- handleClickIconEvent(evnt, item);
514
- }
515
- }
516
- }, [
517
- h('div', {
518
- class: 'vxe-ico-picker--item-icon'
519
- }, iconMethod && iconRender
520
- ? getSlotVNs(iconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
521
- : [
522
- h('i', {
523
- class: item.icon || ''
524
- })
525
- ]),
526
- showIconTitle
527
- ? h('div', {
528
- class: 'vxe-ico-picker--item-title'
529
- }, `${item.title || ''}`)
530
- : renderEmptyElement($xeIconPicker)
531
- ])
532
- ]);
533
- }))
569
+ }, iconVNs)
534
570
  ]);
535
571
  };
536
572
  const renderIconView = () => {
@@ -121,15 +121,21 @@
121
121
  color: var(--vxe-ui-font-primary-color);
122
122
  }
123
123
 
124
- .vxe-ico-picker--list-wrapper {
124
+ .vxe-ico-picker--list-wrapper,
125
+ .vxe-ico-picker--scrollbar-list-wrapper {
125
126
  overflow-x: hidden;
126
127
  overflow-y: auto;
127
128
  height: var(--vxe-ui-icon-picker-panel-height);
128
- max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.3em));
129
129
  padding: var(--vxe-ui-layout-padding-qtr);
130
130
  }
131
131
 
132
- .vxe-ico-picker--list {
132
+ .vxe-ico-picker--list-wrapper,
133
+ .vxe-ico-picker--scrollbar-list-wrapper-view {
134
+ max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.6em));
135
+ }
136
+
137
+ .vxe-ico-picker--list,
138
+ .vxe-ico-picker--scrollbar-list-wrapper-inner {
133
139
  display: flex;
134
140
  flex-direction: row;
135
141
  flex-wrap: wrap;
@@ -1 +1 @@
1
- .vxe-ico-picker,.vxe-ico-picker--panel{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-default)}.vxe-ico-picker--panel.size--medium,.vxe-ico-picker.size--medium{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-medium)}.vxe-ico-picker--panel.size--small,.vxe-ico-picker.size--small{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-small)}.vxe-ico-picker--panel.size--mini,.vxe-ico-picker.size--mini{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-mini)}.vxe-ico-picker{position:relative;display:inline-block;font-size:var(--vxe-ui-ico-picker-current-font-size);color:var(--vxe-ui-font-color);width:100px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color);height:var(--vxe-ui-ico-picker-current-height);line-height:var(--vxe-ui-ico-picker-current-height)}.vxe-ico-picker.is--disabled{background-color:var(--vxe-ui-input-disabled-background-color);color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-ico-picker.show--clear:hover .vxe-ico-picker--clear-icon{display:block}.vxe-ico-picker.is--active{border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--inner{display:flex;flex-direction:row;width:100%;padding:0 .5em}.vxe-ico-picker--input{position:absolute;z-index:-1;width:1px;height:1px;outline:0;border:0}.vxe-ico-picker--icon{flex-grow:1;display:inline-flex;flex-direction:row;align-items:center;justify-content:left;padding:0 .5em}.vxe-ico-picker--icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--placeholder{flex-grow:1;color:var(--vxe-ui-input-placeholder-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-ico-picker--suffix{display:flex;flex-direction:row;flex-shrink:0;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--suffix .vxe-ico-picker--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-ico-picker--panel-search{display:block;flex-shrink:0;padding:var(--vxe-ui-layout-padding-default)}.vxe-ico-picker--panel-search .vxe-ico-picker-search--input{width:100%}.vxe-ico-picker--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-ico-picker--clear-icon{display:none;padding-right:.5em;height:100%;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--clear-icon:hover{color:var(--vxe-ui-font-color)}.vxe-ico-picker--clear-icon:active{color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--list-wrapper{overflow-x:hidden;overflow-y:auto;height:var(--vxe-ui-icon-picker-panel-height);max-height:var(--vxe-ui-icon-picker-panel-max-height,var(--vxe-ui-icon-picker-panel-height,22.3em));padding:var(--vxe-ui-layout-padding-qtr)}.vxe-ico-picker--list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-ico-picker--item{display:flex;flex-direction:column;width:var(--vxe-ui-icon-picker-item-width,25%);padding:var(--vxe-ui-layout-padding-half)}.vxe-ico-picker--item .vxe-ico-picker--item-inner{padding:.2em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-ico-picker--item .vxe-ico-picker--item-inner:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-ico-picker--item.is--selected .vxe-ico-picker--item-inner{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--item-icon{flex-grow:1;display:flex;flex-direction:row;align-items:center;justify-content:center;height:1.5em;font-size:var(--vxe-ui-icon-picker-panel-icon-font-size)}.vxe-ico-picker--item-icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--item-title{padding:0 .2em;line-height:1.3em;flex-shrink:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em}.vxe-ico-picker--item-icon,.vxe-ico-picker--item-title{width:100%}.vxe-ico-picker--panel-wrapper{position:relative;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-ico-picker--panel{display:none;position:absolute;left:0;padding:4px 0;font-size:var(--vxe-ui-ico-picker-current-font-size);color:var(--vxe-ui-font-color);text-align:left;width:20em}.vxe-ico-picker--panel:not(.is--transfer){min-width:100%}.vxe-ico-picker--panel.is--transfer{position:fixed}.vxe-ico-picker--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-ico-picker--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-ico-picker--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-ico-picker--empty-placeholder{display:flex;flex-direction:row;align-items:center;justify-content:center;padding:0 .6em;text-align:center;min-height:4em}
1
+ .vxe-ico-picker,.vxe-ico-picker--panel{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-default)}.vxe-ico-picker--panel.size--medium,.vxe-ico-picker.size--medium{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-medium)}.vxe-ico-picker--panel.size--small,.vxe-ico-picker.size--small{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-small)}.vxe-ico-picker--panel.size--mini,.vxe-ico-picker.size--mini{--vxe-ui-ico-picker-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-ico-picker-current-height:var(--vxe-ui-input-height-mini)}.vxe-ico-picker{position:relative;display:inline-block;font-size:var(--vxe-ui-ico-picker-current-font-size);color:var(--vxe-ui-font-color);width:100px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color);height:var(--vxe-ui-ico-picker-current-height);line-height:var(--vxe-ui-ico-picker-current-height)}.vxe-ico-picker.is--disabled{background-color:var(--vxe-ui-input-disabled-background-color);color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-ico-picker.show--clear:hover .vxe-ico-picker--clear-icon{display:block}.vxe-ico-picker.is--active{border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--inner{display:flex;flex-direction:row;width:100%;padding:0 .5em}.vxe-ico-picker--input{position:absolute;z-index:-1;width:1px;height:1px;outline:0;border:0}.vxe-ico-picker--icon{flex-grow:1;display:inline-flex;flex-direction:row;align-items:center;justify-content:left;padding:0 .5em}.vxe-ico-picker--icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--placeholder{flex-grow:1;color:var(--vxe-ui-input-placeholder-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-ico-picker--suffix{display:flex;flex-direction:row;flex-shrink:0;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--suffix .vxe-ico-picker--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-ico-picker--panel-search{display:block;flex-shrink:0;padding:var(--vxe-ui-layout-padding-default)}.vxe-ico-picker--panel-search .vxe-ico-picker-search--input{width:100%}.vxe-ico-picker--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-ico-picker--clear-icon{display:none;padding-right:.5em;height:100%;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--clear-icon:hover{color:var(--vxe-ui-font-color)}.vxe-ico-picker--clear-icon:active{color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--list-wrapper,.vxe-ico-picker--scrollbar-list-wrapper{overflow-x:hidden;overflow-y:auto;height:var(--vxe-ui-icon-picker-panel-height);padding:var(--vxe-ui-layout-padding-qtr)}.vxe-ico-picker--list-wrapper,.vxe-ico-picker--scrollbar-list-wrapper-view{max-height:var(--vxe-ui-icon-picker-panel-max-height,var(--vxe-ui-icon-picker-panel-height,22.6em))}.vxe-ico-picker--list,.vxe-ico-picker--scrollbar-list-wrapper-inner{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-ico-picker--item{display:flex;flex-direction:column;width:var(--vxe-ui-icon-picker-item-width,25%);padding:var(--vxe-ui-layout-padding-half)}.vxe-ico-picker--item .vxe-ico-picker--item-inner{padding:.2em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-ico-picker--item .vxe-ico-picker--item-inner:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-ico-picker--item.is--selected .vxe-ico-picker--item-inner{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--item-icon{flex-grow:1;display:flex;flex-direction:row;align-items:center;justify-content:center;height:1.5em;font-size:var(--vxe-ui-icon-picker-panel-icon-font-size)}.vxe-ico-picker--item-icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--item-title{padding:0 .2em;line-height:1.3em;flex-shrink:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em}.vxe-ico-picker--item-icon,.vxe-ico-picker--item-title{width:100%}.vxe-ico-picker--panel-wrapper{position:relative;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-ico-picker--panel{display:none;position:absolute;left:0;padding:4px 0;font-size:var(--vxe-ui-ico-picker-current-font-size);color:var(--vxe-ui-font-color);text-align:left;width:20em}.vxe-ico-picker--panel:not(.is--transfer){min-width:100%}.vxe-ico-picker--panel.is--transfer{position:fixed}.vxe-ico-picker--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-ico-picker--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-ico-picker--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-ico-picker--empty-placeholder{display:flex;flex-direction:row;align-items:center;justify-content:center;padding:0 .6em;text-align:center;min-height:4em}
@@ -1,7 +1,7 @@
1
1
  import { ref, h, reactive, computed, provide } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import { toCssUnit } from '../../ui/src/dom';
4
- import { getConfig, useSize, createEvent } from '../../ui';
4
+ import { getConfig, useFns, createEvent } from '../../ui';
5
5
  import { getDefaultConfig } from '../../ui/src/utils';
6
6
  import XEUtils from 'xe-utils';
7
7
  import VxeLoadingComponent from '../../loading';
@@ -30,7 +30,8 @@ export default defineVxeComponent({
30
30
  const { slots, emit } = context;
31
31
  const xID = XEUtils.uniqueId();
32
32
  const refElem = ref();
33
- const { computeSize } = useSize(props);
33
+ const { computeSize } = useFns.useSize(props);
34
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
34
35
  const reactData = reactive({});
35
36
  const refMaps = {
36
37
  refElem
@@ -73,9 +74,10 @@ export default defineVxeComponent({
73
74
  const layoutAsidePrivateMethods = {};
74
75
  Object.assign($xeLayoutAside, layoutAsideMethods, layoutAsidePrivateMethods);
75
76
  const renderVN = () => {
76
- const { collapsed, loading, padding, useScrollbar } = props;
77
+ const { collapsed, loading, padding } = props;
77
78
  const varStyle = computeVarStyle.value;
78
79
  const vSize = computeSize.value;
80
+ const isVScrollbar = computeIsVScrollbar.value;
79
81
  const collapseOpts = computeCollapseOpts.value;
80
82
  const scrollbarOpts = computeScrollbarOpts.value;
81
83
  const { className, viewClassName, viewInnerClassName } = scrollbarOpts;
@@ -91,7 +93,7 @@ export default defineVxeComponent({
91
93
  }],
92
94
  style: varStyle
93
95
  }, [
94
- useScrollbar
96
+ isVScrollbar
95
97
  ? h(VxeScrollbarComponent, {
96
98
  width: scrollbarOpts.width,
97
99
  height: scrollbarOpts.height,
@@ -1,6 +1,6 @@
1
1
  import { ref, h, reactive, computed } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
- import { getConfig, useSize, createEvent, renderEmptyElement } from '../../ui';
3
+ import { getConfig, useFns, createEvent, renderEmptyElement } from '../../ui';
4
4
  import XEUtils from 'xe-utils';
5
5
  import { getDefaultConfig } from '../../ui/src/utils';
6
6
  import VxeLoadingComponent from '../../loading';
@@ -38,7 +38,8 @@ export default defineVxeComponent({
38
38
  const xID = XEUtils.uniqueId();
39
39
  const backtopId = `vxe_layout_body_backtop_${xID}`;
40
40
  const refElem = ref();
41
- const { computeSize } = useSize(props);
41
+ const { computeSize } = useFns.useSize(props);
42
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
42
43
  const internalData = createInternalData();
43
44
  const reactData = reactive(createReactData());
44
45
  const refMaps = {
@@ -90,7 +91,8 @@ export default defineVxeComponent({
90
91
  const layoutBodyPrivateMethods = {};
91
92
  Object.assign($xeLayoutBody, layoutBodyMethods, layoutBodyPrivateMethods);
92
93
  const renderVN = () => {
93
- const { loading, padding, showBacktop, useScrollbar } = props;
94
+ const { loading, padding, showBacktop } = props;
95
+ const isVScrollbar = computeIsVScrollbar.value;
94
96
  const backtopOpts = computeBacktopOpts.value;
95
97
  const scrollbarProps = computeScrollbarProps.value;
96
98
  const vSize = computeSize.value;
@@ -116,7 +118,7 @@ export default defineVxeComponent({
116
118
  'is--padding': padding
117
119
  }]
118
120
  }, [
119
- useScrollbar
121
+ isVScrollbar
120
122
  ? h(VxeScrollbarComponent, scrollbarProps, {
121
123
  default: () => defaultSlot ? defaultSlot({}) : []
122
124
  })
@@ -1,11 +1,17 @@
1
1
  import { ref, h, reactive } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
- import { getConfig, useSize, createEvent } from '../../ui';
3
+ import { VxeUI, useFns } from '../../ui';
4
4
  import XEUtils from 'xe-utils';
5
+ const { getConfig, baseUtils, createEvent } = VxeUI;
6
+ const { getDefVal } = baseUtils;
5
7
  export default defineVxeComponent({
6
8
  name: 'VxeLayoutContainer',
7
9
  props: {
8
10
  vertical: Boolean,
11
+ useScrollbar: {
12
+ type: Boolean,
13
+ default: () => getDefVal(getConfig().layoutContainer.useScrollbar, getConfig().useScrollbar)
14
+ },
9
15
  size: {
10
16
  type: String,
11
17
  default: () => getConfig().layoutContainer.size || getConfig().size
@@ -16,13 +22,15 @@ export default defineVxeComponent({
16
22
  const { slots, emit } = context;
17
23
  const xID = XEUtils.uniqueId();
18
24
  const refElem = ref();
19
- const { computeSize } = useSize(props);
25
+ const { computeSize } = useFns.useSize(props);
26
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
20
27
  const reactData = reactive({});
21
28
  const refMaps = {
22
29
  refElem
23
30
  };
24
31
  const computeMaps = {
25
- computeSize
32
+ computeSize,
33
+ computeIsVScrollbar
26
34
  };
27
35
  const $xeLayoutContainer = {
28
36
  xID,