@pdg/react-admin-layout 1.0.30 → 1.0.32

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/index.esm.js CHANGED
@@ -2,7 +2,7 @@ import {Grid,useTheme,alpha,ListItemButton,ListItemIcon,Icon,ListItemText,Badge,
2
2
  if ( ref === void 0 ) ref = {};
3
3
  var insertAt = ref.insertAt;
4
4
 
5
- if (!css || typeof document === 'undefined') { return; }
5
+ if (typeof document === 'undefined') { return; }
6
6
 
7
7
  var head = document.head || document.getElementsByTagName('head')[0];
8
8
  var style = document.createElement('style');
@@ -23,126 +23,123 @@ import {Grid,useTheme,alpha,ListItemButton,ListItemIcon,Icon,ListItemText,Badge,
23
23
  } else {
24
24
  style.appendChild(document.createTextNode(css));
25
25
  }
26
- }var css_248z = ".simplebar-track.simplebar-vertical {\n width: 8px !important;\n}\n.simplebar-track.simplebar-vertical .simplebar-scrollbar.simplebar-visible:before {\n opacity: 0.3 !important;\n}\n\n.MuiButtonBase-root.MuiButton-root {\n line-height: 1.7;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined {\n padding: 5px 15px 4px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined.MuiButton-sizeLarge {\n padding: 7px 21px 6px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined.MuiButton-sizeSmall {\n padding: 3px 9px 2px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained {\n padding: 6px 16px 5px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained.MuiButton-sizeLarge {\n padding: 8px 22px 7px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained.MuiButton-sizeSmall {\n padding: 4px 10px 3px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text {\n padding: 6px 8px 5px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text.MuiButton-sizeLarge {\n padding: 8px 11px 7px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text.MuiButton-sizeSmall {\n padding: 4px 5px 3px;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo,\nmain,\ninput,\nbutton,\ntextarea,\npre,\nselect,\na {\n font-family: \"Pretendard\", \"Apple Gothic\", \"Dotum\", sans-serif;\n margin: 0;\n padding: 0;\n border: 0;\n vertical-align: top;\n box-sizing: border-box;\n word-break: keep-all;\n line-height: unset;\n}\n\n*:before,\n*:after {\n box-sizing: border-box;\n}";
27
- styleInject(css_248z);var CardLayoutDefaultProps = {
28
- backgroundColor: '#eff3f8',
29
- };var CardLayout = function (_a) {
30
- var children = _a.children, backgroundColor = _a.backgroundColor;
31
- return (React.createElement(Grid, { container: true, direction: 'column', alignItems: 'center', justifyContent: 'center', style: { minHeight: '100vh', backgroundColor: backgroundColor } },
32
- React.createElement(Grid, { item: true, xs: 12 }, children)));
33
- };
34
- CardLayout.defaultProps = CardLayoutDefaultProps;var SideMenuListItem = function (_a) {
35
- /********************************************************************************************************************
36
- * Use
37
- * ******************************************************************************************************************/
38
- var info = _a.info, badgeVariant = _a.badgeVariant, onClick = _a.onClick;
39
- var theme = useTheme();
40
- var location = useLocation();
41
- /********************************************************************************************************************
42
- * State
43
- * ******************************************************************************************************************/
44
- var _b = useState(false), isExpandable = _b[0], setIsExpandable = _b[1];
45
- var _c = useState(false), isExpand = _c[0], setIsExpand = _c[1];
46
- /********************************************************************************************************************
47
- * Effect
48
- * ******************************************************************************************************************/
49
- useEffect(function () {
50
- setIsExpandable(!!info && notEmpty(info.items));
51
- if (info.items && info.items.find(function (info) { return location.pathname === info.uri; })) {
52
- setIsExpand(true);
53
- }
54
- // eslint-disable-next-line react-hooks/exhaustive-deps
55
- }, [info]);
56
- useEffect(function () {
57
- if (isExpandable && isExpand != null) {
58
- if (info.uri !== location.pathname) {
59
- if (info.items && !info.items.find(function (info) { return location.pathname === info.uri; })) {
60
- if (isExpand) {
61
- setIsExpand(false);
62
- }
63
- }
64
- }
65
- }
66
- if (isExpandable && !isExpand) {
67
- if (info.items && info.items.find(function (info) { return location.pathname === info.uri; })) {
68
- setIsExpand(true);
69
- }
70
- }
71
- // eslint-disable-next-line react-hooks/exhaustive-deps
72
- }, [location]);
73
- /********************************************************************************************************************
74
- * Function
75
- * ******************************************************************************************************************/
76
- var toggleIsExpand = useCallback(function () {
77
- setIsExpand(function (isExpand) { return !isExpand; });
78
- }, []);
79
- /********************************************************************************************************************
80
- * Memo
81
- * ******************************************************************************************************************/
82
- var icon = useMemo(function () {
83
- return info.icon
84
- ? info.icon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); })
85
- : undefined;
86
- }, [info]);
87
- var containerStyle = useMemo(function () { return ({
88
- backgroundColor: isExpandable && isExpand
89
- ? alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity / 2)
90
- : undefined,
91
- }); }, [isExpand, isExpandable, theme]);
92
- var expandIconSx = useMemo(function () {
93
- return isExpandable && isExpand != null
94
- ? {
95
- marginTop: 'auto',
96
- marginBottom: 'auto',
97
- animation: "".concat(isExpand ? 'open' : 'close', " 0.1s linear"),
98
- transform: "rotate(".concat(isExpand ? 180 : 0, "deg)"),
99
- '@keyframes open': {
100
- '0%': {
101
- transform: "rotate(0deg)",
102
- },
103
- '100%': {
104
- transform: "rotate(180deg)",
105
- },
106
- },
107
- '@keyframes close': {
108
- '0%': {
109
- transform: "rotate(180deg)",
110
- },
111
- '100%': {
112
- transform: "rotate(0deg)",
113
- },
114
- },
115
- }
116
- : {
117
- marginTop: 'auto',
118
- marginBottom: 'auto',
119
- };
120
- }, [isExpandable, isExpand]);
121
- var collapseStyle = useMemo(function () { return ({
122
- backgroundColor: isExpand
123
- ? alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity / 2)
124
- : undefined,
125
- }); }, [isExpand, theme]);
126
- var primaryTypographyProps = useMemo(function () { return ({ sx: { fontWeight: info.depth === 1 ? 600 : null } }); }, [info]);
127
- /********************************************************************************************************************
128
- * Render
129
- * ******************************************************************************************************************/
130
- return (React.createElement(React.Fragment, null,
131
- React.createElement(ListItemButton, { onClick: isExpandable
132
- ? toggleIsExpand
133
- : function () {
134
- if (onClick)
135
- onClick(info);
136
- }, selected: isExpandable ? false : info.uri === location.pathname, style: containerStyle },
137
- React.createElement(ListItemIcon, { sx: { minWidth: 30 } }, icon && React.createElement(Icon, { fontSize: 'small' }, icon)),
138
- React.createElement(ListItemText, { primaryTypographyProps: primaryTypographyProps }, info.badge ? (React.createElement(Badge, { badgeContent: info.badge, color: 'error', variant: badgeVariant !== undefined ? badgeVariant : info.badgeVariant, anchorOrigin: { horizontal: 'left', vertical: 'top' }, slotProps: {
139
- badge: { style: { left: '100%', top: '50%', transform: 'scale(.8) translate(10px, -50%)' } },
140
- } },
141
- React.createElement("div", null, info.name))) : (info.name)),
142
- isExpandable && React.createElement(ExpandMore, { sx: expandIconSx })),
143
- React.createElement(Collapse, { in: isExpand, style: collapseStyle }, isExpandable &&
144
- info.items &&
145
- info.items.map(function (subInfo, idx) { return (React.createElement(SideMenuListItem, { key: idx, badgeVariant: badgeVariant, info: subInfo, onClick: onClick })); }))));
26
+ }var css_248z = ".simplebar-track.simplebar-vertical {\n width: 8px !important;\n}\n.simplebar-track.simplebar-vertical .simplebar-scrollbar.simplebar-visible:before {\n opacity: 0.3 !important;\n}\n\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined {\n padding: 5px 15px 4px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined.MuiButton-sizeLarge {\n padding: 7px 21px 6px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-outlined.MuiButton-sizeSmall {\n padding: 3px 9px 2px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained {\n padding: 6px 16px 5px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained.MuiButton-sizeLarge {\n padding: 8px 22px 7px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-contained.MuiButton-sizeSmall {\n padding: 4px 10px 3px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text {\n padding: 6px 8px 5px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text.MuiButton-sizeLarge {\n padding: 8px 11px 7px;\n}\n.MuiButtonBase-root.MuiButton-root.MuiButton-text.MuiButton-sizeSmall {\n padding: 4px 5px 3px;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo,\nmain,\ninput,\nbutton,\ntextarea,\npre,\nselect,\na {\n font-family: \"Pretendard\", \"Apple Gothic\", \"Dotum\", sans-serif;\n margin: 0;\n padding: 0;\n border: 0;\n vertical-align: top;\n box-sizing: border-box;\n word-break: keep-all;\n line-height: unset;\n}\n\n*:before,\n*:after {\n box-sizing: border-box;\n}";
27
+ styleInject(css_248z);var CardLayout = function (_a) {
28
+ var children = _a.children, _b = _a.backgroundColor, backgroundColor = _b === void 0 ? '#eff3f8' : _b;
29
+ return (React.createElement(Grid, { container: true, direction: 'column', alignItems: 'center', justifyContent: 'center', style: { minHeight: '100vh', backgroundColor: backgroundColor } },
30
+ React.createElement(Grid, { item: true, xs: 12 }, children)));
31
+ };var SideMenuListItem = function (_a) {
32
+ /********************************************************************************************************************
33
+ * Use
34
+ * ******************************************************************************************************************/
35
+ var info = _a.info, badgeVariant = _a.badgeVariant, onClick = _a.onClick;
36
+ var theme = useTheme();
37
+ var location = useLocation();
38
+ /********************************************************************************************************************
39
+ * State
40
+ * ******************************************************************************************************************/
41
+ var _b = useState(false), isExpandable = _b[0], setIsExpandable = _b[1];
42
+ var _c = useState(false), isExpand = _c[0], setIsExpand = _c[1];
43
+ /********************************************************************************************************************
44
+ * Effect
45
+ * ******************************************************************************************************************/
46
+ useEffect(function () {
47
+ setIsExpandable(!!info && notEmpty(info.items));
48
+ if (info.items && info.items.find(function (info) { return location.pathname === info.uri; })) {
49
+ setIsExpand(true);
50
+ }
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, [info]);
53
+ useEffect(function () {
54
+ if (isExpandable && isExpand != null) {
55
+ if (info.uri !== location.pathname) {
56
+ if (info.items && !info.items.find(function (info) { return location.pathname === info.uri; })) {
57
+ if (isExpand) {
58
+ setIsExpand(false);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ if (isExpandable && !isExpand) {
64
+ if (info.items && info.items.find(function (info) { return location.pathname === info.uri; })) {
65
+ setIsExpand(true);
66
+ }
67
+ }
68
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
+ }, [location]);
70
+ /********************************************************************************************************************
71
+ * Function
72
+ * ******************************************************************************************************************/
73
+ var toggleIsExpand = useCallback(function () {
74
+ setIsExpand(function (isExpand) { return !isExpand; });
75
+ }, []);
76
+ /********************************************************************************************************************
77
+ * Memo
78
+ * ******************************************************************************************************************/
79
+ var icon = useMemo(function () {
80
+ return info.icon
81
+ ? info.icon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); })
82
+ : undefined;
83
+ }, [info]);
84
+ var containerStyle = useMemo(function () { return ({
85
+ backgroundColor: isExpandable && isExpand
86
+ ? alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity / 2)
87
+ : undefined,
88
+ }); }, [isExpand, isExpandable, theme]);
89
+ var expandIconSx = useMemo(function () {
90
+ return isExpandable && isExpand != null
91
+ ? {
92
+ marginTop: 'auto',
93
+ marginBottom: 'auto',
94
+ animation: "".concat(isExpand ? 'open' : 'close', " 0.1s linear"),
95
+ transform: "rotate(".concat(isExpand ? 180 : 0, "deg)"),
96
+ '@keyframes open': {
97
+ '0%': {
98
+ transform: "rotate(0deg)",
99
+ },
100
+ '100%': {
101
+ transform: "rotate(180deg)",
102
+ },
103
+ },
104
+ '@keyframes close': {
105
+ '0%': {
106
+ transform: "rotate(180deg)",
107
+ },
108
+ '100%': {
109
+ transform: "rotate(0deg)",
110
+ },
111
+ },
112
+ }
113
+ : {
114
+ marginTop: 'auto',
115
+ marginBottom: 'auto',
116
+ };
117
+ }, [isExpandable, isExpand]);
118
+ var collapseStyle = useMemo(function () { return ({
119
+ backgroundColor: isExpand
120
+ ? alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity / 2)
121
+ : undefined,
122
+ }); }, [isExpand, theme]);
123
+ var primaryTypographyProps = useMemo(function () { return ({ sx: { fontWeight: info.depth === 1 ? 600 : null } }); }, [info]);
124
+ /********************************************************************************************************************
125
+ * Render
126
+ * ******************************************************************************************************************/
127
+ return (React.createElement(React.Fragment, null,
128
+ React.createElement(ListItemButton, { onClick: isExpandable
129
+ ? toggleIsExpand
130
+ : function () {
131
+ if (onClick)
132
+ onClick(info);
133
+ }, selected: isExpandable ? false : info.uri === location.pathname, style: containerStyle },
134
+ React.createElement(ListItemIcon, { sx: { minWidth: 30 } }, icon && React.createElement(Icon, { fontSize: 'small' }, icon)),
135
+ React.createElement(ListItemText, { primaryTypographyProps: primaryTypographyProps }, info.badge ? (React.createElement(Badge, { badgeContent: info.badge, color: 'error', variant: badgeVariant !== undefined ? badgeVariant : info.badgeVariant, anchorOrigin: { horizontal: 'left', vertical: 'top' }, slotProps: {
136
+ badge: { style: { left: '100%', top: '50%', transform: 'scale(.8) translate(10px, -50%)' } },
137
+ } },
138
+ React.createElement("div", null, info.name))) : (info.name)),
139
+ isExpandable && React.createElement(ExpandMore, { sx: expandIconSx })),
140
+ React.createElement(Collapse, { in: isExpand, style: collapseStyle }, isExpandable &&
141
+ info.items &&
142
+ info.items.map(function (subInfo, idx) { return (React.createElement(SideMenuListItem, { key: idx, badgeVariant: badgeVariant, info: subInfo, onClick: onClick })); }))));
146
143
  };/******************************************************************************
147
144
  Copyright (c) Microsoft Corporation.
148
145
 
@@ -167,233 +164,233 @@ function __makeTemplateObject(cooked, raw) {
167
164
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
168
165
  var e = new Error(message);
169
166
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
170
- };var StyledList = styled(List)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n padding: 0;\n"], ["\n padding: 0;\n"])));
171
- var templateObject_1$3;var SideMenuList = function (_a) {
172
- var list = _a.list, badgeVariant = _a.badgeVariant, onClick = _a.onClick;
173
- return (React.createElement(StyledList, null, list.map(function (info, idx) { return (React.createElement(SideMenuListItem, { key: idx, info: info, badgeVariant: badgeVariant, onClick: onClick })); })));
174
- };var StyledSimpleBar = styled(SimpleBar)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n max-height: 100%;\n"], ["\n max-height: 100%;\n"])));
175
- var StyledLogoContainerBox = styled(Box)(function (_a) {
176
- var theme = _a.theme;
177
- return theme.unstable_sx({
178
- borderBottom: 'thin solid #f5f5f5',
179
- color: 'text.primary',
180
- });
181
- });
182
- var templateObject_1$2;var SideMenu = function (_a) {
183
- var logo = _a.logo, badgeVariant = _a.badgeVariant, list = _a.list, onClick = _a.onClick;
184
- return (React.createElement(StyledSimpleBar, null,
185
- React.createElement(StyledLogoContainerBox, null,
186
- React.createElement(Toolbar, null, logo)),
187
- list && React.createElement(SideMenuList, { badgeVariant: badgeVariant, list: list, onClick: onClick })));
188
- };var StyledContainerBox$1 = styled(Box)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["\n position: relative;\n"], ["\n position: relative;\n"])));
189
- var StyledHeadContainerBox = styled(Box)(function (_a) {
190
- var theme = _a.theme;
191
- return theme.unstable_sx({
192
- display: { xs: 'none', sm: 'flex' },
193
- alignItems: 'center',
194
- opacity: 0.5,
195
- });
196
- });
197
- var StyledHeadIconContainerBox = styled(Box)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\n margin-right: 0.25rem;\n line-height: 0;\n"], ["\n margin-right: 0.25rem;\n line-height: 0;\n"])));
198
- var StyledHeadIcon = styled(Icon)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n font-size: 1rem;\n"], ["\n font-size: 1rem;\n"])));
199
- var StyledHeadTitleTypography = styled(Typography)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n font-size: 0.7rem;\n"], ["\n font-size: 0.7rem;\n"])));
200
- var StyledTitleContainerDiv = styled('div')(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n font-size: 1rem;\n"], ["\n display: flex;\n align-items: center;\n font-size: 1rem;\n"])));
201
- var StyledTitleIconContainerDiv = styled('div')(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n flex-shrink: 0;\n display: inline-flex;\n margin-right: 0.3rem;\n"], ["\n flex-shrink: 0;\n display: inline-flex;\n margin-right: 0.3rem;\n"])));
202
- var templateObject_1$1, templateObject_2$1, templateObject_3, templateObject_4, templateObject_5, templateObject_6;var Title = function (_a) {
203
- var title = _a.title, icon = _a.icon, headTitle = _a.headTitle, headIcon = _a.headIcon;
204
- var finalHeadIcon = useMemo(function () {
205
- return headIcon
206
- ? headIcon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); })
207
- : undefined;
208
- }, [headIcon]);
209
- var finalIcon = useMemo(function () { return (icon ? icon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); }) : undefined); }, [icon]);
210
- return (React.createElement(StyledContainerBox$1, null,
211
- headTitle && (React.createElement(StyledHeadContainerBox, null,
212
- finalHeadIcon && (React.createElement(StyledHeadIconContainerBox, null,
213
- React.createElement(StyledHeadIcon, null, finalHeadIcon))),
214
- React.createElement(StyledHeadTitleTypography, null, headTitle))),
215
- React.createElement(StyledTitleContainerDiv, null,
216
- finalIcon && (React.createElement(StyledTitleIconContainerDiv, null,
217
- React.createElement(Icon, { fontSize: 'small' }, finalIcon))),
218
- React.createElement("div", null, title))));
219
- };var SIDE_MENU_WIDTH = 220;
220
- var StyledContainerBox = styled(Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n height: 100%;\n"], ["\n display: flex;\n height: 100%;\n"])));
221
- var StyledAppBar = styled(AppBar)(function (_a) {
222
- var theme = _a.theme;
223
- return theme.unstable_sx({
224
- backdropFilter: 'blur(20px)',
225
- backgroundColor: 'rgba(255, 255, 255, 0.7)',
226
- color: 'text.primary',
227
- borderBottom: 'thin solid #f5f5f5',
228
- });
229
- });
230
- var StyledSideMenuContainerBox = styled(Box)(function (_a) {
231
- var theme = _a.theme;
232
- return theme.unstable_sx({});
233
- });
234
- var StyledSideMenuTemporaryDrawer = styled(Drawer)(function (_a) {
235
- var theme = _a.theme;
236
- return theme.unstable_sx({
237
- '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
238
- });
239
- });
240
- var StyledSideMenuPermanentDrawer = styled(Drawer)(function (_a) {
241
- var theme = _a.theme;
242
- return theme.unstable_sx({
243
- '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
244
- });
245
- });
246
- var StyledMainBox = styled(Box)(function (_a) {
247
- var theme = _a.theme;
248
- return theme.unstable_sx({
249
- flexGrow: 1,
250
- p: 2,
251
- display: 'flex',
252
- flexDirection: 'column',
253
- minHeight: '100vh',
254
- });
255
- });
256
- var StyledMainContentDiv = styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n flex: 1;\n"], ["\n display: flex;\n flex-direction: column;\n flex: 1;\n"])));
257
- var templateObject_1, templateObject_2;var _screens = ['xs', 'sm', 'md', 'lg', 'xl'];
258
- var _getNextScreen = function (screen) {
259
- if (screen === 'xs')
260
- return 'sm';
261
- else if (screen === 'sm')
262
- return 'md';
263
- else if (screen === 'md')
264
- return 'lg';
265
- else
266
- return 'xl';
267
- };
268
- var DefaultLayout = function (_a) {
269
- /********************************************************************************************************************
270
- * Use
271
- * ******************************************************************************************************************/
272
- var children = _a.children, logo = _a.logo, badgeVariant = _a.badgeVariant, menu = _a.menu, initMenuHideScreen = _a.menuHideScreen, appBarControl = _a.appBarControl, onMenuClick = _a.onMenuClick;
273
- var location = useLocation();
274
- /********************************************************************************************************************
275
- * State
276
- * ******************************************************************************************************************/
277
- var _b = useState(false), isMobileOpen = _b[0], setIsMobileOpen = _b[1];
278
- var _c = useState({}), menuTitles = _c[0], setMenuTitles = _c[1];
279
- var _d = useState(), title = _d[0], setTitle = _d[1];
280
- var _e = useState(initMenuHideScreen || 'sm'), menuHideScreen = _e[0], setMenuHideScreen = _e[1];
281
- /********************************************************************************************************************
282
- * Effect
283
- * ******************************************************************************************************************/
284
- useEffect(function () {
285
- var menuTitles = {};
286
- if (menu) {
287
- menu.forEach(function (info) {
288
- if (empty(info.uri) && info.items && info.items.length > 0) {
289
- info.items.map(function (subInfo) {
290
- menuTitles[subInfo.uri] = { name: subInfo.name, parentName: info.name, parentIcon: info.icon };
291
- });
292
- }
293
- else if (info.uri) {
294
- menuTitles[info.uri] = { name: info.name, icon: info.icon };
295
- }
296
- });
297
- }
298
- setMenuTitles(menuTitles);
299
- }, [menu]);
300
- useEffect(function () {
301
- setMenuHideScreen(initMenuHideScreen || 'sm');
302
- }, [initMenuHideScreen]);
303
- useEffect(function () {
304
- if (menuTitles) {
305
- var titleData = menuTitles[location.pathname];
306
- if (titleData) {
307
- setTitle(React.createElement(Title, { title: titleData.name, icon: titleData.icon, headTitle: titleData.parentName, headIcon: titleData.parentIcon }));
308
- }
309
- else {
310
- setTitle(undefined);
311
- }
312
- }
313
- }, [location, menuTitles]);
314
- /********************************************************************************************************************
315
- * Function
316
- * ******************************************************************************************************************/
317
- var toggleIsMobileOpen = useCallback(function () {
318
- setIsMobileOpen(function (isMobileOpen) { return !isMobileOpen; });
319
- }, []);
320
- /********************************************************************************************************************
321
- * Memo
322
- * ******************************************************************************************************************/
323
- var appBarSx = useMemo(function () {
324
- var width = {};
325
- var ml = {};
326
- width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
327
- ml[_getNextScreen(menuHideScreen)] = "".concat(SIDE_MENU_WIDTH, "px");
328
- return { width: width, ml: ml };
329
- }, [menuHideScreen]);
330
- var appBarIconButtonSx = useMemo(function () {
331
- var display = {};
332
- display[_getNextScreen(menuHideScreen)] = 'none';
333
- return { mr: 2, display: display };
334
- }, [menuHideScreen]);
335
- var sideMenuContainerBoxSx = useMemo(function () {
336
- var width = {};
337
- var flexShrink = {};
338
- width[_getNextScreen(menuHideScreen)] = SIDE_MENU_WIDTH;
339
- flexShrink[_getNextScreen(menuHideScreen)] = 0;
340
- return { width: width, flexShrink: flexShrink };
341
- }, [menuHideScreen]);
342
- var sideMenuTemporaryDrawerSx = useMemo(function () {
343
- var found = false;
344
- return {
345
- display: _screens.reduce(function (res, screen) {
346
- if (screen === menuHideScreen) {
347
- found = true;
348
- res[screen] = 'block';
349
- }
350
- else {
351
- res[screen] = found ? 'none' : 'block';
352
- }
353
- return res;
354
- }, {}),
355
- };
356
- }, [menuHideScreen]);
357
- var sideMenuPermanentDrawerSx = useMemo(function () {
358
- var found = false;
359
- return {
360
- display: _screens.reduce(function (res, screen) {
361
- if (screen === menuHideScreen) {
362
- found = true;
363
- res[screen] = 'none';
364
- }
365
- else {
366
- res[screen] = found ? 'block' : 'none';
367
- }
368
- return res;
369
- }, {}),
370
- };
371
- }, [menuHideScreen]);
372
- var mainBoxSx = useMemo(function () {
373
- var width = {};
374
- width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
375
- return { width: width };
376
- }, [menuHideScreen]);
377
- /********************************************************************************************************************
378
- * Render
379
- * ******************************************************************************************************************/
380
- return (React.createElement(StyledContainerBox, null,
381
- React.createElement(StyledAppBar, { position: 'fixed', elevation: 0, sx: appBarSx },
382
- React.createElement(Toolbar, null,
383
- React.createElement(IconButton, { color: 'inherit', "aria-label": 'open drawer', edge: 'start', onClick: toggleIsMobileOpen, sx: appBarIconButtonSx },
384
- React.createElement(Menu, null)),
385
- React.createElement(Typography, { variant: 'h6', noWrap: true, component: 'div', sx: { flexGrow: 1 } }, title),
386
- appBarControl)),
387
- React.createElement(StyledSideMenuContainerBox, { component: 'nav', "aria-label": 'mailbox folders', sx: sideMenuContainerBoxSx },
388
- React.createElement(StyledSideMenuTemporaryDrawer, { variant: 'temporary', open: isMobileOpen, onClose: toggleIsMobileOpen, sx: sideMenuTemporaryDrawerSx, ModalProps: {
389
- keepMounted: true, // Better open performance on mobile.
390
- } }, menu && (React.createElement(SideMenu, { logo: logo, badgeVariant: badgeVariant, list: menu, onClick: function (menuItem) {
391
- toggleIsMobileOpen();
392
- if (onMenuClick)
393
- onMenuClick(menuItem);
394
- } }))),
395
- React.createElement(StyledSideMenuPermanentDrawer, { variant: 'permanent', open: true, sx: sideMenuPermanentDrawerSx }, menu && React.createElement(SideMenu, { logo: logo, badgeVariant: badgeVariant, list: menu, onClick: onMenuClick }))),
396
- React.createElement(StyledMainBox, { component: 'main', sx: mainBoxSx },
397
- React.createElement(Toolbar, null),
398
- React.createElement(StyledMainContentDiv, null, children))));
167
+ };var StyledList = styled(List)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n padding: 0;\n"], ["\n padding: 0;\n"])));
168
+ var templateObject_1$3;var SideMenuList = function (_a) {
169
+ var list = _a.list, badgeVariant = _a.badgeVariant, onClick = _a.onClick;
170
+ return (React.createElement(StyledList, null, list.map(function (info, idx) { return (React.createElement(SideMenuListItem, { key: idx, info: info, badgeVariant: badgeVariant, onClick: onClick })); })));
171
+ };var StyledSimpleBar = styled(SimpleBar)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n max-height: 100%;\n"], ["\n max-height: 100%;\n"])));
172
+ var StyledLogoContainerBox = styled(Box)(function (_a) {
173
+ var theme = _a.theme;
174
+ return theme.unstable_sx({
175
+ borderBottom: 'thin solid #f5f5f5',
176
+ color: 'text.primary',
177
+ });
178
+ });
179
+ var templateObject_1$2;var SideMenu = function (_a) {
180
+ var logo = _a.logo, badgeVariant = _a.badgeVariant, list = _a.list, onClick = _a.onClick;
181
+ return (React.createElement(StyledSimpleBar, null,
182
+ React.createElement(StyledLogoContainerBox, null,
183
+ React.createElement(Toolbar, null, logo)),
184
+ list && React.createElement(SideMenuList, { badgeVariant: badgeVariant, list: list, onClick: onClick })));
185
+ };var StyledContainerBox$1 = styled(Box)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["\n position: relative;\n"], ["\n position: relative;\n"])));
186
+ var StyledHeadContainerBox = styled(Box)(function (_a) {
187
+ var theme = _a.theme;
188
+ return theme.unstable_sx({
189
+ display: { xs: 'none', sm: 'flex' },
190
+ alignItems: 'center',
191
+ opacity: 0.5,
192
+ });
193
+ });
194
+ var StyledHeadIconContainerBox = styled(Box)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\n margin-right: 0.25rem;\n line-height: 0;\n"], ["\n margin-right: 0.25rem;\n line-height: 0;\n"])));
195
+ var StyledHeadIcon = styled(Icon)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n font-size: 1rem;\n"], ["\n font-size: 1rem;\n"])));
196
+ var StyledHeadTitleTypography = styled(Typography)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n font-size: 0.7rem;\n"], ["\n font-size: 0.7rem;\n"])));
197
+ var StyledTitleContainerDiv = styled('div')(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n font-size: 1rem;\n"], ["\n display: flex;\n align-items: center;\n font-size: 1rem;\n"])));
198
+ var StyledTitleIconContainerDiv = styled('div')(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n flex-shrink: 0;\n display: inline-flex;\n margin-right: 0.3rem;\n"], ["\n flex-shrink: 0;\n display: inline-flex;\n margin-right: 0.3rem;\n"])));
199
+ var templateObject_1$1, templateObject_2$1, templateObject_3, templateObject_4, templateObject_5, templateObject_6;var Title = function (_a) {
200
+ var title = _a.title, icon = _a.icon, headTitle = _a.headTitle, headIcon = _a.headIcon;
201
+ var finalHeadIcon = useMemo(function () {
202
+ return headIcon
203
+ ? headIcon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); })
204
+ : undefined;
205
+ }, [headIcon]);
206
+ var finalIcon = useMemo(function () { return (icon ? icon.replace(/[A-Z]/g, function (letter, idx) { return "".concat(idx > 0 ? '_' : '').concat(letter.toLowerCase()); }) : undefined); }, [icon]);
207
+ return (React.createElement(StyledContainerBox$1, null,
208
+ headTitle && (React.createElement(StyledHeadContainerBox, null,
209
+ finalHeadIcon && (React.createElement(StyledHeadIconContainerBox, null,
210
+ React.createElement(StyledHeadIcon, null, finalHeadIcon))),
211
+ React.createElement(StyledHeadTitleTypography, null, headTitle))),
212
+ React.createElement(StyledTitleContainerDiv, null,
213
+ finalIcon && (React.createElement(StyledTitleIconContainerDiv, null,
214
+ React.createElement(Icon, { fontSize: 'small' }, finalIcon))),
215
+ React.createElement("div", null, title))));
216
+ };var SIDE_MENU_WIDTH = 220;
217
+ var StyledContainerBox = styled(Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n height: 100%;\n"], ["\n display: flex;\n height: 100%;\n"])));
218
+ var StyledAppBar = styled(AppBar)(function (_a) {
219
+ var theme = _a.theme;
220
+ return theme.unstable_sx({
221
+ backdropFilter: 'blur(20px)',
222
+ backgroundColor: 'rgba(255, 255, 255, 0.7)',
223
+ color: 'text.primary',
224
+ borderBottom: 'thin solid #f5f5f5',
225
+ });
226
+ });
227
+ var StyledSideMenuContainerBox = styled(Box)(function (_a) {
228
+ var theme = _a.theme;
229
+ return theme.unstable_sx({});
230
+ });
231
+ var StyledSideMenuTemporaryDrawer = styled(Drawer)(function (_a) {
232
+ var theme = _a.theme;
233
+ return theme.unstable_sx({
234
+ '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
235
+ });
236
+ });
237
+ var StyledSideMenuPermanentDrawer = styled(Drawer)(function (_a) {
238
+ var theme = _a.theme;
239
+ return theme.unstable_sx({
240
+ '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
241
+ });
242
+ });
243
+ var StyledMainBox = styled(Box)(function (_a) {
244
+ var theme = _a.theme;
245
+ return theme.unstable_sx({
246
+ flexGrow: 1,
247
+ p: 2,
248
+ display: 'flex',
249
+ flexDirection: 'column',
250
+ minHeight: '100vh',
251
+ });
252
+ });
253
+ var StyledMainContentDiv = styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n flex: 1;\n"], ["\n display: flex;\n flex-direction: column;\n flex: 1;\n"])));
254
+ var templateObject_1, templateObject_2;var _screens = ['xs', 'sm', 'md', 'lg', 'xl'];
255
+ var _getNextScreen = function (screen) {
256
+ if (screen === 'xs')
257
+ return 'sm';
258
+ else if (screen === 'sm')
259
+ return 'md';
260
+ else if (screen === 'md')
261
+ return 'lg';
262
+ else
263
+ return 'xl';
264
+ };
265
+ var DefaultLayout = function (_a) {
266
+ /********************************************************************************************************************
267
+ * Use
268
+ * ******************************************************************************************************************/
269
+ var children = _a.children, logo = _a.logo, badgeVariant = _a.badgeVariant, menu = _a.menu, initMenuHideScreen = _a.menuHideScreen, appBarControl = _a.appBarControl, onMenuClick = _a.onMenuClick;
270
+ var location = useLocation();
271
+ /********************************************************************************************************************
272
+ * State
273
+ * ******************************************************************************************************************/
274
+ var _b = useState(false), isMobileOpen = _b[0], setIsMobileOpen = _b[1];
275
+ var _c = useState({}), menuTitles = _c[0], setMenuTitles = _c[1];
276
+ var _d = useState(), title = _d[0], setTitle = _d[1];
277
+ var _e = useState(initMenuHideScreen || 'sm'), menuHideScreen = _e[0], setMenuHideScreen = _e[1];
278
+ /********************************************************************************************************************
279
+ * Effect
280
+ * ******************************************************************************************************************/
281
+ useEffect(function () {
282
+ var menuTitles = {};
283
+ if (menu) {
284
+ menu.forEach(function (info) {
285
+ if (empty(info.uri) && info.items && info.items.length > 0) {
286
+ info.items.map(function (subInfo) {
287
+ menuTitles[subInfo.uri] = { name: subInfo.name, parentName: info.name, parentIcon: info.icon };
288
+ });
289
+ }
290
+ else if (info.uri) {
291
+ menuTitles[info.uri] = { name: info.name, icon: info.icon };
292
+ }
293
+ });
294
+ }
295
+ setMenuTitles(menuTitles);
296
+ }, [menu]);
297
+ useEffect(function () {
298
+ setMenuHideScreen(initMenuHideScreen || 'sm');
299
+ }, [initMenuHideScreen]);
300
+ useEffect(function () {
301
+ if (menuTitles) {
302
+ var titleData = menuTitles[location.pathname];
303
+ if (titleData) {
304
+ setTitle(React.createElement(Title, { title: titleData.name, icon: titleData.icon, headTitle: titleData.parentName, headIcon: titleData.parentIcon }));
305
+ }
306
+ else {
307
+ setTitle(undefined);
308
+ }
309
+ }
310
+ }, [location, menuTitles]);
311
+ /********************************************************************************************************************
312
+ * Function
313
+ * ******************************************************************************************************************/
314
+ var toggleIsMobileOpen = useCallback(function () {
315
+ setIsMobileOpen(function (isMobileOpen) { return !isMobileOpen; });
316
+ }, []);
317
+ /********************************************************************************************************************
318
+ * Memo
319
+ * ******************************************************************************************************************/
320
+ var appBarSx = useMemo(function () {
321
+ var width = {};
322
+ var ml = {};
323
+ width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
324
+ ml[_getNextScreen(menuHideScreen)] = "".concat(SIDE_MENU_WIDTH, "px");
325
+ return { width: width, ml: ml };
326
+ }, [menuHideScreen]);
327
+ var appBarIconButtonSx = useMemo(function () {
328
+ var display = {};
329
+ display[_getNextScreen(menuHideScreen)] = 'none';
330
+ return { mr: 2, display: display };
331
+ }, [menuHideScreen]);
332
+ var sideMenuContainerBoxSx = useMemo(function () {
333
+ var width = {};
334
+ var flexShrink = {};
335
+ width[_getNextScreen(menuHideScreen)] = SIDE_MENU_WIDTH;
336
+ flexShrink[_getNextScreen(menuHideScreen)] = 0;
337
+ return { width: width, flexShrink: flexShrink };
338
+ }, [menuHideScreen]);
339
+ var sideMenuTemporaryDrawerSx = useMemo(function () {
340
+ var found = false;
341
+ return {
342
+ display: _screens.reduce(function (res, screen) {
343
+ if (screen === menuHideScreen) {
344
+ found = true;
345
+ res[screen] = 'block';
346
+ }
347
+ else {
348
+ res[screen] = found ? 'none' : 'block';
349
+ }
350
+ return res;
351
+ }, {}),
352
+ };
353
+ }, [menuHideScreen]);
354
+ var sideMenuPermanentDrawerSx = useMemo(function () {
355
+ var found = false;
356
+ return {
357
+ display: _screens.reduce(function (res, screen) {
358
+ if (screen === menuHideScreen) {
359
+ found = true;
360
+ res[screen] = 'none';
361
+ }
362
+ else {
363
+ res[screen] = found ? 'block' : 'none';
364
+ }
365
+ return res;
366
+ }, {}),
367
+ };
368
+ }, [menuHideScreen]);
369
+ var mainBoxSx = useMemo(function () {
370
+ var width = {};
371
+ width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
372
+ return { width: width };
373
+ }, [menuHideScreen]);
374
+ /********************************************************************************************************************
375
+ * Render
376
+ * ******************************************************************************************************************/
377
+ return (React.createElement(StyledContainerBox, null,
378
+ React.createElement(StyledAppBar, { position: 'fixed', elevation: 0, sx: appBarSx },
379
+ React.createElement(Toolbar, null,
380
+ React.createElement(IconButton, { color: 'inherit', "aria-label": 'open drawer', edge: 'start', onClick: toggleIsMobileOpen, sx: appBarIconButtonSx },
381
+ React.createElement(Menu, null)),
382
+ React.createElement(Typography, { variant: 'h6', noWrap: true, component: 'div', sx: { flexGrow: 1 } }, title),
383
+ appBarControl)),
384
+ React.createElement(StyledSideMenuContainerBox, { component: 'nav', "aria-label": 'mailbox folders', sx: sideMenuContainerBoxSx },
385
+ React.createElement(StyledSideMenuTemporaryDrawer, { variant: 'temporary', open: isMobileOpen, onClose: toggleIsMobileOpen, sx: sideMenuTemporaryDrawerSx, ModalProps: {
386
+ keepMounted: true, // Better open performance on mobile.
387
+ } }, menu && (React.createElement(SideMenu, { logo: logo, badgeVariant: badgeVariant, list: menu, onClick: function (menuItem) {
388
+ toggleIsMobileOpen();
389
+ if (onMenuClick)
390
+ onMenuClick(menuItem);
391
+ } }))),
392
+ React.createElement(StyledSideMenuPermanentDrawer, { variant: 'permanent', open: true, sx: sideMenuPermanentDrawerSx }, menu && React.createElement(SideMenu, { logo: logo, badgeVariant: badgeVariant, list: menu, onClick: onMenuClick }))),
393
+ React.createElement(StyledMainBox, { component: 'main', sx: mainBoxSx },
394
+ React.createElement(Toolbar, null),
395
+ React.createElement(StyledMainContentDiv, null, children))));
399
396
  };export{CardLayout,DefaultLayout};