vxe-pc-ui 3.15.11 → 3.15.13

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 (257) hide show
  1. package/es/collapse/src/collapse.js +72 -36
  2. package/es/components.js +6 -0
  3. package/es/date-picker/src/date-picker.js +1 -0
  4. package/es/icon/style.css +1 -1
  5. package/es/image/src/image.js +14 -14
  6. package/es/language/ar-EG.js +4 -0
  7. package/es/language/de-DE.js +4 -0
  8. package/es/language/en-US.js +5 -1
  9. package/es/language/es-ES.js +4 -0
  10. package/es/language/fr-FR.js +4 -0
  11. package/es/language/hu-HU.js +4 -0
  12. package/es/language/hy-AM.js +4 -0
  13. package/es/language/id-ID.js +4 -0
  14. package/es/language/it-IT.js +4 -0
  15. package/es/language/ja-JP.js +4 -0
  16. package/es/language/ko-KR.js +4 -0
  17. package/es/language/ms-MY.js +4 -0
  18. package/es/language/nb-NO.js +4 -0
  19. package/es/language/pt-BR.js +4 -0
  20. package/es/language/ru-RU.js +4 -0
  21. package/es/language/th-TH.js +4 -0
  22. package/es/language/ug-CN.js +4 -0
  23. package/es/language/uk-UA.js +4 -0
  24. package/es/language/uz-UZ.js +4 -0
  25. package/es/language/vi-VN.js +4 -0
  26. package/es/language/zh-CHT.js +4 -0
  27. package/es/language/zh-CN.js +4 -0
  28. package/es/list/src/list.js +1260 -32
  29. package/es/list/src/store.js +8 -0
  30. package/es/list/style.css +333 -0
  31. package/es/list/style.min.css +1 -1
  32. package/es/print/src/util.js +1 -1
  33. package/es/pulldown/src/pulldown.js +4 -4
  34. package/es/style.css +1 -1
  35. package/es/style.min.css +1 -1
  36. package/es/table-transfer/index.js +12 -0
  37. package/es/table-transfer/src/table-transfer.js +71 -0
  38. package/es/table-transfer/style.css +0 -0
  39. package/es/table-transfer/style.min.css +0 -0
  40. package/es/transfer/index.js +12 -0
  41. package/es/transfer/src/transfer.js +86 -0
  42. package/es/transfer/style.css +0 -0
  43. package/es/transfer/style.min.css +0 -0
  44. package/es/tree/src/tree.js +20 -26
  45. package/es/tree/src/util.js +0 -7
  46. package/es/tree-select/src/tree-select.js +8 -7
  47. package/es/ui/index.js +14 -2
  48. package/es/ui/src/log.js +1 -1
  49. package/es/ui/src/utils.js +12 -0
  50. package/es/vxe-list/style.css +333 -0
  51. package/es/vxe-list/style.min.css +1 -1
  52. package/es/vxe-table-transfer/index.js +3 -0
  53. package/es/vxe-table-transfer/style.css +0 -0
  54. package/es/vxe-table-transfer/style.min.css +0 -0
  55. package/es/vxe-transfer/index.js +3 -0
  56. package/es/vxe-transfer/style.css +0 -0
  57. package/es/vxe-transfer/style.min.css +0 -0
  58. package/lib/collapse/src/collapse.js +74 -37
  59. package/lib/collapse/src/collapse.min.js +1 -1
  60. package/lib/components.js +25 -1
  61. package/lib/components.min.js +1 -1
  62. package/lib/date-picker/src/date-picker.js +1 -0
  63. package/lib/date-picker/src/date-picker.min.js +1 -1
  64. package/lib/icon/style/style.css +1 -1
  65. package/lib/icon/style/style.min.css +1 -1
  66. package/lib/image/src/image.js +17 -17
  67. package/lib/image/src/image.min.js +1 -1
  68. package/lib/index.umd.js +1792 -202
  69. package/lib/index.umd.min.js +1 -1
  70. package/lib/language/ar-EG.js +4 -0
  71. package/lib/language/ar-EG.min.js +1 -1
  72. package/lib/language/ar-EG.umd.js +4 -0
  73. package/lib/language/de-DE.js +4 -0
  74. package/lib/language/de-DE.min.js +1 -1
  75. package/lib/language/de-DE.umd.js +4 -0
  76. package/lib/language/en-US.js +5 -1
  77. package/lib/language/en-US.min.js +1 -1
  78. package/lib/language/en-US.umd.js +5 -1
  79. package/lib/language/es-ES.js +4 -0
  80. package/lib/language/es-ES.min.js +1 -1
  81. package/lib/language/es-ES.umd.js +4 -0
  82. package/lib/language/fr-FR.js +4 -0
  83. package/lib/language/fr-FR.min.js +1 -1
  84. package/lib/language/fr-FR.umd.js +4 -0
  85. package/lib/language/hu-HU.js +4 -0
  86. package/lib/language/hu-HU.min.js +1 -1
  87. package/lib/language/hu-HU.umd.js +4 -0
  88. package/lib/language/hy-AM.js +4 -0
  89. package/lib/language/hy-AM.min.js +1 -1
  90. package/lib/language/hy-AM.umd.js +4 -0
  91. package/lib/language/id-ID.js +4 -0
  92. package/lib/language/id-ID.min.js +1 -1
  93. package/lib/language/id-ID.umd.js +4 -0
  94. package/lib/language/it-IT.js +4 -0
  95. package/lib/language/it-IT.min.js +1 -1
  96. package/lib/language/it-IT.umd.js +4 -0
  97. package/lib/language/ja-JP.js +4 -0
  98. package/lib/language/ja-JP.min.js +1 -1
  99. package/lib/language/ja-JP.umd.js +4 -0
  100. package/lib/language/ko-KR.js +4 -0
  101. package/lib/language/ko-KR.min.js +1 -1
  102. package/lib/language/ko-KR.umd.js +4 -0
  103. package/lib/language/ms-MY.js +4 -0
  104. package/lib/language/ms-MY.min.js +1 -1
  105. package/lib/language/ms-MY.umd.js +4 -0
  106. package/lib/language/nb-NO.js +4 -0
  107. package/lib/language/nb-NO.min.js +1 -1
  108. package/lib/language/nb-NO.umd.js +4 -0
  109. package/lib/language/pt-BR.js +4 -0
  110. package/lib/language/pt-BR.min.js +1 -1
  111. package/lib/language/pt-BR.umd.js +4 -0
  112. package/lib/language/ru-RU.js +4 -0
  113. package/lib/language/ru-RU.min.js +1 -1
  114. package/lib/language/ru-RU.umd.js +4 -0
  115. package/lib/language/th-TH.js +4 -0
  116. package/lib/language/th-TH.min.js +1 -1
  117. package/lib/language/th-TH.umd.js +4 -0
  118. package/lib/language/ug-CN.js +4 -0
  119. package/lib/language/ug-CN.min.js +1 -1
  120. package/lib/language/ug-CN.umd.js +4 -0
  121. package/lib/language/uk-UA.js +4 -0
  122. package/lib/language/uk-UA.min.js +1 -1
  123. package/lib/language/uk-UA.umd.js +4 -0
  124. package/lib/language/uz-UZ.js +4 -0
  125. package/lib/language/uz-UZ.min.js +1 -1
  126. package/lib/language/uz-UZ.umd.js +4 -0
  127. package/lib/language/vi-VN.js +4 -0
  128. package/lib/language/vi-VN.min.js +1 -1
  129. package/lib/language/vi-VN.umd.js +4 -0
  130. package/lib/language/zh-CHT.js +4 -0
  131. package/lib/language/zh-CHT.min.js +1 -1
  132. package/lib/language/zh-CHT.umd.js +4 -0
  133. package/lib/language/zh-CN.js +4 -0
  134. package/lib/language/zh-CN.min.js +1 -1
  135. package/lib/language/zh-CN.umd.js +4 -0
  136. package/lib/list/src/list.js +1347 -36
  137. package/lib/list/src/list.min.js +1 -1
  138. package/lib/list/src/store.js +15 -0
  139. package/lib/list/src/store.min.js +1 -0
  140. package/lib/list/style/style.css +333 -0
  141. package/lib/list/style/style.min.css +1 -1
  142. package/lib/print/src/util.js +1 -1
  143. package/lib/print/src/util.min.js +1 -1
  144. package/lib/pulldown/src/pulldown.js +4 -0
  145. package/lib/pulldown/src/pulldown.min.js +1 -1
  146. package/lib/style.css +1 -1
  147. package/lib/style.min.css +1 -1
  148. package/lib/table-transfer/index.js +19 -0
  149. package/lib/table-transfer/index.min.js +1 -0
  150. package/lib/table-transfer/src/table-transfer.js +84 -0
  151. package/lib/table-transfer/src/table-transfer.min.js +1 -0
  152. package/lib/table-transfer/style/index.js +1 -0
  153. package/lib/table-transfer/style/style.css +0 -0
  154. package/lib/table-transfer/style/style.min.css +0 -0
  155. package/lib/transfer/index.js +19 -0
  156. package/lib/transfer/index.min.js +1 -0
  157. package/lib/transfer/src/transfer.js +93 -0
  158. package/lib/transfer/src/transfer.min.js +1 -0
  159. package/lib/transfer/style/index.js +1 -0
  160. package/lib/transfer/style/style.css +0 -0
  161. package/lib/transfer/style/style.min.css +0 -0
  162. package/lib/tree/src/tree.js +18 -28
  163. package/lib/tree/src/tree.min.js +1 -1
  164. package/lib/tree/src/util.js +0 -10
  165. package/lib/tree/src/util.min.js +1 -1
  166. package/lib/tree-select/src/tree-select.js +9 -6
  167. package/lib/tree-select/src/tree-select.min.js +1 -1
  168. package/lib/ui/index.js +14 -2
  169. package/lib/ui/index.min.js +1 -1
  170. package/lib/ui/src/log.js +1 -1
  171. package/lib/ui/src/log.min.js +1 -1
  172. package/lib/ui/src/utils.js +15 -0
  173. package/lib/ui/src/utils.min.js +1 -1
  174. package/lib/vxe-list/style/style.css +333 -0
  175. package/lib/vxe-list/style/style.min.css +1 -1
  176. package/lib/vxe-table-transfer/index.js +22 -0
  177. package/lib/vxe-table-transfer/index.min.js +1 -0
  178. package/lib/vxe-table-transfer/style/index.js +1 -0
  179. package/lib/vxe-table-transfer/style/style.css +0 -0
  180. package/lib/vxe-table-transfer/style/style.min.css +0 -0
  181. package/lib/vxe-transfer/index.js +22 -0
  182. package/lib/vxe-transfer/index.min.js +1 -0
  183. package/lib/vxe-transfer/style/index.js +1 -0
  184. package/lib/vxe-transfer/style/style.css +0 -0
  185. package/lib/vxe-transfer/style/style.min.css +0 -0
  186. package/package.json +1 -1
  187. package/packages/collapse/src/collapse.ts +79 -36
  188. package/packages/components.ts +6 -0
  189. package/packages/date-picker/src/date-picker.ts +1 -0
  190. package/packages/image/src/image.ts +14 -14
  191. package/packages/language/ar-EG.ts +4 -0
  192. package/packages/language/de-DE.ts +4 -0
  193. package/packages/language/en-US.ts +5 -1
  194. package/packages/language/es-ES.ts +4 -0
  195. package/packages/language/fr-FR.ts +4 -0
  196. package/packages/language/hu-HU.ts +4 -0
  197. package/packages/language/hy-AM.ts +4 -0
  198. package/packages/language/id-ID.ts +4 -0
  199. package/packages/language/it-IT.ts +4 -0
  200. package/packages/language/ja-JP.ts +4 -0
  201. package/packages/language/ko-KR.ts +4 -0
  202. package/packages/language/ms-MY.ts +4 -0
  203. package/packages/language/nb-NO.ts +4 -0
  204. package/packages/language/pt-BR.ts +4 -0
  205. package/packages/language/ru-RU.ts +4 -0
  206. package/packages/language/th-TH.ts +4 -0
  207. package/packages/language/ug-CN.ts +4 -0
  208. package/packages/language/uk-UA.ts +4 -0
  209. package/packages/language/uz-UZ.ts +4 -0
  210. package/packages/language/vi-VN.ts +4 -0
  211. package/packages/language/zh-CHT.ts +4 -0
  212. package/packages/language/zh-CN.ts +4 -0
  213. package/packages/list/src/list.ts +1366 -35
  214. package/packages/list/src/store.ts +15 -0
  215. package/packages/print/src/util.ts +1 -2
  216. package/packages/pulldown/src/pulldown.ts +4 -4
  217. package/packages/table-transfer/index.ts +16 -0
  218. package/packages/table-transfer/src/table-transfer.ts +88 -0
  219. package/packages/transfer/index.ts +16 -0
  220. package/packages/transfer/src/transfer.ts +103 -0
  221. package/packages/tree/src/tree.ts +20 -26
  222. package/packages/tree/src/util.ts +0 -10
  223. package/packages/tree-select/src/tree-select.ts +8 -7
  224. package/packages/ui/index.ts +14 -1
  225. package/packages/ui/src/utils.ts +15 -0
  226. package/styles/all.scss +2 -0
  227. package/styles/components/list.scss +245 -0
  228. package/styles/components/table-transfer.scss +0 -0
  229. package/styles/components/transfer.scss +0 -0
  230. package/styles/components/tree.scss +1 -0
  231. package/styles/theme/base.scss +3 -0
  232. package/styles/theme/dark.scss +10 -0
  233. package/styles/theme/light.scss +10 -0
  234. package/styles/variable.scss +11 -1
  235. package/types/all.d.ts +6 -0
  236. package/types/components/collapse.d.ts +5 -2
  237. package/types/components/list.d.ts +359 -19
  238. package/types/components/pulldown.d.ts +1 -0
  239. package/types/components/table-transfer.d.ts +77 -0
  240. package/types/components/table.d.ts +4 -0
  241. package/types/components/transfer.d.ts +77 -0
  242. package/types/components/tree-select.d.ts +4 -0
  243. package/types/components/tree.d.ts +1 -1
  244. package/types/ui/global-config.d.ts +4 -0
  245. package/types/ui/global-icon.d.ts +6 -1
  246. /package/es/icon/{iconfont.1782358504076.ttf → iconfont.1782658257467.ttf} +0 -0
  247. /package/es/icon/{iconfont.1782358504076.woff → iconfont.1782658257467.woff} +0 -0
  248. /package/es/icon/{iconfont.1782358504076.woff2 → iconfont.1782658257467.woff2} +0 -0
  249. /package/es/{iconfont.1782358504076.ttf → iconfont.1782658257467.ttf} +0 -0
  250. /package/es/{iconfont.1782358504076.woff → iconfont.1782658257467.woff} +0 -0
  251. /package/es/{iconfont.1782358504076.woff2 → iconfont.1782658257467.woff2} +0 -0
  252. /package/lib/icon/style/{iconfont.1782358504076.ttf → iconfont.1782658257467.ttf} +0 -0
  253. /package/lib/icon/style/{iconfont.1782358504076.woff → iconfont.1782658257467.woff} +0 -0
  254. /package/lib/icon/style/{iconfont.1782358504076.woff2 → iconfont.1782658257467.woff2} +0 -0
  255. /package/lib/{iconfont.1782358504076.ttf → iconfont.1782658257467.ttf} +0 -0
  256. /package/lib/{iconfont.1782358504076.woff → iconfont.1782658257467.woff} +0 -0
  257. /package/lib/{iconfont.1782358504076.woff2 → iconfont.1782658257467.woff2} +0 -0
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -7,30 +8,60 @@ exports.default = void 0;
7
8
  var _comp = require("../../ui/src/comp");
8
9
  var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
10
  var _ui = require("../../ui");
11
+ var _store = require("./store");
10
12
  var _dom = require("../../ui/src/dom");
13
+ var _utils = require("../../ui/src/utils");
11
14
  var _vn = require("../../ui/src/vn");
15
+ var _log = require("../../ui/src/log");
16
+ var _anime = require("../../ui/src/anime");
12
17
  var _loading = _interopRequireDefault(require("../../loading/src/loading"));
13
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15
19
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16
20
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
21
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
- var browseObj = _xeUtils.default.browse();
22
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
23
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
24
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25
+ var _createComponentLog = (0, _log.createComponentLog)('tree'),
26
+ errLog = _createComponentLog.errLog;
27
+ function eqRowKey(rowKey1, rowKey2) {
28
+ return '' + rowKey1 === '' + rowKey2;
29
+ }
30
+ function getRowKeyByField(row, keyField) {
31
+ return row ? '' + (row[keyField] || '') : '';
32
+ }
33
+ function getRowIdByField(row, keyField) {
34
+ if (!row) {
35
+ return '';
36
+ }
37
+ var rowKey = getRowKeyByField(row, keyField);
38
+ return (0, _utils.enModelValue)(rowKey);
39
+ }
19
40
  function createReactData() {
20
41
  return {
21
42
  scrollYLoad: false,
22
43
  bodyHeight: 0,
44
+ headHeight: 0,
45
+ footHeight: 0,
23
46
  customHeight: 0,
24
47
  customMaxHeight: 0,
25
48
  parentHeight: 0,
26
49
  topSpaceHeight: 0,
27
- items: []
50
+ rowList: [],
51
+ selectRadioRow: null,
52
+ currRowFlag: 1,
53
+ updateCheckboxFlag: 1,
54
+ isAllChecked: false,
55
+ isAllIndeterminate: false,
56
+ dragRow: null,
57
+ dragTipText: ''
28
58
  };
29
59
  }
30
60
  function createInternalData() {
31
61
  return {
32
62
  resizeObserver: undefined,
33
63
  fullData: [],
64
+ fullKeyMaps: {},
34
65
  lastScrollLeft: 0,
35
66
  lastScrollTop: 0,
36
67
  scrollYStore: {
@@ -39,7 +70,11 @@ function createInternalData() {
39
70
  visibleSize: 0,
40
71
  offsetSize: 0,
41
72
  rowHeight: 0
42
- }
73
+ },
74
+ currentRow: null,
75
+ selectCheckboxMaps: {}
76
+ // prevDragRow: null,
77
+ // prevDragPos: ''
43
78
  };
44
79
  }
45
80
  var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
@@ -64,6 +99,24 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
64
99
  }
65
100
  },
66
101
  syncResize: [Boolean, String, Number],
102
+ showRadio: {
103
+ type: Boolean,
104
+ default: function _default() {
105
+ return (0, _ui.getConfig)().list.showRadio;
106
+ }
107
+ },
108
+ checkRowKey: [String, Number],
109
+ radioConfig: Object,
110
+ showCheckbox: {
111
+ type: Boolean,
112
+ default: function _default() {
113
+ return (0, _ui.getConfig)().list.showCheckbox;
114
+ }
115
+ },
116
+ checkRowKeys: Array,
117
+ checkboxConfig: Object,
118
+ rowConfig: Object,
119
+ dragConfig: Object,
67
120
  virtualYConfig: Object,
68
121
  scrollY: Object
69
122
  },
@@ -72,29 +125,85 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
72
125
  var reactData = createReactData();
73
126
  return Object.assign(Object.assign({}, {}), {
74
127
  xID: xID,
75
- reactData: reactData
128
+ reactData: reactData,
129
+ crossListDragRowInfo: _store.crossListDragRowGlobal,
130
+ reFlag: 0
76
131
  });
77
132
  },
78
133
  computed: Object.assign(Object.assign({}, {}), {
134
+ computeRowOpts: function computeRowOpts() {
135
+ var $xeList = this;
136
+ var props = $xeList;
137
+ return Object.assign({}, (0, _ui.getConfig)().list.rowConfig, props.rowConfig);
138
+ },
139
+ computeDragOpts: function computeDragOpts() {
140
+ var $xeList = this;
141
+ var props = $xeList;
142
+ return Object.assign({}, (0, _ui.getConfig)().list.dragConfig, props.dragConfig);
143
+ },
79
144
  computeSYOpts: function computeSYOpts() {
80
145
  var $xeList = this;
81
146
  var props = $xeList;
82
147
  return Object.assign({}, (0, _ui.getConfig)().list.virtualYConfig || (0, _ui.getConfig)().list.scrollY, props.virtualYConfig || props.scrollY);
83
148
  },
84
- computeStyles: function computeStyles() {
149
+ computeKeyField: function computeKeyField() {
150
+ var $xeList = this;
151
+ var rowOpts = $xeList.computeRowOpts;
152
+ var keyField = rowOpts.keyField;
153
+ return keyField || '';
154
+ },
155
+ computeIsDrag: function computeIsDrag() {
156
+ var $xeList = this;
157
+ var props = $xeList;
158
+ var dragConfig = props.dragConfig;
159
+ var dragOpts = $xeList.computeDragOpts;
160
+ return dragConfig && (0, _utils.isEnableConf)(dragOpts);
161
+ },
162
+ computeRowHeight: function computeRowHeight() {
163
+ var $xeList = this;
164
+ var rowOpts = $xeList.computeRowOpts;
165
+ var height = rowOpts.height;
166
+ return height;
167
+ },
168
+ computeRadioOpts: function computeRadioOpts() {
169
+ var $xeList = this;
170
+ var props = $xeList;
171
+ return Object.assign({
172
+ showIcon: true
173
+ }, (0, _ui.getConfig)().list.radioConfig, props.radioConfig);
174
+ },
175
+ computeCheckboxOpts: function computeCheckboxOpts() {
176
+ var $xeList = this;
177
+ var props = $xeList;
178
+ return Object.assign({
179
+ showIcon: true
180
+ }, (0, _ui.getConfig)().list.checkboxConfig, props.checkboxConfig);
181
+ },
182
+ computeWrapperStyles: function computeWrapperStyles() {
183
+ var $xeList = this;
184
+ var rowHeight = $xeList.computeRowHeight;
185
+ var style = {};
186
+ if (rowHeight) {
187
+ style['--vxe-ui-list-row-height'] = (0, _dom.toCssUnit)(rowHeight);
188
+ }
189
+ return style;
190
+ },
191
+ computeVirtualStyles: function computeVirtualStyles() {
85
192
  var $xeList = this;
86
193
  var props = $xeList;
87
194
  var reactData = $xeList.reactData;
88
195
  var height = props.height,
89
196
  maxHeight = props.maxHeight;
90
197
  var customHeight = reactData.customHeight,
91
- customMaxHeight = reactData.customMaxHeight;
198
+ customMaxHeight = reactData.customMaxHeight,
199
+ headHeight = reactData.headHeight,
200
+ footHeight = reactData.footHeight;
92
201
  var style = {};
93
202
  if (height) {
94
- style.height = "".concat(customHeight, "px");
203
+ style.height = (0, _dom.toCssUnit)(Math.max(20, customHeight - headHeight - footHeight));
95
204
  } else if (maxHeight) {
96
205
  style.height = 'auto';
97
- style.maxHeight = "".concat(customMaxHeight, "px");
206
+ style.maxHeight = (0, _dom.toCssUnit)(Math.max(20, customMaxHeight - headHeight - footHeight));
98
207
  }
99
208
  return style;
100
209
  }
@@ -109,6 +218,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
109
218
  $list: $xeList
110
219
  }, params));
111
220
  },
221
+ emitCheckboxMode: function emitCheckboxMode(value) {
222
+ var $xeList = this;
223
+ $xeList.$emit('update:checkRowKeys', value);
224
+ },
225
+ emitRadioMode: function emitRadioMode(value) {
226
+ var $xeList = this;
227
+ $xeList.$emit('update:checkRowKey', value);
228
+ },
112
229
  callSlot: function callSlot(slotFunc, params, h) {
113
230
  var $xeList = this;
114
231
  var slots = $xeList.$scopedSlots;
@@ -122,6 +239,66 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
122
239
  }
123
240
  return [];
124
241
  },
242
+ getRowId: function getRowId(row) {
243
+ var $xeList = this;
244
+ var keyField = $xeList.computeKeyField;
245
+ return getRowIdByField(row, keyField);
246
+ },
247
+ updateRadioModeValue: function updateRadioModeValue() {
248
+ var $xeList = this;
249
+ var props = $xeList;
250
+ var reactData = $xeList.reactData;
251
+ var internalData = $xeList.internalData;
252
+ var checkRowKey = props.checkRowKey;
253
+ var fullKeyMaps = internalData.fullKeyMaps;
254
+ if (checkRowKey) {
255
+ var row = fullKeyMaps[checkRowKey];
256
+ reactData.selectRadioRow = row || null;
257
+ } else {
258
+ reactData.selectRadioRow = null;
259
+ }
260
+ },
261
+ updateCheckboxModeValue: function updateCheckboxModeValue() {
262
+ var $xeList = this;
263
+ var props = $xeList;
264
+ var internalData = $xeList.internalData;
265
+ var checkRowKeys = props.checkRowKeys;
266
+ var fullKeyMaps = internalData.fullKeyMaps;
267
+ var keyField = $xeList.computeKeyField;
268
+ var selectMaps = {};
269
+ if (checkRowKeys && checkRowKeys.length) {
270
+ var _iterator = _createForOfIteratorHelper(checkRowKeys),
271
+ _step;
272
+ try {
273
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
274
+ var rowKey = _step.value;
275
+ var row = fullKeyMaps[rowKey];
276
+ if (row) {
277
+ var rowid = getRowIdByField(row, keyField);
278
+ selectMaps[rowid] = row;
279
+ }
280
+ }
281
+ } catch (err) {
282
+ _iterator.e(err);
283
+ } finally {
284
+ _iterator.f();
285
+ }
286
+ }
287
+ internalData.selectCheckboxMaps = selectMaps;
288
+ $xeList.updateCheckboxStatus();
289
+ },
290
+ cacheRowMap: function cacheRowMap() {
291
+ var $xeList = this;
292
+ var internalData = $xeList.internalData;
293
+ var fullData = internalData.fullData;
294
+ var keyField = $xeList.computeKeyField;
295
+ var keyMaps = {};
296
+ fullData.forEach(function (row) {
297
+ var rowKey = getRowKeyByField(row, keyField);
298
+ keyMaps[rowKey] = row;
299
+ });
300
+ internalData.fullKeyMaps = keyMaps;
301
+ },
125
302
  /**
126
303
  * 加载数据
127
304
  * @param {Array} datas 数据
@@ -141,7 +318,10 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
141
318
  internalData.fullData = fullData;
142
319
  // 如果gt为0,则总是启用
143
320
  reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
321
+ $xeList.cacheRowMap();
144
322
  $xeList.handleData();
323
+ $xeList.updateRadioModeValue();
324
+ $xeList.updateCheckboxModeValue();
145
325
  return $xeList.computeScrollLoad().then(function () {
146
326
  $xeList.refreshScroll();
147
327
  });
@@ -155,6 +335,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
155
335
  $xeList.clearScroll();
156
336
  return $xeList.loadData(datas);
157
337
  },
338
+ getFullData: function getFullData() {
339
+ var $xeList = this;
340
+ var internalData = $xeList.internalData;
341
+ var fullData = internalData.fullData;
342
+ return fullData;
343
+ },
158
344
  calcTableHeight: function calcTableHeight(key) {
159
345
  var $xeList = this;
160
346
  var props = $xeList;
@@ -179,6 +365,10 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
179
365
  updateHeight: function updateHeight() {
180
366
  var $xeList = this;
181
367
  var reactData = $xeList.reactData;
368
+ var headEl = $xeList.$refs.refHeaderElem;
369
+ var footEl = $xeList.$refs.refFooterElem;
370
+ reactData.headHeight = headEl ? Math.floor(headEl.offsetHeight) : 0;
371
+ reactData.footHeight = footEl ? Math.floor(footEl.offsetHeight) : 0;
182
372
  reactData.customHeight = $xeList.calcTableHeight('height');
183
373
  reactData.customMaxHeight = $xeList.calcTableHeight('maxHeight');
184
374
  },
@@ -199,7 +389,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
199
389
  var scrollYLoad = reactData.scrollYLoad;
200
390
  var fullData = internalData.fullData,
201
391
  scrollYStore = internalData.scrollYStore;
202
- reactData.items = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
392
+ reactData.rowList = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
203
393
  return $xeList.$nextTick();
204
394
  },
205
395
  updateYData: function updateYData() {
@@ -211,23 +401,24 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
211
401
  var $xeList = this;
212
402
  var reactData = $xeList.reactData;
213
403
  var internalData = $xeList.internalData;
404
+ var browseObj = $xeList.browseObj;
214
405
  return $xeList.$nextTick().then(function () {
215
406
  var scrollYLoad = reactData.scrollYLoad;
216
407
  var scrollYStore = internalData.scrollYStore;
217
408
  var virtualBodyElem = $xeList.$refs.refVirtualBody;
218
409
  var sYOpts = $xeList.computeSYOpts;
219
410
  var rowHeight = 0;
220
- var firstItemElem;
411
+ var firstRowElem;
221
412
  if (virtualBodyElem) {
222
413
  if (sYOpts.sItem) {
223
- firstItemElem = virtualBodyElem.querySelector(sYOpts.sItem);
414
+ firstRowElem = virtualBodyElem.querySelector(sYOpts.sItem);
224
415
  }
225
- if (!firstItemElem) {
226
- firstItemElem = virtualBodyElem.children[0];
416
+ if (!firstRowElem) {
417
+ firstRowElem = virtualBodyElem.children[0];
227
418
  }
228
419
  }
229
- if (firstItemElem) {
230
- rowHeight = firstItemElem.offsetHeight;
420
+ if (firstRowElem) {
421
+ rowHeight = firstRowElem.offsetHeight;
231
422
  }
232
423
  rowHeight = Math.max(12, rowHeight);
233
424
  scrollYStore.rowHeight = rowHeight;
@@ -362,31 +553,1100 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
362
553
  isY: isY
363
554
  }, evnt);
364
555
  },
556
+ getRowKey: function getRowKey(row) {
557
+ var $xeList = this;
558
+ var keyField = $xeList.computeKeyField;
559
+ return getRowKeyByField(row, keyField);
560
+ },
561
+ eqRowKey: eqRowKey,
562
+ eqRow: function eqRow(row1, row2) {
563
+ var $xeList = this;
564
+ if (row1 && row2) {
565
+ if (row1 === row2) {
566
+ return true;
567
+ }
568
+ return eqRowKey($xeList.getRowId(row1), $xeList.getRowId(row2));
569
+ }
570
+ return false;
571
+ },
572
+ eqRowByKey: function eqRowByKey(row, rowKey) {
573
+ var $xeList = this;
574
+ return row && eqRowKey($xeList.getRowKey(row), rowKey);
575
+ },
576
+ findRow: function findRow(list, row) {
577
+ var $xeList = this;
578
+ return row ? _xeUtils.default.find(list, function (obj) {
579
+ return $xeList.eqRow(obj, row);
580
+ }) : null;
581
+ },
582
+ findRowByKey: function findRowByKey(list, rowId) {
583
+ var $xeList = this;
584
+ var keyField = $xeList.computeKeyField;
585
+ return _xeUtils.default.find(list, function (obj) {
586
+ return eqRowKey(getRowIdByField(obj, keyField), rowId);
587
+ });
588
+ },
589
+ findRowIndexOf: function findRowIndexOf(list, row) {
590
+ var $xeList = this;
591
+ return row ? _xeUtils.default.findIndexOf(list, function (obj) {
592
+ return $xeList.eqRow(obj, row);
593
+ }) : -1;
594
+ },
595
+ findRowIndexOfByKey: function findRowIndexOfByKey(list, rowKey) {
596
+ var $xeList = this;
597
+ var keyField = $xeList.computeKeyField;
598
+ return _xeUtils.default.findIndexOf(list, function (obj) {
599
+ return eqRowKey(getRowIdByField(obj, keyField), rowKey);
600
+ });
601
+ },
602
+ isCheckedByRadioRowKey: function isCheckedByRadioRowKey(rowKey) {
603
+ var $xeList = this;
604
+ var reactData = $xeList.reactData;
605
+ var selectRadioRow = reactData.selectRadioRow;
606
+ return $xeList.getRowKey(selectRadioRow) === rowKey;
607
+ },
608
+ isCheckedByRadioRow: function isCheckedByRadioRow(row) {
609
+ var $xeList = this;
610
+ return $xeList.isCheckedByRadioRowKey($xeList.getRowKey(row));
611
+ },
612
+ isCheckedByCheckboxRowKey: function isCheckedByCheckboxRowKey(rowid) {
613
+ var $xeList = this;
614
+ var reactData = $xeList.reactData;
615
+ var internalData = $xeList.internalData;
616
+ var updateCheckboxFlag = reactData.updateCheckboxFlag;
617
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
618
+ return !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
619
+ },
620
+ isCheckedByCheckboxRow: function isCheckedByCheckboxRow(row) {
621
+ var $xeList = this;
622
+ return $xeList.isCheckedByCheckboxRowKey($xeList.getRowKey(row));
623
+ },
624
+ setCurrentRow: function setCurrentRow(row) {
625
+ var $xeList = this;
626
+ var reactData = $xeList.reactData;
627
+ var internalData = $xeList.internalData;
628
+ internalData.currentRow = row;
629
+ reactData.currRowFlag++;
630
+ return $xeList.$nextTick();
631
+ },
632
+ setCurrentRowByKey: function setCurrentRowByKey(rowKey) {
633
+ var $xeList = this;
634
+ var reactData = $xeList.reactData;
635
+ var internalData = $xeList.internalData;
636
+ var fullData = internalData.fullData;
637
+ internalData.currentRow = $xeList.findRowByKey(fullData, rowKey);
638
+ reactData.currRowFlag++;
639
+ return $xeList.$nextTick();
640
+ },
641
+ getCurrentRow: function getCurrentRow() {
642
+ var $xeList = this;
643
+ var internalData = $xeList.internalData;
644
+ var currentRow = internalData.currentRow;
645
+ return currentRow;
646
+ },
647
+ getCurrentRowKey: function getCurrentRowKey() {
648
+ var $xeList = this;
649
+ var internalData = $xeList.internalData;
650
+ var currentRow = internalData.currentRow;
651
+ return currentRow ? $xeList.getRowKey(currentRow) : null;
652
+ },
653
+ clearCurrentRow: function clearCurrentRow() {
654
+ var $xeList = this;
655
+ var reactData = $xeList.reactData;
656
+ var internalData = $xeList.internalData;
657
+ internalData.currentRow = null;
658
+ reactData.currRowFlag++;
659
+ return $xeList.$nextTick();
660
+ },
661
+ setRadioRow: function setRadioRow(row) {
662
+ var $xeList = this;
663
+ var reactData = $xeList.reactData;
664
+ reactData.selectRadioRow = row;
665
+ var value = $xeList.getRowKey(row);
666
+ $xeList.emitRadioMode(value);
667
+ return $xeList.$nextTick();
668
+ },
669
+ setRadioRowByKey: function setRadioRowByKey(rowKey) {
670
+ var $xeList = this;
671
+ var reactData = $xeList.reactData;
672
+ var internalData = $xeList.internalData;
673
+ var fullData = internalData.fullData;
674
+ reactData.selectRadioRow = $xeList.findRowByKey(fullData, rowKey);
675
+ var value = rowKey;
676
+ $xeList.emitRadioMode(value);
677
+ return $xeList.$nextTick();
678
+ },
679
+ getRadioRow: function getRadioRow() {
680
+ var $xeList = this;
681
+ var reactData = $xeList.reactData;
682
+ var selectRadioRow = reactData.selectRadioRow;
683
+ return selectRadioRow;
684
+ },
685
+ getRadioRowKey: function getRadioRowKey() {
686
+ var $xeList = this;
687
+ var reactData = $xeList.reactData;
688
+ var selectRadioRow = reactData.selectRadioRow;
689
+ return selectRadioRow ? $xeList.getRowKey(selectRadioRow) : null;
690
+ },
691
+ clearRadioRow: function clearRadioRow() {
692
+ var $xeList = this;
693
+ var reactData = $xeList.reactData;
694
+ var value = null;
695
+ reactData.selectRadioRow = value;
696
+ $xeList.emitRadioMode(value);
697
+ return $xeList.$nextTick();
698
+ },
699
+ setCheckboxRow: function setCheckboxRow(row, checked) {
700
+ var $xeList = this;
701
+ var internalData = $xeList.internalData;
702
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
703
+ var keyField = $xeList.computeKeyField;
704
+ var rowList = row ? _xeUtils.default.isArray(row) ? row : [row] : [];
705
+ rowList.forEach(checked ? function (obj) {
706
+ var rowid = getRowIdByField(obj, keyField);
707
+ if (!selectCheckboxMaps[rowid]) {
708
+ selectCheckboxMaps[rowid] = obj;
709
+ }
710
+ } : function (obj) {
711
+ var rowid = getRowIdByField(obj, keyField);
712
+ if (selectCheckboxMaps[rowid]) {
713
+ delete selectCheckboxMaps[rowid];
714
+ }
715
+ });
716
+ var value = $xeList.getCheckboxRowKeys();
717
+ $xeList.emitCheckboxMode(value);
718
+ return $xeList.updateCheckboxStatus();
719
+ },
720
+ setCheckboxRowByKey: function setCheckboxRowByKey(rowKey, checked) {
721
+ var $xeList = this;
722
+ var internalData = $xeList.internalData;
723
+ var selectCheckboxMaps = internalData.selectCheckboxMaps,
724
+ fullKeyMaps = internalData.fullKeyMaps;
725
+ var keyField = $xeList.computeKeyField;
726
+ var rowKeys = rowKey ? _xeUtils.default.isArray(rowKey) ? rowKey : [rowKey] : [];
727
+ rowKeys.forEach(checked ? function (key) {
728
+ var row = fullKeyMaps[key || ''];
729
+ if (row) {
730
+ var rowid = getRowIdByField(row, keyField);
731
+ if (row && !selectCheckboxMaps[rowid]) {
732
+ selectCheckboxMaps[rowid] = row;
733
+ }
734
+ }
735
+ } : function (key) {
736
+ var row = fullKeyMaps[key || ''];
737
+ if (row) {
738
+ var rowid = getRowIdByField(row, keyField);
739
+ if (selectCheckboxMaps[rowid]) {
740
+ delete selectCheckboxMaps[rowid];
741
+ }
742
+ }
743
+ });
744
+ var value = $xeList.getCheckboxRowKeys();
745
+ $xeList.emitCheckboxMode(value);
746
+ return $xeList.updateCheckboxStatus();
747
+ },
748
+ getCheckboxRows: function getCheckboxRows() {
749
+ var $xeList = this;
750
+ var reactData = $xeList.reactData;
751
+ var internalData = $xeList.internalData;
752
+ var updateCheckboxFlag = reactData.updateCheckboxFlag;
753
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
754
+ var rowList = [];
755
+ if (updateCheckboxFlag) {
756
+ _xeUtils.default.each(selectCheckboxMaps, function (row) {
757
+ if (row) {
758
+ rowList.push(row);
759
+ }
760
+ });
761
+ }
762
+ return rowList;
763
+ },
764
+ getCheckboxRowKeys: function getCheckboxRowKeys() {
765
+ var $xeList = this;
766
+ var reactData = $xeList.reactData;
767
+ var internalData = $xeList.internalData;
768
+ var updateCheckboxFlag = reactData.updateCheckboxFlag;
769
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
770
+ var keyField = $xeList.computeKeyField;
771
+ var rowKeys = [];
772
+ if (updateCheckboxFlag) {
773
+ _xeUtils.default.each(selectCheckboxMaps, function (row) {
774
+ if (row) {
775
+ var rowKey = getRowKeyByField(row, keyField);
776
+ rowKeys.push(rowKey);
777
+ }
778
+ });
779
+ }
780
+ return rowKeys;
781
+ },
782
+ clearCheckboxRow: function clearCheckboxRow() {
783
+ var $xeList = this;
784
+ var reactData = $xeList.reactData;
785
+ var internalData = $xeList.internalData;
786
+ internalData.selectCheckboxMaps = {};
787
+ reactData.updateCheckboxFlag++;
788
+ reactData.isAllChecked = false;
789
+ reactData.isAllIndeterminate = false;
790
+ var value = [];
791
+ $xeList.emitCheckboxMode(value);
792
+ return $xeList.$nextTick();
793
+ },
794
+ setAllCheckboxRow: function setAllCheckboxRow(checked) {
795
+ var $xeList = this;
796
+ var internalData = $xeList.internalData;
797
+ var fullData = internalData.fullData,
798
+ selectCheckboxMaps = internalData.selectCheckboxMaps;
799
+ var keyField = $xeList.computeKeyField;
800
+ if (checked) {
801
+ var value = [];
802
+ var _iterator2 = _createForOfIteratorHelper(fullData),
803
+ _step2;
804
+ try {
805
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
806
+ var row = _step2.value;
807
+ var rowKey = getRowKeyByField(row, keyField);
808
+ var rowid = getRowIdByField(row, keyField);
809
+ selectCheckboxMaps[rowid] = row;
810
+ value.push(rowKey);
811
+ }
812
+ } catch (err) {
813
+ _iterator2.e(err);
814
+ } finally {
815
+ _iterator2.f();
816
+ }
817
+ $xeList.emitCheckboxMode(value);
818
+ return $xeList.updateCheckboxStatus();
819
+ }
820
+ return $xeList.clearCheckboxRow();
821
+ },
822
+ updateCheckboxStatus: function updateCheckboxStatus() {
823
+ var $xeList = this;
824
+ var reactData = $xeList.reactData;
825
+ var internalData = $xeList.internalData;
826
+ var selectCheckboxMaps = internalData.selectCheckboxMaps,
827
+ fullData = internalData.fullData;
828
+ var keyField = $xeList.computeKeyField;
829
+ var checkboxOpts = $xeList.computeCheckboxOpts;
830
+ var checkMethod = checkboxOpts.checkMethod;
831
+ var hasChecked = false;
832
+ var hasUnchecked = false;
833
+ if (checkMethod) {
834
+ var _iterator3 = _createForOfIteratorHelper(fullData),
835
+ _step3;
836
+ try {
837
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
838
+ var row = _step3.value;
839
+ if (checkMethod({
840
+ row: row,
841
+ $list: $xeList
842
+ })) {
843
+ var rowid = getRowIdByField(row, keyField);
844
+ if (selectCheckboxMaps[rowid]) {
845
+ hasChecked = true;
846
+ } else {
847
+ hasUnchecked = true;
848
+ if (hasChecked) {
849
+ break;
850
+ }
851
+ }
852
+ }
853
+ }
854
+ } catch (err) {
855
+ _iterator3.e(err);
856
+ } finally {
857
+ _iterator3.f();
858
+ }
859
+ } else {
860
+ var _iterator4 = _createForOfIteratorHelper(fullData),
861
+ _step4;
862
+ try {
863
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
864
+ var _row = _step4.value;
865
+ var _rowid = getRowIdByField(_row, keyField);
866
+ if (selectCheckboxMaps[_rowid]) {
867
+ hasChecked = true;
868
+ } else {
869
+ hasUnchecked = true;
870
+ if (hasChecked) {
871
+ break;
872
+ }
873
+ }
874
+ }
875
+ } catch (err) {
876
+ _iterator4.e(err);
877
+ } finally {
878
+ _iterator4.f();
879
+ }
880
+ }
881
+ reactData.isAllChecked = hasChecked && !hasUnchecked;
882
+ reactData.isAllIndeterminate = hasChecked && hasUnchecked;
883
+ reactData.updateCheckboxFlag++;
884
+ return $xeList.$nextTick();
885
+ },
886
+ changeCheckboxAllEvent: function changeCheckboxAllEvent(evnt) {
887
+ var $xeList = this;
888
+ var reactData = $xeList.reactData;
889
+ var isAllChecked = reactData.isAllChecked;
890
+ var isChecked = !isAllChecked;
891
+ if (isChecked) {
892
+ $xeList.setAllCheckboxRow(true);
893
+ } else {
894
+ $xeList.clearCheckboxRow();
895
+ }
896
+ $xeList.dispatchEvent('checkbox-all', {
897
+ checked: isChecked
898
+ }, evnt);
899
+ },
900
+ changeCheckboxEvent: function changeCheckboxEvent(evnt, row) {
901
+ var $xeList = this;
902
+ var reactData = $xeList.reactData;
903
+ var internalData = $xeList.internalData;
904
+ evnt.preventDefault();
905
+ evnt.stopPropagation();
906
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
907
+ var checkboxOpts = $xeList.computeCheckboxOpts;
908
+ var checkMethod = checkboxOpts.checkMethod;
909
+ var rowid = $xeList.getRowKey(row);
910
+ var isDisabled = checkMethod ? !checkMethod({
911
+ $list: $xeList,
912
+ row: row
913
+ }) : false;
914
+ if (isDisabled) {
915
+ return;
916
+ }
917
+ var isChecked = false;
918
+ if (selectCheckboxMaps[rowid]) {
919
+ delete selectCheckboxMaps[rowid];
920
+ } else {
921
+ isChecked = true;
922
+ selectCheckboxMaps[rowid] = row;
923
+ }
924
+ reactData.updateCheckboxFlag++;
925
+ $xeList.updateCheckboxStatus();
926
+ var rowids = _xeUtils.default.keys(selectCheckboxMaps);
927
+ var value = rowids.map(_utils.deModelValue);
928
+ $xeList.emitCheckboxMode(value);
929
+ $xeList.dispatchEvent('checkbox-change', {
930
+ row: row,
931
+ value: value,
932
+ checked: isChecked
933
+ }, evnt);
934
+ },
935
+ changeCurrentEvent: function changeCurrentEvent(evnt, row) {
936
+ var $xeList = this;
937
+ var reactData = $xeList.reactData;
938
+ var internalData = $xeList.internalData;
939
+ evnt.preventDefault();
940
+ var rowOpts = $xeList.computeRowOpts;
941
+ var currentMethod = rowOpts.currentMethod;
942
+ var isDisabled = false;
943
+ if (currentMethod) {
944
+ isDisabled = !currentMethod({
945
+ row: row
946
+ });
947
+ }
948
+ if (isDisabled) {
949
+ return;
950
+ }
951
+ var isChecked = true;
952
+ internalData.currentRow = row;
953
+ reactData.currRowFlag++;
954
+ $xeList.dispatchEvent('current-change', {
955
+ row: row,
956
+ checked: isChecked
957
+ }, evnt);
958
+ },
959
+ changeRadioEvent: function changeRadioEvent(evnt, row) {
960
+ var $xeList = this;
961
+ var reactData = $xeList.reactData;
962
+ evnt.preventDefault();
963
+ evnt.stopPropagation();
964
+ var selectRadioRow = reactData.selectRadioRow;
965
+ var radioOpts = $xeList.computeRadioOpts;
966
+ var strict = radioOpts.strict,
967
+ checkMethod = radioOpts.checkMethod;
968
+ var rowKey = $xeList.getRowKey(row);
969
+ var isDisabled = checkMethod ? !checkMethod({
970
+ $list: $xeList,
971
+ row: row
972
+ }) : false;
973
+ if (isDisabled) {
974
+ return;
975
+ }
976
+ var value = rowKey;
977
+ var isChecked = true;
978
+ if (strict) {
979
+ if (selectRadioRow && rowKey === $xeList.getRowKey(selectRadioRow)) {
980
+ isChecked = false;
981
+ reactData.selectRadioRow = null;
982
+ } else {
983
+ reactData.selectRadioRow = row;
984
+ }
985
+ } else {
986
+ reactData.selectRadioRow = row;
987
+ }
988
+ $xeList.emitRadioMode(value);
989
+ $xeList.dispatchEvent('radio-change', {
990
+ row: row,
991
+ value: value,
992
+ checked: isChecked
993
+ }, evnt);
994
+ },
995
+ clearRowDropOrigin: function clearRowDropOrigin() {
996
+ var $xeList = this;
997
+ var el = $xeList.$refs.refElem;
998
+ if (el) {
999
+ var clss = 'row--drag-origin';
1000
+ _xeUtils.default.arrayEach(el.querySelectorAll(".".concat(clss)), function (elem) {
1001
+ elem.draggable = false;
1002
+ (0, _dom.removeClass)(elem, clss);
1003
+ });
1004
+ }
1005
+ },
1006
+ updateRowDropOrigin: function updateRowDropOrigin(row) {
1007
+ var $xeList = this;
1008
+ var sYOpts = $xeList.computeSYOpts;
1009
+ var sItem = sYOpts.sItem;
1010
+ var el = $xeList.$refs.refElem;
1011
+ if (el) {
1012
+ var clss = 'row--drag-origin';
1013
+ var rowid = $xeList.getRowId(row);
1014
+ _xeUtils.default.arrayEach(el.querySelectorAll(".vxe-list--row[rowid=\"".concat(rowid, "\"]") + (sItem ? "".concat(sItem, "[rowid=\"").concat(rowid, "\"]") : '')), function (elem) {
1015
+ (0, _dom.addClass)(elem, clss);
1016
+ });
1017
+ }
1018
+ },
1019
+ updateRowDropTipContent: function updateRowDropTipContent(rowEl) {
1020
+ var $xeList = this;
1021
+ var reactData = $xeList.reactData;
1022
+ var dragRow = reactData.dragRow;
1023
+ var dragOpts = $xeList.computeDragOpts;
1024
+ var tooltipMethod = dragOpts.tooltipMethod;
1025
+ var rTooltipMethod = tooltipMethod;
1026
+ var tipContent = '';
1027
+ if (rTooltipMethod) {
1028
+ var rtParams = {
1029
+ $list: $xeList,
1030
+ row: dragRow
1031
+ };
1032
+ tipContent = "".concat(rTooltipMethod(rtParams) || '');
1033
+ } else {
1034
+ tipContent = (0, _ui.getI18n)('vxe.list.dragTip', [rowEl.textContent || '']);
1035
+ }
1036
+ reactData.dragTipText = tipContent;
1037
+ },
1038
+ hideDropTip: function hideDropTip() {
1039
+ var $xeList = this;
1040
+ var rdTipEl = $xeList.$refs.refDragTipElem;
1041
+ var rdLineEl = $xeList.$refs.refDragRowLineElem;
1042
+ if (rdTipEl) {
1043
+ rdTipEl.style.display = '';
1044
+ }
1045
+ if (rdLineEl) {
1046
+ rdLineEl.style.display = '';
1047
+ }
1048
+ },
1049
+ clearCrossListDragStatus: function clearCrossListDragStatus() {
1050
+ var $xeList = this;
1051
+ var crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)($xeList);
1052
+ // crossListDragRowObj = null
1053
+ crossListDragRowInfo.row = null;
1054
+ },
1055
+ clearDragStatus: function clearDragStatus() {
1056
+ var $xeList = this;
1057
+ var reactData = $xeList.reactData;
1058
+ var dragRow = reactData.dragRow;
1059
+ if (dragRow) {
1060
+ $xeList.hideDropTip();
1061
+ $xeList.clearRowDropOrigin();
1062
+ $xeList.clearCrossListDragStatus();
1063
+ reactData.dragRow = null;
1064
+ }
1065
+ },
1066
+ handleRowDragMousedownEvent: function handleRowDragMousedownEvent(evnt, params) {
1067
+ var $xeList = this;
1068
+ var reactData = $xeList.reactData;
1069
+ evnt.stopPropagation();
1070
+ var row = params.row;
1071
+ var dragConfig = $xeList.computeDragOpts;
1072
+ var trigger = dragConfig.trigger,
1073
+ dragStartMethod = dragConfig.dragStartMethod;
1074
+ var dragEl = evnt.currentTarget;
1075
+ var rowEl = trigger === 'row' ? dragEl : dragEl.parentElement.parentElement;
1076
+ $xeList.clearRowDropOrigin();
1077
+ if (dragStartMethod && !dragStartMethod(params)) {
1078
+ rowEl.draggable = false;
1079
+ reactData.dragRow = null;
1080
+ $xeList.hideDropTip();
1081
+ return;
1082
+ }
1083
+ var dragstartEventParams = {
1084
+ row: row
1085
+ };
1086
+ reactData.dragRow = row;
1087
+ rowEl.draggable = true;
1088
+ $xeList.updateRowDropOrigin(row);
1089
+ $xeList.updateRowDropTipContent(rowEl);
1090
+ $xeList.dispatchEvent('row-dragstart', dragstartEventParams, evnt);
1091
+ },
1092
+ handleRowDragMouseupEvent: function handleRowDragMouseupEvent() {
1093
+ var $xeList = this;
1094
+ $xeList.clearDragStatus();
1095
+ },
1096
+ showDropTip: function showDropTip(evnt, rowEl, showLine, dragPos) {
1097
+ var $xeList = this;
1098
+ var wrapperEl = $xeList.$refs.refElem;
1099
+ if (!wrapperEl) {
1100
+ return;
1101
+ }
1102
+ var wrapperRect = wrapperEl.getBoundingClientRect();
1103
+ var wrapperHeight = wrapperEl.clientHeight;
1104
+ if (rowEl) {
1105
+ var rdLineEl = $xeList.$refs.refDragRowLineElem;
1106
+ if (rdLineEl) {
1107
+ if (showLine) {
1108
+ var trRect = rowEl.getBoundingClientRect();
1109
+ var rowHeight = rowEl.clientHeight;
1110
+ var offsetTop = Math.max(1, trRect.y - wrapperRect.y);
1111
+ if (offsetTop + rowHeight > wrapperHeight) {
1112
+ rowHeight = wrapperHeight - offsetTop;
1113
+ }
1114
+ rdLineEl.style.display = 'block';
1115
+ rdLineEl.style.top = "".concat(offsetTop, "px");
1116
+ rdLineEl.style.height = "".concat(rowHeight, "px");
1117
+ rdLineEl.setAttribute('drag-pos', dragPos);
1118
+ } else {
1119
+ rdLineEl.style.display = '';
1120
+ }
1121
+ }
1122
+ }
1123
+ var rdTipEl = $xeList.$refs.refDragTipElem;
1124
+ if (rdTipEl) {
1125
+ rdTipEl.style.display = 'block';
1126
+ rdTipEl.style.top = "".concat(Math.min(wrapperEl.clientHeight - wrapperEl.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y), "px");
1127
+ rdTipEl.style.left = "".concat(Math.min(wrapperEl.clientWidth - wrapperEl.scrollLeft - rdTipEl.clientWidth - 1, evnt.clientX - wrapperRect.x), "px");
1128
+ rdTipEl.setAttribute('drag-status', showLine ? 'normal' : 'disabled');
1129
+ }
1130
+ },
1131
+ clearRowDragData: function clearRowDragData() {
1132
+ var $xeList = this;
1133
+ var reactData = $xeList.reactData;
1134
+ var wrapperEl = $xeList.$refs.refElem;
1135
+ var dtClss = ['.vxe-list--row'];
1136
+ $xeList.hideDropTip();
1137
+ $xeList.clearRowDropOrigin();
1138
+ (0, _anime.clearRowAnimate)(wrapperEl, dtClss);
1139
+ reactData.dragRow = null;
1140
+ },
1141
+ handleRowDragSwapEvent: function handleRowDragSwapEvent(evnt, dragRow, prevDragRow, prevDragPos) {
1142
+ var $xeList = this;
1143
+ var reactData = $xeList.reactData;
1144
+ var internalData = $xeList.internalData;
1145
+ var fullData = internalData.fullData;
1146
+ var dragConfig = $xeList.computeDragOpts;
1147
+ var animation = dragConfig.animation,
1148
+ dragEndMethod = dragConfig.dragEndMethod;
1149
+ var dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
1150
+ var dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
1151
+ var el = $xeList.$refs.refElem;
1152
+ var errRest = {
1153
+ status: false
1154
+ };
1155
+ if (!(el && prevDragRow && dragRow)) {
1156
+ return Promise.resolve(errRest);
1157
+ }
1158
+ // 判断是否有拖动
1159
+ if (prevDragRow !== dragRow) {
1160
+ var dragParams = {
1161
+ oldRow: dragRow,
1162
+ newRow: prevDragRow,
1163
+ dragRow: dragRow,
1164
+ dragPos: prevDragPos,
1165
+ offsetIndex: dragOffsetIndex
1166
+ };
1167
+ var dragRowid = $xeList.getRowId(dragRow);
1168
+ var _dragRowIndex = $xeList.findRowIndexOfByKey(fullData, dragRowid);
1169
+ var newRowid = $xeList.getRowKey(prevDragRow);
1170
+ var dragRowHeight = 0;
1171
+ var dragOffsetTop = -1;
1172
+ if (animation) {
1173
+ var prevRowEl = el.querySelector(".vxe-list--row[rowid=\"".concat(newRowid, "\"]"));
1174
+ var oldRowEl = el.querySelector(".vxe-list--row[rowid=\"".concat(dragRowid, "\"]"));
1175
+ var targetRowEl = prevRowEl || oldRowEl;
1176
+ if (targetRowEl) {
1177
+ dragRowHeight = targetRowEl.offsetHeight;
1178
+ }
1179
+ if (oldRowEl) {
1180
+ dragOffsetTop = oldRowEl.offsetTop;
1181
+ }
1182
+ }
1183
+ var oafIndex = -1;
1184
+ var nafIndex = -1;
1185
+ return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(function (status) {
1186
+ if (!status) {
1187
+ return errRest;
1188
+ }
1189
+ // 移出
1190
+ oafIndex = $xeList.findRowIndexOf(fullData, dragRow);
1191
+ fullData.splice(oafIndex, 1);
1192
+ // 插入
1193
+ var pafIndex = $xeList.findRowIndexOf(fullData, prevDragRow);
1194
+ nafIndex = pafIndex + dragOffsetIndex;
1195
+ fullData.splice(nafIndex, 0, dragRow);
1196
+ $xeList.handleData();
1197
+ if (reactData.scrollYLoad) {
1198
+ $xeList.updateYSpace();
1199
+ }
1200
+ if (evnt) {
1201
+ var dragendEventParams = {
1202
+ oldRow: dragRow,
1203
+ newRow: prevDragRow,
1204
+ dragRow: dragRow,
1205
+ dragPos: prevDragPos,
1206
+ offsetIndex: dragOffsetIndex,
1207
+ _index: {
1208
+ newIndex: nafIndex,
1209
+ oldIndex: oafIndex
1210
+ }
1211
+ };
1212
+ $xeList.dispatchEvent('row-dragend', dragendEventParams, evnt);
1213
+ }
1214
+ return $xeList.$nextTick().then(function () {
1215
+ if (animation) {
1216
+ var rowList = reactData.rowList;
1217
+ var _fullData = internalData.fullData;
1218
+ var _newRowIndex = $xeList.findRowIndexOfByKey(_fullData, dragRowid);
1219
+ var firstRow = _fullData[0];
1220
+ var _firstRowIndex = $xeList.findRowIndexOf(_fullData, firstRow);
1221
+ var wrapperEl = el;
1222
+ if (_firstRowIndex > -1) {
1223
+ var _lastRowIndex = _firstRowIndex + _fullData.length;
1224
+ var rsIndex = -1;
1225
+ var reIndex = -1;
1226
+ var offsetRate = 1;
1227
+ if (_dragRowIndex < _firstRowIndex) {
1228
+ // 从上往下虚拟拖拽
1229
+ rsIndex = 0;
1230
+ reIndex = _newRowIndex - _firstRowIndex;
1231
+ } else if (_dragRowIndex > _lastRowIndex) {
1232
+ // 从下往上虚拟拖拽
1233
+ var $newRowIndex = $xeList.findRowIndexOfByKey(rowList, dragRowid);
1234
+ rsIndex = $newRowIndex + 1;
1235
+ reIndex = _fullData.length;
1236
+ offsetRate = -1;
1237
+ } else {
1238
+ if (_newRowIndex > _dragRowIndex) {
1239
+ // 从上往下拖拽
1240
+ rsIndex = _dragRowIndex - _firstRowIndex;
1241
+ reIndex = rsIndex + _newRowIndex - _dragRowIndex;
1242
+ } else {
1243
+ // 从下往上拖拽
1244
+ rsIndex = _newRowIndex - _firstRowIndex;
1245
+ reIndex = rsIndex + _dragRowIndex - _newRowIndex + 1;
1246
+ offsetRate = -1;
1247
+ }
1248
+ }
1249
+ var dragRangeList = _fullData.slice(rsIndex, reIndex);
1250
+ if (dragRangeList.length) {
1251
+ var dtClss = [];
1252
+ dragRangeList.forEach(function (obj) {
1253
+ var rowid = $xeList.getRowId(obj);
1254
+ dtClss.push(".vxe-list--row[rowid=\"".concat(rowid, "\"]"));
1255
+ });
1256
+ var dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
1257
+ (0, _anime.moveRowAnimateToTb)(dtTrList, offsetRate * dragRowHeight);
1258
+ }
1259
+ }
1260
+ var drClss = [".vxe-list--row[rowid=\"".concat(dragRowid, "\"]")];
1261
+ var newDtTrList = wrapperEl.querySelectorAll(drClss.join(','));
1262
+ var newTrEl = newDtTrList[0];
1263
+ if (dragOffsetTop > -1 && newTrEl) {
1264
+ (0, _anime.moveRowAnimateToTb)(newDtTrList, dragOffsetTop - newTrEl.offsetTop);
1265
+ }
1266
+ }
1267
+ $xeList.recalculate();
1268
+ }).then(function () {
1269
+ return {
1270
+ status: true
1271
+ };
1272
+ });
1273
+ }).catch(function () {
1274
+ return errRest;
1275
+ }).then(function (rest) {
1276
+ $xeList.clearRowDragData();
1277
+ $xeList.clearCrossListDragStatus();
1278
+ return rest;
1279
+ });
1280
+ }
1281
+ $xeList.clearRowDragData();
1282
+ $xeList.clearCrossListDragStatus();
1283
+ return Promise.resolve(errRest);
1284
+ },
1285
+ handleRowDragDragstartEvent: function handleRowDragDragstartEvent(evnt) {
1286
+ if (evnt.dataTransfer) {
1287
+ evnt.dataTransfer.setDragImage((0, _dom.getTpImg)(), 0, 0);
1288
+ }
1289
+ },
1290
+ handleRowDragDragendEvent: function handleRowDragDragendEvent(evnt) {
1291
+ var $xeList = this;
1292
+ var reactData = $xeList.reactData;
1293
+ var internalData = $xeList.internalData;
1294
+ var dragRow = reactData.dragRow;
1295
+ var prevDragRow = internalData.prevDragRow,
1296
+ prevDragPos = internalData.prevDragPos;
1297
+ $xeList.handleRowDragSwapEvent(evnt, dragRow, prevDragRow, prevDragPos);
1298
+ },
1299
+ handleRowDragDragoverEvent: function handleRowDragDragoverEvent(evnt) {
1300
+ var $xeList = this;
1301
+ var reactData = $xeList.reactData;
1302
+ var internalData = $xeList.internalData;
1303
+ var dragRow = reactData.dragRow;
1304
+ var fullData = internalData.fullData;
1305
+ if (!dragRow) {
1306
+ evnt.preventDefault();
1307
+ }
1308
+ var rowEl = evnt.currentTarget;
1309
+ var rowid = rowEl.getAttribute('rowid') || '';
1310
+ var row = $xeList.findRowByKey(fullData, rowid);
1311
+ if (row) {
1312
+ evnt.preventDefault();
1313
+ var offsetY = evnt.clientY - rowEl.getBoundingClientRect().y;
1314
+ var dragPos = offsetY < rowEl.clientHeight / 2 ? 'top' : 'bottom';
1315
+ internalData.prevDragRow = row;
1316
+ internalData.prevDragPos = dragPos;
1317
+ if (dragRow && $xeList.getRowId(dragRow) === rowid) {
1318
+ $xeList.showDropTip(evnt, rowEl, false, dragPos);
1319
+ return;
1320
+ }
1321
+ var dragOffsetIndex = dragPos === 'bottom' ? 1 : 0;
1322
+ var offsetIndex = dragOffsetIndex;
1323
+ var dragoverEventParams = {
1324
+ oldRow: dragRow,
1325
+ targetRow: row,
1326
+ dragPos: dragPos,
1327
+ dragRow: dragRow,
1328
+ offsetIndex: offsetIndex
1329
+ };
1330
+ $xeList.showDropTip(evnt, rowEl, true, dragPos);
1331
+ $xeList.dispatchEvent('row-dragover', dragoverEventParams, evnt);
1332
+ }
1333
+ },
1334
+ handleRowMousedownEvent: function handleRowMousedownEvent(evnt, row) {
1335
+ var $xeList = this;
1336
+ var dragConfig = $xeList.computeDragOpts;
1337
+ var isDrag = $xeList.computeIsDrag;
1338
+ var trigger = dragConfig.trigger,
1339
+ disabledMethod = dragConfig.disabledMethod;
1340
+ var isRowDrag = false;
1341
+ if (isDrag) {
1342
+ isRowDrag = trigger === 'row';
1343
+ }
1344
+ var params = {
1345
+ row: row,
1346
+ $list: $xeList
1347
+ };
1348
+ if (isRowDrag && !(disabledMethod && disabledMethod(params))) {
1349
+ $xeList.handleRowDragMousedownEvent(evnt, params);
1350
+ }
1351
+ },
1352
+ handleRowClickEvent: function handleRowClickEvent(evnt, row) {
1353
+ var $xeList = this;
1354
+ var reactData = $xeList.reactData;
1355
+ var internalData = $xeList.internalData;
1356
+ var currentRow = internalData.currentRow;
1357
+ var rowOpts = $xeList.computeRowOpts;
1358
+ var isCurrent = rowOpts.isCurrent;
1359
+ var triggerCurrent = false;
1360
+ if (isCurrent) {
1361
+ triggerCurrent = true;
1362
+ $xeList.changeCurrentEvent(evnt, row);
1363
+ } else if (currentRow) {
1364
+ internalData.currentRow = null;
1365
+ reactData.currRowFlag++;
1366
+ }
1367
+ $xeList.dispatchEvent('row-click', {
1368
+ row: row,
1369
+ triggerCurrent: triggerCurrent
1370
+ }, evnt);
1371
+ },
1372
+ handleRowDblclickEvent: function handleRowDblclickEvent(evnt, row) {
1373
+ var $xeList = this;
1374
+ $xeList.dispatchEvent('row-dblclick', {
1375
+ row: row
1376
+ }, evnt);
1377
+ },
365
1378
  //
366
1379
  // Render
367
1380
  //
1381
+ renderDragTip: function renderDragTip(h) {
1382
+ var $xeList = this;
1383
+ var reactData = $xeList.reactData;
1384
+ var dragRow = reactData.dragRow,
1385
+ dragTipText = reactData.dragTipText;
1386
+ var dragOpts = $xeList.computeDragOpts;
1387
+ var isDrag = $xeList.computeIsDrag;
1388
+ var dRow = dragRow;
1389
+ if (isDrag) {
1390
+ return h('div', {
1391
+ class: 'vxe-list--drag-wrapper'
1392
+ }, [h('div', {
1393
+ ref: 'refDragRowLineElem',
1394
+ class: ['vxe-list--drag-row-line', {
1395
+ 'is--guides': dragOpts.showGuidesStatus
1396
+ }]
1397
+ }), dRow && dragOpts.showDragTip ? h('div', {
1398
+ ref: 'refDragTipElem',
1399
+ class: 'vxe-list--drag-sort-tip'
1400
+ }, [h('div', {
1401
+ class: 'vxe-list--drag-sort-tip-wrapper'
1402
+ }, [h('div', {
1403
+ class: 'vxe-list--drag-sort-tip-status'
1404
+ }, [h('span', {
1405
+ class: ['vxe-list--drag-sort-tip-normal-status', (0, _ui.getIcon)().LIST_DRAG_STATUS_NODE]
1406
+ }), h('span', {
1407
+ class: ['vxe-list--drag-sort-tip-disabled-status', (0, _ui.getIcon)().LIST_DRAG_DISABLED]
1408
+ })]), h('div', {
1409
+ class: 'vxe-list--drag-sort-tip-content'
1410
+ }, dragTipText)])]) : (0, _ui.renderEmptyElement)($xeList)]);
1411
+ }
1412
+ return (0, _ui.renderEmptyElement)($xeList);
1413
+ },
1414
+ renderRadio: function renderRadio(h, row, rowid, isChecked) {
1415
+ var $xeList = this;
1416
+ var props = $xeList;
1417
+ var showRadio = props.showRadio;
1418
+ var radioOpts = $xeList.computeRadioOpts;
1419
+ var showIcon = radioOpts.showIcon,
1420
+ checkMethod = radioOpts.checkMethod,
1421
+ visibleMethod = radioOpts.visibleMethod;
1422
+ var isVisible = !visibleMethod || visibleMethod({
1423
+ $list: $xeList,
1424
+ row: row
1425
+ });
1426
+ if (showRadio && showIcon && isVisible) {
1427
+ var isDisabled = checkMethod ? !checkMethod({
1428
+ $list: $xeList,
1429
+ row: row
1430
+ }) : false;
1431
+ return h('div', {
1432
+ key: 'ct2',
1433
+ class: ['vxe-list--radio-option', {
1434
+ 'is--checked': isChecked,
1435
+ 'is--disabled': isDisabled
1436
+ }],
1437
+ on: {
1438
+ click: function click(evnt) {
1439
+ if (!isDisabled) {
1440
+ $xeList.changeRadioEvent(evnt, row);
1441
+ }
1442
+ }
1443
+ }
1444
+ }, [h('span', {
1445
+ class: ['vxe-radio--icon', isChecked ? (0, _ui.getIcon)().RADIO_CHECKED : (0, _ui.getIcon)().RADIO_UNCHECKED]
1446
+ })]);
1447
+ }
1448
+ return (0, _ui.renderEmptyElement)($xeList);
1449
+ },
1450
+ renderCheckbox: function renderCheckbox(h, row, rowid, isChecked) {
1451
+ var $xeList = this;
1452
+ var props = $xeList;
1453
+ var showCheckbox = props.showCheckbox;
1454
+ var checkboxOpts = $xeList.computeCheckboxOpts;
1455
+ var showIcon = checkboxOpts.showIcon,
1456
+ checkMethod = checkboxOpts.checkMethod,
1457
+ visibleMethod = checkboxOpts.visibleMethod;
1458
+ var isVisible = !visibleMethod || visibleMethod({
1459
+ $list: $xeList,
1460
+ row: row
1461
+ });
1462
+ if (showCheckbox && showIcon && isVisible) {
1463
+ var isDisabled = checkMethod ? !checkMethod({
1464
+ $list: $xeList,
1465
+ row: row
1466
+ }) : false;
1467
+ return h('div', {
1468
+ key: 'ct3',
1469
+ class: ['vxe-list--checkbox-option', {
1470
+ 'is--checked': isChecked,
1471
+ 'is--disabled': isDisabled
1472
+ }],
1473
+ on: {
1474
+ click: function click(evnt) {
1475
+ if (!isDisabled) {
1476
+ $xeList.changeCheckboxEvent(evnt, row);
1477
+ }
1478
+ }
1479
+ }
1480
+ }, [h('span', {
1481
+ class: ['vxe-checkbox--icon', isChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
1482
+ })]);
1483
+ }
1484
+ return (0, _ui.renderEmptyElement)($xeList);
1485
+ },
1486
+ renderRow: function renderRow(h, row, rowIndex) {
1487
+ var $xeList = this;
1488
+ var props = $xeList;
1489
+ var reactData = $xeList.reactData;
1490
+ var internalData = $xeList.internalData;
1491
+ var slots = $xeList.$scopedSlots;
1492
+ var showRadio = props.showRadio,
1493
+ showCheckbox = props.showCheckbox;
1494
+ var selectRadioRow = reactData.selectRadioRow,
1495
+ currRowFlag = reactData.currRowFlag,
1496
+ updateCheckboxFlag = reactData.updateCheckboxFlag;
1497
+ var selectCheckboxMaps = internalData.selectCheckboxMaps,
1498
+ currentRow = internalData.currentRow;
1499
+ var contentSlot = slots.content;
1500
+ var dragOpts = $xeList.computeDragOpts;
1501
+ var trigger = dragOpts.trigger,
1502
+ icon = dragOpts.icon,
1503
+ disabledMethod = dragOpts.disabledMethod,
1504
+ visibleMethod = dragOpts.visibleMethod;
1505
+ var rowOpts = $xeList.computeRowOpts;
1506
+ var useKey = rowOpts.useKey,
1507
+ contentField = rowOpts.contentField,
1508
+ rowClassName = rowOpts.className,
1509
+ isCurrent = rowOpts.isCurrent;
1510
+ var isDrag = $xeList.computeIsDrag;
1511
+ var keyField = $xeList.computeKeyField;
1512
+ var isRowFnCls = rowClassName && _xeUtils.default.isFunction(rowClassName);
1513
+ var hasKey = keyField || useKey || isDrag || isCurrent || showRadio || showCheckbox;
1514
+ var rowKey = hasKey && keyField ? getRowIdByField(row, keyField) : '';
1515
+ var rowid = (0, _utils.enModelValue)(rowKey);
1516
+ var rowParams = {
1517
+ row: row,
1518
+ $list: $xeList
1519
+ };
1520
+ var isRadioChecked = false;
1521
+ if (showRadio) {
1522
+ isRadioChecked = selectRadioRow && (row === selectRadioRow || $xeList.eqRowByKey(selectRadioRow, rowKey));
1523
+ }
1524
+ var isCheckboxChecked = false;
1525
+ if (showCheckbox) {
1526
+ isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
1527
+ }
1528
+ var ctVNs = [];
1529
+ var isDragDisabled = false;
1530
+ if (isDrag && keyField && (!visibleMethod || visibleMethod(rowParams))) {
1531
+ var handleOns = {};
1532
+ if (trigger !== 'row') {
1533
+ isDragDisabled = !!(disabledMethod && disabledMethod(rowParams));
1534
+ handleOns.mousedown = function (evnt) {
1535
+ if (!isDragDisabled) {
1536
+ $xeList.handleRowDragMousedownEvent(evnt, rowParams);
1537
+ }
1538
+ };
1539
+ handleOns.mouseup = $xeList.handleRowDragMouseupEvent;
1540
+ }
1541
+ ctVNs.push(h('div', {
1542
+ key: 'ct1',
1543
+ class: 'vxe-list--row-drag'
1544
+ }, [h('span', {
1545
+ class: 'vxe-list--drag-handle',
1546
+ on: handleOns
1547
+ }, [h('i', {
1548
+ class: icon || (0, _ui.getIcon)().LIST_DRAG
1549
+ })])]));
1550
+ }
1551
+ if (showRadio) {
1552
+ ctVNs.push($xeList.renderRadio(h, row, rowid, isRadioChecked));
1553
+ }
1554
+ if (showCheckbox) {
1555
+ ctVNs.push($xeList.renderCheckbox(h, row, rowid, isCheckboxChecked));
1556
+ }
1557
+ ctVNs.push(h('div', {
1558
+ key: 'ct5',
1559
+ class: 'vxe-list--row-content'
1560
+ }, contentSlot ? contentSlot(rowParams) : contentField ? (0, _utils.getText)(row[contentField]) : ''));
1561
+ var rowOns = {
1562
+ mousedown: function mousedown(evnt) {
1563
+ $xeList.handleRowMousedownEvent(evnt, row);
1564
+ },
1565
+ mouseup: $xeList.handleRowDragMouseupEvent,
1566
+ click: function click(evnt) {
1567
+ $xeList.handleRowClickEvent(evnt, row);
1568
+ },
1569
+ dblclick: function dblclick(evnt) {
1570
+ $xeList.handleRowDblclickEvent(evnt, row);
1571
+ }
1572
+ };
1573
+ // 拖拽行事件
1574
+ if (isDrag) {
1575
+ rowOns.dragstart = $xeList.handleRowDragDragstartEvent;
1576
+ rowOns.dragend = $xeList.handleRowDragDragendEvent;
1577
+ rowOns.dragover = $xeList.handleRowDragDragoverEvent;
1578
+ }
1579
+ return h('div', {
1580
+ key: hasKey && keyField ? rowid : rowIndex,
1581
+ class: ['vxe-list--row', isRowFnCls ? rowClassName(rowParams) : rowClassName || '', {
1582
+ 'is--drag-disabled': isDragDisabled,
1583
+ 'is--current': currRowFlag && currentRow && $xeList.eqRowByKey(currentRow, rowKey),
1584
+ 'is-radio--checked': isRadioChecked,
1585
+ 'is-checkbox--checked': isCheckboxChecked
1586
+ }],
1587
+ attrs: hasKey && keyField ? {
1588
+ rowid: rowid
1589
+ } : undefined,
1590
+ on: rowOns
1591
+ }, ctVNs);
1592
+ },
368
1593
  renderVN: function renderVN(h) {
369
1594
  var $xeList = this;
370
1595
  var props = $xeList;
371
1596
  var reactData = $xeList.reactData;
372
1597
  var slots = $xeList.$scopedSlots;
373
- var className = props.className,
1598
+ var showCheckbox = props.showCheckbox,
1599
+ className = props.className,
374
1600
  loading = props.loading;
375
1601
  var bodyHeight = reactData.bodyHeight,
376
1602
  topSpaceHeight = reactData.topSpaceHeight,
377
- items = reactData.items;
1603
+ rowList = reactData.rowList,
1604
+ isAllChecked = reactData.isAllChecked,
1605
+ isAllIndeterminate = reactData.isAllIndeterminate;
378
1606
  var defaultSlot = slots.default;
1607
+ var headerSlot = slots.header;
1608
+ var footerSlot = slots.footer;
379
1609
  var vSize = $xeList.computeSize;
380
- var styles = $xeList.computeStyles;
1610
+ var wrapperStyles = $xeList.computeWrapperStyles;
1611
+ var virtualStyles = $xeList.computeVirtualStyles;
1612
+ var radioOpts = $xeList.computeRadioOpts;
1613
+ var checkboxOpts = $xeList.computeCheckboxOpts;
1614
+ var dragOpts = $xeList.computeDragOpts;
1615
+ var trigger = dragOpts.trigger;
1616
+ var rowOpts = $xeList.computeRowOpts;
1617
+ var isHover = rowOpts.isHover,
1618
+ padding = rowOpts.padding;
1619
+ var showDefChekboxHead = showCheckbox && checkboxOpts.showHeader !== false;
381
1620
  return h('div', {
382
1621
  ref: 'refElem',
383
1622
  class: ['vxe-list', className ? _xeUtils.default.isFunction(className) ? className({
384
1623
  $list: $xeList
385
- }) : className : '', _defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--loading', loading)]
1624
+ }) : className : '', _defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--loading', loading)],
1625
+ style: wrapperStyles
1626
+ }, [headerSlot || showDefChekboxHead ? h('div', {
1627
+ ref: 'refHeaderElem',
1628
+ class: 'vxe-list--header-wrapper'
1629
+ }, [showDefChekboxHead ? h('div', {
1630
+ class: 'vxe-list--header-left'
386
1631
  }, [h('div', {
1632
+ class: ['vxe-list--checkbox-header', {
1633
+ 'is--checked': isAllChecked,
1634
+ 'is--indeterminate': isAllIndeterminate
1635
+ }],
1636
+ on: {
1637
+ click: $xeList.changeCheckboxAllEvent
1638
+ }
1639
+ }, [h('span', {
1640
+ class: ['vxe-checkbox--icon', isAllChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : isAllIndeterminate ? (0, _ui.getIcon)().CHECKBOX_INDETERMINATE : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
1641
+ })])]) : (0, _ui.renderEmptyElement)($xeList), headerSlot ? h('div', {
1642
+ class: 'vxe-list--header-content'
1643
+ }, headerSlot({
1644
+ items: rowList,
1645
+ $list: $xeList
1646
+ })) : (0, _ui.renderEmptyElement)($xeList)]) : (0, _ui.renderEmptyElement)($xeList), h('div', {
387
1647
  ref: 'refVirtualWrapper',
388
1648
  class: 'vxe-list--virtual-wrapper',
389
- style: styles,
1649
+ style: virtualStyles,
390
1650
  on: {
391
1651
  scroll: $xeList.scrollEvent
392
1652
  }
@@ -397,13 +1657,32 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
397
1657
  }
398
1658
  }), h('div', {
399
1659
  ref: 'refVirtualBody',
400
- class: 'vxe-list--body',
1660
+ class: ['vxe-list--body', {
1661
+ 'trigger--row': trigger === 'row',
1662
+ 'checkbox--highlight': checkboxOpts.highlight,
1663
+ 'radio--highlight': radioOpts.highlight,
1664
+ 'row--hover': isHover,
1665
+ 'is--padding': padding
1666
+ }],
401
1667
  style: {
402
1668
  marginTop: topSpaceHeight ? "".concat(topSpaceHeight, "px") : ''
403
1669
  }
404
- }, defaultSlot ? $xeList.callSlot(defaultSlot, {
405
- items: items
406
- }, h) : [])]),
1670
+ }, defaultSlot ? defaultSlot({
1671
+ items: rowList,
1672
+ $list: $xeList
1673
+ }) : rowList.map(function (row, i) {
1674
+ return $xeList.renderRow(h, row, i);
1675
+ }))]), footerSlot ? h('div', {
1676
+ ref: 'refFooterElem',
1677
+ class: 'vxe-list--footer-wrapper'
1678
+ }, footerSlot({
1679
+ items: rowList,
1680
+ $list: $xeList
1681
+ })) : (0, _ui.renderEmptyElement)($xeList),
1682
+ /**
1683
+ * 拖拽提示
1684
+ */
1685
+ $xeList.renderDragTip(h),
407
1686
  /**
408
1687
  * 加载中
409
1688
  */
@@ -423,35 +1702,66 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
423
1702
  },
424
1703
  height: function height() {
425
1704
  var $xeList = this;
426
- $xeList.recalculate();
1705
+ $xeList.reFlag++;
427
1706
  },
428
1707
  maxHeight: function maxHeight() {
429
1708
  var $xeList = this;
430
- $xeList.recalculate();
1709
+ $xeList.reFlag++;
431
1710
  },
432
- syncResize: function syncResize(val) {
1711
+ syncResize: function syncResize() {
433
1712
  var $xeList = this;
434
- if (val) {
1713
+ $xeList.reFlag++;
1714
+ },
1715
+ computeRowHeight: function computeRowHeight() {
1716
+ var $xeList = this;
1717
+ $xeList.reFlag++;
1718
+ },
1719
+ reFlag: function reFlag() {
1720
+ var $xeList = this;
1721
+ $xeList.$nextTick(function () {
435
1722
  $xeList.recalculate();
436
- $xeList.$nextTick(function () {
437
- return setTimeout(function () {
438
- return $xeList.recalculate();
439
- });
440
- });
441
- }
1723
+ });
1724
+ },
1725
+ checkRowKey: function checkRowKey() {
1726
+ var $xeList = this;
1727
+ $xeList.updateRadioModeValue();
1728
+ },
1729
+ checkRowKeys: function checkRowKeys() {
1730
+ var $xeList = this;
1731
+ $xeList.updateCheckboxModeValue();
442
1732
  }
443
1733
  },
444
1734
  created: function created() {
445
1735
  var $xeList = this;
446
1736
  var props = $xeList;
447
1737
  $xeList.internalData = createInternalData();
1738
+ $xeList.browseObj = _xeUtils.default.browse();
448
1739
  $xeList.loadData(props.data || []);
449
1740
  },
450
1741
  mounted: function mounted() {
451
1742
  var $xeList = this;
452
1743
  var props = $xeList;
453
1744
  var internalData = $xeList.internalData;
454
- $xeList.recalculate();
1745
+ var showRadio = props.showRadio,
1746
+ showCheckbox = props.showCheckbox;
1747
+ var rowOpts = $xeList.computeRowOpts;
1748
+ var useKey = rowOpts.useKey,
1749
+ keyField = rowOpts.keyField;
1750
+ var isDrag = $xeList.computeIsDrag;
1751
+ if (!keyField) {
1752
+ if (showRadio) {
1753
+ errLog('vxe.error.reqSupportProp', ['show-radio', 'row-config.keyField']);
1754
+ }
1755
+ if (showCheckbox) {
1756
+ errLog('vxe.error.reqSupportProp', ['show-checkbox', 'row-config.keyField']);
1757
+ }
1758
+ if (isDrag) {
1759
+ errLog('vxe.error.reqSupportProp', ['drag-config', 'row-config.keyField']);
1760
+ }
1761
+ }
1762
+ if (useKey && !keyField) {
1763
+ errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
1764
+ }
455
1765
  if (props.autoResize) {
456
1766
  var el = $xeList.$refs.refElem;
457
1767
  var resizeObserver = _ui.globalResize.create(function () {
@@ -463,6 +1773,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
463
1773
  }
464
1774
  internalData.resizeObserver = resizeObserver;
465
1775
  }
1776
+ $xeList.recalculate();
466
1777
  _ui.globalEvents.on($xeList, 'resize', $xeList.recalculate);
467
1778
  },
468
1779
  activated: function activated() {