schummar-table 0.16.5 → 0.17.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/index.js +543 -894
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/mui4Theme.js +10 -32
- package/dist/cjs/mui4Theme.js.map +1 -1
- package/dist/cjs/mui5Theme.js +11 -36
- package/dist/cjs/mui5Theme.js.map +1 -1
- package/dist/cjs/tableTheme.js +28 -41
- package/dist/cjs/tableTheme.js.map +1 -1
- package/dist/es/index.js +542 -893
- package/dist/es/index.js.map +1 -1
- package/dist/es/mui4Theme.js +9 -31
- package/dist/es/mui4Theme.js.map +1 -1
- package/dist/es/mui5Theme.js +10 -35
- package/dist/es/mui5Theme.js.map +1 -1
- package/dist/es/tableTheme.js +28 -41
- package/dist/es/tableTheme.js.map +1 -1
- package/dist/types/components/autoFocusTextField.d.ts +1 -1
- package/dist/types/components/datePicker.d.ts +36 -5
- package/dist/types/components/text.d.ts +5 -0
- package/dist/types/internalState/tableStateStorage.d.ts +1 -1
- package/dist/types/misc/csvExport.d.ts +1 -1
- package/dist/types/types.d.ts +25 -21
- package/package.json +11 -11
package/dist/es/mui4Theme.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
1
2
|
import { Button, IconButton, Checkbox, Badge, TextField, CircularProgress, useTheme } from "@material-ui/core";
|
|
2
3
|
import { useMemo } from "react";
|
|
3
4
|
import { P as Popover, m as mergeThemes, T as TableThemeContext } from "./tableTheme.js";
|
|
4
|
-
import { jsx } from "@emotion/react/jsx-runtime";
|
|
5
5
|
import "react-dom";
|
|
6
6
|
import "@emotion/react";
|
|
7
7
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() {
|
|
@@ -18,36 +18,17 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
18
18
|
};
|
|
19
19
|
const mui4Theme = {
|
|
20
20
|
components: {
|
|
21
|
-
Button: (props) => /* @__PURE__ */ jsx(Button, {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
fullWidth: true,
|
|
25
|
-
css: _ref,
|
|
26
|
-
color: props.variant === "contained" ? "primary" : "inherit"
|
|
27
|
-
}),
|
|
28
|
-
IconButton: (props) => /* @__PURE__ */ jsx(IconButton, {
|
|
29
|
-
...props,
|
|
30
|
-
size: "small",
|
|
31
|
-
color: "inherit"
|
|
32
|
-
}),
|
|
33
|
-
Checkbox: (props) => /* @__PURE__ */ jsx(Checkbox, {
|
|
34
|
-
...props,
|
|
35
|
-
color: "primary",
|
|
36
|
-
size: "medium"
|
|
37
|
-
}),
|
|
21
|
+
Button: (props) => /* @__PURE__ */ jsx(Button, { ...props, size: "small", fullWidth: true, css: _ref, color: props.variant === "contained" ? "primary" : "inherit" }),
|
|
22
|
+
IconButton: (props) => /* @__PURE__ */ jsx(IconButton, { ...props, size: "small", color: "inherit" }),
|
|
23
|
+
Checkbox: (props) => /* @__PURE__ */ jsx(Checkbox, { ...props, color: "primary", size: "medium" }),
|
|
38
24
|
Popover,
|
|
39
25
|
Badge,
|
|
40
26
|
TextField: ({
|
|
41
27
|
endIcon,
|
|
42
28
|
...props
|
|
43
|
-
}) => /* @__PURE__ */ jsx(TextField, {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
endAdornment: endIcon
|
|
47
|
-
},
|
|
48
|
-
size: "small",
|
|
49
|
-
variant: "outlined"
|
|
50
|
-
}),
|
|
29
|
+
}) => /* @__PURE__ */ jsx(TextField, { ...props, InputProps: {
|
|
30
|
+
endAdornment: endIcon
|
|
31
|
+
}, size: "small", variant: "outlined" }),
|
|
51
32
|
Spinner: CircularProgress
|
|
52
33
|
}
|
|
53
34
|
};
|
|
@@ -62,12 +43,9 @@ function Mui4TableThemeProvider({
|
|
|
62
43
|
primary: muiTheme.palette.primary,
|
|
63
44
|
secondary: muiTheme.palette.secondary
|
|
64
45
|
}
|
|
65
|
-
}, mui4Theme, theme
|
|
46
|
+
}, mui4Theme, theme ?? {});
|
|
66
47
|
}, [muiTheme, theme]);
|
|
67
|
-
return /* @__PURE__ */ jsx(TableThemeContext.Provider, {
|
|
68
|
-
value: _theme,
|
|
69
|
-
children
|
|
70
|
-
});
|
|
48
|
+
return /* @__PURE__ */ jsx(TableThemeContext.Provider, { value: _theme, children });
|
|
71
49
|
}
|
|
72
50
|
export {
|
|
73
51
|
Mui4TableThemeProvider,
|
package/dist/es/mui4Theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mui4Theme.js","sources":["../../src/theme/mui4Theme/index.tsx"],"sourcesContent":["import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from '@material-ui/core';\nimport { ReactNode, useMemo } from 'react';\nimport { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes, TableThemeContext } from '../tableTheme';\n\nexport const mui4Theme: PartialTableTheme = {\n components: {\n Button: (props) => (\n <Button\n {...props}\n size=\"small\"\n fullWidth\n css={{ justifyContent: 'start !important' }}\n color={props.variant === 'contained' ? 'primary' : 'inherit'}\n />\n ),\n IconButton: (props) => <IconButton {...props} size=\"small\" color=\"inherit\" />,\n Checkbox: (props) => <Checkbox {...props} color=\"primary\" size=\"medium\" />,\n Popover,\n Badge,\n TextField: ({ endIcon, ...props }) => <TextField {...props} InputProps={{ endAdornment: endIcon }} size=\"small\" variant=\"outlined\" />,\n Spinner: CircularProgress,\n },\n};\n\nexport function Mui4TableThemeProvider({ theme, children }: { theme?: PartialTableTheme; children: ReactNode }) {\n const muiTheme = useTheme();\n\n const _theme = useMemo(() => {\n return mergeThemes(\n {\n colors: {\n primary: muiTheme.palette.primary,\n secondary: muiTheme.palette.secondary,\n },\n },\n mui4Theme,\n theme ?? {},\n );\n }, [muiTheme, theme]);\n\n return <TableThemeContext.Provider value={_theme}>{children}</TableThemeContext.Provider>;\n}\n"],"names":["mui4Theme","components","Button","props","
|
|
1
|
+
{"version":3,"file":"mui4Theme.js","sources":["../../src/theme/mui4Theme/index.tsx"],"sourcesContent":["import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from '@material-ui/core';\nimport { ReactNode, useMemo } from 'react';\nimport { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes, TableThemeContext } from '../tableTheme';\n\nexport const mui4Theme: PartialTableTheme = {\n components: {\n Button: (props) => (\n <Button\n {...props}\n size=\"small\"\n fullWidth\n css={{ justifyContent: 'start !important' }}\n color={props.variant === 'contained' ? 'primary' : 'inherit'}\n />\n ),\n IconButton: (props) => <IconButton {...props} size=\"small\" color=\"inherit\" />,\n Checkbox: (props) => <Checkbox {...props} color=\"primary\" size=\"medium\" />,\n Popover,\n Badge,\n TextField: ({ endIcon, ...props }) => <TextField {...props} InputProps={{ endAdornment: endIcon }} size=\"small\" variant=\"outlined\" />,\n Spinner: CircularProgress,\n },\n};\n\nexport function Mui4TableThemeProvider({ theme, children }: { theme?: PartialTableTheme; children: ReactNode }) {\n const muiTheme = useTheme();\n\n const _theme = useMemo(() => {\n return mergeThemes(\n {\n colors: {\n primary: muiTheme.palette.primary,\n secondary: muiTheme.palette.secondary,\n },\n },\n mui4Theme,\n theme ?? {},\n );\n }, [muiTheme, theme]);\n\n return <TableThemeContext.Provider value={_theme}>{children}</TableThemeContext.Provider>;\n}\n"],"names":["mui4Theme","components","Button","props","variant","IconButton","Checkbox","Popover","Badge","TextField","endIcon","endAdornment","Spinner","CircularProgress","Mui4TableThemeProvider","theme","children","muiTheme","useTheme","_theme","useMemo","mergeThemes","colors","primary","palette","secondary"],"mappings":";;;;;;;;;AAI+D,IAAA,OAAA,QAAA,IAAA,aAAA,eAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,IAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,EAAA,KAAA;AAAA,EAAA,UAAA;AAAA;AAExD,MAAMA,YAA+B;AAAA,EAC1CC,YAAY;AAAA,IACVC,QAASC,CACP,UAAA,oBAAC,QACC,EAAA,GAAIA,OACJ,MAAK,SACL,WAAS,MACT,KAA4C,MAC5C,OAAOA,MAAMC,YAAY,cAAc,YAAY,WAEtD;AAAA,IACDC,YAAaF,WAAW,oBAAA,YAAA,EAAeA,GAAAA,OAAO,MAAK,SAAQ,OAAM,UAAY,CAAA;AAAA,IAC7EG,UAAWH,WAAW,oBAAA,UAAA,EAAaA,GAAAA,OAAO,OAAM,WAAU,MAAK,SAAW,CAAA;AAAA,IAC1EI;AAAAA,IACAC;AAAAA,IACAC,WAAW,CAAC;AAAA,MAAEC;AAAAA,SAAYP;AAAAA,IAAY,MAAA,oBAAC,WAAU,EAAA,GAAIA,OAAO,YAAY;AAAA,MAAEQ,cAAcD;AAAAA,IAAW,GAAA,MAAK,SAAQ,SAAQ,WAAa,CAAA;AAAA,IACrIE,SAASC;AAAAA,EACX;AACF;AAEO,SAASC,uBAAuB;AAAA,EAAEC;AAAAA,EAAOC;AAA6D,GAAG;AAC9G,QAAMC,WAAWC;AAEXC,QAAAA,SAASC,QAAQ,MAAM;AAC3B,WAAOC,YACL;AAAA,MACEC,QAAQ;AAAA,QACNC,SAASN,SAASO,QAAQD;AAAAA,QAC1BE,WAAWR,SAASO,QAAQC;AAAAA,MAC9B;AAAA,IAAA,GAEFzB,WACAe,SAAS,CAAA,CAAE;AAAA,EAAA,GAEZ,CAACE,UAAUF,KAAK,CAAC;AAEpB,6BAAQ,kBAAkB,UAAlB,EAA2B,OAAOI,QAASH,SAAS,CAAA;AAC9D;"}
|
package/dist/es/mui5Theme.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
1
2
|
import { Button, IconButton, Checkbox, Badge, TextField, CircularProgress, useTheme } from "@mui/material";
|
|
2
3
|
import { useMemo } from "react";
|
|
3
4
|
import { P as Popover, m as mergeThemes, T as TableThemeContext } from "./tableTheme.js";
|
|
4
|
-
import { jsx } from "@emotion/react/jsx-runtime";
|
|
5
5
|
import "react-dom";
|
|
6
6
|
import "@emotion/react";
|
|
7
7
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() {
|
|
@@ -27,40 +27,18 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
27
27
|
};
|
|
28
28
|
const mui5Theme = {
|
|
29
29
|
components: {
|
|
30
|
-
Button: (props) => /* @__PURE__ */ jsx(Button, {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
fullWidth: true,
|
|
34
|
-
css: _ref,
|
|
35
|
-
color: props.variant === "contained" ? "primary" : "inherit"
|
|
36
|
-
}),
|
|
37
|
-
IconButton: (props) => /* @__PURE__ */ jsx(IconButton, {
|
|
38
|
-
...props,
|
|
39
|
-
size: "small",
|
|
40
|
-
css: _ref2,
|
|
41
|
-
color: "inherit"
|
|
42
|
-
}),
|
|
43
|
-
Checkbox: (props) => /* @__PURE__ */ jsx(Checkbox, {
|
|
44
|
-
...props,
|
|
45
|
-
color: "primary",
|
|
46
|
-
size: "small"
|
|
47
|
-
}),
|
|
30
|
+
Button: (props) => /* @__PURE__ */ jsx(Button, { ...props, size: "small", fullWidth: true, css: _ref, color: props.variant === "contained" ? "primary" : "inherit" }),
|
|
31
|
+
IconButton: (props) => /* @__PURE__ */ jsx(IconButton, { ...props, size: "small", css: _ref2, color: "inherit" }),
|
|
32
|
+
Checkbox: (props) => /* @__PURE__ */ jsx(Checkbox, { ...props, color: "primary", size: "small" }),
|
|
48
33
|
Popover,
|
|
49
34
|
Badge,
|
|
50
35
|
TextField: ({
|
|
51
36
|
endIcon,
|
|
52
37
|
...props
|
|
53
|
-
}) => /* @__PURE__ */ jsx(TextField, {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
size: "small"
|
|
59
|
-
}),
|
|
60
|
-
Spinner: (props) => /* @__PURE__ */ jsx(CircularProgress, {
|
|
61
|
-
...props,
|
|
62
|
-
size: 20
|
|
63
|
-
})
|
|
38
|
+
}) => /* @__PURE__ */ jsx(TextField, { ...props, InputProps: {
|
|
39
|
+
endAdornment: endIcon
|
|
40
|
+
}, size: "small" }),
|
|
41
|
+
Spinner: (props) => /* @__PURE__ */ jsx(CircularProgress, { ...props, size: 20 })
|
|
64
42
|
}
|
|
65
43
|
};
|
|
66
44
|
function Mui5TableThemeProvider({
|
|
@@ -74,12 +52,9 @@ function Mui5TableThemeProvider({
|
|
|
74
52
|
primary: muiTheme.palette.primary,
|
|
75
53
|
secondary: muiTheme.palette.secondary
|
|
76
54
|
}
|
|
77
|
-
}, mui5Theme, theme
|
|
55
|
+
}, mui5Theme, theme ?? {});
|
|
78
56
|
}, [muiTheme, theme]);
|
|
79
|
-
return /* @__PURE__ */ jsx(TableThemeContext.Provider, {
|
|
80
|
-
value: _theme,
|
|
81
|
-
children
|
|
82
|
-
});
|
|
57
|
+
return /* @__PURE__ */ jsx(TableThemeContext.Provider, { value: _theme, children });
|
|
83
58
|
}
|
|
84
59
|
export {
|
|
85
60
|
Mui5TableThemeProvider,
|
package/dist/es/mui5Theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mui5Theme.js","sources":["../../src/theme/mui5Theme/index.tsx"],"sourcesContent":["import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from '@mui/material';\nimport { ReactNode, useMemo } from 'react';\nimport { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes, TableThemeContext } from '../tableTheme';\n\nexport const mui5Theme: PartialTableTheme = {\n components: {\n Button: (props) => (\n <Button\n {...props}\n size=\"small\"\n fullWidth\n css={{ justifyContent: 'start !important' }}\n color={props.variant === 'contained' ? 'primary' : 'inherit'}\n />\n ),\n IconButton: (props) => <IconButton {...props} size=\"small\" css={{ fontSize: '0.8em' }} color=\"inherit\" />,\n Checkbox: (props) => <Checkbox {...props} color=\"primary\" size=\"small\" />,\n Popover,\n Badge,\n TextField: ({ endIcon, ...props }) => <TextField {...props} InputProps={{ endAdornment: endIcon }} size=\"small\" />,\n Spinner: (props) => <CircularProgress {...props} size={20} />,\n },\n};\n\nexport function Mui5TableThemeProvider({ theme, children }: { theme?: PartialTableTheme; children: ReactNode }) {\n const muiTheme = useTheme();\n\n const _theme = useMemo(() => {\n return mergeThemes(\n {\n colors: {\n primary: muiTheme.palette.primary,\n secondary: muiTheme.palette.secondary,\n },\n },\n mui5Theme,\n theme ?? {},\n );\n }, [muiTheme, theme]);\n\n return <TableThemeContext.Provider value={_theme}>{children}</TableThemeContext.Provider>;\n}\n"],"names":["mui5Theme","components","Button","props","
|
|
1
|
+
{"version":3,"file":"mui5Theme.js","sources":["../../src/theme/mui5Theme/index.tsx"],"sourcesContent":["import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from '@mui/material';\nimport { ReactNode, useMemo } from 'react';\nimport { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes, TableThemeContext } from '../tableTheme';\n\nexport const mui5Theme: PartialTableTheme = {\n components: {\n Button: (props) => (\n <Button\n {...props}\n size=\"small\"\n fullWidth\n css={{ justifyContent: 'start !important' }}\n color={props.variant === 'contained' ? 'primary' : 'inherit'}\n />\n ),\n IconButton: (props) => <IconButton {...props} size=\"small\" css={{ fontSize: '0.8em' }} color=\"inherit\" />,\n Checkbox: (props) => <Checkbox {...props} color=\"primary\" size=\"small\" />,\n Popover,\n Badge,\n TextField: ({ endIcon, ...props }) => <TextField {...props} InputProps={{ endAdornment: endIcon }} size=\"small\" />,\n Spinner: (props) => <CircularProgress {...props} size={20} />,\n },\n};\n\nexport function Mui5TableThemeProvider({ theme, children }: { theme?: PartialTableTheme; children: ReactNode }) {\n const muiTheme = useTheme();\n\n const _theme = useMemo(() => {\n return mergeThemes(\n {\n colors: {\n primary: muiTheme.palette.primary,\n secondary: muiTheme.palette.secondary,\n },\n },\n mui5Theme,\n theme ?? {},\n );\n }, [muiTheme, theme]);\n\n return <TableThemeContext.Provider value={_theme}>{children}</TableThemeContext.Provider>;\n}\n"],"names":["mui5Theme","components","Button","props","variant","IconButton","Checkbox","Popover","Badge","TextField","endIcon","endAdornment","Spinner","Mui5TableThemeProvider","theme","children","muiTheme","useTheme","_theme","useMemo","mergeThemes","colors","primary","palette","secondary"],"mappings":";;;;;;;;;AAI+D,IAAA,OAAA,QAAA,IAAA,aAAA,eAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,IAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,EAAA,KAAA;AAAA,EAAA,UAAA;AAAA;AAAA,IAAA,QAAA,QAAA,IAAA,aAAA,eAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,IAAA;AAAA,EAAA,MAAA;AAAA,EAAA,QAAA;AAAA,EAAA,KAAA;AAAA,EAAA,UAAA;AAAA;AAExD,MAAMA,YAA+B;AAAA,EAC1CC,YAAY;AAAA,IACVC,QAASC,CACP,UAAA,oBAAC,QACC,EAAA,GAAIA,OACJ,MAAK,SACL,WAAS,MACT,KAA4C,MAC5C,OAAOA,MAAMC,YAAY,cAAc,YAAY,WAEtD;AAAA,IACDC,YAAaF,CAAU,UAAA,oBAAC,YAAW,EAAA,GAAIA,OAAO,MAAK,SAAQ,YAA4B,OAAM,UAAY,CAAA;AAAA,IACzGG,UAAWH,WAAW,oBAAA,UAAA,EAAaA,GAAAA,OAAO,OAAM,WAAU,MAAK,QAAU,CAAA;AAAA,IACzEI;AAAAA,IACAC;AAAAA,IACAC,WAAW,CAAC;AAAA,MAAEC;AAAAA,SAAYP;AAAAA,IAAY,MAAA,oBAAC,WAAU,EAAA,GAAIA,OAAO,YAAY;AAAA,MAAEQ,cAAcD;AAAAA,IAAAA,GAAW,MAAK,SAAU;AAAA,IAClHE,SAAUT,CAAU,UAAA,oBAAC,oBAAiB,GAAIA,OAAO,MAAM,IAAG;AAAA,EAC5D;AACF;AAEO,SAASU,uBAAuB;AAAA,EAAEC;AAAAA,EAAOC;AAA6D,GAAG;AAC9G,QAAMC,WAAWC;AAEXC,QAAAA,SAASC,QAAQ,MAAM;AAC3B,WAAOC,YACL;AAAA,MACEC,QAAQ;AAAA,QACNC,SAASN,SAASO,QAAQD;AAAAA,QAC1BE,WAAWR,SAASO,QAAQC;AAAAA,MAC9B;AAAA,IAAA,GAEFxB,WACAc,SAAS,CAAA,CAAE;AAAA,EAAA,GAEZ,CAACE,UAAUF,KAAK,CAAC;AAEpB,6BAAQ,kBAAkB,UAAlB,EAA2B,OAAOI,QAASH,SAAS,CAAA;AAC9D;"}
|
package/dist/es/tableTheme.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
|
|
1
2
|
import { createContext, useRef, useState, useLayoutEffect, useContext, useMemo } from "react";
|
|
2
3
|
import { createPortal } from "react-dom";
|
|
3
4
|
import { css } from "@emotion/react";
|
|
4
|
-
import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
|
|
5
5
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() {
|
|
6
6
|
return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
|
|
7
7
|
}
|
|
@@ -133,7 +133,7 @@ const Popover = ({
|
|
|
133
133
|
}
|
|
134
134
|
let last;
|
|
135
135
|
function check() {
|
|
136
|
-
var _a
|
|
136
|
+
var _a;
|
|
137
137
|
if (!anchorEl)
|
|
138
138
|
return;
|
|
139
139
|
const {
|
|
@@ -144,7 +144,7 @@ const Popover = ({
|
|
|
144
144
|
const {
|
|
145
145
|
width: popperWidth = 0,
|
|
146
146
|
height: popperHeight = 0
|
|
147
|
-
} = (
|
|
147
|
+
} = ((_a = popper.current) == null ? void 0 : _a.getBoundingClientRect()) ?? {};
|
|
148
148
|
const viewportWidth = document.documentElement.clientWidth;
|
|
149
149
|
const viewportHeight = document.documentElement.clientHeight;
|
|
150
150
|
const next = {
|
|
@@ -184,40 +184,30 @@ const Popover = ({
|
|
|
184
184
|
}), [depth, visible]);
|
|
185
185
|
if (!open)
|
|
186
186
|
return null;
|
|
187
|
-
return /* @__PURE__ */ jsx(PopoverContext.Provider, {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
overflowY: "auto"
|
|
212
|
-
}, hidden && {
|
|
213
|
-
display: "none"
|
|
214
|
-
}, !position && {
|
|
215
|
-
visibility: "hidden"
|
|
216
|
-
}, process.env.NODE_ENV === "production" ? "" : ";label:Popover;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEZZIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFRhYmxlVGhlbWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xhc3NlcyB9IGZyb20gJy4vZGVmYXVsdENsYXNzZXMnO1xuXG5jb25zdCBNQVJHSU4gPSAxMDtcbmNvbnN0IE1BWF9PRkZTRVQgPSAyMDtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7IGRlcHRoOiAwLCB2aXNpYmxlOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXI6IFRhYmxlVGhlbWVbJ2NvbXBvbmVudHMnXVsnUG9wb3ZlciddID0gKHsgYW5jaG9yRWwsIG9wZW4sIGhpZGRlbiwgb25DbG9zZSwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgYWxpZ24gfSkgPT4ge1xuICBjb25zdCBwb3BwZXIgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9PigpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbmNob3JFbCB8fCAhb3Blbikge1xuICAgICAgc2V0UG9zaXRpb24odW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbGFzdDogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBmdW5jdGlvbiBjaGVjaygpIHtcbiAgICAgIGlmICghYW5jaG9yRWwpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgbGVmdDogYW5jaG9yTGVmdCwgYm90dG9tOiBhbmNob3JCb3R0b20sIHdpZHRoOiBhbmNob3JXaWR0aCB9ID0gYW5jaG9yRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB7IHdpZHRoOiBwb3BwZXJXaWR0aCA9IDAsIGhlaWdodDogcG9wcGVySGVpZ2h0ID0gMCB9ID0gcG9wcGVyLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IHt9O1xuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgbGVmdDpcbiAgICAgICAgICBhbGlnbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gYW5jaG9yTGVmdCArIGFuY2hvcldpZHRoIC8gMiAtIHBvcHBlcldpZHRoIC8gMlxuICAgICAgICAgICAgOiBhbmNob3JMZWZ0IC0gTWF0aC5taW4ocG9wcGVyV2lkdGggPyBwb3BwZXJXaWR0aCAvIDIgOiBJbmZpbml0eSwgTUFYX09GRlNFVCksXG4gICAgICAgIHRvcDogYW5jaG9yQm90dG9tLFxuICAgICAgfTtcblxuICAgICAgaWYgKG5leHQubGVmdCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LmxlZnQgPSBNQVJHSU47XG4gICAgICB9XG4gICAgICBpZiAobmV4dC5sZWZ0ICsgcG9wcGVyV2lkdGggPiB2aWV3cG9ydFdpZHRoIC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQubGVmdCA9IHZpZXdwb3J0V2lkdGggLSBNQVJHSU4gLSBwb3BwZXJXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LnRvcCA9IE1BUkdJTjtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCArIHBvcHBlckhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0IC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQudG9wID0gdmlld3BvcnRIZWlnaHQgLSBNQVJHSU4gLSBwb3BwZXJIZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0LmxlZnQgIT09IGxhc3Q/LmxlZnQgfHwgbmV4dC50b3AgIT09IGxhc3Q/LnRvcCkge1xuICAgICAgICBzZXRQb3NpdGlvbihuZXh0KTtcbiAgICAgIH1cblxuICAgICAgbGFzdCA9IG5leHQ7XG4gICAgfVxuICAgIGNoZWNrKCk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSBzZXRJbnRlcnZhbChjaGVjaywgMTYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgfTtcbiAgfSwgW2FuY2hvckVsLCBvcGVuXSk7XG5cbiAgY29uc3QgeyBkZXB0aCB9ID0gdXNlQ29udGV4dChQb3BvdmVyQ29udGV4dCk7XG4gIGNvbnN0IHZpc2libGUgPSAhaGlkZGVuICYmICEhcG9zaXRpb247XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IGRlcHRoOiBkZXB0aCArIDEsIHZpc2libGUgfSksIFtkZXB0aCwgdmlzaWJsZV0pO1xuXG4gIGlmICghb3BlbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xvc2UoKX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtwb3BwZXJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBkZWZhdWx0Q2xhc3Nlcy5jYXJkLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIDIgKiBNQVJHSU4sXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gMiAqIE1BUkdJTixcbiAgICAgICAgICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDEgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgICAhcG9zaXRpb24gJiYgeyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9Qb3BvdmVyQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */"],
|
|
217
|
-
children
|
|
218
|
-
})]
|
|
219
|
-
}), document.body)
|
|
220
|
-
});
|
|
187
|
+
return /* @__PURE__ */ jsx(PopoverContext.Provider, { value: context, children: createPortal(/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
188
|
+
/* @__PURE__ */ jsx("div", { css: [{
|
|
189
|
+
position: "fixed",
|
|
190
|
+
left: 0,
|
|
191
|
+
right: 0,
|
|
192
|
+
top: 0,
|
|
193
|
+
bottom: 0,
|
|
194
|
+
zIndex: 1e3 + depth * 2
|
|
195
|
+
}, hidden && {
|
|
196
|
+
display: "none"
|
|
197
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:Popover;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkVZIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFRhYmxlVGhlbWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xhc3NlcyB9IGZyb20gJy4vZGVmYXVsdENsYXNzZXMnO1xuXG5jb25zdCBNQVJHSU4gPSAxMDtcbmNvbnN0IE1BWF9PRkZTRVQgPSAyMDtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7IGRlcHRoOiAwLCB2aXNpYmxlOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXI6IFRhYmxlVGhlbWVbJ2NvbXBvbmVudHMnXVsnUG9wb3ZlciddID0gKHsgYW5jaG9yRWwsIG9wZW4sIGhpZGRlbiwgb25DbG9zZSwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgYWxpZ24gfSkgPT4ge1xuICBjb25zdCBwb3BwZXIgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9PigpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbmNob3JFbCB8fCAhb3Blbikge1xuICAgICAgc2V0UG9zaXRpb24odW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbGFzdDogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBmdW5jdGlvbiBjaGVjaygpIHtcbiAgICAgIGlmICghYW5jaG9yRWwpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgbGVmdDogYW5jaG9yTGVmdCwgYm90dG9tOiBhbmNob3JCb3R0b20sIHdpZHRoOiBhbmNob3JXaWR0aCB9ID0gYW5jaG9yRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB7IHdpZHRoOiBwb3BwZXJXaWR0aCA9IDAsIGhlaWdodDogcG9wcGVySGVpZ2h0ID0gMCB9ID0gcG9wcGVyLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IHt9O1xuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgbGVmdDpcbiAgICAgICAgICBhbGlnbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gYW5jaG9yTGVmdCArIGFuY2hvcldpZHRoIC8gMiAtIHBvcHBlcldpZHRoIC8gMlxuICAgICAgICAgICAgOiBhbmNob3JMZWZ0IC0gTWF0aC5taW4ocG9wcGVyV2lkdGggPyBwb3BwZXJXaWR0aCAvIDIgOiBJbmZpbml0eSwgTUFYX09GRlNFVCksXG4gICAgICAgIHRvcDogYW5jaG9yQm90dG9tLFxuICAgICAgfTtcblxuICAgICAgaWYgKG5leHQubGVmdCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LmxlZnQgPSBNQVJHSU47XG4gICAgICB9XG4gICAgICBpZiAobmV4dC5sZWZ0ICsgcG9wcGVyV2lkdGggPiB2aWV3cG9ydFdpZHRoIC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQubGVmdCA9IHZpZXdwb3J0V2lkdGggLSBNQVJHSU4gLSBwb3BwZXJXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LnRvcCA9IE1BUkdJTjtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCArIHBvcHBlckhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0IC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQudG9wID0gdmlld3BvcnRIZWlnaHQgLSBNQVJHSU4gLSBwb3BwZXJIZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0LmxlZnQgIT09IGxhc3Q/LmxlZnQgfHwgbmV4dC50b3AgIT09IGxhc3Q/LnRvcCkge1xuICAgICAgICBzZXRQb3NpdGlvbihuZXh0KTtcbiAgICAgIH1cblxuICAgICAgbGFzdCA9IG5leHQ7XG4gICAgfVxuICAgIGNoZWNrKCk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSBzZXRJbnRlcnZhbChjaGVjaywgMTYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgfTtcbiAgfSwgW2FuY2hvckVsLCBvcGVuXSk7XG5cbiAgY29uc3QgeyBkZXB0aCB9ID0gdXNlQ29udGV4dChQb3BvdmVyQ29udGV4dCk7XG4gIGNvbnN0IHZpc2libGUgPSAhaGlkZGVuICYmICEhcG9zaXRpb247XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IGRlcHRoOiBkZXB0aCArIDEsIHZpc2libGUgfSksIFtkZXB0aCwgdmlzaWJsZV0pO1xuXG4gIGlmICghb3BlbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xvc2UoKX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtwb3BwZXJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBkZWZhdWx0Q2xhc3Nlcy5jYXJkLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIDIgKiBNQVJHSU4sXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gMiAqIE1BUkdJTixcbiAgICAgICAgICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDEgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgICAhcG9zaXRpb24gJiYgeyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9Qb3BvdmVyQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */"], onClick: () => onClose() }),
|
|
198
|
+
/* @__PURE__ */ jsx("div", { ref: popper, className, css: [defaultClasses.card, {
|
|
199
|
+
position: "fixed",
|
|
200
|
+
maxWidth: document.documentElement.clientWidth - 2 * MARGIN,
|
|
201
|
+
maxHeight: document.documentElement.clientHeight - 2 * MARGIN,
|
|
202
|
+
...position,
|
|
203
|
+
zIndex: 1001 + depth * 2,
|
|
204
|
+
overflowY: "auto"
|
|
205
|
+
}, hidden && {
|
|
206
|
+
display: "none"
|
|
207
|
+
}, !position && {
|
|
208
|
+
visibility: "hidden"
|
|
209
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:Popover;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEZZIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy90aGVtZS9kZWZhdWx0VGhlbWUvcG9wb3Zlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFRhYmxlVGhlbWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xhc3NlcyB9IGZyb20gJy4vZGVmYXVsdENsYXNzZXMnO1xuXG5jb25zdCBNQVJHSU4gPSAxMDtcbmNvbnN0IE1BWF9PRkZTRVQgPSAyMDtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7IGRlcHRoOiAwLCB2aXNpYmxlOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXI6IFRhYmxlVGhlbWVbJ2NvbXBvbmVudHMnXVsnUG9wb3ZlciddID0gKHsgYW5jaG9yRWwsIG9wZW4sIGhpZGRlbiwgb25DbG9zZSwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgYWxpZ24gfSkgPT4ge1xuICBjb25zdCBwb3BwZXIgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9PigpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbmNob3JFbCB8fCAhb3Blbikge1xuICAgICAgc2V0UG9zaXRpb24odW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbGFzdDogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBmdW5jdGlvbiBjaGVjaygpIHtcbiAgICAgIGlmICghYW5jaG9yRWwpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgbGVmdDogYW5jaG9yTGVmdCwgYm90dG9tOiBhbmNob3JCb3R0b20sIHdpZHRoOiBhbmNob3JXaWR0aCB9ID0gYW5jaG9yRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB7IHdpZHRoOiBwb3BwZXJXaWR0aCA9IDAsIGhlaWdodDogcG9wcGVySGVpZ2h0ID0gMCB9ID0gcG9wcGVyLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IHt9O1xuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgbGVmdDpcbiAgICAgICAgICBhbGlnbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gYW5jaG9yTGVmdCArIGFuY2hvcldpZHRoIC8gMiAtIHBvcHBlcldpZHRoIC8gMlxuICAgICAgICAgICAgOiBhbmNob3JMZWZ0IC0gTWF0aC5taW4ocG9wcGVyV2lkdGggPyBwb3BwZXJXaWR0aCAvIDIgOiBJbmZpbml0eSwgTUFYX09GRlNFVCksXG4gICAgICAgIHRvcDogYW5jaG9yQm90dG9tLFxuICAgICAgfTtcblxuICAgICAgaWYgKG5leHQubGVmdCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LmxlZnQgPSBNQVJHSU47XG4gICAgICB9XG4gICAgICBpZiAobmV4dC5sZWZ0ICsgcG9wcGVyV2lkdGggPiB2aWV3cG9ydFdpZHRoIC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQubGVmdCA9IHZpZXdwb3J0V2lkdGggLSBNQVJHSU4gLSBwb3BwZXJXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCA8IE1BUkdJTikge1xuICAgICAgICBuZXh0LnRvcCA9IE1BUkdJTjtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0LnRvcCArIHBvcHBlckhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0IC0gTUFSR0lOKSB7XG4gICAgICAgIG5leHQudG9wID0gdmlld3BvcnRIZWlnaHQgLSBNQVJHSU4gLSBwb3BwZXJIZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0LmxlZnQgIT09IGxhc3Q/LmxlZnQgfHwgbmV4dC50b3AgIT09IGxhc3Q/LnRvcCkge1xuICAgICAgICBzZXRQb3NpdGlvbihuZXh0KTtcbiAgICAgIH1cblxuICAgICAgbGFzdCA9IG5leHQ7XG4gICAgfVxuICAgIGNoZWNrKCk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSBzZXRJbnRlcnZhbChjaGVjaywgMTYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgfTtcbiAgfSwgW2FuY2hvckVsLCBvcGVuXSk7XG5cbiAgY29uc3QgeyBkZXB0aCB9ID0gdXNlQ29udGV4dChQb3BvdmVyQ29udGV4dCk7XG4gIGNvbnN0IHZpc2libGUgPSAhaGlkZGVuICYmICEhcG9zaXRpb247XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IGRlcHRoOiBkZXB0aCArIDEsIHZpc2libGUgfSksIFtkZXB0aCwgdmlzaWJsZV0pO1xuXG4gIGlmICghb3BlbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xvc2UoKX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtwb3BwZXJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBkZWZhdWx0Q2xhc3Nlcy5jYXJkLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIDIgKiBNQVJHSU4sXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gMiAqIE1BUkdJTixcbiAgICAgICAgICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDEgKyBkZXB0aCAqIDIsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGhpZGRlbiAmJiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICAgICAgICAhcG9zaXRpb24gJiYgeyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9LFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9Qb3BvdmVyQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */"], children })
|
|
210
|
+
] }), document.body) });
|
|
221
211
|
};
|
|
222
212
|
let globalTableTheme = {};
|
|
223
213
|
function configureTableTheme(tableTheme) {
|
|
@@ -228,10 +218,7 @@ function TableThemeProvider({
|
|
|
228
218
|
theme,
|
|
229
219
|
children
|
|
230
220
|
}) {
|
|
231
|
-
return /* @__PURE__ */ jsx(TableThemeContext.Provider, {
|
|
232
|
-
value: theme,
|
|
233
|
-
children
|
|
234
|
-
});
|
|
221
|
+
return /* @__PURE__ */ jsx(TableThemeContext.Provider, { value: theme, children });
|
|
235
222
|
}
|
|
236
223
|
function mergeThemes(...themes) {
|
|
237
224
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableTheme.js","sources":["../../src/theme/defaultTheme/defaultClasses.ts","../../src/theme/defaultTheme/popover.tsx","../../src/theme/tableTheme.tsx"],"sourcesContent":["import { css } from '@emotion/react';\n\nexport const white = '#ffffff';\nexport const lightGray = '#eeeeee';\nexport const gray = '#bdbdbd';\nexport const darkGray = '#777';\n\nconst cell = css({\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n display: 'flex',\n alignItems: 'center',\n borderBottom: `1px solid #dfe2e9`,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n background: 'white',\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: `1px solid ${lightGray}`,\n }),\n\n headerCell: css(cell, {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n borderBottom: `1px solid #c9cfda`,\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: `1px solid #c9cfda`,\n borderBottom: 'none',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: `1px solid #c9cfda`,\n background: white,\n }),\n\n footerFill: css({\n borderTop: `1px solid #c9cfda`,\n background: white,\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'white',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n};\n","import React, { createContext, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MARGIN = 10;\nconst MAX_OFFSET = 20;\n\nexport const PopoverContext = createContext({ depth: 0, visible: false });\n\nexport const Popover: TableTheme['components']['Popover'] = ({ anchorEl, open, hidden, onClose, children, className, align }) => {\n const popper = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState<{ left: number; top: number }>();\n\n useLayoutEffect(() => {\n if (!anchorEl || !open) {\n setPosition(undefined);\n return;\n }\n\n let last: { left: number; top: number } | undefined;\n\n function check() {\n if (!anchorEl) return;\n const { left: anchorLeft, bottom: anchorBottom, width: anchorWidth } = anchorEl.getBoundingClientRect();\n const { width: popperWidth = 0, height: popperHeight = 0 } = popper.current?.getBoundingClientRect() ?? {};\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n\n const next = {\n left:\n align === 'center'\n ? anchorLeft + anchorWidth / 2 - popperWidth / 2\n : anchorLeft - Math.min(popperWidth ? popperWidth / 2 : Infinity, MAX_OFFSET),\n top: anchorBottom,\n };\n\n if (next.left < MARGIN) {\n next.left = MARGIN;\n }\n if (next.left + popperWidth > viewportWidth - MARGIN) {\n next.left = viewportWidth - MARGIN - popperWidth;\n }\n if (next.top < MARGIN) {\n next.top = MARGIN;\n }\n if (next.top + popperHeight > viewportHeight - MARGIN) {\n next.top = viewportHeight - MARGIN - popperHeight;\n }\n\n if (next.left !== last?.left || next.top !== last?.top) {\n setPosition(next);\n }\n\n last = next;\n }\n check();\n\n const handle = setInterval(check, 16);\n return () => {\n clearInterval(handle);\n };\n }, [anchorEl, open]);\n\n const { depth } = useContext(PopoverContext);\n const visible = !hidden && !!position;\n const context = useMemo(() => ({ depth: depth + 1, visible }), [depth, visible]);\n\n if (!open) return null;\n\n return (\n <PopoverContext.Provider value={context}>\n {createPortal(\n <>\n <div\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: 1000 + depth * 2,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n maxWidth: document.documentElement.clientWidth - 2 * MARGIN,\n maxHeight: document.documentElement.clientHeight - 2 * MARGIN,\n ...position,\n zIndex: 1001 + depth * 2,\n overflowY: 'auto',\n },\n hidden && { display: 'none' },\n !position && { visibility: 'hidden' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </PopoverContext.Provider>\n );\n};\n","import { createContext, ReactNode } from 'react';\nimport { PartialTableTheme } from '../types';\n\nexport let globalTableTheme: PartialTableTheme = {};\nexport function configureTableTheme(tableTheme: PartialTableTheme) {\n globalTableTheme = tableTheme;\n}\n\nexport const TableThemeContext = createContext<PartialTableTheme>({});\n\nexport function TableThemeProvider({ theme, children }: { theme: PartialTableTheme; children: ReactNode }) {\n return <TableThemeContext.Provider value={theme}>{children}</TableThemeContext.Provider>;\n}\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n"],"names":["white","lightGray","gray","darkGray","cell","padding","display","alignItems","borderBottom","whiteSpace","overflow","background","defaultClasses","table","cellFill","headerCell","footerCell","borderTop","firstCell","sticky","stickyBottom","headerFill","footerFill","text","card","clearFiltersButton","fontWeight","position","left","maxWidth","gridColumn","button","color","border","borderColor","margin","MARGIN","MAX_OFFSET","PopoverContext","createContext","depth","visible","Popover","anchorEl","open","hidden","onClose","children","className","align","popper","useRef","setPosition","useState","useLayoutEffect","undefined","last","check","anchorLeft","bottom","anchorBottom","width","anchorWidth","getBoundingClientRect","popperWidth","height","popperHeight","current","viewportWidth","document","documentElement","clientWidth","viewportHeight","clientHeight","next","Math","min","Infinity","top","handle","setInterval","clearInterval","useContext","context","useMemo","_jsx","createPortal","_jsxs","_Fragment","right","zIndex","maxHeight","overflowY","visibility","body","globalTableTheme","configureTableTheme","tableTheme","TableThemeContext","TableThemeProvider","theme","mergeThemes","themes","Object","assign","map","classes","components","icons","colors","primary","secondary","spacing","reverse","find","x"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tableTheme.js","sources":["../../src/theme/defaultTheme/defaultClasses.ts","../../src/theme/defaultTheme/popover.tsx","../../src/theme/tableTheme.tsx"],"sourcesContent":["import { css } from '@emotion/react';\n\nexport const white = '#ffffff';\nexport const lightGray = '#eeeeee';\nexport const gray = '#bdbdbd';\nexport const darkGray = '#777';\n\nconst cell = css({\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n display: 'flex',\n alignItems: 'center',\n borderBottom: `1px solid #dfe2e9`,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n background: 'white',\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: `1px solid ${lightGray}`,\n }),\n\n headerCell: css(cell, {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n borderBottom: `1px solid #c9cfda`,\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: `1px solid #c9cfda`,\n borderBottom: 'none',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: `1px solid #c9cfda`,\n background: white,\n }),\n\n footerFill: css({\n borderTop: `1px solid #c9cfda`,\n background: white,\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'white',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n};\n","import React, { createContext, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MARGIN = 10;\nconst MAX_OFFSET = 20;\n\nexport const PopoverContext = createContext({ depth: 0, visible: false });\n\nexport const Popover: TableTheme['components']['Popover'] = ({ anchorEl, open, hidden, onClose, children, className, align }) => {\n const popper = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState<{ left: number; top: number }>();\n\n useLayoutEffect(() => {\n if (!anchorEl || !open) {\n setPosition(undefined);\n return;\n }\n\n let last: { left: number; top: number } | undefined;\n\n function check() {\n if (!anchorEl) return;\n const { left: anchorLeft, bottom: anchorBottom, width: anchorWidth } = anchorEl.getBoundingClientRect();\n const { width: popperWidth = 0, height: popperHeight = 0 } = popper.current?.getBoundingClientRect() ?? {};\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n\n const next = {\n left:\n align === 'center'\n ? anchorLeft + anchorWidth / 2 - popperWidth / 2\n : anchorLeft - Math.min(popperWidth ? popperWidth / 2 : Infinity, MAX_OFFSET),\n top: anchorBottom,\n };\n\n if (next.left < MARGIN) {\n next.left = MARGIN;\n }\n if (next.left + popperWidth > viewportWidth - MARGIN) {\n next.left = viewportWidth - MARGIN - popperWidth;\n }\n if (next.top < MARGIN) {\n next.top = MARGIN;\n }\n if (next.top + popperHeight > viewportHeight - MARGIN) {\n next.top = viewportHeight - MARGIN - popperHeight;\n }\n\n if (next.left !== last?.left || next.top !== last?.top) {\n setPosition(next);\n }\n\n last = next;\n }\n check();\n\n const handle = setInterval(check, 16);\n return () => {\n clearInterval(handle);\n };\n }, [anchorEl, open]);\n\n const { depth } = useContext(PopoverContext);\n const visible = !hidden && !!position;\n const context = useMemo(() => ({ depth: depth + 1, visible }), [depth, visible]);\n\n if (!open) return null;\n\n return (\n <PopoverContext.Provider value={context}>\n {createPortal(\n <>\n <div\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: 1000 + depth * 2,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n maxWidth: document.documentElement.clientWidth - 2 * MARGIN,\n maxHeight: document.documentElement.clientHeight - 2 * MARGIN,\n ...position,\n zIndex: 1001 + depth * 2,\n overflowY: 'auto',\n },\n hidden && { display: 'none' },\n !position && { visibility: 'hidden' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </PopoverContext.Provider>\n );\n};\n","import { createContext, ReactNode } from 'react';\nimport { PartialTableTheme } from '../types';\n\nexport let globalTableTheme: PartialTableTheme = {};\nexport function configureTableTheme(tableTheme: PartialTableTheme) {\n globalTableTheme = tableTheme;\n}\n\nexport const TableThemeContext = createContext<PartialTableTheme>({});\n\nexport function TableThemeProvider({ theme, children }: { theme: PartialTableTheme; children: ReactNode }) {\n return <TableThemeContext.Provider value={theme}>{children}</TableThemeContext.Provider>;\n}\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n"],"names":["white","lightGray","gray","darkGray","cell","padding","display","alignItems","borderBottom","whiteSpace","overflow","background","defaultClasses","table","cellFill","headerCell","footerCell","borderTop","firstCell","sticky","stickyBottom","headerFill","footerFill","text","card","clearFiltersButton","fontWeight","position","left","maxWidth","gridColumn","button","color","border","borderColor","margin","MARGIN","MAX_OFFSET","PopoverContext","createContext","depth","visible","Popover","anchorEl","open","hidden","onClose","children","className","align","popper","useRef","setPosition","useState","useLayoutEffect","undefined","last","check","anchorLeft","bottom","anchorBottom","width","anchorWidth","getBoundingClientRect","popperWidth","height","popperHeight","current","viewportWidth","document","documentElement","clientWidth","viewportHeight","clientHeight","next","Math","min","Infinity","top","handle","setInterval","clearInterval","useContext","context","useMemo","createPortal","right","zIndex","maxHeight","overflowY","visibility","body","globalTableTheme","configureTableTheme","tableTheme","TableThemeContext","TableThemeProvider","theme","mergeThemes","themes","Object","assign","map","classes","components","icons","colors","primary","secondary","spacing","reverse","find","x"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { TableTheme } from '../types';
|
|
3
|
-
|
|
3
|
+
type Props = TableTheme['components']['TextField'] extends ComponentType<infer T> ? T : never;
|
|
4
4
|
export declare function AutoFocusTextField(props: Omit<Props, 'inputRef'>): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
5
5
|
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
export
|
|
2
|
+
export type DateRange = {
|
|
3
3
|
min: Date;
|
|
4
4
|
max: Date;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
6
|
+
export type DatePickerQuickOption = 'today' | 'thisWeek' | 'thisMonth' | 'thisYear' | 'lastSevenDays' | 'lastThirtyDays' | {
|
|
7
7
|
label: ReactNode;
|
|
8
8
|
value: Date | DateRange | (() => Date | DateRange);
|
|
9
|
-
};
|
|
10
|
-
export
|
|
9
|
+
} | ((onChange: (value: Date | DateRange | null) => void) => ReactNode);
|
|
10
|
+
export type DatePickerProps = {
|
|
11
11
|
/** Currently selected day or range of days. */
|
|
12
12
|
value: Date | DateRange | null;
|
|
13
13
|
/** Callback for when the day (range) changes. */
|
|
@@ -23,14 +23,45 @@ export declare type DatePickerProps = {
|
|
|
23
23
|
/** Which month to show initially */
|
|
24
24
|
defaultDateInView?: Date;
|
|
25
25
|
/** Show buttons to quickly select suggested dates or date ranges */
|
|
26
|
-
quickOptions?: DatePickerQuickOption[]
|
|
26
|
+
quickOptions?: DatePickerQuickOption[];
|
|
27
27
|
};
|
|
28
28
|
/** Rounds a date down to the start of the day. */
|
|
29
29
|
export declare const startOfDay: (d: Date) => Date;
|
|
30
30
|
/** Rounds a date up to the end of the day. */
|
|
31
31
|
export declare const endOfDay: (d: Date) => Date;
|
|
32
|
+
export declare const lastDays: (days: number) => DateRange;
|
|
32
33
|
export declare const today: () => DateRange;
|
|
34
|
+
export declare const lastSevenDays: () => DateRange;
|
|
35
|
+
export declare const lastThirtyDays: () => DateRange;
|
|
33
36
|
export declare const thisWeek: (firstDayOfWeek?: number) => DateRange;
|
|
37
|
+
export declare const thisMonth: () => DateRange;
|
|
38
|
+
export declare const thisYear: () => DateRange;
|
|
39
|
+
export declare const commonQuickOptions: {
|
|
40
|
+
today: {
|
|
41
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
42
|
+
value: () => DateRange;
|
|
43
|
+
};
|
|
44
|
+
thisWeek: {
|
|
45
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
46
|
+
value: (firstDayOfWeek?: number) => DateRange;
|
|
47
|
+
};
|
|
48
|
+
thisMonth: {
|
|
49
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
50
|
+
value: () => DateRange;
|
|
51
|
+
};
|
|
52
|
+
thisYear: {
|
|
53
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
54
|
+
value: () => DateRange;
|
|
55
|
+
};
|
|
56
|
+
lastSevenDays: {
|
|
57
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
58
|
+
value: () => DateRange;
|
|
59
|
+
};
|
|
60
|
+
lastThirtyDays: {
|
|
61
|
+
label: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
62
|
+
value: () => DateRange;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
34
65
|
/** Returns whether two dates and/or date ranges intersect. Intersection is considered per day. */
|
|
35
66
|
export declare function dateIntersect(a: Date | null | DateRange, b: Date | null | DateRange): boolean;
|
|
36
67
|
export declare function DatePicker({ value, onChange, rangeSelect, locale, firstDayOfWeek, defaultDateInView, quickOptions, }: DatePickerProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Store } from 'schummar-state/react';
|
|
2
2
|
import { InternalTableState } from '../types';
|
|
3
|
-
export
|
|
3
|
+
export type TableStateStorage = {
|
|
4
4
|
getItem: (key: string) => string | null | Promise<string | null>;
|
|
5
5
|
setItem: (key: string, value: string) => unknown | Promise<unknown>;
|
|
6
6
|
removeItem: (key: string) => unknown | Promise<unknown>;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -2,17 +2,17 @@ import { CSSInterpolation } from '@emotion/serialize';
|
|
|
2
2
|
import React, { ComponentType, DependencyList, ReactNode, Ref } from 'react';
|
|
3
3
|
import { TableStateStorage } from './internalState/tableStateStorage';
|
|
4
4
|
import { CsvExportOptions } from './misc/csvExport';
|
|
5
|
-
export
|
|
5
|
+
export type Sort = {
|
|
6
6
|
columnId: string | number;
|
|
7
7
|
direction: SortDirection;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
9
|
+
export type SortDirection = 'asc' | 'desc';
|
|
10
|
+
export type Id = string | number;
|
|
11
|
+
export type KeyOfType<T, S> = {
|
|
12
12
|
[K in keyof T]: T[K] extends S ? K : never;
|
|
13
13
|
}[keyof T];
|
|
14
|
-
export
|
|
15
|
-
export
|
|
14
|
+
export type FunctionWithDeps<F extends (...args: any[]) => any> = F | [function: F, ...deps: DependencyList];
|
|
15
|
+
export type MemoizedFunctions<T> = {
|
|
16
16
|
[K in keyof T]: Exclude<T[K], [function: (...args: any[]) => any, ...deps: DependencyList]>;
|
|
17
17
|
};
|
|
18
18
|
export interface TableTheme<T = unknown> {
|
|
@@ -25,6 +25,10 @@ export interface TableTheme<T = unknown> {
|
|
|
25
25
|
exportDownload: ReactNode;
|
|
26
26
|
today: ReactNode;
|
|
27
27
|
thisWeek: ReactNode;
|
|
28
|
+
thisMonth: ReactNode;
|
|
29
|
+
thisYear: ReactNode;
|
|
30
|
+
lastSevenDays: ReactNode;
|
|
31
|
+
lastThirtyDays: ReactNode;
|
|
28
32
|
reset: ReactNode;
|
|
29
33
|
loading: ReactNode;
|
|
30
34
|
clearFilters: ReactNode;
|
|
@@ -108,10 +112,10 @@ export interface TableTheme<T = unknown> {
|
|
|
108
112
|
/** Spacing. */
|
|
109
113
|
spacing: string | number;
|
|
110
114
|
}
|
|
111
|
-
export
|
|
115
|
+
export type PartialTableTheme<T = unknown> = {
|
|
112
116
|
[K in keyof TableTheme<T>]?: TableTheme<T>[K] extends Record<string, any> ? Partial<TableTheme<T>[K]> : TableTheme<T>[K];
|
|
113
117
|
};
|
|
114
|
-
export
|
|
118
|
+
export type MemoizedTableTheme<T> = Omit<TableTheme, 'classes' | 'text'> & {
|
|
115
119
|
classes: MemoizedFunctions<TableTheme<T>['classes']>;
|
|
116
120
|
text: MemoizedFunctions<TableTheme<T>['text']>;
|
|
117
121
|
};
|
|
@@ -235,7 +239,7 @@ export interface TableProps<T> extends PartialTableTheme<T> {
|
|
|
235
239
|
debugRender?: (...output: any) => void;
|
|
236
240
|
onReset?: () => void;
|
|
237
241
|
}
|
|
238
|
-
export
|
|
242
|
+
export type InternalTableProps<T> = MemoizedFunctions<Omit<TableProps<T>, 'id' | 'parentId' | 'columns' | 'defaultColumnProps' | 'enableExport'> & {
|
|
239
243
|
id: (item: T) => Id;
|
|
240
244
|
parentId?: (item: T) => Id | undefined;
|
|
241
245
|
columns: InternalColumn<T, unknown>[];
|
|
@@ -244,13 +248,13 @@ export declare type InternalTableProps<T> = MemoizedFunctions<Omit<TableProps<T>
|
|
|
244
248
|
download?: CsvExportOptions;
|
|
245
249
|
};
|
|
246
250
|
}>;
|
|
247
|
-
export
|
|
251
|
+
export type TableItem<T = unknown> = {
|
|
248
252
|
id: Id;
|
|
249
253
|
parentId?: Id;
|
|
250
254
|
children: TableItem<T>[];
|
|
251
255
|
value: T;
|
|
252
256
|
};
|
|
253
|
-
export
|
|
257
|
+
export type Column<T, V> = {
|
|
254
258
|
/** Column id. If not provided, the index in the column array will be used.
|
|
255
259
|
* An explicit id is better however for controlling column related states, persitance etc.
|
|
256
260
|
*/
|
|
@@ -280,14 +284,14 @@ export declare type Column<T, V> = {
|
|
|
280
284
|
/** Provide css class names to override columns styles. */
|
|
281
285
|
classes?: TableTheme<T>['classes'];
|
|
282
286
|
};
|
|
283
|
-
export
|
|
287
|
+
export type InternalColumn<T, V> = MemoizedFunctions<Required<Omit<Column<T, V>, 'id' | 'sortBy'>, 'header' | 'renderCell' | 'exportCell' | 'sortBy'> & {
|
|
284
288
|
id: Id;
|
|
285
289
|
sortBy: ((value: V, item: T) => unknown)[];
|
|
286
290
|
}>;
|
|
287
|
-
|
|
291
|
+
type Required<T, S> = T & {
|
|
288
292
|
[P in keyof T as P extends S ? P : never]-?: T[P];
|
|
289
293
|
};
|
|
290
|
-
export
|
|
294
|
+
export type InternalTableState<T> = {
|
|
291
295
|
props: InternalTableProps<T>;
|
|
292
296
|
key: any;
|
|
293
297
|
sort: Sort[];
|
|
@@ -307,7 +311,7 @@ export declare type InternalTableState<T> = {
|
|
|
307
311
|
activeItemsById: Map<Id, TableItem<T>>;
|
|
308
312
|
lastSelectedId?: Id;
|
|
309
313
|
};
|
|
310
|
-
export
|
|
314
|
+
export type CommonFilterProps<T, V, F, S extends SerializableValue> = {
|
|
311
315
|
/** Filter by? By default the column value will be used. If filterBy returns an array, an items will be active if at least one entry matches the active filter. */
|
|
312
316
|
filterBy?: FunctionWithDeps<(value: V, item: T) => F | F[]>;
|
|
313
317
|
/** Preselected filter value. */
|
|
@@ -323,7 +327,7 @@ export declare type CommonFilterProps<T, V, F, S extends SerializableValue> = {
|
|
|
323
327
|
*/
|
|
324
328
|
persist?: boolean;
|
|
325
329
|
};
|
|
326
|
-
export
|
|
330
|
+
export type FilterImplementation<T, V, F, S extends SerializableValue> = CommonFilterProps<T, V, F, S> & {
|
|
327
331
|
/** Unique filter id. Used to persist filter values. */
|
|
328
332
|
id: string;
|
|
329
333
|
/** Whether the filter is active currently. */
|
|
@@ -331,11 +335,11 @@ export declare type FilterImplementation<T, V, F, S extends SerializableValue> =
|
|
|
331
335
|
/** When the filter is active, this function is used to filter the items to be displayed. */
|
|
332
336
|
test: (filterValue: S, value: F) => boolean;
|
|
333
337
|
};
|
|
334
|
-
export
|
|
335
|
-
export
|
|
338
|
+
export type SerializableValue = string | number | boolean | null | Date | SerializableArray | SerializableObject | SerializableSet | SerializableMap;
|
|
339
|
+
export type SerializableObject = {
|
|
336
340
|
[key: string]: SerializableValue;
|
|
337
341
|
};
|
|
338
|
-
export
|
|
339
|
-
export
|
|
340
|
-
export
|
|
342
|
+
export type SerializableArray = SerializableValue[];
|
|
343
|
+
export type SerializableSet = Set<SerializableValue>;
|
|
344
|
+
export type SerializableMap = Map<SerializableValue, SerializableValue>;
|
|
341
345
|
export {};
|