@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/cjs/index.js +15 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +16 -6
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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(
|
|
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)" } },
|