vxe-table 4.16.17 → 4.16.19

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 (242) hide show
  1. package/es/colgroup/style.css +0 -0
  2. package/es/colgroup/style.min.css +0 -0
  3. package/es/column/style.css +0 -0
  4. package/es/column/style.min.css +0 -0
  5. package/es/grid/style.css +86 -0
  6. package/es/grid/style.min.css +1 -0
  7. package/es/iconfont.1758609514163.ttf +0 -0
  8. package/es/iconfont.1758609514163.woff +0 -0
  9. package/es/iconfont.1758609514163.woff2 +0 -0
  10. package/es/index.esm.js +3 -0
  11. package/es/locale/lang/ar-EG.d.ts +2 -0
  12. package/es/locale/lang/de-DE.d.ts +2 -0
  13. package/es/locale/lang/en-US.d.ts +2 -0
  14. package/es/locale/lang/es-ES.d.ts +2 -0
  15. package/es/locale/lang/fr-FR.d.ts +2 -0
  16. package/es/locale/lang/hu-HU.d.ts +2 -0
  17. package/es/locale/lang/hy-AM.d.ts +2 -0
  18. package/es/locale/lang/id-ID.d.ts +2 -0
  19. package/es/locale/lang/it-IT.d.ts +2 -0
  20. package/es/locale/lang/ja-JP.d.ts +2 -0
  21. package/es/locale/lang/ko-KR.d.ts +2 -0
  22. package/es/locale/lang/ms-MY.d.ts +2 -0
  23. package/es/locale/lang/nb-NO.d.ts +2 -0
  24. package/es/locale/lang/pt-BR.d.ts +2 -0
  25. package/es/locale/lang/ru-RU.d.ts +2 -0
  26. package/es/locale/lang/th-TH.d.ts +2 -0
  27. package/es/locale/lang/ug-CN.d.ts +2 -0
  28. package/es/locale/lang/uk-UA.d.ts +2 -0
  29. package/es/locale/lang/uz-UZ.d.ts +2 -0
  30. package/es/locale/lang/vi-VN.d.ts +2 -0
  31. package/es/locale/lang/zh-CHT.d.ts +2 -0
  32. package/es/locale/lang/zh-CN.d.ts +2 -0
  33. package/es/locale/lang/zh-HK.d.ts +2 -0
  34. package/es/locale/lang/zh-MO.d.ts +2 -0
  35. package/es/locale/lang/zh-TW.d.ts +2 -0
  36. package/es/style.css +1 -1
  37. package/es/table/module/filter/hook.js +21 -5
  38. package/es/table/module/filter/panel.js +4 -4
  39. package/es/table/module/menu/panel.js +27 -14
  40. package/es/table/src/cell.js +10 -7
  41. package/es/table/src/table.js +22 -22
  42. package/es/table/style.css +3657 -0
  43. package/es/table/style.min.css +1 -0
  44. package/es/toolbar/style.css +90 -0
  45. package/es/toolbar/style.min.css +1 -0
  46. package/es/ui/index.js +1 -1
  47. package/es/ui/src/log.js +1 -1
  48. package/es/ui/style.css +0 -0
  49. package/es/ui/style.min.css +0 -0
  50. package/es/v-x-e-table/style.css +0 -0
  51. package/es/v-x-e-table/style.min.css +0 -0
  52. package/es/vxe-colgroup/style.css +0 -0
  53. package/es/vxe-colgroup/style.min.css +0 -0
  54. package/es/vxe-column/style.css +0 -0
  55. package/es/vxe-column/style.min.css +0 -0
  56. package/es/vxe-grid/style.css +86 -0
  57. package/es/vxe-grid/style.min.css +1 -0
  58. package/es/vxe-table/style.css +3657 -0
  59. package/es/vxe-table/style.min.css +1 -0
  60. package/es/vxe-toolbar/style.css +90 -0
  61. package/es/vxe-toolbar/style.min.css +1 -0
  62. package/es/vxe-ui/style.css +0 -0
  63. package/es/vxe-ui/style.min.css +0 -0
  64. package/es/vxe-v-x-e-table/style.css +0 -0
  65. package/es/vxe-v-x-e-table/style.min.css +0 -0
  66. package/helper/vetur/attributes.json +1 -1
  67. package/helper/vetur/tags.json +1 -1
  68. package/lib/colgroup/style/index.js +1 -0
  69. package/lib/colgroup/style/style.css +0 -0
  70. package/lib/colgroup/style/style.min.css +0 -0
  71. package/lib/column/style/index.js +1 -0
  72. package/lib/column/style/style.css +0 -0
  73. package/lib/column/style/style.min.css +0 -0
  74. package/lib/grid/style/index.js +1 -0
  75. package/lib/grid/style/style.css +86 -0
  76. package/lib/grid/style/style.min.css +1 -0
  77. package/lib/iconfont.1758609514163.ttf +0 -0
  78. package/lib/iconfont.1758609514163.woff +0 -0
  79. package/lib/iconfont.1758609514163.woff2 +0 -0
  80. package/lib/index.common.js +22 -0
  81. package/lib/index.umd.js +73 -25
  82. package/lib/index.umd.min.js +1 -1
  83. package/lib/locale/lang/ar-EG.d.ts +2 -0
  84. package/lib/locale/lang/ar-EG.min.js +1 -1
  85. package/lib/locale/lang/ar-EG.umd.js +806 -0
  86. package/lib/locale/lang/de-DE.d.ts +2 -0
  87. package/lib/locale/lang/de-DE.min.js +1 -1
  88. package/lib/locale/lang/de-DE.umd.js +806 -0
  89. package/lib/locale/lang/en-US.d.ts +2 -0
  90. package/lib/locale/lang/en-US.min.js +1 -1
  91. package/lib/locale/lang/en-US.umd.js +806 -0
  92. package/lib/locale/lang/es-ES.d.ts +2 -0
  93. package/lib/locale/lang/es-ES.min.js +1 -1
  94. package/lib/locale/lang/es-ES.umd.js +806 -0
  95. package/lib/locale/lang/fr-FR.d.ts +2 -0
  96. package/lib/locale/lang/fr-FR.min.js +1 -1
  97. package/lib/locale/lang/fr-FR.umd.js +806 -0
  98. package/lib/locale/lang/hu-HU.d.ts +2 -0
  99. package/lib/locale/lang/hu-HU.min.js +1 -1
  100. package/lib/locale/lang/hu-HU.umd.js +806 -0
  101. package/lib/locale/lang/hy-AM.d.ts +2 -0
  102. package/lib/locale/lang/hy-AM.min.js +1 -1
  103. package/lib/locale/lang/hy-AM.umd.js +806 -0
  104. package/lib/locale/lang/id-ID.d.ts +2 -0
  105. package/lib/locale/lang/id-ID.min.js +1 -1
  106. package/lib/locale/lang/id-ID.umd.js +806 -0
  107. package/lib/locale/lang/it-IT.d.ts +2 -0
  108. package/lib/locale/lang/it-IT.min.js +1 -1
  109. package/lib/locale/lang/it-IT.umd.js +806 -0
  110. package/lib/locale/lang/ja-JP.d.ts +2 -0
  111. package/lib/locale/lang/ja-JP.min.js +1 -1
  112. package/lib/locale/lang/ja-JP.umd.js +806 -0
  113. package/lib/locale/lang/ko-KR.d.ts +2 -0
  114. package/lib/locale/lang/ko-KR.min.js +1 -1
  115. package/lib/locale/lang/ko-KR.umd.js +806 -0
  116. package/lib/locale/lang/ms-MY.d.ts +2 -0
  117. package/lib/locale/lang/ms-MY.min.js +1 -1
  118. package/lib/locale/lang/ms-MY.umd.js +806 -0
  119. package/lib/locale/lang/nb-NO.d.ts +2 -0
  120. package/lib/locale/lang/nb-NO.min.js +1 -1
  121. package/lib/locale/lang/nb-NO.umd.js +806 -0
  122. package/lib/locale/lang/pt-BR.d.ts +2 -0
  123. package/lib/locale/lang/pt-BR.min.js +1 -1
  124. package/lib/locale/lang/pt-BR.umd.js +806 -0
  125. package/lib/locale/lang/ru-RU.d.ts +2 -0
  126. package/lib/locale/lang/ru-RU.min.js +1 -1
  127. package/lib/locale/lang/ru-RU.umd.js +806 -0
  128. package/lib/locale/lang/th-TH.d.ts +2 -0
  129. package/lib/locale/lang/th-TH.min.js +1 -1
  130. package/lib/locale/lang/th-TH.umd.js +806 -0
  131. package/lib/locale/lang/ug-CN.d.ts +2 -0
  132. package/lib/locale/lang/ug-CN.min.js +1 -1
  133. package/lib/locale/lang/ug-CN.umd.js +806 -0
  134. package/lib/locale/lang/uk-UA.d.ts +2 -0
  135. package/lib/locale/lang/uk-UA.min.js +1 -1
  136. package/lib/locale/lang/uk-UA.umd.js +806 -0
  137. package/lib/locale/lang/uz-UZ.d.ts +2 -0
  138. package/lib/locale/lang/uz-UZ.min.js +1 -1
  139. package/lib/locale/lang/uz-UZ.umd.js +806 -0
  140. package/lib/locale/lang/vi-VN.d.ts +2 -0
  141. package/lib/locale/lang/vi-VN.min.js +1 -1
  142. package/lib/locale/lang/vi-VN.umd.js +806 -0
  143. package/lib/locale/lang/zh-CHT.d.ts +2 -0
  144. package/lib/locale/lang/zh-CHT.min.js +1 -1
  145. package/lib/locale/lang/zh-CHT.umd.js +806 -0
  146. package/lib/locale/lang/zh-CN.d.ts +2 -0
  147. package/lib/locale/lang/zh-CN.min.js +1 -1
  148. package/lib/locale/lang/zh-CN.umd.js +808 -0
  149. package/lib/locale/lang/zh-HK.d.ts +2 -0
  150. package/lib/locale/lang/zh-HK.min.js +1 -1
  151. package/lib/locale/lang/zh-HK.umd.js +23 -0
  152. package/lib/locale/lang/zh-MO.d.ts +2 -0
  153. package/lib/locale/lang/zh-MO.min.js +1 -1
  154. package/lib/locale/lang/zh-MO.umd.js +23 -0
  155. package/lib/locale/lang/zh-TW.d.ts +2 -0
  156. package/lib/locale/lang/zh-TW.min.js +1 -1
  157. package/lib/locale/lang/zh-TW.umd.js +23 -0
  158. package/lib/style.css +1 -1
  159. package/lib/table/module/custom/hook.js +430 -0
  160. package/lib/table/module/custom/hook.min.js +1 -0
  161. package/lib/table/module/custom/panel.js +1193 -0
  162. package/lib/table/module/custom/panel.min.js +1 -0
  163. package/lib/table/module/edit/hook.js +1308 -0
  164. package/lib/table/module/edit/hook.min.js +1 -0
  165. package/lib/table/module/export/export-panel.js +467 -0
  166. package/lib/table/module/export/export-panel.min.js +1 -0
  167. package/lib/table/module/export/hook.js +1888 -0
  168. package/lib/table/module/export/hook.min.js +1 -0
  169. package/lib/table/module/export/import-panel.js +226 -0
  170. package/lib/table/module/export/import-panel.min.js +1 -0
  171. package/lib/table/module/export/util.js +20 -0
  172. package/lib/table/module/export/util.min.js +1 -0
  173. package/lib/table/module/filter/hook.js +458 -0
  174. package/lib/table/module/filter/hook.min.js +1 -0
  175. package/lib/table/module/filter/panel.js +265 -0
  176. package/lib/table/module/filter/panel.min.js +1 -0
  177. package/lib/table/module/keyboard/hook.js +579 -0
  178. package/lib/table/module/keyboard/hook.min.js +1 -0
  179. package/lib/table/module/menu/hook.js +392 -0
  180. package/lib/table/module/menu/hook.min.js +1 -0
  181. package/lib/table/module/menu/panel.js +150 -0
  182. package/lib/table/module/menu/panel.min.js +1 -0
  183. package/lib/table/module/validator/hook.js +681 -0
  184. package/lib/table/module/validator/hook.min.js +1 -0
  185. package/lib/table/src/cell.js +9 -4
  186. package/lib/table/src/cell.min.js +1 -1
  187. package/lib/table/src/header.min.js +1 -0
  188. package/lib/table/src/props.js +318 -0
  189. package/lib/table/src/props.min.js +1 -0
  190. package/lib/table/src/store.js +15 -0
  191. package/lib/table/src/store.min.js +1 -0
  192. package/lib/table/src/table.js +924 -0
  193. package/lib/table/src/table.min.js +1 -0
  194. package/lib/table/src/use/cell-view.js +57 -0
  195. package/lib/table/src/use/cell-view.min.js +1 -0
  196. package/lib/table/src/use/index.js +16 -0
  197. package/lib/table/src/use/index.min.js +1 -0
  198. package/lib/table/src/util.js +916 -0
  199. package/lib/table/src/util.min.js +1 -0
  200. package/lib/table/style/index.js +1 -0
  201. package/lib/table/style/style.css +3657 -0
  202. package/lib/table/style/style.min.css +1 -0
  203. package/lib/toolbar/style/index.js +1 -0
  204. package/lib/toolbar/style/style.css +90 -0
  205. package/lib/toolbar/style/style.min.css +1 -0
  206. package/lib/ui/index.js +1 -1
  207. package/lib/ui/index.min.js +1 -1
  208. package/lib/ui/src/log.js +1 -1
  209. package/lib/ui/src/log.min.js +1 -1
  210. package/lib/ui/style/index.js +1 -0
  211. package/lib/ui/style/style.css +0 -0
  212. package/lib/ui/style/style.min.css +0 -0
  213. package/lib/v-x-e-table/style/index.js +1 -0
  214. package/lib/v-x-e-table/style/style.css +0 -0
  215. package/lib/v-x-e-table/style/style.min.css +0 -0
  216. package/lib/vxe-colgroup/style/index.js +1 -0
  217. package/lib/vxe-colgroup/style/style.css +0 -0
  218. package/lib/vxe-colgroup/style/style.min.css +0 -0
  219. package/lib/vxe-column/style/index.js +1 -0
  220. package/lib/vxe-column/style/style.css +0 -0
  221. package/lib/vxe-column/style/style.min.css +0 -0
  222. package/lib/vxe-grid/style/index.js +1 -0
  223. package/lib/vxe-grid/style/style.css +86 -0
  224. package/lib/vxe-grid/style/style.min.css +1 -0
  225. package/lib/vxe-table/style/index.js +1 -0
  226. package/lib/vxe-table/style/style.css +3657 -0
  227. package/lib/vxe-table/style/style.min.css +1 -0
  228. package/lib/vxe-toolbar/style/index.js +1 -0
  229. package/lib/vxe-toolbar/style/style.css +90 -0
  230. package/lib/vxe-toolbar/style/style.min.css +1 -0
  231. package/lib/vxe-ui/style/index.js +1 -0
  232. package/lib/vxe-ui/style/style.css +0 -0
  233. package/lib/vxe-ui/style/style.min.css +0 -0
  234. package/lib/vxe-v-x-e-table/style/index.js +1 -0
  235. package/lib/vxe-v-x-e-table/style/style.css +0 -0
  236. package/lib/vxe-v-x-e-table/style/style.min.css +0 -0
  237. package/package.json +1 -1
  238. package/packages/table/module/filter/hook.ts +23 -6
  239. package/packages/table/module/filter/panel.ts +4 -4
  240. package/packages/table/module/menu/panel.ts +29 -16
  241. package/packages/table/src/cell.ts +10 -7
  242. package/packages/table/src/table.ts +22 -22
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+
3
+ var _vue = require("vue");
4
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
5
+ var _ui = require("../../../ui");
6
+ var _util = require("../../src/util");
7
+ var _dom = require("../../../ui/src/dom");
8
+ var _utils = require("../../../ui/src/utils");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const {
11
+ renderer,
12
+ hooks
13
+ } = _ui.VxeUI;
14
+ const tableFilterMethodKeys = ['openFilter', 'setFilter', 'clearFilter', 'saveFilterPanel', 'saveFilterPanelByEvent', 'resetFilterPanel', 'resetFilterPanelByEvent', 'getCheckedFilters', 'updateFilterOptionStatus'];
15
+ hooks.add('tableFilterModule', {
16
+ setupTable($xeTable) {
17
+ const $xeGrid = $xeTable.xeGrid;
18
+ const $xeGantt = $xeTable.xeGantt;
19
+ const $xeGGWrapper = $xeGrid || $xeGantt;
20
+ const {
21
+ props,
22
+ reactData,
23
+ internalData
24
+ } = $xeTable;
25
+ const {
26
+ refElem,
27
+ refTableFilter
28
+ } = $xeTable.getRefMaps();
29
+ const {
30
+ computeFilterOpts,
31
+ computeMouseOpts
32
+ } = $xeTable.getComputeMaps();
33
+ // 确认筛选
34
+ const handleFilterConfirmFilter = evnt => {
35
+ const {
36
+ filterStore
37
+ } = reactData;
38
+ filterStore.options.forEach(option => {
39
+ option.checked = option._checked;
40
+ });
41
+ $xeTable.confirmFilterEvent(evnt);
42
+ };
43
+ // (单选)筛选发生改变
44
+ const changeRadioOption = (evnt, checked, item) => {
45
+ const {
46
+ filterStore
47
+ } = reactData;
48
+ filterStore.options.forEach(option => {
49
+ option._checked = false;
50
+ });
51
+ item._checked = checked;
52
+ $xeTable.checkFilterOptions();
53
+ handleFilterConfirmFilter(evnt);
54
+ };
55
+ // (多选)筛选发生改变
56
+ const changeMultipleOption = (evnt, checked, item) => {
57
+ item._checked = checked;
58
+ $xeTable.checkFilterOptions();
59
+ };
60
+ /**
61
+ * 重置筛选
62
+ * 当筛选面板中的重置按钮被按下时触发
63
+ * @param {Event} evnt 事件
64
+ */
65
+ const handleFilterResetFilter = evnt => {
66
+ const {
67
+ filterStore
68
+ } = reactData;
69
+ $xeTable.handleClearFilter(filterStore.column);
70
+ $xeTable.confirmFilterEvent(evnt);
71
+ if (evnt) {
72
+ $xeTable.dispatchEvent('clear-filter', {
73
+ filterList: []
74
+ }, evnt);
75
+ }
76
+ };
77
+ const filterPrivateMethods = {
78
+ checkFilterOptions() {
79
+ const {
80
+ filterStore
81
+ } = reactData;
82
+ filterStore.isAllSelected = filterStore.options.every(item => item._checked);
83
+ filterStore.isIndeterminate = !filterStore.isAllSelected && filterStore.options.some(item => item._checked);
84
+ },
85
+ /**
86
+ * 点击筛选事件
87
+ * 当筛选图标被点击时触发
88
+ * 更新选项是否全部状态
89
+ * 打开筛选面板
90
+ * @param {Event} evnt 事件
91
+ * @param {ColumnInfo} column 列配置
92
+ * @param {Object} params 参数
93
+ */
94
+ triggerFilterEvent(evnt, column, params) {
95
+ const {
96
+ initStore,
97
+ filterStore
98
+ } = reactData;
99
+ const {
100
+ elemStore
101
+ } = internalData;
102
+ if (filterStore.column === column && filterStore.visible) {
103
+ filterStore.visible = false;
104
+ } else {
105
+ const tableEl = refElem.value;
106
+ const {
107
+ scrollTop,
108
+ scrollLeft,
109
+ visibleHeight,
110
+ visibleWidth
111
+ } = (0, _dom.getDomNode)();
112
+ const filterOpts = computeFilterOpts.value;
113
+ const {
114
+ transfer
115
+ } = filterOpts;
116
+ const tableRect = tableEl.getBoundingClientRect();
117
+ const btnElem = evnt.currentTarget;
118
+ const filterRender = column ? column.filterRender : null;
119
+ const compConf = filterRender && (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
120
+ $xeTable.handleFilterOptions(column);
121
+ internalData._currFilterParams = params;
122
+ filterStore.style = null;
123
+ filterStore.visible = true;
124
+ initStore.filter = true;
125
+ (0, _vue.nextTick)(() => {
126
+ const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
127
+ if (!headerScrollElem) {
128
+ return;
129
+ }
130
+ const tableFilter = refTableFilter.value;
131
+ const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
132
+ if (!filterWrapperElem) {
133
+ return;
134
+ }
135
+ const btnRect = btnElem.getBoundingClientRect();
136
+ const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
137
+ const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
138
+ const filterWidth = filterWrapperElem.offsetWidth;
139
+ const centerWidth = filterWidth / 2;
140
+ let left = 0;
141
+ let top = 0;
142
+ let maxHeight = 0;
143
+ if (transfer) {
144
+ left = btnRect.left - centerWidth + scrollLeft;
145
+ top = btnRect.top + btnElem.clientHeight + scrollTop;
146
+ maxHeight = Math.min(Math.max(tableRect.height, Math.floor(visibleHeight / 2)), Math.max(80, visibleHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 28));
147
+ if (left < 16) {
148
+ left = 16;
149
+ } else if (left > visibleWidth - filterWidth - 16) {
150
+ left = visibleWidth - filterWidth - 16;
151
+ }
152
+ } else {
153
+ left = btnRect.left - tableRect.left - centerWidth;
154
+ top = btnRect.top - tableRect.top + btnElem.clientHeight;
155
+ maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
156
+ if (left < 1) {
157
+ left = 1;
158
+ } else if (left > tableEl.clientWidth - filterWidth - 1) {
159
+ left = tableEl.clientWidth - filterWidth - 1;
160
+ }
161
+ if ($xeGGWrapper) {
162
+ const wrapperEl = $xeGGWrapper.getRefMaps().refElem.value;
163
+ if (wrapperEl) {
164
+ const wrapperRect = wrapperEl.getBoundingClientRect();
165
+ top += tableRect.top - wrapperRect.top;
166
+ }
167
+ }
168
+ }
169
+ filterStore.style = {
170
+ top: (0, _dom.toCssUnit)(top),
171
+ left: (0, _dom.toCssUnit)(left)
172
+ };
173
+ // 筛选面板是自适应表格高度
174
+ if (compConf ? !compConf.tableFilterAutoHeight : false) {
175
+ maxHeight = 0;
176
+ }
177
+ // 判断面板不能大于表格高度
178
+ filterStore.maxHeight = maxHeight;
179
+ });
180
+ }
181
+ $xeTable.dispatchEvent('filter-visible', {
182
+ column,
183
+ field: column.field,
184
+ property: column.field,
185
+ filterList: $xeTable.getCheckedFilters(),
186
+ visible: filterStore.visible
187
+ }, evnt);
188
+ },
189
+ handleClearFilter(column) {
190
+ if (column) {
191
+ const {
192
+ filters,
193
+ filterRender
194
+ } = column;
195
+ if (filters) {
196
+ const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
197
+ const frMethod = column.filterResetMethod || (compConf ? compConf.tableFilterResetMethod || compConf.filterResetMethod : null);
198
+ filters.forEach(item => {
199
+ item._checked = false;
200
+ item.checked = false;
201
+ if (!frMethod) {
202
+ item.data = _xeUtils.default.clone(item.resetValue, true);
203
+ }
204
+ });
205
+ if (frMethod) {
206
+ frMethod({
207
+ options: filters,
208
+ column,
209
+ $table: $xeTable
210
+ });
211
+ }
212
+ }
213
+ }
214
+ },
215
+ handleColumnConfirmFilter(column, evnt) {
216
+ const {
217
+ mouseConfig
218
+ } = props;
219
+ const {
220
+ scrollXLoad: oldScrollXLoad,
221
+ scrollYLoad: oldScrollYLoad
222
+ } = reactData;
223
+ const filterOpts = computeFilterOpts.value;
224
+ const mouseOpts = computeMouseOpts.value;
225
+ const {
226
+ field
227
+ } = column;
228
+ const values = [];
229
+ const datas = [];
230
+ column.filters.forEach(item => {
231
+ if (item.checked) {
232
+ values.push(item.value);
233
+ datas.push(item.data);
234
+ }
235
+ });
236
+ const filterList = $xeTable.getCheckedFilters();
237
+ const params = {
238
+ $table: $xeTable,
239
+ $event: evnt,
240
+ column,
241
+ field,
242
+ property: field,
243
+ values,
244
+ datas,
245
+ filters: filterList,
246
+ filterList
247
+ };
248
+ // 如果是服务端筛选,则跳过本地筛选处理
249
+ if (!filterOpts.remote) {
250
+ $xeTable.handleTableData(true);
251
+ $xeTable.checkSelectionStatus();
252
+ }
253
+ if (mouseConfig && mouseOpts.area && $xeTable.handleFilterEvent) {
254
+ $xeTable.handleFilterEvent(evnt, params);
255
+ }
256
+ if (evnt) {
257
+ $xeTable.dispatchEvent('filter-change', params, evnt);
258
+ }
259
+ $xeTable.closeFilter();
260
+ return $xeTable.updateFooter().then(() => {
261
+ const {
262
+ scrollXLoad,
263
+ scrollYLoad
264
+ } = reactData;
265
+ if (oldScrollXLoad || scrollXLoad || oldScrollYLoad || scrollYLoad) {
266
+ if (oldScrollXLoad || scrollXLoad) {
267
+ $xeTable.updateScrollXSpace();
268
+ }
269
+ if (oldScrollYLoad || scrollYLoad) {
270
+ $xeTable.updateScrollYSpace();
271
+ }
272
+ return $xeTable.refreshScroll();
273
+ }
274
+ }).then(() => {
275
+ $xeTable.updateCellAreas();
276
+ return $xeTable.recalculate(true);
277
+ }).then(() => {
278
+ // 存在滚动行为未结束情况
279
+ setTimeout(() => $xeTable.recalculate(), 50);
280
+ });
281
+ },
282
+ /**
283
+ * 确认筛选
284
+ * 当筛选面板中的确定按钮被按下时触发
285
+ * @param {Event} evnt 事件
286
+ */
287
+ confirmFilterEvent(evnt) {
288
+ const {
289
+ filterStore
290
+ } = reactData;
291
+ const {
292
+ column
293
+ } = filterStore;
294
+ $xeTable.handleColumnConfirmFilter(column, evnt);
295
+ },
296
+ handleFilterChangeRadioOption: changeRadioOption,
297
+ handleFilterChangeMultipleOption: changeMultipleOption,
298
+ // 筛选发生改变
299
+ handleFilterChangeOption(evnt, checked, item) {
300
+ const {
301
+ filterStore
302
+ } = reactData;
303
+ if (filterStore.multiple) {
304
+ changeMultipleOption(evnt, checked, item);
305
+ } else {
306
+ changeRadioOption(evnt, checked, item);
307
+ }
308
+ },
309
+ handleFilterConfirmFilter,
310
+ handleFilterResetFilter
311
+ };
312
+ const filterMethods = {
313
+ /**
314
+ * 手动弹出筛选面板
315
+ * @param column
316
+ */
317
+ openFilter(fieldOrColumn) {
318
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
319
+ if (column && column.filters) {
320
+ const {
321
+ elemStore
322
+ } = internalData;
323
+ const {
324
+ fixed
325
+ } = column;
326
+ return $xeTable.scrollToColumn(column).then(() => {
327
+ const headerWrapperElem = (0, _util.getRefElem)(elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
328
+ if (headerWrapperElem) {
329
+ const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`);
330
+ (0, _dom.triggerEvent)(filterBtnElem, 'click');
331
+ }
332
+ });
333
+ }
334
+ return (0, _vue.nextTick)();
335
+ },
336
+ /**
337
+ * 修改筛选条件列表
338
+ * @param {ColumnInfo} fieldOrColumn 列或字段名
339
+ * @param {Array} options 选项
340
+ */
341
+ setFilter(fieldOrColumn, options, isUpdate) {
342
+ const {
343
+ filterStore
344
+ } = reactData;
345
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
346
+ if (column && column.filters) {
347
+ column.filters = (0, _util.toFilters)(options || []);
348
+ if (isUpdate) {
349
+ return $xeTable.handleColumnConfirmFilter(column, null);
350
+ } else {
351
+ if (filterStore.visible) {
352
+ $xeTable.handleFilterOptions(column);
353
+ }
354
+ }
355
+ }
356
+ return (0, _vue.nextTick)();
357
+ },
358
+ /**
359
+ * 清空指定列的筛选条件
360
+ * 如果为空则清空所有列的筛选条件
361
+ * @param {String} fieldOrColumn 列或字段名
362
+ */
363
+ clearFilter(fieldOrColumn) {
364
+ const {
365
+ filterStore
366
+ } = reactData;
367
+ const {
368
+ tableFullColumn
369
+ } = internalData;
370
+ const filterOpts = computeFilterOpts.value;
371
+ let column;
372
+ if (fieldOrColumn) {
373
+ column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
374
+ if (column) {
375
+ $xeTable.handleClearFilter(column);
376
+ }
377
+ } else {
378
+ tableFullColumn.forEach($xeTable.handleClearFilter);
379
+ }
380
+ if (!fieldOrColumn || column !== filterStore.column) {
381
+ Object.assign(filterStore, {
382
+ isAllSelected: false,
383
+ isIndeterminate: false,
384
+ style: null,
385
+ options: [],
386
+ column: null,
387
+ multiple: false,
388
+ visible: false
389
+ });
390
+ }
391
+ if (!filterOpts.remote) {
392
+ return $xeTable.updateData();
393
+ }
394
+ return (0, _vue.nextTick)();
395
+ },
396
+ saveFilterPanel() {
397
+ handleFilterConfirmFilter(null);
398
+ return (0, _vue.nextTick)();
399
+ },
400
+ saveFilterPanelByEvent(evnt) {
401
+ handleFilterConfirmFilter(evnt);
402
+ return (0, _vue.nextTick)();
403
+ },
404
+ resetFilterPanel() {
405
+ handleFilterResetFilter(null);
406
+ return (0, _vue.nextTick)();
407
+ },
408
+ resetFilterPanelByEvent(evnt) {
409
+ handleFilterResetFilter(evnt);
410
+ return (0, _vue.nextTick)();
411
+ },
412
+ getCheckedFilters() {
413
+ const {
414
+ tableFullColumn
415
+ } = internalData;
416
+ const filterList = [];
417
+ tableFullColumn.forEach(column => {
418
+ const {
419
+ field,
420
+ filters
421
+ } = column;
422
+ const valueList = [];
423
+ const dataList = [];
424
+ if (filters && filters.length) {
425
+ filters.forEach(item => {
426
+ if (item.checked) {
427
+ valueList.push(item.value);
428
+ dataList.push(item.data);
429
+ }
430
+ });
431
+ if (valueList.length) {
432
+ filterList.push({
433
+ column,
434
+ field,
435
+ property: field,
436
+ values: valueList,
437
+ datas: dataList
438
+ });
439
+ }
440
+ }
441
+ });
442
+ return filterList;
443
+ },
444
+ updateFilterOptionStatus(item, checked) {
445
+ item._checked = checked;
446
+ item.checked = checked;
447
+ return (0, _vue.nextTick)();
448
+ }
449
+ };
450
+ return Object.assign(Object.assign({}, filterMethods), filterPrivateMethods);
451
+ },
452
+ setupGrid($xeGrid) {
453
+ return $xeGrid.extendTableMethods(tableFilterMethodKeys);
454
+ },
455
+ setupGantt($xeGantt) {
456
+ return $xeGantt.extendTableMethods(tableFilterMethodKeys);
457
+ }
458
+ });
@@ -0,0 +1 @@
1
+ var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,hooks}=_ui.VxeUI,tableFilterMethodKeys=["openFilter","setFilter","clearFilter","saveFilterPanel","saveFilterPanelByEvent","resetFilterPanel","resetFilterPanelByEvent","getCheckedFilters","updateFilterOptionStatus"];hooks.add("tableFilterModule",{setupTable(_){let C=_.xeGrid||_.xeGantt,{props:d,reactData:h,internalData:a}=_,{refElem:n,refTableFilter:k}=_.getRefMaps(),{computeFilterOpts:b,computeMouseOpts:f}=_.getComputeMaps(),i=e=>{var t=h.filterStore;t.options.forEach(e=>{e.checked=e._checked}),_.confirmFilterEvent(e)},o=(e,t,l)=>{var r=h.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,_.checkFilterOptions(),i(e)},u=(e,t,l)=>{l._checked=t,_.checkFilterOptions()},t=e=>{var t=h.filterStore;_.handleClearFilter(t.column),_.confirmFilterEvent(e),e&&_.dispatchEvent("clear-filter",{filterList:[]},e)};var e={checkFilterOptions(){var e=h.filterStore;e.isAllSelected=e.options.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&e.options.some(e=>e._checked)},triggerFilterEvent(e,t,l){let{initStore:r,filterStore:F}=h,g=a.elemStore;if(F.column===t&&F.visible)F.visible=!1;else{let u=n.value,{scrollTop:s,scrollLeft:c,visibleHeight:d,visibleWidth:h}=(0,_dom.getDomNode)();let f=b.value.transfer,v=u.getBoundingClientRect(),p=e.currentTarget;var i=t?t.filterRender:null;let m=i&&(0,_utils.isEnableConf)(i)?renderer.get(i.name):null;_.handleFilterOptions(t),a._currFilterParams=l,F.style=null,F.visible=!0,r.filter=!0,(0,_vue.nextTick)(()=>{if((0,_util.getRefElem)(g["main-header-scroll"])){var r=k.value,r=r?r.getRefMaps().refElem.value:null;if(r){var i=p.getBoundingClientRect(),n=r.querySelector(".vxe-table--filter-header"),a=r.querySelector(".vxe-table--filter-footer"),r=r.offsetWidth,o=r/2;let e=0,t=0,l=0;f?(e=i.left-o+c,t=i.top+p.clientHeight+s,l=Math.min(Math.max(v.height,Math.floor(d/2)),Math.max(80,d-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-28)),e<16?e=16:e>h-r-16&&(e=h-r-16)):(e=i.left-v.left-o,t=i.top-v.top+p.clientHeight,l=Math.max(40,u.clientHeight-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-14),e<1?e=1:e>u.clientWidth-r-1&&(e=u.clientWidth-r-1),C&&(o=C.getRefMaps().refElem.value)&&(i=o.getBoundingClientRect(),t+=v.top-i.top)),F.style={top:(0,_dom.toCssUnit)(t),left:(0,_dom.toCssUnit)(e)},m&&!m.tableFilterAutoHeight&&(l=0),F.maxHeight=l}}})}_.dispatchEvent("filter-visible",{column:t,field:t.field,property:t.field,filterList:_.getCheckedFilters(),visible:F.visible},e)},handleClearFilter(e){if(e){var{filters:l,filterRender:r}=e;if(l){r=(0,_utils.isEnableConf)(r)?renderer.get(r.name):null;let t=e.filterResetMethod||(r?r.tableFilterResetMethod||r.filterResetMethod:null);l.forEach(e=>{e._checked=!1,e.checked=!1,t||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),t&&t({options:l,column:e,$table:_})}}},handleColumnConfirmFilter(e,t){var l=d.mouseConfig;let{scrollXLoad:r,scrollYLoad:i}=h;var n=b.value,a=f.value,o=e.field;let u=[],s=[];e.filters.forEach(e=>{e.checked&&(u.push(e.value),s.push(e.data))});var c=_.getCheckedFilters(),e={$table:_,$event:t,column:e,field:o,property:o,values:u,datas:s,filters:c,filterList:c};return n.remote||(_.handleTableData(!0),_.checkSelectionStatus()),l&&a.area&&_.handleFilterEvent&&_.handleFilterEvent(t,e),t&&_.dispatchEvent("filter-change",e,t),_.closeFilter(),_.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=h;if(r||e||i||t)return(r||e)&&_.updateScrollXSpace(),(i||t)&&_.updateScrollYSpace(),_.refreshScroll()}).then(()=>(_.updateCellAreas(),_.recalculate(!0))).then(()=>{setTimeout(()=>_.recalculate(),50)})},confirmFilterEvent(e){var t=h.filterStore,t=t.column;_.handleColumnConfirmFilter(t,e)},handleFilterChangeRadioOption:o,handleFilterChangeMultipleOption:u,handleFilterChangeOption(e,t,l){var r=h.filterStore;r.multiple?u(0,t,l):o(e,t,l)},handleFilterConfirmFilter:i,handleFilterResetFilter:t};return Object.assign(Object.assign({},{openFilter(e){let r=(0,_util.handleFieldOrColumn)(_,e);if(r&&r.filters){let t=a.elemStore,l=r.fixed;return _.scrollToColumn(r).then(()=>{var e=(0,_util.getRefElem)(t[`${l||"main"}-header-wrapper`]||t["main-header-wrapper"]);e&&(e=e.querySelector(`.vxe-header--column.${r.id} .vxe-cell--filter`),(0,_dom.triggerEvent)(e,"click"))})}return(0,_vue.nextTick)()},setFilter(e,t,l){var r=h.filterStore,e=(0,_util.handleFieldOrColumn)(_,e);if(e&&e.filters){if(e.filters=(0,_util.toFilters)(t||[]),l)return _.handleColumnConfirmFilter(e,null);r.visible&&_.handleFilterOptions(e)}return(0,_vue.nextTick)()},clearFilter(e){var t=h.filterStore,l=a.tableFullColumn,r=b.value;let i;return e?(i=(0,_util.handleFieldOrColumn)(_,e))&&_.handleClearFilter(i):l.forEach(_.handleClearFilter),e&&i===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),r.remote?(0,_vue.nextTick)():_.updateData()},saveFilterPanel(){return i(null),(0,_vue.nextTick)()},saveFilterPanelByEvent(e){return i(e),(0,_vue.nextTick)()},resetFilterPanel(){return t(null),(0,_vue.nextTick)()},resetFilterPanelByEvent(e){return t(e),(0,_vue.nextTick)()},getCheckedFilters(){var e=a.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e;let r=[],i=[];l&&l.length&&(l.forEach(e=>{e.checked&&(r.push(e.value),i.push(e.data))}),r.length)&&n.push({column:e,field:t,property:t,values:r,datas:i})}),n},updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,(0,_vue.nextTick)()}}),e)},setupGrid(e){return e.extendTableMethods(tableFilterMethodKeys)},setupGantt(e){return e.extendTableMethods(tableFilterMethodKeys)}});