@thefreshop/tb 1.0.13 → 1.0.15

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/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { createContext, useState, useEffect, useContext, useCallback, useMemo, useRef, forwardRef, useImperativeHandle, memo } from 'react';
3
- import { useNavigate, useLocation, Outlet, createHashRouter, createBrowserRouter, RouterProvider } from 'react-router';
3
+ import { useNavigate, useLocation, Outlet, createHashRouter, createBrowserRouter, RouterProvider, Navigate } from 'react-router';
4
4
  import Editor from '@monaco-editor/react';
5
5
  import { DownOutlined, UpOutlined, DoubleRightOutlined, DoubleLeftOutlined, LoadingOutlined, ReloadOutlined, SearchOutlined, UploadOutlined, ExclamationCircleOutlined, RedoOutlined, TagOutlined } from '@ant-design/icons';
6
6
  import { Typography, Row, Col, Space, Button, Input, Tag, Image as Image$1, Tooltip, Upload, Form, Select, DatePicker, Switch, InputNumber, Flex, Modal, Table, List, Card, Checkbox, ConfigProvider, Result, Spin } from 'antd';
@@ -42,11 +42,13 @@ const TbProvider = ({ children }) => {
42
42
  });
43
43
  // 2. 상태가 변경될 때마다 sessionStorage 저장하는 useEffect 추가
44
44
  useEffect(() => {
45
+ // page 속성(React 컴포넌트)을 제외하고 sessionStorage에 저장
46
+ const tabsToSave = tabs.map(({ page, ...rest }) => rest);
45
47
  const stateToSave = {
46
- tabs,
48
+ tabs: tabsToSave,
47
49
  // ... 저장할 다른 상태들 ...
48
50
  };
49
- sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(stateToSave));
51
+ sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(stateToSave)); // 순환 구조 오류 방지
50
52
  }, [tabs, currentTab /* ... 다른 상태 의존성 ... */]);
51
53
  const addTabs = (tab) => {
52
54
  setCurrentTab(tab);
@@ -539,6 +541,12 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
539
541
  }, [errMsg]);
540
542
  const route = () => {
541
543
  let route = [];
544
+ if (setting?.islogin) {
545
+ route.push({
546
+ path: "/login",
547
+ element: setting?.loginpage ? setting.loginpage : React__default.createElement(LoginPage, null),
548
+ });
549
+ }
542
550
  nav.menuSet.forEach((item) => {
543
551
  item.menuSetting.forEach((sub) => {
544
552
  route.push({
@@ -576,11 +584,11 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
576
584
  },
577
585
  ]);
578
586
  }
579
- }, [hashmode]);
587
+ }, [hashmode, user]);
580
588
  return React__default.createElement(RouterProvider, { router: router });
581
589
  };
582
590
  const MainLayout = ({ errMsg, startpage, setting, top_banner, nav, user, top, bottom, }) => {
583
- const LOGIN = useCallback(() => {
591
+ useCallback(() => {
584
592
  if (startpage)
585
593
  return setting?.loginpage ? setting.loginpage : React__default.createElement(LoginPage, null);
586
594
  else
@@ -620,7 +628,9 @@ const MainLayout = ({ errMsg, startpage, setting, top_banner, nav, user, top, bo
620
628
  fontSize: "10px",
621
629
  } }, errMsg?.err))));
622
630
  };
623
- return (React__default.createElement("div", { className: styles$9.main }, errMsg ? (errMsg.isPopup ? (React__default.createElement(ErrWarning, null)) : null) : setting?.islogin && !user ? (React__default.createElement(LOGIN, null)) : (React__default.createElement("div", { className: styles$9.mainframe },
631
+ 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,
632
+ React__default.createElement(Outlet, null),
633
+ React__default.createElement(Navigate, { to: "/login", replace: true }))) : (React__default.createElement("div", { className: styles$9.mainframe },
624
634
  React__default.createElement(Top, { setting: setting, top: top }),
625
635
  React__default.createElement(TOPBANNER, null),
626
636
  React__default.createElement("div", { className: styles$9.centerFrame, style: top_banner ? { height: "calc(100vh - 120px)" } : { height: "calc(100vh - 80px)" } },