vxe-table 4.19.8 → 4.19.10

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 (139) hide show
  1. package/dist/all.esm.js +219 -28
  2. package/dist/style.css +1 -1
  3. package/es/grid/src/grid.js +1 -1
  4. package/es/locale/lang/ar-EG.js +9 -9
  5. package/es/locale/lang/de-DE.js +8 -8
  6. package/es/locale/lang/en-US.js +8 -8
  7. package/es/locale/lang/es-ES.js +10 -10
  8. package/es/locale/lang/fr-FR.js +10 -10
  9. package/es/locale/lang/hu-HU.js +9 -9
  10. package/es/locale/lang/hy-AM.js +1 -1
  11. package/es/locale/lang/id-ID.js +10 -10
  12. package/es/locale/lang/it-IT.js +10 -10
  13. package/es/locale/lang/ja-JP.js +10 -10
  14. package/es/locale/lang/ko-KR.js +9 -9
  15. package/es/locale/lang/ms-MY.js +10 -10
  16. package/es/locale/lang/nb-NO.js +9 -9
  17. package/es/locale/lang/pt-BR.js +10 -10
  18. package/es/locale/lang/ru-RU.js +10 -10
  19. package/es/locale/lang/th-TH.js +9 -9
  20. package/es/locale/lang/ug-CN.js +9 -9
  21. package/es/locale/lang/uk-UA.js +10 -10
  22. package/es/locale/lang/uz-UZ.js +10 -10
  23. package/es/locale/lang/vi-VN.js +10 -10
  24. package/es/style.css +1 -1
  25. package/es/table/render/index.js +153 -14
  26. package/es/table/src/body.js +11 -11
  27. package/es/table/src/table.js +51 -0
  28. package/es/table/src/util.js +1 -0
  29. package/es/ui/index.js +1 -1
  30. package/es/ui/src/log.js +1 -1
  31. package/lib/grid/src/grid.js +1 -1
  32. package/lib/grid/src/grid.min.js +1 -1
  33. package/lib/index.umd.js +279 -31
  34. package/lib/index.umd.min.js +1 -1
  35. package/lib/locale/lang/ar-EG.js +9 -9
  36. package/lib/locale/lang/ar-EG.min.js +1 -1
  37. package/lib/locale/lang/ar-EG.umd.js +9 -9
  38. package/lib/locale/lang/de-DE.js +8 -8
  39. package/lib/locale/lang/de-DE.min.js +1 -1
  40. package/lib/locale/lang/de-DE.umd.js +8 -8
  41. package/lib/locale/lang/en-US.js +8 -8
  42. package/lib/locale/lang/en-US.min.js +1 -1
  43. package/lib/locale/lang/en-US.umd.js +8 -8
  44. package/lib/locale/lang/es-ES.js +10 -10
  45. package/lib/locale/lang/es-ES.min.js +1 -1
  46. package/lib/locale/lang/es-ES.umd.js +10 -10
  47. package/lib/locale/lang/fr-FR.js +10 -10
  48. package/lib/locale/lang/fr-FR.min.js +1 -1
  49. package/lib/locale/lang/fr-FR.umd.js +10 -10
  50. package/lib/locale/lang/hu-HU.js +9 -9
  51. package/lib/locale/lang/hu-HU.min.js +1 -1
  52. package/lib/locale/lang/hu-HU.umd.js +9 -9
  53. package/lib/locale/lang/hy-AM.js +1 -1
  54. package/lib/locale/lang/hy-AM.min.js +1 -1
  55. package/lib/locale/lang/hy-AM.umd.js +1 -1
  56. package/lib/locale/lang/id-ID.js +10 -10
  57. package/lib/locale/lang/id-ID.min.js +1 -1
  58. package/lib/locale/lang/id-ID.umd.js +10 -10
  59. package/lib/locale/lang/it-IT.js +10 -10
  60. package/lib/locale/lang/it-IT.min.js +1 -1
  61. package/lib/locale/lang/it-IT.umd.js +10 -10
  62. package/lib/locale/lang/ja-JP.js +10 -10
  63. package/lib/locale/lang/ja-JP.min.js +1 -1
  64. package/lib/locale/lang/ja-JP.umd.js +10 -10
  65. package/lib/locale/lang/ko-KR.js +9 -9
  66. package/lib/locale/lang/ko-KR.min.js +1 -1
  67. package/lib/locale/lang/ko-KR.umd.js +9 -9
  68. package/lib/locale/lang/ms-MY.js +10 -10
  69. package/lib/locale/lang/ms-MY.min.js +1 -1
  70. package/lib/locale/lang/ms-MY.umd.js +10 -10
  71. package/lib/locale/lang/nb-NO.js +9 -9
  72. package/lib/locale/lang/nb-NO.min.js +1 -1
  73. package/lib/locale/lang/nb-NO.umd.js +9 -9
  74. package/lib/locale/lang/pt-BR.js +10 -10
  75. package/lib/locale/lang/pt-BR.min.js +1 -1
  76. package/lib/locale/lang/pt-BR.umd.js +10 -10
  77. package/lib/locale/lang/ru-RU.js +10 -10
  78. package/lib/locale/lang/ru-RU.min.js +1 -1
  79. package/lib/locale/lang/ru-RU.umd.js +10 -10
  80. package/lib/locale/lang/th-TH.js +9 -9
  81. package/lib/locale/lang/th-TH.min.js +1 -1
  82. package/lib/locale/lang/th-TH.umd.js +9 -9
  83. package/lib/locale/lang/ug-CN.js +9 -9
  84. package/lib/locale/lang/ug-CN.min.js +1 -1
  85. package/lib/locale/lang/ug-CN.umd.js +9 -9
  86. package/lib/locale/lang/uk-UA.js +10 -10
  87. package/lib/locale/lang/uk-UA.min.js +1 -1
  88. package/lib/locale/lang/uk-UA.umd.js +10 -10
  89. package/lib/locale/lang/uz-UZ.js +10 -10
  90. package/lib/locale/lang/uz-UZ.min.js +1 -1
  91. package/lib/locale/lang/uz-UZ.umd.js +10 -10
  92. package/lib/locale/lang/vi-VN.js +10 -10
  93. package/lib/locale/lang/vi-VN.min.js +1 -1
  94. package/lib/locale/lang/vi-VN.umd.js +10 -10
  95. package/lib/style.css +1 -1
  96. package/lib/table/render/index.js +259 -15
  97. package/lib/table/render/index.min.js +1 -1
  98. package/lib/table/src/body.js +11 -11
  99. package/lib/table/src/body.min.js +1 -1
  100. package/lib/table/src/table.js +2 -2
  101. package/lib/table/src/table.min.js +1 -1
  102. package/lib/table/src/util.js +1 -0
  103. package/lib/table/src/util.min.js +1 -1
  104. package/lib/ui/index.js +1 -1
  105. package/lib/ui/index.min.js +1 -1
  106. package/lib/ui/src/log.js +1 -1
  107. package/lib/ui/src/log.min.js +1 -1
  108. package/package.json +2 -2
  109. package/packages/grid/src/grid.ts +1 -1
  110. package/packages/locale/lang/ar-EG.ts +9 -9
  111. package/packages/locale/lang/de-DE.ts +8 -8
  112. package/packages/locale/lang/en-US.ts +8 -8
  113. package/packages/locale/lang/es-ES.ts +10 -10
  114. package/packages/locale/lang/fr-FR.ts +10 -10
  115. package/packages/locale/lang/hu-HU.ts +9 -9
  116. package/packages/locale/lang/hy-AM.ts +1 -1
  117. package/packages/locale/lang/id-ID.ts +10 -10
  118. package/packages/locale/lang/it-IT.ts +10 -10
  119. package/packages/locale/lang/ja-JP.ts +10 -10
  120. package/packages/locale/lang/ko-KR.ts +9 -9
  121. package/packages/locale/lang/ms-MY.ts +10 -10
  122. package/packages/locale/lang/nb-NO.ts +9 -9
  123. package/packages/locale/lang/pt-BR.ts +10 -10
  124. package/packages/locale/lang/ru-RU.ts +10 -10
  125. package/packages/locale/lang/th-TH.ts +9 -9
  126. package/packages/locale/lang/ug-CN.ts +9 -9
  127. package/packages/locale/lang/uk-UA.ts +10 -10
  128. package/packages/locale/lang/uz-UZ.ts +10 -10
  129. package/packages/locale/lang/vi-VN.ts +10 -10
  130. package/packages/table/render/index.ts +156 -15
  131. package/packages/table/src/body.ts +13 -13
  132. package/packages/table/src/table.ts +53 -0
  133. package/packages/table/src/util.ts +2 -0
  134. /package/es/{iconfont.1780726776354.ttf → iconfont.1780911752570.ttf} +0 -0
  135. /package/es/{iconfont.1780726776354.woff → iconfont.1780911752570.woff} +0 -0
  136. /package/es/{iconfont.1780726776354.woff2 → iconfont.1780911752570.woff2} +0 -0
  137. /package/lib/{iconfont.1780726776354.ttf → iconfont.1780911752570.ttf} +0 -0
  138. /package/lib/{iconfont.1780726776354.woff → iconfont.1780911752570.woff} +0 -0
  139. /package/lib/{iconfont.1780726776354.woff2 → iconfont.1780911752570.woff2} +0 -0
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'Ingen data ennå',
66
66
  allTitle: 'Velg alle/avbryt',
67
- seqTitle: 'Serienummer',
67
+ seqTitle: '#',
68
68
  actionTitle: 'operere',
69
69
  confirmFilter: 'filter',
70
70
  resetFilter: 'Tilbakestill',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Sortere',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Kolonnetittel',
171
- colResizable: 'Kolonnebredde (piksler)',
172
- colVisible: 'Om du skal vise',
173
- colFixed: 'Frysekolonne',
174
- colFixedMax: 'Frys kolonner (opp til {0} kolonner)',
175
- fixedLeft: 'Venstre side',
176
- fixedUnset: 'Ikke satt',
177
- fixedRight: 'Høyre side',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'Ainda não há dados',
66
66
  allTitle: 'Selecione tudo/Cancelar',
67
- seqTitle: 'Número de série',
67
+ seqTitle: 'Número',
68
68
  actionTitle: 'operar',
69
69
  confirmFilter: 'filtro',
70
70
  resetFilter: 'Reiniciar',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Organizar',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Título da coluna',
171
- colResizable: 'Largura da coluna (pixels)',
172
- colVisible: 'Se deve exibir',
173
- colFixed: 'Coluna de congelamento',
174
- colFixedMax: 'Colunas congeladas (até {0} colunas)',
175
- fixedLeft: 'Lado esquerdo',
176
- fixedUnset: 'Não definido',
177
- fixedRight: 'Lado direito',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -508,7 +508,7 @@ export default {
508
508
  fontBold: 'Audacioso'
509
509
  },
510
510
  subtableProp: {
511
- seqTitle: 'Número de série',
511
+ seqTitle: 'Número',
512
512
  showSeq: 'Mostre número de série',
513
513
  showCheckbox: 'Várias opções são permitidas',
514
514
  errSubDrag: 'O subtable não suporta esse controle, use outros controles',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'Нет данных пока',
66
66
  allTitle: 'Выберите все/отменить',
67
- seqTitle: 'Серийный номер',
67
+ seqTitle: '#',
68
68
  actionTitle: 'работать',
69
69
  confirmFilter: 'фильтр',
70
70
  resetFilter: 'Перезагрузить',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Сортировка',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Заголовок столбца',
171
- colResizable: 'Ширина столбца (пиксели)',
172
- colVisible: 'Отображать ли',
173
- colFixed: 'Замораживание колонки',
174
- colFixedMax: 'Столбцы замораживания (до {0} столбцы)',
175
- fixedLeft: 'Левая сторона',
176
- fixedUnset: 'Не установлен',
177
- fixedRight: 'Правая сторона',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -508,7 +508,7 @@ export default {
508
508
  fontBold: 'Смелый'
509
509
  },
510
510
  subtableProp: {
511
- seqTitle: 'Серийный номер',
511
+ seqTitle: 'Серийный',
512
512
  showSeq: 'Показать серийный номер',
513
513
  showCheckbox: 'Разрешено несколько вариантов',
514
514
  errSubDrag: 'Подтабл не поддерживает это управление, используйте другие элементы управления',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'ยังไม่มีข้อมูล',
66
66
  allTitle: 'เลือกทั้งหมด/ยกเลิก',
67
- seqTitle: 'หมายเลขซีเรียล',
67
+ seqTitle: '#',
68
68
  actionTitle: 'ดำเนินงาน',
69
69
  confirmFilter: 'กรอง',
70
70
  resetFilter: 'รีเซ็ต',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'เรียงลำดับ',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'ชื่อคอลัมน์',
171
- colResizable: 'ความกว้างของคอลัมน์ (พิกเซล)',
172
- colVisible: 'ไม่ว่าจะแสดง',
173
- colFixed: 'คอลัมน์แช่แข็ง',
174
- colFixedMax: 'คอลัมน์แช่แข็ง (คอลัมน์ {0} สูงสุด)',
175
- fixedLeft: 'ด้านซ้าย',
176
- fixedUnset: 'ไม่ได้ตั้งค่า',
177
- fixedRight: 'ด้านขวา',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'ھازىرچە ئۇچۇر يوق',
66
66
  allTitle: 'ھەممىنى تاللاش/قالدۇرۇش',
67
- seqTitle: 'تەرتىپ',
67
+ seqTitle: '#',
68
68
  actionTitle: 'مەشخۇلات',
69
69
  confirmFilter: 'تاسقاش',
70
70
  resetFilter: 'ئەسلىگە كەلتۈرۈش',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'تەرتىپلەش',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: '列标题',
171
- colResizable: 'قۇر كەڭلىڭى(پېكسىل)',
172
- colVisible: 'كۆرۈنەمدۇ-كۆرۈنمەمدۇ',
173
- colFixed: 'قۇرنى توڭلىتىش',
174
- colFixedMax: 'قۇر توڭلىتىش(ئەڭ كۆپ بولغاندا {0} قۇر)',
175
- fixedLeft: 'سول يان',
176
- fixedUnset: 'تەڭشىمەيمەن',
177
- fixedRight: 'ئوڭ يان',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'Ще немає даних',
66
66
  allTitle: 'Виберіть усі/Скасувати',
67
- seqTitle: 'Серійний номер',
67
+ seqTitle: '#',
68
68
  actionTitle: 'діяти',
69
69
  confirmFilter: 'фільтрувати',
70
70
  resetFilter: 'Скинути',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Сортувати',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Заголовок стовпців',
171
- colResizable: 'Ширина стовпця (пікселі)',
172
- colVisible: 'Чи відображати',
173
- colFixed: 'Заморожування стовпчика',
174
- colFixedMax: 'Заморожування стовпців (до {0} стовпців)',
175
- fixedLeft: 'Лівий бік',
176
- fixedUnset: 'Не встановити',
177
- fixedRight: 'Правий бік',
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -508,7 +508,7 @@ export default {
508
508
  fontBold: 'Сміливий'
509
509
  },
510
510
  subtableProp: {
511
- seqTitle: 'Серійний номер',
511
+ seqTitle: 'Серійний',
512
512
  showSeq: 'Покажіть серійний номер',
513
513
  showCheckbox: 'Дозволено кілька варіантів',
514
514
  errSubDrag: 'Підкладка не підтримує цей контроль, будь ласка, використовуйте інші елементи управління',
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: "Hali ma'lumot yo'q",
66
66
  allTitle: 'Hamma / Bekor qilish-ni tanlang',
67
- seqTitle: 'Ishlab chiqarish raqami',
67
+ seqTitle: '#',
68
68
  actionTitle: 'ishlamoq',
69
69
  confirmFilter: 'filtrlamoq',
70
70
  resetFilter: "Qayta o'rnatmoq",
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Tartib',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Ustun unvon',
171
- colResizable: 'Ustun kengligi (piksellar)',
172
- colVisible: "Ko'rsatish kerakmi",
173
- colFixed: 'Muzlatish ustuni',
174
- colFixedMax: 'Ustunlarni muzlatgich ({0} ustunlargacha)',
175
- fixedLeft: 'Chap tomon',
176
- fixedUnset: "O'rnatilmagan",
177
- fixedRight: "O'ng tomon",
170
+ colTitle: 'Title',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Visible',
173
+ colFixed: 'Freeze',
174
+ colFixedMax: 'Freeze (up to {0} columns)',
175
+ fixedLeft: 'Left',
176
+ fixedUnset: 'Not set​',
177
+ fixedRight: 'Right',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -508,7 +508,7 @@ export default {
508
508
  fontBold: 'Jasur'
509
509
  },
510
510
  subtableProp: {
511
- seqTitle: 'Ishlab chiqarish raqami',
511
+ seqTitle: '序号',
512
512
  showSeq: "Seriya raqamini ko'rsating",
513
513
  showCheckbox: 'Bir nechta tanlovga ruxsat beriladi',
514
514
  errSubDrag: "So'rg'lantiriladigan bu nazoratni qo'llab-quvvatlamaydi, iltimos, boshqa boshqaruvlardan foydalaning",
@@ -64,7 +64,7 @@ export default {
64
64
  table: {
65
65
  emptyText: 'Chưa có dữ liệu',
66
66
  allTitle: 'Chọn tất cả/Hủy',
67
- seqTitle: 'Số seri',
67
+ seqTitle: 'Số',
68
68
  actionTitle: 'vận hành',
69
69
  confirmFilter: 'lọc',
70
70
  resetFilter: 'Cài lại',
@@ -167,14 +167,14 @@ export default {
167
167
  setting: {
168
168
  colSort: 'Loại',
169
169
  sortHelpTip: '点击图标开始拖动',
170
- colTitle: 'Tiêu đề cột',
171
- colResizable: 'Chiều rộng cột (pixel)',
172
- colVisible: ' hiển thị không',
173
- colFixed: 'Đóng băng cột',
174
- colFixedMax: 'Các cột đóng băng (tối đa {0} cột)',
175
- fixedLeft: 'Bên trái',
176
- fixedUnset: 'Không đặt',
177
- fixedRight: 'Bên phải',
170
+ colTitle: 'Tiêu đề',
171
+ colResizable: 'Width (pixels)',
172
+ colVisible: 'Chiều rộng (pixels)',
173
+ colFixed: 'Sử dụn',
174
+ colFixedMax: 'Sử dụng (lên đến {0})',
175
+ fixedLeft: 'Trái',
176
+ fixedUnset: 'Không',
177
+ fixedRight: 'Đúng',
178
178
  moveUp: '上移',
179
179
  moveDn: '下移',
180
180
  putTop: '置顶',
@@ -508,7 +508,7 @@ export default {
508
508
  fontBold: 'In đậm'
509
509
  },
510
510
  subtableProp: {
511
- seqTitle: 'Số seri',
511
+ seqTitle: 'Số',
512
512
  showSeq: 'Hiển thị số sê -ri',
513
513
  showCheckbox: 'Nhiều lựa chọn được cho phép',
514
514
  errSubDrag: 'Subtable không hỗ trợ điều khiển này, vui lòng sử dụng các điều khiển khác',
@@ -897,7 +897,24 @@ renderer.mixin({
897
897
  renderTableEdit: nativeSelectEditRender,
898
898
  renderTableDefault: nativeSelectEditRender,
899
899
  renderTableCell (renderOpts, params) {
900
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params))
900
+ const { options, optionGroups } = renderOpts
901
+ const { $table, row, column } = params
902
+ const opSize = options ? options.length : null
903
+ const ogSize = optionGroups ? optionGroups.length : null
904
+ const { cellResult } = $table.effectCellData(row, column, {
905
+ key: 'render_table_cell',
906
+ isChanged ({ oldValue, cellValue }) {
907
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
908
+ },
909
+ setValue ({ cellValue }) {
910
+ return [cellValue, opSize, ogSize]
911
+ },
912
+ getResult ({ cellValue }) {
913
+ return handleSelectCellValue(cellValue, renderOpts)
914
+ }
915
+ })
916
+ // const cellResult = getSelectCellValue(renderOpts, params)
917
+ return getCellLabelVNs(renderOpts, params, cellResult)
901
918
  },
902
919
  createTableFilterOptions: defaultFilterOptions,
903
920
  renderTableFilter (renderOpts, params) {
@@ -1013,16 +1030,20 @@ renderer.mixin({
1013
1030
  tableAutoFocus: 'input',
1014
1031
  renderTableEdit: defaultEditRender,
1015
1032
  renderTableCell (renderOpts, params) {
1016
- const { props = {} } = renderOpts
1017
- const { row, column } = params
1018
- let cellValue = XEUtils.get(row, column.field)
1019
- if (cellValue) {
1020
- if (props.type !== 'time') {
1021
- cellValue = getLabelFormatDate(cellValue, props)
1033
+ const props = renderOpts.props || {}
1034
+ const { $table, row, column } = params
1035
+ const { cellResult } = $table.effectCellData(row, column, {
1036
+ key: 'render_table_cell',
1037
+ getResult ({ cellValue }) {
1038
+ if (cellValue) {
1039
+ if (props.type !== 'time') {
1040
+ return getLabelFormatDate(cellValue, props)
1041
+ }
1042
+ }
1043
+ return cellValue
1022
1044
  }
1023
- }
1024
-
1025
- return getCellLabelVNs(renderOpts, params, cellValue)
1045
+ })
1046
+ return getCellLabelVNs(renderOpts, params, cellResult)
1026
1047
  },
1027
1048
  tableCellFormatter: handleFormatDatePicker,
1028
1049
  renderTableDefault: defaultEditRender,
@@ -1073,6 +1094,40 @@ renderer.mixin({
1073
1094
  })
1074
1095
  ]
1075
1096
  },
1097
+ renderTableDefault (renderOpts, params) {
1098
+ const { startField, endField } = renderOpts
1099
+ const { row, column } = params
1100
+ const { model } = column
1101
+ const cellValue = getCellValue(row, column)
1102
+ const seProps: Record<string, any> = {}
1103
+ const seOs: Record<string, any> = {}
1104
+ if (startField && endField) {
1105
+ seProps.startValue = XEUtils.get(row, startField)
1106
+ seProps.endValue = XEUtils.get(row, endField)
1107
+ seOs['onUpdate:startValue'] = (value: any) => {
1108
+ if (startField) {
1109
+ XEUtils.set(row, startField, value)
1110
+ }
1111
+ }
1112
+ seOs['onUpdate:endValue'] = (value: any) => {
1113
+ if (endField) {
1114
+ XEUtils.set(row, endField, value)
1115
+ }
1116
+ }
1117
+ }
1118
+ return [
1119
+ h(getDefaultComponent(renderOpts), {
1120
+ ...getCellEditProps(renderOpts, params, cellValue, seProps),
1121
+ ...getComponentOns(renderOpts, params, {
1122
+ model (cellValue) {
1123
+ model.update = true
1124
+ model.value = cellValue
1125
+ setCellValue(row, column, cellValue)
1126
+ }
1127
+ }, seOs)
1128
+ })
1129
+ ]
1130
+ },
1076
1131
  renderTableCell (renderOpts, params) {
1077
1132
  const { startField, endField } = renderOpts
1078
1133
  const { row, column } = params
@@ -1103,6 +1158,7 @@ renderer.mixin({
1103
1158
  },
1104
1159
  VxeTextarea: {
1105
1160
  tableAutoFocus: 'textarea',
1161
+ renderTableDefault: defaultEditRender,
1106
1162
  renderTableEdit: defaultEditRender,
1107
1163
  renderTableCell (renderOpts, params) {
1108
1164
  const { row, column } = params
@@ -1130,7 +1186,24 @@ renderer.mixin({
1130
1186
  renderTableEdit: defaultSelectEditRender,
1131
1187
  renderTableDefault: defaultSelectEditRender,
1132
1188
  renderTableCell (renderOpts, params) {
1133
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params))
1189
+ const { options, optionGroups } = renderOpts
1190
+ const { $table, row, column } = params
1191
+ const opSize = options ? options.length : null
1192
+ const ogSize = optionGroups ? optionGroups.length : null
1193
+ const { cellResult } = $table.effectCellData(row, column, {
1194
+ key: 'render_table_cell',
1195
+ isChanged ({ oldValue, cellValue }) {
1196
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1197
+ },
1198
+ setValue ({ cellValue }) {
1199
+ return [cellValue, opSize, ogSize]
1200
+ },
1201
+ getResult ({ cellValue }) {
1202
+ return handleSelectCellValue(cellValue, renderOpts)
1203
+ }
1204
+ })
1205
+ // const cellResult = getSelectCellValue(renderOpts, params)
1206
+ return getCellLabelVNs(renderOpts, params, cellResult)
1134
1207
  },
1135
1208
  createTableFilterOptions: defaultFilterOptions,
1136
1209
  renderTableFilter (renderOpts, params) {
@@ -1201,7 +1274,24 @@ renderer.mixin({
1201
1274
  },
1202
1275
  FormatSelect: {
1203
1276
  renderTableDefault (renderOpts, params) {
1204
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params))
1277
+ const { options, optionGroups } = renderOpts
1278
+ const { $table, row, column } = params
1279
+ const opSize = options ? options.length : null
1280
+ const ogSize = optionGroups ? optionGroups.length : null
1281
+ const { cellResult } = $table.effectCellData(row, column, {
1282
+ key: 'render_table_cell',
1283
+ isChanged ({ oldValue, cellValue }) {
1284
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1285
+ },
1286
+ setValue ({ cellValue }) {
1287
+ return [cellValue, opSize, ogSize]
1288
+ },
1289
+ getResult ({ cellValue }) {
1290
+ return handleSelectCellValue(cellValue, renderOpts)
1291
+ }
1292
+ })
1293
+ // const cellResult = getSelectCellValue(renderOpts, params)
1294
+ return getCellLabelVNs(renderOpts, params, cellResult)
1205
1295
  },
1206
1296
  tableCellFormatter: handleFormatSelect,
1207
1297
  tableCellCopyMethod: handleFormatSelect,
@@ -1213,7 +1303,24 @@ renderer.mixin({
1213
1303
  tableAutoFocus: 'input',
1214
1304
  renderTableEdit: defaultTableOrTreeSelectEditRender,
1215
1305
  renderTableCell (renderOpts, params) {
1216
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params))
1306
+ const { options, optionGroups } = renderOpts
1307
+ const { $table, row, column } = params
1308
+ const opSize = options ? options.length : null
1309
+ const ogSize = optionGroups ? optionGroups.length : null
1310
+ const { cellResult } = $table.effectCellData(row, column, {
1311
+ key: 'render_table_cell',
1312
+ isChanged ({ oldValue, cellValue }) {
1313
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1314
+ },
1315
+ setValue ({ cellValue }) {
1316
+ return [cellValue, opSize, ogSize]
1317
+ },
1318
+ getResult ({ cellValue }) {
1319
+ return handleTreeSelectCellValue(cellValue, renderOpts)
1320
+ }
1321
+ })
1322
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
1323
+ return getCellLabelVNs(renderOpts, params, cellResult)
1217
1324
  },
1218
1325
  tableCellFormatter: handleFormatTreeSelect,
1219
1326
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -1231,7 +1338,24 @@ renderer.mixin({
1231
1338
  },
1232
1339
  FormatTreeSelect: {
1233
1340
  renderTableDefault (renderOpts, params) {
1234
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params))
1341
+ const { options, optionGroups } = renderOpts
1342
+ const { $table, row, column } = params
1343
+ const opSize = options ? options.length : null
1344
+ const ogSize = optionGroups ? optionGroups.length : null
1345
+ const { cellResult } = $table.effectCellData(row, column, {
1346
+ key: 'render_table_cell',
1347
+ isChanged ({ oldValue, cellValue }) {
1348
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1349
+ },
1350
+ setValue ({ cellValue }) {
1351
+ return [cellValue, opSize, ogSize]
1352
+ },
1353
+ getResult ({ cellValue }) {
1354
+ return handleTreeSelectCellValue(cellValue, renderOpts)
1355
+ }
1356
+ })
1357
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
1358
+ return getCellLabelVNs(renderOpts, params, cellResult)
1235
1359
  },
1236
1360
  tableCellFormatter: handleFormatTreeSelect,
1237
1361
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -1242,7 +1366,24 @@ renderer.mixin({
1242
1366
  tableAutoFocus: 'input',
1243
1367
  renderTableEdit: defaultTableOrTreeSelectEditRender,
1244
1368
  renderTableCell (renderOpts, params) {
1245
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params))
1369
+ const { options, optionGroups } = renderOpts
1370
+ const { $table, row, column } = params
1371
+ const opSize = options ? options.length : null
1372
+ const ogSize = optionGroups ? optionGroups.length : null
1373
+ const { cellResult } = $table.effectCellData(row, column, {
1374
+ key: 'render_table_cell',
1375
+ isChanged ({ oldValue, cellValue }) {
1376
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1377
+ },
1378
+ setValue ({ cellValue }) {
1379
+ return [cellValue, opSize, ogSize]
1380
+ },
1381
+ getResult ({ cellValue }) {
1382
+ return handleTreeSelectCellValue(cellValue, renderOpts)
1383
+ }
1384
+ })
1385
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
1386
+ return getCellLabelVNs(renderOpts, params, cellResult)
1246
1387
  },
1247
1388
  tableCellFormatter: handleFormatTreeSelect,
1248
1389
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -376,11 +376,23 @@ export default defineVxeComponent({
376
376
  }, column.renderCell(cellParams))
377
377
  )
378
378
  }
379
+ tdVNs.push(
380
+ h('div', {
381
+ key: 'tc',
382
+ class: ['vxe-cell', {
383
+ 'c--title': showTitle,
384
+ 'c--tooltip': showTooltip,
385
+ 'c--ellipsis': showEllipsis
386
+ }],
387
+ style: tcStyle,
388
+ title: showTitle ? $xeTable.getCellLabel(row, column) : null
389
+ }, clVNs)
390
+ )
379
391
  if (showValidTip && errorValidItem) {
380
392
  const errRule = errorValidItem.rule
381
393
  const validSlot = slots ? slots.valid : null
382
394
  const validParams = { ...cellParams, ...errorValidItem, rule: errorValidItem }
383
- clVNs.push(
395
+ tdVNs.push(
384
396
  h('div', {
385
397
  key: 'tcv',
386
398
  class: ['vxe-cell--valid-error-tip', getPropClass(validOpts.className, validParams)],
@@ -404,18 +416,6 @@ export default defineVxeComponent({
404
416
  ])
405
417
  )
406
418
  }
407
- tdVNs.push(
408
- h('div', {
409
- key: 'tc',
410
- class: ['vxe-cell', {
411
- 'c--title': showTitle,
412
- 'c--tooltip': showTooltip,
413
- 'c--ellipsis': showEllipsis
414
- }],
415
- style: tcStyle,
416
- title: showTitle ? $xeTable.getCellLabel(row, column) : null
417
- }, clVNs)
418
- )
419
419
  }
420
420
 
421
421
  let showAreaRowStatus = false
@@ -3911,6 +3911,7 @@ export default defineVxeComponent({
3911
3911
  internalData.removeRowMaps = {}
3912
3912
  reactData.removeRowFlag++
3913
3913
  internalData.fullCellHeightMaps = {}
3914
+ internalData.fullCellStoreMaps = {}
3914
3915
  const sYLoad = updateScrollYStatus(fullData)
3915
3916
  // 全量数据
3916
3917
  internalData.tableFullData = fullData
@@ -5427,6 +5428,58 @@ export default defineVxeComponent({
5427
5428
  }
5428
5429
  return nextTick()
5429
5430
  },
5431
+ effectCellData (row, column, options) {
5432
+ const { fullCellStoreMaps } = internalData
5433
+ const editOpts = computeEditOpts.value
5434
+ const { key, isChanged, setValue, getResult } = options
5435
+ const rowid = getRowid($xeTable, row)
5436
+ const colid = column.id
5437
+ let rowStore = fullCellStoreMaps[rowid]
5438
+ const cellValue = XEUtils.get(row, column.field)
5439
+ const restParams: VxeTableDefines.CellCacheHandleParams = {
5440
+ $table: $xeTable,
5441
+ row,
5442
+ rowid,
5443
+ column,
5444
+ colid,
5445
+ cellValue,
5446
+ oldValue: null
5447
+ }
5448
+
5449
+ if (editOpts.cache === false && key === 'render_table_cell') {
5450
+ const rest = restParams as VxeTableDefines.CellCacheResultObj
5451
+ rest.cellResult = getResult ? getResult(restParams) : cellValue
5452
+ return rest
5453
+ }
5454
+
5455
+ if (!rowStore) {
5456
+ rowStore = {}
5457
+ fullCellStoreMaps[rowid] = rowStore
5458
+ }
5459
+ let cellStore = rowStore[colid]
5460
+ if (!cellStore) {
5461
+ cellStore = {
5462
+ value: undefined,
5463
+ result: {}
5464
+ }
5465
+ rowStore[colid] = cellStore
5466
+ }
5467
+ const restData = rowStore[colid]
5468
+ const oldValue = restData.value
5469
+ restParams.oldValue = oldValue
5470
+ if (isChanged ? !isChanged(restParams) : oldValue !== cellValue) {
5471
+ restData.value = setValue ? setValue(restParams) : cellValue
5472
+ restData.result = {}
5473
+ }
5474
+ const storeData = restData.result
5475
+ if (XEUtils.isUndefined(storeData[key])) {
5476
+ storeData[key] = getResult ? getResult(restParams) : cellValue
5477
+ }
5478
+ const cellResult = storeData[key]
5479
+ const rest = restParams as VxeTableDefines.CellCacheResultObj
5480
+ rest.cellResult = cellResult
5481
+ return rest
5482
+ },
5430
5483
  getCellElement (row, fieldOrColumn) {
5431
5484
  const { elemStore } = internalData
5432
5485
  const column = handleFieldOrColumn($xeTable, fieldOrColumn)
@@ -92,6 +92,8 @@ export function createInternalData (): TableInternalData {
92
92
  fullColumnFieldData: {},
93
93
  fullCellHeightMaps: {},
94
94
 
95
+ fullCellStoreMaps: {},
96
+
95
97
  // 当前行
96
98
  currentRow: null,
97
99