vxe-pc-ui 3.7.4 → 3.7.6

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 (198) 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 +138 -41
  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 +1160 -601
  31. package/es/tree/src/util.js +31 -0
  32. package/es/tree/style.css +23 -26
  33. package/es/tree/style.min.css +1 -1
  34. package/es/tree-select/src/tree-select.js +258 -24
  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 +20 -4
  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 +23 -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 +1541 -532
  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 +145 -45
  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 +1223 -626
  125. package/lib/tree/src/tree.min.js +1 -1
  126. package/lib/tree/src/util.js +37 -0
  127. package/lib/tree/src/util.min.js +1 -0
  128. package/lib/tree/style/style.css +23 -26
  129. package/lib/tree/style/style.min.css +1 -1
  130. package/lib/tree-select/src/tree-select.js +265 -26
  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 +20 -4
  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 +23 -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 +144 -44
  171. package/packages/tree/src/tree.ts +1206 -626
  172. package/packages/tree/src/util.ts +34 -0
  173. package/packages/tree-select/src/tree-select.ts +272 -26
  174. package/packages/ui/index.ts +19 -3
  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 +28 -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 +29 -40
  184. package/types/components/table.d.ts +2 -4
  185. package/types/components/tree-select.d.ts +72 -12
  186. package/types/components/tree.d.ts +129 -8
  187. /package/es/icon/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  188. /package/es/icon/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  189. /package/es/icon/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  190. /package/es/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  191. /package/es/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  192. /package/es/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  193. /package/lib/icon/style/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  194. /package/lib/icon/style/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  195. /package/lib/icon/style/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
  196. /package/lib/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
  197. /package/lib/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
  198. /package/lib/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
@@ -0,0 +1,31 @@
1
+ function countTreeExpand($xeTree, prevNode) {
2
+ let count = 1;
3
+ if (!prevNode) {
4
+ return count;
5
+ }
6
+ const props = $xeTree;
7
+ const { transform } = props;
8
+ const reactData = $xeTree.reactData;
9
+ const { updateExpandedFlag } = reactData;
10
+ const internalData = $xeTree.internalData;
11
+ const { treeExpandedMaps } = internalData;
12
+ const childrenField = $xeTree.computeChildrenField;
13
+ const mapChildrenField = $xeTree.computeMapChildrenField;
14
+ const nodeChildren = prevNode[transform ? mapChildrenField : childrenField];
15
+ if (nodeChildren && updateExpandedFlag && treeExpandedMaps[$xeTree.getNodeId(prevNode)]) {
16
+ for (let index = 0; index < nodeChildren.length; index++) {
17
+ count += countTreeExpand($xeTree, nodeChildren[index]);
18
+ }
19
+ }
20
+ return count;
21
+ }
22
+ export function calcTreeLine($xeTree, node, prevNode) {
23
+ const internalData = $xeTree.internalData;
24
+ const { scrollYStore } = internalData;
25
+ const { rowHeight } = scrollYStore;
26
+ let expandSize = 1;
27
+ if (prevNode) {
28
+ expandSize = countTreeExpand($xeTree, prevNode);
29
+ }
30
+ return (rowHeight || 28) * expandSize - (prevNode ? 1 : 12);
31
+ }
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 {
@@ -206,6 +197,12 @@
206
197
  vertical-align: middle;
207
198
  }
208
199
 
200
+ .vxe-tree--empty-placeholder {
201
+ padding: 1.4em 0.6em 0 0.6em;
202
+ text-align: center;
203
+ color: var(--vxe-ui-input-placeholder-color);
204
+ }
205
+
209
206
  .vxe-tree {
210
207
  font-size: var(--vxe-ui-font-size-default);
211
208
  }
@@ -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;-ms-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;-ms-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;-ms-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;-ms-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;-ms-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;-ms-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{padding:1.4em .6em 0 .6em;text-align:center;color:var(--vxe-ui-input-placeholder-color)}.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)}
@@ -5,6 +5,7 @@ import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/sr
5
5
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
6
6
  import { errLog } from '../../ui/src/log';
7
7
  import VxeInputComponent from '../../input/src/input';
8
+ import VxeButtonComponent from '../../button/src/button';
8
9
  import VxeTreeComponent from '../../tree/src/tree';
9
10
  function getOptUniqueId() {
10
11
  return XEUtils.uniqueId('node_');
@@ -34,6 +35,8 @@ export default {
34
35
  type: Boolean,
35
36
  default: null
36
37
  },
38
+ filterable: Boolean,
39
+ filterConfig: Object,
37
40
  multiple: Boolean,
38
41
  className: [String, Function],
39
42
  popupClassName: [String, Function],
@@ -43,16 +46,42 @@ export default {
43
46
  optionProps: Object,
44
47
  size: {
45
48
  type: String,
46
- default: () => getConfig().select.size || getConfig().size
49
+ default: () => getConfig().treeSelect.size || getConfig().size
47
50
  },
48
51
  remote: Boolean,
49
- remoteMethod: Function,
52
+ remoteConfig: Function,
50
53
  popupConfig: Object,
51
54
  treeConfig: Object,
55
+ virtualYConfig: Object,
56
+ autoClose: {
57
+ type: Boolean,
58
+ default: () => getConfig().treeSelect.autoClose
59
+ },
60
+ showTotalButoon: {
61
+ type: Boolean,
62
+ default: () => getConfig().treeSelect.showTotalButoon
63
+ },
64
+ showCheckedButoon: {
65
+ type: Boolean,
66
+ default: () => getConfig().treeSelect.showCheckedButoon
67
+ },
68
+ showClearButton: {
69
+ type: Boolean,
70
+ default: () => getConfig().treeSelect.showClearButton
71
+ },
72
+ showExpandButton: {
73
+ type: Boolean,
74
+ default: () => getConfig().treeSelect.showExpandButton
75
+ },
52
76
  transfer: {
53
77
  type: Boolean,
54
78
  default: null
55
- }
79
+ },
80
+ /**
81
+ * 已废弃,被 remote-config.queryMethod 替换
82
+ * @deprecated
83
+ */
84
+ remoteMethod: Function
56
85
  },
57
86
  inject: {
58
87
  $xeModal: {
@@ -82,8 +111,8 @@ export default {
82
111
  const xID = XEUtils.uniqueId();
83
112
  const reactData = {
84
113
  initialized: false,
85
- fullOptionList: [],
86
- fullNodeMaps: {},
114
+ searchValue: '',
115
+ searchLoading: false,
87
116
  panelIndex: 0,
88
117
  panelStyle: {},
89
118
  panelPlacement: null,
@@ -93,7 +122,9 @@ export default {
93
122
  isActivated: false
94
123
  };
95
124
  const internalData = {
96
- hpTimeout: undefined
125
+ // hpTimeout: undefined,
126
+ fullOptionList: [],
127
+ fullNodeMaps: {}
97
128
  };
98
129
  return {
99
130
  xID,
@@ -214,14 +245,31 @@ export default {
214
245
  const propsOpts = $xeTreeSelect.computePropsOpts;
215
246
  return propsOpts.hasChild || 'hasChild';
216
247
  },
248
+ computeVirtualYOpts() {
249
+ const $xeTreeSelect = this;
250
+ const props = $xeTreeSelect;
251
+ return Object.assign({}, getConfig().treeSelect.virtualYConfig, props.virtualYConfig);
252
+ },
253
+ computeRemoteOpts() {
254
+ const $xeTreeSelect = this;
255
+ const props = $xeTreeSelect;
256
+ return Object.assign({}, getConfig().treeSelect.remoteConfig, props.remoteConfig);
257
+ },
258
+ computeFilterOpts() {
259
+ const $xeTreeSelect = this;
260
+ const props = $xeTreeSelect;
261
+ const treeOpts = $xeTreeSelect.computeTreeOpts;
262
+ return Object.assign({}, treeOpts.filterConfig, props.filterConfig);
263
+ },
217
264
  computeSelectLabel() {
218
265
  const $xeTreeSelect = this;
219
266
  const props = $xeTreeSelect;
220
- const reactData = $xeTreeSelect.reactData;
221
- const { value } = props;
222
- const { fullNodeMaps } = reactData;
267
+ const internalData = $xeTreeSelect.internalData;
268
+ const { value: modelValue } = props;
269
+ const { fullNodeMaps } = internalData;
223
270
  const labelField = $xeTreeSelect.computeLabelField;
224
- return (XEUtils.isArray(value) ? value : [value]).map(val => {
271
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
272
+ return selectVals.map(val => {
225
273
  const cacheItem = fullNodeMaps[val];
226
274
  return cacheItem ? cacheItem.item[labelField] : val;
227
275
  }).join(', ');
@@ -267,7 +315,7 @@ export default {
267
315
  cacheDataMap() {
268
316
  const $xeTreeSelect = this;
269
317
  const props = $xeTreeSelect;
270
- const reactData = $xeTreeSelect.reactData;
318
+ const internalData = $xeTreeSelect.internalData;
271
319
  const { options } = props;
272
320
  const nodeKeyField = $xeTreeSelect.computeNodeKeyField;
273
321
  const childrenField = $xeTreeSelect.computeChildrenField;
@@ -289,8 +337,8 @@ export default {
289
337
  }
290
338
  nodeMaps[value] = { item, index, items, parent, nodes };
291
339
  }, { children: childrenField });
292
- reactData.fullOptionList = options || [];
293
- reactData.fullNodeMaps = nodeMaps;
340
+ internalData.fullOptionList = options || [];
341
+ internalData.fullNodeMaps = nodeMaps;
294
342
  },
295
343
  updateZindex() {
296
344
  const $xeTreeSelect = this;
@@ -327,8 +375,10 @@ export default {
327
375
  const props = $xeTreeSelect;
328
376
  const reactData = $xeTreeSelect.reactData;
329
377
  const internalData = $xeTreeSelect.internalData;
330
- const { loading } = props;
378
+ const { loading, remote, filterable } = props;
379
+ const { fullOptionList } = internalData;
331
380
  const isDisabled = $xeTreeSelect.computeIsDisabled;
381
+ const remoteOpts = $xeTreeSelect.computeRemoteOpts;
332
382
  if (!loading && !isDisabled) {
333
383
  if (internalData.hpTimeout) {
334
384
  clearTimeout(internalData.hpTimeout);
@@ -345,8 +395,14 @@ export default {
345
395
  }
346
396
  reactData.isActivated = true;
347
397
  reactData.isAniVisible = true;
398
+ if (filterable) {
399
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullOptionList.length) {
400
+ $xeTreeSelect.handleSearchEvent();
401
+ }
402
+ }
348
403
  setTimeout(() => {
349
404
  reactData.visiblePanel = true;
405
+ $xeTreeSelect.handleFocusSearch();
350
406
  }, 10);
351
407
  $xeTreeSelect.updateZindex();
352
408
  $xeTreeSelect.updatePlacement();
@@ -364,10 +420,10 @@ export default {
364
420
  changeEvent(evnt, selectValue) {
365
421
  const $xeTreeSelect = this;
366
422
  const props = $xeTreeSelect;
367
- const reactData = $xeTreeSelect.reactData;
423
+ const internalData = $xeTreeSelect.internalData;
368
424
  const $xeForm = $xeTreeSelect.$xeForm;
369
425
  const formItemInfo = $xeTreeSelect.formItemInfo;
370
- const { fullNodeMaps } = reactData;
426
+ const { fullNodeMaps } = internalData;
371
427
  $xeTreeSelect.emitModel(selectValue);
372
428
  if (selectValue !== props.value) {
373
429
  const cacheItem = fullNodeMaps[selectValue];
@@ -388,6 +444,55 @@ export default {
388
444
  $xeTreeSelect.clearValueEvent(evnt, null);
389
445
  $xeTreeSelect.hideOptionPanel();
390
446
  },
447
+ allCheckedPanelEvent(params) {
448
+ const $xeTreeSelect = this;
449
+ const props = $xeTreeSelect;
450
+ const { $event } = params;
451
+ const { multiple, autoClose } = props;
452
+ const $tree = $xeTreeSelect.$refs.refTree;
453
+ if (multiple) {
454
+ if ($tree) {
455
+ $tree.setAllCheckboxNode(true).then(({ checkNodeKeys }) => {
456
+ $xeTreeSelect.changeEvent($event, checkNodeKeys);
457
+ $xeTreeSelect.dispatchEvent('all-change', { value: checkNodeKeys }, $event);
458
+ if (autoClose) {
459
+ $xeTreeSelect.hideOptionPanel();
460
+ }
461
+ });
462
+ }
463
+ }
464
+ },
465
+ clearCheckedPanelEvent(params) {
466
+ const $xeTreeSelect = this;
467
+ const props = $xeTreeSelect;
468
+ const { $event } = params;
469
+ const { multiple, autoClose } = props;
470
+ const $tree = $xeTreeSelect.$refs.refTree;
471
+ if ($tree) {
472
+ const value = multiple ? [] : null;
473
+ $tree.clearCheckboxNode().then(() => {
474
+ if (autoClose) {
475
+ $xeTreeSelect.hideOptionPanel();
476
+ }
477
+ });
478
+ $xeTreeSelect.changeEvent($event, value);
479
+ $xeTreeSelect.dispatchEvent('clear', { value }, $event);
480
+ }
481
+ },
482
+ allExpandPanelEvent() {
483
+ const $xeTreeSelect = this;
484
+ const $tree = $xeTreeSelect.$refs.refTree;
485
+ if ($tree) {
486
+ $tree.setAllExpandNode(true);
487
+ }
488
+ },
489
+ clearExpandPanelEvent() {
490
+ const $xeTreeSelect = this;
491
+ const $tree = $xeTreeSelect.$refs.refTree;
492
+ if ($tree) {
493
+ $tree.clearAllExpandNode();
494
+ }
495
+ },
391
496
  handleGlobalMousewheelEvent(evnt) {
392
497
  const $xeTreeSelect = this;
393
498
  const reactData = $xeTreeSelect.reactData;
@@ -431,6 +536,18 @@ export default {
431
536
  $xeTreeSelect.updatePlacement();
432
537
  }
433
538
  },
539
+ handleFocusSearch() {
540
+ const $xeSelect = this;
541
+ const props = $xeSelect;
542
+ if (props.filterable) {
543
+ $xeSelect.$nextTick(() => {
544
+ const inpSearch = $xeSelect.$refs.refInpSearch;
545
+ if (inpSearch) {
546
+ inpSearch.focus();
547
+ }
548
+ });
549
+ }
550
+ },
434
551
  focusEvent(evnt) {
435
552
  const $xeTreeSelect = this;
436
553
  const reactData = $xeTreeSelect.reactData;
@@ -457,6 +574,28 @@ export default {
457
574
  reactData.isActivated = false;
458
575
  $xeTreeSelect.dispatchEvent('blur', {}, evnt);
459
576
  },
577
+ modelSearchEvent(value) {
578
+ const $xeTreeSelect = this;
579
+ const reactData = $xeTreeSelect.reactData;
580
+ reactData.searchValue = value;
581
+ },
582
+ handleSearchEvent() {
583
+ const $xeTreeSelect = this;
584
+ const props = $xeTreeSelect;
585
+ const reactData = $xeTreeSelect.reactData;
586
+ const { value: modelValue, remote, remoteMethod } = props;
587
+ const { searchValue } = reactData;
588
+ const remoteOpts = $xeTreeSelect.computeRemoteOpts;
589
+ const queryMethod = remoteOpts.queryMethod || remoteMethod;
590
+ if (remote && queryMethod && remoteOpts.enabled) {
591
+ reactData.searchLoading = true;
592
+ Promise.resolve(queryMethod({ $treeSelect: $xeTreeSelect, searchValue, value: modelValue })).then(() => $xeTreeSelect.$nextTick())
593
+ .catch(() => $xeTreeSelect.$nextTick())
594
+ .finally(() => {
595
+ reactData.searchLoading = false;
596
+ });
597
+ }
598
+ },
460
599
  togglePanelEvent(params) {
461
600
  const $xeTreeSelect = this;
462
601
  const reactData = $xeTreeSelect.reactData;
@@ -502,8 +641,8 @@ export default {
502
641
  const props = $xeTreeSelect;
503
642
  const slots = $xeTreeSelect.$scopedSlots;
504
643
  const reactData = $xeTreeSelect.reactData;
505
- const { className, value, multiple, options, loading } = props;
506
- const { initialized, isActivated, isAniVisible, visiblePanel } = reactData;
644
+ const { className, value: modelValue, multiple, options, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton, showExpandButton } = props;
645
+ const { initialized, isActivated, isAniVisible, visiblePanel, searchValue } = reactData;
507
646
  const vSize = $xeTreeSelect.computeSize;
508
647
  const isDisabled = $xeTreeSelect.computeIsDisabled;
509
648
  const selectLabel = $xeTreeSelect.computeSelectLabel;
@@ -525,6 +664,8 @@ export default {
525
664
  const childrenField = $xeTreeSelect.computeChildrenField;
526
665
  const parentField = $xeTreeSelect.computeParentField;
527
666
  const hasChildField = $xeTreeSelect.computeHasChildField;
667
+ const virtualYOpts = $xeTreeSelect.computeVirtualYOpts;
668
+ const filterOpts = $xeTreeSelect.computeFilterOpts;
528
669
  if (formReadonly) {
529
670
  return h('div', {
530
671
  ref: 'refElem',
@@ -535,10 +676,12 @@ export default {
535
676
  }, selectLabel)
536
677
  ]);
537
678
  }
679
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
538
680
  return h('div', {
539
681
  ref: 'refElem',
540
682
  class: ['vxe-tree-select', className ? (XEUtils.isFunction(className) ? className({ $treeSelect: $xeTreeSelect }) : className) : '', {
541
683
  [`size--${vSize}`]: vSize,
684
+ 'is--filterable': filterable,
542
685
  'is--visible': visiblePanel,
543
686
  'is--disabled': isDisabled,
544
687
  'is--loading': loading,
@@ -555,7 +698,8 @@ export default {
555
698
  type: 'text',
556
699
  prefixIcon: props.prefixIcon,
557
700
  suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : (visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE),
558
- value: loading ? getI18n('vxe.select.loadingText') : selectLabel
701
+ value: loading ? getI18n('vxe.select.loadingText') : selectLabel,
702
+ title: selectLabel
559
703
  },
560
704
  on: {
561
705
  clear: $xeTreeSelect.clearEvent,
@@ -587,10 +731,92 @@ export default {
587
731
  h('div', {
588
732
  class: 'vxe-tree-select--panel-wrapper'
589
733
  }, [
590
- headerSlot
734
+ filterable
735
+ ? h('div', {
736
+ class: 'vxe-tree-select--panel-search'
737
+ }, [
738
+ h(VxeInputComponent, {
739
+ ref: 'refInpSearch',
740
+ class: 'vxe-tree-select-search--input',
741
+ props: {
742
+ value: searchValue,
743
+ title: selectLabel,
744
+ clearable: true,
745
+ disabled: false,
746
+ readonly: false,
747
+ placeholder: getI18n('vxe.treeSelect.search'),
748
+ prefixIcon: getIcon().INPUT_SEARCH
749
+ },
750
+ on: {
751
+ 'model-value': $xeTreeSelect.modelSearchEvent
752
+ }
753
+ })
754
+ ])
755
+ : renderEmptyElement($xeTreeSelect),
756
+ showTotalButoon || (showCheckedButoon && multiple) || showClearButton || showExpandButton || headerSlot
591
757
  ? h('div', {
592
758
  class: 'vxe-tree-select--panel-header'
593
- }, headerSlot({}))
759
+ }, headerSlot
760
+ ? headerSlot({})
761
+ : [
762
+ h('div', {
763
+ class: 'vxe-tree-select--header-button'
764
+ }, [
765
+ showTotalButoon
766
+ ? h('div', {
767
+ class: 'vxe-tree-select--header-total'
768
+ }, getI18n('vxe.treeSelect.total', [selectVals.length]))
769
+ : renderEmptyElement($xeTreeSelect),
770
+ h('div', {
771
+ class: 'vxe-tree-select--header-btns'
772
+ }, [
773
+ (showCheckedButoon && multiple)
774
+ ? h(VxeButtonComponent, {
775
+ props: {
776
+ content: getI18n('vxe.treeSelect.allChecked'),
777
+ mode: 'text'
778
+ },
779
+ on: {
780
+ click: $xeTreeSelect.allCheckedPanelEvent
781
+ }
782
+ })
783
+ : renderEmptyElement($xeTreeSelect),
784
+ showClearButton
785
+ ? h(VxeButtonComponent, {
786
+ props: {
787
+ content: getI18n('vxe.treeSelect.clearChecked'),
788
+ mode: 'text'
789
+ },
790
+ on: {
791
+ click: $xeTreeSelect.clearCheckedPanelEvent
792
+ }
793
+ })
794
+ : renderEmptyElement($xeTreeSelect),
795
+ showExpandButton
796
+ ? h(VxeButtonComponent, {
797
+ props: {
798
+ content: getI18n('vxe.treeSelect.allExpand'),
799
+ mode: 'text'
800
+ },
801
+ on: {
802
+ click: $xeTreeSelect.allExpandPanelEvent
803
+ }
804
+ })
805
+ : renderEmptyElement($xeTreeSelect),
806
+ showExpandButton
807
+ ? h(VxeButtonComponent, {
808
+ props: {
809
+ content: getI18n('vxe.treeSelect.clearExpand'),
810
+ mode: 'text'
811
+ },
812
+ on: {
813
+ click: $xeTreeSelect.clearExpandPanelEvent
814
+ }
815
+ })
816
+ : renderEmptyElement($xeTreeSelect)
817
+ ])
818
+ ])
819
+ ])
594
820
  : renderEmptyElement($xeTreeSelect),
595
821
  h('div', {
596
822
  class: 'vxe-tree-select--panel-body'
@@ -601,15 +827,20 @@ export default {
601
827
  style: popupWrapperStyle
602
828
  }, [
603
829
  h(VxeTreeComponent, {
830
+ ref: 'refTree',
604
831
  class: 'vxe-tree-select--tree',
605
832
  props: {
606
833
  data: options,
834
+ height: popupOpts.height ? '100%' : treeOpts.height,
835
+ minHeight: treeOpts.minHeight,
836
+ maxHeight: popupOpts.height ? '' : treeOpts.maxHeight,
837
+ autoResize: true,
607
838
  indent: treeOpts.indent,
608
839
  showRadio: !multiple,
609
840
  radioConfig: treeRadioOpts,
610
- checkNodeKey: multiple ? null : value,
841
+ checkNodeKey: multiple ? null : modelValue,
611
842
  showCheckbox: !!multiple,
612
- checkNodeKeys: multiple ? value : null,
843
+ checkNodeKeys: multiple ? modelValue : null,
613
844
  checkboxConfig: treeCheckboxOpts,
614
845
  titleField: labelField,
615
846
  valueField: valueField,
@@ -629,7 +860,10 @@ export default {
629
860
  showLine: treeOpts.showLine,
630
861
  iconOpen: treeOpts.iconOpen,
631
862
  iconLoaded: treeOpts.iconLoaded,
632
- iconClose: treeOpts.iconClose
863
+ iconClose: treeOpts.iconClose,
864
+ filterValue: searchValue,
865
+ filterConfig: filterOpts,
866
+ virtualYConfig: virtualYOpts
633
867
  },
634
868
  on: {
635
869
  'node-click': $xeTreeSelect.nodeClickEvent,
@@ -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
  }
@@ -83,8 +89,30 @@
83
89
  width: 100%;
84
90
  }
85
91
 
92
+ .vxe-tree-select--header-button {
93
+ display: flex;
94
+ flex-direction: row;
95
+ }
96
+
97
+ .vxe-tree-select--header-total {
98
+ display: flex;
99
+ flex-direction: row;
100
+ align-items: center;
101
+ justify-content: center;
102
+ flex-shrink: 0;
103
+ padding-left: 0.8em;
104
+ }
105
+
106
+ .vxe-tree-select--header-btns {
107
+ display: flex;
108
+ flex-direction: row;
109
+ flex-grow: 1;
110
+ justify-content: right;
111
+ }
112
+
86
113
  .vxe-tree-select--panel-wrapper {
87
114
  display: inline-flex;
115
+ flex-direction: column;
88
116
  position: relative;
89
117
  border-radius: var(--vxe-ui-base-border-radius);
90
118
  border: 1px solid var(--vxe-ui-base-popup-border-color);
@@ -93,6 +121,14 @@
93
121
  pointer-events: auto;
94
122
  }
95
123
 
124
+ .vxe-tree-select--panel-search {
125
+ display: block;
126
+ padding: var(--vxe-ui-layout-padding-default);
127
+ }
128
+ .vxe-tree-select--panel-search .vxe-tree-select-search--input {
129
+ width: 100%;
130
+ }
131
+
96
132
  .vxe-tree-select--panel-header {
97
133
  border-bottom: 1px solid var(--vxe-ui-base-popup-border-color);
98
134
  }
@@ -110,7 +146,6 @@
110
146
  position: relative;
111
147
  overflow: auto;
112
148
  padding: var(--vxe-ui-layout-padding-default);
113
- max-height: 21em;
114
149
  width: 30em;
115
150
  outline: 0;
116
151
  }
@@ -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;-ms-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;-ms-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)}