@thefreshop/tb 1.0.26 → 1.0.28
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 +45 -41
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tbframe/layout/frame.d.ts +3 -2
- package/dist/cjs/tbframe/layout/nav.d.ts +3 -2
- package/dist/cjs/types/tbframe.types.d.ts +16 -0
- package/dist/esm/index.js +45 -41
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tbframe/layout/frame.d.ts +3 -2
- package/dist/esm/tbframe/layout/nav.d.ts +3 -2
- package/dist/esm/types/tbframe.types.d.ts +16 -0
- package/dist/index.d.ts +17 -1
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { tbframeType, topType, navType, bottomType } from "../../types";
|
|
3
|
-
declare const TbFrame: ({ setting, top, bottom, nav, top_banner, hashmode, }: {
|
|
2
|
+
import { tbframeType, topType, navType, bottomType, FrameStyleType } from "../../types";
|
|
3
|
+
declare const TbFrame: ({ setting, top, bottom, nav, top_banner, hashmode, frameStyle, }: {
|
|
4
4
|
setting: tbframeType;
|
|
5
5
|
top: topType;
|
|
6
6
|
bottom?: bottomType;
|
|
7
7
|
nav: navType;
|
|
8
8
|
top_banner?: React.ReactNode;
|
|
9
9
|
hashmode?: boolean;
|
|
10
|
+
frameStyle?: FrameStyleType;
|
|
10
11
|
}) => React.JSX.Element;
|
|
11
12
|
export default TbFrame;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { navType } from "../../types";
|
|
3
|
-
declare const Nav: ({ nav: { menuSet, openIcon, closeIcon }, islogin }: {
|
|
2
|
+
import { navType, FrameStyleType } from "../../types";
|
|
3
|
+
declare const Nav: ({ nav: { menuSet, openIcon, closeIcon }, islogin, frameStyle }: {
|
|
4
4
|
nav: navType;
|
|
5
5
|
islogin: boolean;
|
|
6
|
+
frameStyle?: FrameStyleType;
|
|
6
7
|
}) => React.JSX.Element;
|
|
7
8
|
export default Nav;
|
|
@@ -7,6 +7,22 @@ export interface tbframeType {
|
|
|
7
7
|
logoutComponent?: React.ReactNode;
|
|
8
8
|
}
|
|
9
9
|
export declare const baseAdminDat: TbFrameType;
|
|
10
|
+
export type FrameStyleType = {
|
|
11
|
+
main?: React.CSSProperties;
|
|
12
|
+
mainframe?: React.CSSProperties;
|
|
13
|
+
centerFrame?: React.CSSProperties;
|
|
14
|
+
contentsFrame?: React.CSSProperties;
|
|
15
|
+
bottomFrame?: React.CSSProperties;
|
|
16
|
+
naviFrame?: React.CSSProperties;
|
|
17
|
+
nav_item?: React.CSSProperties;
|
|
18
|
+
menu_select?: React.CSSProperties;
|
|
19
|
+
menu_hover?: React.CSSProperties;
|
|
20
|
+
menu_nomal?: React.CSSProperties;
|
|
21
|
+
nav_icon?: React.CSSProperties;
|
|
22
|
+
nav_text?: React.CSSProperties;
|
|
23
|
+
nav_openIcon?: React.CSSProperties;
|
|
24
|
+
sub_item?: React.CSSProperties;
|
|
25
|
+
};
|
|
10
26
|
export type TbFrameType = {
|
|
11
27
|
admin_account_id: number;
|
|
12
28
|
admin_profile_id: number;
|
package/dist/esm/index.js
CHANGED
|
@@ -218,14 +218,14 @@ const TopMenu = ({ topMenuSetting: { title, icon, key }, menuStyle = {} }) => {
|
|
|
218
218
|
React__default.createElement("div", { className: `${styles$8.top_menu_item_text} ${topkey === key ? styles$8.menu_hover : styles$8.menu_nomal}`, style: menuStyle.fontSize ? { fontSize: menuStyle.fontSize } : {} }, title)));
|
|
219
219
|
};
|
|
220
220
|
|
|
221
|
-
const Nav = ({ nav: { menuSet, openIcon, closeIcon }, islogin }) => {
|
|
221
|
+
const Nav = ({ nav: { menuSet, openIcon, closeIcon }, islogin, frameStyle }) => {
|
|
222
222
|
const { topkey, user } = useTbState();
|
|
223
223
|
const currentMenu = menuSet.find((m) => m.parentkey === topkey);
|
|
224
224
|
const userMenu = () => {
|
|
225
225
|
let usermenutable = [];
|
|
226
226
|
if (user?.user_group?.group_key === "master" || islogin === false) {
|
|
227
227
|
currentMenu?.menuSetting.forEach((m, index) => {
|
|
228
|
-
usermenutable.push(React__default.createElement(Menu, { key: index, menu_setting: m, openIcon: openIcon, closeIcon: closeIcon, islogin: islogin }));
|
|
228
|
+
usermenutable.push(React__default.createElement(Menu, { key: index, menu_setting: m, openIcon: openIcon, closeIcon: closeIcon, islogin: islogin, frameStyle: frameStyle }));
|
|
229
229
|
});
|
|
230
230
|
}
|
|
231
231
|
else {
|
|
@@ -233,14 +233,14 @@ const Nav = ({ nav: { menuSet, openIcon, closeIcon }, islogin }) => {
|
|
|
233
233
|
return user?.user_group?.group_menu_auth.includes(m.tab.key);
|
|
234
234
|
});
|
|
235
235
|
userCurrentMenu?.forEach((m, index) => {
|
|
236
|
-
usermenutable.push(React__default.createElement(Menu, { key: index, menu_setting: m, openIcon: openIcon, closeIcon: closeIcon, islogin: islogin }));
|
|
236
|
+
usermenutable.push(React__default.createElement(Menu, { key: index, menu_setting: m, openIcon: openIcon, closeIcon: closeIcon, islogin: islogin, frameStyle: frameStyle }));
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
239
|
return usermenutable;
|
|
240
240
|
};
|
|
241
|
-
return React__default.createElement("div", { className: styles$9.naviFrame }, userMenu());
|
|
241
|
+
return (React__default.createElement("div", { className: styles$9.naviFrame, style: frameStyle?.naviFrame }, userMenu()));
|
|
242
242
|
};
|
|
243
|
-
const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, openIcon, closeIcon, islogin, }) => {
|
|
243
|
+
const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, openIcon, closeIcon, islogin, frameStyle, }) => {
|
|
244
244
|
const { title, key, page } = tab;
|
|
245
245
|
const [hover, setHover] = useState(false);
|
|
246
246
|
const [subOpen, setSubOpen] = useState(false);
|
|
@@ -257,7 +257,7 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
257
257
|
let usersubmenutable = [];
|
|
258
258
|
if (user?.user_group?.group_key === "master" || islogin === false) {
|
|
259
259
|
children?.forEach((m, index) => {
|
|
260
|
-
usersubmenutable.push(React__default.createElement(SubMenu, { key: index, menu_setting: m }));
|
|
260
|
+
usersubmenutable.push(React__default.createElement(SubMenu, { key: index, menu_setting: m, frameStyle: frameStyle }));
|
|
261
261
|
});
|
|
262
262
|
}
|
|
263
263
|
else {
|
|
@@ -265,13 +265,16 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
265
265
|
return user?.user_group?.group_menu_auth.includes(m.tab.key);
|
|
266
266
|
});
|
|
267
267
|
userCurrentMenu?.forEach((m, index) => {
|
|
268
|
-
usersubmenutable.push(React__default.createElement(SubMenu, { key: index, menu_setting: m }));
|
|
268
|
+
usersubmenutable.push(React__default.createElement(SubMenu, { key: index, menu_setting: m, frameStyle: frameStyle }));
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
271
|
return usersubmenutable;
|
|
272
272
|
};
|
|
273
273
|
return (React__default.createElement("div", null,
|
|
274
|
-
React__default.createElement("div", { className: `${styles$9.nav_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`,
|
|
274
|
+
React__default.createElement("div", { className: `${styles$9.nav_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`, style: {
|
|
275
|
+
...frameStyle?.nav_item,
|
|
276
|
+
...(currentTabKey === key ? frameStyle?.menu_select : hover ? frameStyle?.menu_hover : frameStyle?.menu_nomal),
|
|
277
|
+
}, onMouseEnter: () => {
|
|
275
278
|
setHover(true);
|
|
276
279
|
}, onMouseLeave: () => {
|
|
277
280
|
setHover(false);
|
|
@@ -283,17 +286,20 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
283
286
|
}
|
|
284
287
|
// console.log(tabs)
|
|
285
288
|
} },
|
|
286
|
-
React__default.createElement("div", { className: styles$9.nav_icon }, icon),
|
|
287
|
-
React__default.createElement("div", { className: styles$9.nav_text }, title),
|
|
288
|
-
React__default.createElement("div", { className: styles$9.nav_open }, children && (subOpen ? React__default.createElement("div", null, openIcon) : React__default.createElement("div", null, closeIcon)))),
|
|
289
|
+
React__default.createElement("div", { className: styles$9.nav_icon, style: frameStyle?.nav_icon }, icon),
|
|
290
|
+
React__default.createElement("div", { className: styles$9.nav_text, style: frameStyle?.nav_text }, title),
|
|
291
|
+
React__default.createElement("div", { className: styles$9.nav_open, style: frameStyle?.nav_openIcon }, children && (subOpen ? React__default.createElement("div", null, openIcon) : React__default.createElement("div", null, closeIcon)))),
|
|
289
292
|
children && subOpen && userSubMenu()));
|
|
290
293
|
};
|
|
291
|
-
const SubMenu = ({ menu_setting: { tab, icon, hasPage } }) => {
|
|
294
|
+
const SubMenu = ({ menu_setting: { tab, icon, hasPage }, frameStyle }) => {
|
|
292
295
|
const { title, key, page } = tab;
|
|
293
296
|
const [hover, setHover] = useState(false);
|
|
294
297
|
const { addTabKey, currentTabKey } = useTbState();
|
|
295
298
|
const navigate = useNavigate();
|
|
296
|
-
return (React__default.createElement("div", { className: `${styles$9.sub_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`,
|
|
299
|
+
return (React__default.createElement("div", { className: `${styles$9.sub_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`, style: {
|
|
300
|
+
...frameStyle?.sub_item,
|
|
301
|
+
...(currentTabKey === key ? frameStyle?.menu_select : hover ? frameStyle?.menu_hover : frameStyle?.menu_nomal),
|
|
302
|
+
}, onMouseEnter: () => {
|
|
297
303
|
setHover(true);
|
|
298
304
|
}, onMouseLeave: () => {
|
|
299
305
|
setHover(false);
|
|
@@ -303,8 +309,8 @@ const SubMenu = ({ menu_setting: { tab, icon, hasPage } }) => {
|
|
|
303
309
|
navigate("/" + key);
|
|
304
310
|
// console.log(tabs)
|
|
305
311
|
} },
|
|
306
|
-
React__default.createElement("div", { className: styles$9.nav_icon }, icon),
|
|
307
|
-
React__default.createElement("div", { className: styles$9.nav_text }, title)));
|
|
312
|
+
React__default.createElement("div", { className: styles$9.nav_icon, style: frameStyle?.nav_icon }, icon),
|
|
313
|
+
React__default.createElement("div", { className: styles$9.nav_text, style: frameStyle?.nav_text }, title)));
|
|
308
314
|
};
|
|
309
315
|
|
|
310
316
|
var css_248z$9 = ".bottom-module_bottom_item__fac0H{display:flex;font-size:15px;justify-content:space-between;padding-left:10px;width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvdHRvbS5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUlFLFlBQWEsQ0FGYixjQUFlLENBR2YsNkJBQThCLENBSjlCLGlCQUFrQixDQUVsQixVQUdGIiwiZmlsZSI6ImJvdHRvbS5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmJvdHRvbV9pdGVtIHtcclxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG59XHJcbiJdfQ== */";
|
|
@@ -353,7 +359,7 @@ const Tabs = ({ nav: { menuSet, openIcon, closeIcon } }) => {
|
|
|
353
359
|
if (tabInfo) {
|
|
354
360
|
addTabKey(tabInfo);
|
|
355
361
|
}
|
|
356
|
-
}, [tabKeys]);
|
|
362
|
+
}, [tabKeys, menuSet, tabList]);
|
|
357
363
|
// 3. 페이지 로드 시 URL을 기반으로 currentTab을 설정하는 useEffect 추가
|
|
358
364
|
useEffect(() => {
|
|
359
365
|
const pathKey = location.pathname.substring(1); // 맨 앞의 '/' 제거
|
|
@@ -471,25 +477,23 @@ const NullPage = () => {
|
|
|
471
477
|
React__default.createElement("div", null, "\uD398\uC774\uC9C0\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.")));
|
|
472
478
|
};
|
|
473
479
|
|
|
474
|
-
const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) => {
|
|
480
|
+
const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, frameStyle, }) => {
|
|
475
481
|
const { user, errMsg, tabList, setTabList, startTabKey, setStartTabKey } = useTbState();
|
|
476
482
|
useEffect(() => {
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
p_tabList.push(page.tab);
|
|
484
|
-
});
|
|
483
|
+
let p_tabList = [];
|
|
484
|
+
nav.menuSet.forEach((item) => {
|
|
485
|
+
item.menuSetting.forEach((sub) => {
|
|
486
|
+
p_tabList.push(sub.tab);
|
|
487
|
+
sub.children?.forEach((page) => {
|
|
488
|
+
p_tabList.push(page.tab);
|
|
485
489
|
});
|
|
486
490
|
});
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
}, [
|
|
491
|
+
});
|
|
492
|
+
nav?.globalTabs?.forEach((item) => {
|
|
493
|
+
p_tabList.push(item);
|
|
494
|
+
});
|
|
495
|
+
setTabList(p_tabList);
|
|
496
|
+
}, [nav.menuSet]);
|
|
493
497
|
useEffect(() => {
|
|
494
498
|
if (!errMsg?.isPopup) ;
|
|
495
499
|
}, [errMsg]);
|
|
@@ -538,7 +542,7 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
538
542
|
return createHashRouter([
|
|
539
543
|
{
|
|
540
544
|
path: "/",
|
|
541
|
-
element: (React__default.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom })),
|
|
545
|
+
element: (React__default.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom, frameStyle: frameStyle })),
|
|
542
546
|
children: route(),
|
|
543
547
|
errorElement: React__default.createElement(NullPage, null),
|
|
544
548
|
},
|
|
@@ -548,16 +552,16 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
548
552
|
return createBrowserRouter([
|
|
549
553
|
{
|
|
550
554
|
path: "/",
|
|
551
|
-
element: (React__default.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom })),
|
|
555
|
+
element: (React__default.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom, frameStyle: frameStyle })),
|
|
552
556
|
children: route(),
|
|
553
557
|
errorElement: React__default.createElement(NullPage, null),
|
|
554
558
|
},
|
|
555
559
|
]);
|
|
556
560
|
}
|
|
557
|
-
}, [hashmode, user, top, nav, setting, top_banner, bottom]);
|
|
561
|
+
}, [hashmode, user, top, nav, setting, top_banner, bottom, frameStyle]);
|
|
558
562
|
return React__default.createElement(RouterProvider, { router: router });
|
|
559
563
|
};
|
|
560
|
-
const MainLayout = ({ errMsg, setting, top_banner, nav, user, top, bottom, }) => {
|
|
564
|
+
const MainLayout = ({ errMsg, setting, top_banner, nav, user, top, bottom, frameStyle, }) => {
|
|
561
565
|
const TOPBANNER = useCallback(() => {
|
|
562
566
|
return top_banner ? top_banner : null;
|
|
563
567
|
}, [top_banner]);
|
|
@@ -592,17 +596,17 @@ const MainLayout = ({ errMsg, setting, top_banner, nav, user, top, bottom, }) =>
|
|
|
592
596
|
fontSize: "10px",
|
|
593
597
|
} }, errMsg?.err))));
|
|
594
598
|
};
|
|
595
|
-
return (React__default.createElement("div", { className: styles$9.main }, errMsg ? (errMsg.isPopup ? (React__default.createElement(ErrWarning, null)) : null) : setting?.islogin && !user ? (React__default.createElement("div", null,
|
|
599
|
+
return (React__default.createElement("div", { className: styles$9.main, style: frameStyle?.main }, errMsg ? (errMsg.isPopup ? (React__default.createElement(ErrWarning, null)) : null) : setting?.islogin && !user ? (React__default.createElement("div", null,
|
|
596
600
|
React__default.createElement(Outlet, null),
|
|
597
|
-
React__default.createElement(Navigate, { to: "/login", replace: true }))) : (React__default.createElement("div", { className: styles$9.mainframe },
|
|
601
|
+
React__default.createElement(Navigate, { to: "/login", replace: true }))) : (React__default.createElement("div", { className: styles$9.mainframe, style: frameStyle?.mainframe },
|
|
598
602
|
React__default.createElement(Top, { setting: setting, top: top }),
|
|
599
603
|
React__default.createElement(TOPBANNER, null),
|
|
600
|
-
React__default.createElement("div", { className: styles$9.centerFrame, style: top_banner ? { height: "calc(100vh - 120px)" } : { height: "calc(100vh - 80px)" } },
|
|
601
|
-
React__default.createElement(Nav, { nav: nav, islogin: setting.islogin ?? false }),
|
|
602
|
-
React__default.createElement("div", { className: styles$9.contentsFrame },
|
|
604
|
+
React__default.createElement("div", { className: styles$9.centerFrame, style: { ...frameStyle?.centerFrame, ...(top_banner ? { height: "calc(100vh - 120px)" } : { height: "calc(100vh - 80px)" }) } },
|
|
605
|
+
React__default.createElement(Nav, { nav: nav, islogin: setting.islogin ?? false, frameStyle: frameStyle }),
|
|
606
|
+
React__default.createElement("div", { className: styles$9.contentsFrame, style: frameStyle?.contentsFrame },
|
|
603
607
|
React__default.createElement(Tabs, { nav: nav }),
|
|
604
608
|
React__default.createElement(Main, null))),
|
|
605
|
-
React__default.createElement("div", { className: styles$9.bottomFrame }, bottom && React__default.createElement(Bottom, { bottom: bottom }))))));
|
|
609
|
+
React__default.createElement("div", { className: styles$9.bottomFrame, style: frameStyle?.bottomFrame }, bottom && React__default.createElement(Bottom, { bottom: bottom }))))));
|
|
606
610
|
};
|
|
607
611
|
|
|
608
612
|
//component
|