vxe-table 3.20.5 → 3.20.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 (141) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +106 -106
  3. package/es/index.esm.js +1 -2
  4. package/es/style.css +1 -1
  5. package/es/table/src/methods.js +20 -0
  6. package/es/table/src/table.js +39 -0
  7. package/es/table/src/util.js +3 -4
  8. package/es/table/style.css +48 -18
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/es/vxe-table/style.css +48 -18
  12. package/lib/index.common.js +1 -2
  13. package/lib/index.umd.js +3271 -1892
  14. package/lib/index.umd.min.js +1 -1
  15. package/lib/style.css +1 -1
  16. package/lib/table/src/methods.js +2 -1
  17. package/lib/table/src/methods.min.js +1 -1
  18. package/lib/table/src/table.js +48 -0
  19. package/lib/table/src/table.min.js +1 -1
  20. package/lib/table/src/util.js +4 -6
  21. package/lib/table/src/util.min.js +1 -1
  22. package/lib/table/style/style.css +48 -18
  23. package/lib/ui/index.js +1 -1
  24. package/lib/ui/index.min.js +1 -1
  25. package/lib/ui/src/log.js +1 -1
  26. package/lib/ui/src/log.min.js +1 -1
  27. package/lib/v-x-e-table/index.js +1 -2
  28. package/lib/v-x-e-table/index.min.js +1 -1
  29. package/lib/vxe-colgroup/index.js +1 -2
  30. package/lib/vxe-colgroup/index.min.js +1 -1
  31. package/lib/vxe-column/index.js +1 -2
  32. package/lib/vxe-column/index.min.js +1 -1
  33. package/lib/vxe-grid/index.js +1 -2
  34. package/lib/vxe-grid/index.min.js +1 -1
  35. package/lib/vxe-table/index.js +1 -2
  36. package/lib/vxe-table/index.min.js +1 -1
  37. package/lib/vxe-table/style/style.css +48 -18
  38. package/lib/vxe-toolbar/index.js +1 -2
  39. package/lib/vxe-toolbar/index.min.js +1 -1
  40. package/lib/vxe-ui/index.js +1 -2
  41. package/lib/vxe-ui/index.min.js +1 -1
  42. package/lib/vxe-v-x-e-table/index.js +1 -2
  43. package/lib/vxe-v-x-e-table/index.min.js +1 -1
  44. package/package.json +93 -93
  45. package/packages/colgroup/index.ts +22 -22
  46. package/packages/column/index.ts +22 -22
  47. package/packages/components.ts +42 -42
  48. package/packages/grid/index.ts +22 -22
  49. package/packages/grid/src/grid.ts +1935 -1935
  50. package/packages/index.ts +4 -4
  51. package/packages/locale/lang/ar-EG.ts +832 -832
  52. package/packages/locale/lang/de-DE.ts +832 -832
  53. package/packages/locale/lang/en-US.ts +832 -832
  54. package/packages/locale/lang/es-ES.ts +832 -832
  55. package/packages/locale/lang/fr-FR.ts +832 -832
  56. package/packages/locale/lang/hu-HU.ts +832 -832
  57. package/packages/locale/lang/hy-AM.ts +832 -832
  58. package/packages/locale/lang/id-ID.ts +832 -832
  59. package/packages/locale/lang/it-IT.ts +832 -832
  60. package/packages/locale/lang/ja-JP.ts +832 -832
  61. package/packages/locale/lang/ko-KR.ts +832 -832
  62. package/packages/locale/lang/ms-MY.ts +832 -832
  63. package/packages/locale/lang/nb-NO.ts +832 -832
  64. package/packages/locale/lang/pt-BR.ts +832 -832
  65. package/packages/locale/lang/ru-RU.ts +832 -832
  66. package/packages/locale/lang/th-TH.ts +832 -832
  67. package/packages/locale/lang/ug-CN.ts +832 -832
  68. package/packages/locale/lang/uk-UA.ts +832 -832
  69. package/packages/locale/lang/uz-UZ.ts +832 -832
  70. package/packages/locale/lang/vi-VN.ts +832 -832
  71. package/packages/locale/lang/zh-CHT.ts +832 -832
  72. package/packages/locale/lang/zh-CN.ts +832 -832
  73. package/packages/locale/lang/zh-HK.ts +3 -3
  74. package/packages/locale/lang/zh-MO.ts +3 -3
  75. package/packages/locale/lang/zh-TC.ts +3 -3
  76. package/packages/locale/lang/zh-TW.ts +3 -3
  77. package/packages/table/index.ts +49 -49
  78. package/packages/table/module/custom/mixin.ts +369 -369
  79. package/packages/table/module/custom/panel.ts +1461 -1461
  80. package/packages/table/module/edit/mixin.ts +1123 -1123
  81. package/packages/table/module/export/export-panel.ts +658 -658
  82. package/packages/table/module/export/import-panel.ts +319 -319
  83. package/packages/table/module/export/mixin.ts +1693 -1693
  84. package/packages/table/module/export/util.ts +24 -24
  85. package/packages/table/module/filter/mixin.ts +507 -507
  86. package/packages/table/module/filter/panel.ts +329 -329
  87. package/packages/table/module/keyboard/mixin.ts +513 -513
  88. package/packages/table/module/menu/mixin.ts +329 -329
  89. package/packages/table/module/menu/panel.ts +212 -212
  90. package/packages/table/module/validator/mixin.ts +626 -626
  91. package/packages/table/render/index.ts +1456 -1456
  92. package/packages/table/src/body.ts +969 -969
  93. package/packages/table/src/cell.ts +1285 -1285
  94. package/packages/table/src/column.ts +205 -205
  95. package/packages/table/src/columnInfo.ts +228 -228
  96. package/packages/table/src/footer.ts +388 -388
  97. package/packages/table/src/group.ts +51 -51
  98. package/packages/table/src/header.ts +602 -602
  99. package/packages/table/src/methods.ts +12939 -12920
  100. package/packages/table/src/props.ts +311 -311
  101. package/packages/table/src/store.ts +15 -15
  102. package/packages/table/src/table.ts +2505 -2460
  103. package/packages/table/src/util.ts +1012 -1012
  104. package/packages/toolbar/index.ts +18 -18
  105. package/packages/toolbar/src/toolbar.ts +856 -856
  106. package/packages/ui/index.ts +530 -530
  107. package/packages/ui/src/anime.ts +52 -52
  108. package/packages/ui/src/comp.ts +3 -3
  109. package/packages/ui/src/dom.ts +236 -236
  110. package/packages/ui/src/log.ts +8 -8
  111. package/packages/ui/src/utils.ts +56 -56
  112. package/packages/ui/src/vn.ts +65 -65
  113. package/packages/v-x-e-table/index.ts +4 -4
  114. package/styles/all.scss +7 -7
  115. package/styles/base.scss +16 -16
  116. package/styles/components/grid.scss +89 -89
  117. package/styles/components/icon.scss +225 -225
  118. package/styles/components/old-icon.scss +715 -715
  119. package/styles/components/table-module/all.scss +6 -6
  120. package/styles/components/table-module/custom.scss +527 -527
  121. package/styles/components/table-module/export.scss +130 -130
  122. package/styles/components/table-module/filter.scss +130 -130
  123. package/styles/components/table-module/menu.scss +81 -81
  124. package/styles/components/table.scss +2679 -2679
  125. package/styles/components/toolbar.scss +119 -119
  126. package/styles/default.scss +2 -2
  127. package/styles/helpers/baseMixin.scss +95 -95
  128. package/styles/index.scss +3 -3
  129. package/styles/modules.scss +5 -5
  130. package/styles/theme/base.scss +93 -93
  131. package/styles/theme/dark.scss +49 -49
  132. package/styles/theme/light.scss +44 -44
  133. package/styles/variable.scss +43 -43
  134. package/types/all.d.ts +53 -53
  135. package/types/index.d.ts +4 -4
  136. /package/es/{iconfont.1773710661615.ttf → iconfont.1773991883171.ttf} +0 -0
  137. /package/es/{iconfont.1773710661615.woff → iconfont.1773991883171.woff} +0 -0
  138. /package/es/{iconfont.1773710661615.woff2 → iconfont.1773991883171.woff2} +0 -0
  139. /package/lib/{iconfont.1773710661615.ttf → iconfont.1773991883171.ttf} +0 -0
  140. /package/lib/{iconfont.1773710661615.woff → iconfont.1773991883171.woff} +0 -0
  141. /package/lib/{iconfont.1773710661615.woff2 → iconfont.1773991883171.woff2} +0 -0
@@ -1,329 +1,329 @@
1
- import { CreateElement, PropType } from 'vue'
2
- import { defineVxeComponent } from '../../../ui/src/comp'
3
- import { VxeUI } from '../../../ui'
4
- import { formatText, isEnableConf } from '../../../ui/src/utils'
5
- import { getPropClass, toCssUnit } from '../../../ui/src/dom'
6
- import { getSlotVNs } from '../../../ui/src/vn'
7
- import { warnLog } from '../../../ui/src/log'
8
-
9
- import type { VxeGlobalRendererOptions, VxeComponentSizeType } from 'vxe-pc-ui'
10
- import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData, VxeTableDefines, VxeColumnPropTypes } from '../../../../types'
11
-
12
- const { getI18n, getIcon, renderer, globalMixins, renderEmptyElement } = VxeUI
13
-
14
- // 全部筛选事件
15
- function filterCheckAllEvent ($xeFilterPanel: any, evnt: Event, value: any) {
16
- const props = $xeFilterPanel
17
-
18
- const { filterStore } = props
19
- const { column } = filterStore
20
- if (column && column.filters) {
21
- column.filters.forEach((option: any) => {
22
- option._checked = value
23
- option.checked = value
24
- })
25
- }
26
- filterStore.isAllSelected = value
27
- filterStore.isIndeterminate = false
28
- }
29
-
30
- export default /* define-vxe-component start */ defineVxeComponent({
31
- name: 'VxeTableFilterPanel',
32
- mixins: [
33
- globalMixins.sizeMixin
34
- ],
35
- props: {
36
- filterStore: {
37
- type: Object as PropType<VxeTableDefines.FilterStoreObj>,
38
- default: () => ({} as VxeTableDefines.FilterStoreObj)
39
- }
40
- },
41
- inject: {
42
- $xeTable: {
43
- default: null
44
- }
45
- },
46
- computed: {
47
- ...({} as {
48
- computeSize(): VxeComponentSizeType
49
- $xeTable(): VxeTableConstructor & VxeTablePrivateMethods
50
- }),
51
- computeHasCheckOption () {
52
- const $xeFilterPanel = this
53
- const props = $xeFilterPanel
54
-
55
- const { filterStore } = props
56
- const { column } = filterStore
57
- return column && column.filters && column.filters.some((option) => option.checked)
58
- }
59
- },
60
- mounted () {
61
- const $xeFilterPanel = this
62
- const $xeTable = $xeFilterPanel.$xeTable
63
- const filterOpts = $xeTable.computeFilterOpts
64
- const { transfer } = filterOpts
65
- const el = $xeFilterPanel.$refs.refElem as HTMLDivElement
66
-
67
- if (transfer && el) {
68
- document.body.appendChild(el)
69
- }
70
- },
71
- beforeDestroy () {
72
- const $xeFilterPanel = this
73
- const el = $xeFilterPanel.$refs.refElem as HTMLDivElement
74
-
75
- if (el && el.parentNode) {
76
- el.parentNode.removeChild(el)
77
- }
78
- },
79
- methods: {
80
- /*************************
81
- * Publish methods
82
- *************************/
83
- // (单选)筛选发生改变
84
- changeRadioOption (evnt: any, checked: any, item: any) {
85
- const $xeFilterPanel = this
86
- const $xeTable = $xeFilterPanel.$xeTable
87
-
88
- $xeTable.handleFilterChangeRadioOption(evnt, checked, item)
89
- },
90
- // (多选)筛选发生改变
91
- changeMultipleOption (evnt: any, checked: any, item: any) {
92
- const $xeFilterPanel = this
93
- const $xeTable = $xeFilterPanel.$xeTable
94
-
95
- item._checked = checked
96
- $xeTable.checkFilterOptions()
97
- },
98
- changeAllOption (evnt: Event, checked: any) {
99
- const $xeFilterPanel = this
100
- const props = $xeFilterPanel
101
-
102
- const { filterStore } = props
103
- const { column } = filterStore
104
- if (column && column.filterMultiple) {
105
- filterCheckAllEvent($xeFilterPanel, evnt, checked)
106
- } else {
107
- ($xeFilterPanel as any).resetFilter(evnt)
108
- }
109
- },
110
- // 筛选发生改变
111
- changeOption (evnt: Event, checked: boolean, item: any) {
112
- const $xeFilterPanel = this
113
- const $xeTable = $xeFilterPanel.$xeTable
114
-
115
- $xeTable.handleFilterChangeOption(evnt, checked, item)
116
- },
117
- // 确认筛选
118
- confirmFilter (evnt: any) {
119
- const $xeFilterPanel = this
120
- const props = $xeFilterPanel
121
- const $xeTable = $xeFilterPanel.$xeTable
122
-
123
- const { filterStore } = props
124
- if (!evnt) {
125
- warnLog('vxe.error.delFunc', ['confirmFilter', 'saveFilterPanelByEvent'])
126
- }
127
- $xeTable.handleFilterConfirmFilter(evnt || new Event('click'), filterStore.column || null)
128
- },
129
- // 重置筛选
130
- resetFilter (evnt: Event) {
131
- const $xeFilterPanel = this
132
- const props = $xeFilterPanel
133
- const $xeTable = $xeFilterPanel.$xeTable
134
-
135
- const { filterStore } = props
136
- $xeTable.handleFilterResetFilter(evnt, filterStore.column || null)
137
- },
138
- /*************************
139
- * Publish methods
140
- *************************/
141
-
142
- renderOptions (h: CreateElement, filterRender: VxeColumnPropTypes.FilterRender | null, compConf: VxeGlobalRendererOptions | null) {
143
- const $xeFilterPanel = this
144
- const props = $xeFilterPanel
145
- const $xeTable = $xeFilterPanel.$xeTable
146
- const tableInternalData = $xeTable as unknown as TableInternalData
147
-
148
- const { filterStore } = props
149
- const { column, maxHeight } = filterStore
150
- if (!column) {
151
- return []
152
- }
153
- const { filterMultiple, filters, slots } = column
154
- const filterOptions = (filters || []) as VxeTableDefines.FilterOption[]
155
- const filterSlot = slots ? slots.filter : null
156
- const params = Object.assign({}, tableInternalData._currFilterParams, { option: filterOptions[0], $panel: $xeFilterPanel, $table: $xeTable })
157
- const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null
158
- if (filterSlot) {
159
- return [
160
- h('div', {
161
- class: 'vxe-table--filter-template',
162
- style: maxHeight
163
- ? {
164
- maxHeight: toCssUnit(maxHeight)
165
- }
166
- : {}
167
- }, $xeTable.callSlot(filterSlot, params, h))
168
- ]
169
- } else if (filterRender && rtFilter) {
170
- return [
171
- h('div', {
172
- class: 'vxe-table--filter-template',
173
- style: maxHeight
174
- ? {
175
- maxHeight: toCssUnit(maxHeight)
176
- }
177
- : {}
178
- }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))
179
- ]
180
- }
181
- const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked)
182
- const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate
183
- return [
184
- h('ul', {
185
- class: 'vxe-table--filter-header'
186
- }, [
187
- h('li', {
188
- class: ['vxe-table--filter-option', {
189
- 'is--checked': isAllChecked,
190
- 'is--indeterminate': isAllIndeterminate
191
- }],
192
- attrs: {
193
- title: getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
194
- },
195
- on: {
196
- click: (evnt: MouseEvent) => {
197
- ($xeFilterPanel as any).changeAllOption(evnt, !filterStore.isAllSelected)
198
- }
199
- }
200
- }, (filterMultiple
201
- ? [
202
- h('span', {
203
- class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
204
- })
205
- ]
206
- : []).concat([
207
- h('span', {
208
- class: 'vxe-checkbox--label'
209
- }, getI18n('vxe.table.allFilter'))
210
- ]))
211
- ]),
212
- h('ul', {
213
- class: 'vxe-table--filter-body',
214
- style: maxHeight
215
- ? {
216
- maxHeight: toCssUnit(maxHeight)
217
- }
218
- : {}
219
- }, filterOptions.map((item: any) => {
220
- const isChecked = item._checked
221
- const isIndeterminate = false
222
- return h('li', {
223
- class: ['vxe-table--filter-option', {
224
- 'is--checked': isChecked
225
- }],
226
- attrs: {
227
- title: item.label
228
- },
229
- on: {
230
- click: (evnt: MouseEvent) => {
231
- ($xeFilterPanel as any).changeOption(evnt, !item._checked, item)
232
- }
233
- }
234
- }, (filterMultiple
235
- ? [
236
- h('span', {
237
- class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
238
- })
239
- ]
240
- : []).concat([
241
- h('span', {
242
- class: 'vxe-checkbox--label'
243
- }, formatText(item.label, 1))
244
- ]))
245
- }))
246
- ]
247
- },
248
- renderFooter (h: CreateElement) {
249
- const $xeFilterPanel = this
250
- const props = $xeFilterPanel
251
- const $xeTable = $xeFilterPanel.$xeTable
252
-
253
- const { filterStore } = props
254
- const { column } = filterStore
255
- if (!column) {
256
- return []
257
- }
258
- const filterOpts = $xeTable.computeFilterOpts
259
- const hasCheckOption = $xeFilterPanel.computeHasCheckOption
260
- const { filterRender, filterMultiple } = column
261
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
262
- const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate
263
- return filterMultiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true)
264
- ? [
265
- h('div', {
266
- class: 'vxe-table--filter-footer'
267
- }, [
268
- h('button', {
269
- class: {
270
- 'is--disabled': isDisabled
271
- },
272
- attrs: {
273
- disabled: isDisabled
274
- },
275
- on: {
276
- click: ($xeFilterPanel as any).confirmFilter
277
- }
278
- }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')),
279
- h('button', {
280
- on: {
281
- click: ($xeFilterPanel as any).resetFilter
282
- }
283
- }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))
284
- ])
285
- ]
286
- : []
287
- },
288
- renderVN (h: CreateElement) {
289
- const $xeFilterPanel = this
290
- const props = $xeFilterPanel
291
- const $xeTable = $xeFilterPanel.$xeTable
292
- const tableInternalData = $xeTable as unknown as TableInternalData
293
-
294
- const { filterStore } = props
295
- const { visible, column } = filterStore
296
- if (!column) {
297
- return renderEmptyElement($xeFilterPanel)
298
- }
299
- const filterRender = column ? column.filterRender : null
300
- const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
301
- const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : ''
302
- const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable })
303
- const tableProps = $xeTable
304
- const vSize = $xeFilterPanel.computeSize
305
- const filterOpts = $xeTable.computeFilterOpts
306
- const { destroyOnClose, className } = filterOpts
307
- return h('div', {
308
- ref: 'refElem',
309
- class: [
310
- 'vxe-table--filter-wrapper',
311
- 'filter--prevent-default',
312
- className,
313
- compConf && compConf.className ? compConf.className : '',
314
- getPropClass(filterClassName, params),
315
- {
316
- [`size--${vSize}`]: vSize,
317
- 'is--animat': tableProps.animat,
318
- 'is--multiple': column.filterMultiple,
319
- 'is--active': visible
320
- }
321
- ],
322
- style: filterStore.style
323
- }, filterStore.visible && (destroyOnClose ? visible : true) && column ? ($xeFilterPanel as any).renderOptions(h, filterRender, compConf).concat(($xeFilterPanel as any).renderFooter(h)) : [])
324
- }
325
- },
326
- render (h: CreateElement) {
327
- return (this as any).renderVN(h)
328
- }
329
- }) /* define-vxe-component end */
1
+ import { CreateElement, PropType } from 'vue'
2
+ import { defineVxeComponent } from '../../../ui/src/comp'
3
+ import { VxeUI } from '../../../ui'
4
+ import { formatText, isEnableConf } from '../../../ui/src/utils'
5
+ import { getPropClass, toCssUnit } from '../../../ui/src/dom'
6
+ import { getSlotVNs } from '../../../ui/src/vn'
7
+ import { warnLog } from '../../../ui/src/log'
8
+
9
+ import type { VxeGlobalRendererOptions, VxeComponentSizeType } from 'vxe-pc-ui'
10
+ import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData, VxeTableDefines, VxeColumnPropTypes } from '../../../../types'
11
+
12
+ const { getI18n, getIcon, renderer, globalMixins, renderEmptyElement } = VxeUI
13
+
14
+ // 全部筛选事件
15
+ function filterCheckAllEvent ($xeFilterPanel: any, evnt: Event, value: any) {
16
+ const props = $xeFilterPanel
17
+
18
+ const { filterStore } = props
19
+ const { column } = filterStore
20
+ if (column && column.filters) {
21
+ column.filters.forEach((option: any) => {
22
+ option._checked = value
23
+ option.checked = value
24
+ })
25
+ }
26
+ filterStore.isAllSelected = value
27
+ filterStore.isIndeterminate = false
28
+ }
29
+
30
+ export default /* define-vxe-component start */ defineVxeComponent({
31
+ name: 'VxeTableFilterPanel',
32
+ mixins: [
33
+ globalMixins.sizeMixin
34
+ ],
35
+ props: {
36
+ filterStore: {
37
+ type: Object as PropType<VxeTableDefines.FilterStoreObj>,
38
+ default: () => ({} as VxeTableDefines.FilterStoreObj)
39
+ }
40
+ },
41
+ inject: {
42
+ $xeTable: {
43
+ default: null
44
+ }
45
+ },
46
+ computed: {
47
+ ...({} as {
48
+ computeSize(): VxeComponentSizeType
49
+ $xeTable(): VxeTableConstructor & VxeTablePrivateMethods
50
+ }),
51
+ computeHasCheckOption () {
52
+ const $xeFilterPanel = this
53
+ const props = $xeFilterPanel
54
+
55
+ const { filterStore } = props
56
+ const { column } = filterStore
57
+ return column && column.filters && column.filters.some((option) => option.checked)
58
+ }
59
+ },
60
+ mounted () {
61
+ const $xeFilterPanel = this
62
+ const $xeTable = $xeFilterPanel.$xeTable
63
+ const filterOpts = $xeTable.computeFilterOpts
64
+ const { transfer } = filterOpts
65
+ const el = $xeFilterPanel.$refs.refElem as HTMLDivElement
66
+
67
+ if (transfer && el) {
68
+ document.body.appendChild(el)
69
+ }
70
+ },
71
+ beforeDestroy () {
72
+ const $xeFilterPanel = this
73
+ const el = $xeFilterPanel.$refs.refElem as HTMLDivElement
74
+
75
+ if (el && el.parentNode) {
76
+ el.parentNode.removeChild(el)
77
+ }
78
+ },
79
+ methods: {
80
+ /*************************
81
+ * Publish methods
82
+ *************************/
83
+ // (单选)筛选发生改变
84
+ changeRadioOption (evnt: any, checked: any, item: any) {
85
+ const $xeFilterPanel = this
86
+ const $xeTable = $xeFilterPanel.$xeTable
87
+
88
+ $xeTable.handleFilterChangeRadioOption(evnt, checked, item)
89
+ },
90
+ // (多选)筛选发生改变
91
+ changeMultipleOption (evnt: any, checked: any, item: any) {
92
+ const $xeFilterPanel = this
93
+ const $xeTable = $xeFilterPanel.$xeTable
94
+
95
+ item._checked = checked
96
+ $xeTable.checkFilterOptions()
97
+ },
98
+ changeAllOption (evnt: Event, checked: any) {
99
+ const $xeFilterPanel = this
100
+ const props = $xeFilterPanel
101
+
102
+ const { filterStore } = props
103
+ const { column } = filterStore
104
+ if (column && column.filterMultiple) {
105
+ filterCheckAllEvent($xeFilterPanel, evnt, checked)
106
+ } else {
107
+ ($xeFilterPanel as any).resetFilter(evnt)
108
+ }
109
+ },
110
+ // 筛选发生改变
111
+ changeOption (evnt: Event, checked: boolean, item: any) {
112
+ const $xeFilterPanel = this
113
+ const $xeTable = $xeFilterPanel.$xeTable
114
+
115
+ $xeTable.handleFilterChangeOption(evnt, checked, item)
116
+ },
117
+ // 确认筛选
118
+ confirmFilter (evnt: any) {
119
+ const $xeFilterPanel = this
120
+ const props = $xeFilterPanel
121
+ const $xeTable = $xeFilterPanel.$xeTable
122
+
123
+ const { filterStore } = props
124
+ if (!evnt) {
125
+ warnLog('vxe.error.delFunc', ['confirmFilter', 'saveFilterPanelByEvent'])
126
+ }
127
+ $xeTable.handleFilterConfirmFilter(evnt || new Event('click'), filterStore.column || null)
128
+ },
129
+ // 重置筛选
130
+ resetFilter (evnt: Event) {
131
+ const $xeFilterPanel = this
132
+ const props = $xeFilterPanel
133
+ const $xeTable = $xeFilterPanel.$xeTable
134
+
135
+ const { filterStore } = props
136
+ $xeTable.handleFilterResetFilter(evnt, filterStore.column || null)
137
+ },
138
+ /*************************
139
+ * Publish methods
140
+ *************************/
141
+
142
+ renderOptions (h: CreateElement, filterRender: VxeColumnPropTypes.FilterRender | null, compConf: VxeGlobalRendererOptions | null) {
143
+ const $xeFilterPanel = this
144
+ const props = $xeFilterPanel
145
+ const $xeTable = $xeFilterPanel.$xeTable
146
+ const tableInternalData = $xeTable as unknown as TableInternalData
147
+
148
+ const { filterStore } = props
149
+ const { column, maxHeight } = filterStore
150
+ if (!column) {
151
+ return []
152
+ }
153
+ const { filterMultiple, filters, slots } = column
154
+ const filterOptions = (filters || []) as VxeTableDefines.FilterOption[]
155
+ const filterSlot = slots ? slots.filter : null
156
+ const params = Object.assign({}, tableInternalData._currFilterParams, { option: filterOptions[0], $panel: $xeFilterPanel, $table: $xeTable })
157
+ const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null
158
+ if (filterSlot) {
159
+ return [
160
+ h('div', {
161
+ class: 'vxe-table--filter-template',
162
+ style: maxHeight
163
+ ? {
164
+ maxHeight: toCssUnit(maxHeight)
165
+ }
166
+ : {}
167
+ }, $xeTable.callSlot(filterSlot, params, h))
168
+ ]
169
+ } else if (filterRender && rtFilter) {
170
+ return [
171
+ h('div', {
172
+ class: 'vxe-table--filter-template',
173
+ style: maxHeight
174
+ ? {
175
+ maxHeight: toCssUnit(maxHeight)
176
+ }
177
+ : {}
178
+ }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))
179
+ ]
180
+ }
181
+ const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked)
182
+ const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate
183
+ return [
184
+ h('ul', {
185
+ class: 'vxe-table--filter-header'
186
+ }, [
187
+ h('li', {
188
+ class: ['vxe-table--filter-option', {
189
+ 'is--checked': isAllChecked,
190
+ 'is--indeterminate': isAllIndeterminate
191
+ }],
192
+ attrs: {
193
+ title: getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
194
+ },
195
+ on: {
196
+ click: (evnt: MouseEvent) => {
197
+ ($xeFilterPanel as any).changeAllOption(evnt, !filterStore.isAllSelected)
198
+ }
199
+ }
200
+ }, (filterMultiple
201
+ ? [
202
+ h('span', {
203
+ class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
204
+ })
205
+ ]
206
+ : []).concat([
207
+ h('span', {
208
+ class: 'vxe-checkbox--label'
209
+ }, getI18n('vxe.table.allFilter'))
210
+ ]))
211
+ ]),
212
+ h('ul', {
213
+ class: 'vxe-table--filter-body',
214
+ style: maxHeight
215
+ ? {
216
+ maxHeight: toCssUnit(maxHeight)
217
+ }
218
+ : {}
219
+ }, filterOptions.map((item: any) => {
220
+ const isChecked = item._checked
221
+ const isIndeterminate = false
222
+ return h('li', {
223
+ class: ['vxe-table--filter-option', {
224
+ 'is--checked': isChecked
225
+ }],
226
+ attrs: {
227
+ title: item.label
228
+ },
229
+ on: {
230
+ click: (evnt: MouseEvent) => {
231
+ ($xeFilterPanel as any).changeOption(evnt, !item._checked, item)
232
+ }
233
+ }
234
+ }, (filterMultiple
235
+ ? [
236
+ h('span', {
237
+ class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
238
+ })
239
+ ]
240
+ : []).concat([
241
+ h('span', {
242
+ class: 'vxe-checkbox--label'
243
+ }, formatText(item.label, 1))
244
+ ]))
245
+ }))
246
+ ]
247
+ },
248
+ renderFooter (h: CreateElement) {
249
+ const $xeFilterPanel = this
250
+ const props = $xeFilterPanel
251
+ const $xeTable = $xeFilterPanel.$xeTable
252
+
253
+ const { filterStore } = props
254
+ const { column } = filterStore
255
+ if (!column) {
256
+ return []
257
+ }
258
+ const filterOpts = $xeTable.computeFilterOpts
259
+ const hasCheckOption = $xeFilterPanel.computeHasCheckOption
260
+ const { filterRender, filterMultiple } = column
261
+ const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
262
+ const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate
263
+ return filterMultiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true)
264
+ ? [
265
+ h('div', {
266
+ class: 'vxe-table--filter-footer'
267
+ }, [
268
+ h('button', {
269
+ class: {
270
+ 'is--disabled': isDisabled
271
+ },
272
+ attrs: {
273
+ disabled: isDisabled
274
+ },
275
+ on: {
276
+ click: ($xeFilterPanel as any).confirmFilter
277
+ }
278
+ }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')),
279
+ h('button', {
280
+ on: {
281
+ click: ($xeFilterPanel as any).resetFilter
282
+ }
283
+ }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))
284
+ ])
285
+ ]
286
+ : []
287
+ },
288
+ renderVN (h: CreateElement) {
289
+ const $xeFilterPanel = this
290
+ const props = $xeFilterPanel
291
+ const $xeTable = $xeFilterPanel.$xeTable
292
+ const tableInternalData = $xeTable as unknown as TableInternalData
293
+
294
+ const { filterStore } = props
295
+ const { visible, column } = filterStore
296
+ if (!column) {
297
+ return renderEmptyElement($xeFilterPanel)
298
+ }
299
+ const filterRender = column ? column.filterRender : null
300
+ const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
301
+ const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : ''
302
+ const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable })
303
+ const tableProps = $xeTable
304
+ const vSize = $xeFilterPanel.computeSize
305
+ const filterOpts = $xeTable.computeFilterOpts
306
+ const { destroyOnClose, className } = filterOpts
307
+ return h('div', {
308
+ ref: 'refElem',
309
+ class: [
310
+ 'vxe-table--filter-wrapper',
311
+ 'filter--prevent-default',
312
+ className,
313
+ compConf && compConf.className ? compConf.className : '',
314
+ getPropClass(filterClassName, params),
315
+ {
316
+ [`size--${vSize}`]: vSize,
317
+ 'is--animat': tableProps.animat,
318
+ 'is--multiple': column.filterMultiple,
319
+ 'is--active': visible
320
+ }
321
+ ],
322
+ style: filterStore.style
323
+ }, filterStore.visible && (destroyOnClose ? visible : true) && column ? ($xeFilterPanel as any).renderOptions(h, filterRender, compConf).concat(($xeFilterPanel as any).renderFooter(h)) : [])
324
+ }
325
+ },
326
+ render (h: CreateElement) {
327
+ return (this as any).renderVN(h)
328
+ }
329
+ }) /* define-vxe-component end */