vxe-table 4.23.8 → 4.23.9

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 (126) hide show
  1. package/dist/all.esm.js +5715 -3783
  2. package/es/components.d.ts +1 -0
  3. package/es/components.js +2 -7
  4. package/es/grid/src/emits.js +1 -15
  5. package/es/grid/src/grid.js +397 -120
  6. package/es/index.esm.js +1 -0
  7. package/es/index.js +1 -0
  8. package/es/table/module/custom/hook.js +49 -42
  9. package/es/table/module/custom/panel.js +777 -527
  10. package/es/table/module/edit/hook.js +140 -62
  11. package/es/table/module/export/export-panel.js +399 -316
  12. package/es/table/module/export/hook.js +395 -337
  13. package/es/table/module/export/import-panel.js +152 -123
  14. package/es/table/module/filter/hook.js +16 -2
  15. package/es/table/module/filter/panel.js +146 -84
  16. package/es/table/module/keyboard/hook.js +8 -4
  17. package/es/table/module/menu/panel.js +197 -126
  18. package/es/table/render/index.js +151 -98
  19. package/es/table/src/body.js +355 -233
  20. package/es/table/src/cell.js +426 -269
  21. package/es/table/src/columnInfo.js +1 -0
  22. package/es/table/src/footer.js +144 -99
  23. package/es/table/src/group.js +7 -3
  24. package/es/table/src/header.js +229 -172
  25. package/es/table/src/table.js +1503 -1030
  26. package/es/table/src/util.js +15 -19
  27. package/es/toolbar/src/toolbar.js +132 -75
  28. package/es/ui/index.js +1 -1
  29. package/es/ui/src/dom.js +9 -6
  30. package/es/ui/src/log.js +1 -1
  31. package/es/ui/src/utils.d.ts +1 -1
  32. package/lib/components.js +2 -7
  33. package/lib/grid/src/emits.js +1 -15
  34. package/lib/grid/src/grid.js +397 -120
  35. package/lib/index.common.js +1 -0
  36. package/lib/index.js +1 -0
  37. package/lib/index.umd.js +5732 -3800
  38. package/lib/index.umd.min.js +3 -3
  39. package/lib/table/module/custom/hook.js +49 -42
  40. package/lib/table/module/custom/panel.js +777 -527
  41. package/lib/table/module/edit/hook.js +140 -62
  42. package/lib/table/module/export/export-panel.js +399 -316
  43. package/lib/table/module/export/hook.js +395 -337
  44. package/lib/table/module/export/import-panel.js +152 -123
  45. package/lib/table/module/filter/hook.js +16 -2
  46. package/lib/table/module/filter/panel.js +146 -84
  47. package/lib/table/module/keyboard/hook.js +8 -4
  48. package/lib/table/module/menu/panel.js +197 -126
  49. package/lib/table/render/index.js +151 -98
  50. package/lib/table/src/body.js +355 -233
  51. package/lib/table/src/cell.js +426 -269
  52. package/lib/table/src/columnInfo.js +1 -0
  53. package/lib/table/src/footer.js +144 -99
  54. package/lib/table/src/group.js +7 -3
  55. package/lib/table/src/header.js +229 -172
  56. package/lib/table/src/table.js +1471 -1029
  57. package/lib/table/src/util.js +15 -19
  58. package/lib/toolbar/src/toolbar.js +132 -75
  59. package/lib/ui/index.js +1 -1
  60. package/lib/ui/src/dom.js +9 -6
  61. package/lib/ui/src/log.js +1 -1
  62. package/package.json +2 -2
  63. package/packages/colgroup/index.ts +22 -22
  64. package/packages/column/index.ts +22 -22
  65. package/packages/components.ts +41 -44
  66. package/packages/grid/index.ts +18 -18
  67. package/packages/grid/src/emits.ts +5 -19
  68. package/packages/grid/src/grid.ts +2229 -1925
  69. package/packages/grid/src/props.ts +22 -23
  70. package/packages/index.ts +11 -11
  71. package/packages/locale/lang/fr-FR.ts +15 -15
  72. package/packages/locale/lang/it-IT.ts +4 -4
  73. package/packages/locale/lang/uk-UA.ts +1 -1
  74. package/packages/locale/lang/uz-UZ.ts +13 -13
  75. package/packages/locale/lang/zh-CN.ts +907 -907
  76. package/packages/table/index.ts +26 -26
  77. package/packages/table/module/custom/hook.ts +510 -503
  78. package/packages/table/module/custom/panel.ts +2002 -1743
  79. package/packages/table/module/edit/hook.ts +1224 -1131
  80. package/packages/table/module/export/export-panel.ts +697 -611
  81. package/packages/table/module/export/hook.ts +2160 -2059
  82. package/packages/table/module/export/import-panel.ts +319 -279
  83. package/packages/table/module/export/util.ts +25 -24
  84. package/packages/table/module/filter/hook.ts +519 -501
  85. package/packages/table/module/filter/panel.ts +368 -304
  86. package/packages/table/module/keyboard/hook.ts +498 -494
  87. package/packages/table/module/menu/hook.ts +330 -330
  88. package/packages/table/module/menu/panel.ts +272 -201
  89. package/packages/table/module/validator/hook.ts +653 -635
  90. package/packages/table/render/index.ts +1819 -1744
  91. package/packages/table/src/body.ts +1078 -955
  92. package/packages/table/src/cell.ts +1524 -1359
  93. package/packages/table/src/column.ts +192 -192
  94. package/packages/table/src/columnInfo.ts +232 -232
  95. package/packages/table/src/emits.ts +134 -134
  96. package/packages/table/src/footer.ts +425 -380
  97. package/packages/table/src/group.ts +67 -63
  98. package/packages/table/src/header.ts +642 -581
  99. package/packages/table/src/props.ts +336 -336
  100. package/packages/table/src/store.ts +14 -14
  101. package/packages/table/src/table.ts +16011 -15454
  102. package/packages/table/src/use/cell-view.ts +41 -44
  103. package/packages/table/src/use/index.ts +1 -1
  104. package/packages/table/src/util.ts +1206 -1216
  105. package/packages/toolbar/index.ts +18 -18
  106. package/packages/toolbar/src/toolbar.ts +768 -706
  107. package/packages/ui/index.ts +519 -520
  108. package/packages/ui/src/anime.ts +51 -52
  109. package/packages/ui/src/comp.ts +3 -3
  110. package/packages/ui/src/dom.ts +466 -463
  111. package/packages/ui/src/log.ts +19 -19
  112. package/packages/ui/src/utils.ts +66 -66
  113. package/packages/ui/src/vn.ts +55 -55
  114. package/packages/v-x-e-table/index.d.ts +3 -3
  115. package/packages/v-x-e-table/index.ts +3 -3
  116. package/types/all.d.ts +76 -76
  117. package/types/index.d.ts +4 -4
  118. /package/dist/{iconfont.1793007753347.ttf → iconfont.1793009263429.ttf} +0 -0
  119. /package/dist/{iconfont.1793007753347.woff → iconfont.1793009263429.woff} +0 -0
  120. /package/dist/{iconfont.1793007753347.woff2 → iconfont.1793009263429.woff2} +0 -0
  121. /package/es/{iconfont.1793007753347.ttf → iconfont.1793009263429.ttf} +0 -0
  122. /package/es/{iconfont.1793007753347.woff → iconfont.1793009263429.woff} +0 -0
  123. /package/es/{iconfont.1793007753347.woff2 → iconfont.1793009263429.woff2} +0 -0
  124. /package/lib/{iconfont.1793007753347.ttf → iconfont.1793009263429.ttf} +0 -0
  125. /package/lib/{iconfont.1793007753347.woff → iconfont.1793009263429.woff} +0 -0
  126. /package/lib/{iconfont.1793007753347.woff2 → iconfont.1793009263429.woff2} +0 -0
@@ -1,279 +1,319 @@
1
- import { h, ref, Ref, computed, inject, reactive, nextTick, PropType } from 'vue'
2
- import { defineVxeComponent } from '../../../ui/src/comp'
3
- import { VxeUI } from '@vxe-ui/core'
4
- import XEUtils from 'xe-utils'
5
- import { getDefaultConfig, parseFile } from '../../../ui/src/utils'
6
- import { createComponentLog } from '../../../ui/src/log'
7
-
8
- import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines } from '../../../../types'
9
-
10
- const { errLog } = createComponentLog('table')
11
-
12
- const { getI18n, getIcon, renderEmptyElement } = VxeUI
13
-
14
- export default defineVxeComponent({
15
- name: 'VxeTableImportPanel',
16
- props: {
17
- defaultOptions: {
18
- type: Object as PropType<VxeTableDefines.ImportParamsObj>,
19
- default: () => ({} as VxeTableDefines.ImportParamsObj)
20
- },
21
- storeData: {
22
- type: Object as PropType<VxeTableDefines.ImportStoreObj>,
23
- default: () => ({} as VxeTableDefines.ImportStoreObj)
24
- }
25
- },
26
- setup (props) {
27
- const VxeUIModalComponent = VxeUI.getComponent('VxeModal')
28
- const VxeUIButtonComponent = VxeUI.getComponent('VxeButton')
29
- const VxeUISelectComponent = VxeUI.getComponent('VxeSelect')
30
-
31
- const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
32
- const { computeImportOpts } = $xeTable.getComputeMaps()
33
-
34
- const reactData = reactive({
35
- loading: false
36
- })
37
-
38
- const refFileBtn = ref() as Ref<HTMLButtonElement>
39
-
40
- const computeSelectName = computed(() => {
41
- const { storeData } = props
42
- return `${storeData.filename}.${storeData.type}`
43
- })
44
-
45
- const computeHasFile = computed(() => {
46
- const { storeData } = props
47
- return storeData.file && storeData.type
48
- })
49
-
50
- const computeParseTypeLabel = computed(() => {
51
- const { storeData } = props
52
- const { type, typeList } = storeData
53
- if (type) {
54
- const selectItem = XEUtils.find(typeList, item => type === item.value)
55
- return `${selectItem ? selectItem.label : '*.*'}`
56
- }
57
- return `*.${typeList.map((item) => item.value).join(', *.')}`
58
- })
59
-
60
- const clearFileEvent = () => {
61
- const { storeData } = props
62
- Object.assign(storeData, {
63
- filename: '',
64
- sheetName: '',
65
- type: ''
66
- })
67
- }
68
-
69
- const selectFileEvent = () => {
70
- const { storeData, defaultOptions } = props
71
- $xeTable.readFile(defaultOptions).then((params) => {
72
- const { file } = params
73
- Object.assign(storeData, parseFile(file), { file })
74
- }).catch(() => {})
75
- }
76
-
77
- const showEvent = () => {
78
- nextTick(() => {
79
- const targetElem = refFileBtn.value
80
- if (targetElem) {
81
- targetElem.focus()
82
- }
83
- })
84
- }
85
-
86
- const cancelEvent = () => {
87
- const { storeData } = props
88
- storeData.visible = false
89
- }
90
-
91
- const importEvent = () => {
92
- const { storeData, defaultOptions } = props
93
- const importOpts = computeImportOpts.value
94
- reactData.loading = true
95
- $xeTable.importByFile(storeData.file, Object.assign({}, importOpts, defaultOptions)).then(() => {
96
- reactData.loading = false
97
- storeData.visible = false
98
- }).catch(() => {
99
- reactData.loading = false
100
- })
101
- }
102
-
103
- const renderVN = () => {
104
- const $xeGrid = $xeTable.xeGrid
105
- const $xeGantt = $xeTable.xeGantt
106
-
107
- const { defaultOptions, storeData } = props
108
- const selectName = computeSelectName.value
109
- const hasFile = computeHasFile.value
110
- const importOpts = computeImportOpts.value
111
- const parseTypeLabel = computeParseTypeLabel.value
112
- const modelOptions = importOpts.modelOptions || {}
113
- const settingOptions = importOpts.settingOptions || {}
114
- const slots = defaultOptions.slots || {}
115
- const topSlot = slots.top
116
- const bottomSlot = slots.bottom
117
- const defaultSlot = slots.default
118
- const footerSlot = slots.footer
119
- return VxeUIModalComponent
120
- ? h(VxeUIModalComponent, {
121
- id: 'VXE_IMPORT_MODAL',
122
- modelValue: storeData.visible,
123
- title: modelOptions.title || getI18n('vxe.import.impTitle'),
124
- className: 'vxe-table-export-popup-wrapper',
125
- width: modelOptions.width || 540,
126
- height: modelOptions.height,
127
- minWidth: modelOptions.minWidth || 360,
128
- minHeight: modelOptions.minHeight || 240,
129
- mask: getDefaultConfig(modelOptions.mask, true),
130
- lockView: getDefaultConfig(modelOptions.lockView, true),
131
- showFooter: true,
132
- escClosable: true,
133
- maskClosable: true,
134
- position: modelOptions.position,
135
- fullscreen: modelOptions.fullscreen,
136
- remember: modelOptions.remember,
137
- showMinimize: modelOptions.showMinimize,
138
- showMaximize: getDefaultConfig(modelOptions.showMaximize, true),
139
- resize: getDefaultConfig(modelOptions.resize, true),
140
- loading: reactData.loading,
141
- 'onUpdate:modelValue' (value: any) {
142
- storeData.visible = value
143
- },
144
- onShow: showEvent
145
- }, {
146
- default: () => {
147
- const params = {
148
- $table: $xeTable,
149
- $grid: $xeGrid,
150
- $gantt: $xeGantt,
151
- options: defaultOptions,
152
- params: defaultOptions.params as any
153
- }
154
- return h('div', {
155
- class: 'vxe-table-export--panel'
156
- }, [
157
- topSlot
158
- ? h('div', {
159
- class: 'vxe-table-export--panel-top'
160
- }, $xeTable.callSlot(topSlot, params))
161
- : renderEmptyElement($xeTable),
162
- h('div', {
163
- class: 'vxe-table-export--panel-body'
164
- }, defaultSlot
165
- ? $xeTable.callSlot(defaultSlot, params)
166
- : [
167
- h('table', {
168
- class: 'vxe-table-export--panel-table',
169
- cellspacing: 0,
170
- cellpadding: 0,
171
- border: 0
172
- }, [
173
- h('tbody', [
174
- h('tr', [
175
- h('td', getI18n('vxe.import.impFile')),
176
- h('td', [
177
- hasFile
178
- ? h('div', {
179
- class: 'vxe-table-export--selected--file',
180
- title: selectName
181
- }, [
182
- h('span', selectName),
183
- h('i', {
184
- class: getIcon().INPUT_CLEAR,
185
- onClick: clearFileEvent
186
- })
187
- ])
188
- : h('button', {
189
- ref: refFileBtn,
190
- class: 'vxe-table-export--select--file',
191
- onClick: selectFileEvent
192
- }, getI18n('vxe.import.impSelect'))
193
- ])
194
- ]),
195
- h('tr', [
196
- h('td', getI18n('vxe.import.impType')),
197
- h('td', parseTypeLabel)
198
- ]),
199
- settingOptions.showMode === false
200
- ? renderEmptyElement($xeTable)
201
- : h('tr', [
202
- h('td', getI18n('vxe.import.impMode')),
203
- h('td', [
204
- VxeUISelectComponent
205
- ? h(VxeUISelectComponent, {
206
- modelValue: defaultOptions.mode,
207
- options: storeData.modeList,
208
- 'onUpdate:modelValue' (value: any) {
209
- defaultOptions.mode = value
210
- }
211
- })
212
- : renderEmptyElement($xeTable)
213
- ])
214
- ])
215
-
216
- ])
217
- ])
218
- ]
219
- ),
220
- bottomSlot
221
- ? h('div', {
222
- class: 'vxe-table-export--panel-bottom'
223
- }, $xeTable.callSlot(bottomSlot, params))
224
- : renderEmptyElement($xeTable)
225
- ])
226
- },
227
- footer () {
228
- const params = {
229
- $table: $xeTable,
230
- $grid: $xeGrid,
231
- $gantt: $xeGantt,
232
- options: defaultOptions,
233
- params: defaultOptions.params as any
234
- }
235
- return h('div', {
236
- class: 'vxe-table-export--panel-footer'
237
- }, footerSlot
238
- ? $xeTable.callSlot(footerSlot, params)
239
- : [
240
- h('div', {
241
- class: 'vxe-table-export--panel-btns'
242
- }, [
243
- VxeUIButtonComponent
244
- ? h(VxeUIButtonComponent, {
245
- content: getI18n('vxe.import.impCancel'),
246
- onClick: cancelEvent
247
- })
248
- : renderEmptyElement($xeTable),
249
- VxeUIButtonComponent
250
- ? h(VxeUIButtonComponent, {
251
- status: 'primary',
252
- disabled: !hasFile || reactData.loading,
253
- content: getI18n('vxe.import.impConfirm'),
254
- onClick: importEvent
255
- })
256
- : renderEmptyElement($xeTable)
257
- ])
258
- ]
259
- )
260
- }
261
- })
262
- : renderEmptyElement($xeTable)
263
- }
264
-
265
- nextTick(() => {
266
- if (!VxeUIModalComponent) {
267
- errLog('vxe.error.reqComp', ['vxe-modal'])
268
- }
269
- if (!VxeUIButtonComponent) {
270
- errLog('vxe.error.reqComp', ['vxe-button'])
271
- }
272
- if (!VxeUISelectComponent) {
273
- errLog('vxe.error.reqComp', ['vxe-select'])
274
- }
275
- })
276
-
277
- return renderVN
278
- }
279
- })
1
+ import { h, ref, Ref, computed, inject, reactive, nextTick, PropType } from 'vue'
2
+ import { defineVxeComponent } from '../../../ui/src/comp'
3
+ import { VxeUI } from '@vxe-ui/core'
4
+ import XEUtils from 'xe-utils'
5
+ import { getDefaultConfig, parseFile } from '../../../ui/src/utils'
6
+ import { createComponentLog } from '../../../ui/src/log'
7
+
8
+ import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines } from '../../../../types'
9
+
10
+ const { errLog } = createComponentLog('table')
11
+
12
+ const { getI18n, getIcon, renderEmptyElement } = VxeUI
13
+
14
+ export default defineVxeComponent({
15
+ name: 'VxeTableImportPanel',
16
+ props: {
17
+ defaultOptions: {
18
+ type: Object as PropType<VxeTableDefines.ImportParamsObj>,
19
+ default: () => ({}) as VxeTableDefines.ImportParamsObj
20
+ },
21
+ storeData: {
22
+ type: Object as PropType<VxeTableDefines.ImportStoreObj>,
23
+ default: () => ({}) as VxeTableDefines.ImportStoreObj
24
+ }
25
+ },
26
+ setup(props) {
27
+ const VxeUIModalComponent = VxeUI.getComponent('VxeModal')
28
+ const VxeUIButtonComponent = VxeUI.getComponent('VxeButton')
29
+ const VxeUISelectComponent = VxeUI.getComponent('VxeSelect')
30
+
31
+ const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
32
+ const { computeImportOpts } = $xeTable.getComputeMaps()
33
+
34
+ const reactData = reactive({
35
+ loading: false
36
+ })
37
+
38
+ const refFileBtn = ref() as Ref<HTMLButtonElement>
39
+
40
+ const computeSelectName = computed(() => {
41
+ const { storeData } = props
42
+ return `${storeData.filename}.${storeData.type}`
43
+ })
44
+
45
+ const computeHasFile = computed(() => {
46
+ const { storeData } = props
47
+ return storeData.file && storeData.type
48
+ })
49
+
50
+ const computeParseTypeLabel = computed(() => {
51
+ const { storeData } = props
52
+ const { type, typeList } = storeData
53
+ if (type) {
54
+ const selectItem = XEUtils.find(typeList, (item) => type === item.value)
55
+ return `${selectItem ? selectItem.label : '*.*'}`
56
+ }
57
+ return `*.${typeList.map((item) => item.value).join(', *.')}`
58
+ })
59
+
60
+ const clearFileEvent = () => {
61
+ const { storeData } = props
62
+ Object.assign(storeData, {
63
+ filename: '',
64
+ sheetName: '',
65
+ type: ''
66
+ })
67
+ }
68
+
69
+ const selectFileEvent = () => {
70
+ const { storeData, defaultOptions } = props
71
+ $xeTable
72
+ .readFile(defaultOptions)
73
+ .then((params) => {
74
+ const { file } = params
75
+ Object.assign(storeData, parseFile(file), { file })
76
+ })
77
+ .catch(() => {})
78
+ }
79
+
80
+ const showEvent = () => {
81
+ nextTick(() => {
82
+ const targetElem = refFileBtn.value
83
+ if (targetElem) {
84
+ targetElem.focus()
85
+ }
86
+ })
87
+ }
88
+
89
+ const cancelEvent = () => {
90
+ const { storeData } = props
91
+ storeData.visible = false
92
+ }
93
+
94
+ const importEvent = () => {
95
+ const { storeData, defaultOptions } = props
96
+ const importOpts = computeImportOpts.value
97
+ reactData.loading = true
98
+ $xeTable
99
+ .importByFile(storeData.file, Object.assign({}, importOpts, defaultOptions))
100
+ .then(() => {
101
+ reactData.loading = false
102
+ storeData.visible = false
103
+ })
104
+ .catch(() => {
105
+ reactData.loading = false
106
+ })
107
+ }
108
+
109
+ const renderVN = () => {
110
+ const $xeGrid = $xeTable.xeGrid
111
+ const $xeGantt = $xeTable.xeGantt
112
+
113
+ const { defaultOptions, storeData } = props
114
+ const selectName = computeSelectName.value
115
+ const hasFile = computeHasFile.value
116
+ const importOpts = computeImportOpts.value
117
+ const parseTypeLabel = computeParseTypeLabel.value
118
+ const modelOptions = importOpts.modelOptions || {}
119
+ const settingOptions = importOpts.settingOptions || {}
120
+ const slots = defaultOptions.slots || {}
121
+ const topSlot = slots.top
122
+ const bottomSlot = slots.bottom
123
+ const defaultSlot = slots.default
124
+ const footerSlot = slots.footer
125
+ return VxeUIModalComponent
126
+ ? h(
127
+ VxeUIModalComponent,
128
+ {
129
+ id: 'VXE_IMPORT_MODAL',
130
+ modelValue: storeData.visible,
131
+ title: modelOptions.title || getI18n('vxe.import.impTitle'),
132
+ className: 'vxe-table-export-popup-wrapper',
133
+ width: modelOptions.width || 540,
134
+ height: modelOptions.height,
135
+ minWidth: modelOptions.minWidth || 360,
136
+ minHeight: modelOptions.minHeight || 240,
137
+ mask: getDefaultConfig(modelOptions.mask, true),
138
+ lockView: getDefaultConfig(modelOptions.lockView, true),
139
+ showFooter: true,
140
+ escClosable: true,
141
+ maskClosable: true,
142
+ position: modelOptions.position,
143
+ fullscreen: modelOptions.fullscreen,
144
+ remember: modelOptions.remember,
145
+ showMinimize: modelOptions.showMinimize,
146
+ showMaximize: getDefaultConfig(modelOptions.showMaximize, true),
147
+ resize: getDefaultConfig(modelOptions.resize, true),
148
+ loading: reactData.loading,
149
+ 'onUpdate:modelValue'(value: any) {
150
+ storeData.visible = value
151
+ },
152
+ onShow: showEvent
153
+ },
154
+ {
155
+ default: () => {
156
+ const params = {
157
+ $table: $xeTable,
158
+ $grid: $xeGrid,
159
+ $gantt: $xeGantt,
160
+ options: defaultOptions,
161
+ params: defaultOptions.params as any
162
+ }
163
+ return h(
164
+ 'div',
165
+ {
166
+ class: 'vxe-table-export--panel'
167
+ },
168
+ [
169
+ topSlot
170
+ ? h(
171
+ 'div',
172
+ {
173
+ class: 'vxe-table-export--panel-top'
174
+ },
175
+ $xeTable.callSlot(topSlot, params)
176
+ )
177
+ : renderEmptyElement($xeTable),
178
+ h(
179
+ 'div',
180
+ {
181
+ class: 'vxe-table-export--panel-body'
182
+ },
183
+ defaultSlot
184
+ ? $xeTable.callSlot(defaultSlot, params)
185
+ : [
186
+ h(
187
+ 'table',
188
+ {
189
+ class: 'vxe-table-export--panel-table',
190
+ cellspacing: 0,
191
+ cellpadding: 0,
192
+ border: 0
193
+ },
194
+ [
195
+ h('tbody', [
196
+ h('tr', [
197
+ h('td', getI18n('vxe.import.impFile')),
198
+ h('td', [
199
+ hasFile
200
+ ? h(
201
+ 'div',
202
+ {
203
+ class: 'vxe-table-export--selected--file',
204
+ title: selectName
205
+ },
206
+ [
207
+ h('span', selectName),
208
+ h('i', {
209
+ class: getIcon().INPUT_CLEAR,
210
+ onClick: clearFileEvent
211
+ })
212
+ ]
213
+ )
214
+ : h(
215
+ 'button',
216
+ {
217
+ ref: refFileBtn,
218
+ class: 'vxe-table-export--select--file',
219
+ onClick: selectFileEvent
220
+ },
221
+ getI18n('vxe.import.impSelect')
222
+ )
223
+ ])
224
+ ]),
225
+ h('tr', [h('td', getI18n('vxe.import.impType')), h('td', parseTypeLabel)]),
226
+ settingOptions.showMode === false
227
+ ? renderEmptyElement($xeTable)
228
+ : h('tr', [
229
+ h('td', getI18n('vxe.import.impMode')),
230
+ h('td', [
231
+ VxeUISelectComponent
232
+ ? h(VxeUISelectComponent, {
233
+ modelValue: defaultOptions.mode,
234
+ options: storeData.modeList,
235
+ 'onUpdate:modelValue'(value: any) {
236
+ defaultOptions.mode = value
237
+ }
238
+ })
239
+ : renderEmptyElement($xeTable)
240
+ ])
241
+ ])
242
+ ])
243
+ ]
244
+ )
245
+ ]
246
+ ),
247
+ bottomSlot
248
+ ? h(
249
+ 'div',
250
+ {
251
+ class: 'vxe-table-export--panel-bottom'
252
+ },
253
+ $xeTable.callSlot(bottomSlot, params)
254
+ )
255
+ : renderEmptyElement($xeTable)
256
+ ]
257
+ )
258
+ },
259
+ footer() {
260
+ const params = {
261
+ $table: $xeTable,
262
+ $grid: $xeGrid,
263
+ $gantt: $xeGantt,
264
+ options: defaultOptions,
265
+ params: defaultOptions.params as any
266
+ }
267
+ return h(
268
+ 'div',
269
+ {
270
+ class: 'vxe-table-export--panel-footer'
271
+ },
272
+ footerSlot
273
+ ? $xeTable.callSlot(footerSlot, params)
274
+ : [
275
+ h(
276
+ 'div',
277
+ {
278
+ class: 'vxe-table-export--panel-btns'
279
+ },
280
+ [
281
+ VxeUIButtonComponent
282
+ ? h(VxeUIButtonComponent, {
283
+ content: getI18n('vxe.import.impCancel'),
284
+ onClick: cancelEvent
285
+ })
286
+ : renderEmptyElement($xeTable),
287
+ VxeUIButtonComponent
288
+ ? h(VxeUIButtonComponent, {
289
+ status: 'primary',
290
+ disabled: !hasFile || reactData.loading,
291
+ content: getI18n('vxe.import.impConfirm'),
292
+ onClick: importEvent
293
+ })
294
+ : renderEmptyElement($xeTable)
295
+ ]
296
+ )
297
+ ]
298
+ )
299
+ }
300
+ }
301
+ )
302
+ : renderEmptyElement($xeTable)
303
+ }
304
+
305
+ nextTick(() => {
306
+ if (!VxeUIModalComponent) {
307
+ errLog('vxe.error.reqComp', ['vxe-modal'])
308
+ }
309
+ if (!VxeUIButtonComponent) {
310
+ errLog('vxe.error.reqComp', ['vxe-button'])
311
+ }
312
+ if (!VxeUISelectComponent) {
313
+ errLog('vxe.error.reqComp', ['vxe-select'])
314
+ }
315
+ })
316
+
317
+ return renderVN
318
+ }
319
+ })