@pdg/react-admin-layout 1.0.31 → 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');
@@ -24,122 +24,122 @@ import {Grid,useTheme,alpha,ListItemButton,ListItemIcon,Icon,ListItemText,Badge,
24
24
  style.appendChild(document.createTextNode(css));
25
25
  }
26
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 })); }))));
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 })); }))));
143
143
  };/******************************************************************************
144
144
  Copyright (c) Microsoft Corporation.
145
145
 
@@ -164,233 +164,233 @@ function __makeTemplateObject(cooked, raw) {
164
164
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
165
165
  var e = new Error(message);
166
166
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
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))));
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))));
396
396
  };export{CardLayout,DefaultLayout};