@koi-design/uxd-ui 14.0.4 → 14.0.6

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 (146) hide show
  1. package/es/components/Calendar/Calendar.vue.d.ts +15 -0
  2. package/es/components/Calendar/Header.vue.d.ts +15 -0
  3. package/es/components/Calendar/index.d.ts +30 -0
  4. package/es/components/Radio/Radio.mjs +5 -4
  5. package/es/components/Radio/Radio.mjs.map +1 -1
  6. package/es/components/Radio/Radio.type.d.ts +4 -0
  7. package/es/components/Radio/Radio.type.mjs +4 -0
  8. package/es/components/Radio/Radio.type.mjs.map +1 -1
  9. package/es/components/Radio/Radio.vue.d.ts +9 -0
  10. package/es/components/Radio/index.d.ts +15 -0
  11. package/es/components/Table/BaseTable.mjs +20 -6
  12. package/es/components/Table/BaseTable.mjs.map +1 -1
  13. package/es/components/Table/BaseTable.vue.d.ts +44 -9
  14. package/es/components/Table/BodyTable.vue.d.ts +44 -9
  15. package/es/components/Table/HeadTable.vue.d.ts +44 -9
  16. package/es/components/Table/Table.mjs +8 -9
  17. package/es/components/Table/Table.mjs.map +1 -1
  18. package/es/components/Table/Table.type.d.ts +7 -5
  19. package/es/components/Table/Table.type.mjs.map +1 -1
  20. package/es/components/Table/Table.vue.d.ts +88 -18
  21. package/es/components/Table/TableBox.vue.d.ts +88 -18
  22. package/es/components/Table/hooks/useTableResize.d.ts +1 -1
  23. package/es/components/Table/hooks/useTableResize.mjs +13 -71
  24. package/es/components/Table/hooks/useTableResize.mjs.map +1 -1
  25. package/es/components/Table/tableUnits/ColGroup.mjs +8 -5
  26. package/es/components/Table/tableUnits/ColGroup.mjs.map +1 -1
  27. package/es/components/Table/tableUnits/ExpandIcon.mjs +2 -2
  28. package/es/components/Table/tableUnits/ExpandIcon.mjs.map +1 -1
  29. package/es/components/Table/tableUnits/ExpandIcon.vue.d.ts +3 -3
  30. package/es/components/Table/tableUnits/ExpandRows.mjs.map +1 -1
  31. package/es/components/Table/tableUnits/ExpandRows.vue.d.ts +21 -3
  32. package/es/components/Table/tableUnits/SelectionBox.vue.d.ts +15 -0
  33. package/es/components/Table/tableUnits/TableBody.vue.d.ts +42 -6
  34. package/es/components/Table/tableUnits/TableCell.mjs +108 -95
  35. package/es/components/Table/tableUnits/TableCell.mjs.map +1 -1
  36. package/es/components/Table/tableUnits/TableCell.vue.d.ts +21 -3
  37. package/es/components/Table/tableUnits/TableRow.vue.d.ts +21 -3
  38. package/es/components/Tabs/TabNav.mjs +4 -5
  39. package/es/components/Tabs/TabNav.mjs.map +1 -1
  40. package/es/components/Tabs/TabNav.vue.d.ts +1 -1
  41. package/es/components/Tabs/Tabs.d.ts +1 -1
  42. package/es/components/Tabs/index.d.ts +3 -3
  43. package/es/components/base/ResizeObserver.mjs +1 -1
  44. package/es/components/base/ResizeObserver.mjs.map +1 -1
  45. package/lib/components/Calendar/Calendar.vue.d.ts +15 -0
  46. package/lib/components/Calendar/Header.vue.d.ts +15 -0
  47. package/lib/components/Calendar/index.d.ts +30 -0
  48. package/lib/components/Radio/Radio.js +4 -3
  49. package/lib/components/Radio/Radio.js.map +1 -1
  50. package/lib/components/Radio/Radio.type.d.ts +4 -0
  51. package/lib/components/Radio/Radio.type.js +4 -0
  52. package/lib/components/Radio/Radio.type.js.map +1 -1
  53. package/lib/components/Radio/Radio.vue.d.ts +9 -0
  54. package/lib/components/Radio/index.d.ts +15 -0
  55. package/lib/components/Table/BaseTable.js +20 -6
  56. package/lib/components/Table/BaseTable.js.map +1 -1
  57. package/lib/components/Table/BaseTable.vue.d.ts +44 -9
  58. package/lib/components/Table/BodyTable.vue.d.ts +44 -9
  59. package/lib/components/Table/HeadTable.vue.d.ts +44 -9
  60. package/lib/components/Table/Table.js +7 -8
  61. package/lib/components/Table/Table.js.map +1 -1
  62. package/lib/components/Table/Table.type.d.ts +7 -5
  63. package/lib/components/Table/Table.type.js.map +1 -1
  64. package/lib/components/Table/Table.vue.d.ts +88 -18
  65. package/lib/components/Table/TableBox.vue.d.ts +88 -18
  66. package/lib/components/Table/hooks/useTableResize.d.ts +1 -1
  67. package/lib/components/Table/hooks/useTableResize.js +11 -69
  68. package/lib/components/Table/hooks/useTableResize.js.map +1 -1
  69. package/lib/components/Table/tableUnits/ColGroup.js +8 -5
  70. package/lib/components/Table/tableUnits/ColGroup.js.map +1 -1
  71. package/lib/components/Table/tableUnits/ExpandIcon.js +1 -1
  72. package/lib/components/Table/tableUnits/ExpandIcon.js.map +1 -1
  73. package/lib/components/Table/tableUnits/ExpandIcon.vue.d.ts +3 -3
  74. package/lib/components/Table/tableUnits/ExpandRows.js.map +1 -1
  75. package/lib/components/Table/tableUnits/ExpandRows.vue.d.ts +21 -3
  76. package/lib/components/Table/tableUnits/SelectionBox.vue.d.ts +15 -0
  77. package/lib/components/Table/tableUnits/TableBody.vue.d.ts +42 -6
  78. package/lib/components/Table/tableUnits/TableCell.js +107 -94
  79. package/lib/components/Table/tableUnits/TableCell.js.map +1 -1
  80. package/lib/components/Table/tableUnits/TableCell.vue.d.ts +21 -3
  81. package/lib/components/Table/tableUnits/TableRow.vue.d.ts +21 -3
  82. package/lib/components/Tabs/TabNav.js +3 -4
  83. package/lib/components/Tabs/TabNav.js.map +1 -1
  84. package/lib/components/Tabs/TabNav.vue.d.ts +1 -1
  85. package/lib/components/Tabs/Tabs.d.ts +1 -1
  86. package/lib/components/Tabs/index.d.ts +3 -3
  87. package/lib/components/base/ResizeObserver.js +1 -1
  88. package/lib/components/base/ResizeObserver.js.map +1 -1
  89. package/package.json +1 -1
  90. package/styles/components/alert/index.css +1 -1
  91. package/styles/components/autoComplete/index.css +1 -1
  92. package/styles/components/avatar/index.css +1 -1
  93. package/styles/components/button/index.css +1 -1
  94. package/styles/components/carousel/index.css +1 -1
  95. package/styles/components/cascader/index.css +1 -1
  96. package/styles/components/datePicker/index.css +1 -1
  97. package/styles/components/dropdown/index.css +1 -1
  98. package/styles/components/dropdown/index.less +2 -3
  99. package/styles/components/form/index.css +1 -1
  100. package/styles/components/icon/index.css +1 -1
  101. package/styles/components/input/index.css +1 -1
  102. package/styles/components/inputNumber/index.css +1 -1
  103. package/styles/components/link/index.css +1 -1
  104. package/styles/components/mentions/index.css +1 -1
  105. package/styles/components/modal/index.css +1 -1
  106. package/styles/components/select/index.css +1 -1
  107. package/styles/components/spin/index.css +1 -1
  108. package/styles/components/table/index.css +1 -1
  109. package/styles/components/table/index.less +106 -242
  110. package/styles/components/table/var.less +16 -31
  111. package/styles/components/tabs/borderCard.less +23 -27
  112. package/styles/components/tabs/card.less +18 -37
  113. package/styles/components/tabs/index.css +1 -1
  114. package/styles/components/tabs/index.less +103 -72
  115. package/styles/components/tabs/var.less +16 -71
  116. package/styles/components/timePicker/index.css +1 -1
  117. package/styles/cssVariable.css +1 -1
  118. package/styles/cssVariable.less +1 -1
  119. package/styles/index.css +1 -1
  120. package/types/components/Calendar/Calendar.vue.d.ts +15 -0
  121. package/types/components/Calendar/Header.vue.d.ts +15 -0
  122. package/types/components/Calendar/index.d.ts +30 -0
  123. package/types/components/Radio/Radio.type.d.ts +4 -0
  124. package/types/components/Radio/Radio.vue.d.ts +9 -0
  125. package/types/components/Radio/index.d.ts +15 -0
  126. package/types/components/Table/BaseTable.vue.d.ts +44 -9
  127. package/types/components/Table/BodyTable.vue.d.ts +44 -9
  128. package/types/components/Table/HeadTable.vue.d.ts +44 -9
  129. package/types/components/Table/Table.type.d.ts +7 -5
  130. package/types/components/Table/Table.vue.d.ts +88 -18
  131. package/types/components/Table/TableBox.vue.d.ts +88 -18
  132. package/types/components/Table/hooks/useTableResize.d.ts +1 -1
  133. package/types/components/Table/tableUnits/ExpandIcon.vue.d.ts +3 -3
  134. package/types/components/Table/tableUnits/ExpandRows.vue.d.ts +21 -3
  135. package/types/components/Table/tableUnits/SelectionBox.vue.d.ts +15 -0
  136. package/types/components/Table/tableUnits/TableBody.vue.d.ts +42 -6
  137. package/types/components/Table/tableUnits/TableCell.vue.d.ts +21 -3
  138. package/types/components/Table/tableUnits/TableRow.vue.d.ts +21 -3
  139. package/types/components/Tabs/TabNav.vue.d.ts +1 -1
  140. package/types/components/Tabs/Tabs.d.ts +1 -1
  141. package/types/components/Tabs/index.d.ts +3 -3
  142. package/uxd-ui.css +1 -1
  143. package/uxd-ui.esm.min.mjs +6 -6
  144. package/uxd-ui.esm.mjs +164 -191
  145. package/uxd-ui.umd.js +164 -191
  146. package/uxd-ui.umd.min.js +6 -6
package/uxd-ui.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @koi-design/uxd-ui@4.0.4 */
1
+ /*! @koi-design/uxd-ui@4.0.6 */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('lucide-vue-next')) :
@@ -7503,7 +7503,7 @@
7503
7503
  if (stateWidth !== _width || stateHeight !== _height) {
7504
7504
  stateWidth = _width;
7505
7505
  stateHeight = _height;
7506
- emit("resize", { widht: _width, height: _height });
7506
+ emit("resize", { target, width: _width, height: _height });
7507
7507
  }
7508
7508
  };
7509
7509
  const destroyObserver = () => {
@@ -15480,6 +15480,10 @@
15480
15480
  type: [String, Number],
15481
15481
  default: ""
15482
15482
  },
15483
+ label: {
15484
+ type: String,
15485
+ default: ""
15486
+ },
15483
15487
  disabled: {
15484
15488
  type: Boolean,
15485
15489
  default: false
@@ -15684,13 +15688,14 @@
15684
15688
  onBlur: _cache[2] || (_cache[2] = (...args) => _ctx.handleOnBlur && _ctx.handleOnBlur(...args))
15685
15689
  }, null, 42, _hoisted_1$I)
15686
15690
  ], 2),
15687
- vue.createElementVNode("span", {
15691
+ _ctx.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("span", {
15692
+ key: 0,
15688
15693
  class: vue.normalizeClass([`${_ctx.prefixCls}-label`])
15689
15694
  }, [
15690
15695
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
15691
- vue.createTextVNode(vue.toDisplayString(_ctx.value), 1)
15696
+ vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
15692
15697
  ])
15693
- ], 2)
15698
+ ], 2)) : vue.createCommentVNode("v-if", true)
15694
15699
  ], 2);
15695
15700
  }
15696
15701
  var Radio = /* @__PURE__ */ _export_sfc(_sfc_main$1N, [["render", _sfc_render$1L], ["__file", "Radio.vue"]]);
@@ -32059,19 +32064,22 @@
32059
32064
  },
32060
32065
  setup(props) {
32061
32066
  const {
32062
- size: { sizesMap }
32067
+ size: { resizeColumns }
32063
32068
  } = vue.inject("tableContext", {});
32064
32069
  const cols = vue.computed(() => {
32065
32070
  let rst = [];
32066
32071
  rst = rst.concat(
32067
32072
  getLeafColumns(props.columns).map((col) => {
32073
+ var _a;
32068
32074
  const { fixed } = col;
32069
32075
  const colKey = getColumnKey(col);
32070
- const w = sizesMap[colKey] ? `${sizesMap[colKey]}px` : "";
32076
+ const resizeWidth = (_a = resizeColumns.value.find((x) => x.key === colKey)) == null ? void 0 : _a.width;
32071
32077
  return {
32072
- width: w,
32078
+ width: typeof col.width === "number" ? `${col.width}px` : col.width,
32079
+ minWidth: typeof col.minWidth === "number" ? `${col.minWidth}px` : col.minWidth,
32073
32080
  key: colKey,
32074
- fixed: !!fixed
32081
+ fixed: !!fixed,
32082
+ resizeWidth: resizeWidth ? `${resizeWidth}px` : void 0
32075
32083
  };
32076
32084
  })
32077
32085
  );
@@ -32087,7 +32095,7 @@
32087
32095
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.cols, (col) => {
32088
32096
  return vue.openBlock(), vue.createElementBlock("col", {
32089
32097
  key: col.key,
32090
- style: vue.normalizeStyle({ width: col.width, maxWidth: col.fixed ? col.width : "" })
32098
+ style: vue.normalizeStyle({ width: col.resizeWidth ? col.resizeWidth : col.width, minWidth: col.minWidth, maxWidth: col.fixed ? col.width : "" })
32091
32099
  }, null, 4);
32092
32100
  }), 128))
32093
32101
  ]);
@@ -32310,8 +32318,8 @@
32310
32318
  return _width;
32311
32319
  }
32312
32320
  function useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props) {
32313
- const sizesMap = vue.reactive({});
32314
32321
  const tableWidth = vue.ref(void 0);
32322
+ const resizeColumns = vue.shallowRef([]);
32315
32323
  const syncColumnsWidth = () => {
32316
32324
  const { bodyTable } = tableRefs;
32317
32325
  if (!bodyTable || bodyTable.getWidth() === void 0) {
@@ -32319,73 +32327,15 @@
32319
32327
  }
32320
32328
  const wrapWidth = bodyTable.getWidth();
32321
32329
  const columns = getLeafColumns(updatedColumns.value);
32322
- let usedWidth = 0;
32323
- Object.keys(sizesMap).forEach((key) => {
32324
- delete sizesMap[key];
32325
- });
32326
- const minWidthColumns = [];
32327
- const maxWidthColumns = [];
32328
- const nothingColumns = [];
32329
- columns.forEach((c) => {
32330
- const colKey = getColumnKey(c);
32331
- if (c.width) {
32332
- const _width = getWidth(c.width, wrapWidth);
32333
- usedWidth += _width;
32334
- sizesMap[colKey] = _width;
32335
- } else if (c.minWidth) {
32336
- const _width = getWidth(c.minWidth, wrapWidth);
32337
- usedWidth += _width;
32338
- sizesMap[colKey] = _width;
32339
- minWidthColumns.push(c);
32340
- } else {
32341
- const minWidth = getMinWidth(c);
32342
- sizesMap[colKey] = minWidth;
32343
- usedWidth += minWidth;
32344
- if (c.maxWidth) {
32345
- maxWidthColumns.push(c);
32346
- } else {
32347
- nothingColumns.push(c);
32348
- }
32349
- }
32350
- });
32351
- let unUsedWidth = wrapWidth - usedWidth;
32352
- let length = minWidthColumns.length + maxWidthColumns.length + nothingColumns.length;
32353
- if (unUsedWidth > 0 && length > 0) {
32354
- let avgWidth;
32355
- maxWidthColumns.forEach((mc) => {
32356
- avgWidth = Math.floor(unUsedWidth / length);
32357
- if (getWidth(mc.maxWidth, wrapWidth) < avgWidth) {
32358
- sizesMap[mc.key] = getWidth(mc.maxWidth, wrapWidth);
32359
- unUsedWidth -= getWidth(mc.maxWidth, wrapWidth) - getMinWidth(mc);
32360
- } else {
32361
- sizesMap[mc.key] += avgWidth;
32362
- unUsedWidth -= avgWidth;
32363
- }
32364
- length -= 1;
32365
- });
32366
- avgWidth = Math.floor(unUsedWidth / length);
32367
- if (avgWidth > 50 || nothingColumns.length === 0) {
32368
- [...minWidthColumns, ...nothingColumns].forEach((c, i) => {
32369
- if (i < length - 1) {
32370
- sizesMap[c.key] += avgWidth;
32371
- unUsedWidth -= avgWidth;
32372
- } else {
32373
- sizesMap[c.key] += unUsedWidth;
32374
- }
32375
- });
32376
- } else {
32377
- avgWidth = Math.floor(unUsedWidth / nothingColumns.length);
32378
- nothingColumns.forEach((c, i) => {
32379
- if (i < nothingColumns.length - 1) {
32380
- sizesMap[c.key] += avgWidth;
32381
- unUsedWidth -= avgWidth;
32382
- } else {
32383
- sizesMap[c.key] += unUsedWidth;
32384
- }
32385
- });
32386
- }
32330
+ const totalWidth = columns.reduce((sum, col) => {
32331
+ var _a;
32332
+ return sum + getWidth((_a = col.width) != null ? _a : col.minWidth, wrapWidth);
32333
+ }, 0);
32334
+ if (totalWidth > wrapWidth) {
32335
+ tableWidth.value = totalWidth;
32336
+ } else {
32337
+ tableWidth.value = void 0;
32387
32338
  }
32388
- tableWidth.value = Object.keys(sizesMap).reduce((sum, key) => sum + sizesMap[key], 0);
32389
32339
  };
32390
32340
  let syncHeightTimer = null;
32391
32341
  const scrollPosition = vue.ref("left");
@@ -32423,8 +32373,8 @@
32423
32373
  const _column = columns.find((c) => c === column || getColumnKey(c) === getColumnKey(column));
32424
32374
  if (_column) {
32425
32375
  _column.width = width;
32426
- handleResize();
32427
32376
  }
32377
+ resizeColumns.value = columns;
32428
32378
  };
32429
32379
  const isScrollX = vue.computed(() => {
32430
32380
  const { table } = tableRefs;
@@ -32450,10 +32400,10 @@
32450
32400
  }
32451
32401
  };
32452
32402
  return {
32453
- sizesMap,
32454
32403
  tableWidth,
32455
32404
  isScrollX,
32456
32405
  scrollPosition,
32406
+ resizeColumns,
32457
32407
  handleResize,
32458
32408
  setScrollPositionClass,
32459
32409
  resetScrollX,
@@ -32854,7 +32804,7 @@
32854
32804
  },
32855
32805
  expandIcon: {
32856
32806
  type: [String, Object, Function],
32857
- default: () => lucideVueNext.ChevronRight
32807
+ default: void 0
32858
32808
  },
32859
32809
  needIndentSpaced: {
32860
32810
  type: Boolean,
@@ -32935,7 +32885,8 @@
32935
32885
  ExpandIcon,
32936
32886
  UTooltip,
32937
32887
  USkeleton,
32938
- USkeletonItem
32888
+ USkeletonItem,
32889
+ ResizeObserver: ResizeObserver$1
32939
32890
  },
32940
32891
  props: {
32941
32892
  prefixCls: {
@@ -32976,12 +32927,12 @@
32976
32927
  props: { indentSize },
32977
32928
  expand: { handleExpandChange, isRowExpanded },
32978
32929
  filterAndSorter: { hasAction, hasSorters, hasFilters, isSortColumn },
32979
- size: { sizesMap },
32980
32930
  pagination
32981
32931
  } = vue.inject("tableContext", {});
32982
32932
  const cellRef = vue.ref();
32983
32933
  const ellipsisSpanRef = vue.ref();
32984
32934
  const isOverflow = vue.ref(false);
32935
+ const isMinWidth = vue.ref(false);
32985
32936
  const renderFn = vue.computed(() => {
32986
32937
  const { render } = props.column;
32987
32938
  return render || null;
@@ -33026,6 +32977,9 @@
33026
32977
  if (right !== void 0) {
33027
32978
  style.right = `${right}px`;
33028
32979
  }
32980
+ if (isMinWidth.value) {
32981
+ style.width = `${props.column.minWidth}px`;
32982
+ }
33029
32983
  return style;
33030
32984
  });
33031
32985
  const handleExpand = (e) => {
@@ -33043,26 +32997,25 @@
33043
32997
  e
33044
32998
  );
33045
32999
  };
33046
- vue.watch(
33047
- () => sizesMap,
33048
- () => {
33000
+ const checkWidth = ({ target, width }) => {
33001
+ vue.nextTick(() => {
33049
33002
  if (ellipsisSpanRef.value) {
33050
- const cell = cellRef.value;
33003
+ const cell = target;
33051
33004
  const padding = (Number.parseInt(getStyle$1(cell, "paddingLeft")) || 0) + (Number.parseInt(getStyle$1(cell, "paddingRight")) || 0);
33052
33005
  const span = ellipsisSpanRef.value;
33053
33006
  const range = document.createRange();
33054
33007
  range.setStart(span, 0);
33055
33008
  range.setEnd(span, span.childNodes.length);
33056
33009
  const rangeWidth = range.getBoundingClientRect().width;
33057
- const colKey = getColumnKey(props.column);
33058
- const cellWidth = sizesMap[colKey];
33059
- if (rangeWidth + padding > cellWidth) {
33010
+ if (rangeWidth + padding > width) {
33060
33011
  isOverflow.value = true;
33012
+ } else {
33013
+ isOverflow.value = false;
33061
33014
  }
33062
33015
  }
33063
- },
33064
- { deep: true }
33065
- );
33016
+ });
33017
+ };
33018
+ const debouncedHandleResize = debounce$2((args) => checkWidth(args), 100);
33066
33019
  return {
33067
33020
  tablePrefixCls,
33068
33021
  isRender,
@@ -33082,97 +33035,106 @@
33082
33035
  pagination,
33083
33036
  cellRef,
33084
33037
  ellipsisSpanRef,
33085
- isOverflow
33038
+ isOverflow,
33039
+ debouncedHandleResize
33086
33040
  };
33087
33041
  }
33088
33042
  });
33089
33043
  function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
33090
- var _a;
33091
33044
  const _component_USkeletonItem = vue.resolveComponent("USkeletonItem");
33092
33045
  const _component_USkeleton = vue.resolveComponent("USkeleton");
33093
33046
  const _component_ExpandIcon = vue.resolveComponent("ExpandIcon");
33094
33047
  const _component_Render = vue.resolveComponent("Render");
33095
33048
  const _component_UTooltip = vue.resolveComponent("UTooltip");
33096
- return _ctx.showCell ? (vue.openBlock(), vue.createElementBlock("td", vue.mergeProps({
33097
- key: 0,
33098
- ref: "cellRef"
33099
- }, _ctx.tdProps, {
33100
- class: {
33101
- [`${_ctx.prefixCls}-cell-custom`]: !!((_a = _ctx.tdProps) == null ? void 0 : _a.class),
33102
- [`${_ctx.column.className}`]: !!_ctx.column.className,
33103
- [`${_ctx.prefixCls}-cell-ellipsis`]: !!_ctx.column.ellipsis,
33104
- [`${_ctx.prefixCls}-cell-break-word`]: !!_ctx.column.width,
33105
- [`${_ctx.tablePrefixCls}-column-has-actions`]: _ctx.hasAction(_ctx.column),
33106
- [`${_ctx.tablePrefixCls}-column-has-sorters`]: _ctx.hasSorters(_ctx.column),
33107
- [`${_ctx.tablePrefixCls}-column-has-filters`]: _ctx.hasFilters(_ctx.column),
33108
- [`${_ctx.tablePrefixCls}-column-sort`]: _ctx.isSortColumn(_ctx.column)
33109
- },
33110
- style: _ctx.tdStyle
33111
- }), [
33112
- _ctx.skeleton ? (vue.openBlock(), vue.createBlock(_component_USkeleton, {
33113
- key: 0,
33114
- class: vue.normalizeClass(`${_ctx.prefixCls}-skeleton-wrap`),
33115
- active: ""
33116
- }, {
33117
- default: vue.withCtx(() => [
33118
- _ctx.column.skeleton ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(Array(_ctx.column.skeleton.length), (_, ski) => {
33119
- return vue.openBlock(), vue.createBlock(_component_USkeletonItem, {
33120
- key: ski,
33121
- type: _ctx.column.skeleton[ski].type,
33122
- style: vue.normalizeStyle(_ctx.column.skeleton[ski].style)
33123
- }, null, 8, ["type", "style"]);
33124
- }), 128)) : (vue.openBlock(), vue.createBlock(_component_USkeletonItem, {
33125
- key: 1,
33126
- type: "text",
33127
- style: { "width": "50%" }
33128
- }))
33129
- ]),
33130
- _: 1
33131
- }, 8, ["class"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
33132
- _ctx.expandIcon ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
33133
- vue.createElementVNode("span", {
33134
- class: vue.normalizeClass(`${_ctx.prefixCls}-indent indent-level-${_ctx.indent}`),
33135
- style: vue.normalizeStyle({ paddingLeft: `${_ctx.indentSize * _ctx.indent}px` })
33136
- }, null, 6),
33137
- vue.createVNode(_component_ExpandIcon, {
33138
- "need-indent-spaced": "",
33139
- expandable: !!_ctx.data.children,
33140
- "need-loading": _ctx.data.children === true,
33141
- "row-key": _ctx.rowKey,
33142
- expanded: _ctx.isRowExpanded(_ctx.rowKey, true),
33143
- onExpand: _ctx.handleExpand,
33144
- onAsyncExpand: _ctx.handleAsyncExpand
33145
- }, null, 8, ["expandable", "need-loading", "row-key", "expanded", "onExpand", "onAsyncExpand"])
33146
- ], 64)) : vue.createCommentVNode("v-if", true),
33147
- _ctx.isRender ? (vue.openBlock(), vue.createBlock(_component_Render, {
33148
- key: 1,
33149
- render: () => {
33150
- var _a2;
33151
- return (_a2 = _ctx.renderFn) == null ? void 0 : _a2.call(_ctx, {
33152
- row: _ctx.data,
33153
- index: _ctx.index,
33154
- rowKey: _ctx.rowKey,
33155
- pagination: _ctx.pagination,
33156
- column: _ctx.column
33157
- });
33158
- }
33159
- }, null, 8, ["render"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
33160
- _ctx.column.ellipsis && _ctx.displayCell ? (vue.openBlock(), vue.createBlock(_component_UTooltip, {
33049
+ const _component_ResizeObserver = vue.resolveComponent("ResizeObserver");
33050
+ return vue.openBlock(), vue.createBlock(_component_ResizeObserver, { onResize: _ctx.debouncedHandleResize }, {
33051
+ default: vue.withCtx(() => {
33052
+ var _a;
33053
+ return [
33054
+ _ctx.showCell ? (vue.openBlock(), vue.createElementBlock("td", vue.mergeProps({
33161
33055
  key: 0,
33162
- title: _ctx.displayCell.toString(),
33163
- disabled: !_ctx.isOverflow,
33164
- "mouse-enter-delay": 0.5
33165
- }, {
33166
- default: vue.withCtx(() => [
33167
- vue.createElementVNode("span", { ref: "ellipsisSpanRef" }, vue.toDisplayString(_ctx.displayCell), 513)
33168
- ]),
33169
- _: 1
33170
- }, 8, ["title", "disabled"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
33171
- vue.createTextVNode(vue.toDisplayString(_ctx.displayCell), 1)
33172
- ], 64))
33173
- ], 64))
33174
- ], 64))
33175
- ], 16)) : vue.createCommentVNode("v-if", true);
33056
+ ref: "cellRef"
33057
+ }, _ctx.tdProps, {
33058
+ class: {
33059
+ [`${_ctx.prefixCls}-cell-custom`]: !!((_a = _ctx.tdProps) == null ? void 0 : _a.class),
33060
+ [`${_ctx.column.className}`]: !!_ctx.column.className,
33061
+ [`${_ctx.prefixCls}-cell-ellipsis`]: !!_ctx.column.ellipsis,
33062
+ [`${_ctx.prefixCls}-cell-break-word`]: !!_ctx.column.width,
33063
+ [`${_ctx.tablePrefixCls}-column-has-actions`]: _ctx.hasAction(_ctx.column),
33064
+ [`${_ctx.tablePrefixCls}-column-has-sorters`]: _ctx.hasSorters(_ctx.column),
33065
+ [`${_ctx.tablePrefixCls}-column-has-filters`]: _ctx.hasFilters(_ctx.column),
33066
+ [`${_ctx.tablePrefixCls}-column-sort`]: _ctx.isSortColumn(_ctx.column)
33067
+ },
33068
+ style: _ctx.tdStyle
33069
+ }), [
33070
+ _ctx.skeleton ? (vue.openBlock(), vue.createBlock(_component_USkeleton, {
33071
+ key: 0,
33072
+ class: vue.normalizeClass(`${_ctx.prefixCls}-skeleton-wrap`),
33073
+ active: ""
33074
+ }, {
33075
+ default: vue.withCtx(() => [
33076
+ _ctx.column.skeleton ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(Array(_ctx.column.skeleton.length), (_, ski) => {
33077
+ return vue.openBlock(), vue.createBlock(_component_USkeletonItem, {
33078
+ key: ski,
33079
+ type: _ctx.column.skeleton[ski].type,
33080
+ style: vue.normalizeStyle(_ctx.column.skeleton[ski].style)
33081
+ }, null, 8, ["type", "style"]);
33082
+ }), 128)) : (vue.openBlock(), vue.createBlock(_component_USkeletonItem, {
33083
+ key: 1,
33084
+ type: "text",
33085
+ style: { "width": "50%" }
33086
+ }))
33087
+ ]),
33088
+ _: 1
33089
+ }, 8, ["class"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
33090
+ _ctx.expandIcon ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
33091
+ vue.createElementVNode("span", {
33092
+ class: vue.normalizeClass(`${_ctx.prefixCls}-indent indent-level-${_ctx.indent}`),
33093
+ style: vue.normalizeStyle({ paddingLeft: `${_ctx.indentSize * _ctx.indent}px` })
33094
+ }, null, 6),
33095
+ vue.createVNode(_component_ExpandIcon, {
33096
+ "need-indent-spaced": "",
33097
+ expandable: !!_ctx.data.children,
33098
+ "need-loading": _ctx.data.children === true,
33099
+ "row-key": _ctx.rowKey,
33100
+ expanded: _ctx.isRowExpanded(_ctx.rowKey, true),
33101
+ onExpand: _ctx.handleExpand,
33102
+ onAsyncExpand: _ctx.handleAsyncExpand
33103
+ }, null, 8, ["expandable", "need-loading", "row-key", "expanded", "onExpand", "onAsyncExpand"])
33104
+ ], 64)) : vue.createCommentVNode("v-if", true),
33105
+ _ctx.isRender ? (vue.openBlock(), vue.createBlock(_component_Render, {
33106
+ key: 1,
33107
+ render: () => {
33108
+ var _a2;
33109
+ return (_a2 = _ctx.renderFn) == null ? void 0 : _a2.call(_ctx, {
33110
+ row: _ctx.data,
33111
+ index: _ctx.index,
33112
+ rowKey: _ctx.rowKey,
33113
+ pagination: _ctx.pagination,
33114
+ column: _ctx.column
33115
+ });
33116
+ }
33117
+ }, null, 8, ["render"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
33118
+ _ctx.column.ellipsis && _ctx.displayCell ? (vue.openBlock(), vue.createBlock(_component_UTooltip, {
33119
+ key: 0,
33120
+ title: _ctx.displayCell.toString(),
33121
+ disabled: !_ctx.isOverflow,
33122
+ "mouse-enter-delay": 0.5
33123
+ }, {
33124
+ default: vue.withCtx(() => [
33125
+ vue.createElementVNode("span", { ref: "ellipsisSpanRef" }, vue.toDisplayString(_ctx.displayCell), 513)
33126
+ ]),
33127
+ _: 1
33128
+ }, 8, ["title", "disabled"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
33129
+ vue.createTextVNode(vue.toDisplayString(_ctx.displayCell), 1)
33130
+ ], 64))
33131
+ ], 64))
33132
+ ], 64))
33133
+ ], 16)) : vue.createCommentVNode("v-if", true)
33134
+ ];
33135
+ }),
33136
+ _: 1
33137
+ }, 8, ["onResize"]);
33176
33138
  }
33177
33139
  var TableCell = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$E], ["__file", "TableCell.vue"]]);
33178
33140
 
@@ -33670,35 +33632,48 @@
33670
33632
  setup(props) {
33671
33633
  const {
33672
33634
  prefixCls,
33673
- size: { tableWidth, sizesMap }
33635
+ props: { width },
33636
+ size: { tableWidth }
33674
33637
  } = vue.inject("tableContext", {});
33675
33638
  const tableRef = vue.ref(null);
33676
33639
  const tableStyle = vue.computed(() => {
33677
33640
  const style = {};
33678
- style.width = `${tableWidth.value}px`;
33641
+ if (width.value) {
33642
+ style.width = typeof width.value === "number" ? `${width.value}px` : width.value;
33643
+ } else if (props.columns.some((x) => x.fixed)) {
33644
+ style.width = "max-content";
33645
+ style.minWidth = "100%";
33646
+ }
33647
+ if (props.columns.some((x) => x.ellipsis) || props.columns.some((x) => x.resizable)) {
33648
+ style.tableLayout = "fixed";
33649
+ } else {
33650
+ style.tableLayout = "auto";
33651
+ }
33679
33652
  return style;
33680
33653
  });
33681
33654
  const getColumns = () => {
33682
33655
  let left = 0;
33683
- let right = props.columns.filter((x) => x.fixed === "right").reduce((sum, { key }) => {
33684
- const w = sizesMap[key];
33656
+ let right = props.columns.filter((x) => x.fixed === "right").reduce((sum, column) => {
33657
+ var _a;
33658
+ const w = getWidth((_a = column.width) != null ? _a : column.minWidth, tableWidth.value);
33685
33659
  return sum + w;
33686
33660
  }, 0);
33687
33661
  return props.columns.map((column) => {
33662
+ var _a, _b;
33688
33663
  const rst = {
33689
33664
  ...column,
33690
33665
  className: column.fixed ? `${column.className || ""} ${prefixCls.value}-fixed-column ${prefixCls.value}-fixed-column-${column.fixed}` : column.className
33691
33666
  };
33692
33667
  if (column.fixed === "left") {
33693
33668
  rst.left = left;
33694
- const w = sizesMap[column.key];
33669
+ const w = getWidth((_a = column.width) != null ? _a : column.minWidth, tableWidth.value);
33695
33670
  left += w;
33696
33671
  if (column.lastLeft) {
33697
33672
  rst.className = `${rst.className || ""} ${prefixCls.value}-fixed-column-${column.fixed}-last`;
33698
33673
  }
33699
33674
  }
33700
33675
  if (column.fixed === "right") {
33701
- const w = sizesMap[column.key];
33676
+ const w = getWidth((_b = column.width) != null ? _b : column.minWidth, tableWidth.value);
33702
33677
  right -= w;
33703
33678
  rst.right = right;
33704
33679
  if (column.firstRight) {
@@ -35318,13 +35293,13 @@
35318
35293
  selectionColumn
35319
35294
  });
35320
35295
  const {
35321
- sizesMap,
35322
35296
  handleResize,
35323
35297
  isScrollX,
35324
35298
  scrollPosition,
35325
35299
  setScrollPositionClass,
35326
35300
  resetScrollX,
35327
35301
  tableWidth,
35302
+ resizeColumns,
35328
35303
  clearResizeTimer,
35329
35304
  setResizeWidth
35330
35305
  } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);
@@ -35406,7 +35381,7 @@
35406
35381
  const handleColumnResize = (columnWidth, changeWidth, column, event) => {
35407
35382
  emit("column-resize", columnWidth, changeWidth, column, event);
35408
35383
  };
35409
- const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading } = vue.toRefs(props);
35384
+ const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading, width } = vue.toRefs(props);
35410
35385
  vue.provide("tableContext", {
35411
35386
  prefixCls,
35412
35387
  locale,
@@ -35425,7 +35400,8 @@
35425
35400
  disabledHover,
35426
35401
  expandIndent,
35427
35402
  headerSticky,
35428
- loading
35403
+ loading,
35404
+ width
35429
35405
  },
35430
35406
  slots,
35431
35407
  expand: {
@@ -35439,7 +35415,7 @@
35439
35415
  },
35440
35416
  size: {
35441
35417
  tableWidth,
35442
- sizesMap,
35418
+ resizeColumns,
35443
35419
  isScrollX,
35444
35420
  setResizeWidth,
35445
35421
  handleColumnResize,
@@ -35508,8 +35484,7 @@
35508
35484
  return vue.openBlock(), vue.createBlock(_component_ResizeObserver, { onResize: _ctx.debouncedHandleResize }, {
35509
35485
  default: vue.withCtx(() => [
35510
35486
  vue.createElementVNode("div", {
35511
- class: vue.normalizeClass([`${_ctx.prefixCls}-wrapper`]),
35512
- style: vue.normalizeStyle({ width: typeof _ctx.width === "number" ? `${_ctx.width}px` : _ctx.width })
35487
+ class: vue.normalizeClass([`${_ctx.prefixCls}-wrapper`])
35513
35488
  }, [
35514
35489
  _ctx.showPagination && _ctx.pagination && (_ctx.pagination.position === "top" || _ctx.pagination.position === "both") ? (vue.openBlock(), vue.createElementBlock("div", {
35515
35490
  key: 0,
@@ -35537,7 +35512,6 @@
35537
35512
  [`${_ctx.prefixCls}-empty`]: !_ctx.data.length,
35538
35513
  [`${_ctx.prefixCls}-without-column-header`]: !_ctx.showHeader,
35539
35514
  [`${_ctx.prefixCls}-fixed-header`]: !!_ctx.maxHeight,
35540
- [`${_ctx.prefixCls}-layout-fixed`]: true,
35541
35515
  [`${_ctx.prefixCls}-scroll-position-left`]: _ctx.scrollPosition === "left" || _ctx.scrollPosition === "both",
35542
35516
  [`${_ctx.prefixCls}-scroll-position-right`]: _ctx.scrollPosition === "right" || _ctx.scrollPosition === "both",
35543
35517
  [`${_ctx.prefixCls}-dragging`]: _ctx.showResizeLine,
@@ -35600,7 +35574,7 @@
35600
35574
  onPageSizeChange: _ctx.handlePageSizeChange
35601
35575
  }), null, 16, ["total", "onChange", "onPageSizeChange"])
35602
35576
  ], 2)) : vue.createCommentVNode("v-if", true)
35603
- ], 6)
35577
+ ], 2)
35604
35578
  ]),
35605
35579
  _: 3
35606
35580
  }, 8, ["onResize"]);
@@ -35870,7 +35844,7 @@
35870
35844
  components: {
35871
35845
  TabBar,
35872
35846
  UIcon,
35873
- CircleX: lucideVueNext.CircleX,
35847
+ X: lucideVueNext.X,
35874
35848
  ChevronLeft: lucideVueNext.ChevronLeft,
35875
35849
  ChevronRight: lucideVueNext.ChevronRight,
35876
35850
  Plus: lucideVueNext.Plus,
@@ -36197,7 +36171,7 @@
36197
36171
  const _component_UIcon = vue.resolveComponent("UIcon");
36198
36172
  const _component_TabBar = vue.resolveComponent("TabBar");
36199
36173
  const _component_URender = vue.resolveComponent("URender");
36200
- const _component_CircleX = vue.resolveComponent("CircleX");
36174
+ const _component_X = vue.resolveComponent("X");
36201
36175
  const _component_ChevronRight = vue.resolveComponent("ChevronRight");
36202
36176
  const _component_Plus = vue.resolveComponent("Plus");
36203
36177
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -36305,7 +36279,7 @@
36305
36279
  }, [
36306
36280
  vue.createVNode(_component_UIcon, null, {
36307
36281
  default: vue.withCtx(() => [
36308
- vue.createVNode(_component_CircleX)
36282
+ vue.createVNode(_component_X)
36309
36283
  ]),
36310
36284
  _: 1
36311
36285
  })
@@ -36336,7 +36310,6 @@
36336
36310
  _ctx.addable || _ctx.editable ? (vue.openBlock(), vue.createElementBlock("div", {
36337
36311
  key: 2,
36338
36312
  class: vue.normalizeClass({
36339
- [`${_ctx.prefixCls}-item`]: true,
36340
36313
  [`${_ctx.prefixCls}-item-add-btn`]: true
36341
36314
  }),
36342
36315
  onClick: _cache[2] || (_cache[2] = vue.withModifiers((...args) => _ctx.handleTabAdd && _ctx.handleTabAdd(...args), ["stop"]))