vxe-pc-ui 4.7.5 → 4.7.7

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 (197) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/language/ar-EG.js +19 -1
  3. package/es/language/de-DE.js +19 -1
  4. package/es/language/en-US.js +20 -2
  5. package/es/language/es-ES.js +19 -1
  6. package/es/language/fr-FR.js +19 -1
  7. package/es/language/hu-HU.js +19 -1
  8. package/es/language/hy-AM.js +18 -0
  9. package/es/language/id-ID.js +19 -1
  10. package/es/language/it-IT.js +19 -1
  11. package/es/language/ja-JP.js +19 -1
  12. package/es/language/ko-KR.js +19 -1
  13. package/es/language/ms-MY.js +19 -1
  14. package/es/language/nb-NO.js +19 -1
  15. package/es/language/pt-BR.js +19 -1
  16. package/es/language/ru-RU.js +19 -1
  17. package/es/language/th-TH.js +19 -1
  18. package/es/language/ug-CN.js +19 -1
  19. package/es/language/uk-UA.js +19 -1
  20. package/es/language/uz-UZ.js +19 -1
  21. package/es/language/vi-VN.js +19 -1
  22. package/es/language/zh-CHT.js +19 -1
  23. package/es/language/zh-CN.js +18 -0
  24. package/es/list/src/list.js +1 -1
  25. package/es/select/src/select.js +135 -42
  26. package/es/select/style.css +21 -0
  27. package/es/select/style.min.css +1 -1
  28. package/es/style.css +1 -1
  29. package/es/style.min.css +1 -1
  30. package/es/tree/src/tree.js +924 -407
  31. package/es/tree/src/util.js +32 -0
  32. package/es/tree/style.css +29 -26
  33. package/es/tree/style.min.css +1 -1
  34. package/es/tree-select/src/tree-select.js +227 -18
  35. package/es/tree-select/style.css +36 -1
  36. package/es/tree-select/style.min.css +1 -1
  37. package/es/ui/index.js +19 -3
  38. package/es/ui/src/dom.js +9 -0
  39. package/es/ui/src/log.js +1 -1
  40. package/es/vxe-select/style.css +21 -0
  41. package/es/vxe-select/style.min.css +1 -1
  42. package/es/vxe-tree/style.css +29 -26
  43. package/es/vxe-tree/style.min.css +1 -1
  44. package/es/vxe-tree-select/style.css +36 -1
  45. package/es/vxe-tree-select/style.min.css +1 -1
  46. package/lib/icon/style/style.css +1 -1
  47. package/lib/icon/style/style.min.css +1 -1
  48. package/lib/index.umd.js +1512 -530
  49. package/lib/index.umd.min.js +1 -1
  50. package/lib/language/ar-EG.js +19 -1
  51. package/lib/language/ar-EG.min.js +1 -1
  52. package/lib/language/ar-EG.umd.js +19 -1
  53. package/lib/language/de-DE.js +19 -1
  54. package/lib/language/de-DE.min.js +1 -1
  55. package/lib/language/de-DE.umd.js +19 -1
  56. package/lib/language/en-US.js +20 -2
  57. package/lib/language/en-US.min.js +1 -1
  58. package/lib/language/en-US.umd.js +20 -2
  59. package/lib/language/es-ES.js +19 -1
  60. package/lib/language/es-ES.min.js +1 -1
  61. package/lib/language/es-ES.umd.js +19 -1
  62. package/lib/language/fr-FR.js +19 -1
  63. package/lib/language/fr-FR.min.js +1 -1
  64. package/lib/language/fr-FR.umd.js +19 -1
  65. package/lib/language/hu-HU.js +19 -1
  66. package/lib/language/hu-HU.min.js +1 -1
  67. package/lib/language/hu-HU.umd.js +19 -1
  68. package/lib/language/hy-AM.js +18 -0
  69. package/lib/language/hy-AM.min.js +1 -1
  70. package/lib/language/hy-AM.umd.js +18 -0
  71. package/lib/language/id-ID.js +19 -1
  72. package/lib/language/id-ID.min.js +1 -1
  73. package/lib/language/id-ID.umd.js +19 -1
  74. package/lib/language/it-IT.js +19 -1
  75. package/lib/language/it-IT.min.js +1 -1
  76. package/lib/language/it-IT.umd.js +19 -1
  77. package/lib/language/ja-JP.js +19 -1
  78. package/lib/language/ja-JP.min.js +1 -1
  79. package/lib/language/ja-JP.umd.js +19 -1
  80. package/lib/language/ko-KR.js +19 -1
  81. package/lib/language/ko-KR.min.js +1 -1
  82. package/lib/language/ko-KR.umd.js +19 -1
  83. package/lib/language/ms-MY.js +19 -1
  84. package/lib/language/ms-MY.min.js +1 -1
  85. package/lib/language/ms-MY.umd.js +19 -1
  86. package/lib/language/nb-NO.js +19 -1
  87. package/lib/language/nb-NO.min.js +1 -1
  88. package/lib/language/nb-NO.umd.js +19 -1
  89. package/lib/language/pt-BR.js +19 -1
  90. package/lib/language/pt-BR.min.js +1 -1
  91. package/lib/language/pt-BR.umd.js +19 -1
  92. package/lib/language/ru-RU.js +19 -1
  93. package/lib/language/ru-RU.min.js +1 -1
  94. package/lib/language/ru-RU.umd.js +19 -1
  95. package/lib/language/th-TH.js +19 -1
  96. package/lib/language/th-TH.min.js +1 -1
  97. package/lib/language/th-TH.umd.js +19 -1
  98. package/lib/language/ug-CN.js +19 -1
  99. package/lib/language/ug-CN.min.js +1 -1
  100. package/lib/language/ug-CN.umd.js +19 -1
  101. package/lib/language/uk-UA.js +19 -1
  102. package/lib/language/uk-UA.min.js +1 -1
  103. package/lib/language/uk-UA.umd.js +19 -1
  104. package/lib/language/uz-UZ.js +19 -1
  105. package/lib/language/uz-UZ.min.js +1 -1
  106. package/lib/language/uz-UZ.umd.js +19 -1
  107. package/lib/language/vi-VN.js +19 -1
  108. package/lib/language/vi-VN.min.js +1 -1
  109. package/lib/language/vi-VN.umd.js +19 -1
  110. package/lib/language/zh-CHT.js +19 -1
  111. package/lib/language/zh-CHT.min.js +1 -1
  112. package/lib/language/zh-CHT.umd.js +19 -1
  113. package/lib/language/zh-CN.js +18 -0
  114. package/lib/language/zh-CN.min.js +1 -1
  115. package/lib/language/zh-CN.umd.js +18 -0
  116. package/lib/list/src/list.js +1 -1
  117. package/lib/list/src/list.min.js +1 -1
  118. package/lib/select/src/select.js +139 -44
  119. package/lib/select/src/select.min.js +1 -1
  120. package/lib/select/style/style.css +21 -0
  121. package/lib/select/style/style.min.css +1 -1
  122. package/lib/style.css +1 -1
  123. package/lib/style.min.css +1 -1
  124. package/lib/tree/src/tree.js +1154 -572
  125. package/lib/tree/src/tree.min.js +1 -1
  126. package/lib/tree/src/util.js +51 -0
  127. package/lib/tree/src/util.min.js +1 -0
  128. package/lib/tree/style/style.css +29 -26
  129. package/lib/tree/style/style.min.css +1 -1
  130. package/lib/tree-select/src/tree-select.js +237 -21
  131. package/lib/tree-select/src/tree-select.min.js +1 -1
  132. package/lib/tree-select/style/style.css +36 -1
  133. package/lib/tree-select/style/style.min.css +1 -1
  134. package/lib/ui/index.js +19 -3
  135. package/lib/ui/index.min.js +1 -1
  136. package/lib/ui/src/dom.js +10 -0
  137. package/lib/ui/src/dom.min.js +1 -1
  138. package/lib/ui/src/log.js +1 -1
  139. package/lib/ui/src/log.min.js +1 -1
  140. package/lib/vxe-select/style/style.css +21 -0
  141. package/lib/vxe-select/style/style.min.css +1 -1
  142. package/lib/vxe-tree/style/style.css +29 -26
  143. package/lib/vxe-tree/style/style.min.css +1 -1
  144. package/lib/vxe-tree-select/style/style.css +36 -1
  145. package/lib/vxe-tree-select/style/style.min.css +1 -1
  146. package/package.json +1 -1
  147. package/packages/language/ar-EG.ts +19 -1
  148. package/packages/language/de-DE.ts +19 -1
  149. package/packages/language/en-US.ts +20 -2
  150. package/packages/language/es-ES.ts +19 -1
  151. package/packages/language/fr-FR.ts +19 -1
  152. package/packages/language/hu-HU.ts +19 -1
  153. package/packages/language/hy-AM.ts +18 -0
  154. package/packages/language/id-ID.ts +19 -1
  155. package/packages/language/it-IT.ts +19 -1
  156. package/packages/language/ja-JP.ts +19 -1
  157. package/packages/language/ko-KR.ts +19 -1
  158. package/packages/language/ms-MY.ts +19 -1
  159. package/packages/language/nb-NO.ts +19 -1
  160. package/packages/language/pt-BR.ts +19 -1
  161. package/packages/language/ru-RU.ts +19 -1
  162. package/packages/language/th-TH.ts +19 -1
  163. package/packages/language/ug-CN.ts +19 -1
  164. package/packages/language/uk-UA.ts +19 -1
  165. package/packages/language/uz-UZ.ts +19 -1
  166. package/packages/language/vi-VN.ts +19 -1
  167. package/packages/language/zh-CHT.ts +19 -1
  168. package/packages/language/zh-CN.ts +18 -0
  169. package/packages/list/src/list.ts +1 -1
  170. package/packages/select/src/select.ts +146 -50
  171. package/packages/tree/src/tree.ts +947 -410
  172. package/packages/tree/src/util.ts +35 -0
  173. package/packages/tree-select/src/tree-select.ts +240 -19
  174. package/packages/ui/index.ts +18 -2
  175. package/packages/ui/src/dom.ts +10 -0
  176. package/styles/components/select.scss +19 -0
  177. package/styles/components/tree-select.scss +36 -1
  178. package/styles/components/tree.scss +34 -31
  179. package/types/components/button.d.ts +11 -1
  180. package/types/components/grid.d.ts +5 -0
  181. package/types/components/icon-picker.d.ts +11 -1
  182. package/types/components/input.d.ts +2 -2
  183. package/types/components/select.d.ts +28 -39
  184. package/types/components/tree-select.d.ts +73 -12
  185. package/types/components/tree.d.ts +125 -8
  186. /package/es/icon/{iconfont.1752151733538.ttf → iconfont.1752462949194.ttf} +0 -0
  187. /package/es/icon/{iconfont.1752151733538.woff → iconfont.1752462949194.woff} +0 -0
  188. /package/es/icon/{iconfont.1752151733538.woff2 → iconfont.1752462949194.woff2} +0 -0
  189. /package/es/{iconfont.1752151733538.ttf → iconfont.1752462949194.ttf} +0 -0
  190. /package/es/{iconfont.1752151733538.woff → iconfont.1752462949194.woff} +0 -0
  191. /package/es/{iconfont.1752151733538.woff2 → iconfont.1752462949194.woff2} +0 -0
  192. /package/lib/icon/style/{iconfont.1752151733538.ttf → iconfont.1752462949194.ttf} +0 -0
  193. /package/lib/icon/style/{iconfont.1752151733538.woff → iconfont.1752462949194.woff} +0 -0
  194. /package/lib/icon/style/{iconfont.1752151733538.woff2 → iconfont.1752462949194.woff2} +0 -0
  195. /package/lib/{iconfont.1752151733538.ttf → iconfont.1752462949194.ttf} +0 -0
  196. /package/lib/{iconfont.1752151733538.woff → iconfont.1752462949194.woff} +0 -0
  197. /package/lib/{iconfont.1752151733538.woff2 → iconfont.1752462949194.woff2} +0 -0
@@ -0,0 +1,32 @@
1
+ function countTreeExpand($xeTree, prevNode) {
2
+ let count = 1;
3
+ if (!prevNode) {
4
+ return count;
5
+ }
6
+ const props = $xeTree.props;
7
+ const { transform } = props;
8
+ const reactData = $xeTree.reactData;
9
+ const { updateExpandedFlag } = reactData;
10
+ const internalData = $xeTree.internalData;
11
+ const { treeExpandedMaps } = internalData;
12
+ const { computeChildrenField, computeMapChildrenField } = $xeTree.getComputeMaps();
13
+ const childrenField = computeChildrenField.value;
14
+ const mapChildrenField = computeMapChildrenField.value;
15
+ const nodeChildren = prevNode[transform ? mapChildrenField : childrenField];
16
+ if (nodeChildren && updateExpandedFlag && treeExpandedMaps[$xeTree.getNodeId(prevNode)]) {
17
+ for (let index = 0; index < nodeChildren.length; index++) {
18
+ count += countTreeExpand($xeTree, nodeChildren[index]);
19
+ }
20
+ }
21
+ return count;
22
+ }
23
+ export function calcTreeLine($xeTree, node, prevNode) {
24
+ const internalData = $xeTree.internalData;
25
+ const { scrollYStore } = internalData;
26
+ const { rowHeight } = scrollYStore;
27
+ let expandSize = 1;
28
+ if (prevNode) {
29
+ expandSize = countTreeExpand($xeTree, prevNode);
30
+ }
31
+ return (rowHeight || 28) * expandSize - (prevNode ? 1 : 12);
32
+ }
package/es/tree/style.css CHANGED
@@ -2,7 +2,6 @@
2
2
  position: relative;
3
3
  color: var(--vxe-ui-font-color);
4
4
  font-family: var(--vxe-ui-font-family);
5
- overflow: auto;
6
5
  }
7
6
  .vxe-tree.node--trigger .vxe-tree--node-item {
8
7
  cursor: pointer;
@@ -28,21 +27,6 @@
28
27
  .vxe-tree.node--hover.checkbox--highlight .vxe-tree--node-item.is-checkbox--checked:hover {
29
28
  background-color: var(--vxe-ui-tree-node-hover-checkbox-checked-background-color);
30
29
  }
31
- .vxe-tree.show--line .vxe-tree--node-list-wrapper {
32
- position: relative;
33
- }
34
- .vxe-tree.show--line .vxe-tree--node-list-wrapper::before {
35
- content: "";
36
- position: absolute;
37
- left: 0.7em;
38
- top: calc(var(--vxe-ui-tree-node-height) / 2);
39
- height: calc(100% - var(--vxe-ui-tree-node-height));
40
- border-left-width: var(--vxe-ui-tree-node-line-width);
41
- border-left-style: var(--vxe-ui-tree-node-line-style);
42
- border-left-color: var(--vxe-ui-tree-node-line-color);
43
- pointer-events: none;
44
- z-index: 5;
45
- }
46
30
  .vxe-tree.show--line .vxe-tree--node-child-line {
47
31
  position: absolute;
48
32
  top: 0;
@@ -55,20 +39,27 @@
55
39
  pointer-events: none;
56
40
  z-index: 5;
57
41
  }
58
- .vxe-tree.show--line .vxe-tree--node-item-switcher {
42
+
43
+ .vxe-tree--node-line-wrapper {
59
44
  position: relative;
45
+ display: block;
46
+ height: 0;
60
47
  }
61
- .vxe-tree.show--line .vxe-tree--node-item-switcher::before {
62
- content: "";
48
+
49
+ .vxe-tree--node-line {
63
50
  position: absolute;
64
- left: 0.8em;
65
- top: 50%;
66
- width: 0.5em;
67
- border-bottom-width: var(--vxe-ui-tree-node-line-width);
68
- border-bottom-style: var(--vxe-ui-tree-node-line-style);
69
- border-bottom-color: var(--vxe-ui-tree-node-line-color);
51
+ bottom: calc(var(--vxe-ui-tree-node-height) / 2 * -1);
52
+ left: 0.6em;
53
+ width: 0.6em;
54
+ border-width: 0 0 var(--vxe-ui-tree-node-line-width) var(--vxe-ui-tree-node-line-width);
55
+ border-style: var(--vxe-ui-tree-node-line-style);
56
+ border-color: var(--vxe-ui-tree-node-line-color);
70
57
  pointer-events: none;
71
- z-index: 5;
58
+ }
59
+
60
+ .vxe-tree--node-list-wrapper {
61
+ overflow-y: auto;
62
+ overflow-x: hidden;
72
63
  }
73
64
 
74
65
  .vxe-tree--node-child-wrapper {
@@ -203,6 +194,18 @@
203
194
  vertical-align: middle;
204
195
  }
205
196
 
197
+ .vxe-tree--empty-placeholder {
198
+ margin-top: 1.4em;
199
+ text-align: center;
200
+ height: var(--vxe-ui-tree-node-height);
201
+ color: var(--vxe-ui-input-placeholder-color);
202
+ }
203
+
204
+ .vxe-tree--y-space {
205
+ width: 0;
206
+ float: left;
207
+ }
208
+
206
209
  .vxe-tree {
207
210
  font-size: var(--vxe-ui-font-size-default);
208
211
  }
@@ -1 +1 @@
1
- .vxe-tree{position:relative;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);overflow:auto}.vxe-tree.node--trigger .vxe-tree--node-item{cursor:pointer}.vxe-tree .vxe-tree--node-item.is--current{background-color:var(--vxe-ui-tree-node-current-background-color)}.vxe-tree.checkbox--highlight .vxe-tree--node-item.is-checkbox--checked{background-color:var(--vxe-ui-tree-node-checkbox-checked-background-color)}.vxe-tree.radio--highlight .vxe-tree--node-item.is-radio--checked{background-color:var(--vxe-ui-tree-node-radio-checked-background-color)}.vxe-tree.node--hover .vxe-tree--node-item:hover{background-color:var(--vxe-ui-tree-node-hover-background-color)}.vxe-tree.node--hover .vxe-tree--node-item:hover.is--current{background-color:var(--vxe-ui-tree-node-hover-current-background-color)}.vxe-tree.node--hover.radio--highlight .vxe-tree--node-item.is-radio--checked:hover{background-color:var(--vxe-ui-tree-node-hover-radio-checked-background-color)}.vxe-tree.node--hover.checkbox--highlight .vxe-tree--node-item.is-checkbox--checked:hover{background-color:var(--vxe-ui-tree-node-hover-checkbox-checked-background-color)}.vxe-tree.show--line .vxe-tree--node-list-wrapper{position:relative}.vxe-tree.show--line .vxe-tree--node-list-wrapper::before{content:"";position:absolute;left:.7em;top:calc(var(--vxe-ui-tree-node-height)/ 2);height:calc(100% - var(--vxe-ui-tree-node-height));border-left-width:var(--vxe-ui-tree-node-line-width);border-left-style:var(--vxe-ui-tree-node-line-style);border-left-color:var(--vxe-ui-tree-node-line-color);pointer-events:none;z-index:5}.vxe-tree.show--line .vxe-tree--node-child-line{position:absolute;top:0;left:0;height:calc(100% - .7em);transform:translateX(-.6em);border-left-width:var(--vxe-ui-tree-node-line-width);border-left-style:var(--vxe-ui-tree-node-line-style);border-left-color:var(--vxe-ui-tree-node-line-color);pointer-events:none;z-index:5}.vxe-tree.show--line .vxe-tree--node-item-switcher{position:relative}.vxe-tree.show--line .vxe-tree--node-item-switcher::before{content:"";position:absolute;left:.8em;top:50%;width:.5em;border-bottom-width:var(--vxe-ui-tree-node-line-width);border-bottom-style:var(--vxe-ui-tree-node-line-style);border-bottom-color:var(--vxe-ui-tree-node-line-color);pointer-events:none;z-index:5}.vxe-tree--node-child-wrapper{position:relative}.vxe-tree--node-item{display:flex;flex-direction:row;height:var(--vxe-ui-tree-node-height);line-height:var(--vxe-ui-tree-node-height)}.vxe-tree--node-item-switcher{position:relative;width:1.4em;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--node-item-icon{position:absolute;display:inline-flex;top:50%;left:50%;transform:translate(-50%,-50%);cursor:pointer;text-align:center;z-index:7}.vxe-tree--node-item-icon>i{display:inline-flex;transition:all .2s ease-in-out}.vxe-tree--node-item-inner{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-tree--node-item-inner .vxe-tree--node-item-title{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-tree--node-item-inner .vxe-tree--node-item-extra{flex-shrink:0}.vxe-tree--checkbox-option{padding-right:.4em}.vxe-tree--checkbox-option .vxe-checkbox--icon{font-size:1.22em}.vxe-tree--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--checkbox-option.is--checked,.vxe-tree--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-tree--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option:not(.is--disabled){cursor:pointer}.vxe-tree--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option.is--hidden{cursor:default}.vxe-tree--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-tree--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-tree--checkbox-option .vxe-checkbox--label{padding-left:.5em;vertical-align:middle}.vxe-tree--radio-option{padding-right:.4em;cursor:pointer}.vxe-tree--radio-option .vxe-radio--icon{font-size:1.26em}.vxe-tree--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option:not(.is--disabled){cursor:pointer}.vxe-tree--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-tree--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-tree--radio-option .vxe-radio--label{padding-left:.5em;vertical-align:middle}.vxe-tree{font-size:var(--vxe-ui-font-size-default)}.vxe-tree.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-tree.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-tree.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ .vxe-tree{position:relative;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-tree.node--trigger .vxe-tree--node-item{cursor:pointer}.vxe-tree .vxe-tree--node-item.is--current{background-color:var(--vxe-ui-tree-node-current-background-color)}.vxe-tree.checkbox--highlight .vxe-tree--node-item.is-checkbox--checked{background-color:var(--vxe-ui-tree-node-checkbox-checked-background-color)}.vxe-tree.radio--highlight .vxe-tree--node-item.is-radio--checked{background-color:var(--vxe-ui-tree-node-radio-checked-background-color)}.vxe-tree.node--hover .vxe-tree--node-item:hover{background-color:var(--vxe-ui-tree-node-hover-background-color)}.vxe-tree.node--hover .vxe-tree--node-item:hover.is--current{background-color:var(--vxe-ui-tree-node-hover-current-background-color)}.vxe-tree.node--hover.radio--highlight .vxe-tree--node-item.is-radio--checked:hover{background-color:var(--vxe-ui-tree-node-hover-radio-checked-background-color)}.vxe-tree.node--hover.checkbox--highlight .vxe-tree--node-item.is-checkbox--checked:hover{background-color:var(--vxe-ui-tree-node-hover-checkbox-checked-background-color)}.vxe-tree.show--line .vxe-tree--node-child-line{position:absolute;top:0;left:0;height:calc(100% - .7em);transform:translateX(-.6em);border-left-width:var(--vxe-ui-tree-node-line-width);border-left-style:var(--vxe-ui-tree-node-line-style);border-left-color:var(--vxe-ui-tree-node-line-color);pointer-events:none;z-index:5}.vxe-tree--node-line-wrapper{position:relative;display:block;height:0}.vxe-tree--node-line{position:absolute;bottom:calc(var(--vxe-ui-tree-node-height)/ 2 * -1);left:.6em;width:.6em;border-width:0 0 var(--vxe-ui-tree-node-line-width) var(--vxe-ui-tree-node-line-width);border-style:var(--vxe-ui-tree-node-line-style);border-color:var(--vxe-ui-tree-node-line-color);pointer-events:none}.vxe-tree--node-list-wrapper{overflow-y:auto;overflow-x:hidden}.vxe-tree--node-child-wrapper{position:relative}.vxe-tree--node-item{display:flex;flex-direction:row;height:var(--vxe-ui-tree-node-height);line-height:var(--vxe-ui-tree-node-height)}.vxe-tree--node-item-switcher{position:relative;width:1.4em;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--node-item-icon{position:absolute;display:inline-flex;top:50%;left:50%;transform:translate(-50%,-50%);cursor:pointer;text-align:center;z-index:7}.vxe-tree--node-item-icon>i{display:inline-flex;transition:all .2s ease-in-out}.vxe-tree--node-item-inner{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-tree--node-item-inner .vxe-tree--node-item-title{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-tree--node-item-inner .vxe-tree--node-item-extra{flex-shrink:0}.vxe-tree--checkbox-option{padding-right:.4em}.vxe-tree--checkbox-option .vxe-checkbox--icon{font-size:1.22em}.vxe-tree--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--checkbox-option.is--checked,.vxe-tree--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-tree--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option:not(.is--disabled){cursor:pointer}.vxe-tree--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--checkbox-option.is--hidden{cursor:default}.vxe-tree--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-tree--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-tree--checkbox-option .vxe-checkbox--label{padding-left:.5em;vertical-align:middle}.vxe-tree--radio-option{padding-right:.4em;cursor:pointer}.vxe-tree--radio-option .vxe-radio--icon{font-size:1.26em}.vxe-tree--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option:not(.is--disabled){cursor:pointer}.vxe-tree--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-tree--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-tree--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-tree--radio-option .vxe-radio--label{padding-left:.5em;vertical-align:middle}.vxe-tree--empty-placeholder{margin-top:1.4em;text-align:center;height:var(--vxe-ui-tree-node-height);color:var(--vxe-ui-input-placeholder-color)}.vxe-tree--y-space{width:0;float:left}.vxe-tree{font-size:var(--vxe-ui-font-size-default)}.vxe-tree.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-tree.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-tree.size--mini{font-size:var(--vxe-ui-font-size-mini)}
@@ -6,6 +6,7 @@ import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
6
6
  import { errLog } from '../../ui/src/log';
7
7
  import XEUtils from 'xe-utils';
8
8
  import VxeInputComponent from '../../input/src/input';
9
+ import VxeButtonComponent from '../../button/src/button';
9
10
  import VxeTreeComponent from '../../tree/src/tree';
10
11
  function getOptUniqueId() {
11
12
  return XEUtils.uniqueId('node_');
@@ -28,6 +29,8 @@ export default defineVxeComponent({
28
29
  type: Boolean,
29
30
  default: null
30
31
  },
32
+ filterable: Boolean,
33
+ filterConfig: Object,
31
34
  multiple: Boolean,
32
35
  className: [String, Function],
33
36
  popupClassName: [String, Function],
@@ -37,20 +40,47 @@ export default defineVxeComponent({
37
40
  optionProps: Object,
38
41
  size: {
39
42
  type: String,
40
- default: () => getConfig().select.size || getConfig().size
43
+ default: () => getConfig().treeSelect.size || getConfig().size
41
44
  },
42
45
  remote: Boolean,
43
- remoteMethod: Function,
46
+ remoteConfig: Function,
44
47
  popupConfig: Object,
45
48
  treeConfig: Object,
49
+ virtualYConfig: Object,
50
+ autoClose: {
51
+ type: Boolean,
52
+ default: () => getConfig().treeSelect.autoClose
53
+ },
54
+ showTotalButoon: {
55
+ type: Boolean,
56
+ default: () => getConfig().treeSelect.showTotalButoon
57
+ },
58
+ showCheckedButoon: {
59
+ type: Boolean,
60
+ default: () => getConfig().treeSelect.showCheckedButoon
61
+ },
62
+ showClearButton: {
63
+ type: Boolean,
64
+ default: () => getConfig().treeSelect.showClearButton
65
+ },
66
+ showExpandButton: {
67
+ type: Boolean,
68
+ default: () => getConfig().treeSelect.showExpandButton
69
+ },
46
70
  transfer: {
47
71
  type: Boolean,
48
72
  default: null
49
- }
73
+ },
74
+ /**
75
+ * 已废弃,被 remote-config.queryMethod 替换
76
+ * @deprecated
77
+ */
78
+ remoteMethod: Function
50
79
  },
51
80
  emits: [
52
81
  'update:modelValue',
53
82
  'change',
83
+ 'all-change',
54
84
  'clear',
55
85
  'blur',
56
86
  'focus',
@@ -68,12 +98,14 @@ export default defineVxeComponent({
68
98
  const { computeSize } = useSize(props);
69
99
  const refElem = ref();
70
100
  const refInput = ref();
101
+ const refInpSearch = ref();
71
102
  const refTreeWrapper = ref();
72
103
  const refOptionPanel = ref();
104
+ const refTree = ref();
73
105
  const reactData = reactive({
74
106
  initialized: false,
75
- fullOptionList: [],
76
- fullNodeMaps: {},
107
+ searchValue: '',
108
+ searchLoading: false,
77
109
  panelIndex: 0,
78
110
  panelStyle: {},
79
111
  panelPlacement: null,
@@ -83,7 +115,9 @@ export default defineVxeComponent({
83
115
  isActivated: false
84
116
  });
85
117
  const internalData = {
86
- hpTimeout: undefined
118
+ // hpTimeout: undefined,
119
+ fullOptionList: [],
120
+ fullNodeMaps: {}
87
121
  };
88
122
  const refMaps = {
89
123
  refElem
@@ -174,11 +208,22 @@ export default defineVxeComponent({
174
208
  const propsOpts = computePropsOpts.value;
175
209
  return propsOpts.hasChild || 'hasChild';
176
210
  });
211
+ const computeVirtualYOpts = computed(() => {
212
+ return Object.assign({}, getConfig().treeSelect.virtualYConfig, props.virtualYConfig);
213
+ });
214
+ const computeRemoteOpts = computed(() => {
215
+ return Object.assign({}, getConfig().treeSelect.remoteConfig, props.remoteConfig);
216
+ });
217
+ const computeFilterOpts = computed(() => {
218
+ const treeOpts = computeTreeOpts.value;
219
+ return Object.assign({}, treeOpts.filterConfig, props.filterConfig);
220
+ });
177
221
  const computeSelectLabel = computed(() => {
178
222
  const { modelValue } = props;
179
- const { fullNodeMaps } = reactData;
223
+ const { fullNodeMaps } = internalData;
180
224
  const labelField = computeLabelField.value;
181
- return (XEUtils.isArray(modelValue) ? modelValue : [modelValue]).map(val => {
225
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
226
+ return selectVals.map(val => {
182
227
  const cacheItem = fullNodeMaps[val];
183
228
  return cacheItem ? cacheItem.item[labelField] : val;
184
229
  }).join(', ');
@@ -222,12 +267,14 @@ export default defineVxeComponent({
222
267
  };
223
268
  const cacheDataMap = () => {
224
269
  const { options } = props;
270
+ const treeOpts = computeTreeOpts.value;
225
271
  const nodeKeyField = computeNodeKeyField.value;
226
272
  const childrenField = computeChildrenField.value;
227
273
  const valueField = computeValueField.value;
274
+ const { transform } = treeOpts;
228
275
  const nodeMaps = {};
229
276
  const keyMaps = {};
230
- XEUtils.eachTree(options, (item, index, items, path, parent, nodes) => {
277
+ const handleOptNode = (item, index, items, path, parent, nodes) => {
231
278
  let nodeid = getNodeid(item);
232
279
  if (!nodeid) {
233
280
  nodeid = getOptUniqueId();
@@ -241,9 +288,19 @@ export default defineVxeComponent({
241
288
  errLog('vxe.error.repeatKey', [valueField, value]);
242
289
  }
243
290
  nodeMaps[value] = { item, index, items, parent, nodes };
244
- }, { children: childrenField });
245
- reactData.fullOptionList = options || [];
246
- reactData.fullNodeMaps = nodeMaps;
291
+ };
292
+ if (options) {
293
+ if (transform) {
294
+ options.forEach((item, index, items) => {
295
+ handleOptNode(item, index, items, [], null, []);
296
+ });
297
+ }
298
+ else {
299
+ XEUtils.eachTree(options, handleOptNode, { children: childrenField });
300
+ }
301
+ }
302
+ internalData.fullOptionList = options || [];
303
+ internalData.fullNodeMaps = nodeMaps;
247
304
  };
248
305
  const updateZindex = () => {
249
306
  if (reactData.panelIndex < getLastZIndex()) {
@@ -271,8 +328,10 @@ export default defineVxeComponent({
271
328
  return nextTick().then(handleStyle);
272
329
  };
273
330
  const showOptionPanel = () => {
274
- const { loading } = props;
331
+ const { loading, remote, filterable } = props;
332
+ const { fullOptionList } = internalData;
275
333
  const isDisabled = computeIsDisabled.value;
334
+ const remoteOpts = computeRemoteOpts.value;
276
335
  if (!loading && !isDisabled) {
277
336
  clearTimeout(internalData.hpTimeout);
278
337
  if (!reactData.initialized) {
@@ -280,8 +339,14 @@ export default defineVxeComponent({
280
339
  }
281
340
  reactData.isActivated = true;
282
341
  reactData.isAniVisible = true;
342
+ if (filterable) {
343
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullOptionList.length) {
344
+ handleSearchEvent();
345
+ }
346
+ }
283
347
  setTimeout(() => {
284
348
  reactData.visiblePanel = true;
349
+ handleFocusSearch();
285
350
  }, 10);
286
351
  updateZindex();
287
352
  updatePlacement();
@@ -294,7 +359,7 @@ export default defineVxeComponent({
294
359
  }, 350);
295
360
  };
296
361
  const changeEvent = (evnt, selectValue) => {
297
- const { fullNodeMaps } = reactData;
362
+ const { fullNodeMaps } = internalData;
298
363
  emitModel(selectValue);
299
364
  if (selectValue !== props.modelValue) {
300
365
  const cacheItem = fullNodeMaps[selectValue];
@@ -313,6 +378,49 @@ export default defineVxeComponent({
313
378
  clearValueEvent(evnt, null);
314
379
  hideOptionPanel();
315
380
  };
381
+ const allCheckedPanelEvent = (params) => {
382
+ const { $event } = params;
383
+ const { multiple, autoClose } = props;
384
+ const $tree = refTree.value;
385
+ if (multiple) {
386
+ if ($tree) {
387
+ $tree.setAllCheckboxNode(true).then(({ checkNodeKeys }) => {
388
+ changeEvent($event, checkNodeKeys);
389
+ dispatchEvent('all-change', { value: checkNodeKeys }, $event);
390
+ if (autoClose) {
391
+ hideOptionPanel();
392
+ }
393
+ });
394
+ }
395
+ }
396
+ };
397
+ const clearCheckedPanelEvent = (params) => {
398
+ const { $event } = params;
399
+ const { multiple, autoClose } = props;
400
+ const $tree = refTree.value;
401
+ if ($tree) {
402
+ const value = multiple ? [] : null;
403
+ $tree.clearCheckboxNode().then(() => {
404
+ if (autoClose) {
405
+ hideOptionPanel();
406
+ }
407
+ });
408
+ changeEvent($event, value);
409
+ dispatchEvent('clear', { value }, $event);
410
+ }
411
+ };
412
+ const allExpandPanelEvent = () => {
413
+ const $tree = refTree.value;
414
+ if ($tree) {
415
+ $tree.setAllExpandNode(true);
416
+ }
417
+ };
418
+ const clearExpandPanelEvent = () => {
419
+ const $tree = refTree.value;
420
+ if ($tree) {
421
+ $tree.clearAllExpandNode();
422
+ }
423
+ };
316
424
  const handleGlobalMousewheelEvent = (evnt) => {
317
425
  const { visiblePanel } = reactData;
318
426
  const isDisabled = computeIsDisabled.value;
@@ -349,6 +457,16 @@ export default defineVxeComponent({
349
457
  updatePlacement();
350
458
  }
351
459
  };
460
+ const handleFocusSearch = () => {
461
+ if (props.filterable) {
462
+ nextTick(() => {
463
+ const inpSearch = refInpSearch.value;
464
+ if (inpSearch) {
465
+ inpSearch.focus();
466
+ }
467
+ });
468
+ }
469
+ };
352
470
  const focusEvent = (evnt) => {
353
471
  const isDisabled = computeIsDisabled.value;
354
472
  if (!isDisabled) {
@@ -370,6 +488,23 @@ export default defineVxeComponent({
370
488
  reactData.isActivated = false;
371
489
  dispatchEvent('blur', {}, evnt);
372
490
  };
491
+ const modelSearchEvent = (value) => {
492
+ reactData.searchValue = value;
493
+ };
494
+ const handleSearchEvent = () => {
495
+ const { modelValue, remote, remoteMethod } = props;
496
+ const { searchValue } = reactData;
497
+ const remoteOpts = computeRemoteOpts.value;
498
+ const queryMethod = remoteOpts.queryMethod || remoteMethod;
499
+ if (remote && queryMethod && remoteOpts.enabled) {
500
+ reactData.searchLoading = true;
501
+ Promise.resolve(queryMethod({ $treeSelect: $xeTreeSelect, searchValue, value: modelValue })).then(() => nextTick())
502
+ .catch(() => nextTick())
503
+ .finally(() => {
504
+ reactData.searchLoading = false;
505
+ });
506
+ }
507
+ };
373
508
  const togglePanelEvent = (params) => {
374
509
  const { $event } = params;
375
510
  $event.preventDefault();
@@ -404,8 +539,8 @@ export default defineVxeComponent({
404
539
  const treeSelectPrivateMethods = {};
405
540
  Object.assign($xeTreeSelect, treeSelectMethods, treeSelectPrivateMethods);
406
541
  const renderVN = () => {
407
- const { className, modelValue, multiple, options, loading } = props;
408
- const { initialized, isActivated, isAniVisible, visiblePanel } = reactData;
542
+ const { className, modelValue, multiple, options, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton, showExpandButton } = props;
543
+ const { initialized, isActivated, isAniVisible, visiblePanel, searchValue } = reactData;
409
544
  const vSize = computeSize.value;
410
545
  const isDisabled = computeIsDisabled.value;
411
546
  const selectLabel = computeSelectLabel.value;
@@ -427,6 +562,8 @@ export default defineVxeComponent({
427
562
  const childrenField = computeChildrenField.value;
428
563
  const parentField = computeParentField.value;
429
564
  const hasChildField = computeHasChildField.value;
565
+ const virtualYOpts = computeVirtualYOpts.value;
566
+ const filterOpts = computeFilterOpts.value;
430
567
  if (formReadonly) {
431
568
  return h('div', {
432
569
  ref: refElem,
@@ -437,10 +574,12 @@ export default defineVxeComponent({
437
574
  }, selectLabel)
438
575
  ]);
439
576
  }
577
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
440
578
  return h('div', {
441
579
  ref: refElem,
442
580
  class: ['vxe-tree-select', className ? (XEUtils.isFunction(className) ? className({ $treeSelect: $xeTreeSelect }) : className) : '', {
443
581
  [`size--${vSize}`]: vSize,
582
+ 'is--filterable': filterable,
444
583
  'is--visible': visiblePanel,
445
584
  'is--disabled': isDisabled,
446
585
  'is--loading': loading,
@@ -457,6 +596,7 @@ export default defineVxeComponent({
457
596
  prefixIcon: props.prefixIcon,
458
597
  suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : (visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE),
459
598
  modelValue: loading ? '' : selectLabel,
599
+ title: selectLabel,
460
600
  onClear: clearEvent,
461
601
  onClick: clickEvent,
462
602
  onFocus: focusEvent,
@@ -486,10 +626,71 @@ export default defineVxeComponent({
486
626
  h('div', {
487
627
  class: 'vxe-tree-select--panel-wrapper'
488
628
  }, [
489
- headerSlot
629
+ filterable
630
+ ? h('div', {
631
+ class: 'vxe-tree-select--panel-search'
632
+ }, [
633
+ h(VxeInputComponent, {
634
+ ref: refInpSearch,
635
+ class: 'vxe-tree-select-search--input',
636
+ modelValue: searchValue,
637
+ clearable: true,
638
+ disabled: false,
639
+ readonly: false,
640
+ placeholder: getI18n('vxe.treeSelect.search'),
641
+ prefixIcon: getIcon().INPUT_SEARCH,
642
+ 'onUpdate:modelValue': modelSearchEvent
643
+ })
644
+ ])
645
+ : renderEmptyElement($xeTreeSelect),
646
+ showTotalButoon || (showCheckedButoon && multiple) || showClearButton || showExpandButton || headerSlot
490
647
  ? h('div', {
491
648
  class: 'vxe-tree-select--panel-header'
492
- }, headerSlot({}))
649
+ }, headerSlot
650
+ ? headerSlot({})
651
+ : [
652
+ h('div', {
653
+ class: 'vxe-tree-select--header-button'
654
+ }, [
655
+ showTotalButoon
656
+ ? h('div', {
657
+ class: 'vxe-tree-select--header-total'
658
+ }, getI18n('vxe.treeSelect.total', [selectVals.length]))
659
+ : renderEmptyElement($xeTreeSelect),
660
+ h('div', {
661
+ class: 'vxe-tree-select--header-btns'
662
+ }, [
663
+ (showCheckedButoon && multiple)
664
+ ? h(VxeButtonComponent, {
665
+ content: getI18n('vxe.treeSelect.allChecked'),
666
+ mode: 'text',
667
+ onClick: allCheckedPanelEvent
668
+ })
669
+ : renderEmptyElement($xeTreeSelect),
670
+ showClearButton
671
+ ? h(VxeButtonComponent, {
672
+ content: getI18n('vxe.treeSelect.clearChecked'),
673
+ mode: 'text',
674
+ onClick: clearCheckedPanelEvent
675
+ })
676
+ : renderEmptyElement($xeTreeSelect),
677
+ showExpandButton
678
+ ? h(VxeButtonComponent, {
679
+ content: getI18n('vxe.treeSelect.allExpand'),
680
+ mode: 'text',
681
+ onClick: allExpandPanelEvent
682
+ })
683
+ : renderEmptyElement($xeTreeSelect),
684
+ showExpandButton
685
+ ? h(VxeButtonComponent, {
686
+ content: getI18n('vxe.treeSelect.clearExpand'),
687
+ mode: 'text',
688
+ onClick: clearExpandPanelEvent
689
+ })
690
+ : renderEmptyElement($xeTreeSelect)
691
+ ])
692
+ ])
693
+ ])
493
694
  : renderEmptyElement($xeTreeSelect),
494
695
  h('div', {
495
696
  class: 'vxe-tree-select--panel-body'
@@ -500,7 +701,12 @@ export default defineVxeComponent({
500
701
  style: popupWrapperStyle
501
702
  }, [
502
703
  h(VxeTreeComponent, {
704
+ ref: refTree,
503
705
  class: 'vxe-tree-select--tree',
706
+ height: popupOpts.height ? '100%' : treeOpts.height,
707
+ minHeight: treeOpts.minHeight,
708
+ maxHeight: popupOpts.height ? '' : treeOpts.maxHeight,
709
+ autoResize: true,
504
710
  data: options,
505
711
  indent: treeOpts.indent,
506
712
  showRadio: !multiple,
@@ -528,6 +734,9 @@ export default defineVxeComponent({
528
734
  iconOpen: treeOpts.iconOpen,
529
735
  iconLoaded: treeOpts.iconLoaded,
530
736
  iconClose: treeOpts.iconClose,
737
+ filterValue: searchValue,
738
+ filterConfig: filterOpts,
739
+ virtualYConfig: virtualYOpts,
531
740
  onNodeClick: nodeClickEvent,
532
741
  onRadioChange: radioChangeEvent,
533
742
  onCheckboxChange: checkboxChangeEvent,
@@ -8,6 +8,12 @@
8
8
  .vxe-tree-select > .vxe-input .vxe-input--inner {
9
9
  cursor: pointer;
10
10
  }
11
+ .vxe-tree-select.is--filterable .vxe-tree-select-tree--wrapper {
12
+ padding-top: 0;
13
+ }
14
+ .vxe-tree-select.is--filterable .vxe-tree-select--panel-header {
15
+ border-top: 1px solid var(--vxe-ui-base-popup-border-color);
16
+ }
11
17
  .vxe-tree-select.is--disabled > .vxe-input .vxe-input--inner {
12
18
  cursor: no-drop;
13
19
  }
@@ -82,8 +88,30 @@
82
88
  width: 100%;
83
89
  }
84
90
 
91
+ .vxe-tree-select--header-button {
92
+ display: flex;
93
+ flex-direction: row;
94
+ }
95
+
96
+ .vxe-tree-select--header-total {
97
+ display: flex;
98
+ flex-direction: row;
99
+ align-items: center;
100
+ justify-content: center;
101
+ flex-shrink: 0;
102
+ padding-left: 0.8em;
103
+ }
104
+
105
+ .vxe-tree-select--header-btns {
106
+ display: flex;
107
+ flex-direction: row;
108
+ flex-grow: 1;
109
+ justify-content: right;
110
+ }
111
+
85
112
  .vxe-tree-select--panel-wrapper {
86
113
  display: inline-flex;
114
+ flex-direction: column;
87
115
  position: relative;
88
116
  border-radius: var(--vxe-ui-base-border-radius);
89
117
  border: 1px solid var(--vxe-ui-base-popup-border-color);
@@ -92,6 +120,14 @@
92
120
  pointer-events: auto;
93
121
  }
94
122
 
123
+ .vxe-tree-select--panel-search {
124
+ display: block;
125
+ padding: var(--vxe-ui-layout-padding-default);
126
+ }
127
+ .vxe-tree-select--panel-search .vxe-tree-select-search--input {
128
+ width: 100%;
129
+ }
130
+
95
131
  .vxe-tree-select--panel-header {
96
132
  border-bottom: 1px solid var(--vxe-ui-base-popup-border-color);
97
133
  }
@@ -109,7 +145,6 @@
109
145
  position: relative;
110
146
  overflow: auto;
111
147
  padding: var(--vxe-ui-layout-padding-default);
112
- max-height: 21em;
113
148
  width: 30em;
114
149
  outline: 0;
115
150
  }
@@ -1 +1 @@
1
- .vxe-tree-select{position:relative;display:inline-block;width:180px;color:var(--vxe-ui-font-color);text-align:left}.vxe-tree-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-tree-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-tree-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-tree-select>.vxe-input{width:100%}.vxe-tree-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-tree-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-tree-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-tree-select--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-tree-select--panel:not(.is--transfer){min-width:100%}.vxe-tree-select--panel.is--transfer{position:fixed}.vxe-tree-select--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-tree-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-tree-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-tree-select--panel.ani--enter>div::after{display:none}.vxe-tree-select--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree-select--panel-search{display:block}.vxe-tree-select--panel-search .vxe-tree-select-search--input{width:100%}.vxe-tree-select--panel-wrapper{display:inline-flex;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);pointer-events:auto}.vxe-tree-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-tree-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-tree-select--panel-footer,.vxe-tree-select--panel-header{padding:4px 0}.vxe-tree-select-tree--wrapper{position:relative;overflow:auto;padding:var(--vxe-ui-layout-padding-default);max-height:21em;width:30em;outline:0}.vxe-tree-select--tree{width:100%}.vxe-tree-select--tree .vxe-tree--node-item.is-checkbox--checked>.vxe-tree--node-item-inner,.vxe-tree-select--tree .vxe-tree--node-item.is-radio--checked>.vxe-tree--node-item-inner{color:var(--vxe-ui-font-primary-color)}.vxe-tree-select--tree .vxe-tree--node-item-inner{cursor:pointer}.vxe-tree-select,.vxe-tree-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-tree-select--panel.size--medium,.vxe-tree-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-tree-select--panel.size--small,.vxe-tree-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-tree-select--panel.size--mini,.vxe-tree-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ .vxe-tree-select{position:relative;display:inline-block;width:180px;color:var(--vxe-ui-font-color);text-align:left}.vxe-tree-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-tree-select.is--filterable .vxe-tree-select-tree--wrapper{padding-top:0}.vxe-tree-select.is--filterable .vxe-tree-select--panel-header{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-tree-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-tree-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-tree-select>.vxe-input{width:100%}.vxe-tree-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-tree-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-tree-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-tree-select--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-tree-select--panel:not(.is--transfer){min-width:100%}.vxe-tree-select--panel.is--transfer{position:fixed}.vxe-tree-select--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-tree-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-tree-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-tree-select--panel.ani--enter>div::after{display:none}.vxe-tree-select--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-tree-select--panel-search{display:block}.vxe-tree-select--panel-search .vxe-tree-select-search--input{width:100%}.vxe-tree-select--header-button{display:flex;flex-direction:row}.vxe-tree-select--header-total{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;padding-left:.8em}.vxe-tree-select--header-btns{display:flex;flex-direction:row;flex-grow:1;justify-content:right}.vxe-tree-select--panel-wrapper{display:inline-flex;flex-direction:column;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);pointer-events:auto}.vxe-tree-select--panel-search{display:block;padding:var(--vxe-ui-layout-padding-default)}.vxe-tree-select--panel-search .vxe-tree-select-search--input{width:100%}.vxe-tree-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-tree-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-tree-select--panel-footer,.vxe-tree-select--panel-header{padding:4px 0}.vxe-tree-select-tree--wrapper{position:relative;overflow:auto;padding:var(--vxe-ui-layout-padding-default);width:30em;outline:0}.vxe-tree-select--tree{width:100%}.vxe-tree-select--tree .vxe-tree--node-item.is-checkbox--checked>.vxe-tree--node-item-inner,.vxe-tree-select--tree .vxe-tree--node-item.is-radio--checked>.vxe-tree--node-item-inner{color:var(--vxe-ui-font-primary-color)}.vxe-tree-select--tree .vxe-tree--node-item-inner{cursor:pointer}.vxe-tree-select,.vxe-tree-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-tree-select--panel.size--medium,.vxe-tree-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-tree-select--panel.size--small,.vxe-tree-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-tree-select--panel.size--mini,.vxe-tree-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}