@hw-component/table 1.9.88 → 1.9.90
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/es/HTableBody/HeaderTitle/hooks.d.ts +8 -0
- package/es/HTableBody/HeaderTitle/hooks.js +53 -0
- package/es/HTableBody/HeaderTitle/index.js +7 -31
- package/es/render/Text.d.ts +1 -0
- package/lib/HTableBody/HeaderTitle/hooks.d.ts +8 -0
- package/lib/HTableBody/HeaderTitle/hooks.js +54 -0
- package/lib/HTableBody/HeaderTitle/index.js +6 -30
- package/lib/render/Text.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/HTableBody/HeaderTitle/hooks.ts +47 -0
- package/src/components/HTableBody/HeaderTitle/index.tsx +10 -31
- package/src/pages/Table/index.tsx +8 -17
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MutableRefObject } from "react";
|
|
2
|
+
interface HeaderStyleParams {
|
|
3
|
+
bodyRef: MutableRefObject<HTMLDivElement | null>;
|
|
4
|
+
titleContentRef: MutableRefObject<HTMLDivElement | null>;
|
|
5
|
+
rightNodeRef: MutableRefObject<HTMLDivElement | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare const useHeaderStyle: ({ bodyRef, titleContentRef, rightNodeRef }: HeaderStyleParams) => {};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// welcome to hoo hoo hoo
|
|
2
|
+
import _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';
|
|
3
|
+
import { useState, useLayoutEffect, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
var useHeaderStyle = function useHeaderStyle(_ref) {
|
|
6
|
+
var bodyRef = _ref.bodyRef,
|
|
7
|
+
titleContentRef = _ref.titleContentRef,
|
|
8
|
+
rightNodeRef = _ref.rightNodeRef;
|
|
9
|
+
var _useState = useState({}),
|
|
10
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
11
|
+
style = _useState2[0],
|
|
12
|
+
setStyle = _useState2[1];
|
|
13
|
+
var setHeaderStyle = function setHeaderStyle() {
|
|
14
|
+
var _bodyRef$current, _titleContentRef$curr, _rightNodeRef$current;
|
|
15
|
+
var headerWidth = ((_bodyRef$current = bodyRef.current) === null || _bodyRef$current === void 0 ? void 0 : _bodyRef$current.clientWidth) || 0;
|
|
16
|
+
var titleWidth = ((_titleContentRef$curr = titleContentRef.current) === null || _titleContentRef$curr === void 0 ? void 0 : _titleContentRef$curr.clientWidth) || 0;
|
|
17
|
+
var rightNodeWidth = ((_rightNodeRef$current = rightNodeRef.current) === null || _rightNodeRef$current === void 0 ? void 0 : _rightNodeRef$current.clientWidth) || 0;
|
|
18
|
+
if (rightNodeWidth + titleWidth >= headerWidth) {
|
|
19
|
+
setStyle({
|
|
20
|
+
overflow: "auto"
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
setStyle({});
|
|
25
|
+
};
|
|
26
|
+
useLayoutEffect(function () {
|
|
27
|
+
setHeaderStyle();
|
|
28
|
+
}, []);
|
|
29
|
+
useEffect(function () {
|
|
30
|
+
var resizeFn = function resizeFn() {
|
|
31
|
+
setHeaderStyle();
|
|
32
|
+
};
|
|
33
|
+
window.addEventListener("resize", resizeFn);
|
|
34
|
+
return function () {
|
|
35
|
+
window.removeEventListener("resize", resizeFn);
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
useEffect(function () {
|
|
39
|
+
var element = titleContentRef.current;
|
|
40
|
+
if (!element || !window.ResizeObserver) return;
|
|
41
|
+
var observer = new ResizeObserver(function () {
|
|
42
|
+
setHeaderStyle();
|
|
43
|
+
});
|
|
44
|
+
observer.observe(element);
|
|
45
|
+
return function () {
|
|
46
|
+
observer.disconnect();
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
49
|
+
return style;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export { useHeaderStyle };
|
|
53
|
+
// powered by hdj
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// welcome to hoo hoo hoo
|
|
2
|
-
import _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';
|
|
3
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
-
import React, { useRef
|
|
3
|
+
import React, { useRef } from 'react';
|
|
5
4
|
import { useHTableContext } from '../../context.js';
|
|
6
5
|
import { useClassName } from '../../hooks/index.js';
|
|
6
|
+
import { useHeaderStyle } from './hooks.js';
|
|
7
7
|
|
|
8
8
|
var HeaderTitle = (function (_ref) {
|
|
9
9
|
var headerTitle = _ref.headerTitle,
|
|
@@ -17,39 +17,15 @@ var HeaderTitle = (function (_ref) {
|
|
|
17
17
|
var bodyRef = useRef();
|
|
18
18
|
var titleContentRef = useRef();
|
|
19
19
|
var rightNodeRef = useRef();
|
|
20
|
-
var _useState = useState({}),
|
|
21
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
22
|
-
style = _useState2[0],
|
|
23
|
-
setStyle = _useState2[1];
|
|
24
20
|
var headerBox = useClassName("hw-table-header-title-box");
|
|
25
21
|
var headerBoxContent = useClassName("hw-table-header-title-box-content");
|
|
26
22
|
var titleClassname = useClassName("hw-table-header-title");
|
|
27
23
|
var rightNodeClassname = useClassName("hw-table-header-right-node");
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (rightNodeWidth + titleWidth >= headerWidth) {
|
|
34
|
-
setStyle({
|
|
35
|
-
overflow: "auto"
|
|
36
|
-
});
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
setStyle({});
|
|
40
|
-
};
|
|
41
|
-
useLayoutEffect(function () {
|
|
42
|
-
setHeaderStyle();
|
|
43
|
-
}, []);
|
|
44
|
-
useEffect(function () {
|
|
45
|
-
var resizeFn = function resizeFn() {
|
|
46
|
-
setHeaderStyle();
|
|
47
|
-
};
|
|
48
|
-
window.addEventListener("resize", resizeFn);
|
|
49
|
-
return function () {
|
|
50
|
-
window.removeEventListener("resize", resizeFn);
|
|
51
|
-
};
|
|
52
|
-
}, []);
|
|
24
|
+
var style = useHeaderStyle({
|
|
25
|
+
bodyRef: bodyRef,
|
|
26
|
+
titleContentRef: titleContentRef,
|
|
27
|
+
rightNodeRef: rightNodeRef
|
|
28
|
+
});
|
|
53
29
|
if (!headerTitle && !rNode) {
|
|
54
30
|
return null;
|
|
55
31
|
}
|
package/es/render/Text.d.ts
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MutableRefObject } from "react";
|
|
2
|
+
interface HeaderStyleParams {
|
|
3
|
+
bodyRef: MutableRefObject<HTMLDivElement | null>;
|
|
4
|
+
titleContentRef: MutableRefObject<HTMLDivElement | null>;
|
|
5
|
+
rightNodeRef: MutableRefObject<HTMLDivElement | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare const useHeaderStyle: ({ bodyRef, titleContentRef, rightNodeRef }: HeaderStyleParams) => {};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
var useHeaderStyle = function useHeaderStyle(_ref) {
|
|
7
|
+
var bodyRef = _ref.bodyRef,
|
|
8
|
+
titleContentRef = _ref.titleContentRef,
|
|
9
|
+
rightNodeRef = _ref.rightNodeRef;
|
|
10
|
+
var _useState = React.useState({}),
|
|
11
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
12
|
+
style = _useState2[0],
|
|
13
|
+
setStyle = _useState2[1];
|
|
14
|
+
var setHeaderStyle = function setHeaderStyle() {
|
|
15
|
+
var _bodyRef$current, _titleContentRef$curr, _rightNodeRef$current;
|
|
16
|
+
var headerWidth = ((_bodyRef$current = bodyRef.current) === null || _bodyRef$current === void 0 ? void 0 : _bodyRef$current.clientWidth) || 0;
|
|
17
|
+
var titleWidth = ((_titleContentRef$curr = titleContentRef.current) === null || _titleContentRef$curr === void 0 ? void 0 : _titleContentRef$curr.clientWidth) || 0;
|
|
18
|
+
var rightNodeWidth = ((_rightNodeRef$current = rightNodeRef.current) === null || _rightNodeRef$current === void 0 ? void 0 : _rightNodeRef$current.clientWidth) || 0;
|
|
19
|
+
if (rightNodeWidth + titleWidth >= headerWidth) {
|
|
20
|
+
setStyle({
|
|
21
|
+
overflow: "auto"
|
|
22
|
+
});
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
setStyle({});
|
|
26
|
+
};
|
|
27
|
+
React.useLayoutEffect(function () {
|
|
28
|
+
setHeaderStyle();
|
|
29
|
+
}, []);
|
|
30
|
+
React.useEffect(function () {
|
|
31
|
+
var resizeFn = function resizeFn() {
|
|
32
|
+
setHeaderStyle();
|
|
33
|
+
};
|
|
34
|
+
window.addEventListener("resize", resizeFn);
|
|
35
|
+
return function () {
|
|
36
|
+
window.removeEventListener("resize", resizeFn);
|
|
37
|
+
};
|
|
38
|
+
}, []);
|
|
39
|
+
React.useEffect(function () {
|
|
40
|
+
var element = titleContentRef.current;
|
|
41
|
+
if (!element || !window.ResizeObserver) return;
|
|
42
|
+
var observer = new ResizeObserver(function () {
|
|
43
|
+
setHeaderStyle();
|
|
44
|
+
});
|
|
45
|
+
observer.observe(element);
|
|
46
|
+
return function () {
|
|
47
|
+
observer.disconnect();
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
return style;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports.useHeaderStyle = useHeaderStyle;
|
|
54
|
+
// powered by h
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
6
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var context = require('../../context.js');
|
|
9
8
|
var index = require('../../hooks/index.js');
|
|
9
|
+
var hooks = require('./hooks.js');
|
|
10
10
|
|
|
11
11
|
var HeaderTitle = (function (_ref) {
|
|
12
12
|
var headerTitle = _ref.headerTitle,
|
|
@@ -20,39 +20,15 @@ var HeaderTitle = (function (_ref) {
|
|
|
20
20
|
var bodyRef = React.useRef();
|
|
21
21
|
var titleContentRef = React.useRef();
|
|
22
22
|
var rightNodeRef = React.useRef();
|
|
23
|
-
var _useState = React.useState({}),
|
|
24
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
25
|
-
style = _useState2[0],
|
|
26
|
-
setStyle = _useState2[1];
|
|
27
23
|
var headerBox = index.useClassName("hw-table-header-title-box");
|
|
28
24
|
var headerBoxContent = index.useClassName("hw-table-header-title-box-content");
|
|
29
25
|
var titleClassname = index.useClassName("hw-table-header-title");
|
|
30
26
|
var rightNodeClassname = index.useClassName("hw-table-header-right-node");
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (rightNodeWidth + titleWidth >= headerWidth) {
|
|
37
|
-
setStyle({
|
|
38
|
-
overflow: "auto"
|
|
39
|
-
});
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
setStyle({});
|
|
43
|
-
};
|
|
44
|
-
React.useLayoutEffect(function () {
|
|
45
|
-
setHeaderStyle();
|
|
46
|
-
}, []);
|
|
47
|
-
React.useEffect(function () {
|
|
48
|
-
var resizeFn = function resizeFn() {
|
|
49
|
-
setHeaderStyle();
|
|
50
|
-
};
|
|
51
|
-
window.addEventListener("resize", resizeFn);
|
|
52
|
-
return function () {
|
|
53
|
-
window.removeEventListener("resize", resizeFn);
|
|
54
|
-
};
|
|
55
|
-
}, []);
|
|
27
|
+
var style = hooks.useHeaderStyle({
|
|
28
|
+
bodyRef: bodyRef,
|
|
29
|
+
titleContentRef: titleContentRef,
|
|
30
|
+
rightNodeRef: rightNodeRef
|
|
31
|
+
});
|
|
56
32
|
if (!headerTitle && !rNode) {
|
|
57
33
|
return null;
|
|
58
34
|
}
|
package/lib/render/Text.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {MutableRefObject, useEffect, useLayoutEffect, useState} from "react";
|
|
2
|
+
|
|
3
|
+
interface HeaderStyleParams {
|
|
4
|
+
bodyRef:MutableRefObject<HTMLDivElement|null>;
|
|
5
|
+
titleContentRef:MutableRefObject<HTMLDivElement|null>;
|
|
6
|
+
rightNodeRef:MutableRefObject<HTMLDivElement|null>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const useHeaderStyle = ({bodyRef,titleContentRef,rightNodeRef}:HeaderStyleParams) => {
|
|
10
|
+
const [style, setStyle] = useState({});
|
|
11
|
+
const setHeaderStyle = () => {
|
|
12
|
+
const headerWidth = bodyRef.current?.clientWidth || 0;
|
|
13
|
+
const titleWidth = titleContentRef.current?.clientWidth || 0;
|
|
14
|
+
const rightNodeWidth = rightNodeRef.current?.clientWidth || 0;
|
|
15
|
+
if (rightNodeWidth + titleWidth >= headerWidth) {
|
|
16
|
+
setStyle({
|
|
17
|
+
overflow: "auto",
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
setStyle({});
|
|
22
|
+
};
|
|
23
|
+
useLayoutEffect(() => {
|
|
24
|
+
setHeaderStyle();
|
|
25
|
+
}, []);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const resizeFn = () => {
|
|
28
|
+
setHeaderStyle();
|
|
29
|
+
};
|
|
30
|
+
window.addEventListener("resize", resizeFn);
|
|
31
|
+
return () => {
|
|
32
|
+
window.removeEventListener("resize", resizeFn);
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
const element = titleContentRef.current;
|
|
37
|
+
if (!element||!window.ResizeObserver) return;
|
|
38
|
+
const observer = new ResizeObserver(() => {
|
|
39
|
+
setHeaderStyle();
|
|
40
|
+
});
|
|
41
|
+
observer.observe(element);
|
|
42
|
+
return () => {
|
|
43
|
+
observer.disconnect();
|
|
44
|
+
}
|
|
45
|
+
}, []);
|
|
46
|
+
return style;
|
|
47
|
+
}
|
|
@@ -1,53 +1,32 @@
|
|
|
1
|
-
import { Row } from "antd";
|
|
2
1
|
import type { HTableBodyProps } from "../modal";
|
|
3
|
-
import
|
|
4
|
-
import React, {
|
|
2
|
+
import {DetailedReactHTMLElement, useLayoutEffect} from "react";
|
|
3
|
+
import React, { useRef } from "react";
|
|
5
4
|
import { useHTableContext } from "../../context";
|
|
6
5
|
import { useClassName } from "../../hooks";
|
|
6
|
+
import {useHeaderStyle} from "./hooks";
|
|
7
|
+
|
|
7
8
|
interface IProps {
|
|
8
9
|
headerTitle: HTableBodyProps["headerTitle"];
|
|
9
10
|
contentStyle?: React.CSSProperties;
|
|
10
11
|
rNode?: React.ReactNode;
|
|
11
12
|
}
|
|
12
13
|
export default ({ headerTitle, contentStyle, rNode }: IProps) => {
|
|
13
|
-
const { tableInstance, selectedRowData, rowOnChange, allSelectChange } =
|
|
14
|
-
useHTableContext();
|
|
14
|
+
const { tableInstance, selectedRowData, rowOnChange, allSelectChange } = useHTableContext();
|
|
15
15
|
const bodyRef = useRef<any>();
|
|
16
16
|
const titleContentRef = useRef<any>();
|
|
17
17
|
const rightNodeRef = useRef<any>();
|
|
18
|
-
const [style, setStyle] = useState({});
|
|
19
18
|
const headerBox = useClassName("hw-table-header-title-box");
|
|
20
19
|
const headerBoxContent = useClassName("hw-table-header-title-box-content");
|
|
21
20
|
const titleClassname = useClassName("hw-table-header-title");
|
|
22
21
|
const rightNodeClassname = useClassName("hw-table-header-right-node");
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
setStyle({
|
|
29
|
-
overflow: "auto",
|
|
30
|
-
});
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
setStyle({});
|
|
34
|
-
};
|
|
35
|
-
useLayoutEffect(() => {
|
|
36
|
-
setHeaderStyle();
|
|
37
|
-
}, []);
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
const resizeFn = () => {
|
|
40
|
-
setHeaderStyle();
|
|
41
|
-
};
|
|
42
|
-
window.addEventListener("resize", resizeFn);
|
|
43
|
-
return () => {
|
|
44
|
-
window.removeEventListener("resize", resizeFn);
|
|
45
|
-
};
|
|
46
|
-
}, []);
|
|
22
|
+
const style=useHeaderStyle({
|
|
23
|
+
bodyRef,
|
|
24
|
+
titleContentRef,
|
|
25
|
+
rightNodeRef
|
|
26
|
+
});
|
|
47
27
|
if (!headerTitle && !rNode) {
|
|
48
28
|
return null;
|
|
49
29
|
}
|
|
50
|
-
|
|
51
30
|
return (
|
|
52
31
|
<div ref={bodyRef} className={titleClassname} style={contentStyle}>
|
|
53
32
|
<div className={headerBox} style={style}>
|
|
@@ -77,6 +77,7 @@ const maker = (name) => {
|
|
|
77
77
|
};
|
|
78
78
|
export default () => {
|
|
79
79
|
const hTable = useHTable();
|
|
80
|
+
const [width,setWidth]=useState(0);
|
|
80
81
|
const { loading, data } = useRequest(() => {
|
|
81
82
|
const arrayData: any[] = [];
|
|
82
83
|
for (let i = 0; i < 10; i = i + 1) {
|
|
@@ -153,29 +154,19 @@ export default () => {
|
|
|
153
154
|
dataSource={[{}, {}, {}]}
|
|
154
155
|
headerTitle={
|
|
155
156
|
<Space size={8}>
|
|
156
|
-
<
|
|
157
|
-
<Button
|
|
157
|
+
<Button
|
|
158
158
|
onClick={() => {
|
|
159
|
+
setTimeout(()=>{
|
|
160
|
+
setWidth(1000);
|
|
161
|
+
},1000)
|
|
159
162
|
console.log(hTable.table.getColSettingKeys());
|
|
160
163
|
}}
|
|
161
|
-
>
|
|
162
|
-
操作
|
|
163
|
-
</Button>
|
|
164
|
-
</div>
|
|
165
|
-
<Button
|
|
166
|
-
onClick={() => {
|
|
167
|
-
console.log(hTable.table.getColSettingKeys());
|
|
168
|
-
}}
|
|
169
|
-
>
|
|
170
|
-
操作
|
|
171
|
-
</Button>
|
|
172
|
-
<Button
|
|
173
|
-
onClick={() => {
|
|
174
|
-
console.log(hTable.table.getColSettingKeys());
|
|
175
|
-
}}
|
|
176
164
|
>
|
|
177
165
|
操作
|
|
178
166
|
</Button>
|
|
167
|
+
<div>
|
|
168
|
+
<div style={{width,height:50,backgroundColor:"red"}}></div>
|
|
169
|
+
</div>
|
|
179
170
|
</Space>
|
|
180
171
|
}
|
|
181
172
|
options={{
|