vxe-pc-ui 3.14.38 → 3.14.40

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 (220) hide show
  1. package/es/cascader/src/cascader.js +1253 -253
  2. package/es/cascader/src/util.js +7 -0
  3. package/es/cascader/style.css +200 -21
  4. package/es/cascader/style.min.css +1 -1
  5. package/es/input/src/input.js +2 -2
  6. package/es/language/ar-EG.js +7 -0
  7. package/es/language/de-DE.js +7 -0
  8. package/es/language/en-US.js +7 -0
  9. package/es/language/es-ES.js +7 -0
  10. package/es/language/fr-FR.js +7 -0
  11. package/es/language/hu-HU.js +7 -0
  12. package/es/language/hy-AM.js +7 -0
  13. package/es/language/id-ID.js +7 -0
  14. package/es/language/it-IT.js +7 -0
  15. package/es/language/ja-JP.js +7 -0
  16. package/es/language/ko-KR.js +7 -0
  17. package/es/language/ms-MY.js +7 -0
  18. package/es/language/nb-NO.js +7 -0
  19. package/es/language/pt-BR.js +7 -0
  20. package/es/language/ru-RU.js +7 -0
  21. package/es/language/th-TH.js +7 -0
  22. package/es/language/ug-CN.js +7 -0
  23. package/es/language/uk-UA.js +7 -0
  24. package/es/language/uz-UZ.js +7 -0
  25. package/es/language/vi-VN.js +7 -0
  26. package/es/language/zh-CHT.js +7 -0
  27. package/es/language/zh-CN.js +7 -0
  28. package/es/list/style.css +2 -1
  29. package/es/list/style.min.css +1 -1
  30. package/es/number-input/src/number-input.js +25 -10
  31. package/es/number-input/src/util.js +17 -5
  32. package/es/split/style.css +1 -1
  33. package/es/split/style.min.css +1 -1
  34. package/es/splitter/style.css +1 -1
  35. package/es/splitter/style.min.css +1 -1
  36. package/es/style.css +1 -1
  37. package/es/style.min.css +1 -1
  38. package/es/tree/src/tree.js +30 -24
  39. package/es/tree-select/src/tree-select.js +22 -16
  40. package/es/tree-select/style.css +1 -8
  41. package/es/tree-select/style.min.css +1 -1
  42. package/es/ui/index.js +10 -4
  43. package/es/ui/src/dom.js +3 -3
  44. package/es/ui/src/log.js +1 -1
  45. package/es/vxe-cascader/style.css +200 -21
  46. package/es/vxe-cascader/style.min.css +1 -1
  47. package/es/vxe-list/style.css +2 -1
  48. package/es/vxe-list/style.min.css +1 -1
  49. package/es/vxe-split/style.css +1 -1
  50. package/es/vxe-split/style.min.css +1 -1
  51. package/es/vxe-splitter/style.css +1 -1
  52. package/es/vxe-splitter/style.min.css +1 -1
  53. package/es/vxe-tree-select/style.css +1 -8
  54. package/es/vxe-tree-select/style.min.css +1 -1
  55. package/lib/cascader/src/cascader.js +1312 -247
  56. package/lib/cascader/src/cascader.min.js +1 -1
  57. package/lib/cascader/src/util.js +15 -0
  58. package/lib/cascader/src/util.min.js +1 -0
  59. package/lib/cascader/style/style.css +200 -21
  60. package/lib/cascader/style/style.min.css +1 -1
  61. package/lib/index.umd.js +2868 -1726
  62. package/lib/index.umd.min.js +1 -1
  63. package/lib/input/src/input.js +2 -2
  64. package/lib/input/src/input.min.js +1 -1
  65. package/lib/language/ar-EG.js +7 -0
  66. package/lib/language/ar-EG.min.js +1 -1
  67. package/lib/language/ar-EG.umd.js +7 -0
  68. package/lib/language/de-DE.js +7 -0
  69. package/lib/language/de-DE.min.js +1 -1
  70. package/lib/language/de-DE.umd.js +7 -0
  71. package/lib/language/en-US.js +7 -0
  72. package/lib/language/en-US.min.js +1 -1
  73. package/lib/language/en-US.umd.js +7 -0
  74. package/lib/language/es-ES.js +7 -0
  75. package/lib/language/es-ES.min.js +1 -1
  76. package/lib/language/es-ES.umd.js +7 -0
  77. package/lib/language/fr-FR.js +7 -0
  78. package/lib/language/fr-FR.min.js +1 -1
  79. package/lib/language/fr-FR.umd.js +7 -0
  80. package/lib/language/hu-HU.js +7 -0
  81. package/lib/language/hu-HU.min.js +1 -1
  82. package/lib/language/hu-HU.umd.js +7 -0
  83. package/lib/language/hy-AM.js +7 -0
  84. package/lib/language/hy-AM.min.js +1 -1
  85. package/lib/language/hy-AM.umd.js +7 -0
  86. package/lib/language/id-ID.js +7 -0
  87. package/lib/language/id-ID.min.js +1 -1
  88. package/lib/language/id-ID.umd.js +7 -0
  89. package/lib/language/it-IT.js +7 -0
  90. package/lib/language/it-IT.min.js +1 -1
  91. package/lib/language/it-IT.umd.js +7 -0
  92. package/lib/language/ja-JP.js +7 -0
  93. package/lib/language/ja-JP.min.js +1 -1
  94. package/lib/language/ja-JP.umd.js +7 -0
  95. package/lib/language/ko-KR.js +7 -0
  96. package/lib/language/ko-KR.min.js +1 -1
  97. package/lib/language/ko-KR.umd.js +7 -0
  98. package/lib/language/ms-MY.js +7 -0
  99. package/lib/language/ms-MY.min.js +1 -1
  100. package/lib/language/ms-MY.umd.js +7 -0
  101. package/lib/language/nb-NO.js +7 -0
  102. package/lib/language/nb-NO.min.js +1 -1
  103. package/lib/language/nb-NO.umd.js +7 -0
  104. package/lib/language/pt-BR.js +7 -0
  105. package/lib/language/pt-BR.min.js +1 -1
  106. package/lib/language/pt-BR.umd.js +7 -0
  107. package/lib/language/ru-RU.js +7 -0
  108. package/lib/language/ru-RU.min.js +1 -1
  109. package/lib/language/ru-RU.umd.js +7 -0
  110. package/lib/language/th-TH.js +7 -0
  111. package/lib/language/th-TH.min.js +1 -1
  112. package/lib/language/th-TH.umd.js +7 -0
  113. package/lib/language/ug-CN.js +7 -0
  114. package/lib/language/ug-CN.min.js +1 -1
  115. package/lib/language/ug-CN.umd.js +7 -0
  116. package/lib/language/uk-UA.js +7 -0
  117. package/lib/language/uk-UA.min.js +1 -1
  118. package/lib/language/uk-UA.umd.js +7 -0
  119. package/lib/language/uz-UZ.js +7 -0
  120. package/lib/language/uz-UZ.min.js +1 -1
  121. package/lib/language/uz-UZ.umd.js +7 -0
  122. package/lib/language/vi-VN.js +7 -0
  123. package/lib/language/vi-VN.min.js +1 -1
  124. package/lib/language/vi-VN.umd.js +7 -0
  125. package/lib/language/zh-CHT.js +7 -0
  126. package/lib/language/zh-CHT.min.js +1 -1
  127. package/lib/language/zh-CHT.umd.js +7 -0
  128. package/lib/language/zh-CN.js +7 -0
  129. package/lib/language/zh-CN.min.js +1 -1
  130. package/lib/language/zh-CN.umd.js +7 -0
  131. package/lib/list/style/style.css +2 -1
  132. package/lib/list/style/style.min.css +1 -1
  133. package/lib/number-input/src/number-input.js +32 -10
  134. package/lib/number-input/src/number-input.min.js +1 -1
  135. package/lib/number-input/src/util.js +16 -5
  136. package/lib/number-input/src/util.min.js +1 -1
  137. package/lib/split/style/style.css +1 -1
  138. package/lib/split/style/style.min.css +1 -1
  139. package/lib/splitter/style/style.css +1 -1
  140. package/lib/splitter/style/style.min.css +1 -1
  141. package/lib/style.css +1 -1
  142. package/lib/style.min.css +1 -1
  143. package/lib/tree/src/tree.js +30 -24
  144. package/lib/tree/src/tree.min.js +1 -1
  145. package/lib/tree-select/src/tree-select.js +22 -17
  146. package/lib/tree-select/src/tree-select.min.js +1 -1
  147. package/lib/tree-select/style/style.css +1 -8
  148. package/lib/tree-select/style/style.min.css +1 -1
  149. package/lib/ui/index.js +10 -4
  150. package/lib/ui/index.min.js +1 -1
  151. package/lib/ui/src/dom.js +6 -4
  152. package/lib/ui/src/dom.min.js +1 -1
  153. package/lib/ui/src/log.js +1 -1
  154. package/lib/ui/src/log.min.js +1 -1
  155. package/lib/vxe-cascader/style/style.css +200 -21
  156. package/lib/vxe-cascader/style/style.min.css +1 -1
  157. package/lib/vxe-list/style/style.css +2 -1
  158. package/lib/vxe-list/style/style.min.css +1 -1
  159. package/lib/vxe-split/style/style.css +1 -1
  160. package/lib/vxe-split/style/style.min.css +1 -1
  161. package/lib/vxe-splitter/style/style.css +1 -1
  162. package/lib/vxe-splitter/style/style.min.css +1 -1
  163. package/lib/vxe-tree-select/style/style.css +1 -8
  164. package/lib/vxe-tree-select/style/style.min.css +1 -1
  165. package/package.json +2 -2
  166. package/packages/cascader/src/cascader.ts +1293 -280
  167. package/packages/cascader/src/util.ts +9 -0
  168. package/packages/input/src/input.ts +2 -2
  169. package/packages/language/ar-EG.ts +7 -0
  170. package/packages/language/de-DE.ts +7 -0
  171. package/packages/language/en-US.ts +7 -0
  172. package/packages/language/es-ES.ts +7 -0
  173. package/packages/language/fr-FR.ts +7 -0
  174. package/packages/language/hu-HU.ts +7 -0
  175. package/packages/language/hy-AM.ts +7 -0
  176. package/packages/language/id-ID.ts +7 -0
  177. package/packages/language/it-IT.ts +7 -0
  178. package/packages/language/ja-JP.ts +7 -0
  179. package/packages/language/ko-KR.ts +7 -0
  180. package/packages/language/ms-MY.ts +7 -0
  181. package/packages/language/nb-NO.ts +7 -0
  182. package/packages/language/pt-BR.ts +7 -0
  183. package/packages/language/ru-RU.ts +7 -0
  184. package/packages/language/th-TH.ts +7 -0
  185. package/packages/language/ug-CN.ts +7 -0
  186. package/packages/language/uk-UA.ts +7 -0
  187. package/packages/language/uz-UZ.ts +7 -0
  188. package/packages/language/vi-VN.ts +7 -0
  189. package/packages/language/zh-CHT.ts +7 -0
  190. package/packages/language/zh-CN.ts +7 -0
  191. package/packages/number-input/src/number-input.ts +25 -12
  192. package/packages/number-input/src/util.ts +18 -5
  193. package/packages/tree/src/tree.ts +33 -28
  194. package/packages/tree-select/src/tree-select.ts +23 -16
  195. package/packages/ui/index.ts +10 -3
  196. package/packages/ui/src/dom.ts +4 -3
  197. package/styles/components/cascader.scss +116 -21
  198. package/styles/components/list.scss +2 -1
  199. package/styles/components/splitter.scss +3 -1
  200. package/styles/components/tree-select.scss +1 -8
  201. package/styles/helpers/placement.scss +2 -2
  202. package/styles/theme/base.scss +7 -0
  203. package/styles/theme/dark.scss +9 -0
  204. package/styles/theme/light.scss +9 -0
  205. package/styles/variable.scss +8 -0
  206. package/types/components/cascader.d.ts +169 -56
  207. package/types/components/number-input.d.ts +12 -1
  208. package/types/ui/global-icon.d.ts +5 -0
  209. /package/es/icon/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  210. /package/es/icon/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  211. /package/es/icon/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  212. /package/es/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  213. /package/es/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  214. /package/es/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  215. /package/lib/icon/style/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  216. /package/lib/icon/style/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  217. /package/lib/icon/style/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  218. /package/lib/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  219. /package/lib/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  220. /package/lib/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
@@ -0,0 +1,9 @@
1
+ import XEUtils from 'xe-utils'
2
+
3
+ export function enNodeValue (nodeid: string | number | null) {
4
+ return XEUtils.eqNull(nodeid) ? '' : encodeURIComponent(`${nodeid}`)
5
+ }
6
+
7
+ export function deNodeValue (nodeid: string | number | null) {
8
+ return nodeid ? decodeURIComponent(`${nodeid}`) : nodeid
9
+ }
@@ -967,7 +967,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
967
967
  const { type, exponential } = props
968
968
  const inpMaxLength = $xeInput.computeInpMaxLength
969
969
  const digitsValue = $xeInput.computeDigitsValue
970
- const restVal = (type === 'float' ? toFloatValueFixed(val, digitsValue) : XEUtils.toValueString(val))
970
+ const restVal = (type === 'float' ? toFloatValueFixed(val, type, digitsValue, '') : XEUtils.toValueString(val))
971
971
  if (exponential && (val === restVal || XEUtils.toValueString(val).toLowerCase() === XEUtils.toNumber(restVal).toExponential())) {
972
972
  return val
973
973
  }
@@ -1200,7 +1200,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1200
1200
  $xeInput.changeValue()
1201
1201
  } else if (type === 'float') {
1202
1202
  if (inputValue) {
1203
- const validValue = toFloatValueFixed(inputValue, digitsValue)
1203
+ const validValue = toFloatValueFixed(inputValue, type, digitsValue, '')
1204
1204
  if (inputValue !== validValue) {
1205
1205
  $xeInput.handleChange(validValue, { type: 'init' })
1206
1206
  }
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0}',
352
352
  monthLabel: '{0}'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -1,6 +1,6 @@
1
1
  import { CreateElement, PropType, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
3
+ import XEUtils, { CommafyOptions } from 'xe-utils'
4
4
  import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
5
  import { getFuncText, eqEmptyValue, isEnableConf } from '../../ui/src/utils'
6
6
  import { hasClass, getEventTargetNode, hasControlKey } from '../../ui/src/dom'
@@ -34,7 +34,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
34
34
  name: String as PropType<VxeNumberInputPropTypes.Name>,
35
35
  type: {
36
36
  type: String as PropType<VxeNumberInputPropTypes.Type>,
37
- default: 'number'
37
+ default: 'number' as VxeNumberInputPropTypes.Type
38
38
  },
39
39
  clearable: {
40
40
  type: Boolean as PropType<VxeNumberInputPropTypes.Clearable>,
@@ -89,6 +89,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
89
89
  },
90
90
  controlConfig: Object as PropType<VxeNumberInputPropTypes.ControlConfig>,
91
91
 
92
+ // float
93
+ roundingMode: {
94
+ type: String as PropType<VxeNumberInputPropTypes.RoundingMode>,
95
+ default: () => getConfig().numberInput.roundingMode
96
+ },
92
97
  // float
93
98
  digits: {
94
99
  type: [String, Number] as PropType<VxeNumberInputPropTypes.Digits>,
@@ -303,12 +308,20 @@ export default /* define-vxe-component start */ defineVxeComponent({
303
308
  const props = $xeNumberInput
304
309
  const reactData = $xeNumberInput.reactData
305
310
 
306
- const { type, showCurrency, currencySymbol, autoFill } = props
311
+ const { type, roundingMode, showCurrency, currencySymbol, autoFill } = props
307
312
  const { inputValue } = reactData
308
313
  const digitsValue = $xeNumberInput.computeDigitsValue
309
314
  if (type === 'amount') {
310
315
  const num = XEUtils.toNumber(inputValue)
311
- let amountLabel = XEUtils.commafy(num, { digits: digitsValue })
316
+ const cfyOpts: CommafyOptions = { digits: digitsValue }
317
+ if (roundingMode === 'floor') {
318
+ cfyOpts.floor = true
319
+ } else if (roundingMode === 'ceil') {
320
+ cfyOpts.ceil = true
321
+ } else {
322
+ cfyOpts.round = true
323
+ }
324
+ let amountLabel = XEUtils.commafy(num, cfyOpts)
312
325
  if (!autoFill) {
313
326
  const [iStr, dStr] = amountLabel.split('.')
314
327
  if (dStr) {
@@ -404,13 +417,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
404
417
  const $xeNumberInput = this
405
418
  const props = $xeNumberInput
406
419
 
407
- const { exponential, autoFill } = props
420
+ const { type, exponential, roundingMode, autoFill } = props
408
421
  const inpMaxLength = $xeNumberInput.computeInpMaxLength
409
422
  const digitsValue = $xeNumberInput.computeDigitsValue
410
423
  const decimalsType = $xeNumberInput.computeDecimalsType
411
424
  let restVal = ''
412
425
  if (decimalsType) {
413
- restVal = toFloatValueFixed(val, digitsValue)
426
+ restVal = toFloatValueFixed(val, type, digitsValue, roundingMode)
414
427
  if (!autoFill) {
415
428
  restVal = handleNumberString(XEUtils.toNumber(restVal))
416
429
  }
@@ -533,18 +546,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
533
546
  const props = $xeNumberInput
534
547
  const reactData = $xeNumberInput.reactData
535
548
 
536
- const { autoFill } = props
549
+ const { type, roundingMode, autoFill } = props
537
550
  const { inputValue } = reactData
538
551
  const digitsValue = $xeNumberInput.computeDigitsValue
539
552
  const decimalsType = $xeNumberInput.computeDecimalsType
540
553
  if (eqEmptyValue(val)) {
541
554
  reactData.inputValue = ''
542
555
  } else {
543
- let textValue = `${val}`
556
+ let textValue = '' + val
544
557
  if (decimalsType) {
545
- textValue = toFloatValueFixed(val, digitsValue)
558
+ textValue = toFloatValueFixed(val, type, digitsValue, roundingMode)
546
559
  if (!autoFill) {
547
- textValue = `${XEUtils.toNumber(textValue)}`
560
+ textValue = '' + XEUtils.toNumber(textValue)
548
561
  }
549
562
  }
550
563
  if (textValue !== inputValue) {
@@ -560,7 +573,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
560
573
  const props = $xeNumberInput
561
574
  const reactData = $xeNumberInput.reactData
562
575
 
563
- const { autoFill } = props
576
+ const { type, roundingMode, autoFill } = props
564
577
  const { inputValue } = reactData
565
578
  const digitsValue = $xeNumberInput.computeDigitsValue
566
579
  const decimalsType = $xeNumberInput.computeDecimalsType
@@ -569,7 +582,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
569
582
  let textValue = ''
570
583
  let validValue: number | null = null
571
584
  if (inputValue) {
572
- textValue = toFloatValueFixed(inputValue, digitsValue)
585
+ textValue = toFloatValueFixed(inputValue, type, digitsValue, roundingMode)
573
586
  validValue = XEUtils.toNumber(textValue)
574
587
  if (!autoFill) {
575
588
  textValue = `${validValue}`
@@ -1,12 +1,25 @@
1
1
  import XEUtils from 'xe-utils'
2
2
 
3
+ import type { VxeNumberInputPropTypes } from '../../../types'
4
+
3
5
  export function handleNumber (val: string | number | null | undefined) {
4
- return XEUtils.isString(val) ? val.replace(/,/g, '') : val
6
+ return XEUtils.isString(val) ? val.replace(/[^0-9e.-]/g, '') : val
5
7
  }
6
8
 
7
- export function toFloatValueFixed (inputValue: string | number, digitsValue: number) {
8
- if (/^-/.test('' + inputValue)) {
9
- return XEUtils.toFixed(XEUtils.ceil(inputValue, digitsValue), digitsValue)
9
+ export function toFloatValueFixed (inputValue: string | number, type: VxeNumberInputPropTypes.Type, digitsValue: number, roundingMode: VxeNumberInputPropTypes.RoundingMode) {
10
+ if (type !== 'integer' && (!roundingMode || roundingMode === 'default')) {
11
+ // 默认截取忽略
12
+ if (/^-/.test('' + inputValue)) {
13
+ return XEUtils.toFixed(XEUtils.ceil(inputValue, digitsValue), digitsValue)
14
+ }
15
+ return XEUtils.toFixed(XEUtils.floor(inputValue, digitsValue), digitsValue)
16
+ } else {
17
+ if (roundingMode === 'ceil') {
18
+ return XEUtils.toFixed(XEUtils.ceil(inputValue, digitsValue), digitsValue)
19
+ }
20
+ if (roundingMode === 'floor') {
21
+ return XEUtils.toFixed(XEUtils.floor(inputValue, digitsValue), digitsValue)
22
+ }
23
+ return XEUtils.toFixed(XEUtils.round(inputValue, digitsValue), digitsValue)
10
24
  }
11
- return XEUtils.toFixed(XEUtils.floor(inputValue, digitsValue), digitsValue)
12
25
  }
@@ -694,7 +694,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
694
694
  crossTreeDragNodeInfo: crossTreeDragNodeGlobal,
695
695
 
696
696
  hFlag: 0,
697
- rootConf: 0
697
+ dataFlag: 0
698
698
  }
699
699
  },
700
700
  computed: {
@@ -859,6 +859,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
859
859
  getNodeId (node: any) {
860
860
  const $xeTree = this
861
861
 
862
+ if (!node) {
863
+ return ''
864
+ }
862
865
  const valueField = $xeTree.computeValueField
863
866
  const nodeKey = XEUtils.get(node, valueField)
864
867
  return enNodeValue(nodeKey)
@@ -1104,7 +1107,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1104
1107
  const valueField = $xeTree.computeValueField
1105
1108
  const childrenField = $xeTree.computeChildrenField
1106
1109
  const keyMaps: Record<string, VxeTreeDefines.NodeCacheItem> = {}
1107
- XEUtils.eachTree(treeFullData, (item, index, items, path, parent, nodes) => {
1110
+ XEUtils.eachTree(treeFullData, (item, index, items, path, parenItem, nodes) => {
1108
1111
  let nodeid = $xeTree.getNodeId(item)
1109
1112
  if (!nodeid) {
1110
1113
  nodeid = getNodeUniqueId()
@@ -1116,7 +1119,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1116
1119
  $index: -1,
1117
1120
  _index: -1,
1118
1121
  items,
1119
- parent,
1122
+ parent: parenItem,
1120
1123
  nodes,
1121
1124
  level: nodes.length - 1,
1122
1125
  treeIndex: index,
@@ -1136,7 +1139,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1136
1139
  const childrenField = $xeTree.computeChildrenField
1137
1140
  const mapChildrenField = $xeTree.computeMapChildrenField
1138
1141
  let vtIndex = 0
1139
- XEUtils.eachTree(afterTreeList, (item, index, items) => {
1142
+ XEUtils.eachTree(afterTreeList, (item, index, items, path, parenItem, nodes) => {
1140
1143
  const nodeid = $xeTree.getNodeId(item)
1141
1144
  const nodeItem = nodeMaps[nodeid]
1142
1145
  if (nodeItem) {
@@ -1150,9 +1153,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
1150
1153
  $index: -1,
1151
1154
  _index: vtIndex,
1152
1155
  items,
1153
- parent,
1154
- nodes: [],
1155
- level: 0,
1156
+ parent: parenItem,
1157
+ nodes,
1158
+ level: nodes.length - 1,
1156
1159
  treeIndex: index,
1157
1160
  lineCount: 0,
1158
1161
  treeLoaded: false
@@ -2730,7 +2733,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2730
2733
  const extraSlot = slots.extra
2731
2734
  const isExpand = updateExpandedFlag && treeExpandedMaps[nodeid]
2732
2735
  const nodeItem = nodeMaps[nodeid] || {}
2733
- const nodeValue = XEUtils.get(node, titleField)
2736
+ const nodeTitle = XEUtils.get(node, titleField)
2734
2737
  const nLevel = nodeItem.level
2735
2738
 
2736
2739
  let isRadioChecked = false
@@ -2842,7 +2845,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2842
2845
  }, [
2843
2846
  h('div', {
2844
2847
  class: 'vxe-tree--node-item-title'
2845
- }, titleSlot ? getSlotVNs(titleSlot(nParams)) : `${nodeValue}`),
2848
+ }, titleSlot ? getSlotVNs(titleSlot(nParams)) : `${nodeTitle}`),
2846
2849
  extraSlot
2847
2850
  ? h('div', {
2848
2851
  class: 'vxe-tree--node-item-extra'
@@ -3022,10 +3025,26 @@ export default /* define-vxe-component start */ defineVxeComponent({
3022
3025
  }
3023
3026
  },
3024
3027
  watch: {
3025
- data (val) {
3028
+ data () {
3029
+ const $xeTree = this
3030
+
3031
+ $xeTree.dataFlag++
3032
+ },
3033
+ rootParentValue () {
3034
+ const $xeTree = this
3035
+
3036
+ $xeTree.dataFlag++
3037
+ },
3038
+ rootValues () {
3026
3039
  const $xeTree = this
3027
3040
 
3028
- $xeTree.loadData(val || [])
3041
+ $xeTree.dataFlag++
3042
+ },
3043
+ dataFlag () {
3044
+ const $xeTree = this
3045
+ const props = $xeTree
3046
+
3047
+ $xeTree.loadData(props.data || [])
3029
3048
  },
3030
3049
  checkNodeKey (nodeKey) {
3031
3050
  const $xeTree = this
@@ -3064,23 +3083,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
3064
3083
  const $xeTree = this
3065
3084
 
3066
3085
  $xeTree.recalculate()
3067
- },
3068
-
3069
- rootParentValue () {
3070
- const $xeTree = this
3071
-
3072
- $xeTree.rootConf++
3073
- },
3074
- rootValues () {
3075
- const $xeTree = this
3076
-
3077
- $xeTree.rootConf++
3078
- },
3079
- rootConf () {
3080
- const $xeTree = this
3081
- const props = $xeTree
3082
-
3083
- $xeTree.loadData(props.data || [])
3084
3086
  }
3085
3087
  },
3086
3088
  created () {
@@ -3104,6 +3106,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
3104
3106
  if (dragOpts.isCrossTreeDrag) {
3105
3107
  errLog('vxe.error.notProp', ['drag-config.isCrossTreeDrag'])
3106
3108
  }
3109
+ // if (valueField) {
3110
+ // errLog('vxe.error.delProp', ['value-field', 'value-field'])
3111
+ // }
3107
3112
  const VxeUIContextMenu = VxeUI.getComponent('VxeContextMenu')
3108
3113
  if (menuConfig && !VxeUIContextMenu) {
3109
3114
  errLog('vxe.error.reqComp', ['vxe-context-menu'])