vxe-pc-ui 4.14.21 → 4.14.23

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 (150) hide show
  1. package/dist/all.esm.js +41993 -0
  2. package/dist/style.css +1 -0
  3. package/dist/style.min.css +1 -0
  4. package/es/form/src/form.js +2 -1
  5. package/es/form/src/render.js +1 -1
  6. package/es/language/ar-EG.js +4 -0
  7. package/es/language/de-DE.js +4 -0
  8. package/es/language/en-US.js +4 -0
  9. package/es/language/es-ES.js +4 -0
  10. package/es/language/fr-FR.js +4 -0
  11. package/es/language/hu-HU.js +4 -0
  12. package/es/language/hy-AM.js +4 -0
  13. package/es/language/id-ID.js +4 -0
  14. package/es/language/it-IT.js +4 -0
  15. package/es/language/ja-JP.js +4 -0
  16. package/es/language/ko-KR.js +4 -0
  17. package/es/language/ms-MY.js +4 -0
  18. package/es/language/nb-NO.js +4 -0
  19. package/es/language/pt-BR.js +4 -0
  20. package/es/language/ru-RU.js +4 -0
  21. package/es/language/th-TH.js +4 -0
  22. package/es/language/ug-CN.js +4 -0
  23. package/es/language/uk-UA.js +4 -0
  24. package/es/language/uz-UZ.js +4 -0
  25. package/es/language/vi-VN.js +4 -0
  26. package/es/language/zh-CHT.js +4 -0
  27. package/es/language/zh-CN.js +4 -0
  28. package/es/tabs/src/tabs.js +4 -1
  29. package/es/ui/index.js +1 -1
  30. package/es/ui/src/log.js +1 -1
  31. package/lib/form/src/form.js +2 -1
  32. package/lib/form/src/form.min.js +1 -1
  33. package/lib/form/src/render.js +1 -1
  34. package/lib/form/src/render.min.js +1 -1
  35. package/lib/index.umd.js +14 -5
  36. package/lib/index.umd.min.js +1 -1
  37. package/lib/language/ar-EG.js +4 -0
  38. package/lib/language/ar-EG.min.js +1 -1
  39. package/lib/language/ar-EG.umd.js +4 -0
  40. package/lib/language/de-DE.js +4 -0
  41. package/lib/language/de-DE.min.js +1 -1
  42. package/lib/language/de-DE.umd.js +4 -0
  43. package/lib/language/en-US.js +4 -0
  44. package/lib/language/en-US.min.js +1 -1
  45. package/lib/language/en-US.umd.js +4 -0
  46. package/lib/language/es-ES.js +4 -0
  47. package/lib/language/es-ES.min.js +1 -1
  48. package/lib/language/es-ES.umd.js +4 -0
  49. package/lib/language/fr-FR.js +4 -0
  50. package/lib/language/fr-FR.min.js +1 -1
  51. package/lib/language/fr-FR.umd.js +4 -0
  52. package/lib/language/hu-HU.js +4 -0
  53. package/lib/language/hu-HU.min.js +1 -1
  54. package/lib/language/hu-HU.umd.js +4 -0
  55. package/lib/language/hy-AM.js +4 -0
  56. package/lib/language/hy-AM.min.js +1 -1
  57. package/lib/language/hy-AM.umd.js +4 -0
  58. package/lib/language/id-ID.js +4 -0
  59. package/lib/language/id-ID.min.js +1 -1
  60. package/lib/language/id-ID.umd.js +4 -0
  61. package/lib/language/it-IT.js +4 -0
  62. package/lib/language/it-IT.min.js +1 -1
  63. package/lib/language/it-IT.umd.js +4 -0
  64. package/lib/language/ja-JP.js +4 -0
  65. package/lib/language/ja-JP.min.js +1 -1
  66. package/lib/language/ja-JP.umd.js +4 -0
  67. package/lib/language/ko-KR.js +4 -0
  68. package/lib/language/ko-KR.min.js +1 -1
  69. package/lib/language/ko-KR.umd.js +4 -0
  70. package/lib/language/ms-MY.js +4 -0
  71. package/lib/language/ms-MY.min.js +1 -1
  72. package/lib/language/ms-MY.umd.js +4 -0
  73. package/lib/language/nb-NO.js +4 -0
  74. package/lib/language/nb-NO.min.js +1 -1
  75. package/lib/language/nb-NO.umd.js +4 -0
  76. package/lib/language/pt-BR.js +4 -0
  77. package/lib/language/pt-BR.min.js +1 -1
  78. package/lib/language/pt-BR.umd.js +4 -0
  79. package/lib/language/ru-RU.js +4 -0
  80. package/lib/language/ru-RU.min.js +1 -1
  81. package/lib/language/ru-RU.umd.js +4 -0
  82. package/lib/language/th-TH.js +4 -0
  83. package/lib/language/th-TH.min.js +1 -1
  84. package/lib/language/th-TH.umd.js +4 -0
  85. package/lib/language/ug-CN.js +4 -0
  86. package/lib/language/ug-CN.min.js +1 -1
  87. package/lib/language/ug-CN.umd.js +4 -0
  88. package/lib/language/uk-UA.js +4 -0
  89. package/lib/language/uk-UA.min.js +1 -1
  90. package/lib/language/uk-UA.umd.js +4 -0
  91. package/lib/language/uz-UZ.js +4 -0
  92. package/lib/language/uz-UZ.min.js +1 -1
  93. package/lib/language/uz-UZ.umd.js +4 -0
  94. package/lib/language/vi-VN.js +4 -0
  95. package/lib/language/vi-VN.min.js +1 -1
  96. package/lib/language/vi-VN.umd.js +4 -0
  97. package/lib/language/zh-CHT.js +4 -0
  98. package/lib/language/zh-CHT.min.js +1 -1
  99. package/lib/language/zh-CHT.umd.js +4 -0
  100. package/lib/language/zh-CN.js +4 -0
  101. package/lib/language/zh-CN.min.js +1 -1
  102. package/lib/language/zh-CN.umd.js +4 -0
  103. package/lib/tabs/src/tabs.js +5 -1
  104. package/lib/tabs/src/tabs.min.js +1 -1
  105. package/lib/ui/index.js +1 -1
  106. package/lib/ui/index.min.js +1 -1
  107. package/lib/ui/src/log.js +1 -1
  108. package/lib/ui/src/log.min.js +1 -1
  109. package/package.json +5 -2
  110. package/packages/form/src/form.ts +2 -1
  111. package/packages/form/src/render.ts +1 -1
  112. package/packages/language/ar-EG.ts +4 -0
  113. package/packages/language/de-DE.ts +4 -0
  114. package/packages/language/en-US.ts +4 -0
  115. package/packages/language/es-ES.ts +4 -0
  116. package/packages/language/fr-FR.ts +4 -0
  117. package/packages/language/hu-HU.ts +4 -0
  118. package/packages/language/hy-AM.ts +4 -0
  119. package/packages/language/id-ID.ts +4 -0
  120. package/packages/language/it-IT.ts +4 -0
  121. package/packages/language/ja-JP.ts +4 -0
  122. package/packages/language/ko-KR.ts +4 -0
  123. package/packages/language/ms-MY.ts +4 -0
  124. package/packages/language/nb-NO.ts +4 -0
  125. package/packages/language/pt-BR.ts +4 -0
  126. package/packages/language/ru-RU.ts +4 -0
  127. package/packages/language/th-TH.ts +4 -0
  128. package/packages/language/ug-CN.ts +4 -0
  129. package/packages/language/uk-UA.ts +4 -0
  130. package/packages/language/uz-UZ.ts +4 -0
  131. package/packages/language/vi-VN.ts +4 -0
  132. package/packages/language/zh-CHT.ts +4 -0
  133. package/packages/language/zh-CN.ts +4 -0
  134. package/packages/tabs/src/tabs.ts +4 -1
  135. package/types/components/colgroup.d.ts +3 -71
  136. package/types/components/column.d.ts +6 -0
  137. package/types/components/form-item.d.ts +1 -1
  138. package/types/components/table.d.ts +30 -8
  139. /package/es/icon/{iconfont.1779687105351.ttf → iconfont.1779801338819.ttf} +0 -0
  140. /package/es/icon/{iconfont.1779687105351.woff → iconfont.1779801338819.woff} +0 -0
  141. /package/es/icon/{iconfont.1779687105351.woff2 → iconfont.1779801338819.woff2} +0 -0
  142. /package/es/{iconfont.1779687105351.ttf → iconfont.1779801338819.ttf} +0 -0
  143. /package/es/{iconfont.1779687105351.woff → iconfont.1779801338819.woff} +0 -0
  144. /package/es/{iconfont.1779687105351.woff2 → iconfont.1779801338819.woff2} +0 -0
  145. /package/lib/icon/style/{iconfont.1779687105351.ttf → iconfont.1779801338819.ttf} +0 -0
  146. /package/lib/icon/style/{iconfont.1779687105351.woff → iconfont.1779801338819.woff} +0 -0
  147. /package/lib/icon/style/{iconfont.1779687105351.woff2 → iconfont.1779801338819.woff2} +0 -0
  148. /package/lib/{iconfont.1779687105351.ttf → iconfont.1779801338819.ttf} +0 -0
  149. /package/lib/{iconfont.1779687105351.woff → iconfont.1779801338819.woff} +0 -0
  150. /package/lib/{iconfont.1779687105351.woff2 → iconfont.1779801338819.woff2} +0 -0
@@ -493,7 +493,8 @@ export default defineVxeComponent({
493
493
  const errorRules = [];
494
494
  const syncVailds = [];
495
495
  if (property && formRules) {
496
- const rules = XEUtils.get(formRules, property);
496
+ const item = getItemByField(property);
497
+ const rules = item && item.rules ? item.rules : XEUtils.get(formRules, property);
497
498
  if (rules) {
498
499
  const itemValue = XEUtils.isUndefined(val) ? XEUtils.get(data, property) : val;
499
500
  rules.forEach((rule) => {
@@ -52,7 +52,7 @@ export function getItemClass($xeForm, item, isGroup) {
52
52
  let isRequired = false;
53
53
  let isValid = false;
54
54
  if (!readonly && rules) {
55
- const itemRules = rules[field];
55
+ const itemRules = item.rules ? item.rules : rules[field];
56
56
  if (itemRules && itemRules.length) {
57
57
  isValid = true;
58
58
  isRequired = itemRules.some((rule) => rule.required);
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'إذا كانت موجودة ، يتم دعم الخلايا ذات الهياكل المدمجة',
241
241
  expOptAllExpand: 'توسيع الشجرة',
242
242
  expAllExpandTitle: 'إذا كانت موجودة ، فسيتم دعمها لتوسيع جميع البيانات بالهياكل الهرمية',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'أسلوب',
244
248
  expUseStyleTitle: 'إذا كانت موجودة ، يتم دعم الخلايا ذات الأناقة',
245
249
  expOptOriginal: 'بيانات المصدر',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Wenn vorhanden, werden Zellen mit zusammengeführten Strukturen unterstützt',
241
241
  expOptAllExpand: 'Den Baum erweitern',
242
242
  expAllExpandTitle: 'Wenn es existiert, wird es unterstützt, alle Daten mit hierarchischen Strukturen zu erweitern',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'Stil',
244
248
  expUseStyleTitle: 'Wenn vorhanden, werden Zellen mit Stil unterstützt',
245
249
  expOptOriginal: 'Quelldaten',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'If present, cells with merged structures are supported',
241
241
  expOptAllExpand: 'Expand the tree',
242
242
  expAllExpandTitle: 'If it exists, it is supported to expand all data with hierarchical structures',
243
+ expOptTreeAllExpand: 'Expand tree',
244
+ expTreeAllExpandTitle: 'If present, automatically expand all tree levels',
245
+ expOptRowGroupAllExpand: 'Expand group',
246
+ expRowGroupAllExpandTitle: 'If present, automatically expand all group levels',
243
247
  expOptUseStyle: 'style',
244
248
  expUseStyleTitle: 'If present, cells with style are supported',
245
249
  expOptOriginal: 'Source data',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Si está presente, las células con estructuras fusionadas son compatibles',
241
241
  expOptAllExpand: 'Expandir el árbol',
242
242
  expAllExpandTitle: 'Si existe, es compatible para expandir todos los datos con estructuras jerárquicas',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'estilo',
244
248
  expUseStyleTitle: 'Si está presente, las celdas con estilo son compatibles',
245
249
  expOptOriginal: 'Datos de origen',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Si présents, les cellules avec des structures fusionnées sont soutenues',
241
241
  expOptAllExpand: "Développer l'arbre",
242
242
  expAllExpandTitle: "S'il existe, il est supporté pour étendre toutes les données avec des structures hiérarchiques",
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'style',
244
248
  expUseStyleTitle: 'Si présents, les cellules avec style sont prises en charge',
245
249
  expOptOriginal: 'Données de source',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Ha van jelen, az egyesített struktúrákkal rendelkező sejtek támogatottak',
241
241
  expOptAllExpand: 'Bővítse a fát',
242
242
  expAllExpandTitle: 'Ha létezik, akkor támogatott, hogy az összes adatot hierarchikus struktúrákkal bővítse',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'stílus',
244
248
  expUseStyleTitle: 'Ha van jelen, akkor a stílusú sejtek támogatottak',
245
249
  expOptOriginal: 'Forrásadatok',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: '如果存在,则支持带有合并结构的单元格',
241
241
  expOptAllExpand: '展开树',
242
242
  expAllExpandTitle: '如果存在,则支持将带有层级结构的数据全部展开',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: '样式',
244
248
  expUseStyleTitle: '如果存在,则支持带样式的单元格',
245
249
  expOptOriginal: '源数据',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Jika ada, sel dengan struktur gabungan didukung',
241
241
  expOptAllExpand: 'Perluas pohon',
242
242
  expAllExpandTitle: 'Jika ada, didukung untuk memperluas semua data dengan struktur hierarkis',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'gaya',
244
248
  expUseStyleTitle: 'Jika ada, sel dengan gaya didukung',
245
249
  expOptOriginal: 'Data sumber',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Se presenti, le cellule con strutture unite sono supportate',
241
241
  expOptAllExpand: "Espandere l'albero",
242
242
  expAllExpandTitle: 'Se esiste, è supportato per espandere tutti i dati con strutture gerarchiche',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'stile',
244
248
  expUseStyleTitle: 'Se presenti, le celle con stile sono supportate',
245
249
  expOptOriginal: 'Dati di origine',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: '存在する場合、マージされた構造を持つ細胞がサポートされます',
241
241
  expOptAllExpand: 'ツリーを拡張します',
242
242
  expAllExpandTitle: '存在する場合、階層構造を使用してすべてのデータを拡張することがサポートされています',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'スタイル',
244
248
  expUseStyleTitle: '存在する場合、スタイルのあるセルがサポートされています',
245
249
  expOptOriginal: 'ソースデータ',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: '존재하는 경우, 병합 된 구조를 갖는 세포가지지된다',
241
241
  expOptAllExpand: '나무를 확장하십시오',
242
242
  expAllExpandTitle: '존재하는 경우 계층 구조로 모든 데이터를 확장하도록 지원됩니다.',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: '스타일',
244
248
  expUseStyleTitle: '존재하는 경우 스타일이있는 셀이 지원됩니다',
245
249
  expOptOriginal: '소스 데이터',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Sekiranya ada, sel -sel dengan struktur yang digabungkan disokong',
241
241
  expOptAllExpand: 'Kembangkan pokok',
242
242
  expAllExpandTitle: 'Sekiranya wujud, ia disokong untuk mengembangkan semua data dengan struktur hierarki',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'gaya',
244
248
  expUseStyleTitle: 'Sekiranya ada, sel dengan gaya disokong',
245
249
  expOptOriginal: 'Data sumber',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Hvis de er til stede, støttes celler med sammenslåtte strukturer',
241
241
  expOptAllExpand: 'Utvid treet',
242
242
  expAllExpandTitle: 'Hvis det eksisterer, støttes den for å utvide alle data med hierarkiske strukturer',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'stil',
244
248
  expUseStyleTitle: 'Hvis de er til stede, støttes celler med stil',
245
249
  expOptOriginal: 'Kildedata',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Se presente, as células com estruturas mescladas são suportadas',
241
241
  expOptAllExpand: 'Expandir a árvore',
242
242
  expAllExpandTitle: 'Se existir, é suportado para expandir todos os dados com estruturas hierárquicas',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'estilo',
244
248
  expUseStyleTitle: 'Se presente, células com estilo são suportadas',
245
249
  expOptOriginal: 'Dados de origem',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Если присутствует, клетки с объединенными структурами поддерживаются',
241
241
  expOptAllExpand: 'Расширить дерево',
242
242
  expAllExpandTitle: 'Если он существует, он поддерживается для расширения всех данных с помощью иерархических структур',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'стиль',
244
248
  expUseStyleTitle: 'Если присутствует, клетки со стилем поддерживаются',
245
249
  expOptOriginal: 'Исходные данные',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'หากมีอยู่จะรองรับเซลล์ที่มีโครงสร้างที่ผสานเข้าด้วยกัน',
241
241
  expOptAllExpand: 'ขยายต้นไม้',
242
242
  expAllExpandTitle: 'หากมีอยู่จะได้รับการสนับสนุนเพื่อขยายข้อมูลทั้งหมดด้วยโครงสร้างแบบลำดับชั้น',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'สไตล์',
244
248
  expUseStyleTitle: 'หากมีอยู่จะรองรับเซลล์ที่มีสไตล์',
245
249
  expOptOriginal: 'แหล่งข้อมูล',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'ئەگەر مەۋجۇت بولسا برىكتۈرۈلگەن قۇرۇلمىلىق ھۆججەت ئىلمىنتىنى قوللايدۇ ',
241
241
  expOptAllExpand: '展开树',
242
242
  expAllExpandTitle: 'ئەگەر مەۋجۇت بولسا،دەرىجىسى بولغان بارلىق ئۇچۇرلار ئىچىلىدۇ ',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'نۇسخا',
244
248
  expUseStyleTitle: 'ئەگەر مەۋجۇت بولسا ،نۇسخىسى بولغان ئىلمىنىتلارغا نۇسخا قوشىلىدۇ',
245
249
  expOptOriginal: 'ئەسلىي ئۇچۇر',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: "Якщо вони присутні, підтримуються клітини з об'єднаними структурами",
241
241
  expOptAllExpand: 'Розширити дерево',
242
242
  expAllExpandTitle: 'Якщо він існує, підтримується розширення всіх даних за допомогою ієрархічних структур',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'стиль',
244
248
  expUseStyleTitle: 'Якщо вони присутні, підтримуються клітини зі стилем',
245
249
  expOptOriginal: 'Джерело даних',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: "Agar hozirgi tuzilmalar bo'lgan hujayralar qo'llab-quvvatlansa",
241
241
  expOptAllExpand: 'Daraxtni kengaytiring',
242
242
  expAllExpandTitle: "Agar mavjud bo'lsa, ierarxik tuzilmalar bilan barcha ma'lumotlarni kengaytirish qo'llab-quvvatlanadi",
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'uslub',
244
248
  expUseStyleTitle: "Agar mavjud bo'lsa, uslublar bo'lgan hujayralar qo'llab-quvvatlanadi",
245
249
  expOptOriginal: "Manba ma'lumotlari",
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: 'Nếu có, các tế bào có cấu trúc hợp nhất được hỗ trợ',
241
241
  expOptAllExpand: 'Mở rộng cây',
242
242
  expAllExpandTitle: 'Nếu nó tồn tại, nó được hỗ trợ để mở rộng tất cả dữ liệu với các cấu trúc phân cấp',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: 'phong cách',
244
248
  expUseStyleTitle: 'Nếu có, các tế bào có phong cách được hỗ trợ',
245
249
  expOptOriginal: 'Dữ liệu nguồn',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: '如果存在,則支持帶有合併結構的單元格',
241
241
  expOptAllExpand: '展開樹',
242
242
  expAllExpandTitle: '如果存在,則支持將帶有層級結構的數據全部展開',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: '樣式',
244
248
  expUseStyleTitle: '如果存在,則支持帶樣式的單元格',
245
249
  expOptOriginal: '源數據',
@@ -240,6 +240,10 @@ export default {
240
240
  expMergeTitle: '如果存在,则支持带有合并结构的单元格',
241
241
  expOptAllExpand: '展开树',
242
242
  expAllExpandTitle: '如果存在,则支持将带有层级结构的数据全部展开',
243
+ expOptTreeAllExpand: '展开树',
244
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
245
+ expOptRowGroupAllExpand: '展开分组',
246
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
243
247
  expOptUseStyle: '样式',
244
248
  expUseStyleTitle: '如果存在,则支持带样式的单元格',
245
249
  expOptOriginal: '源数据',
@@ -114,11 +114,14 @@ export default defineVxeComponent({
114
114
  };
115
115
  });
116
116
  const computeWrapperStyle = computed(() => {
117
- const { width } = props;
117
+ const { width, height } = props;
118
118
  const stys = {};
119
119
  if (width) {
120
120
  stys.width = toCssUnit(width);
121
121
  }
122
+ if (height) {
123
+ stys.height = height === 'auto' ? '100%' : toCssUnit(height);
124
+ }
122
125
  return stys;
123
126
  });
124
127
  const computeCloseOpts = computed(() => {
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI, setConfig, setIcon } from '@vxe-ui/core';
2
2
  import { dynamicApp } from '../dynamics';
3
3
  import { warnLog } from './src/log';
4
- export const version = "4.14.21";
4
+ export const version = "4.14.23";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
package/es/ui/src/log.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { log } from '@vxe-ui/core';
2
- const version = `ui v${"4.14.21"}`;
2
+ const version = `ui v${"4.14.23"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -559,7 +559,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
559
559
  const errorRules = [];
560
560
  const syncVailds = [];
561
561
  if (property && formRules) {
562
- const rules = _xeUtils.default.get(formRules, property);
562
+ const item = getItemByField(property);
563
+ const rules = item && item.rules ? item.rules : _xeUtils.default.get(formRules, property);
563
564
  if (rules) {
564
565
  const itemValue = _xeUtils.default.isUndefined(val) ? _xeUtils.default.get(data, property) : val;
565
566
  rules.forEach(rule => {
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_util=require("./util"),_tooltip=_interopRequireDefault(require("../../tooltip")),_formConfigItem=_interopRequireDefault(require("./form-config-item")),_loading=_interopRequireDefault(require("../../loading")),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}require("../render");class Rule{constructor(e){Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.min,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}get content(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)}get message(){return this.content}}function validREValue(e,t){return!(e&&!(_xeUtils.default.isRegExp(e)?e:new RegExp(e)).test(t))}function validMaxValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t>_xeUtils.default.toNumber(e))}function validMinValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t<_xeUtils.default.toNumber(e))}function validRuleValue(e,t,l){var{type:e,min:i,max:r,pattern:a}=e,u="array"===e,o="number"===e,e="string"===e,n=""+t;if(!validREValue(a,n))return!1;if(u){if(!_xeUtils.default.isArray(t))return!1;if(l&&!t.length)return!1;if(!validMinValue(i,t.length))return!1;if(!validMaxValue(r,t.length))return!1}else if(o){a=Number(t);if(isNaN(a))return!1;if(!validMinValue(i,a))return!1;if(!validMaxValue(r,a))return!1}else{if(e&&!_xeUtils.default.isString(t))return!1;if(l&&!n)return!1;if(!validMinValue(i,n.length))return!1;if(!validMaxValue(r,n.length))return!1}return!0}function checkRuleStatus(e,t,l){var{required:i,field:r}=e,t=r?_xeUtils.default.get(t,r):l,r=_xeUtils.default.isArray(t)?!t.length:(0,_utils.eqEmptyValue)(t);if(i){if(r)return!1;if(!validRuleValue(e,t,i))return!1}else if(!r&&!validRuleValue(e,t,i))return!1;return!0}function createInternalData(){return{meTimeout:void 0,stTimeout:void 0,tooltipStore:{item:null,visible:!1},itemFormatCache:{}}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeForm",props:{collapseStatus:{type:Boolean,default:!0},loading:Boolean,data:Object,size:{type:String,default:()=>(0,_ui.getConfig)().form.size||(0,_ui.getConfig)().size},span:{type:[String,Number],default:()=>(0,_ui.getConfig)().form.span},align:{type:String,default:()=>(0,_ui.getConfig)().form.align},verticalAlign:{type:String,default:()=>(0,_ui.getConfig)().form.verticalAlign},border:{type:Boolean,default:()=>(0,_ui.getConfig)().form.border},titleBackground:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleBackground},titleBold:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleBold},titleAlign:{type:String,default:()=>(0,_ui.getConfig)().form.titleAlign},titleWidth:{type:[String,Number],default:()=>(0,_ui.getConfig)().form.titleWidth},titleColon:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleColon},titleAsterisk:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleAsterisk},titleOverflow:{type:[Boolean,String],default:()=>(0,_ui.getConfig)().form.titleOverflow},vertical:{type:Boolean,default:()=>(0,_ui.getConfig)().form.vertical},padding:{type:Boolean,default:()=>(0,_ui.getConfig)().form.padding},className:[String,Function],readonly:Boolean,disabled:Boolean,items:Array,rules:Object,preventSubmit:{type:Boolean,default:()=>(0,_ui.getConfig)().form.preventSubmit},validConfig:Object,tooltipConfig:Object,collapseConfig:Object,customLayout:{type:Boolean,default:()=>(0,_ui.getConfig)().form.customLayout},params:Object},emits:["update:collapseStatus","collapse","toggle-collapse","submit","submit-invalid","reset"],setup(s,e){let{slots:d,emit:i}=e,o=(0,_vue.inject)("$xeGrid",null);var t=_xeUtils.default.uniqueId();let f=(0,_ui.useSize)(s).computeSize,c=(0,_vue.reactive)({collapseAll:s.collapseStatus,staticItems:[],formItems:[],itemWidth:0}),m=createInternalData(),v=(0,_vue.ref)(),g=(0,_vue.ref)(),r={},_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().form.validConfig,s.validConfig)),p=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().tooltip,(0,_ui.getConfig)().form.tooltipConfig,s.tooltipConfig));var l=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().form.collapseConfig,s.collapseConfig));let a=(0,_vue.computed)(()=>{let{titleWidth:i,vertical:r}=s;var e=c.formItems;let a=[];return _xeUtils.default.eachTree(e,e=>{var{titleWidth:t,vertical:l}=e;"auto"!==t&&("auto"!==((_xeUtils.default.eqNull(l)?r:l)?null:_xeUtils.default.eqNull(t)?i:t)||e.children&&e.children.length)||a.push(e)},{children:"children"}),a}),u={refElem:v},n={computeSize:f,computeValidOpts:_,computeTooltipOpts:p,computeCollapseOpts:l,computeAutoItemWidthList:a},h={xID:t,props:s,context:e,reactData:c,internalData:m,xeGrid:o,getRefMaps:()=>u,getComputeMaps:()=>n};let x=e=>(e.length&&e.forEach(e=>{e.slots&&_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||d[e]||(0,_log.errLog)("vxe.error.notSlot",["[form] "+e])})}),c.staticItems=_xeUtils.default.mapTree(e,e=>(0,_util.createItem)(h,e),{children:"children"}),m.itemFormatCache={},(0,_vue.nextTick)().then(()=>M())),y=()=>{let t=[];return _xeUtils.default.eachTree(c.formItems,e=>{t.push(e)},{children:"children"}),t},b=t=>{var e=_xeUtils.default.findTree(c.formItems,e=>e.field===t,{children:"children"});return e?e.item:null},C=()=>c.collapseAll,U=()=>{var e=!C();return c.collapseAll=e,i("update:collapseStatus",e),(0,_vue.nextTick)()};let E=t=>{if(t){let e=t;(e=_xeUtils.default.isArray(t)?e:[t]).forEach(e=>{e&&(e=(0,_util.handleFieldOrItem)(h,e))&&(e.showError=!1,e.showIconMsg=!1)})}else y().forEach(e=>{e.showError=!1,e.showIconMsg=!1});return(0,_vue.nextTick)()},I=(e,t,l)=>{var{field:i,resetValue:r}=e;return _xeUtils.default.isFunction(r)?r({field:i,item:e,data:t,$form:h,$grid:o}):_xeUtils.default.eqNull(r)&&_xeUtils.default.isArray(l)?[]:r},S=()=>{let u=s.data;var e=y();return u&&e.forEach(e=>{var t,l,i,{field:r,itemRender:a}=e;(0,_utils.isEnableConf)(a)&&({name:a,startField:t,endField:l}=a,i=(a=_ui.renderer.get(a))?a.formItemResetMethod||a.itemResetMethod:null,a&&i?i({data:u,field:r,property:r,item:e,$form:h,$grid:o}):r&&(a=_xeUtils.default.get(u,r),_xeUtils.default.set(u,r,I(e,u,a))),t)&&l&&(_xeUtils.default.set(u,t,I(e,u,_xeUtils.default.get(u,t))),_xeUtils.default.set(u,l,I(e,u,_xeUtils.default.get(u,l))))}),m.itemFormatCache={},E(),M()},$=e=>{e.preventDefault(),S(),r.dispatchEvent("reset",{data:s.data},e)},j=e=>{var l=v.value;if(l)for(let t=0;t<e.length;t++){var i=e[t],r=b(i);if(r&&(0,_utils.isEnableConf)(r.itemRender)){var a=r.itemRender,u=_ui.renderer.get(a.name);t||(0,_dom.scrollToView)(l.querySelector("."+r.id));let e=null;a=a.autoFocus||a.autofocus||(u?u.formItemAutoFocus:null);if(_xeUtils.default.isFunction(a)?e=a({$form:h,$grid:o,item:r,data:s.data,field:i}):!0===a?e=l.querySelector(`.${r.id} input,textarea`):a&&(e=l.querySelector(`.${r.id} `+a)),e){e.focus();break}}}},w=(e,t,l)=>{let{data:f,rules:i}=s,r={};return _xeUtils.default.isArray(t)||(t=[t]),Promise.all(t.map(n=>{let s=[],d=[];if(n&&i){let o=_xeUtils.default.get(i,n);if(o){let u=_xeUtils.default.isUndefined(l)?_xeUtils.default.get(f,n):l;o.forEach(t=>{let{trigger:l,validator:i}=t;if("all"===e||!l||e===l)if(i){var r,a={itemValue:u,rule:t,rules:o,data:f,field:n,property:n,$form:h};let e;_xeUtils.default.isString(i)?(r=_ui.validators.get(i))?(r=r.formItemValidatorMethod||r.itemValidatorMethod)?e=r(a):(0,_log.warnLog)("vxe.error.notValidators",["[form] "+i]):(0,_log.errLog)("vxe.error.notValidators",["[form] "+i]):e=i(a),e&&(_xeUtils.default.isError(e)?s.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)})):e.catch&&d.push(e.catch(e=>{s.push(new Rule({type:"custom",trigger:l,content:e?e.message:t.content||t.message,rule:new Rule(t)}))})))}else checkRuleStatus(t,f,u)||s.push(new Rule(t))})}}return Promise.all(d).then(()=>{s.length&&(r[n]=s.map(e=>({$form:h,rule:e,data:f,field:n,property:n})))})})).then(()=>{if(!_xeUtils.default.isEmpty(r))return Promise.reject(r)})},T=(t,e,l)=>{var{data:i,rules:r}=s;let a=_.value,u={},o=[],n=[];return clearTimeout(m.meTimeout),i&&r?(t.forEach(t=>{let l=t.field;l&&!(0,_util.isHiddenItem)(h,t)&&(0,_util.isActiveItem)(h,t)&&n.push(w(e||"all",l).then(()=>{t.errRule=null}).catch(e=>{e=e[l];return u[l]||(u[l]=[]),u[l].push(e),o.push(l),t.errRule=e[0].rule,Promise.reject(e)}))}),Promise.all(n).then(()=>{l&&l()}).catch(()=>new Promise(e=>{m.meTimeout=setTimeout(()=>{t.forEach(e=>{e.errRule&&(e.showError=!0)})},20),!1!==a.autoPos&&(0,_vue.nextTick)(()=>{j(o)}),l?(l(u),e()):e(u)}))):(l&&l(),Promise.resolve())};let q=t=>{var e=s.readonly;E(),e?(h.dispatchEvent("submit",{data:s.data},t),M()):T(y()).then(e=>{e?h.dispatchEvent("submit-invalid",{data:s.data,errMap:e},t):h.dispatchEvent("submit",{data:s.data},t),M()})},k=e=>{e.preventDefault(),s.preventSubmit||q(e)},R=()=>{var e=m.tooltipStore,t=g.value;return e.visible&&(Object.assign(e,{item:null,visible:!1}),t)&&t.close(),(0,_vue.nextTick)()};let V=(e,l,t)=>l?w(e?["blur"].includes(e.type)?"blur":"change":"all",l,t).then(()=>{E(l)}).catch(e=>{var e=e[l],t=b(l);e&&t&&(t.showError=!0,t.errRule=e[0].rule)}):(0,_vue.nextTick)();let M=()=>{var e=a.value,l=v.value;if(l&&e.length){l=l.querySelectorAll(e.map(e=>`.vxe-form--item-title[itemid="${e.id}"]`).join(","));let t=0;_xeUtils.default.arrayEach(l,e=>{e.style.width="",t=Math.max(t,Math.ceil(e.clientWidth+2))}),_xeUtils.default.arrayEach(l,e=>{e.style.width=t+"px"})}return(0,_vue.nextTick)()},B=()=>{M()};r={dispatchEvent(e,t,l){i(e,(0,_ui.createEvent)(l,{$form:h,$grid:o},t))},reset:S,validate:e=>{var t=s.readonly;return E(),t?(0,_vue.nextTick)():T(y(),"",e).then(e=>(M(),e))},validateField:(e,t)=>{var l=s.readonly;if(l)return(0,_vue.nextTick)();let i=[];l=(i=e?_xeUtils.default.isArray(e)?e:[e]:i).map(e=>(0,_util.handleFieldOrItem)(h,e));return T(l,"",t).then(e=>(M(),e))},clearValidate:E,updateStatus:(e,t)=>{e=e.field;return V(new Event("change"),e,t)},toggleCollapse:U,getItems:y,getItemByField:b,closeTooltip:R,recalculate:M};l={callSlot:(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=d[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],triggerItemEvent:V,toggleCollapseEvent:e=>{var t=U(),l=C();r.dispatchEvent("toggle-collapse",{status:l,collapse:l,data:s.data},e),r.dispatchEvent("collapse",{status:l,collapse:l,data:s.data},e),t.then(()=>{M().then(()=>{o&&o.recalculate(!0)}),o&&o.recalculate()})},triggerTitleTipEvent:(e,t)=>{var t=t.item,l=m.tooltipStore,i=g.value,e=e.currentTarget.children[0],r=(e.textContent||"").trim(),a=e.scrollWidth>e.clientWidth;clearTimeout(m.stTimeout),l.item!==t&&R(),r&&a&&(Object.assign(l,{item:t,visible:!0}),i)&&i.open(e,r)},handleTitleTipLeaveEvent:()=>{var e=p.value;let t=g.value;t&&t.setActived(!1),e.enterable?m.stTimeout=setTimeout(()=>{(t=g.value)&&!t.isActived()&&R()},e.leaveDelay):R()},handleValidIconEvent(e,t){t=t.item;t.showIconMsg=!t.showIconMsg},handleSubmitEvent:q};Object.assign(h,r,l);let A=(0,_vue.ref)(0),F=((0,_vue.watch)(()=>s.vertical,()=>{A.value++}),(0,_vue.watch)(()=>s.titleWidth,()=>{A.value++}),(0,_vue.watch)(A,()=>{(0,_vue.nextTick)().then(()=>{M()})}),(0,_vue.ref)(0)),O=((0,_vue.watch)(()=>c.staticItems.length,()=>{F.value++}),(0,_vue.watch)(()=>c.staticItems,()=>{F.value++}),(0,_vue.watch)(F,()=>{c.formItems=c.staticItems,A.value++}),(0,_vue.ref)(0));return(0,_vue.watch)(()=>s.items?s.items.length:-1,()=>{O.value++}),(0,_vue.watch)(()=>s.items,()=>{O.value++}),(0,_vue.watch)(O,()=>{x(s.items||[])}),(0,_vue.watch)(()=>s.collapseStatus,e=>{c.collapseAll=!!e}),(0,_vue.watch)(()=>s.readonly,()=>{E()}),(0,_vue.watch)(()=>s.disabled,()=>{E()}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{s.customLayout&&s.items&&(0,_log.errLog)("vxe.error.errConflicts",["[form] custom-layout","items"])}),_ui.globalEvents.on(h,"resize",B)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(h,"resize"),_xeUtils.default.assign(m,createInternalData())}),s.items&&x(s.items),(0,_vue.provide)("xeFormItemInfo",null),(0,_vue.provide)("$xeForm",h),(0,_vue.provide)("$xeFormGroup",null),(0,_vue.provide)("$xeFormItem",null),h.renderVN=()=>{var{loading:e,border:t,className:l,data:i,customLayout:r}=s,a=c.formItems,u=f.value,o=p.value,n=d.default;return(0,_vue.h)("form",{ref:v,class:["vxe-form",l?_xeUtils.default.isFunction(l)?l({items:a,data:i,$form:h}):l:"",{["size--"+u]:u,"is--border":t,"custom--layout":r,"is--loading":e}],onSubmit:k,onReset:$},[(0,_vue.h)("div",{class:"vxe-form--wrapper vxe-form--item-row"},r?n?n({}):[]:a.map((e,t)=>(0,_vue.h)(_formConfigItem.default,{key:t,itemConfig:e}))),(0,_vue.h)("div",{class:"vxe-form-slots",ref:"hideItem"},!r&&n?n({}):[]),(0,_vue.h)(_loading.default,{class:"vxe-form--loading",modelValue:e}),(0,_vue.h)(_tooltip.default,Object.assign({ref:g},o))])},h},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_util=require("./util"),_tooltip=_interopRequireDefault(require("../../tooltip")),_formConfigItem=_interopRequireDefault(require("./form-config-item")),_loading=_interopRequireDefault(require("../../loading")),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}require("../render");class Rule{constructor(e){Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.min,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}get content(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)}get message(){return this.content}}function validREValue(e,t){return!(e&&!(_xeUtils.default.isRegExp(e)?e:new RegExp(e)).test(t))}function validMaxValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t>_xeUtils.default.toNumber(e))}function validMinValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t<_xeUtils.default.toNumber(e))}function validRuleValue(e,t,l){var{type:e,min:i,max:r,pattern:a}=e,u="array"===e,o="number"===e,e="string"===e,n=""+t;if(!validREValue(a,n))return!1;if(u){if(!_xeUtils.default.isArray(t))return!1;if(l&&!t.length)return!1;if(!validMinValue(i,t.length))return!1;if(!validMaxValue(r,t.length))return!1}else if(o){a=Number(t);if(isNaN(a))return!1;if(!validMinValue(i,a))return!1;if(!validMaxValue(r,a))return!1}else{if(e&&!_xeUtils.default.isString(t))return!1;if(l&&!n)return!1;if(!validMinValue(i,n.length))return!1;if(!validMaxValue(r,n.length))return!1}return!0}function checkRuleStatus(e,t,l){var{required:i,field:r}=e,t=r?_xeUtils.default.get(t,r):l,r=_xeUtils.default.isArray(t)?!t.length:(0,_utils.eqEmptyValue)(t);if(i){if(r)return!1;if(!validRuleValue(e,t,i))return!1}else if(!r&&!validRuleValue(e,t,i))return!1;return!0}function createInternalData(){return{meTimeout:void 0,stTimeout:void 0,tooltipStore:{item:null,visible:!1},itemFormatCache:{}}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeForm",props:{collapseStatus:{type:Boolean,default:!0},loading:Boolean,data:Object,size:{type:String,default:()=>(0,_ui.getConfig)().form.size||(0,_ui.getConfig)().size},span:{type:[String,Number],default:()=>(0,_ui.getConfig)().form.span},align:{type:String,default:()=>(0,_ui.getConfig)().form.align},verticalAlign:{type:String,default:()=>(0,_ui.getConfig)().form.verticalAlign},border:{type:Boolean,default:()=>(0,_ui.getConfig)().form.border},titleBackground:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleBackground},titleBold:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleBold},titleAlign:{type:String,default:()=>(0,_ui.getConfig)().form.titleAlign},titleWidth:{type:[String,Number],default:()=>(0,_ui.getConfig)().form.titleWidth},titleColon:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleColon},titleAsterisk:{type:Boolean,default:()=>(0,_ui.getConfig)().form.titleAsterisk},titleOverflow:{type:[Boolean,String],default:()=>(0,_ui.getConfig)().form.titleOverflow},vertical:{type:Boolean,default:()=>(0,_ui.getConfig)().form.vertical},padding:{type:Boolean,default:()=>(0,_ui.getConfig)().form.padding},className:[String,Function],readonly:Boolean,disabled:Boolean,items:Array,rules:Object,preventSubmit:{type:Boolean,default:()=>(0,_ui.getConfig)().form.preventSubmit},validConfig:Object,tooltipConfig:Object,collapseConfig:Object,customLayout:{type:Boolean,default:()=>(0,_ui.getConfig)().form.customLayout},params:Object},emits:["update:collapseStatus","collapse","toggle-collapse","submit","submit-invalid","reset"],setup(s,e){let{slots:d,emit:i}=e,o=(0,_vue.inject)("$xeGrid",null);var t=_xeUtils.default.uniqueId();let f=(0,_ui.useSize)(s).computeSize,c=(0,_vue.reactive)({collapseAll:s.collapseStatus,staticItems:[],formItems:[],itemWidth:0}),m=createInternalData(),v=(0,_vue.ref)(),g=(0,_vue.ref)(),r={},_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().form.validConfig,s.validConfig)),p=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().tooltip,(0,_ui.getConfig)().form.tooltipConfig,s.tooltipConfig));var l=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().form.collapseConfig,s.collapseConfig));let a=(0,_vue.computed)(()=>{let{titleWidth:i,vertical:r}=s;var e=c.formItems;let a=[];return _xeUtils.default.eachTree(e,e=>{var{titleWidth:t,vertical:l}=e;"auto"!==t&&("auto"!==((_xeUtils.default.eqNull(l)?r:l)?null:_xeUtils.default.eqNull(t)?i:t)||e.children&&e.children.length)||a.push(e)},{children:"children"}),a}),u={refElem:v},n={computeSize:f,computeValidOpts:_,computeTooltipOpts:p,computeCollapseOpts:l,computeAutoItemWidthList:a},h={xID:t,props:s,context:e,reactData:c,internalData:m,xeGrid:o,getRefMaps:()=>u,getComputeMaps:()=>n};let x=e=>(e.length&&e.forEach(e=>{e.slots&&_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||d[e]||(0,_log.errLog)("vxe.error.notSlot",["[form] "+e])})}),c.staticItems=_xeUtils.default.mapTree(e,e=>(0,_util.createItem)(h,e),{children:"children"}),m.itemFormatCache={},(0,_vue.nextTick)().then(()=>M())),y=()=>{let t=[];return _xeUtils.default.eachTree(c.formItems,e=>{t.push(e)},{children:"children"}),t},b=t=>{var e=_xeUtils.default.findTree(c.formItems,e=>e.field===t,{children:"children"});return e?e.item:null},C=()=>c.collapseAll,U=()=>{var e=!C();return c.collapseAll=e,i("update:collapseStatus",e),(0,_vue.nextTick)()};let E=t=>{if(t){let e=t;(e=_xeUtils.default.isArray(t)?e:[t]).forEach(e=>{e&&(e=(0,_util.handleFieldOrItem)(h,e))&&(e.showError=!1,e.showIconMsg=!1)})}else y().forEach(e=>{e.showError=!1,e.showIconMsg=!1});return(0,_vue.nextTick)()},I=(e,t,l)=>{var{field:i,resetValue:r}=e;return _xeUtils.default.isFunction(r)?r({field:i,item:e,data:t,$form:h,$grid:o}):_xeUtils.default.eqNull(r)&&_xeUtils.default.isArray(l)?[]:r},S=()=>{let u=s.data;var e=y();return u&&e.forEach(e=>{var t,l,i,{field:r,itemRender:a}=e;(0,_utils.isEnableConf)(a)&&({name:a,startField:t,endField:l}=a,i=(a=_ui.renderer.get(a))?a.formItemResetMethod||a.itemResetMethod:null,a&&i?i({data:u,field:r,property:r,item:e,$form:h,$grid:o}):r&&(a=_xeUtils.default.get(u,r),_xeUtils.default.set(u,r,I(e,u,a))),t)&&l&&(_xeUtils.default.set(u,t,I(e,u,_xeUtils.default.get(u,t))),_xeUtils.default.set(u,l,I(e,u,_xeUtils.default.get(u,l))))}),m.itemFormatCache={},E(),M()},$=e=>{e.preventDefault(),S(),r.dispatchEvent("reset",{data:s.data},e)},j=e=>{var l=v.value;if(l)for(let t=0;t<e.length;t++){var i=e[t],r=b(i);if(r&&(0,_utils.isEnableConf)(r.itemRender)){var a=r.itemRender,u=_ui.renderer.get(a.name);t||(0,_dom.scrollToView)(l.querySelector("."+r.id));let e=null;a=a.autoFocus||a.autofocus||(u?u.formItemAutoFocus:null);if(_xeUtils.default.isFunction(a)?e=a({$form:h,$grid:o,item:r,data:s.data,field:i}):!0===a?e=l.querySelector(`.${r.id} input,textarea`):a&&(e=l.querySelector(`.${r.id} `+a)),e){e.focus();break}}}},w=(f,e,t)=>{let{data:c,rules:l}=s,i={};return _xeUtils.default.isArray(e)||(e=[e]),Promise.all(e.map(n=>{let s=[],d=[];if(n&&l){var e=b(n);let o=e&&e.rules?e.rules:_xeUtils.default.get(l,n);if(o){let u=_xeUtils.default.isUndefined(t)?_xeUtils.default.get(c,n):t;o.forEach(t=>{let{trigger:l,validator:i}=t;if("all"===f||!l||f===l)if(i){var r,a={itemValue:u,rule:t,rules:o,data:c,field:n,property:n,$form:h};let e;_xeUtils.default.isString(i)?(r=_ui.validators.get(i))?(r=r.formItemValidatorMethod||r.itemValidatorMethod)?e=r(a):(0,_log.warnLog)("vxe.error.notValidators",["[form] "+i]):(0,_log.errLog)("vxe.error.notValidators",["[form] "+i]):e=i(a),e&&(_xeUtils.default.isError(e)?s.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)})):e.catch&&d.push(e.catch(e=>{s.push(new Rule({type:"custom",trigger:l,content:e?e.message:t.content||t.message,rule:new Rule(t)}))})))}else checkRuleStatus(t,c,u)||s.push(new Rule(t))})}}return Promise.all(d).then(()=>{s.length&&(i[n]=s.map(e=>({$form:h,rule:e,data:c,field:n,property:n})))})})).then(()=>{if(!_xeUtils.default.isEmpty(i))return Promise.reject(i)})},T=(t,e,l)=>{var{data:i,rules:r}=s;let a=_.value,u={},o=[],n=[];return clearTimeout(m.meTimeout),i&&r?(t.forEach(t=>{let l=t.field;l&&!(0,_util.isHiddenItem)(h,t)&&(0,_util.isActiveItem)(h,t)&&n.push(w(e||"all",l).then(()=>{t.errRule=null}).catch(e=>{e=e[l];return u[l]||(u[l]=[]),u[l].push(e),o.push(l),t.errRule=e[0].rule,Promise.reject(e)}))}),Promise.all(n).then(()=>{l&&l()}).catch(()=>new Promise(e=>{m.meTimeout=setTimeout(()=>{t.forEach(e=>{e.errRule&&(e.showError=!0)})},20),!1!==a.autoPos&&(0,_vue.nextTick)(()=>{j(o)}),l?(l(u),e()):e(u)}))):(l&&l(),Promise.resolve())};let q=t=>{var e=s.readonly;E(),e?(h.dispatchEvent("submit",{data:s.data},t),M()):T(y()).then(e=>{e?h.dispatchEvent("submit-invalid",{data:s.data,errMap:e},t):h.dispatchEvent("submit",{data:s.data},t),M()})},k=e=>{e.preventDefault(),s.preventSubmit||q(e)},R=()=>{var e=m.tooltipStore,t=g.value;return e.visible&&(Object.assign(e,{item:null,visible:!1}),t)&&t.close(),(0,_vue.nextTick)()};let V=(e,l,t)=>l?w(e?["blur"].includes(e.type)?"blur":"change":"all",l,t).then(()=>{E(l)}).catch(e=>{var e=e[l],t=b(l);e&&t&&(t.showError=!0,t.errRule=e[0].rule)}):(0,_vue.nextTick)();let M=()=>{var e=a.value,l=v.value;if(l&&e.length){l=l.querySelectorAll(e.map(e=>`.vxe-form--item-title[itemid="${e.id}"]`).join(","));let t=0;_xeUtils.default.arrayEach(l,e=>{e.style.width="",t=Math.max(t,Math.ceil(e.clientWidth+2))}),_xeUtils.default.arrayEach(l,e=>{e.style.width=t+"px"})}return(0,_vue.nextTick)()},B=()=>{M()};r={dispatchEvent(e,t,l){i(e,(0,_ui.createEvent)(l,{$form:h,$grid:o},t))},reset:S,validate:e=>{var t=s.readonly;return E(),t?(0,_vue.nextTick)():T(y(),"",e).then(e=>(M(),e))},validateField:(e,t)=>{var l=s.readonly;if(l)return(0,_vue.nextTick)();let i=[];l=(i=e?_xeUtils.default.isArray(e)?e:[e]:i).map(e=>(0,_util.handleFieldOrItem)(h,e));return T(l,"",t).then(e=>(M(),e))},clearValidate:E,updateStatus:(e,t)=>{e=e.field;return V(new Event("change"),e,t)},toggleCollapse:U,getItems:y,getItemByField:b,closeTooltip:R,recalculate:M};l={callSlot:(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=d[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],triggerItemEvent:V,toggleCollapseEvent:e=>{var t=U(),l=C();r.dispatchEvent("toggle-collapse",{status:l,collapse:l,data:s.data},e),r.dispatchEvent("collapse",{status:l,collapse:l,data:s.data},e),t.then(()=>{M().then(()=>{o&&o.recalculate(!0)}),o&&o.recalculate()})},triggerTitleTipEvent:(e,t)=>{var t=t.item,l=m.tooltipStore,i=g.value,e=e.currentTarget.children[0],r=(e.textContent||"").trim(),a=e.scrollWidth>e.clientWidth;clearTimeout(m.stTimeout),l.item!==t&&R(),r&&a&&(Object.assign(l,{item:t,visible:!0}),i)&&i.open(e,r)},handleTitleTipLeaveEvent:()=>{var e=p.value;let t=g.value;t&&t.setActived(!1),e.enterable?m.stTimeout=setTimeout(()=>{(t=g.value)&&!t.isActived()&&R()},e.leaveDelay):R()},handleValidIconEvent(e,t){t=t.item;t.showIconMsg=!t.showIconMsg},handleSubmitEvent:q};Object.assign(h,r,l);let A=(0,_vue.ref)(0),F=((0,_vue.watch)(()=>s.vertical,()=>{A.value++}),(0,_vue.watch)(()=>s.titleWidth,()=>{A.value++}),(0,_vue.watch)(A,()=>{(0,_vue.nextTick)().then(()=>{M()})}),(0,_vue.ref)(0)),O=((0,_vue.watch)(()=>c.staticItems.length,()=>{F.value++}),(0,_vue.watch)(()=>c.staticItems,()=>{F.value++}),(0,_vue.watch)(F,()=>{c.formItems=c.staticItems,A.value++}),(0,_vue.ref)(0));return(0,_vue.watch)(()=>s.items?s.items.length:-1,()=>{O.value++}),(0,_vue.watch)(()=>s.items,()=>{O.value++}),(0,_vue.watch)(O,()=>{x(s.items||[])}),(0,_vue.watch)(()=>s.collapseStatus,e=>{c.collapseAll=!!e}),(0,_vue.watch)(()=>s.readonly,()=>{E()}),(0,_vue.watch)(()=>s.disabled,()=>{E()}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{s.customLayout&&s.items&&(0,_log.errLog)("vxe.error.errConflicts",["[form] custom-layout","items"])}),_ui.globalEvents.on(h,"resize",B)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(h,"resize"),_xeUtils.default.assign(m,createInternalData())}),s.items&&x(s.items),(0,_vue.provide)("xeFormItemInfo",null),(0,_vue.provide)("$xeForm",h),(0,_vue.provide)("$xeFormGroup",null),(0,_vue.provide)("$xeFormItem",null),h.renderVN=()=>{var{loading:e,border:t,className:l,data:i,customLayout:r}=s,a=c.formItems,u=f.value,o=p.value,n=d.default;return(0,_vue.h)("form",{ref:v,class:["vxe-form",l?_xeUtils.default.isFunction(l)?l({items:a,data:i,$form:h}):l:"",{["size--"+u]:u,"is--border":t,"custom--layout":r,"is--loading":e}],onSubmit:k,onReset:$},[(0,_vue.h)("div",{class:"vxe-form--wrapper vxe-form--item-row"},r?n?n({}):[]:a.map((e,t)=>(0,_vue.h)(_formConfigItem.default,{key:t,itemConfig:e}))),(0,_vue.h)("div",{class:"vxe-form-slots",ref:"hideItem"},!r&&n?n({}):[]),(0,_vue.h)(_loading.default,{class:"vxe-form--loading",modelValue:e}),(0,_vue.h)(_tooltip.default,Object.assign({ref:g},o))])},h},render(){return this.renderVN()}});
@@ -100,7 +100,7 @@ function getItemClass($xeForm, item, isGroup) {
100
100
  let isRequired = false;
101
101
  let isValid = false;
102
102
  if (!readonly && rules) {
103
- const itemRules = rules[field];
103
+ const itemRules = item.rules ? item.rules : rules[field];
104
104
  if (itemRules && itemRules.length) {
105
105
  isValid = true;
106
106
  isRequired = itemRules.some(rule => rule.required);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.getItemClass=getItemClass,exports.getItemContentClass=getItemContentClass,exports.renderItemContent=renderItemContent,exports.renderItemErrorIcon=renderItemErrorIcon,exports.renderTitle=renderTitle;var _vue=require("vue"),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("./util"),_tooltip=_interopRequireDefault(require("../../tooltip/src/tooltip")),_icon=_interopRequireDefault(require("../../icon/src/icon")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function renderPrefixIcon(e){return(0,_vue.h)("span",{class:"vxe-form--item-title-tip-prefix"},[(0,_vue.h)(_icon.default,{class:e.icon||(0,_ui.getIcon)().FORM_PREFIX,status:e.iconStatus})])}function renderSuffixIcon(e){return(0,_vue.h)("span",{class:"vxe-form--item-title-tip-suffix"},[(0,_vue.h)(_icon.default,{class:e.icon||(0,_ui.getIcon)().FORM_SUFFIX,status:e.iconStatus})])}function getItemClass(e,t,l){var i=e.props,r=e.reactData,s=e.xeGrid,{computeSize:n,computeValidOpts:o}=e.getComputeMaps(),{data:i,rules:a,readonly:u,disabled:d,span:m,titleBackground:c,titleBold:f,titleColon:v,titleAsterisk:_,vertical:p,padding:g}=i,r=r.collapseAll,{folding:x,field:h,itemRender:I,showError:C,className:b,vertical:U,padding:y,children:q,showContent:N}=t,n=n.value,{showErrorMessage:o,showMessage:F,showErrorBackground:O,showErrorIcon:E}=o.value,I=(0,_utils.isEnableConf)(I)?_ui.renderer.get(I.name):null,I=I?I.formItemClassName||I.itemClassName:"",m=t.span||m,g=_xeUtils.default.eqNull(y)?g:y,y=_xeUtils.default.eqNull(U)?p:U,p=_xeUtils.default.eqNull(t.titleBackground)?c:t.titleBackground,U=_xeUtils.default.eqNull(t.titleBold)?f:t.titleBold,c=_xeUtils.default.eqNull(t.titleColon)?v:t.titleColon,f=_xeUtils.default.eqNull(t.titleAsterisk)?_:t.titleAsterisk,v={data:i,disabled:d,readonly:u,field:h,property:h,item:t,$form:e,$grid:s},_=q&&0<q.length;let w=!1,T=!1;!u&&a&&(i=a[h])&&i.length&&(T=!0,w=i.some(e=>e.required));d=_xeUtils.default.isBoolean(o)?o:F;return[l||_?"vxe-form--group":"","vxe-form--item",t.id,m?`vxe-form--item-col_${m} is--span`:"",`${d?"show":"hide"}--err-msg`,b?_xeUtils.default.isFunction(b)?b(v):b:"",I?_xeUtils.default.isFunction(I)?I(v):I:"",{["size--"+n]:n,"is--colon":c,"is--tbg":p,"is--bold":U,"is--padding":g,"is--vertical":y,"is--asterisk":f,"hide--content":!1===N,"is--valid":T,"is--required":w,"is--hidden":x&&r,"is--active":(0,_util.isActiveItem)(e,t),"err--icon":E,"err--bg":O,"is--error":C}]}function getItemContentClass(e,t,l){var i=e.props,r=e.xeGrid,{data:i,readonly:s,disabled:n,align:o,verticalAlign:a}=i,{field:u,itemRender:d,contentClassName:m,children:c}=t,c=c&&0<c.length,d=(0,_utils.isEnableConf)(d)?_ui.renderer.get(d.name):null,d=d?d.formItemContentClassName||d.itemContentClassName:"",o=!c&&_xeUtils.default.eqNull(t.align)?o:t.align,a=!c&&_xeUtils.default.eqNull(t.verticalAlign)?a:t.verticalAlign,i={data:i,disabled:n,readonly:s,field:u,property:u,item:t,$form:e,$grid:r};return[l||c?"vxe-form--group-content vxe-form--item-row":"","vxe-form--item-content",o?"align--"+o:"",a?"vertical-align--"+a:"",d?_xeUtils.default.isFunction(d)?d(i):d:"",m?_xeUtils.default.isFunction(m)?m(i):m:""]}function renderTitle(t,e,l){var i=t.props,r=t.xeGrid,{data:i,readonly:s,disabled:n,titleAlign:o,titleWidth:a,titleOverflow:u,vertical:d}=i;let{slots:m,title:c,field:f,itemRender:v,titleOverflow:_,vertical:p,showTitle:g,titleClassName:x,titleStyle:h,titlePrefix:I,titleSuffix:C,children:b,showContent:U}=e;var y=t.getComputeMaps().computeTooltipOpts,y=y.value,q=(0,_utils.isEnableConf)(v)?_ui.renderer.get(v.name):null,N=q?q.formItemTitleClassName||q.itemTitleClassName:"",F=q?q.formItemTitleStyle||q.itemTitleStyle:null,d=_xeUtils.default.eqNull(p)?d:p,o=_xeUtils.default.eqNull(e.titleAlign)?o:e.titleAlign,d=d?null:_xeUtils.default.eqNull(e.titleWidth)?a:e.titleWidth,a=_xeUtils.default.eqNull(_)?u:_,u="title"===a,O=!0===a||"tooltip"===a,a=u||O||"ellipsis"===a;let E={data:i,disabled:n,readonly:s,field:f,property:f,item:e,$form:t,$grid:r};var i=m?m.title:null,n=m?m.prefix:null,s=m?m.suffix||m.extra:null,r=!1!==g&&(c||i),w=b&&0<b.length,T=[],n=(n&&T.push((0,_vue.h)("span",{key:"pt",class:"vxe-form--item-title-prefix"},t.callSlot(n,E))),I&&T.push(I.content||I.message?(0,_vue.h)(_tooltip.default,Object.assign(Object.assign(Object.assign({key:"pm"},y),I),{content:(0,_utils.getFuncText)(I.content||I.message)}),{default:()=>renderPrefixIcon(I)}):renderPrefixIcon(I)),q?q.renderFormItemTitle||q.renderItemTitle:null),q=(T.push((0,_vue.h)("span",{key:"pl",class:"vxe-form--item-title-label"},i?t.callSlot(i,E):n?(0,_vn.getSlotVNs)(n(v,E)):(0,_utils.getFuncText)(e.title))),[]),i=(C&&q.push(C.content||C.message?(0,_vue.h)(_tooltip.default,Object.assign(Object.assign(Object.assign({key:"sm"},y),C),{content:(0,_utils.getFuncText)(C.content||C.message)}),{default:()=>renderSuffixIcon(C)}):renderSuffixIcon(C)),s&&q.push((0,_vue.h)("span",{key:"st",class:"vxe-form--item-title-suffix"},t.callSlot(s,E))),O?{onMouseenter(e){t.triggerTitleTipEvent(e,E)},onMouseleave:t.handleTitleTipLeaveEvent}:{}),n=Object.assign({},_xeUtils.default.isFunction(F)?F(E):F,_xeUtils.default.isFunction(h)?h(E):h);return d&&"auto"!==d&&!1!==U&&(n.width=(0,_dom.toCssUnit)(d)),r?(0,_vue.h)("div",Object.assign({class:[l||w?"vxe-form--group-title":"","vxe-form--item-title",o?"align--"+o:"",a?"is--ellipsis":"",N?_xeUtils.default.isFunction(N)?N(E):N:"",x?_xeUtils.default.isFunction(x)?x(E):x:""],style:n,itemid:e.id,title:u?(0,_utils.getFuncText)(c):null},i),[(0,_vue.h)("div",{class:"vxe-form--item-title-content"},T),(0,_vue.h)("div",{class:"vxe-form--item-title-postfix"},q)]):(0,_ui.renderEmptyElement)(t)}function renderItemErrorIcon(t,l){var e=t.getComputeMaps().computeValidOpts,e=e.value,{showErrorIcon:i,errorIcon:r}=e,{errRule:s,showIconMsg:n}=l;return i?(0,_vue.h)("div",{key:"emi",class:["vxe-form-item--valid-error-icon-wrapper",{"is--show":n,"is--hide":!n}]},[(0,_vue.h)("span",{class:"vxe-form-item--valid-error-icon-btn",onClick(e){t.handleValidIconEvent(e,{item:l})}},[(0,_vue.h)("i",{class:r||(0,_ui.getIcon)().FORM_VALID_ERROR_ICON})]),(0,_vue.h)("div",{class:"vxe-form-item--valid-error-icon-msg-tip"},s?[(0,_vue.h)("div",{class:"vxe-form-item--valid-error-icon-msg vxe-form-item--valid-error-icon-theme-"+(e.theme||"normal")},s.content||s.message)]:[])]):(0,_ui.renderEmptyElement)(t)}function renderItemContent(e,l){var i=e.props,t=e.reactData,r=e.internalData,s=e.xeGrid,{computeCollapseOpts:n,computeValidOpts:o}=e.getComputeMaps(),r=r.itemFormatCache,{data:i,readonly:a,disabled:u}=i,t=t.collapseAll,{slots:d,field:m,itemRender:c,collapseNode:f,errRule:v,formatter:_}=l,p=d?d.default:null,d=d?d.valid:null,n=n.value,o=o.value,{showErrorMessage:g,showMessage:x}=o,h=(0,_utils.isEnableConf)(c)?_ui.renderer.get(c.name):null,I=_xeUtils.default.get(i,m),i={data:i,disabled:u,readonly:a,field:m,property:m,item:l,itemValue:I,$form:e,$grid:s};let C=[];var u=h?h.renderFormItemContent||h.renderItemContent:null;if(p)C=e.callSlot(p,i);else if(u)C=(0,_vn.getSlotVNs)(u(c,i));else if(m){let t=I;if(_){let e;if(m){a=r[m];if(a)if(e=a.formatData){if(e.value===I)return e.label}else e=a.formatData={};else r[m]={field:m}}t=_xeUtils.default.isString(_)?(s=(l=_ui.formats.get(_))?l.formItemFormatMethod:null)?s(i):"":_xeUtils.default.isArray(_)?(p=(h=_ui.formats.get(_[0]))?h.formItemFormatMethod:null)?p(i,..._.slice(1)):"":_(i),e&&(e.value=I,e.label=t)}C=[(0,_utils.eqEmptyValue)(t)?"":""+t]}return f&&C.push((0,_vue.h)("div",{class:"vxe-form--item-trigger-node",onClick:e.toggleCollapseEvent},[(0,_vue.h)("span",{class:"vxe-form--item-trigger-text"},t?n.unfoldButtonText||(0,_ui.getI18n)("vxe.form.unfolding"):n.foldButtonText||(0,_ui.getI18n)("vxe.form.folding")),(0,_vue.h)("i",{class:["vxe-form--item-trigger-icon",t?n.foldIcon||(0,_ui.getIcon)().FORM_FOLDING:n.unfoldIcon||(0,_ui.getIcon)().FORM_UNFOLDING]})])),v&&(_xeUtils.default.isBoolean(g)?g:x)&&(u=Object.assign(Object.assign({},i),{rule:v}),C.push((0,_vue.h)("div",{class:"vxe-form-item--valid-error-tip",style:v.maxWidth?{width:(0,_dom.toCssUnit)(v.maxWidth)}:null},[(0,_vue.h)("div",{class:"vxe-form-item--valid-error-wrapper vxe-form-item--valid-error-theme-"+(o.theme||"normal")},[d?e.callSlot(d,u):[(0,_vue.h)("span",{class:"vxe-form--item--valid-error-msg"},v.content||v.message)]])]))),(0,_vue.h)("div",{key:"ct",class:"vxe-form--item-inner"},C)}
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.getItemClass=getItemClass,exports.getItemContentClass=getItemContentClass,exports.renderItemContent=renderItemContent,exports.renderItemErrorIcon=renderItemErrorIcon,exports.renderTitle=renderTitle;var _vue=require("vue"),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("./util"),_tooltip=_interopRequireDefault(require("../../tooltip/src/tooltip")),_icon=_interopRequireDefault(require("../../icon/src/icon")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function renderPrefixIcon(e){return(0,_vue.h)("span",{class:"vxe-form--item-title-tip-prefix"},[(0,_vue.h)(_icon.default,{class:e.icon||(0,_ui.getIcon)().FORM_PREFIX,status:e.iconStatus})])}function renderSuffixIcon(e){return(0,_vue.h)("span",{class:"vxe-form--item-title-tip-suffix"},[(0,_vue.h)(_icon.default,{class:e.icon||(0,_ui.getIcon)().FORM_SUFFIX,status:e.iconStatus})])}function getItemClass(e,t,l){var i=e.props,r=e.reactData,s=e.xeGrid,{computeSize:n,computeValidOpts:o}=e.getComputeMaps(),{data:i,rules:a,readonly:u,disabled:d,span:m,titleBackground:c,titleBold:f,titleColon:v,titleAsterisk:_,vertical:p,padding:g}=i,r=r.collapseAll,{folding:x,field:h,itemRender:I,showError:C,className:b,vertical:U,padding:y,children:q,showContent:N}=t,n=n.value,{showErrorMessage:o,showMessage:F,showErrorBackground:O,showErrorIcon:E}=o.value,I=(0,_utils.isEnableConf)(I)?_ui.renderer.get(I.name):null,I=I?I.formItemClassName||I.itemClassName:"",m=t.span||m,g=_xeUtils.default.eqNull(y)?g:y,y=_xeUtils.default.eqNull(U)?p:U,p=_xeUtils.default.eqNull(t.titleBackground)?c:t.titleBackground,U=_xeUtils.default.eqNull(t.titleBold)?f:t.titleBold,c=_xeUtils.default.eqNull(t.titleColon)?v:t.titleColon,f=_xeUtils.default.eqNull(t.titleAsterisk)?_:t.titleAsterisk,v={data:i,disabled:d,readonly:u,field:h,property:h,item:t,$form:e,$grid:s},_=q&&0<q.length;let w=!1,T=!1;!u&&a&&(i=t.rules||a[h])&&i.length&&(T=!0,w=i.some(e=>e.required));d=_xeUtils.default.isBoolean(o)?o:F;return[l||_?"vxe-form--group":"","vxe-form--item",t.id,m?`vxe-form--item-col_${m} is--span`:"",`${d?"show":"hide"}--err-msg`,b?_xeUtils.default.isFunction(b)?b(v):b:"",I?_xeUtils.default.isFunction(I)?I(v):I:"",{["size--"+n]:n,"is--colon":c,"is--tbg":p,"is--bold":U,"is--padding":g,"is--vertical":y,"is--asterisk":f,"hide--content":!1===N,"is--valid":T,"is--required":w,"is--hidden":x&&r,"is--active":(0,_util.isActiveItem)(e,t),"err--icon":E,"err--bg":O,"is--error":C}]}function getItemContentClass(e,t,l){var i=e.props,r=e.xeGrid,{data:i,readonly:s,disabled:n,align:o,verticalAlign:a}=i,{field:u,itemRender:d,contentClassName:m,children:c}=t,c=c&&0<c.length,d=(0,_utils.isEnableConf)(d)?_ui.renderer.get(d.name):null,d=d?d.formItemContentClassName||d.itemContentClassName:"",o=!c&&_xeUtils.default.eqNull(t.align)?o:t.align,a=!c&&_xeUtils.default.eqNull(t.verticalAlign)?a:t.verticalAlign,i={data:i,disabled:n,readonly:s,field:u,property:u,item:t,$form:e,$grid:r};return[l||c?"vxe-form--group-content vxe-form--item-row":"","vxe-form--item-content",o?"align--"+o:"",a?"vertical-align--"+a:"",d?_xeUtils.default.isFunction(d)?d(i):d:"",m?_xeUtils.default.isFunction(m)?m(i):m:""]}function renderTitle(t,e,l){var i=t.props,r=t.xeGrid,{data:i,readonly:s,disabled:n,titleAlign:o,titleWidth:a,titleOverflow:u,vertical:d}=i;let{slots:m,title:c,field:f,itemRender:v,titleOverflow:_,vertical:p,showTitle:g,titleClassName:x,titleStyle:h,titlePrefix:I,titleSuffix:C,children:b,showContent:U}=e;var y=t.getComputeMaps().computeTooltipOpts,y=y.value,q=(0,_utils.isEnableConf)(v)?_ui.renderer.get(v.name):null,N=q?q.formItemTitleClassName||q.itemTitleClassName:"",F=q?q.formItemTitleStyle||q.itemTitleStyle:null,d=_xeUtils.default.eqNull(p)?d:p,o=_xeUtils.default.eqNull(e.titleAlign)?o:e.titleAlign,d=d?null:_xeUtils.default.eqNull(e.titleWidth)?a:e.titleWidth,a=_xeUtils.default.eqNull(_)?u:_,u="title"===a,O=!0===a||"tooltip"===a,a=u||O||"ellipsis"===a;let E={data:i,disabled:n,readonly:s,field:f,property:f,item:e,$form:t,$grid:r};var i=m?m.title:null,n=m?m.prefix:null,s=m?m.suffix||m.extra:null,r=!1!==g&&(c||i),w=b&&0<b.length,T=[],n=(n&&T.push((0,_vue.h)("span",{key:"pt",class:"vxe-form--item-title-prefix"},t.callSlot(n,E))),I&&T.push(I.content||I.message?(0,_vue.h)(_tooltip.default,Object.assign(Object.assign(Object.assign({key:"pm"},y),I),{content:(0,_utils.getFuncText)(I.content||I.message)}),{default:()=>renderPrefixIcon(I)}):renderPrefixIcon(I)),q?q.renderFormItemTitle||q.renderItemTitle:null),q=(T.push((0,_vue.h)("span",{key:"pl",class:"vxe-form--item-title-label"},i?t.callSlot(i,E):n?(0,_vn.getSlotVNs)(n(v,E)):(0,_utils.getFuncText)(e.title))),[]),i=(C&&q.push(C.content||C.message?(0,_vue.h)(_tooltip.default,Object.assign(Object.assign(Object.assign({key:"sm"},y),C),{content:(0,_utils.getFuncText)(C.content||C.message)}),{default:()=>renderSuffixIcon(C)}):renderSuffixIcon(C)),s&&q.push((0,_vue.h)("span",{key:"st",class:"vxe-form--item-title-suffix"},t.callSlot(s,E))),O?{onMouseenter(e){t.triggerTitleTipEvent(e,E)},onMouseleave:t.handleTitleTipLeaveEvent}:{}),n=Object.assign({},_xeUtils.default.isFunction(F)?F(E):F,_xeUtils.default.isFunction(h)?h(E):h);return d&&"auto"!==d&&!1!==U&&(n.width=(0,_dom.toCssUnit)(d)),r?(0,_vue.h)("div",Object.assign({class:[l||w?"vxe-form--group-title":"","vxe-form--item-title",o?"align--"+o:"",a?"is--ellipsis":"",N?_xeUtils.default.isFunction(N)?N(E):N:"",x?_xeUtils.default.isFunction(x)?x(E):x:""],style:n,itemid:e.id,title:u?(0,_utils.getFuncText)(c):null},i),[(0,_vue.h)("div",{class:"vxe-form--item-title-content"},T),(0,_vue.h)("div",{class:"vxe-form--item-title-postfix"},q)]):(0,_ui.renderEmptyElement)(t)}function renderItemErrorIcon(t,l){var e=t.getComputeMaps().computeValidOpts,e=e.value,{showErrorIcon:i,errorIcon:r}=e,{errRule:s,showIconMsg:n}=l;return i?(0,_vue.h)("div",{key:"emi",class:["vxe-form-item--valid-error-icon-wrapper",{"is--show":n,"is--hide":!n}]},[(0,_vue.h)("span",{class:"vxe-form-item--valid-error-icon-btn",onClick(e){t.handleValidIconEvent(e,{item:l})}},[(0,_vue.h)("i",{class:r||(0,_ui.getIcon)().FORM_VALID_ERROR_ICON})]),(0,_vue.h)("div",{class:"vxe-form-item--valid-error-icon-msg-tip"},s?[(0,_vue.h)("div",{class:"vxe-form-item--valid-error-icon-msg vxe-form-item--valid-error-icon-theme-"+(e.theme||"normal")},s.content||s.message)]:[])]):(0,_ui.renderEmptyElement)(t)}function renderItemContent(e,l){var i=e.props,t=e.reactData,r=e.internalData,s=e.xeGrid,{computeCollapseOpts:n,computeValidOpts:o}=e.getComputeMaps(),r=r.itemFormatCache,{data:i,readonly:a,disabled:u}=i,t=t.collapseAll,{slots:d,field:m,itemRender:c,collapseNode:f,errRule:v,formatter:_}=l,p=d?d.default:null,d=d?d.valid:null,n=n.value,o=o.value,{showErrorMessage:g,showMessage:x}=o,h=(0,_utils.isEnableConf)(c)?_ui.renderer.get(c.name):null,I=_xeUtils.default.get(i,m),i={data:i,disabled:u,readonly:a,field:m,property:m,item:l,itemValue:I,$form:e,$grid:s};let C=[];var u=h?h.renderFormItemContent||h.renderItemContent:null;if(p)C=e.callSlot(p,i);else if(u)C=(0,_vn.getSlotVNs)(u(c,i));else if(m){let t=I;if(_){let e;if(m){a=r[m];if(a)if(e=a.formatData){if(e.value===I)return e.label}else e=a.formatData={};else r[m]={field:m}}t=_xeUtils.default.isString(_)?(s=(l=_ui.formats.get(_))?l.formItemFormatMethod:null)?s(i):"":_xeUtils.default.isArray(_)?(p=(h=_ui.formats.get(_[0]))?h.formItemFormatMethod:null)?p(i,..._.slice(1)):"":_(i),e&&(e.value=I,e.label=t)}C=[(0,_utils.eqEmptyValue)(t)?"":""+t]}return f&&C.push((0,_vue.h)("div",{class:"vxe-form--item-trigger-node",onClick:e.toggleCollapseEvent},[(0,_vue.h)("span",{class:"vxe-form--item-trigger-text"},t?n.unfoldButtonText||(0,_ui.getI18n)("vxe.form.unfolding"):n.foldButtonText||(0,_ui.getI18n)("vxe.form.folding")),(0,_vue.h)("i",{class:["vxe-form--item-trigger-icon",t?n.foldIcon||(0,_ui.getIcon)().FORM_FOLDING:n.unfoldIcon||(0,_ui.getIcon)().FORM_UNFOLDING]})])),v&&(_xeUtils.default.isBoolean(g)?g:x)&&(u=Object.assign(Object.assign({},i),{rule:v}),C.push((0,_vue.h)("div",{class:"vxe-form-item--valid-error-tip",style:v.maxWidth?{width:(0,_dom.toCssUnit)(v.maxWidth)}:null},[(0,_vue.h)("div",{class:"vxe-form-item--valid-error-wrapper vxe-form-item--valid-error-theme-"+(o.theme||"normal")},[d?e.callSlot(d,u):[(0,_vue.h)("span",{class:"vxe-form--item--valid-error-msg"},v.content||v.message)]])]))),(0,_vue.h)("div",{key:"ct",class:"vxe-form--item-inner"},C)}
package/lib/index.umd.js CHANGED
@@ -4646,7 +4646,7 @@ function checkDynamic() {
4646
4646
  }
4647
4647
  ;// ./packages/ui/src/log.ts
4648
4648
 
4649
- const log_version = `ui v${"4.14.21"}`;
4649
+ const log_version = `ui v${"4.14.23"}`;
4650
4650
  const warnLog = log.create('warn', log_version);
4651
4651
  const errLog = log.create('error', log_version);
4652
4652
  ;// ./packages/ui/index.ts
@@ -4654,7 +4654,7 @@ const errLog = log.create('error', log_version);
4654
4654
 
4655
4655
 
4656
4656
 
4657
- const ui_version = "4.14.21";
4657
+ const ui_version = "4.14.23";
4658
4658
  VxeUI.uiVersion = ui_version;
4659
4659
  VxeUI.dynamicApp = dynamicApp;
4660
4660
  function config(options) {
@@ -5553,6 +5553,10 @@ setIcon({
5553
5553
  expMergeTitle: '如果存在,则支持带有合并结构的单元格',
5554
5554
  expOptAllExpand: '展开树',
5555
5555
  expAllExpandTitle: '如果存在,则支持将带有层级结构的数据全部展开',
5556
+ expOptTreeAllExpand: '展开树',
5557
+ expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
5558
+ expOptRowGroupAllExpand: '展开分组',
5559
+ expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
5556
5560
  expOptUseStyle: '样式',
5557
5561
  expUseStyleTitle: '如果存在,则支持带样式的单元格',
5558
5562
  expOptOriginal: '源数据',
@@ -25630,7 +25634,7 @@ function getItemClass($xeForm, item, isGroup) {
25630
25634
  let isRequired = false;
25631
25635
  let isValid = false;
25632
25636
  if (!readonly && rules) {
25633
- const itemRules = rules[field];
25637
+ const itemRules = item.rules ? item.rules : rules[field];
25634
25638
  if (itemRules && itemRules.length) {
25635
25639
  isValid = true;
25636
25640
  isRequired = itemRules.some(rule => rule.required);
@@ -27286,7 +27290,8 @@ function form_createInternalData() {
27286
27290
  const errorRules = [];
27287
27291
  const syncVailds = [];
27288
27292
  if (property && formRules) {
27289
- const rules = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(formRules, property);
27293
+ const item = getItemByField(property);
27294
+ const rules = item && item.rules ? item.rules : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(formRules, property);
27290
27295
  if (rules) {
27291
27296
  const itemValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(val) ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(data, property) : val;
27292
27297
  rules.forEach(rule => {
@@ -42050,12 +42055,16 @@ const scrollbarOffsetSize = 20;
42050
42055
  });
42051
42056
  const computeWrapperStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
42052
42057
  const {
42053
- width
42058
+ width,
42059
+ height
42054
42060
  } = props;
42055
42061
  const stys = {};
42056
42062
  if (width) {
42057
42063
  stys.width = toCssUnit(width);
42058
42064
  }
42065
+ if (height) {
42066
+ stys.height = height === 'auto' ? '100%' : toCssUnit(height);
42067
+ }
42059
42068
  return stys;
42060
42069
  });
42061
42070
  const computeCloseOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {