@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.
@@ -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}`, onMouseEnter: () => {
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}`, onMouseEnter: () => {
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
- if (tabList.length === 0) {
478
- let p_tabList = [];
479
- nav.menuSet.forEach((item) => {
480
- item.menuSetting.forEach((sub) => {
481
- p_tabList.push(sub.tab);
482
- sub.children?.forEach((page) => {
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
- nav?.globalTabs?.forEach((item) => {
488
- p_tabList.push(item);
489
- });
490
- setTabList(p_tabList);
491
- }
492
- }, [tabList]);
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