iov-design 2.15.31 → 2.15.33

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.
package/lib/select.js CHANGED
@@ -554,13 +554,6 @@ module.exports = require("iov-design/lib/utils/vue-popper");
554
554
 
555
555
  /***/ }),
556
556
 
557
- /***/ 6:
558
- /***/ (function(module, exports) {
559
-
560
- module.exports = require("iov-design/lib/mixins/locale");
561
-
562
- /***/ }),
563
-
564
557
  /***/ 64:
565
558
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
566
559
 
@@ -1071,7 +1064,7 @@ var focus_ = __webpack_require__(22);
1071
1064
  var focus_default = /*#__PURE__*/__webpack_require__.n(focus_);
1072
1065
 
1073
1066
  // EXTERNAL MODULE: external "iov-design/lib/mixins/locale"
1074
- var locale_ = __webpack_require__(6);
1067
+ var locale_ = __webpack_require__(7);
1075
1068
  var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
1076
1069
 
1077
1070
  // EXTERNAL MODULE: external "iov-design/lib/input"
@@ -2246,6 +2239,13 @@ src_select.install = function (Vue) {
2246
2239
 
2247
2240
  /* harmony default export */ var packages_select = __webpack_exports__["default"] = (src_select);
2248
2241
 
2242
+ /***/ }),
2243
+
2244
+ /***/ 7:
2245
+ /***/ (function(module, exports) {
2246
+
2247
+ module.exports = require("iov-design/lib/mixins/locale");
2248
+
2249
2249
  /***/ })
2250
2250
 
2251
2251
  /******/ });
@@ -128,18 +128,85 @@ var cellStarts = {
128
128
  var cellForced = {
129
129
  selection: {
130
130
  renderHeader: function renderHeader(h, _ref) {
131
- var store = _ref.store;
131
+ var _this = this;
132
132
 
133
- return h('el-checkbox', {
133
+ var store = _ref.store;
134
+ var _store$states = store.states,
135
+ selection = _store$states.selection,
136
+ data = _store$states.data,
137
+ rowKey = _store$states.rowKey;
138
+
139
+ var indeterminate = selection.length > 0 && !(selection.length === data.length);
140
+
141
+ if (rowKey) {
142
+ // 全选: v-model - true, indeterminate - false
143
+ // 半选: v-model - false, indeterminate - true
144
+ // 不选:v-model - false, indeterminate - false
145
+
146
+ // 已选择的数据中是否包括当前页的数据项 && !当前页数据全部选中
147
+ indeterminate = selection.some(function (o) {
148
+ return data.some(function (row) {
149
+ return row[rowKey] === o[rowKey];
150
+ });
151
+ }) && !data.every(function (row) {
152
+ return selection.some(function (o) {
153
+ return row[rowKey] === o[rowKey];
154
+ });
155
+ });
156
+ }
157
+ return [h('el-checkbox', {
134
158
  attrs: {
135
- disabled: store.states.data && store.states.data.length === 0,
136
- indeterminate: store.states.selection.length > 0 && !this.isAllSelected,
159
+ disabled: data && data.length === 0,
160
+ indeterminate: indeterminate,
137
161
 
138
162
  value: this.isAllSelected },
139
163
  on: {
140
164
  'input': this.toggleAllSelection
141
165
  }
142
- });
166
+ }), this.table.crossPageSelection && h(
167
+ 'el-dropdown',
168
+ {
169
+ 'class': 'el-table__cross-page-selection',
170
+ attrs: { placement: 'bottom-start',
171
+ trigger: 'click'
172
+ },
173
+ on: {
174
+ 'command': function command(_command) {
175
+ return _this.onSelectionChange(_command, _this.scope);
176
+ },
177
+ 'visible-change': this.onVisibleChange
178
+ }
179
+ },
180
+ [h('i', { 'class': ['iov-icon-arrow-down', this.store.states.showSelectionDropdown ? 'show-selection-dropdown' : ''] }), h(
181
+ 'el-dropdown-menu',
182
+ { slot: 'dropdown', 'class': 'table-selection__dropdown' },
183
+ [h(
184
+ 'el-dropdown-item',
185
+ {
186
+ attrs: { disabled: data && data.length === 0, command: 1 }
187
+ },
188
+ ['\u5168\u9009\u5F53\u9875']
189
+ ), h(
190
+ 'el-dropdown-item',
191
+ {
192
+ attrs: { disabled: data && data.length === 0, command: 3 }
193
+ },
194
+ ['\u5168\u9009\u6240\u6709\u9875']
195
+ ), h(
196
+ 'el-dropdown-item',
197
+ {
198
+ attrs: { disabled: data && data.length === 0, command: 2 }
199
+ },
200
+ ['\u6E05\u7A7A\u5F53\u9875']
201
+ ), h(
202
+ 'el-dropdown-item',
203
+ {
204
+ attrs: { disabled: data && data.length === 0, command: 4 }
205
+ },
206
+ ['\u6E05\u7A7A\u6240\u6709\u9875']
207
+ )]
208
+ )]
209
+ )];
143
210
  },
144
211
  renderCell: function renderCell(h, _ref2) {
145
212
  var row = _ref2.row,
@@ -274,7 +341,7 @@ function treeCellPrefix(h, _ref8) {
274
341
  return ele;
275
342
  }
276
343
  // EXTERNAL MODULE: ./packages/table/src/util.js
277
- var util = __webpack_require__(8);
344
+ var util = __webpack_require__(6);
278
345
 
279
346
  // EXTERNAL MODULE: external "iov-design/lib/checkbox"
280
347
  var checkbox_ = __webpack_require__(18);
@@ -632,7 +699,7 @@ module.exports = require("iov-design/lib/utils/util");
632
699
 
633
700
  /***/ }),
634
701
 
635
- /***/ 8:
702
+ /***/ 6:
636
703
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
637
704
 
638
705
  "use strict";
package/lib/table.js CHANGED
@@ -208,18 +208,6 @@ module.exports = require("iov-design/lib/utils/vue-popper");
208
208
 
209
209
  /***/ }),
210
210
  /* 6 */
211
- /***/ (function(module, exports) {
212
-
213
- module.exports = require("iov-design/lib/mixins/locale");
214
-
215
- /***/ }),
216
- /* 7 */
217
- /***/ (function(module, exports) {
218
-
219
- module.exports = require("vue");
220
-
221
- /***/ }),
222
- /* 8 */
223
211
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
224
212
 
225
213
  "use strict";
@@ -533,6 +521,18 @@ var objectEquals = function objectEquals(objectA, objectB) {
533
521
  return true;
534
522
  };
535
523
 
524
+ /***/ }),
525
+ /* 7 */
526
+ /***/ (function(module, exports) {
527
+
528
+ module.exports = require("iov-design/lib/mixins/locale");
529
+
530
+ /***/ }),
531
+ /* 8 */
532
+ /***/ (function(module, exports) {
533
+
534
+ module.exports = require("vue");
535
+
536
536
  /***/ }),
537
537
  /* 9 */
538
538
  /***/ (function(module, exports) {
@@ -1151,7 +1151,7 @@ var mousewheel_mousewheel = function mousewheel(element, callback) {
1151
1151
  }
1152
1152
  });
1153
1153
  // EXTERNAL MODULE: external "iov-design/lib/mixins/locale"
1154
- var locale_ = __webpack_require__(6);
1154
+ var locale_ = __webpack_require__(7);
1155
1155
  var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
1156
1156
 
1157
1157
  // EXTERNAL MODULE: external "iov-design/lib/mixins/migrating"
@@ -1159,7 +1159,7 @@ var migrating_ = __webpack_require__(11);
1159
1159
  var migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);
1160
1160
 
1161
1161
  // EXTERNAL MODULE: external "vue"
1162
- var external_vue_ = __webpack_require__(7);
1162
+ var external_vue_ = __webpack_require__(8);
1163
1163
  var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
1164
1164
 
1165
1165
  // EXTERNAL MODULE: external "iov-design/lib/utils/merge"
@@ -1167,7 +1167,7 @@ var merge_ = __webpack_require__(9);
1167
1167
  var merge_default = /*#__PURE__*/__webpack_require__.n(merge_);
1168
1168
 
1169
1169
  // EXTERNAL MODULE: ./packages/table/src/util.js
1170
- var util = __webpack_require__(8);
1170
+ var util = __webpack_require__(6);
1171
1171
 
1172
1172
  // CONCATENATED MODULE: ./packages/table/src/store/expand.js
1173
1173
 
@@ -1625,6 +1625,13 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1625
1625
  selectOnIndeterminate: false,
1626
1626
  selectable: null,
1627
1627
 
1628
+ // 跨页全选标记
1629
+ isCrossPageSelection: false,
1630
+ // 全选下拉出现/隐藏事件
1631
+ showSelectionDropdown: false,
1632
+ // 已取消勾选的数据
1633
+ unSelectionData: [],
1634
+
1628
1635
  // 过滤
1629
1636
  filters: {}, // 不可响应的
1630
1637
  filteredData: null,
@@ -1701,12 +1708,24 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1701
1708
  return selection.indexOf(row) > -1;
1702
1709
  },
1703
1710
  clearSelection: function clearSelection() {
1711
+ var emitChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
1712
+
1704
1713
  var states = this.states;
1705
1714
  states.isAllSelected = false;
1706
1715
  var oldSelection = states.selection;
1716
+
1717
+ // 表格中有选中的数据项是disabled状态时,清空时保留该数据
1718
+ var isDisabledSelection = states.data.filter(function (row, index) {
1719
+ // 判断selectable是不可选中状态, 且当前数据项已被选中
1720
+ if (states.selectable && !states.selectable.call(null, row, index) && oldSelection.some(function (item) {
1721
+ return item[states.rowKey] === row[states.rowKey];
1722
+ })) {
1723
+ return row;
1724
+ }
1725
+ });
1707
1726
  if (oldSelection.length) {
1708
- states.selection = [];
1709
- this.table.$emit('selection-change', []);
1727
+ states.selection = isDisabledSelection;
1728
+ emitChange && this.table.$emit('selection-change', states.selection, states.isCrossPageSelection);
1710
1729
  }
1711
1730
  },
1712
1731
  cleanSelection: function cleanSelection() {
@@ -1735,7 +1754,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1735
1754
  return deleted.indexOf(item) === -1;
1736
1755
  });
1737
1756
  states.selection = newSelection;
1738
- this.table.$emit('selection-change', newSelection.slice());
1757
+ this.table.$emit('selection-change', newSelection.slice(), false);
1739
1758
  }
1740
1759
  },
1741
1760
  toggleRowSelection: function toggleRowSelection(row, selected) {
@@ -1746,16 +1765,135 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1746
1765
  var newSelection = (this.states.selection || []).slice();
1747
1766
  // 调用 API 修改选中值,不触发 select 事件
1748
1767
  if (emitChange) {
1768
+ this.getUnSelectedRow(newSelection);
1749
1769
  this.table.$emit('select', newSelection, row);
1750
1770
  }
1751
- this.table.$emit('selection-change', newSelection);
1771
+ if (this.states.isCrossPageSelection) {
1772
+ this.table.$emit('selection-change', this.states.unSelectionData, true);
1773
+ } else {
1774
+ this.table.$emit('selection-change', newSelection, false);
1775
+ }
1752
1776
  }
1753
1777
  },
1754
- _toggleAllSelection: function _toggleAllSelection() {
1778
+
1779
+
1780
+ /**
1781
+ * 选择数据事件
1782
+ * @param {num} command 选择事件类型 1-全选当前页 2-清空当前页 3-全选所有页 4-清空所有页
1783
+ */
1784
+ onSelectionChange: function onSelectionChange(command) {
1785
+ switch (command) {
1786
+ // 全选当前页
1787
+ case 1:
1788
+ this.onChangeCurrentPage(true, command);
1789
+ break;
1790
+ // 清空当前页
1791
+ case 2:
1792
+ this.onChangeCurrentPage(false, command);
1793
+ break;
1794
+ // 全选所有页
1795
+ case 3:
1796
+ this.states.isCrossPageSelection = true;
1797
+ this.onChangeCurrentPage(true, command);
1798
+ break;
1799
+ // 清空所有页
1800
+ case 4:
1801
+ this.onChangeCurrentPage(false, command);
1802
+ break;
1803
+ default:
1804
+ break;
1805
+ }
1806
+ },
1807
+ onChangeCurrentPage: function onChangeCurrentPage(selected, command) {
1755
1808
  var states = this.states;
1756
1809
  var _states$data = states.data,
1757
1810
  data = _states$data === undefined ? [] : _states$data,
1758
1811
  selection = states.selection;
1812
+
1813
+ data.forEach(function (row, index) {
1814
+ if (states.selectable) {
1815
+ if (states.selectable.call(null, row, index)) {
1816
+ Object(util["n" /* toggleRowStatus */])(selection, row, selected);
1817
+ }
1818
+ } else {
1819
+ Object(util["n" /* toggleRowStatus */])(selection, row, selected);
1820
+ }
1821
+ });
1822
+ this.updateAllSelected();
1823
+
1824
+ // 先点击跨页全选,再点击清空当前页/取消几条勾选数据, 最后点击全选当前页
1825
+ if (states.isCrossPageSelection) {
1826
+ // 重新计算未选中数据
1827
+ this.getUnSelectedRow(states.selection);
1828
+ }
1829
+
1830
+ if (command === 4) {
1831
+ states.isCrossPageSelection = false;
1832
+ this.clearSelection(false);
1833
+ states.unSelectionData = [];
1834
+ }
1835
+
1836
+ // 触发el-table的'selection-change'事件
1837
+ if (states.isCrossPageSelection) {
1838
+ this.table.$listeners['selection-change'](states.unSelectionData, states.isCrossPageSelection);
1839
+ } else {
1840
+ this.table.$listeners['selection-change'](states.selection, states.isCrossPageSelection);
1841
+ }
1842
+ },
1843
+
1844
+
1845
+ /**
1846
+ * 获取取消勾选数据项
1847
+ * @param {arr} selection 当前已选择所有数据项
1848
+ */
1849
+ getUnSelectedRow: function getUnSelectedRow(selection) {
1850
+ var _this = this;
1851
+
1852
+ if (!this.states.isCrossPageSelection) return;
1853
+
1854
+ var rowKey = this.states.rowKey;
1855
+
1856
+ // 从全部勾选数据中过滤出当前页勾选的数据
1857
+
1858
+ var selected = this.states.data.filter(function (item) {
1859
+ return selection.some(function (row) {
1860
+ return row[rowKey] === item[rowKey];
1861
+ });
1862
+ });
1863
+ // 通过当前页数据与当前页已勾选的数据, 过滤出当前页未勾选的数据
1864
+ var unselected = this.states.data.filter(function (item) {
1865
+ return !selected.some(function (row) {
1866
+ return row[rowKey] === item[rowKey];
1867
+ });
1868
+ });
1869
+
1870
+ // 取消勾选数据中是否存在当页面已勾选的数据项, 如有则删除
1871
+ var index = [];
1872
+ this.states.unSelectionData.forEach(function (item, i) {
1873
+ if (selected.some(function (s) {
1874
+ return s[rowKey] === item[rowKey];
1875
+ })) {
1876
+ index.push(i);
1877
+ }
1878
+ });
1879
+ this.states.unSelectionData = this.states.unSelectionData.filter(function (item, i) {
1880
+ return !index.includes(i);
1881
+ });
1882
+
1883
+ // 取消勾选数据中如果不存在当前页未勾选的数据, 则将当前未勾选的数据添push到取消勾选数据中
1884
+ unselected.forEach(function (item) {
1885
+ if (!_this.states.unSelectionData.some(function (s) {
1886
+ return s[rowKey] === item[rowKey];
1887
+ })) {
1888
+ _this.states.unSelectionData.push(item);
1889
+ }
1890
+ });
1891
+ },
1892
+ _toggleAllSelection: function _toggleAllSelection() {
1893
+ var states = this.states;
1894
+ var _states$data2 = states.data,
1895
+ data = _states$data2 === undefined ? [] : _states$data2,
1896
+ selection = states.selection;
1759
1897
  // when only some rows are selected (but not all), select or deselect all of them
1760
1898
  // depending on the value of selectOnIndeterminate
1761
1899
 
@@ -1775,8 +1913,15 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1775
1913
  }
1776
1914
  });
1777
1915
 
1916
+ var newSelection = (this.states.selection || []).slice();
1917
+
1778
1918
  if (selectionChanged) {
1779
- this.table.$emit('selection-change', selection ? selection.slice() : []);
1919
+ if (states.isCrossPageSelection) {
1920
+ this.getUnSelectedRow(newSelection);
1921
+ this.table.$emit('selection-change', states.unSelectionData || [], true);
1922
+ } else {
1923
+ this.table.$emit('selection-change', selection ? selection.slice() : [], false);
1924
+ }
1780
1925
  }
1781
1926
  this.table.$emit('select-all', selection);
1782
1927
  },
@@ -1862,7 +2007,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1862
2007
  this.states.sortOrder = order;
1863
2008
  },
1864
2009
  execFilter: function execFilter() {
1865
- var _this = this;
2010
+ var _this2 = this;
1866
2011
 
1867
2012
  var states = this.states;
1868
2013
  var _data = states._data,
@@ -1873,7 +2018,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
1873
2018
  Object.keys(filters).forEach(function (columnId) {
1874
2019
  var values = states.filters[columnId];
1875
2020
  if (!values || values.length === 0) return;
1876
- var column = Object(util["d" /* getColumnById */])(_this.states, columnId);
2021
+ var column = Object(util["d" /* getColumnById */])(_this2.states, columnId);
1877
2022
  if (column && column.filterMethod) {
1878
2023
  data = data.filter(function (row) {
1879
2024
  return values.some(function (value) {
@@ -3574,6 +3719,7 @@ var table_header_extends = Object.assign || function (target) { for (var i = 1;
3574
3719
 
3575
3720
 
3576
3721
 
3722
+
3577
3723
  var getAllColumns = function getAllColumns(columns) {
3578
3724
  var result = [];
3579
3725
  columns.forEach(function (column) {
@@ -3788,6 +3934,59 @@ var convertToRows = function convertToRows(originColumns) {
3788
3934
  }
3789
3935
  })),
3790
3936
 
3937
+ watch: {
3938
+ 'store.states.data': {
3939
+ handler: function handler() {
3940
+ var states = this.store.states;
3941
+ var _states$data = states.data,
3942
+ data = _states$data === undefined ? [] : _states$data,
3943
+ selection = states.selection,
3944
+ unSelectionData = states.unSelectionData,
3945
+ rowKey = states.rowKey;
3946
+
3947
+ var selectionRowKeys = selection.map(function (item) {
3948
+ return item[rowKey];
3949
+ });
3950
+ var unSelectionRowKeys = unSelectionData.map(function (item) {
3951
+ return item[rowKey];
3952
+ });
3953
+ // console.log(data, 'data');
3954
+ // console.log(selection, unSelectionRowKeys, 'selection');
3955
+ // 全选所有页
3956
+ if (this.store.states.isCrossPageSelection) {
3957
+ data.forEach(function (row, index) {
3958
+ if (states.selectable) {
3959
+ if (states.selectable.call(null, row, index)) {
3960
+ // 如果已勾选数据中不包含当前页数据(如跳转至新的一页), 则勾选
3961
+ if (!selectionRowKeys.includes(row[rowKey])) {
3962
+ Object(util["n" /* toggleRowStatus */])(selection, row, true);
3963
+ }
3964
+ // 如果取消勾选数据中包含当前页数据项, 则取消勾选
3965
+ if (unSelectionRowKeys.includes(row[rowKey])) {
3966
+ Object(util["n" /* toggleRowStatus */])(selection, row, false);
3967
+ }
3968
+ }
3969
+ } else {
3970
+ // 如果已勾选数据中不包含当前页数据(如跳转至新的一页), 则勾选
3971
+ if (!selectionRowKeys.includes(row[rowKey])) {
3972
+ Object(util["n" /* toggleRowStatus */])(selection, row, true);
3973
+ }
3974
+ // 如果取消勾选数据中包含当前页数据项, 则取消勾选
3975
+ if (unSelectionRowKeys.includes(row[rowKey])) {
3976
+ Object(util["n" /* toggleRowStatus */])(selection, row, false);
3977
+ }
3978
+ }
3979
+ });
3980
+ }
3981
+ this.store.getUnSelectedRow(states.selection);
3982
+ this.store.updateAllSelected();
3983
+ console.log('isAllSelected', states.isAllSelected);
3984
+ },
3985
+
3986
+ deep: true
3987
+ }
3988
+ },
3989
+
3791
3990
  created: function created() {
3792
3991
  this.filterPanels = {};
3793
3992
  },
@@ -3894,6 +4093,24 @@ var convertToRows = function convertToRows(originColumns) {
3894
4093
  toggleAllSelection: function toggleAllSelection() {
3895
4094
  this.store.commit('toggleAllSelection');
3896
4095
  },
4096
+
4097
+
4098
+ /**
4099
+ * 下拉框出现/隐藏事件
4100
+ * @param {bol} visible 出现/隐藏
4101
+ */
4102
+ onVisibleChange: function onVisibleChange(v) {
4103
+ this.store.states.showSelectionDropdown = v;
4104
+ },
4105
+
4106
+
4107
+ /**
4108
+ * 选择数据事件
4109
+ * @param {num} command 选择事件类型 1-全选当前页 2-清空当前页 3-全选所有页 4-清空所有页
4110
+ */
4111
+ onSelectionChange: function onSelectionChange(command) {
4112
+ this.store.onSelectionChange(command);
4113
+ },
3897
4114
  handleFilterClick: function handleFilterClick(event, column) {
3898
4115
  event.stopPropagation();
3899
4116
  var target = event.target;
@@ -4601,6 +4818,11 @@ var tableIdSeed = 1;
4601
4818
  default: true
4602
4819
  },
4603
4820
 
4821
+ crossPageSelection: {
4822
+ type: Boolean,
4823
+ default: false
4824
+ },
4825
+
4604
4826
  indent: {
4605
4827
  type: Number,
4606
4828
  default: 16
package/lib/tag.js CHANGED
@@ -205,7 +205,6 @@ __webpack_require__.r(__webpack_exports__);
205
205
  type: String,
206
206
  hit: Boolean,
207
207
  dot: Boolean,
208
- disableTransitions: Boolean,
209
208
  color: String,
210
209
  size: String,
211
210
  icon: String,
@@ -262,13 +261,7 @@ __webpack_require__.r(__webpack_exports__);
262
261
  )]
263
262
  );
264
263
 
265
- return this.disableTransitions ? tagEl : h(
266
- 'transition',
267
- {
268
- attrs: { name: 'el-zoom-in-center' }
269
- },
270
- [tagEl]
271
- );
264
+ return tagEl;
272
265
  }
273
266
  });
274
267
  // CONCATENATED MODULE: ./packages/tag/src/tag.vue?vue&type=script&lang=js&