@xyo-network/react-shared 2.25.69 → 2.25.72
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/esm/components/TableCell/EllipsisTableCell.js +9 -6
- package/dist/esm/components/TableCell/EllipsisTableCell.js.map +1 -1
- package/dist/esm/components/TableCell/getRemainingRowWidth.d.ts +1 -1
- package/dist/esm/components/TableCell/getRemainingRowWidth.js +2 -3
- package/dist/esm/components/TableCell/getRemainingRowWidth.js.map +1 -1
- package/dist/esm/lib/getActualPaddingX.d.ts +13 -0
- package/dist/esm/lib/getActualPaddingX.js +63 -0
- package/dist/esm/lib/getActualPaddingX.js.map +1 -0
- package/dist/esm/lib/index.d.ts +1 -0
- package/dist/esm/lib/index.js +1 -0
- package/dist/esm/lib/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/TableCell/EllipsisTableCell.tsx +9 -8
- package/src/components/TableCell/getRemainingRowWidth.ts +2 -3
- package/src/lib/getActualPaddingX.ts +61 -0
- package/src/lib/index.ts +1 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { TableCell, Typography
|
|
2
|
+
import { TableCell, Typography } from '@mui/material';
|
|
3
3
|
import { LinkEx } from '@xylabs/react-common';
|
|
4
4
|
import { useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { getActualPaddingX } from '../../lib';
|
|
5
6
|
import { findParent } from './findParent';
|
|
6
7
|
import { getRemainingRowWidth } from './getRemainingRowWidth';
|
|
7
8
|
import { getSmallestParentWidth } from './getSmallestParentWidth';
|
|
@@ -18,9 +19,6 @@ const TableCellValue = ({ style, hashCellWidth, value, ...props }) => {
|
|
|
18
19
|
export const EllipsisTableCell = ({ value, to, href, ...props }) => {
|
|
19
20
|
const [calcCellWidth, setCalcCellWidth] = useState(0);
|
|
20
21
|
const hashDivRef = useRef(null);
|
|
21
|
-
const theme = useTheme();
|
|
22
|
-
// We calulate the spacing since we know that table rows use padding.
|
|
23
|
-
const spacing = parseInt(theme.spacing(4).substring(-2));
|
|
24
22
|
useEffect(() => {
|
|
25
23
|
const currentElement = hashDivRef.current?.parentElement;
|
|
26
24
|
const cell = findParent('td', currentElement);
|
|
@@ -28,7 +26,10 @@ export const EllipsisTableCell = ({ value, to, href, ...props }) => {
|
|
|
28
26
|
const checkWidth = (cell) => {
|
|
29
27
|
const smallestParentWidth = getSmallestParentWidth(cell);
|
|
30
28
|
if (smallestParentWidth && row) {
|
|
31
|
-
const
|
|
29
|
+
const remainingWidth = getRemainingRowWidth(row);
|
|
30
|
+
const actualPaddingX = getActualPaddingX(cell);
|
|
31
|
+
const remainderWidth = smallestParentWidth - remainingWidth - actualPaddingX;
|
|
32
|
+
cell.style.width = `${remainderWidth}`;
|
|
32
33
|
setCalcCellWidth(remainderWidth);
|
|
33
34
|
}
|
|
34
35
|
};
|
|
@@ -40,11 +41,13 @@ export const EllipsisTableCell = ({ value, to, href, ...props }) => {
|
|
|
40
41
|
if (cell) {
|
|
41
42
|
checkWidth(cell);
|
|
42
43
|
window.addEventListener('resize', onResize);
|
|
44
|
+
row?.addEventListener('resize', onResize);
|
|
43
45
|
}
|
|
44
46
|
return () => {
|
|
45
47
|
window.removeEventListener('resize', onResize);
|
|
48
|
+
row?.removeEventListener('resize', onResize);
|
|
46
49
|
};
|
|
47
|
-
}, [hashDivRef
|
|
50
|
+
}, [hashDivRef]);
|
|
48
51
|
return (_jsx(TableCell, { ...props, children: _jsx("div", { ref: hashDivRef, style: {
|
|
49
52
|
display: 'block',
|
|
50
53
|
maxWidth: calcCellWidth,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EllipsisTableCell.js","sourceRoot":"","sources":["../../../../src/components/TableCell/EllipsisTableCell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,UAAU,EAAmB,
|
|
1
|
+
{"version":3,"file":"EllipsisTableCell.js","sourceRoot":"","sources":["../../../../src/components/TableCell/EllipsisTableCell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** @description This is the width of all the cells (except the one passed) in the row combined */
|
|
1
|
+
/** @description This is the width of all the cells (except the one passed) in the row combined and the spacing of the main cell */
|
|
2
2
|
export declare const getRemainingRowWidth: (row: HTMLElement, forCell?: number) => number;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/** @description This is the width of all the cells (except the one passed) in the row combined */
|
|
1
|
+
/** @description This is the width of all the cells (except the one passed) in the row combined and the spacing of the main cell */
|
|
2
2
|
export const getRemainingRowWidth = (row, forCell = 0) => {
|
|
3
3
|
let width = 0;
|
|
4
4
|
for (let i = 0; i < (row?.childElementCount ?? 0); i++) {
|
|
5
5
|
const item = row?.children.item(i);
|
|
6
6
|
if (item) {
|
|
7
7
|
if (i !== forCell) {
|
|
8
|
-
|
|
9
|
-
width += boundingRect?.width ?? 0;
|
|
8
|
+
width += item?.clientWidth ?? 0;
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRemainingRowWidth.js","sourceRoot":"","sources":["../../../../src/components/TableCell/getRemainingRowWidth.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"getRemainingRowWidth.js","sourceRoot":"","sources":["../../../../src/components/TableCell/getRemainingRowWidth.ts"],"names":[],"mappings":"AAAA,mIAAmI;AACnI,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAgB,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE;IACpE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,OAAO,EAAE;gBACjB,KAAK,IAAI,IAAI,EAAE,WAAW,IAAI,CAAC,CAAA;aAChC;SACF;KACF;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const parseMeausureString: (measure?: string, absolute?: number) => number | undefined;
|
|
2
|
+
export declare const parsePadding: (padding: string) => {
|
|
3
|
+
bottom: string;
|
|
4
|
+
left: string;
|
|
5
|
+
right: string;
|
|
6
|
+
top: string;
|
|
7
|
+
} | {
|
|
8
|
+
bottom: string;
|
|
9
|
+
right: string;
|
|
10
|
+
top: string;
|
|
11
|
+
left?: undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
export declare const getActualPaddingX: (element: HTMLElement) => number;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const parseMeausureString = (measure, absolute) => {
|
|
2
|
+
if (measure !== undefined && measure !== null && measure.length > 0) {
|
|
3
|
+
if (measure.endsWith('px')) {
|
|
4
|
+
return parseFloat(measure.substring(0, measure.length - 2));
|
|
5
|
+
}
|
|
6
|
+
else if (measure.endsWith('%')) {
|
|
7
|
+
if (absolute !== undefined) {
|
|
8
|
+
return (parseFloat(measure.substring(0, measure.length - 1)) / 100) * absolute;
|
|
9
|
+
}
|
|
10
|
+
throw Error('Error Parsing Measure [missing absolute]');
|
|
11
|
+
}
|
|
12
|
+
else if (measure.endsWith('vw')) {
|
|
13
|
+
return (parseFloat(measure.substring(0, measure.length - 2)) / 100) * window.innerWidth;
|
|
14
|
+
}
|
|
15
|
+
else if (measure.endsWith('vh')) {
|
|
16
|
+
return (parseFloat(measure.substring(0, measure.length - 2)) / 100) * window.innerHeight;
|
|
17
|
+
}
|
|
18
|
+
throw Error(`Error Parsing Measure [${measure}]`);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
export const parsePadding = (padding) => {
|
|
22
|
+
const parts = padding.split(' ');
|
|
23
|
+
switch (parts.length) {
|
|
24
|
+
case 4: {
|
|
25
|
+
return {
|
|
26
|
+
bottom: parts[2],
|
|
27
|
+
left: parts[3],
|
|
28
|
+
right: parts[1],
|
|
29
|
+
top: parts[0],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
case 3: {
|
|
33
|
+
return {
|
|
34
|
+
bottom: parts[2],
|
|
35
|
+
right: parts[1],
|
|
36
|
+
top: parts[0],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
case 2: {
|
|
40
|
+
return {
|
|
41
|
+
bottom: parts[0],
|
|
42
|
+
left: parts[1],
|
|
43
|
+
right: parts[1],
|
|
44
|
+
top: parts[0],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
case 1: {
|
|
48
|
+
return {
|
|
49
|
+
bottom: parts[0],
|
|
50
|
+
left: parts[0],
|
|
51
|
+
right: parts[0],
|
|
52
|
+
top: parts[0],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
export const getActualPaddingX = (element) => {
|
|
58
|
+
const padding = parsePadding(window.getComputedStyle(element, null).getPropertyValue('padding'));
|
|
59
|
+
const paddingLeft = parseMeausureString(window.getComputedStyle(element, null).getPropertyValue('padding-left') ?? padding?.left, element.clientWidth) ?? 0;
|
|
60
|
+
const paddingRight = parseMeausureString(window.getComputedStyle(element, null).getPropertyValue('padding-right') ?? padding?.right, element.clientWidth) ?? 0;
|
|
61
|
+
return paddingLeft + paddingRight;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=getActualPaddingX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getActualPaddingX.js","sourceRoot":"","sources":["../../../src/lib/getActualPaddingX.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/lib/index.d.ts
CHANGED
package/dist/esm/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
|
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@xylabs/react-common": "^2.14.4",
|
|
21
21
|
"@xylabs/react-flexbox": "^2.14.4",
|
|
22
22
|
"@xylabs/react-shared": "^2.14.4",
|
|
23
|
-
"@xylabs/sdk-js": "^2.5.
|
|
23
|
+
"@xylabs/sdk-js": "^2.5.9",
|
|
24
24
|
"@xyo-network/api": "^2.20.45",
|
|
25
25
|
"@xyo-network/network": "^2.20.45",
|
|
26
26
|
"axios": "^0.27.2",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@babel/preset-env": "^7.18.2",
|
|
37
37
|
"@storybook/react": "^6.5.9",
|
|
38
38
|
"@xylabs/pixel": "^1.3.9",
|
|
39
|
-
"@xylabs/sdk-js": "^2.5.
|
|
39
|
+
"@xylabs/sdk-js": "^2.5.9",
|
|
40
40
|
"@xylabs/tsconfig": "^1.0.13"
|
|
41
41
|
},
|
|
42
42
|
"browser": "dist/esm/index.js",
|
|
@@ -88,6 +88,6 @@
|
|
|
88
88
|
},
|
|
89
89
|
"sideEffects": false,
|
|
90
90
|
"types": "dist/esm/index.d.ts",
|
|
91
|
-
"version": "2.25.
|
|
91
|
+
"version": "2.25.72",
|
|
92
92
|
"packageManager": "yarn@3.1.1"
|
|
93
93
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { TableCell, TableCellProps, Typography, TypographyProps
|
|
1
|
+
import { TableCell, TableCellProps, Typography, TypographyProps } from '@mui/material'
|
|
2
2
|
import { LinkEx } from '@xylabs/react-common'
|
|
3
3
|
import { useEffect, useRef, useState } from 'react'
|
|
4
4
|
import { To } from 'react-router-dom'
|
|
5
5
|
|
|
6
|
+
import { getActualPaddingX } from '../../lib'
|
|
6
7
|
import { findParent } from './findParent'
|
|
7
8
|
import { getRemainingRowWidth } from './getRemainingRowWidth'
|
|
8
9
|
import { getSmallestParentWidth } from './getSmallestParentWidth'
|
|
@@ -42,11 +43,6 @@ export const EllipsisTableCell: React.FC<EllipsisTableCellProps> = ({ value, to,
|
|
|
42
43
|
const [calcCellWidth, setCalcCellWidth] = useState<number>(0)
|
|
43
44
|
const hashDivRef = useRef<HTMLDivElement>(null)
|
|
44
45
|
|
|
45
|
-
const theme = useTheme()
|
|
46
|
-
|
|
47
|
-
// We calulate the spacing since we know that table rows use padding.
|
|
48
|
-
const spacing = parseInt(theme.spacing(4).substring(-2))
|
|
49
|
-
|
|
50
46
|
useEffect(() => {
|
|
51
47
|
const currentElement = hashDivRef.current?.parentElement
|
|
52
48
|
const cell = findParent('td', currentElement)
|
|
@@ -55,7 +51,10 @@ export const EllipsisTableCell: React.FC<EllipsisTableCellProps> = ({ value, to,
|
|
|
55
51
|
const checkWidth = (cell: HTMLElement) => {
|
|
56
52
|
const smallestParentWidth = getSmallestParentWidth(cell)
|
|
57
53
|
if (smallestParentWidth && row) {
|
|
58
|
-
const
|
|
54
|
+
const remainingWidth = getRemainingRowWidth(row)
|
|
55
|
+
const actualPaddingX = getActualPaddingX(cell)
|
|
56
|
+
const remainderWidth = smallestParentWidth - remainingWidth - actualPaddingX
|
|
57
|
+
cell.style.width = `${remainderWidth}`
|
|
59
58
|
setCalcCellWidth(remainderWidth)
|
|
60
59
|
}
|
|
61
60
|
}
|
|
@@ -69,11 +68,13 @@ export const EllipsisTableCell: React.FC<EllipsisTableCellProps> = ({ value, to,
|
|
|
69
68
|
if (cell) {
|
|
70
69
|
checkWidth(cell)
|
|
71
70
|
window.addEventListener('resize', onResize)
|
|
71
|
+
row?.addEventListener('resize', onResize)
|
|
72
72
|
}
|
|
73
73
|
return () => {
|
|
74
74
|
window.removeEventListener('resize', onResize)
|
|
75
|
+
row?.removeEventListener('resize', onResize)
|
|
75
76
|
}
|
|
76
|
-
}, [hashDivRef
|
|
77
|
+
}, [hashDivRef])
|
|
77
78
|
|
|
78
79
|
return (
|
|
79
80
|
<TableCell {...props}>
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/** @description This is the width of all the cells (except the one passed) in the row combined */
|
|
1
|
+
/** @description This is the width of all the cells (except the one passed) in the row combined and the spacing of the main cell */
|
|
2
2
|
export const getRemainingRowWidth = (row: HTMLElement, forCell = 0) => {
|
|
3
3
|
let width = 0
|
|
4
4
|
for (let i = 0; i < (row?.childElementCount ?? 0); i++) {
|
|
5
5
|
const item = row?.children.item(i)
|
|
6
6
|
if (item) {
|
|
7
7
|
if (i !== forCell) {
|
|
8
|
-
|
|
9
|
-
width += boundingRect?.width ?? 0
|
|
8
|
+
width += item?.clientWidth ?? 0
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export const parseMeausureString = (measure?: string, absolute?: number) => {
|
|
2
|
+
if (measure !== undefined && measure !== null && measure.length > 0) {
|
|
3
|
+
if (measure.endsWith('px')) {
|
|
4
|
+
return parseFloat(measure.substring(0, measure.length - 2))
|
|
5
|
+
} else if (measure.endsWith('%')) {
|
|
6
|
+
if (absolute !== undefined) {
|
|
7
|
+
return (parseFloat(measure.substring(0, measure.length - 1)) / 100) * absolute
|
|
8
|
+
}
|
|
9
|
+
throw Error('Error Parsing Measure [missing absolute]')
|
|
10
|
+
} else if (measure.endsWith('vw')) {
|
|
11
|
+
return (parseFloat(measure.substring(0, measure.length - 2)) / 100) * window.innerWidth
|
|
12
|
+
} else if (measure.endsWith('vh')) {
|
|
13
|
+
return (parseFloat(measure.substring(0, measure.length - 2)) / 100) * window.innerHeight
|
|
14
|
+
}
|
|
15
|
+
throw Error(`Error Parsing Measure [${measure}]`)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const parsePadding = (padding: string) => {
|
|
20
|
+
const parts = padding.split(' ')
|
|
21
|
+
switch (parts.length) {
|
|
22
|
+
case 4: {
|
|
23
|
+
return {
|
|
24
|
+
bottom: parts[2],
|
|
25
|
+
left: parts[3],
|
|
26
|
+
right: parts[1],
|
|
27
|
+
top: parts[0],
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
case 3: {
|
|
31
|
+
return {
|
|
32
|
+
bottom: parts[2],
|
|
33
|
+
right: parts[1],
|
|
34
|
+
top: parts[0],
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
case 2: {
|
|
38
|
+
return {
|
|
39
|
+
bottom: parts[0],
|
|
40
|
+
left: parts[1],
|
|
41
|
+
right: parts[1],
|
|
42
|
+
top: parts[0],
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
case 1: {
|
|
46
|
+
return {
|
|
47
|
+
bottom: parts[0],
|
|
48
|
+
left: parts[0],
|
|
49
|
+
right: parts[0],
|
|
50
|
+
top: parts[0],
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const getActualPaddingX = (element: HTMLElement) => {
|
|
57
|
+
const padding = parsePadding(window.getComputedStyle(element, null).getPropertyValue('padding'))
|
|
58
|
+
const paddingLeft = parseMeausureString(window.getComputedStyle(element, null).getPropertyValue('padding-left') ?? padding?.left, element.clientWidth) ?? 0
|
|
59
|
+
const paddingRight = parseMeausureString(window.getComputedStyle(element, null).getPropertyValue('padding-right') ?? padding?.right, element.clientWidth) ?? 0
|
|
60
|
+
return paddingLeft + paddingRight
|
|
61
|
+
}
|