@hkyhy/marsun-components-core 0.1.81 → 0.1.89
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/components/Table/ResizableHeaderCell.js +35 -32
- package/dist/components/Table/ResizableHeaderCell.js.map +1 -1
- package/dist/components/Table/Table.d.ts +2 -2
- package/dist/components/Table/Table.js +157 -151
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/columnConfigUtils.d.ts +11 -0
- package/dist/components/Table/columnConfigUtils.js +90 -79
- package/dist/components/Table/columnConfigUtils.js.map +1 -1
- package/dist/components/Table/index.d.ts +1 -1
- package/dist/components/Table/style.module.scss.js +34 -34
- package/dist/index.js +357 -355
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/package.json +1 -1
|
@@ -1,50 +1,53 @@
|
|
|
1
1
|
import { jsx as C, jsxs as H } from "react/jsx-runtime";
|
|
2
2
|
import I from "classnames";
|
|
3
3
|
import { useRef as D } from "react";
|
|
4
|
-
import { COLUMN_RESIZE_MIN_WIDTH as
|
|
4
|
+
import { COLUMN_RESIZE_MIN_WIDTH as x, COLUMN_RESIZE_MAX_WIDTH as X, clampColumnWidth as P } from "./columnConfigUtils.js";
|
|
5
5
|
import N from "./style.module.scss.js";
|
|
6
|
-
function
|
|
7
|
-
width:
|
|
8
|
-
minWidth: a =
|
|
9
|
-
maxWidth: L =
|
|
10
|
-
onResizeStart:
|
|
11
|
-
onResize:
|
|
12
|
-
onResizeStop:
|
|
13
|
-
onReset:
|
|
14
|
-
children:
|
|
15
|
-
className:
|
|
16
|
-
style:
|
|
17
|
-
...
|
|
6
|
+
function T({
|
|
7
|
+
width: o,
|
|
8
|
+
minWidth: a = x,
|
|
9
|
+
maxWidth: L = X,
|
|
10
|
+
onResizeStart: n,
|
|
11
|
+
onResize: l,
|
|
12
|
+
onResizeStop: s,
|
|
13
|
+
onReset: u,
|
|
14
|
+
children: i,
|
|
15
|
+
className: f,
|
|
16
|
+
style: r,
|
|
17
|
+
...d
|
|
18
18
|
}) {
|
|
19
|
-
const
|
|
20
|
-
typeof
|
|
19
|
+
const c = D(null), m = D(
|
|
20
|
+
typeof o == "number" && Number.isFinite(o) ? o : void 0
|
|
21
21
|
);
|
|
22
|
-
if (!
|
|
23
|
-
return /* @__PURE__ */ C("th", { ...
|
|
22
|
+
if (!l)
|
|
23
|
+
return /* @__PURE__ */ C("th", { ...d, className: f, style: r, ref: c, children: i });
|
|
24
24
|
const M = (e) => {
|
|
25
25
|
var y;
|
|
26
|
-
e.preventDefault(), e.stopPropagation(),
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
const v = (
|
|
30
|
-
const E =
|
|
31
|
-
|
|
26
|
+
e.preventDefault(), e.stopPropagation(), n == null || n();
|
|
27
|
+
const _ = ((y = c.current) == null ? void 0 : y.offsetWidth) || (typeof o == "number" && Number.isFinite(o) && o > 0 ? o : a), g = e.clientX, p = _;
|
|
28
|
+
m.current = p;
|
|
29
|
+
const v = (t) => {
|
|
30
|
+
const E = P(p + (t.clientX - g), a, L);
|
|
31
|
+
m.current = E, l(E);
|
|
32
32
|
}, b = () => {
|
|
33
33
|
document.removeEventListener("mousemove", v), document.removeEventListener("mouseup", b), document.body.style.cursor = "", document.body.style.userSelect = "";
|
|
34
|
-
const
|
|
35
|
-
typeof
|
|
34
|
+
const t = m.current;
|
|
35
|
+
typeof t == "number" && (s == null || s(t));
|
|
36
36
|
};
|
|
37
37
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none", document.addEventListener("mousemove", v), document.addEventListener("mouseup", b);
|
|
38
|
+
}, W = {
|
|
39
|
+
...r,
|
|
40
|
+
overflow: (r == null ? void 0 : r.overflow) ?? "visible"
|
|
38
41
|
};
|
|
39
42
|
return /* @__PURE__ */ H(
|
|
40
43
|
"th",
|
|
41
44
|
{
|
|
42
|
-
...
|
|
43
|
-
ref:
|
|
44
|
-
className: I(
|
|
45
|
-
style:
|
|
45
|
+
...d,
|
|
46
|
+
ref: c,
|
|
47
|
+
className: I(f, N.resizableHeaderCell),
|
|
48
|
+
style: W,
|
|
46
49
|
children: [
|
|
47
|
-
|
|
50
|
+
i,
|
|
48
51
|
/* @__PURE__ */ C(
|
|
49
52
|
"span",
|
|
50
53
|
{
|
|
@@ -56,7 +59,7 @@ function O({
|
|
|
56
59
|
onClick: (e) => e.stopPropagation(),
|
|
57
60
|
onMouseDown: M,
|
|
58
61
|
onDoubleClick: (e) => {
|
|
59
|
-
e.preventDefault(), e.stopPropagation(),
|
|
62
|
+
e.preventDefault(), e.stopPropagation(), u == null || u();
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
)
|
|
@@ -65,6 +68,6 @@ function O({
|
|
|
65
68
|
);
|
|
66
69
|
}
|
|
67
70
|
export {
|
|
68
|
-
|
|
71
|
+
T as default
|
|
69
72
|
};
|
|
70
73
|
//# sourceMappingURL=ResizableHeaderCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResizableHeaderCell.js","sources":["../../../src/components/Table/ResizableHeaderCell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n useRef,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type ThHTMLAttributes,\n} from 'react';\nimport {\n clampColumnWidth,\n COLUMN_RESIZE_MAX_WIDTH,\n COLUMN_RESIZE_MIN_WIDTH,\n} from './columnConfigUtils';\nimport styles from './style.module.scss';\n\nexport type ResizableHeaderCellProps = ThHTMLAttributes<HTMLTableCellElement> & {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n /** 开始拖拽前调用(用于锁死其它列宽) */\n onResizeStart?: () => void;\n onResize?: (width: number) => void;\n onResizeStop?: (width: number) => void;\n /** 双击把手:清除自定义 width */\n onReset?: () => void;\n children?: ReactNode;\n};\n\n/**\n * antd Table header.cell:表头右缘拖拽调宽;无 onResize 时退化为普通 th。\n */\nexport default function ResizableHeaderCell({\n width,\n minWidth = COLUMN_RESIZE_MIN_WIDTH,\n maxWidth = COLUMN_RESIZE_MAX_WIDTH,\n onResizeStart,\n onResize,\n onResizeStop,\n onReset,\n children,\n className,\n style,\n ...rest\n}: ResizableHeaderCellProps) {\n const thRef = useRef<HTMLTableCellElement>(null);\n const lastWidthRef = useRef<number | undefined>(\n typeof width === 'number' && Number.isFinite(width) ? width : undefined,\n );\n\n if (!onResize) {\n return (\n <th {...rest} className={className} style={style} ref={thRef}>\n {children}\n </th>\n );\n }\n\n const startDrag = (e: ReactMouseEvent<HTMLSpanElement>) => {\n e.preventDefault();\n e.stopPropagation();\n // 先锁兄弟列,再量本列(锁宽可能触发重排,故本列尽量用当前 offsetWidth)\n onResizeStart?.();\n const measured =\n thRef.current?.offsetWidth ||\n (typeof width === 'number' && Number.isFinite(width) && width > 0 ? width : minWidth);\n const startX = e.clientX;\n const startW = measured;\n lastWidthRef.current = startW;\n\n const onMove = (ev: MouseEvent) => {\n const next = clampColumnWidth(startW + (ev.clientX - startX), minWidth, maxWidth);\n lastWidthRef.current = next;\n onResize(next);\n };\n const onUp = () => {\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n const finalW = lastWidthRef.current;\n if (typeof finalW === 'number') onResizeStop?.(finalW);\n };\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n };\n\n return (\n <th\n {...rest}\n ref={thRef}\n className={classNames(className, styles.resizableHeaderCell)}\n style={
|
|
1
|
+
{"version":3,"file":"ResizableHeaderCell.js","sources":["../../../src/components/Table/ResizableHeaderCell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n useRef,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type ThHTMLAttributes,\n} from 'react';\nimport {\n clampColumnWidth,\n COLUMN_RESIZE_MAX_WIDTH,\n COLUMN_RESIZE_MIN_WIDTH,\n} from './columnConfigUtils';\nimport styles from './style.module.scss';\n\nexport type ResizableHeaderCellProps = ThHTMLAttributes<HTMLTableCellElement> & {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n /** 开始拖拽前调用(用于锁死其它列宽) */\n onResizeStart?: () => void;\n onResize?: (width: number) => void;\n onResizeStop?: (width: number) => void;\n /** 双击把手:清除自定义 width */\n onReset?: () => void;\n children?: ReactNode;\n};\n\n/**\n * antd Table header.cell:表头右缘拖拽调宽;无 onResize 时退化为普通 th。\n */\nexport default function ResizableHeaderCell({\n width,\n minWidth = COLUMN_RESIZE_MIN_WIDTH,\n maxWidth = COLUMN_RESIZE_MAX_WIDTH,\n onResizeStart,\n onResize,\n onResizeStop,\n onReset,\n children,\n className,\n style,\n ...rest\n}: ResizableHeaderCellProps) {\n const thRef = useRef<HTMLTableCellElement>(null);\n const lastWidthRef = useRef<number | undefined>(\n typeof width === 'number' && Number.isFinite(width) ? width : undefined,\n );\n\n if (!onResize) {\n return (\n <th {...rest} className={className} style={style} ref={thRef}>\n {children}\n </th>\n );\n }\n\n const startDrag = (e: ReactMouseEvent<HTMLSpanElement>) => {\n e.preventDefault();\n e.stopPropagation();\n // 先锁兄弟列,再量本列(锁宽可能触发重排,故本列尽量用当前 offsetWidth)\n onResizeStart?.();\n const measured =\n thRef.current?.offsetWidth ||\n (typeof width === 'number' && Number.isFinite(width) && width > 0 ? width : minWidth);\n const startX = e.clientX;\n const startW = measured;\n lastWidthRef.current = startW;\n\n const onMove = (ev: MouseEvent) => {\n const next = clampColumnWidth(startW + (ev.clientX - startX), minWidth, maxWidth);\n lastWidthRef.current = next;\n onResize(next);\n };\n const onUp = () => {\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n const finalW = lastWidthRef.current;\n if (typeof finalW === 'number') onResizeStop?.(finalW);\n };\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n };\n\n // 勿写 inline position:relative——会覆盖 .ant-table-cell-fix 的 sticky,导致固定列分裂。\n // 普通列的定位上下文由 .resizableHeaderCell 的 CSS :not(.ant-table-cell-fix*) 提供;\n // sticky 自身可作为 absolute 把手的 containing block。\n const mergedStyle = {\n ...style,\n overflow: style?.overflow ?? 'visible',\n };\n\n return (\n <th\n {...rest}\n ref={thRef}\n className={classNames(className, styles.resizableHeaderCell)}\n style={mergedStyle}\n >\n {children}\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"拖拽调整列宽,双击重置\"\n title=\"拖拽调宽 · 双击重置\"\n className={styles.resizeHandle}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={startDrag}\n onDoubleClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onReset?.();\n }}\n />\n </th>\n );\n}\n"],"names":["ResizableHeaderCell","width","minWidth","COLUMN_RESIZE_MIN_WIDTH","maxWidth","COLUMN_RESIZE_MAX_WIDTH","onResizeStart","onResize","onResizeStop","onReset","children","className","style","rest","thRef","useRef","lastWidthRef","jsx","startDrag","measured","_a","startX","startW","onMove","ev","next","clampColumnWidth","onUp","finalW","mergedStyle","jsxs","classNames","styles"],"mappings":";;;;;AA8BA,SAAwBA,EAAoB;AAAA,EAC1C,OAAAC;AAAA,EACA,UAAAC,IAAWC;AAAA,EACX,UAAAC,IAAWC;AAAA,EACX,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAA6B;AAC3B,QAAMC,IAAQC,EAA6B,IAAI,GACzCC,IAAeD;AAAA,IACnB,OAAOd,KAAU,YAAY,OAAO,SAASA,CAAK,IAAIA,IAAQ;AAAA,EAAA;AAGhE,MAAI,CAACM;AACH,WACE,gBAAAU,EAAC,QAAI,GAAGJ,GAAM,WAAAF,GAAsB,OAAAC,GAAc,KAAKE,GACpD,UAAAJ,GACH;AAIJ,QAAMQ,IAAY,CAAC,MAAwC;;AACzD,MAAE,eAAA,GACF,EAAE,gBAAA,GAEFZ,KAAA,QAAAA;AACA,UAAMa,MACJC,IAAAN,EAAM,YAAN,gBAAAM,EAAe,iBACd,OAAOnB,KAAU,YAAY,OAAO,SAASA,CAAK,KAAKA,IAAQ,IAAIA,IAAQC,IACxEmB,IAAS,EAAE,SACXC,IAASH;AACf,IAAAH,EAAa,UAAUM;AAEvB,UAAMC,IAAS,CAACC,MAAmB;AACjC,YAAMC,IAAOC,EAAiBJ,KAAUE,EAAG,UAAUH,IAASnB,GAAUE,CAAQ;AAChF,MAAAY,EAAa,UAAUS,GACvBlB,EAASkB,CAAI;AAAA,IACf,GACME,IAAO,MAAM;AACjB,eAAS,oBAAoB,aAAaJ,CAAM,GAChD,SAAS,oBAAoB,WAAWI,CAAI,GAC5C,SAAS,KAAK,MAAM,SAAS,IAC7B,SAAS,KAAK,MAAM,aAAa;AACjC,YAAMC,IAASZ,EAAa;AAC5B,MAAI,OAAOY,KAAW,aAAUpB,KAAA,QAAAA,EAAeoB;AAAA,IACjD;AACA,aAAS,KAAK,MAAM,SAAS,cAC7B,SAAS,KAAK,MAAM,aAAa,QACjC,SAAS,iBAAiB,aAAaL,CAAM,GAC7C,SAAS,iBAAiB,WAAWI,CAAI;AAAA,EAC3C,GAKME,IAAc;AAAA,IAClB,GAAGjB;AAAA,IACH,WAAUA,KAAA,gBAAAA,EAAO,aAAY;AAAA,EAAA;AAG/B,SACE,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGjB;AAAA,MACJ,KAAKC;AAAA,MACL,WAAWiB,EAAWpB,GAAWqB,EAAO,mBAAmB;AAAA,MAC3D,OAAOH;AAAA,MAEN,UAAA;AAAA,QAAAnB;AAAA,QACD,gBAAAO;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,oBAAiB;AAAA,YACjB,cAAW;AAAA,YACX,OAAM;AAAA,YACN,WAAWe,EAAO;AAAA,YAClB,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,YAClB,aAAad;AAAA,YACb,eAAe,CAAC,MAAM;AACpB,gBAAE,eAAA,GACF,EAAE,gBAAA,GACFT,KAAA,QAAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TableProps as AntTableProps } from 'antd';
|
|
2
2
|
import { Key, ReactElement, ReactNode, Ref } from 'react';
|
|
3
3
|
import { TableColumnConfigFetcher, TableColumnConfigItem, TableColumnConfigSaver } from './columnConfigTypes';
|
|
4
|
-
import { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, isInternalColumnKey, setColumnWidthAtPath } from './columnConfigUtils';
|
|
4
|
+
import { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, setColumnWidthAtPath } from './columnConfigUtils';
|
|
5
5
|
import { TablePrefs, TablePrefsFetcher, TablePrefsSaver } from './tablePrefsTypes';
|
|
6
6
|
import { TableFetchHandle, TableFetchMapped, TableFetchQuery } from './useTableFetch';
|
|
7
7
|
export type { TableColumnConfigFetcher, TableColumnConfigItem, TableColumnConfigSaver, TableFetchHandle, TableFetchMapped, TableFetchQuery, TablePrefs, TablePrefsFetcher, TablePrefsSaver, };
|
|
@@ -61,4 +61,4 @@ declare const Table: <RecordType extends object = Record<string, unknown>>(props
|
|
|
61
61
|
export default Table;
|
|
62
62
|
export { emptyTablePrefs } from './tablePrefsTypes';
|
|
63
63
|
export { applyHiddenRows, mergeTablePrefs, normalizeHiddenRowKeys, parseTablePrefs, serializeTablePrefs, } from './tablePrefsUtils';
|
|
64
|
-
export { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, isInternalColumnKey, setColumnWidthAtPath, };
|
|
64
|
+
export { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, setColumnWidthAtPath, };
|