vxe-table 4.23.7 → 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 (148) hide show
  1. package/dist/all.esm.js +5859 -4018
  2. package/es/colgroup/index.js +1 -1
  3. package/es/column/index.js +1 -1
  4. package/es/components.d.ts +3 -0
  5. package/es/components.js +4 -8
  6. package/es/grid/index.js +1 -1
  7. package/es/grid/src/emits.js +1 -15
  8. package/es/grid/src/grid.js +398 -121
  9. package/es/grid/src/props.js +1 -1
  10. package/es/index.esm.js +6 -0
  11. package/es/index.js +6 -0
  12. package/es/table/index.js +1 -1
  13. package/es/table/module/custom/hook.js +50 -43
  14. package/es/table/module/custom/panel.js +778 -528
  15. package/es/table/module/edit/hook.js +141 -63
  16. package/es/table/module/export/export-panel.js +400 -317
  17. package/es/table/module/export/hook.js +396 -338
  18. package/es/table/module/export/import-panel.js +153 -124
  19. package/es/table/module/filter/hook.js +17 -3
  20. package/es/table/module/filter/panel.js +147 -85
  21. package/es/table/module/keyboard/hook.js +9 -5
  22. package/es/table/module/menu/hook.js +1 -1
  23. package/es/table/module/menu/panel.js +198 -127
  24. package/es/table/module/validator/hook.js +1 -1
  25. package/es/table/render/index.js +152 -99
  26. package/es/table/src/body.js +356 -234
  27. package/es/table/src/cell.js +427 -270
  28. package/es/table/src/columnInfo.js +2 -1
  29. package/es/table/src/footer.js +145 -100
  30. package/es/table/src/group.js +7 -3
  31. package/es/table/src/header.js +230 -173
  32. package/es/table/src/props.js +1 -1
  33. package/es/table/src/table.js +1504 -1031
  34. package/es/table/src/util.js +15 -19
  35. package/es/toolbar/index.js +1 -1
  36. package/es/toolbar/src/toolbar.js +133 -76
  37. package/es/ui/index.d.ts +0 -1
  38. package/es/ui/index.js +1 -2
  39. package/es/ui/src/dom.js +9 -6
  40. package/es/ui/src/log.js +1 -1
  41. package/es/ui/src/utils.d.ts +1 -1
  42. package/es/v-x-e-table/index.d.ts +0 -1
  43. package/es/v-x-e-table/index.js +0 -1
  44. package/lib/colgroup/index.js +5 -5
  45. package/lib/column/index.js +5 -5
  46. package/lib/components.js +8 -12
  47. package/lib/grid/index.js +4 -4
  48. package/lib/grid/src/emits.js +1 -15
  49. package/lib/grid/src/grid.js +419 -142
  50. package/lib/grid/src/props.js +2 -2
  51. package/lib/index.common.js +6 -0
  52. package/lib/index.js +6 -0
  53. package/lib/index.umd.js +5825 -3945
  54. package/lib/index.umd.min.js +3 -3
  55. package/lib/table/index.js +5 -5
  56. package/lib/table/module/custom/hook.js +51 -44
  57. package/lib/table/module/custom/panel.js +790 -540
  58. package/lib/table/module/edit/hook.js +142 -64
  59. package/lib/table/module/export/export-panel.js +406 -323
  60. package/lib/table/module/export/hook.js +419 -361
  61. package/lib/table/module/export/import-panel.js +157 -128
  62. package/lib/table/module/filter/hook.js +18 -4
  63. package/lib/table/module/filter/panel.js +149 -87
  64. package/lib/table/module/keyboard/hook.js +10 -6
  65. package/lib/table/module/menu/hook.js +2 -2
  66. package/lib/table/module/menu/panel.js +199 -128
  67. package/lib/table/module/validator/hook.js +2 -2
  68. package/lib/table/render/index.js +153 -100
  69. package/lib/table/src/body.js +357 -235
  70. package/lib/table/src/cell.js +428 -271
  71. package/lib/table/src/columnInfo.js +3 -2
  72. package/lib/table/src/footer.js +146 -101
  73. package/lib/table/src/group.js +7 -3
  74. package/lib/table/src/header.js +231 -174
  75. package/lib/table/src/props.js +2 -2
  76. package/lib/table/src/table.js +1487 -1045
  77. package/lib/table/src/util.js +15 -19
  78. package/lib/toolbar/index.js +4 -4
  79. package/lib/toolbar/src/toolbar.js +135 -78
  80. package/lib/ui/index.js +1 -3
  81. package/lib/ui/src/dom.js +9 -6
  82. package/lib/ui/src/log.js +1 -1
  83. package/lib/v-x-e-table/index.js +0 -2
  84. package/package.json +8 -3
  85. package/packages/colgroup/index.ts +22 -22
  86. package/packages/column/index.ts +22 -22
  87. package/packages/components.ts +41 -43
  88. package/packages/grid/index.ts +18 -18
  89. package/packages/grid/src/emits.ts +5 -19
  90. package/packages/grid/src/grid.ts +2229 -1925
  91. package/packages/grid/src/props.ts +22 -23
  92. package/packages/index.ts +11 -4
  93. package/packages/locale/lang/fr-FR.ts +15 -15
  94. package/packages/locale/lang/it-IT.ts +4 -4
  95. package/packages/locale/lang/uk-UA.ts +1 -1
  96. package/packages/locale/lang/uz-UZ.ts +13 -13
  97. package/packages/locale/lang/zh-CN.ts +907 -907
  98. package/packages/table/index.ts +26 -26
  99. package/packages/table/module/custom/hook.ts +510 -503
  100. package/packages/table/module/custom/panel.ts +2002 -1743
  101. package/packages/table/module/edit/hook.ts +1224 -1131
  102. package/packages/table/module/export/export-panel.ts +697 -611
  103. package/packages/table/module/export/hook.ts +2160 -2059
  104. package/packages/table/module/export/import-panel.ts +319 -279
  105. package/packages/table/module/export/util.ts +25 -24
  106. package/packages/table/module/filter/hook.ts +519 -501
  107. package/packages/table/module/filter/panel.ts +368 -304
  108. package/packages/table/module/keyboard/hook.ts +498 -494
  109. package/packages/table/module/menu/hook.ts +330 -330
  110. package/packages/table/module/menu/panel.ts +272 -201
  111. package/packages/table/module/validator/hook.ts +653 -635
  112. package/packages/table/render/index.ts +1819 -1744
  113. package/packages/table/src/body.ts +1078 -955
  114. package/packages/table/src/cell.ts +1524 -1359
  115. package/packages/table/src/column.ts +192 -192
  116. package/packages/table/src/columnInfo.ts +232 -232
  117. package/packages/table/src/emits.ts +134 -134
  118. package/packages/table/src/footer.ts +425 -380
  119. package/packages/table/src/group.ts +67 -63
  120. package/packages/table/src/header.ts +642 -581
  121. package/packages/table/src/props.ts +336 -336
  122. package/packages/table/src/store.ts +14 -14
  123. package/packages/table/src/table.ts +16011 -15454
  124. package/packages/table/src/use/cell-view.ts +41 -44
  125. package/packages/table/src/use/index.ts +1 -1
  126. package/packages/table/src/util.ts +1206 -1216
  127. package/packages/toolbar/index.ts +18 -18
  128. package/packages/toolbar/src/toolbar.ts +768 -706
  129. package/packages/ui/index.ts +519 -521
  130. package/packages/ui/src/anime.ts +51 -52
  131. package/packages/ui/src/comp.ts +3 -3
  132. package/packages/ui/src/dom.ts +466 -463
  133. package/packages/ui/src/log.ts +19 -19
  134. package/packages/ui/src/utils.ts +66 -66
  135. package/packages/ui/src/vn.ts +55 -55
  136. package/packages/v-x-e-table/index.d.ts +3 -4
  137. package/packages/v-x-e-table/index.ts +3 -4
  138. package/types/all.d.ts +76 -76
  139. package/types/index.d.ts +4 -4
  140. /package/dist/{iconfont.1792979665397.ttf → iconfont.1793009263429.ttf} +0 -0
  141. /package/dist/{iconfont.1792979665397.woff → iconfont.1793009263429.woff} +0 -0
  142. /package/dist/{iconfont.1792979665397.woff2 → iconfont.1793009263429.woff2} +0 -0
  143. /package/es/{iconfont.1792979665397.ttf → iconfont.1793009263429.ttf} +0 -0
  144. /package/es/{iconfont.1792979665397.woff → iconfont.1793009263429.woff} +0 -0
  145. /package/es/{iconfont.1792979665397.woff2 → iconfont.1793009263429.woff2} +0 -0
  146. /package/lib/{iconfont.1792979665397.ttf → iconfont.1793009263429.ttf} +0 -0
  147. /package/lib/{iconfont.1792979665397.woff → iconfont.1793009263429.woff} +0 -0
  148. /package/lib/{iconfont.1792979665397.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 '../../../ui'
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
+ })