@rainbow-oh/yee-c 0.10.0 → 0.11.0

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 (74) hide show
  1. package/dist/cjs/Button/demo/icon.js +1 -1
  2. package/dist/cjs/Table/demo/resizable.d.ts +3 -0
  3. package/dist/cjs/Table/demo/resizable.js +143 -0
  4. package/dist/cjs/Table/hooks/useColumnResize.d.ts +30 -0
  5. package/dist/cjs/Table/hooks/useColumnResize.js +217 -0
  6. package/dist/cjs/Table/hooks/useColumns.d.ts +3 -1
  7. package/dist/cjs/Table/hooks/useColumns.js +14 -3
  8. package/dist/cjs/Table/interface.d.ts +49 -0
  9. package/dist/cjs/Table/style/index.less +42 -0
  10. package/dist/cjs/Table/table.js +62 -9
  11. package/dist/cjs/Table/theader/cell.js +46 -4
  12. package/dist/cjs/Table/util/index.d.ts +19 -1
  13. package/dist/cjs/Table/util/index.js +22 -0
  14. package/dist/cjs/Tabs/interface.d.ts +1 -1
  15. package/dist/cjs/Tabs/tab-header/index.js +2 -1
  16. package/dist/cjs/locale/interface.d.ts +1 -0
  17. package/dist/cjs/locale/lang/en_US.js +2 -1
  18. package/dist/cjs/locale/lang/ja_JP.js +2 -1
  19. package/dist/cjs/locale/lang/zh_CN.js +2 -1
  20. package/dist/cjs/locale/lang/zh_TW.js +2 -1
  21. package/dist/cjs/style/size.css +1 -0
  22. package/dist/cjs/style/themes.css +1 -1
  23. package/dist/cjs/style/variables.css +2 -1
  24. package/dist/cjs/version.d.ts +1 -1
  25. package/dist/cjs/version.js +1 -1
  26. package/dist/esm/Button/demo/icon.js +7 -4
  27. package/dist/esm/Table/demo/resizable.d.ts +3 -0
  28. package/dist/esm/Table/demo/resizable.js +110 -0
  29. package/dist/esm/Table/hooks/useColumnResize.d.ts +30 -0
  30. package/dist/esm/Table/hooks/useColumnResize.js +206 -0
  31. package/dist/esm/Table/hooks/useColumns.d.ts +3 -1
  32. package/dist/esm/Table/hooks/useColumns.js +9 -4
  33. package/dist/esm/Table/interface.d.ts +49 -0
  34. package/dist/esm/Table/style/index.less +42 -0
  35. package/dist/esm/Table/table.js +83 -13
  36. package/dist/esm/Table/theader/cell.js +38 -3
  37. package/dist/esm/Table/util/index.d.ts +19 -1
  38. package/dist/esm/Table/util/index.js +37 -0
  39. package/dist/esm/Tabs/interface.d.ts +1 -1
  40. package/dist/esm/Tabs/tab-header/index.js +2 -1
  41. package/dist/esm/locale/interface.d.ts +1 -0
  42. package/dist/esm/locale/lang/en_US.js +2 -1
  43. package/dist/esm/locale/lang/ja_JP.js +2 -1
  44. package/dist/esm/locale/lang/zh_CN.js +2 -1
  45. package/dist/esm/locale/lang/zh_TW.js +2 -1
  46. package/dist/esm/style/size.css +1 -0
  47. package/dist/esm/style/themes.css +1 -1
  48. package/dist/esm/style/variables.css +2 -1
  49. package/dist/esm/version.d.ts +1 -1
  50. package/dist/esm/version.js +1 -1
  51. package/dist/umd/yee-c.min.css +2 -2
  52. package/dist/umd/yee-c.min.js +1 -1
  53. package/package.json +1 -1
  54. package/src/Button/demo/icon.tsx +5 -3
  55. package/src/Table/demo/resizable.tsx +106 -0
  56. package/src/Table/hooks/useColumnResize.ts +224 -0
  57. package/src/Table/hooks/useColumns.ts +18 -3
  58. package/src/Table/index.en-US.md +7 -0
  59. package/src/Table/index.zh-CN.md +7 -0
  60. package/src/Table/interface.ts +52 -0
  61. package/src/Table/style/index.less +42 -0
  62. package/src/Table/table-resize.test.tsx +234 -0
  63. package/src/Table/table.tsx +90 -13
  64. package/src/Table/theader/cell.tsx +52 -2
  65. package/src/Table/util/index.ts +44 -1
  66. package/src/Tabs/interface.ts +1 -1
  67. package/src/Tabs/tab-header/index.tsx +2 -1
  68. package/src/locale/interface.ts +1 -0
  69. package/src/locale/lang/en_US.ts +1 -0
  70. package/src/locale/lang/ja_JP.ts +1 -0
  71. package/src/locale/lang/zh_CN.ts +1 -0
  72. package/src/locale/lang/zh_TW.ts +1 -0
  73. package/src/style/size.css +1 -0
  74. package/src/version.ts +1 -1
@@ -1,2 +1,20 @@
1
- import { WrapedColumnProps } from '../interface';
1
+ import { ColumnProps, WrapedColumnProps } from '../interface';
2
+ /**
3
+ * Stable identity for a leaf column, used to key its resized width.
4
+ *
5
+ * `key`/`dataIndex` survive re-ordering and data changes, so they are preferred.
6
+ * Columns declaring neither fall back to their position, which is the best that
7
+ * can be done without asking the caller for an id.
8
+ */
9
+ export declare function getColumnResizeKey(column: ColumnProps, index: number): string;
10
+ /**
11
+ * Stamp every leaf column with its `resizeKey`, resolve whether it is resizable
12
+ * (column level setting wins over the table level one) and override `width` with
13
+ * the dragged value when there is one.
14
+ *
15
+ * This runs before `handleColumns` so that the colgroup, the header cells, the
16
+ * body cells and the sticky offsets of fixed columns all read the same width
17
+ * from a single place.
18
+ */
19
+ export declare function applyColumnResize(columns: Array<WrapedColumnProps>, resizable?: boolean, resizedWidths?: Record<string, number>): WrapedColumnProps[];
2
20
  export declare function handleColumns(columns: Array<WrapedColumnProps>, measuredColumnWidths?: number[]): WrapedColumnProps[];
@@ -4,6 +4,43 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ /**
8
+ * Stable identity for a leaf column, used to key its resized width.
9
+ *
10
+ * `key`/`dataIndex` survive re-ordering and data changes, so they are preferred.
11
+ * Columns declaring neither fall back to their position, which is the best that
12
+ * can be done without asking the caller for an id.
13
+ */
14
+ export function getColumnResizeKey(column, index) {
15
+ var _column$key;
16
+ var id = (_column$key = column.key) !== null && _column$key !== void 0 ? _column$key : column.dataIndex;
17
+ return id === undefined || id === null || id === '' ? "index:".concat(index) : "id:".concat(id);
18
+ }
19
+
20
+ /**
21
+ * Stamp every leaf column with its `resizeKey`, resolve whether it is resizable
22
+ * (column level setting wins over the table level one) and override `width` with
23
+ * the dragged value when there is one.
24
+ *
25
+ * This runs before `handleColumns` so that the colgroup, the header cells, the
26
+ * body cells and the sticky offsets of fixed columns all read the same width
27
+ * from a single place.
28
+ */
29
+ export function applyColumnResize(columns, resizable, resizedWidths) {
30
+ return columns.map(function (column, index) {
31
+ var _ref, _column$resizable;
32
+ var resizeKey = getColumnResizeKey(column, index);
33
+ var resizedWidth = resizedWidths === null || resizedWidths === void 0 ? void 0 : resizedWidths[resizeKey];
34
+ var next = _objectSpread(_objectSpread({}, column), {}, {
35
+ resizeKey: resizeKey,
36
+ resizable: (_ref = (_column$resizable = column.resizable) !== null && _column$resizable !== void 0 ? _column$resizable : resizable) !== null && _ref !== void 0 ? _ref : false
37
+ });
38
+ if (Number.isFinite(resizedWidth) && resizedWidth > 0) {
39
+ next.width = resizedWidth;
40
+ }
41
+ return next;
42
+ });
43
+ }
7
44
  var getColumnWidth = function getColumnWidth(column, index, measuredColumnWidths) {
8
45
  var measuredWidth = measuredColumnWidths === null || measuredColumnWidths === void 0 ? void 0 : measuredColumnWidths[index];
9
46
  if (Number.isFinite(measuredWidth) && measuredWidth && measuredWidth > 0) {
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import type { DataAttributeProps } from '../utils/types';
3
- type SemanticDOM = 'header' | 'content' | 'track' | 'list' | 'activeBar';
3
+ type SemanticDOM = 'header' | 'content' | 'track' | 'list' | 'activeBar' | 'more';
4
4
  export type TabItemType = {
5
5
  /**
6
6
  * Unique key corresponding to activeKey
@@ -168,7 +168,8 @@ var TabHeader = function TabHeader(props) {
168
168
  items: items || [],
169
169
  range: range
170
170
  }, /*#__PURE__*/React.createElement(Button, {
171
- className: "".concat(prefixCls, "-nav-more"),
171
+ className: clsx("".concat(prefixCls, "-nav-more"), classNames === null || classNames === void 0 ? void 0 : classNames.more),
172
+ style: styles === null || styles === void 0 ? void 0 : styles.more,
172
173
  size: "small",
173
174
  icon: /*#__PURE__*/React.createElement(Ellipsis, {
174
175
  size: 14,
@@ -55,6 +55,7 @@ export interface LocaleTable {
55
55
  sortAscending?: string;
56
56
  sortDescending?: string;
57
57
  sortCancel?: string;
58
+ resizeColumn?: string;
58
59
  }
59
60
  export interface LocalePagination {
60
61
  total?: string;
@@ -56,7 +56,8 @@ var locale = {
56
56
  selectionNone: 'Clear Selection on Page',
57
57
  sortAscending: 'Click to sort ascending',
58
58
  sortDescending: 'Click to sort descending',
59
- sortCancel: 'Click to cancel sorting'
59
+ sortCancel: 'Click to cancel sorting',
60
+ resizeColumn: 'Drag to resize column'
60
61
  },
61
62
  pagination: {
62
63
  total: 'Total {total} items',
@@ -56,7 +56,8 @@ var locale = {
56
56
  selectionNone: 'ページ内選択をクリア',
57
57
  sortAscending: 'クリックで昇順に並べ替え',
58
58
  sortDescending: 'クリックで降順に並べ替え',
59
- sortCancel: 'クリックで並べ替えを解除'
59
+ sortCancel: 'クリックで並べ替えを解除',
60
+ resizeColumn: 'ドラッグで列幅を変更'
60
61
  },
61
62
  pagination: {
62
63
  total: '合計 {total} 件',
@@ -56,7 +56,8 @@ var locale = {
56
56
  selectionNone: '清空当页选择',
57
57
  sortAscending: '点击升序排列',
58
58
  sortDescending: '点击降序排列',
59
- sortCancel: '点击取消排序'
59
+ sortCancel: '点击取消排序',
60
+ resizeColumn: '拖动调整列宽'
60
61
  },
61
62
  pagination: {
62
63
  total: '共 {total} 条',
@@ -56,7 +56,8 @@ var locale = {
56
56
  selectionNone: '清空當頁選擇',
57
57
  sortAscending: '點擊升序排列',
58
58
  sortDescending: '點擊降序排列',
59
- sortCancel: '點擊取消排序'
59
+ sortCancel: '點擊取消排序',
60
+ resizeColumn: '拖動調整欄寬'
60
61
  },
61
62
  pagination: {
62
63
  total: '共 {total} 條',
@@ -674,6 +674,7 @@
674
674
  --yee-table-bordered-cell-border-width: 1px;
675
675
  --yee-table-bordered-thead-border-width: 1px;
676
676
  --yee-table-thead-action-gap: 8px;
677
+ --yee-table-resize-handle-width: 8px;
677
678
  --yee-table-filter-popup-padding: 8px;
678
679
  --yee-table-content-border-radius: 6px 6px 0 0;
679
680
  --yee-table-cell-padding: 13px 16px;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-09-02T06:10:08.769Z
4
+ * Generated on 2026-09-10T06:30:03.660Z
5
5
  */
6
6
 
7
7
  /* ========== color.blue.css ========== */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-09-02T06:10:08.769Z
4
+ * Generated on 2026-09-10T06:30:03.660Z
5
5
  */
6
6
 
7
7
  /* ========== color.css ========== */
@@ -1796,6 +1796,7 @@
1796
1796
  --yee-table-bordered-cell-border-width: 1px;
1797
1797
  --yee-table-bordered-thead-border-width: 1px;
1798
1798
  --yee-table-thead-action-gap: 8px;
1799
+ --yee-table-resize-handle-width: 8px;
1799
1800
  --yee-table-filter-popup-padding: 8px;
1800
1801
  --yee-table-content-border-radius: 6px 6px 0 0;
1801
1802
  --yee-table-cell-padding: 13px 16px;
@@ -3,4 +3,4 @@ declare global {
3
3
  __yee_c_version__: string;
4
4
  }
5
5
  }
6
- export declare const version = "0.10.0";
6
+ export declare const version = "0.11.0";
@@ -1,4 +1,4 @@
1
- export var version = "0.10.0";
1
+ export var version = "0.11.0";
2
2
  if (typeof window !== 'undefined') {
3
3
  window.__yee_c_version__ = version;
4
4
  }