@rainbow-oh/yee-c 0.9.2 → 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.
- package/dist/cjs/Button/demo/icon.js +1 -1
- package/dist/cjs/Input/style/index.less +1 -0
- package/dist/cjs/Table/demo/resizable.d.ts +3 -0
- package/dist/cjs/Table/demo/resizable.js +143 -0
- package/dist/cjs/Table/hooks/useColumnResize.d.ts +30 -0
- package/dist/cjs/Table/hooks/useColumnResize.js +217 -0
- package/dist/cjs/Table/hooks/useColumns.d.ts +3 -1
- package/dist/cjs/Table/hooks/useColumns.js +14 -3
- package/dist/cjs/Table/interface.d.ts +49 -0
- package/dist/cjs/Table/style/index.less +42 -0
- package/dist/cjs/Table/table.js +62 -9
- package/dist/cjs/Table/theader/cell.js +46 -4
- package/dist/cjs/Table/util/index.d.ts +19 -1
- package/dist/cjs/Table/util/index.js +22 -0
- package/dist/cjs/Tabs/demo/overflow-center.d.ts +3 -0
- package/dist/cjs/Tabs/demo/overflow-center.js +54 -0
- package/dist/cjs/Tabs/hooks/useNavListMove.d.ts +2 -1
- package/dist/cjs/Tabs/hooks/useNavListMove.js +51 -16
- package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -0
- package/dist/cjs/Tabs/hooks/useTabScroll.js +5 -1
- package/dist/cjs/Tabs/interface.d.ts +10 -1
- package/dist/cjs/Tabs/style/index.less +5 -0
- package/dist/cjs/Tabs/tab-header/index.d.ts +1 -0
- package/dist/cjs/Tabs/tab-header/index.js +11 -3
- package/dist/cjs/Tabs/tabs.js +4 -1
- package/dist/cjs/Upload/demo/auto-upload.d.ts +3 -0
- package/dist/cjs/Upload/demo/auto-upload.js +65 -0
- package/dist/cjs/Upload/demo/basic.js +5 -10
- package/dist/cjs/Upload/demo/controlled.js +4 -4
- package/dist/cjs/Upload/demo/pictureWall.js +14 -13
- package/dist/cjs/Upload/dragger.d.ts +2 -1
- package/dist/cjs/Upload/dragger.js +32 -21
- package/dist/cjs/Upload/index.d.ts +1 -1
- package/dist/cjs/Upload/interface.d.ts +67 -120
- package/dist/cjs/Upload/style/index.less +40 -13
- package/dist/cjs/Upload/upload.d.ts +2 -2
- package/dist/cjs/Upload/upload.js +435 -185
- package/dist/cjs/Upload/uploaded-list/index.d.ts +2 -1
- package/dist/cjs/Upload/uploaded-list/index.js +6 -3
- package/dist/cjs/Upload/uploaded-list/uploaded-item.d.ts +6 -3
- package/dist/cjs/Upload/uploaded-list/uploaded-item.js +127 -138
- package/dist/cjs/locale/interface.d.ts +1 -0
- package/dist/cjs/locale/lang/en_US.js +2 -1
- package/dist/cjs/locale/lang/ja_JP.js +2 -1
- package/dist/cjs/locale/lang/zh_CN.js +2 -1
- package/dist/cjs/locale/lang/zh_TW.js +2 -1
- package/dist/cjs/style/size.css +2 -1
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +3 -2
- package/dist/cjs/utils/ax/core.d.ts +3 -1
- package/dist/cjs/utils/ax/core.js +24 -37
- package/dist/cjs/utils/ax/index.d.ts +3 -1
- package/dist/cjs/utils/folder-scanner.d.ts +1 -1
- package/dist/cjs/utils/folder-scanner.js +43 -34
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Button/demo/icon.js +7 -4
- package/dist/esm/Input/style/index.less +1 -0
- package/dist/esm/Table/demo/resizable.d.ts +3 -0
- package/dist/esm/Table/demo/resizable.js +110 -0
- package/dist/esm/Table/hooks/useColumnResize.d.ts +30 -0
- package/dist/esm/Table/hooks/useColumnResize.js +206 -0
- package/dist/esm/Table/hooks/useColumns.d.ts +3 -1
- package/dist/esm/Table/hooks/useColumns.js +9 -4
- package/dist/esm/Table/interface.d.ts +49 -0
- package/dist/esm/Table/style/index.less +42 -0
- package/dist/esm/Table/table.js +83 -13
- package/dist/esm/Table/theader/cell.js +38 -3
- package/dist/esm/Table/util/index.d.ts +19 -1
- package/dist/esm/Table/util/index.js +37 -0
- package/dist/esm/Tabs/demo/overflow-center.d.ts +3 -0
- package/dist/esm/Tabs/demo/overflow-center.js +61 -0
- package/dist/esm/Tabs/hooks/useNavListMove.d.ts +2 -1
- package/dist/esm/Tabs/hooks/useNavListMove.js +62 -25
- package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -0
- package/dist/esm/Tabs/hooks/useTabScroll.js +9 -0
- package/dist/esm/Tabs/interface.d.ts +10 -1
- package/dist/esm/Tabs/style/index.less +5 -0
- package/dist/esm/Tabs/tab-header/index.d.ts +1 -0
- package/dist/esm/Tabs/tab-header/index.js +15 -3
- package/dist/esm/Tabs/tabs.js +4 -2
- package/dist/esm/Upload/demo/auto-upload.d.ts +3 -0
- package/dist/esm/Upload/demo/auto-upload.js +42 -0
- package/dist/esm/Upload/demo/basic.js +5 -11
- package/dist/esm/Upload/demo/controlled.js +8 -6
- package/dist/esm/Upload/demo/pictureWall.js +17 -14
- package/dist/esm/Upload/dragger.d.ts +2 -1
- package/dist/esm/Upload/dragger.js +10 -5
- package/dist/esm/Upload/index.d.ts +1 -1
- package/dist/esm/Upload/interface.d.ts +67 -120
- package/dist/esm/Upload/style/index.less +40 -13
- package/dist/esm/Upload/upload.d.ts +2 -2
- package/dist/esm/Upload/upload.js +573 -271
- package/dist/esm/Upload/uploaded-list/index.d.ts +2 -1
- package/dist/esm/Upload/uploaded-list/index.js +9 -4
- package/dist/esm/Upload/uploaded-list/uploaded-item.d.ts +6 -3
- package/dist/esm/Upload/uploaded-list/uploaded-item.js +145 -150
- package/dist/esm/locale/interface.d.ts +1 -0
- package/dist/esm/locale/lang/en_US.js +2 -1
- package/dist/esm/locale/lang/ja_JP.js +2 -1
- package/dist/esm/locale/lang/zh_CN.js +2 -1
- package/dist/esm/locale/lang/zh_TW.js +2 -1
- package/dist/esm/style/size.css +2 -1
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +3 -2
- package/dist/esm/utils/ax/core.d.ts +3 -1
- package/dist/esm/utils/ax/core.js +32 -40
- package/dist/esm/utils/ax/index.d.ts +3 -1
- package/dist/esm/utils/folder-scanner.d.ts +1 -1
- package/dist/esm/utils/folder-scanner.js +76 -75
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Button/demo/icon.tsx +5 -3
- package/src/Input/style/index.less +1 -0
- package/src/Table/demo/resizable.tsx +106 -0
- package/src/Table/hooks/useColumnResize.ts +224 -0
- package/src/Table/hooks/useColumns.ts +18 -3
- package/src/Table/index.en-US.md +7 -0
- package/src/Table/index.zh-CN.md +7 -0
- package/src/Table/interface.ts +52 -0
- package/src/Table/style/index.less +42 -0
- package/src/Table/table-resize.test.tsx +234 -0
- package/src/Table/table.tsx +90 -13
- package/src/Table/theader/cell.tsx +52 -2
- package/src/Table/util/index.ts +44 -1
- package/src/Tabs/demo/overflow-center.tsx +35 -0
- package/src/Tabs/hooks/useNavListMove.ts +60 -18
- package/src/Tabs/hooks/useTabScroll.ts +7 -1
- package/src/Tabs/index.en-US.md +33 -31
- package/src/Tabs/index.zh-CN.md +33 -31
- package/src/Tabs/interface.ts +10 -1
- package/src/Tabs/style/index.less +5 -0
- package/src/Tabs/tab-header/index.tsx +14 -3
- package/src/Tabs/tabs.tsx +2 -0
- package/src/Upload/demo/auto-upload.tsx +35 -0
- package/src/Upload/demo/basic.tsx +7 -11
- package/src/Upload/demo/controlled.tsx +12 -8
- package/src/Upload/demo/directory.tsx +3 -4
- package/src/Upload/demo/drag.tsx +5 -12
- package/src/Upload/demo/multiple.tsx +3 -4
- package/src/Upload/demo/pictureWall.tsx +22 -21
- package/src/Upload/dragger.tsx +47 -34
- package/src/Upload/index.en-US.md +63 -43
- package/src/Upload/index.ts +8 -1
- package/src/Upload/index.zh-CN.md +62 -42
- package/src/Upload/interface.ts +68 -120
- package/src/Upload/style/index.less +40 -13
- package/src/Upload/upload.tsx +546 -215
- package/src/Upload/uploaded-list/index.tsx +9 -5
- package/src/Upload/uploaded-list/uploaded-item.tsx +199 -228
- package/src/locale/interface.ts +1 -0
- package/src/locale/lang/en_US.ts +1 -0
- package/src/locale/lang/ja_JP.ts +1 -0
- package/src/locale/lang/zh_CN.ts +1 -0
- package/src/locale/lang/zh_TW.ts +1 -0
- package/src/style/size.css +2 -1
- package/src/utils/ax/core.ts +28 -41
- package/src/utils/folder-scanner.ts +51 -37
- package/src/version.ts +1 -1
|
@@ -6,7 +6,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
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
7
|
import React, { useMemo } from 'react';
|
|
8
8
|
import deepClone from "../../utils/deepClone";
|
|
9
|
-
import { handleColumns } from "../util";
|
|
9
|
+
import { applyColumnResize, handleColumns } from "../util";
|
|
10
10
|
import { flattenLeafColumns, injectSelectionExpand, parseHeaderRows } from "../util/header";
|
|
11
11
|
var getColumnsFromChild = function getColumnsFromChild(childs) {
|
|
12
12
|
var cols = [];
|
|
@@ -22,7 +22,9 @@ export default function useColumns(_ref) {
|
|
|
22
22
|
columns = _ref.columns,
|
|
23
23
|
rowSelection = _ref.rowSelection,
|
|
24
24
|
expandable = _ref.expandable,
|
|
25
|
-
measuredColumnWidths = _ref.measuredColumnWidths
|
|
25
|
+
measuredColumnWidths = _ref.measuredColumnWidths,
|
|
26
|
+
resizable = _ref.resizable,
|
|
27
|
+
resizedWidths = _ref.resizedWidths;
|
|
26
28
|
var childColumns = useMemo(function () {
|
|
27
29
|
return children ? getColumnsFromChild(children) : null;
|
|
28
30
|
}, [children]);
|
|
@@ -34,13 +36,16 @@ export default function useColumns(_ref) {
|
|
|
34
36
|
var base = deepClone(childColumns || columns || []) || [];
|
|
35
37
|
var tree = injectSelectionExpand(base, rowSelection, expandable);
|
|
36
38
|
var leaves = flattenLeafColumns(tree);
|
|
37
|
-
|
|
39
|
+
// Resized widths are folded in before the fixed-column offsets are computed,
|
|
40
|
+
// so sticky positions follow a drag without any extra bookkeeping.
|
|
41
|
+
var resized = applyColumnResize(leaves, resizable, resizedWidths);
|
|
42
|
+
var wraped = handleColumns(resized, measuredColumnWidths);
|
|
38
43
|
var rows = parseHeaderRows(tree, wraped);
|
|
39
44
|
return {
|
|
40
45
|
wrapedColumns: wraped,
|
|
41
46
|
headerRows: rows
|
|
42
47
|
};
|
|
43
|
-
}, [childColumns, columns, rowSelection, expandable, measuredColumnWidths]),
|
|
48
|
+
}, [childColumns, columns, rowSelection, expandable, measuredColumnWidths, resizable, resizedWidths]),
|
|
44
49
|
wrapedColumns = _useMemo.wrapedColumns,
|
|
45
50
|
headerRows = _useMemo.headerRows;
|
|
46
51
|
return {
|
|
@@ -67,6 +67,18 @@ export interface HeadCellProps extends Omit<WrapedColumnProps, 'title'> {
|
|
|
67
67
|
};
|
|
68
68
|
onSort?: (dataIndex: string, sorter: any) => void;
|
|
69
69
|
onInternalFilter?: (dataIndex: string, value: string) => void;
|
|
70
|
+
/**
|
|
71
|
+
* `resizeKey` of the column currently being dragged, if any
|
|
72
|
+
*/
|
|
73
|
+
resizingKey?: string | null;
|
|
74
|
+
/**
|
|
75
|
+
* Begin a pointer driven column resize. Injected by Table when resizing is on.
|
|
76
|
+
*/
|
|
77
|
+
onResizeStart?: (event: React.PointerEvent<HTMLElement>, resizeKey: string) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Nudge a column width by `delta` px, for keyboard driven resizing
|
|
80
|
+
*/
|
|
81
|
+
onResizeStep?: (resizeKey: string, delta: number) => void;
|
|
70
82
|
/**
|
|
71
83
|
* Horizontal span, used for grouped header cells
|
|
72
84
|
*/
|
|
@@ -227,6 +239,20 @@ export interface ColumnProps {
|
|
|
227
239
|
* Set width
|
|
228
240
|
*/
|
|
229
241
|
width?: number | string;
|
|
242
|
+
/**
|
|
243
|
+
* Whether this column can be resized by dragging the right edge of its header
|
|
244
|
+
* cell. Falls back to the table level `resizable` when not set.
|
|
245
|
+
*/
|
|
246
|
+
resizable?: boolean;
|
|
247
|
+
/**
|
|
248
|
+
* Lower bound (in px) applied while resizing this column
|
|
249
|
+
* @default 40
|
|
250
|
+
*/
|
|
251
|
+
minWidth?: number;
|
|
252
|
+
/**
|
|
253
|
+
* Upper bound (in px) applied while resizing this column
|
|
254
|
+
*/
|
|
255
|
+
maxWidth?: number;
|
|
230
256
|
/**
|
|
231
257
|
* Set header display text
|
|
232
258
|
*/
|
|
@@ -261,6 +287,12 @@ export interface WrapedColumnProps extends ColumnProps, ExpandableType, Omit<Row
|
|
|
261
287
|
* Whether this is the first column fixed to the right
|
|
262
288
|
*/
|
|
263
289
|
isFixedRightFirst?: boolean;
|
|
290
|
+
/**
|
|
291
|
+
* Stable identity of this leaf column, used as the key of the resized width
|
|
292
|
+
* map. Only assigned to leaf columns, so its presence also marks a column as
|
|
293
|
+
* a valid resize target (group header cells never carry one).
|
|
294
|
+
*/
|
|
295
|
+
resizeKey?: string;
|
|
264
296
|
}
|
|
265
297
|
/**
|
|
266
298
|
* A header cell resolved from the column tree, with computed span info for multi-level headers.
|
|
@@ -554,6 +586,23 @@ export interface TableProps extends FooterProps, Omit<HeaderProps, 'pageData'>,
|
|
|
554
586
|
* Set table layout
|
|
555
587
|
*/
|
|
556
588
|
tableLayout?: 'auto' | 'fixed';
|
|
589
|
+
/**
|
|
590
|
+
* Whether columns can be resized by dragging the right edge of their header
|
|
591
|
+
* cell. Individual columns can opt out with `column.resizable: false`.
|
|
592
|
+
*
|
|
593
|
+
* The first drag snapshots the rendered width of every column and switches the
|
|
594
|
+
* table to a px controlled `table-layout: fixed`, so column widths stay exactly
|
|
595
|
+
* where they are dragged instead of being redistributed by the browser.
|
|
596
|
+
*/
|
|
597
|
+
resizable?: boolean;
|
|
598
|
+
/**
|
|
599
|
+
* Fired on every width change while a column is being dragged
|
|
600
|
+
*/
|
|
601
|
+
onColumnResize?: (width: number, column: WrapedColumnProps) => void;
|
|
602
|
+
/**
|
|
603
|
+
* Fired once when a column resize interaction finishes
|
|
604
|
+
*/
|
|
605
|
+
onColumnResizeEnd?: (width: number, column: WrapedColumnProps) => void;
|
|
557
606
|
/**
|
|
558
607
|
* Whether to enable virtual list
|
|
559
608
|
*/
|
|
@@ -71,6 +71,48 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
// Sits inside the header cell's right padding so it never overlaps the sorter
|
|
75
|
+
// or filter controls, which are laid out against the content edge.
|
|
76
|
+
&-resize-handle {
|
|
77
|
+
position: absolute;
|
|
78
|
+
top: 0;
|
|
79
|
+
right: 0;
|
|
80
|
+
z-index: 2;
|
|
81
|
+
width: var(--yee-table-resize-handle-width);
|
|
82
|
+
height: 100%;
|
|
83
|
+
cursor: col-resize;
|
|
84
|
+
background-color: transparent;
|
|
85
|
+
touch-action: none;
|
|
86
|
+
user-select: none;
|
|
87
|
+
|
|
88
|
+
&::after {
|
|
89
|
+
position: absolute;
|
|
90
|
+
content: '';
|
|
91
|
+
top: 25%;
|
|
92
|
+
right: calc(var(--yee-table-resize-handle-width) / 2 - 1px);
|
|
93
|
+
width: 2px;
|
|
94
|
+
height: 50%;
|
|
95
|
+
background-color: transparent;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&:hover::after,
|
|
99
|
+
&:focus-visible::after,
|
|
100
|
+
&-active::after {
|
|
101
|
+
background-color: var(--yee-primary-color);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&:focus-visible {
|
|
105
|
+
outline: none;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// While dragging, the pointer leaves the handle constantly; keep the cursor and
|
|
110
|
+
// the selection lock consistent across the whole table.
|
|
111
|
+
&-resizing {
|
|
112
|
+
cursor: col-resize;
|
|
113
|
+
user-select: none;
|
|
114
|
+
}
|
|
115
|
+
|
|
74
116
|
&-filter {
|
|
75
117
|
max-height: var(--yee-table-filter-popup-height);
|
|
76
118
|
background-color: var(--yee-table-filter-list-bg-color);
|
package/dist/esm/Table/table.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
var _excluded = ["prefixCls", "className", "style", "classNames", "styles", "components", "rowKey", "bordered", "tableLayout", "loading", "showHeader", "pagination", "columns", "dataSource", "size", "summary", "scroll", "header", "download", "footer", "children", "expandable", "rowSelection", "locale", "onChange"];
|
|
2
|
+
var _excluded = ["prefixCls", "className", "style", "classNames", "styles", "components", "rowKey", "bordered", "tableLayout", "resizable", "onColumnResize", "onColumnResizeEnd", "loading", "showHeader", "pagination", "columns", "dataSource", "size", "summary", "scroll", "header", "download", "footer", "children", "expandable", "rowSelection", "locale", "onChange"];
|
|
3
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
5
|
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; }
|
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
7
|
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); }
|
|
8
8
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
9
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
9
10
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
11
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
12
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -20,6 +21,7 @@ import Spin from "../Spin";
|
|
|
20
21
|
import ColGroup from "./col-group";
|
|
21
22
|
import Footer from "./footer";
|
|
22
23
|
import Header from "./header";
|
|
24
|
+
import useColumnResize from "./hooks/useColumnResize";
|
|
23
25
|
import useColumns from "./hooks/useColumns";
|
|
24
26
|
import useExpand from "./hooks/useExpand";
|
|
25
27
|
import useSelection from "./hooks/useSelection";
|
|
@@ -27,7 +29,6 @@ import TBody from "./tbody";
|
|
|
27
29
|
import TFooter from "./tfooter";
|
|
28
30
|
import THeader from "./theader";
|
|
29
31
|
import { GlobalContext } from "../Config-Provider";
|
|
30
|
-
import useLatest from "../hooks/useLatest";
|
|
31
32
|
import mergeContextToProps from "../utils/mergeContextToProps";
|
|
32
33
|
import omit from "../utils/omit";
|
|
33
34
|
import { pickDataAttrs } from "../utils/types";
|
|
@@ -51,6 +52,9 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
51
52
|
rowKey = _props$rowKey === void 0 ? 'key' : _props$rowKey,
|
|
52
53
|
bordered = props.bordered,
|
|
53
54
|
tableLayout = props.tableLayout,
|
|
55
|
+
resizable = props.resizable,
|
|
56
|
+
onColumnResize = props.onColumnResize,
|
|
57
|
+
onColumnResizeEnd = props.onColumnResizeEnd,
|
|
54
58
|
_props$loading = props.loading,
|
|
55
59
|
loading = _props$loading === void 0 ? false : _props$loading,
|
|
56
60
|
_props$showHeader = props.showHeader,
|
|
@@ -78,6 +82,30 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
78
82
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
79
83
|
measuredColumnWidths = _React$useState2[0],
|
|
80
84
|
setMeasuredColumnWidths = _React$useState2[1];
|
|
85
|
+
var contentRef = useRef(null);
|
|
86
|
+
var tableRef = useRef(null);
|
|
87
|
+
|
|
88
|
+
// Filled in right after `useColumns` below. The resize hook needs the latest
|
|
89
|
+
// leaf columns, but `wrapedColumns` is itself derived from the resized widths,
|
|
90
|
+
// so depending on it directly would rebuild the drag handlers mid-drag.
|
|
91
|
+
var wrapedColumnsRef = useRef([]);
|
|
92
|
+
var _useColumnResize = useColumnResize({
|
|
93
|
+
tableRef: tableRef,
|
|
94
|
+
columnsRef: wrapedColumnsRef,
|
|
95
|
+
onColumnResize: onColumnResize,
|
|
96
|
+
onColumnResizeEnd: onColumnResizeEnd
|
|
97
|
+
}),
|
|
98
|
+
resizedWidths = _useColumnResize.resizedWidths,
|
|
99
|
+
resizingKey = _useColumnResize.resizingKey,
|
|
100
|
+
onResizeStart = _useColumnResize.onResizeStart,
|
|
101
|
+
onResizeStep = _useColumnResize.onResizeStep,
|
|
102
|
+
resetResizedWidths = _useColumnResize.resetResizedWidths;
|
|
103
|
+
|
|
104
|
+
// Once a snapshot exists, every column carries an explicit px width and the
|
|
105
|
+
// table switches to `table-layout: fixed`, which makes those declared widths
|
|
106
|
+
// authoritative. The measured widths lag one frame behind a drag, so they must
|
|
107
|
+
// stop feeding the fixed-column offsets while a snapshot is in play.
|
|
108
|
+
var hasResizeSnapshot = Object.keys(resizedWidths).length > 0;
|
|
81
109
|
var getRowKey = React.useCallback(function (record) {
|
|
82
110
|
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rowKey;
|
|
83
111
|
return typeof key === 'function' ? key(record) : record[key];
|
|
@@ -92,10 +120,48 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
92
120
|
columns: propColumns,
|
|
93
121
|
expandable: expandable,
|
|
94
122
|
rowSelection: rowSelection,
|
|
95
|
-
measuredColumnWidths: measuredColumnWidths
|
|
123
|
+
measuredColumnWidths: hasResizeSnapshot ? undefined : measuredColumnWidths,
|
|
124
|
+
resizable: resizable,
|
|
125
|
+
resizedWidths: resizedWidths
|
|
96
126
|
}),
|
|
97
127
|
wrapedColumns = _useColumns.wrapedColumns,
|
|
98
128
|
headerRows = _useColumns.headerRows;
|
|
129
|
+
wrapedColumnsRef.current = wrapedColumns;
|
|
130
|
+
|
|
131
|
+
// Total width of the px controlled layout. Deliberately `undefined` unless the
|
|
132
|
+
// snapshot covers every single column: a partial snapshot would leave a hole in
|
|
133
|
+
// the layout, so it is safer to fall back to the browser's own distribution.
|
|
134
|
+
var resizeTotalWidth = useMemo(function () {
|
|
135
|
+
if (!wrapedColumns.length) return undefined;
|
|
136
|
+
var total = 0;
|
|
137
|
+
var _iterator = _createForOfIteratorHelper(wrapedColumns),
|
|
138
|
+
_step;
|
|
139
|
+
try {
|
|
140
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
141
|
+
var column = _step.value;
|
|
142
|
+
var width = column.resizeKey ? resizedWidths[column.resizeKey] : undefined;
|
|
143
|
+
if (!width || !Number.isFinite(width)) return undefined;
|
|
144
|
+
total += width;
|
|
145
|
+
}
|
|
146
|
+
} catch (err) {
|
|
147
|
+
_iterator.e(err);
|
|
148
|
+
} finally {
|
|
149
|
+
_iterator.f();
|
|
150
|
+
}
|
|
151
|
+
return total;
|
|
152
|
+
}, [wrapedColumns, resizedWidths]);
|
|
153
|
+
var resizeActive = resizeTotalWidth !== undefined;
|
|
154
|
+
|
|
155
|
+
// Identity of the column set, ignoring widths. When it changes the snapshot is
|
|
156
|
+
// stale (a new column would have no width of its own), so it gets dropped.
|
|
157
|
+
var resizeKeysSignature = useMemo(function () {
|
|
158
|
+
return wrapedColumns.map(function (column) {
|
|
159
|
+
return column.resizeKey;
|
|
160
|
+
}).join('|');
|
|
161
|
+
}, [wrapedColumns]);
|
|
162
|
+
useEffect(function () {
|
|
163
|
+
resetResizedWidths();
|
|
164
|
+
}, [resizeKeysSignature, resetResizedWidths]);
|
|
99
165
|
|
|
100
166
|
// Filter
|
|
101
167
|
var _useFilter = useFilter({
|
|
@@ -171,8 +237,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
171
237
|
|
|
172
238
|
// Track filter changes to emit onChange after filtered data is recalculated
|
|
173
239
|
var prevFilterRecordsRef = useRef(filterRecords);
|
|
174
|
-
var contentRef = useRef(null);
|
|
175
|
-
var tableRef = useRef(null);
|
|
176
240
|
var _React$useState3 = React.useState({
|
|
177
241
|
left: false,
|
|
178
242
|
right: false
|
|
@@ -203,11 +267,10 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
203
267
|
}).join('|');
|
|
204
268
|
}, [wrapedColumns]);
|
|
205
269
|
|
|
206
|
-
//
|
|
207
|
-
// `wrapedColumns` is derived from `measuredColumnWidths`, so depending
|
|
208
|
-
// directly would recreate the callback (and the ResizeObserver) on every
|
|
270
|
+
// `wrapedColumnsRef` (assigned during render, above) keeps the measure callback
|
|
271
|
+
// stable: `wrapedColumns` is derived from `measuredColumnWidths`, so depending
|
|
272
|
+
// on it directly would recreate the callback (and the ResizeObserver) on every
|
|
209
273
|
// measurement.
|
|
210
|
-
var wrapedColumnsRef = useLatest(wrapedColumns);
|
|
211
274
|
var updateMeasuredColumnWidths = React.useCallback(function () {
|
|
212
275
|
var _tableRef$current;
|
|
213
276
|
var columns = wrapedColumnsRef.current;
|
|
@@ -302,7 +365,10 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
302
365
|
sorters: sorters,
|
|
303
366
|
onSort: handleSort,
|
|
304
367
|
onCheckAll: onCheckAll,
|
|
305
|
-
onInternalFilter: onFilterInternal
|
|
368
|
+
onInternalFilter: onFilterInternal,
|
|
369
|
+
resizingKey: resizingKey,
|
|
370
|
+
onResizeStart: onResizeStart,
|
|
371
|
+
onResizeStep: onResizeStep
|
|
306
372
|
}));
|
|
307
373
|
};
|
|
308
374
|
var renderTBody = function renderTBody() {
|
|
@@ -328,8 +394,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
328
394
|
var renderTable = function renderTable() {
|
|
329
395
|
var tableProps = {
|
|
330
396
|
style: _objectSpread(_objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.table), {}, {
|
|
331
|
-
|
|
332
|
-
|
|
397
|
+
// An explicit total width replaces both `width: 100%` and `scroll.x`:
|
|
398
|
+
// either of those would let the browser stretch the table and redistribute
|
|
399
|
+
// the extra space across the columns, undoing the drag.
|
|
400
|
+
minWidth: resizeActive ? undefined : scroll === null || scroll === void 0 ? void 0 : scroll.x,
|
|
401
|
+
width: resizeTotalWidth,
|
|
402
|
+
tableLayout: resizeActive ? 'fixed' : pageData !== null && pageData !== void 0 && pageData.length ? tableLayout : undefined
|
|
333
403
|
}),
|
|
334
404
|
className: clsx(_defineProperty({}, "".concat(prefixCls, "-bordered"), bordered), classNames === null || classNames === void 0 ? void 0 : classNames.table)
|
|
335
405
|
};
|
|
@@ -369,7 +439,7 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
|
|
|
369
439
|
});
|
|
370
440
|
};
|
|
371
441
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
372
|
-
className: clsx("".concat(prefixCls, "-box"), className),
|
|
442
|
+
className: clsx("".concat(prefixCls, "-box"), _defineProperty({}, "".concat(prefixCls, "-resizing"), !!resizingKey), className),
|
|
373
443
|
style: style,
|
|
374
444
|
ref: ref
|
|
375
445
|
}, dataAttrs), /*#__PURE__*/React.createElement(Spin, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["fixed", "isFixedLeftLast", "isFixedRightFirst", "align", "title", "dataIndex", "sorter", "filter", "sorters", "className", "styles", "classNames", "showSorterTooltip", "tableActionBarShowOnHover", "internalFilters", "style", "width", "colSpan", "rowSpan", "onHeaderCell", "onSort", "onInternalFilter"];
|
|
1
|
+
var _excluded = ["fixed", "isFixedLeftLast", "isFixedRightFirst", "align", "title", "dataIndex", "sorter", "filter", "sorters", "className", "styles", "classNames", "showSorterTooltip", "tableActionBarShowOnHover", "internalFilters", "style", "width", "colSpan", "rowSpan", "resizable", "resizeKey", "resizingKey", "onHeaderCell", "onSort", "onInternalFilter", "onResizeStart", "onResizeStep"];
|
|
2
2
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
3
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
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; }
|
|
@@ -37,9 +37,14 @@ var HeadCell = function HeadCell(props) {
|
|
|
37
37
|
width = props.width,
|
|
38
38
|
colSpan = props.colSpan,
|
|
39
39
|
rowSpan = props.rowSpan,
|
|
40
|
+
resizable = props.resizable,
|
|
41
|
+
resizeKey = props.resizeKey,
|
|
42
|
+
resizingKey = props.resizingKey,
|
|
40
43
|
onHeaderCell = props.onHeaderCell,
|
|
41
44
|
onSort = props.onSort,
|
|
42
45
|
onInternalFilter = props.onInternalFilter,
|
|
46
|
+
onResizeStart = props.onResizeStart,
|
|
47
|
+
onResizeStep = props.onResizeStep,
|
|
43
48
|
rest = _objectWithoutProperties(props, _excluded);
|
|
44
49
|
var _useContext = useContext(TableCtx),
|
|
45
50
|
prefixCls = _useContext.prefixCls;
|
|
@@ -125,6 +130,36 @@ var HeadCell = function HeadCell(props) {
|
|
|
125
130
|
}, renderTitle(), renderFilter());
|
|
126
131
|
};
|
|
127
132
|
var cls = clsx("".concat(prefixCls, "-cell"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-cell-fixed-").concat(fixed), fixed), "".concat(prefixCls, "-cell-fixed-").concat(fixed, "-last"), isFixedLeftLast), "".concat(prefixCls, "-cell-fixed-").concat(fixed, "-first"), isFixedRightFirst), "".concat(prefixCls, "-cell-operate-hover"), tableActionBarShowOnHover), className);
|
|
133
|
+
|
|
134
|
+
// `resizeKey` is only stamped onto leaf columns, so it doubles as the guard that
|
|
135
|
+
// keeps handles off group header cells (whose width is the sum of their leaves).
|
|
136
|
+
var showResizeHandle = !!(resizable && resizeKey && onResizeStart);
|
|
137
|
+
var isResizing = !!resizeKey && resizingKey === resizeKey;
|
|
138
|
+
var renderResizeHandle = function renderResizeHandle() {
|
|
139
|
+
if (!showResizeHandle) return null;
|
|
140
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
141
|
+
role: "separator",
|
|
142
|
+
"aria-orientation": "vertical",
|
|
143
|
+
"aria-label": tableLocale.resizeColumn || 'Drag to resize column',
|
|
144
|
+
tabIndex: 0,
|
|
145
|
+
className: clsx("".concat(prefixCls, "-resize-handle"), _defineProperty({}, "".concat(prefixCls, "-resize-handle-active"), isResizing)),
|
|
146
|
+
onPointerDown: function onPointerDown(event) {
|
|
147
|
+
return onResizeStart === null || onResizeStart === void 0 ? void 0 : onResizeStart(event, resizeKey);
|
|
148
|
+
}
|
|
149
|
+
// The whole title area is a sort trigger, and a resize drag ends with a
|
|
150
|
+
// click on top of it; swallow it so dragging never toggles the sorter.
|
|
151
|
+
,
|
|
152
|
+
onClick: function onClick(event) {
|
|
153
|
+
event.preventDefault();
|
|
154
|
+
event.stopPropagation();
|
|
155
|
+
},
|
|
156
|
+
onKeyDown: function onKeyDown(event) {
|
|
157
|
+
if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
onResizeStep === null || onResizeStep === void 0 || onResizeStep(resizeKey, event.key === 'ArrowLeft' ? -1 : 1);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
};
|
|
128
163
|
var getThProps = function getThProps() {
|
|
129
164
|
var styles = _objectSpread(_objectSpread({}, style), {}, {
|
|
130
165
|
width: width,
|
|
@@ -143,9 +178,9 @@ var HeadCell = function HeadCell(props) {
|
|
|
143
178
|
var thProps = getThProps();
|
|
144
179
|
var renderCell = function renderCell() {
|
|
145
180
|
if (!filter && !sorter) {
|
|
146
|
-
return /*#__PURE__*/React.createElement("th", thProps, title);
|
|
181
|
+
return /*#__PURE__*/React.createElement("th", thProps, title, renderResizeHandle());
|
|
147
182
|
}
|
|
148
|
-
return /*#__PURE__*/React.createElement("th", thProps, renderCellWithAction());
|
|
183
|
+
return /*#__PURE__*/React.createElement("th", thProps, renderCellWithAction(), renderResizeHandle());
|
|
149
184
|
};
|
|
150
185
|
var cell = renderCell();
|
|
151
186
|
return cell;
|
|
@@ -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) {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { Tabs } from "../..";
|
|
8
|
+
import React, { useState } from 'react';
|
|
9
|
+
export default (function () {
|
|
10
|
+
var items = Array.from({
|
|
11
|
+
length: 24
|
|
12
|
+
}, function (_, i) {
|
|
13
|
+
return {
|
|
14
|
+
key: "tab-".concat(i + 1),
|
|
15
|
+
label: "Tab ".concat(i + 1),
|
|
16
|
+
children: "Content of Tab Pane ".concat(i + 1)
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
var _useState = useState('tab-1'),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
centerKey = _useState2[0],
|
|
22
|
+
setCenterKey = _useState2[1];
|
|
23
|
+
var _useState3 = useState('tab-1'),
|
|
24
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
25
|
+
autoKey = _useState4[0],
|
|
26
|
+
setAutoKey = _useState4[1];
|
|
27
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
28
|
+
style: {
|
|
29
|
+
display: 'flex',
|
|
30
|
+
flexDirection: 'column',
|
|
31
|
+
gap: 24
|
|
32
|
+
}
|
|
33
|
+
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("p", {
|
|
34
|
+
style: {
|
|
35
|
+
marginBottom: 8
|
|
36
|
+
}
|
|
37
|
+
}, "activeAlign=\"center\""), /*#__PURE__*/React.createElement("div", {
|
|
38
|
+
style: {
|
|
39
|
+
maxWidth: 480
|
|
40
|
+
},
|
|
41
|
+
"data-testid": "center-wrap"
|
|
42
|
+
}, /*#__PURE__*/React.createElement(Tabs, {
|
|
43
|
+
activeAlign: "center",
|
|
44
|
+
items: items,
|
|
45
|
+
activeKey: centerKey,
|
|
46
|
+
onChange: setCenterKey
|
|
47
|
+
}))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("p", {
|
|
48
|
+
style: {
|
|
49
|
+
marginBottom: 8
|
|
50
|
+
}
|
|
51
|
+
}, "default (auto)"), /*#__PURE__*/React.createElement("div", {
|
|
52
|
+
style: {
|
|
53
|
+
maxWidth: 480
|
|
54
|
+
},
|
|
55
|
+
"data-testid": "auto-wrap"
|
|
56
|
+
}, /*#__PURE__*/React.createElement(Tabs, {
|
|
57
|
+
items: items,
|
|
58
|
+
activeKey: autoKey,
|
|
59
|
+
onChange: setAutoKey
|
|
60
|
+
}))));
|
|
61
|
+
});
|
|
@@ -3,10 +3,11 @@ interface UseNavListMoveOptions {
|
|
|
3
3
|
direction: 'horizontal' | 'vertical';
|
|
4
4
|
activeKey: string | number;
|
|
5
5
|
enabled: boolean;
|
|
6
|
+
align?: 'auto' | 'center';
|
|
6
7
|
activetab: React.RefObject<HTMLElement | null>;
|
|
7
8
|
navList: React.RefObject<HTMLDivElement | null>;
|
|
8
9
|
navContainer: React.RefObject<HTMLDivElement | null>;
|
|
9
10
|
onMoved?: () => void;
|
|
10
11
|
}
|
|
11
|
-
export declare function useNavListMove({ direction, activeKey, enabled, activetab, navList, navContainer, onMoved, }: UseNavListMoveOptions): void;
|
|
12
|
+
export declare function useNavListMove({ direction, activeKey, enabled, align, activetab, navList, navContainer, onMoved, }: UseNavListMoveOptions): void;
|
|
12
13
|
export {};
|