vxe-table 3.19.12 → 3.19.13

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 (151) 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 +2 -1
  4. package/es/locale/lang/de-DE.js +2 -1
  5. package/es/locale/lang/en-US.js +2 -1
  6. package/es/locale/lang/es-ES.js +2 -1
  7. package/es/locale/lang/fr-FR.js +2 -1
  8. package/es/locale/lang/hu-HU.js +2 -1
  9. package/es/locale/lang/hy-AM.js +2 -1
  10. package/es/locale/lang/id-ID.js +2 -1
  11. package/es/locale/lang/it-IT.js +2 -1
  12. package/es/locale/lang/ja-JP.js +2 -1
  13. package/es/locale/lang/ko-KR.js +2 -1
  14. package/es/locale/lang/ms-MY.js +2 -1
  15. package/es/locale/lang/nb-NO.js +2 -1
  16. package/es/locale/lang/pt-BR.js +2 -1
  17. package/es/locale/lang/ru-RU.js +2 -1
  18. package/es/locale/lang/th-TH.js +2 -1
  19. package/es/locale/lang/ug-CN.js +2 -1
  20. package/es/locale/lang/uk-UA.js +2 -1
  21. package/es/locale/lang/uz-UZ.js +2 -1
  22. package/es/locale/lang/vi-VN.js +2 -1
  23. package/es/locale/lang/zh-CHT.js +2 -1
  24. package/es/locale/lang/zh-CN.js +2 -1
  25. package/es/style.css +1 -1
  26. package/es/style.min.css +1 -1
  27. package/es/table/module/menu/mixin.js +1 -1
  28. package/es/table/module/menu/panel.js +30 -14
  29. package/es/table/style.css +6 -3
  30. package/es/table/style.min.css +1 -1
  31. package/es/ui/index.js +2 -1
  32. package/es/ui/src/log.js +1 -1
  33. package/es/vxe-table/style.css +6 -3
  34. package/es/vxe-table/style.min.css +1 -1
  35. package/lib/index.css +1 -1
  36. package/lib/index.min.css +1 -1
  37. package/lib/index.umd.js +27 -11
  38. package/lib/index.umd.min.js +1 -1
  39. package/lib/locale/lang/ar-EG.js +2 -1
  40. package/lib/locale/lang/ar-EG.min.js +1 -1
  41. package/lib/locale/lang/ar-EG.umd.js +2 -1
  42. package/lib/locale/lang/de-DE.js +2 -1
  43. package/lib/locale/lang/de-DE.min.js +1 -1
  44. package/lib/locale/lang/de-DE.umd.js +2 -1
  45. package/lib/locale/lang/en-US.js +2 -1
  46. package/lib/locale/lang/en-US.min.js +1 -1
  47. package/lib/locale/lang/en-US.umd.js +2 -1
  48. package/lib/locale/lang/es-ES.js +2 -1
  49. package/lib/locale/lang/es-ES.min.js +1 -1
  50. package/lib/locale/lang/es-ES.umd.js +2 -1
  51. package/lib/locale/lang/fr-FR.js +2 -1
  52. package/lib/locale/lang/fr-FR.min.js +1 -1
  53. package/lib/locale/lang/fr-FR.umd.js +2 -1
  54. package/lib/locale/lang/hu-HU.js +2 -1
  55. package/lib/locale/lang/hu-HU.min.js +1 -1
  56. package/lib/locale/lang/hu-HU.umd.js +2 -1
  57. package/lib/locale/lang/hy-AM.js +2 -1
  58. package/lib/locale/lang/hy-AM.min.js +1 -1
  59. package/lib/locale/lang/hy-AM.umd.js +2 -1
  60. package/lib/locale/lang/id-ID.js +2 -1
  61. package/lib/locale/lang/id-ID.min.js +1 -1
  62. package/lib/locale/lang/id-ID.umd.js +2 -1
  63. package/lib/locale/lang/it-IT.js +2 -1
  64. package/lib/locale/lang/it-IT.min.js +1 -1
  65. package/lib/locale/lang/it-IT.umd.js +2 -1
  66. package/lib/locale/lang/ja-JP.js +2 -1
  67. package/lib/locale/lang/ja-JP.min.js +1 -1
  68. package/lib/locale/lang/ja-JP.umd.js +2 -1
  69. package/lib/locale/lang/ko-KR.js +2 -1
  70. package/lib/locale/lang/ko-KR.min.js +1 -1
  71. package/lib/locale/lang/ko-KR.umd.js +2 -1
  72. package/lib/locale/lang/ms-MY.js +2 -1
  73. package/lib/locale/lang/ms-MY.min.js +1 -1
  74. package/lib/locale/lang/ms-MY.umd.js +2 -1
  75. package/lib/locale/lang/nb-NO.js +2 -1
  76. package/lib/locale/lang/nb-NO.min.js +1 -1
  77. package/lib/locale/lang/nb-NO.umd.js +2 -1
  78. package/lib/locale/lang/pt-BR.js +2 -1
  79. package/lib/locale/lang/pt-BR.min.js +1 -1
  80. package/lib/locale/lang/pt-BR.umd.js +2 -1
  81. package/lib/locale/lang/ru-RU.js +2 -1
  82. package/lib/locale/lang/ru-RU.min.js +1 -1
  83. package/lib/locale/lang/ru-RU.umd.js +2 -1
  84. package/lib/locale/lang/th-TH.js +2 -1
  85. package/lib/locale/lang/th-TH.min.js +1 -1
  86. package/lib/locale/lang/th-TH.umd.js +2 -1
  87. package/lib/locale/lang/ug-CN.js +2 -1
  88. package/lib/locale/lang/ug-CN.min.js +1 -1
  89. package/lib/locale/lang/ug-CN.umd.js +2 -1
  90. package/lib/locale/lang/uk-UA.js +2 -1
  91. package/lib/locale/lang/uk-UA.min.js +1 -1
  92. package/lib/locale/lang/uk-UA.umd.js +2 -1
  93. package/lib/locale/lang/uz-UZ.js +2 -1
  94. package/lib/locale/lang/uz-UZ.min.js +1 -1
  95. package/lib/locale/lang/uz-UZ.umd.js +2 -1
  96. package/lib/locale/lang/vi-VN.js +2 -1
  97. package/lib/locale/lang/vi-VN.min.js +1 -1
  98. package/lib/locale/lang/vi-VN.umd.js +2 -1
  99. package/lib/locale/lang/zh-CHT.js +2 -1
  100. package/lib/locale/lang/zh-CHT.min.js +1 -1
  101. package/lib/locale/lang/zh-CHT.umd.js +2 -1
  102. package/lib/locale/lang/zh-CN.js +2 -1
  103. package/lib/locale/lang/zh-CN.min.js +1 -1
  104. package/lib/locale/lang/zh-CN.umd.js +2 -1
  105. package/lib/style.css +1 -1
  106. package/lib/style.min.css +1 -1
  107. package/lib/table/module/menu/mixin.js +1 -1
  108. package/lib/table/module/menu/mixin.min.js +1 -1
  109. package/lib/table/module/menu/panel.js +21 -7
  110. package/lib/table/module/menu/panel.min.js +1 -1
  111. package/lib/table/style/style.css +6 -3
  112. package/lib/table/style/style.min.css +1 -1
  113. package/lib/ui/index.js +2 -1
  114. package/lib/ui/index.min.js +1 -1
  115. package/lib/ui/src/log.js +1 -1
  116. package/lib/ui/src/log.min.js +1 -1
  117. package/lib/vxe-table/style/style.css +6 -3
  118. package/lib/vxe-table/style/style.min.css +1 -1
  119. package/package.json +1 -1
  120. package/packages/locale/lang/ar-EG.ts +2 -1
  121. package/packages/locale/lang/de-DE.ts +2 -1
  122. package/packages/locale/lang/en-US.ts +2 -1
  123. package/packages/locale/lang/es-ES.ts +2 -1
  124. package/packages/locale/lang/fr-FR.ts +2 -1
  125. package/packages/locale/lang/hu-HU.ts +2 -1
  126. package/packages/locale/lang/hy-AM.ts +2 -1
  127. package/packages/locale/lang/id-ID.ts +2 -1
  128. package/packages/locale/lang/it-IT.ts +2 -1
  129. package/packages/locale/lang/ja-JP.ts +2 -1
  130. package/packages/locale/lang/ko-KR.ts +2 -1
  131. package/packages/locale/lang/ms-MY.ts +2 -1
  132. package/packages/locale/lang/nb-NO.ts +2 -1
  133. package/packages/locale/lang/pt-BR.ts +2 -1
  134. package/packages/locale/lang/ru-RU.ts +2 -1
  135. package/packages/locale/lang/th-TH.ts +2 -1
  136. package/packages/locale/lang/ug-CN.ts +2 -1
  137. package/packages/locale/lang/uk-UA.ts +2 -1
  138. package/packages/locale/lang/uz-UZ.ts +2 -1
  139. package/packages/locale/lang/vi-VN.ts +2 -1
  140. package/packages/locale/lang/zh-CHT.ts +2 -1
  141. package/packages/locale/lang/zh-CN.ts +2 -1
  142. package/packages/table/module/menu/mixin.ts +7 -7
  143. package/packages/table/module/menu/panel.ts +30 -14
  144. package/packages/ui/index.ts +1 -0
  145. package/styles/components/table-module/menu.scss +1 -0
  146. /package/es/{iconfont.1762579776761.ttf → iconfont.1762758687118.ttf} +0 -0
  147. /package/es/{iconfont.1762579776761.woff → iconfont.1762758687118.woff} +0 -0
  148. /package/es/{iconfont.1762579776761.woff2 → iconfont.1762758687118.woff2} +0 -0
  149. /package/lib/{iconfont.1762579776761.ttf → iconfont.1762758687118.ttf} +0 -0
  150. /package/lib/{iconfont.1762579776761.woff → iconfont.1762758687118.woff} +0 -0
  151. /package/lib/{iconfont.1762579776761.woff2 → iconfont.1762758687118.woff2} +0 -0
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Déplacer: {0}',
90
90
  resizeColTip: 'Largeur: {0} pixels',
91
91
  resizeRowTip: 'Hauteur: {0} pixels',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Veuillez sélectionner au moins un enregistrement!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Mozgás: {0}',
90
90
  resizeColTip: 'Szélesség: {0} pixelek',
91
91
  resizeRowTip: 'Magasság: {0} pixelek',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Kérjük, válasszon legalább egy rekordot!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: '移动:{0}',
90
90
  resizeColTip: '宽:{0} 像素',
91
91
  resizeRowTip: '高:{0} 像素',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: '请至少选择一条记录!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Pindahkan: {0}',
90
90
  resizeColTip: 'Lebar: {0} piksel',
91
91
  resizeRowTip: 'Tinggi: {0} piksel',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Pilih setidaknya satu catatan!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Muovi: {0}',
90
90
  resizeColTip: 'Larghezza: {0} pixel',
91
91
  resizeRowTip: 'Altezza: {0} pixel',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Seleziona almeno un record!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: '移動:{0}',
90
90
  resizeColTip: '幅:{0}ピクセル',
91
91
  resizeRowTip: '高:{0}ピクセル',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: '少なくとも1つのレコードを選択してください!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: '움직임 : {0}',
90
90
  resizeColTip: '너비 : {0} 픽셀',
91
91
  resizeRowTip: '높음 : {0} 픽셀',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: '하나 이상의 레코드를 선택하십시오!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Bergerak: {0}',
90
90
  resizeColTip: 'Lebar: {0} piksel',
91
91
  resizeRowTip: 'Tinggi: {0} piksel',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Sila pilih sekurang -kurangnya satu rekod!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Flytt: {0}',
90
90
  resizeColTip: 'Bredde: {0} piksler',
91
91
  resizeRowTip: 'Høyde: {0} piksler',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Velg minst en post!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Move: {0}',
90
90
  resizeColTip: 'Largura: {0} pixels',
91
91
  resizeRowTip: 'Altura: {0} pixels',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Selecione pelo menos um registro!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'MOVE: {0}',
90
90
  resizeColTip: 'Ширина: {0} пиксели',
91
91
  resizeRowTip: 'Высокий: {0} пиксели',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Пожалуйста, выберите хотя бы одну запись!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'ย้าย: {0}',
90
90
  resizeColTip: 'ความกว้าง: {0} พิกเซล',
91
91
  resizeRowTip: 'ความสูง: {0} พิกเซล',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'กรุณาเลือกอย่างน้อยหนึ่งบันทึก!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'يۆتكەش:{0}',
90
90
  resizeColTip: '宽:{0} 像素',
91
91
  resizeRowTip: '高:{0} 像素',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'كەم بولغاندا بىر تال ئۇچۇر تاللاڭ',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Перемістити: {0}',
90
90
  resizeColTip: 'Ширина: {0} пікселів',
91
91
  resizeRowTip: 'Висота: {0} пікселів',
92
- rowGroupContentTotal: '{0} ({1})'
92
+ rowGroupContentTotal: '{0} ({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Виберіть принаймні один запис!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: "Ko'chiring: {0}",
90
90
  resizeColTip: 'Kengligi: {0} piksel',
91
91
  resizeRowTip: 'Yuqori: {0} piksel',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Iltimos, kamida bitta yozuvni tanlang!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: 'Di chuyển: {0}',
90
90
  resizeColTip: 'Chiều rộng: {0} pixel',
91
91
  resizeRowTip: 'Cao: {0} pixel',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: 'Vui lòng chọn ít nhất một bản ghi!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: '移動:{0}',
90
90
  resizeColTip: '寬:{0} 像素',
91
91
  resizeRowTip: '高:{0} 像素',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: '請至少選擇一條記錄!',
@@ -89,7 +89,8 @@ export default {
89
89
  dragTip: '移动:{0}',
90
90
  resizeColTip: '宽:{0} 像素',
91
91
  resizeRowTip: '高:{0} 像素',
92
- rowGroupContentTotal: '{0}({1})'
92
+ rowGroupContentTotal: '{0}({1})',
93
+ menuLoading: '加载中...'
93
94
  },
94
95
  grid: {
95
96
  selectOneRecord: '请至少选择一条记录!',
@@ -4,7 +4,7 @@ import { getDomNode, getAbsolutePos, getEventTargetNode } from '../../../ui/src/
4
4
  import { isEnableConf, hasChildrenList } from '../../../ui/src/utils'
5
5
  import { warnLog } from '../../../ui/src/log'
6
6
 
7
- import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData, TableReactData } from '../../../../types'
7
+ import type { VxeTableConstructor, VxeTablePrivateMethods, TableInternalData, TableReactData, VxeTableDefines } from '../../../../types'
8
8
 
9
9
  const { menus, globalEvents, GLOBAL_EVENT_KEYS } = VxeUI
10
10
 
@@ -247,11 +247,11 @@ export default {
247
247
  }
248
248
  $xeTable.closeFilter()
249
249
  },
250
- ctxMenuMouseoverEvent (evnt: any, item: any, child: any) {
250
+ ctxMenuMouseoverEvent (evnt: Event, item: any, child: any) {
251
251
  const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
252
252
  const reactData = $xeTable as unknown as TableReactData
253
253
 
254
- const menuElem = evnt.currentTarget
254
+ const menuElem = evnt.currentTarget as HTMLDivElement
255
255
  const { ctxMenuStore } = reactData
256
256
  evnt.preventDefault()
257
257
  evnt.stopPropagation()
@@ -261,7 +261,7 @@ export default {
261
261
  ctxMenuStore.showChild = hasChildrenList(item)
262
262
  if (ctxMenuStore.showChild) {
263
263
  $xeTable.$nextTick(() => {
264
- const childWrapperElem = menuElem.nextElementSibling
264
+ const childWrapperElem = menuElem.nextElementSibling as HTMLDivElement
265
265
  if (childWrapperElem) {
266
266
  const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(menuElem)
267
267
  const posTop = boundingTop + menuElem.offsetHeight
@@ -289,7 +289,7 @@ export default {
289
289
  }
290
290
  }
291
291
  },
292
- ctxMenuMouseoutEvent (evnt: any, item: any) {
292
+ ctxMenuMouseoutEvent (evnt: Event, item: VxeTableDefines.MenuFirstOption | VxeTableDefines.MenuChildOption) {
293
293
  const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
294
294
  const reactData = $xeTable as unknown as TableReactData
295
295
 
@@ -302,14 +302,14 @@ export default {
302
302
  /**
303
303
  * 快捷菜单点击事件
304
304
  */
305
- ctxMenuLinkEvent (evnt: any, menu: any) {
305
+ ctxMenuLinkEvent (evnt: Event, menu: VxeTableDefines.MenuFirstOption | VxeTableDefines.MenuChildOption) {
306
306
  const $xeTable = this as unknown as VxeTableConstructor & VxeTablePrivateMethods
307
307
  const $xeGrid = $xeTable.$xeGrid
308
308
  const $xeGantt = $xeTable.$xeGantt
309
309
  const internalData = $xeTable as unknown as TableInternalData
310
310
 
311
311
  // 如果一级菜单有配置 code 则允许点击,否则不能点击
312
- if (!menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
312
+ if (!menu.loading && !menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
313
313
  const gMenuOpts = menus.get(menu.code)
314
314
  const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt })
315
315
  if (gMenuOpts && gMenuOpts.menuMethod) {
@@ -6,7 +6,7 @@ import { getSlotVNs } from '../../../ui/src/vn'
6
6
 
7
7
  import type { VxeTableConstructor, VxeTablePrivateMethods, TableReactData } from '../../../../types'
8
8
 
9
- const { getIcon, renderEmptyElement } = VxeUI
9
+ const { getIcon, getI18n, renderEmptyElement } = VxeUI
10
10
 
11
11
  export default {
12
12
  name: 'VxeTableMenuPanel',
@@ -60,7 +60,8 @@ export default {
60
60
  class: 'vxe-context-menu--option-wrapper',
61
61
  key: gIndex
62
62
  }, options.map((item, index) => {
63
- const hasChildMenus = item.children && item.children.some((child) => child.visible !== false)
63
+ const { children, loading } = item
64
+ const hasChildMenus = children && children.some((child) => child.visible !== false)
64
65
  const prefixOpts = Object.assign({}, item.prefixConfig)
65
66
  const prefixIcon = prefixOpts.icon || item.prefixIcon
66
67
  const suffixOpts = Object.assign({}, item.suffixConfig)
@@ -70,6 +71,7 @@ export default {
70
71
  ? renderEmptyElement($xeTable)
71
72
  : h('li', {
72
73
  class: [item.className, {
74
+ 'link--loading': loading,
73
75
  'link--disabled': item.disabled,
74
76
  'link--active': item === ctxMenuStore.selected
75
77
  }],
@@ -92,11 +94,17 @@ export default {
92
94
  h('div', {
93
95
  class: ['vxe-context-menu--link-prefix', prefixOpts.className || '']
94
96
  }, [
95
- prefixIcon && XEUtils.isFunction(prefixIcon)
96
- ? h('span', {}, getSlotVNs(prefixIcon.call($xeTable, {})))
97
- : h('i', {
98
- class: prefixIcon
99
- }),
97
+ loading
98
+ ? h('span', {
99
+ class: getIcon('TABLE_MENU_OPTION_LOADING')
100
+ })
101
+ : (prefixIcon && XEUtils.isFunction(prefixIcon)
102
+ ? h('span', {}, getSlotVNs(prefixIcon.call($xeTable, {})))
103
+ : h('span', {}, [
104
+ h('i', {
105
+ class: prefixIcon
106
+ })
107
+ ])),
100
108
  prefixOpts.content ? h('span', {}, `${prefixOpts.content}`) : renderEmptyElement($xeTable)
101
109
  ]),
102
110
  h('span', {
@@ -104,7 +112,7 @@ export default {
104
112
  attrs: {
105
113
  title: menuContent
106
114
  }
107
- }, menuContent),
115
+ }, loading ? getI18n('vxe.table.menuLoading') : menuContent),
108
116
  h('div', {
109
117
  class: ['vxe-context-menu--link-suffix', suffixOpts.className || '']
110
118
  }, [
@@ -122,6 +130,7 @@ export default {
122
130
  'is--show': item === ctxMenuStore.selected && ctxMenuStore.showChild
123
131
  }]
124
132
  }, item.children.map((child, cIndex) => {
133
+ const { loading: childLoading } = child
125
134
  const childPrefixOpts = Object.assign({}, child.prefixConfig)
126
135
  const childPrefixIcon = childPrefixOpts.icon || child.prefixIcon
127
136
  const childSuffixOpts = Object.assign({}, child.suffixConfig)
@@ -131,6 +140,7 @@ export default {
131
140
  ? null
132
141
  : h('li', {
133
142
  class: [child.className, {
143
+ 'link--loading': childLoading,
134
144
  'link--disabled': child.disabled,
135
145
  'link--active': child === ctxMenuStore.selectChild
136
146
  }],
@@ -153,11 +163,17 @@ export default {
153
163
  h('div', {
154
164
  class: ['vxe-context-menu--link-prefix', childPrefixOpts.className || '']
155
165
  }, [
156
- childPrefixIcon && XEUtils.isFunction(childPrefixIcon)
157
- ? h('span', {}, getSlotVNs(childPrefixIcon.call($xeTable, {})))
158
- : h('i', {
159
- class: childPrefixIcon
160
- }),
166
+ child.loading
167
+ ? h('span', {
168
+ class: getIcon('TABLE_MENU_OPTION_LOADING')
169
+ })
170
+ : (childPrefixIcon && XEUtils.isFunction(childPrefixIcon)
171
+ ? h('span', {}, getSlotVNs(childPrefixIcon({})))
172
+ : h('span', {}, [
173
+ h('i', {
174
+ class: childPrefixIcon
175
+ })
176
+ ])),
161
177
  childPrefixOpts.content ? h('span', `${childPrefixOpts.content}`) : renderEmptyElement($xeTable)
162
178
  ]),
163
179
  h('span', {
@@ -165,7 +181,7 @@ export default {
165
181
  attrs: {
166
182
  title: childMenuContent
167
183
  }
168
- }, childMenuContent),
184
+ }, childLoading ? getI18n('vxe.table.menuLoading') : childMenuContent),
169
185
  h('div', {
170
186
  class: ['vxe-context-menu--link-suffix', childSuffixOpts.className || '']
171
187
  }, [
@@ -342,6 +342,7 @@ VxeUI.setIcon({
342
342
  TABLE_RADIO_DISABLED_UNCHECKED: iconPrefix + 'radio-unchecked-fill',
343
343
  TABLE_CUSTOM_SORT: iconPrefix + 'drag-handle',
344
344
  TABLE_MENU_OPTIONS: iconPrefix + 'arrow-right',
345
+ TABLE_MENU_OPTION_LOADING: iconPrefix + 'repeat roll',
345
346
  TABLE_DRAG_ROW: iconPrefix + 'drag-handle',
346
347
  TABLE_DRAG_COLUMN: iconPrefix + 'drag-handle',
347
348
  TABLE_DRAG_STATUS_ROW: iconPrefix + 'sort',
@@ -61,6 +61,7 @@
61
61
  color: #2B2B2B;
62
62
  }
63
63
  }
64
+ &.link--loading,
64
65
  &.link--disabled {
65
66
  & > .vxe-context-menu--link {
66
67
  color: var(--vxe-ui-font-disabled-color);