vxe-table 3.13.5 → 3.13.7

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 (146) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +4 -2
  4. package/es/locale/lang/de-DE.js +4 -2
  5. package/es/locale/lang/en-US.js +4 -2
  6. package/es/locale/lang/es-ES.js +4 -2
  7. package/es/locale/lang/fr-FR.js +4 -2
  8. package/es/locale/lang/hu-HU.js +4 -2
  9. package/es/locale/lang/hy-AM.js +4 -2
  10. package/es/locale/lang/id-ID.js +4 -2
  11. package/es/locale/lang/it-IT.js +4 -2
  12. package/es/locale/lang/ja-JP.js +4 -2
  13. package/es/locale/lang/ko-KR.js +4 -2
  14. package/es/locale/lang/nb-NO.js +4 -2
  15. package/es/locale/lang/pt-BR.js +4 -2
  16. package/es/locale/lang/ru-RU.js +4 -2
  17. package/es/locale/lang/th-TH.js +4 -2
  18. package/es/locale/lang/ug-CN.js +4 -2
  19. package/es/locale/lang/uk-UA.js +4 -2
  20. package/es/locale/lang/vi-VN.js +4 -2
  21. package/es/locale/lang/zh-CHT.js +4 -2
  22. package/es/locale/lang/zh-CN.js +4 -2
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/export/export-panel.js +7 -4
  26. package/es/table/module/export/mixin.js +2 -2
  27. package/es/table/module/filter/mixin.js +87 -79
  28. package/es/table/module/menu/mixin.js +2 -1
  29. package/es/table/src/methods.js +254 -220
  30. package/es/table/src/table.js +1 -1
  31. package/es/table/style.css +1 -1
  32. package/es/table/style.min.css +1 -1
  33. package/es/ui/index.js +1 -1
  34. package/es/ui/src/log.js +1 -1
  35. package/es/vxe-table/style.css +1 -1
  36. package/es/vxe-table/style.min.css +1 -1
  37. package/lib/index.css +1 -1
  38. package/lib/index.min.css +1 -1
  39. package/lib/index.umd.js +412 -379
  40. package/lib/index.umd.min.js +1 -1
  41. package/lib/locale/lang/ar-EG.js +4 -2
  42. package/lib/locale/lang/ar-EG.min.js +1 -1
  43. package/lib/locale/lang/de-DE.js +4 -2
  44. package/lib/locale/lang/de-DE.min.js +1 -1
  45. package/lib/locale/lang/en-US.js +4 -2
  46. package/lib/locale/lang/en-US.min.js +1 -1
  47. package/lib/locale/lang/en-US.umd.js +4 -2
  48. package/lib/locale/lang/es-ES.js +4 -2
  49. package/lib/locale/lang/es-ES.min.js +1 -1
  50. package/lib/locale/lang/es-ES.umd.js +4 -2
  51. package/lib/locale/lang/fr-FR.js +4 -2
  52. package/lib/locale/lang/fr-FR.min.js +1 -1
  53. package/lib/locale/lang/hu-HU.js +4 -2
  54. package/lib/locale/lang/hu-HU.min.js +1 -1
  55. package/lib/locale/lang/hu-HU.umd.js +4 -2
  56. package/lib/locale/lang/hy-AM.js +4 -2
  57. package/lib/locale/lang/hy-AM.min.js +1 -1
  58. package/lib/locale/lang/id-ID.js +4 -2
  59. package/lib/locale/lang/id-ID.min.js +1 -1
  60. package/lib/locale/lang/it-IT.js +4 -2
  61. package/lib/locale/lang/it-IT.min.js +1 -1
  62. package/lib/locale/lang/ja-JP.js +4 -2
  63. package/lib/locale/lang/ja-JP.min.js +1 -1
  64. package/lib/locale/lang/ja-JP.umd.js +4 -2
  65. package/lib/locale/lang/ko-KR.js +4 -2
  66. package/lib/locale/lang/ko-KR.min.js +1 -1
  67. package/lib/locale/lang/ko-KR.umd.js +4 -2
  68. package/lib/locale/lang/nb-NO.js +4 -2
  69. package/lib/locale/lang/nb-NO.min.js +1 -1
  70. package/lib/locale/lang/pt-BR.js +4 -2
  71. package/lib/locale/lang/pt-BR.min.js +1 -1
  72. package/lib/locale/lang/pt-BR.umd.js +4 -2
  73. package/lib/locale/lang/ru-RU.js +4 -2
  74. package/lib/locale/lang/ru-RU.min.js +1 -1
  75. package/lib/locale/lang/ru-RU.umd.js +4 -2
  76. package/lib/locale/lang/th-TH.js +4 -2
  77. package/lib/locale/lang/th-TH.min.js +1 -1
  78. package/lib/locale/lang/ug-CN.js +4 -2
  79. package/lib/locale/lang/ug-CN.min.js +1 -1
  80. package/lib/locale/lang/uk-UA.js +4 -2
  81. package/lib/locale/lang/uk-UA.min.js +1 -1
  82. package/lib/locale/lang/uk-UA.umd.js +4 -2
  83. package/lib/locale/lang/vi-VN.js +4 -2
  84. package/lib/locale/lang/vi-VN.min.js +1 -1
  85. package/lib/locale/lang/zh-CHT.js +4 -2
  86. package/lib/locale/lang/zh-CHT.min.js +1 -1
  87. package/lib/locale/lang/zh-CHT.umd.js +4 -2
  88. package/lib/locale/lang/zh-CN.js +4 -2
  89. package/lib/locale/lang/zh-CN.min.js +1 -1
  90. package/lib/locale/lang/zh-CN.umd.js +4 -2
  91. package/lib/style.css +1 -1
  92. package/lib/style.min.css +1 -1
  93. package/lib/table/module/export/export-panel.js +7 -4
  94. package/lib/table/module/export/export-panel.min.js +1 -1
  95. package/lib/table/module/export/mixin.js +2 -2
  96. package/lib/table/module/export/mixin.min.js +1 -1
  97. package/lib/table/module/filter/mixin.js +105 -99
  98. package/lib/table/module/filter/mixin.min.js +1 -1
  99. package/lib/table/module/menu/mixin.js +2 -1
  100. package/lib/table/module/menu/mixin.min.js +1 -1
  101. package/lib/table/src/methods.js +289 -268
  102. package/lib/table/src/methods.min.js +1 -1
  103. package/lib/table/src/table.js +1 -1
  104. package/lib/table/src/table.min.js +1 -1
  105. package/lib/table/style/style.css +1 -1
  106. package/lib/table/style/style.min.css +1 -1
  107. package/lib/ui/index.js +1 -1
  108. package/lib/ui/index.min.js +1 -1
  109. package/lib/ui/src/log.js +1 -1
  110. package/lib/ui/src/log.min.js +1 -1
  111. package/lib/vxe-table/style/style.css +1 -1
  112. package/lib/vxe-table/style/style.min.css +1 -1
  113. package/package.json +2 -2
  114. package/packages/locale/lang/ar-EG.ts +4 -2
  115. package/packages/locale/lang/de-DE.ts +4 -2
  116. package/packages/locale/lang/en-US.ts +4 -2
  117. package/packages/locale/lang/es-ES.ts +4 -2
  118. package/packages/locale/lang/fr-FR.ts +4 -2
  119. package/packages/locale/lang/hu-HU.ts +4 -2
  120. package/packages/locale/lang/hy-AM.ts +4 -2
  121. package/packages/locale/lang/id-ID.ts +4 -2
  122. package/packages/locale/lang/it-IT.ts +4 -2
  123. package/packages/locale/lang/ja-JP.ts +4 -2
  124. package/packages/locale/lang/ko-KR.ts +4 -2
  125. package/packages/locale/lang/nb-NO.ts +4 -2
  126. package/packages/locale/lang/pt-BR.ts +4 -2
  127. package/packages/locale/lang/ru-RU.ts +4 -2
  128. package/packages/locale/lang/th-TH.ts +4 -2
  129. package/packages/locale/lang/ug-CN.ts +4 -2
  130. package/packages/locale/lang/uk-UA.ts +4 -2
  131. package/packages/locale/lang/vi-VN.ts +4 -2
  132. package/packages/locale/lang/zh-CHT.ts +4 -2
  133. package/packages/locale/lang/zh-CN.ts +4 -2
  134. package/packages/table/module/export/export-panel.ts +7 -4
  135. package/packages/table/module/export/mixin.ts +2 -2
  136. package/packages/table/module/filter/mixin.ts +85 -77
  137. package/packages/table/module/menu/mixin.ts +2 -1
  138. package/packages/table/src/methods.ts +271 -221
  139. package/packages/table/src/table.ts +1 -1
  140. package/styles/components/table.scss +1 -1
  141. /package/es/{iconfont.1740038065641.ttf → iconfont.1740188839037.ttf} +0 -0
  142. /package/es/{iconfont.1740038065641.woff → iconfont.1740188839037.woff} +0 -0
  143. /package/es/{iconfont.1740038065641.woff2 → iconfont.1740188839037.woff2} +0 -0
  144. /package/lib/{iconfont.1740038065641.ttf → iconfont.1740188839037.ttf} +0 -0
  145. /package/lib/{iconfont.1740038065641.woff → iconfont.1740188839037.woff} +0 -0
  146. /package/lib/{iconfont.1740038065641.woff2 → iconfont.1740188839037.woff2} +0 -0
@@ -1030,7 +1030,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
1030
1030
  isMerge: hasMerge,
1031
1031
  useStyle: true,
1032
1032
  current: 'current',
1033
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
1033
+ modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty'])
1034
1034
  }, options);
1035
1035
  const types = defOpts.types || XEUtils.keys(exportOpts._typeMaps);
1036
1036
  const modes = defOpts.modes || [];
@@ -1206,7 +1206,7 @@ export default {
1206
1206
  isMerge: hasMerge,
1207
1207
  useStyle: true,
1208
1208
  current: 'current',
1209
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
1209
+ modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty']),
1210
1210
  download: true,
1211
1211
  type: 'csv'
1212
1212
  // filename: '',
@@ -1,6 +1,6 @@
1
1
  import XEUtils from 'xe-utils';
2
2
  import { VxeUI } from '../../../ui';
3
- import { toFilters, handleFieldOrColumn } from '../../src/util';
3
+ import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
4
4
  import { getDomNode, triggerEvent } from '../../../ui/src/dom';
5
5
  import { isEnableConf } from '../../../ui/src/utils';
6
6
  const { renderer } = VxeUI;
@@ -56,93 +56,101 @@ export default {
56
56
  * @param {Object} params 参数
57
57
  */
58
58
  triggerFilterEvent(evnt, column, params) {
59
+ const $xeTable = this;
60
+ const reactData = $xeTable;
61
+ const internalData = $xeTable;
59
62
  const { filterStore } = this;
60
63
  if (filterStore.column === column && filterStore.visible) {
61
64
  filterStore.visible = false;
62
65
  }
63
66
  else {
64
- const { target: targetElem, pageX } = evnt;
65
- const { filters, filterMultiple, filterRender } = column;
66
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
67
- const filterRecoverMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null);
68
- const { visibleWidth } = getDomNode();
69
- Object.assign(filterStore, {
70
- args: params,
71
- multiple: filterMultiple,
72
- options: filters,
73
- column,
74
- style: null,
75
- visible: true
76
- });
77
- // 复原状态
78
- filterStore.options.forEach((option) => {
79
- const { _checked, checked } = option;
80
- option._checked = checked;
81
- if (!checked && _checked !== checked) {
82
- if (filterRecoverMethod) {
83
- filterRecoverMethod({ option, column, $table: this });
67
+ const { initStore, filterStore } = reactData;
68
+ const { elemStore } = internalData;
69
+ if (filterStore.column === column && filterStore.visible) {
70
+ filterStore.visible = false;
71
+ }
72
+ else {
73
+ const { clientY, pageX } = evnt;
74
+ const el = $xeTable.$refs.refElem;
75
+ const tableRect = el.getBoundingClientRect();
76
+ const targetElem = evnt.target;
77
+ const { visibleWidth } = getDomNode();
78
+ const { filters, filterMultiple, filterRender } = column;
79
+ const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
80
+ const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null);
81
+ internalData._currFilterParams = params;
82
+ Object.assign(filterStore, {
83
+ multiple: filterMultiple,
84
+ options: filters,
85
+ column,
86
+ style: null
87
+ });
88
+ // 复原状态
89
+ filterStore.options.forEach((option) => {
90
+ const { _checked, checked } = option;
91
+ option._checked = checked;
92
+ if (!checked && _checked !== checked) {
93
+ if (frMethod) {
94
+ frMethod({ option, column, $table: $xeTable });
95
+ }
84
96
  }
85
- }
86
- });
87
- this.checkFilterOptions();
88
- this.initStore.filter = true;
89
- this.$nextTick(() => {
90
- const { $refs } = this;
91
- const { refTableHeader, refTableBody, filterWrapper } = $refs;
92
- const bodyElem = refTableBody.$el;
93
- const headerElem = refTableHeader ? refTableHeader.$el : null;
94
- if (!bodyElem) {
95
- return;
96
- }
97
- const filterWrapperElem = filterWrapper.$el;
98
- if (!filterWrapperElem) {
99
- return;
100
- }
101
- const filterWidth = filterWrapperElem.offsetWidth;
102
- const filterHeight = filterWrapperElem.offsetHeight;
103
- const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
104
- const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
105
- const centerWidth = filterWidth / 2;
106
- const minMargin = 10;
107
- const maxLeft = bodyElem.clientWidth - filterWidth - minMargin;
108
- let left, right;
109
- const style = {
110
- top: `${targetElem.offsetTop + targetElem.offsetParent.offsetTop + targetElem.offsetHeight}px`
111
- };
112
- // 判断面板不能大于表格高度
113
- let maxHeight = null;
114
- const bodyHeight = bodyElem.clientHeight - (headerElem ? headerElem.clientHeight / 2 : 0);
115
- if (filterHeight >= bodyHeight) {
116
- maxHeight = Math.max(40, bodyHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0));
117
- }
118
- if (column.fixed === 'left') {
119
- left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth;
120
- }
121
- else if (column.fixed === 'right') {
122
- right = (targetElem.offsetParent.offsetWidth - targetElem.offsetLeft) + (targetElem.offsetParent.offsetParent.offsetWidth - targetElem.offsetParent.offsetLeft) - column.renderWidth - centerWidth;
123
- }
124
- else {
125
- left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth - bodyElem.scrollLeft;
126
- }
127
- if (left) {
128
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
129
- if (overflowWidth > 0) {
130
- left -= overflowWidth;
97
+ });
98
+ this.checkFilterOptions();
99
+ filterStore.visible = true;
100
+ initStore.filter = true;
101
+ $xeTable.$nextTick(() => {
102
+ const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
103
+ if (!headerScrollElem) {
104
+ return;
131
105
  }
132
- style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
133
- }
134
- else if (right) {
135
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
136
- if (overflowWidth > 0) {
137
- right += overflowWidth;
106
+ const tableFilter = $xeTable.$refs.refTableFilter;
107
+ const filterWrapperElem = tableFilter ? tableFilter.$el : null;
108
+ if (!filterWrapperElem) {
109
+ return;
138
110
  }
139
- style.right = `${Math.max(minMargin, right)}px`;
140
- }
141
- filterStore.style = style;
142
- filterStore.maxHeight = maxHeight;
143
- });
111
+ const filterWidth = filterWrapperElem.offsetWidth;
112
+ const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
113
+ const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
114
+ const centerWidth = filterWidth / 2;
115
+ const minMargin = 10;
116
+ const maxLeft = el.clientWidth - filterWidth - minMargin;
117
+ let left, right;
118
+ const thEl = targetElem.offsetParent;
119
+ const trEl = thEl.offsetParent;
120
+ const style = {
121
+ top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
122
+ };
123
+ // 判断面板不能大于表格高度
124
+ const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
125
+ if (column.fixed === 'left') {
126
+ left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth;
127
+ }
128
+ else if (column.fixed === 'right') {
129
+ right = (thEl.offsetWidth - targetElem.offsetLeft) + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth;
130
+ }
131
+ else {
132
+ left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft;
133
+ }
134
+ if (left) {
135
+ const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
136
+ if (overflowWidth > 0) {
137
+ left -= overflowWidth;
138
+ }
139
+ style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
140
+ }
141
+ else if (right) {
142
+ const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
143
+ if (overflowWidth > 0) {
144
+ right += overflowWidth;
145
+ }
146
+ style.right = `${Math.max(minMargin, right)}px`;
147
+ }
148
+ filterStore.style = style;
149
+ filterStore.maxHeight = maxHeight;
150
+ });
151
+ }
152
+ $xeTable.dispatchEvent('filter-visible', { column, field: column.field, property: column.field, filterList: $xeTable.getCheckedFilters(), visible: filterStore.visible }, evnt);
144
153
  }
145
- this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: filterStore.visible }, evnt);
146
154
  },
147
155
  handleFilterConfirmFilter(evnt) {
148
156
  const $xeTable = this;
@@ -61,6 +61,7 @@ export default {
61
61
  const internalData = $xeTable;
62
62
  const { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this;
63
63
  const { selected } = editStore;
64
+ const tableFilter = $xeTable.$refs.refTableFilter;
64
65
  const layoutList = ['header', 'body', 'footer'];
65
66
  if (isEnableConf(menuConfig) || contextMenu) {
66
67
  if (ctxMenuStore.visible && $refs.refTableMenu && getEventTargetNode(evnt, $refs.refTableMenu.$el).flag) {
@@ -133,7 +134,7 @@ export default {
133
134
  }
134
135
  }
135
136
  }
136
- if ($refs.filterWrapper && !getEventTargetNode(evnt, $refs.filterWrapper.$el).flag) {
137
+ if (tableFilter && !getEventTargetNode(evnt, tableFilter.$el).flag) {
137
138
  this.closeFilter();
138
139
  }
139
140
  this.closeMenu();