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
@@ -1,10 +1,10 @@
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
 
7
- import type { VxeTableDefines } from '../../../../types'
7
+ import type { VxeTableConstructor, VxeTableDefines, TableReactData, TableInternalData } from '../../../../types'
8
8
 
9
9
  const { renderer } = VxeUI
10
10
 
@@ -61,89 +61,97 @@ export default {
61
61
  * @param {Object} params 参数
62
62
  */
63
63
  triggerFilterEvent (evnt: any, column: any, params: any) {
64
+ const $xeTable = this as VxeTableConstructor
65
+ const reactData = $xeTable as unknown as TableReactData
66
+ const internalData = $xeTable as unknown as TableInternalData
67
+
64
68
  const { filterStore } = this
65
69
  if (filterStore.column === column && filterStore.visible) {
66
70
  filterStore.visible = false
67
71
  } else {
68
- const { target: targetElem, pageX } = evnt
69
- const { filters, filterMultiple, filterRender } = column
70
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
71
- const filterRecoverMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null)
72
- const { visibleWidth } = getDomNode()
73
- Object.assign(filterStore, {
74
- args: params,
75
- multiple: filterMultiple,
76
- options: filters,
77
- column,
78
- style: null,
79
- visible: true
80
- })
81
- // 复原状态
82
- filterStore.options.forEach((option: any) => {
83
- const { _checked, checked } = option
84
- option._checked = checked
85
- if (!checked && _checked !== checked) {
86
- if (filterRecoverMethod) {
87
- filterRecoverMethod({ option, column, $table: this })
72
+ const { initStore, filterStore } = reactData
73
+ const { elemStore } = internalData
74
+ if (filterStore.column === column && filterStore.visible) {
75
+ filterStore.visible = false
76
+ } else {
77
+ const { clientY, pageX } = evnt
78
+ const el = $xeTable.$refs.refElem as HTMLDivElement
79
+ const tableRect = el.getBoundingClientRect()
80
+ const targetElem = evnt.target as HTMLDivElement
81
+ const { visibleWidth } = getDomNode()
82
+ const { filters, filterMultiple, filterRender } = column
83
+ const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
84
+ const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null)
85
+ internalData._currFilterParams = params
86
+ Object.assign(filterStore, {
87
+ multiple: filterMultiple,
88
+ options: filters,
89
+ column,
90
+ style: null
91
+ })
92
+ // 复原状态
93
+ filterStore.options.forEach((option: any) => {
94
+ const { _checked, checked } = option
95
+ option._checked = checked
96
+ if (!checked && _checked !== checked) {
97
+ if (frMethod) {
98
+ frMethod({ option, column, $table: $xeTable })
99
+ }
88
100
  }
89
- }
90
- })
91
- this.checkFilterOptions()
92
- this.initStore.filter = true
93
- this.$nextTick(() => {
94
- const { $refs } = this
95
- const { refTableHeader, refTableBody, filterWrapper } = $refs
96
- const bodyElem = refTableBody.$el
97
- const headerElem = refTableHeader ? refTableHeader.$el : null
98
- if (!bodyElem) {
99
- return
100
- }
101
- const filterWrapperElem = filterWrapper.$el
102
- if (!filterWrapperElem) {
103
- return
104
- }
105
- const filterWidth = filterWrapperElem.offsetWidth
106
- const filterHeight = filterWrapperElem.offsetHeight
107
- const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header')
108
- const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer')
109
- const centerWidth = filterWidth / 2
110
- const minMargin = 10
111
- const maxLeft = bodyElem.clientWidth - filterWidth - minMargin
112
- let left, right
113
- const style: any = {
114
- top: `${targetElem.offsetTop + targetElem.offsetParent.offsetTop + targetElem.offsetHeight}px`
115
- }
116
- // 判断面板不能大于表格高度
117
- let maxHeight = null
118
- const bodyHeight = bodyElem.clientHeight - (headerElem ? headerElem.clientHeight / 2 : 0)
119
- if (filterHeight >= bodyHeight) {
120
- maxHeight = Math.max(40, bodyHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0))
121
- }
122
- if (column.fixed === 'left') {
123
- left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth
124
- } else if (column.fixed === 'right') {
125
- right = (targetElem.offsetParent.offsetWidth - targetElem.offsetLeft) + (targetElem.offsetParent.offsetParent.offsetWidth - targetElem.offsetParent.offsetLeft) - column.renderWidth - centerWidth
126
- } else {
127
- left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth - bodyElem.scrollLeft
128
- }
129
- if (left) {
130
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth
131
- if (overflowWidth > 0) {
132
- left -= overflowWidth
101
+ })
102
+ this.checkFilterOptions()
103
+ filterStore.visible = true
104
+ initStore.filter = true
105
+ $xeTable.$nextTick(() => {
106
+ const headerScrollElem = getRefElem(elemStore['main-header-scroll'])
107
+ if (!headerScrollElem) {
108
+ return
133
109
  }
134
- style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`
135
- } else if (right) {
136
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth
137
- if (overflowWidth > 0) {
138
- right += overflowWidth
110
+ const tableFilter = $xeTable.$refs.refTableFilter
111
+ const filterWrapperElem = tableFilter ? (tableFilter as any).$el as HTMLDivElement : null
112
+ if (!filterWrapperElem) {
113
+ return
139
114
  }
140
- style.right = `${Math.max(minMargin, right)}px`
141
- }
142
- filterStore.style = style
143
- filterStore.maxHeight = maxHeight
144
- })
115
+ const filterWidth = filterWrapperElem.offsetWidth
116
+ const filterHeadElem = filterWrapperElem.querySelector<HTMLDivElement>('.vxe-table--filter-header')
117
+ const filterFootElem = filterWrapperElem.querySelector<HTMLDivElement>('.vxe-table--filter-footer')
118
+ const centerWidth = filterWidth / 2
119
+ const minMargin = 10
120
+ const maxLeft = el.clientWidth - filterWidth - minMargin
121
+ let left, right
122
+ const thEl = targetElem.offsetParent as HTMLTableCellElement
123
+ const trEl = thEl.offsetParent as HTMLTableCellElement
124
+ const style: any = {
125
+ top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
126
+ }
127
+ // 判断面板不能大于表格高度
128
+ const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14)
129
+ if (column.fixed === 'left') {
130
+ left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth
131
+ } else if (column.fixed === 'right') {
132
+ right = (thEl.offsetWidth - targetElem.offsetLeft) + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth
133
+ } else {
134
+ left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft
135
+ }
136
+ if (left) {
137
+ const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth
138
+ if (overflowWidth > 0) {
139
+ left -= overflowWidth
140
+ }
141
+ style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`
142
+ } else if (right) {
143
+ const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth
144
+ if (overflowWidth > 0) {
145
+ right += overflowWidth
146
+ }
147
+ style.right = `${Math.max(minMargin, right)}px`
148
+ }
149
+ filterStore.style = style
150
+ filterStore.maxHeight = maxHeight
151
+ })
152
+ }
153
+ $xeTable.dispatchEvent('filter-visible', { column, field: column.field, property: column.field, filterList: $xeTable.getCheckedFilters(), visible: filterStore.visible }, evnt)
145
154
  }
146
- this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: filterStore.visible }, evnt)
147
155
  },
148
156
  handleFilterConfirmFilter (evnt: Event | null) {
149
157
  const $xeTable = this
@@ -60,6 +60,7 @@ export default {
60
60
 
61
61
  const { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this
62
62
  const { selected } = editStore
63
+ const tableFilter = $xeTable.$refs.refTableFilter
63
64
  const layoutList = ['header', 'body', 'footer']
64
65
  if (isEnableConf(menuConfig) || contextMenu) {
65
66
  if (ctxMenuStore.visible && $refs.refTableMenu && getEventTargetNode(evnt, $refs.refTableMenu.$el).flag) {
@@ -128,7 +129,7 @@ export default {
128
129
  }
129
130
  }
130
131
  }
131
- if ($refs.filterWrapper && !getEventTargetNode(evnt, $refs.filterWrapper.$el).flag) {
132
+ if (tableFilter && !getEventTargetNode(evnt, tableFilter.$el).flag) {
132
133
  this.closeFilter()
133
134
  }
134
135
  this.closeMenu()