@thefreshop/tb 1.0.16 → 1.0.18
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 +132 -173
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tbpage/component/modules/antBaseModalCreate/wiget.d.ts +1 -1
- package/dist/cjs/types/provider.types.d.ts +10 -13
- package/dist/cjs/types/tbframe.types.d.ts +2 -2
- package/dist/esm/index.js +132 -173
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tbpage/component/modules/antBaseModalCreate/wiget.d.ts +1 -1
- package/dist/esm/types/provider.types.d.ts +10 -13
- package/dist/esm/types/tbframe.types.d.ts +2 -2
- package/dist/index.d.ts +11 -14
- package/package.json +15 -3
package/dist/cjs/index.js
CHANGED
|
@@ -42,18 +42,17 @@ const tbContext = React.createContext(undefined);
|
|
|
42
42
|
const SESSION_STORAGE_KEY = "tbFrameState";
|
|
43
43
|
const TbProvider = ({ children }) => {
|
|
44
44
|
const [topkey, setTopkey] = React.useState("");
|
|
45
|
-
const [
|
|
45
|
+
const [tabList, setTabList] = React.useState([]);
|
|
46
|
+
const [currentTabKey, setCurrentTabKey] = React.useState();
|
|
47
|
+
const [startTabKey, setStartTabKey] = React.useState();
|
|
46
48
|
const [user, setloginUser] = React.useState();
|
|
47
|
-
// const [tabs, setTabs] = useState<tabType[]>([]);
|
|
48
|
-
const [startpage, setStartpage] = React.useState();
|
|
49
49
|
const [errMsg, setErrMsg] = React.useState();
|
|
50
|
-
const [globalpages, setGlobalpages] = React.useState();
|
|
51
|
-
const [menupages, setMenupages] = React.useState();
|
|
52
50
|
// 1. 초기 상태를 sessionStorage 불러오도록 수정
|
|
53
|
-
const [
|
|
51
|
+
const [tabKeys, setTabKeys] = React.useState(() => {
|
|
54
52
|
try {
|
|
55
53
|
const savedState = sessionStorage.getItem(SESSION_STORAGE_KEY);
|
|
56
|
-
|
|
54
|
+
const tt = savedState ? JSON.parse(savedState).tabs : [];
|
|
55
|
+
return tt === undefined ? [] : tt;
|
|
57
56
|
}
|
|
58
57
|
catch (error) {
|
|
59
58
|
console.error("Failed to parse state from sessionStorage", error);
|
|
@@ -62,50 +61,33 @@ const TbProvider = ({ children }) => {
|
|
|
62
61
|
});
|
|
63
62
|
// 2. 상태가 변경될 때마다 sessionStorage 저장하는 useEffect 추가
|
|
64
63
|
React.useEffect(() => {
|
|
65
|
-
//
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const addTabs = (tab) => {
|
|
74
|
-
setCurrentTab(tab);
|
|
75
|
-
if (tabs.find((m) => m.key === tab.key) === undefined) {
|
|
76
|
-
setTabs([...tabs, tab]);
|
|
64
|
+
// 불러올 때의 데이터 구조({ tabs: ... })와 일치시키기 위해 객체 형태로 저장
|
|
65
|
+
const stateToSave = { tabs: tabKeys };
|
|
66
|
+
sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(stateToSave));
|
|
67
|
+
}, [tabKeys, currentTabKey /* ... 다른 상태 의존성 ... */]);
|
|
68
|
+
const addTabKey = (key) => {
|
|
69
|
+
setCurrentTabKey(key);
|
|
70
|
+
if (tabKeys.find((m) => m === key) === undefined) {
|
|
71
|
+
setTabKeys([...tabKeys, key]);
|
|
77
72
|
}
|
|
78
73
|
};
|
|
79
|
-
const
|
|
74
|
+
const removeTabKey = (key) => {
|
|
80
75
|
// console.log('tab', tab)
|
|
81
|
-
let newTabs = [...
|
|
82
|
-
const itemToFind = newTabs.find((m) => m
|
|
76
|
+
let newTabs = [...tabKeys];
|
|
77
|
+
const itemToFind = newTabs.find((m) => m === key);
|
|
83
78
|
if (itemToFind !== undefined) {
|
|
84
79
|
const idx = newTabs.indexOf(itemToFind);
|
|
85
80
|
if (idx > -1)
|
|
86
81
|
newTabs.splice(idx, 1);
|
|
87
|
-
|
|
82
|
+
setTabKeys(newTabs);
|
|
88
83
|
// console.log('newTabs', newTabs)
|
|
89
|
-
if (
|
|
90
|
-
|
|
84
|
+
if (currentTabKey === key) {
|
|
85
|
+
setCurrentTabKey(newTabs[idx === 0 ? 0 : idx - 1]);
|
|
91
86
|
}
|
|
92
87
|
}
|
|
93
88
|
};
|
|
94
89
|
const loginUser = (user) => {
|
|
95
90
|
if (user !== null) {
|
|
96
|
-
if (startpage) {
|
|
97
|
-
addTabs({
|
|
98
|
-
title: "HOME",
|
|
99
|
-
key: "HOME",
|
|
100
|
-
page: startpage,
|
|
101
|
-
noremove: true,
|
|
102
|
-
});
|
|
103
|
-
setCurrentTab({
|
|
104
|
-
title: "HOME",
|
|
105
|
-
key: "HOME",
|
|
106
|
-
page: startpage,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
91
|
if (user?.user_group?.group_section_start) {
|
|
110
92
|
setTopkey(user?.user_group?.group_section_start);
|
|
111
93
|
}
|
|
@@ -117,63 +99,49 @@ const TbProvider = ({ children }) => {
|
|
|
117
99
|
};
|
|
118
100
|
const logout = (force = false) => {
|
|
119
101
|
setloginUser(undefined);
|
|
120
|
-
|
|
121
|
-
|
|
102
|
+
setCurrentTabKey(undefined);
|
|
103
|
+
setTabKeys([]);
|
|
122
104
|
setTopkey("");
|
|
123
105
|
if (force)
|
|
124
106
|
window.location.reload();
|
|
125
107
|
};
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (gotab) {
|
|
147
|
-
addTabs(gotab);
|
|
148
|
-
}
|
|
149
|
-
const newtab = globalpages?.find((m) => {
|
|
150
|
-
return m.key === key;
|
|
151
|
-
});
|
|
152
|
-
// console.log(globalpages, newtab)
|
|
153
|
-
if (newtab) {
|
|
154
|
-
addTabs(newtab);
|
|
155
|
-
}
|
|
156
|
-
};
|
|
108
|
+
// const goTabKey = (key: string) => {
|
|
109
|
+
// let gotab;
|
|
110
|
+
// menupages?.menuSet.forEach((item: menuSetType) => {
|
|
111
|
+
// item.menuSetting.forEach((sub) => {
|
|
112
|
+
// sub.children?.forEach((page) => {
|
|
113
|
+
// if (page.tab.key === key) gotab = page;
|
|
114
|
+
// });
|
|
115
|
+
// });
|
|
116
|
+
// });
|
|
117
|
+
// if (gotab) {
|
|
118
|
+
// addTabKey(gotab);
|
|
119
|
+
// }
|
|
120
|
+
// const newtab = globalpages?.find((m) => {
|
|
121
|
+
// return m.key === key;
|
|
122
|
+
// });
|
|
123
|
+
// // console.log(globalpages, newtab)
|
|
124
|
+
// if (newtab) {
|
|
125
|
+
// addTabKey(newtab);
|
|
126
|
+
// }
|
|
127
|
+
// };
|
|
157
128
|
return (React.createElement(tbContext.Provider, { value: {
|
|
158
129
|
topkey,
|
|
159
130
|
setTopkey,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
131
|
+
tabKeys,
|
|
132
|
+
removeTabKey,
|
|
133
|
+
currentTabKey,
|
|
134
|
+
setCurrentTabKey,
|
|
135
|
+
addTabKey,
|
|
165
136
|
loginUser,
|
|
166
137
|
logout,
|
|
167
138
|
user,
|
|
168
|
-
|
|
169
|
-
|
|
139
|
+
startTabKey,
|
|
140
|
+
setStartTabKey,
|
|
170
141
|
SetWarning,
|
|
171
142
|
errMsg,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
addGlobalTabs,
|
|
175
|
-
setMenupages,
|
|
176
|
-
goTabs,
|
|
143
|
+
tabList,
|
|
144
|
+
setTabList,
|
|
177
145
|
} }, children));
|
|
178
146
|
};
|
|
179
147
|
const useTbState = () => {
|
|
@@ -223,7 +191,8 @@ var styles$8 = {"topframe":"top-module_topframe__LhKDg","top_left":"top-module_t
|
|
|
223
191
|
styleInject(css_248z$a);
|
|
224
192
|
|
|
225
193
|
const Top = ({ setting, top: { title = topbase.title, titleimage, topMenuSetting, menuStyle, imgstyle, titleStyle, topRight }, }) => {
|
|
226
|
-
const { logout, user,
|
|
194
|
+
const { logout, user, addTabKey, setCurrentTabKey } = useTbState();
|
|
195
|
+
const navigate = reactRouter.useNavigate();
|
|
227
196
|
const userTop = () => {
|
|
228
197
|
let topmenutable = [];
|
|
229
198
|
if (user?.user_group?.group_key === "master" || setting.islogin === false) {
|
|
@@ -243,12 +212,11 @@ const Top = ({ setting, top: { title = topbase.title, titleimage, topMenuSetting
|
|
|
243
212
|
};
|
|
244
213
|
return (React.createElement("div", { className: styles$8.topframe },
|
|
245
214
|
React.createElement("div", { className: styles$8.top_left, style: { cursor: "pointer" }, onClick: () => {
|
|
246
|
-
if (
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
});
|
|
215
|
+
if (setting?.startTabKey) {
|
|
216
|
+
addTabKey(setting?.startTabKey);
|
|
217
|
+
setCurrentTabKey(setting?.startTabKey);
|
|
218
|
+
navigate("/" + setting?.startTabKey);
|
|
219
|
+
}
|
|
252
220
|
console.log("home");
|
|
253
221
|
} },
|
|
254
222
|
titleimage ? React.createElement("img", { src: titleimage, className: styles$8.toplogo, alt: "logo", style: imgstyle }) : null,
|
|
@@ -296,7 +264,7 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
296
264
|
const { title, key, page } = tab;
|
|
297
265
|
const [hover, setHover] = React.useState(false);
|
|
298
266
|
const [subOpen, setSubOpen] = React.useState(false);
|
|
299
|
-
const {
|
|
267
|
+
const { addTabKey, currentTabKey, user } = useTbState();
|
|
300
268
|
const navigate = reactRouter.useNavigate();
|
|
301
269
|
React.useEffect(() => {
|
|
302
270
|
if (defalultOpen) {
|
|
@@ -323,18 +291,14 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
323
291
|
return usersubmenutable;
|
|
324
292
|
};
|
|
325
293
|
return (React.createElement("div", null,
|
|
326
|
-
React.createElement("div", { className: `${styles$9.nav_item} ${
|
|
294
|
+
React.createElement("div", { className: `${styles$9.nav_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`, onMouseEnter: () => {
|
|
327
295
|
setHover(true);
|
|
328
296
|
}, onMouseLeave: () => {
|
|
329
297
|
setHover(false);
|
|
330
298
|
}, onClick: () => {
|
|
331
299
|
setSubOpen((prev) => !prev);
|
|
332
|
-
if (hasPage &&
|
|
333
|
-
|
|
334
|
-
title,
|
|
335
|
-
key,
|
|
336
|
-
page,
|
|
337
|
-
});
|
|
300
|
+
if (hasPage && currentTabKey !== key) {
|
|
301
|
+
addTabKey(key);
|
|
338
302
|
navigate("/" + key);
|
|
339
303
|
}
|
|
340
304
|
// console.log(tabs)
|
|
@@ -347,19 +311,15 @@ const Menu = ({ menu_setting: { tab, icon, children, hasPage, defalultOpen }, op
|
|
|
347
311
|
const SubMenu = ({ menu_setting: { tab, icon, hasPage } }) => {
|
|
348
312
|
const { title, key, page } = tab;
|
|
349
313
|
const [hover, setHover] = React.useState(false);
|
|
350
|
-
const {
|
|
314
|
+
const { addTabKey, currentTabKey } = useTbState();
|
|
351
315
|
const navigate = reactRouter.useNavigate();
|
|
352
|
-
return (React.createElement("div", { className: `${styles$9.sub_item} ${
|
|
316
|
+
return (React.createElement("div", { className: `${styles$9.sub_item} ${currentTabKey === key ? styles$9.menu_select : hover ? styles$9.menu_hover : styles$9.menu_nomal}`, onMouseEnter: () => {
|
|
353
317
|
setHover(true);
|
|
354
318
|
}, onMouseLeave: () => {
|
|
355
319
|
setHover(false);
|
|
356
320
|
}, onClick: () => {
|
|
357
|
-
if (hasPage &&
|
|
358
|
-
|
|
359
|
-
title,
|
|
360
|
-
key,
|
|
361
|
-
page,
|
|
362
|
-
});
|
|
321
|
+
if (hasPage && currentTabKey !== key)
|
|
322
|
+
addTabKey(key);
|
|
363
323
|
navigate("/" + key);
|
|
364
324
|
// console.log(tabs)
|
|
365
325
|
} },
|
|
@@ -372,9 +332,10 @@ var styles$7 = {"bottom_item":"bottom-module_bottom_item__fac0H"};
|
|
|
372
332
|
styleInject(css_248z$9);
|
|
373
333
|
|
|
374
334
|
const Bottom = ({ bottom }) => {
|
|
375
|
-
const {
|
|
335
|
+
const { currentTabKey, user, tabList } = useTbState();
|
|
336
|
+
const tab = tabList.find((tab) => tab.key === currentTabKey);
|
|
376
337
|
return (React.createElement("div", { className: styles$7.bottom_item },
|
|
377
|
-
React.createElement("div", null,
|
|
338
|
+
React.createElement("div", null, tab?.title),
|
|
378
339
|
React.createElement("div", { style: { display: "flex", gap: 16 } },
|
|
379
340
|
React.createElement("div", null,
|
|
380
341
|
user?.user_name ?? "이름없음",
|
|
@@ -390,53 +351,44 @@ var styles$6 = {"tabFrame":"tabs-module_tabFrame__qyHsD","tab_item":"tabs-module
|
|
|
390
351
|
styleInject(css_248z$8);
|
|
391
352
|
|
|
392
353
|
const Tabs = ({ nav: { menuSet, openIcon, closeIcon } }) => {
|
|
393
|
-
const {
|
|
354
|
+
const { tabList, tabKeys, removeTabKey, setCurrentTabKey, addTabKey, currentTabKey } = useTbState();
|
|
394
355
|
const navigate = reactRouter.useNavigate();
|
|
395
356
|
const location = reactRouter.useLocation();
|
|
396
357
|
const findTabs = React.useCallback((pathKey) => {
|
|
397
358
|
// 1. 현재 열린 탭 중에 있는지 확인
|
|
398
|
-
const
|
|
399
|
-
if (
|
|
400
|
-
|
|
359
|
+
const existingTabKey = tabKeys.find((key) => key === pathKey);
|
|
360
|
+
if (existingTabKey) {
|
|
361
|
+
setCurrentTabKey(existingTabKey);
|
|
401
362
|
return;
|
|
402
363
|
}
|
|
403
364
|
// 2. 없다면, 전체 페이지 목록에서 찾아서 추가
|
|
404
365
|
let tabInfo;
|
|
405
366
|
// 2-1. 메뉴 페이지에서 찾기
|
|
406
367
|
menuSet.forEach((item) => {
|
|
407
|
-
|
|
408
|
-
if (
|
|
409
|
-
tabInfo =
|
|
410
|
-
else {
|
|
411
|
-
sub.children?.forEach((page) => {
|
|
412
|
-
if (page.tab.key === pathKey)
|
|
413
|
-
tabInfo = page;
|
|
414
|
-
});
|
|
415
|
-
}
|
|
368
|
+
tabList.forEach((tab) => {
|
|
369
|
+
if (tab.key === pathKey)
|
|
370
|
+
tabInfo = pathKey;
|
|
416
371
|
});
|
|
417
372
|
});
|
|
418
|
-
// 2-2. 전역 페이지에서 찾기 (메뉴에 없으면)
|
|
419
|
-
if (!tabInfo) {
|
|
420
|
-
tabInfo = globalpages?.find((m) => m.key === pathKey);
|
|
421
|
-
}
|
|
422
373
|
if (tabInfo) {
|
|
423
|
-
|
|
374
|
+
addTabKey(tabInfo);
|
|
424
375
|
}
|
|
425
|
-
}, [
|
|
376
|
+
}, [tabKeys]);
|
|
426
377
|
// 3. 페이지 로드 시 URL을 기반으로 currentTab을 설정하는 useEffect 추가
|
|
427
378
|
React.useEffect(() => {
|
|
428
379
|
const pathKey = location.pathname.substring(1); // 맨 앞의 '/' 제거
|
|
429
380
|
findTabs(pathKey);
|
|
430
381
|
}, []);
|
|
431
|
-
return (React.createElement("div", { className: styles$6.tabFrame },
|
|
432
|
-
|
|
382
|
+
return (React.createElement("div", { className: styles$6.tabFrame }, tabKeys?.map((key) => {
|
|
383
|
+
const tab = tabList.find((tab) => tab.key === key);
|
|
384
|
+
return (React.createElement("div", { key: key, className: `${styles$6.tab_item} ${currentTabKey === key ? styles$6.tab_select : styles$6.tab_normal}` },
|
|
433
385
|
React.createElement("div", { className: styles$6.tab_item_text, onClick: () => {
|
|
434
|
-
|
|
435
|
-
navigate("/" +
|
|
386
|
+
setCurrentTabKey(key);
|
|
387
|
+
navigate("/" + key);
|
|
436
388
|
// console.log('setCurrentTab', m)
|
|
437
|
-
} },
|
|
438
|
-
!
|
|
439
|
-
React.createElement("button", { className: styles$6.tab_x_button, onClick: () =>
|
|
389
|
+
} }, tab?.title),
|
|
390
|
+
!tab?.noremove && (React.createElement("div", { className: styles$6.tab_item_button },
|
|
391
|
+
React.createElement("button", { className: styles$6.tab_x_button, onClick: () => removeTabKey(key) }, "x")))));
|
|
440
392
|
})));
|
|
441
393
|
};
|
|
442
394
|
|
|
@@ -540,25 +492,32 @@ const NullPage = () => {
|
|
|
540
492
|
};
|
|
541
493
|
|
|
542
494
|
const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) => {
|
|
543
|
-
const { user,
|
|
495
|
+
const { user, errMsg, tabList, setTabList, startTabKey, setStartTabKey } = useTbState();
|
|
544
496
|
React.useEffect(() => {
|
|
545
|
-
if (
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
497
|
+
if (tabList.length === 0) {
|
|
498
|
+
let p_tabList = [];
|
|
499
|
+
nav.menuSet.forEach((item) => {
|
|
500
|
+
item.menuSetting.forEach((sub) => {
|
|
501
|
+
p_tabList.push(sub.tab);
|
|
502
|
+
sub.children?.forEach((page) => {
|
|
503
|
+
p_tabList.push(page.tab);
|
|
504
|
+
});
|
|
505
|
+
});
|
|
506
|
+
});
|
|
507
|
+
nav?.globalTabs?.forEach((item) => {
|
|
508
|
+
p_tabList.push(item);
|
|
509
|
+
});
|
|
510
|
+
setTabList(p_tabList);
|
|
557
511
|
}
|
|
558
|
-
}, [
|
|
512
|
+
}, [tabList]);
|
|
559
513
|
React.useEffect(() => {
|
|
560
514
|
if (!errMsg?.isPopup) ;
|
|
561
515
|
}, [errMsg]);
|
|
516
|
+
React.useEffect(() => {
|
|
517
|
+
if (!startTabKey && setting?.startTabKey) {
|
|
518
|
+
setStartTabKey(setting?.startTabKey);
|
|
519
|
+
}
|
|
520
|
+
}, [setting.startTabKey]);
|
|
562
521
|
const route = () => {
|
|
563
522
|
let route = [];
|
|
564
523
|
if (setting?.islogin) {
|
|
@@ -567,7 +526,7 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
567
526
|
element: setting?.loginpage ? setting.loginpage : React.createElement(LoginPage, null),
|
|
568
527
|
});
|
|
569
528
|
}
|
|
570
|
-
|
|
529
|
+
nav.globalTabs?.forEach((item) => {
|
|
571
530
|
route.push({
|
|
572
531
|
path: "/" + item.key,
|
|
573
532
|
element: item.page,
|
|
@@ -587,6 +546,11 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
587
546
|
});
|
|
588
547
|
});
|
|
589
548
|
});
|
|
549
|
+
// 일치하는 라우트가 없을 경우 메인으로 리다이렉트
|
|
550
|
+
route.push({
|
|
551
|
+
path: "*",
|
|
552
|
+
element: React.createElement(reactRouter.Navigate, { to: "/", replace: true }),
|
|
553
|
+
});
|
|
590
554
|
return route;
|
|
591
555
|
};
|
|
592
556
|
const router = React.useMemo(() => {
|
|
@@ -594,7 +558,7 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
594
558
|
return reactRouter.createHashRouter([
|
|
595
559
|
{
|
|
596
560
|
path: "/",
|
|
597
|
-
element: (React.createElement(MainLayout, { errMsg: errMsg,
|
|
561
|
+
element: (React.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom })),
|
|
598
562
|
children: route(),
|
|
599
563
|
errorElement: React.createElement(NullPage, null),
|
|
600
564
|
},
|
|
@@ -604,7 +568,7 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
604
568
|
return reactRouter.createBrowserRouter([
|
|
605
569
|
{
|
|
606
570
|
path: "/",
|
|
607
|
-
element: (React.createElement(MainLayout, { errMsg: errMsg,
|
|
571
|
+
element: (React.createElement(MainLayout, { errMsg: errMsg, setting: setting, top_banner: top_banner, nav: nav, user: user, top: top, bottom: bottom })),
|
|
608
572
|
children: route(),
|
|
609
573
|
errorElement: React.createElement(NullPage, null),
|
|
610
574
|
},
|
|
@@ -613,13 +577,7 @@ const TbFrame = ({ setting, top, bottom, nav, top_banner, hashmode = false, }) =
|
|
|
613
577
|
}, [hashmode, user]);
|
|
614
578
|
return React.createElement(reactRouter.RouterProvider, { router: router });
|
|
615
579
|
};
|
|
616
|
-
const MainLayout = ({ errMsg,
|
|
617
|
-
React.useCallback(() => {
|
|
618
|
-
if (startpage)
|
|
619
|
-
return setting?.loginpage ? setting.loginpage : React.createElement(LoginPage, null);
|
|
620
|
-
else
|
|
621
|
-
return null;
|
|
622
|
-
}, [setting?.loginpage, startpage]);
|
|
580
|
+
const MainLayout = ({ errMsg, setting, top_banner, nav, user, top, bottom, }) => {
|
|
623
581
|
const TOPBANNER = React.useCallback(() => {
|
|
624
582
|
return top_banner ? top_banner : null;
|
|
625
583
|
}, [top_banner]);
|
|
@@ -21223,7 +21181,7 @@ const readfileData = (file) => {
|
|
|
21223
21181
|
};
|
|
21224
21182
|
}
|
|
21225
21183
|
else {
|
|
21226
|
-
reject(
|
|
21184
|
+
reject("not_file");
|
|
21227
21185
|
}
|
|
21228
21186
|
});
|
|
21229
21187
|
};
|
|
@@ -21236,25 +21194,25 @@ const Files = (props) => {
|
|
|
21236
21194
|
return;
|
|
21237
21195
|
let init = props.initialValues[props.id];
|
|
21238
21196
|
if (init) {
|
|
21239
|
-
if (typeof init ===
|
|
21197
|
+
if (typeof init === "string") {
|
|
21240
21198
|
setFileList([
|
|
21241
21199
|
{
|
|
21242
21200
|
fileData: init,
|
|
21243
|
-
name:
|
|
21244
|
-
status:
|
|
21201
|
+
name: "",
|
|
21202
|
+
status: "done",
|
|
21245
21203
|
thumbUrl: init,
|
|
21246
|
-
uid: props.id
|
|
21247
|
-
}
|
|
21204
|
+
uid: props.id,
|
|
21205
|
+
},
|
|
21248
21206
|
]);
|
|
21249
21207
|
}
|
|
21250
21208
|
else
|
|
21251
21209
|
setFileList(init.map((i) => {
|
|
21252
21210
|
return {
|
|
21253
21211
|
fileData: i,
|
|
21254
|
-
name:
|
|
21255
|
-
status:
|
|
21212
|
+
name: "",
|
|
21213
|
+
status: "done",
|
|
21256
21214
|
thumbUrl: i,
|
|
21257
|
-
uid: props.id
|
|
21215
|
+
uid: props.id,
|
|
21258
21216
|
};
|
|
21259
21217
|
}));
|
|
21260
21218
|
}
|
|
@@ -21267,8 +21225,8 @@ const Files = (props) => {
|
|
|
21267
21225
|
onChange(fileList);
|
|
21268
21226
|
}
|
|
21269
21227
|
}, [fileList, props.count, onChange]);
|
|
21270
|
-
return (React.createElement(antd.Upload, { listType: props.listType, accept: props.listType ===
|
|
21271
|
-
removeIcon:
|
|
21228
|
+
return (React.createElement(antd.Upload, { listType: props.listType, accept: props.listType === "picture" ? "image/*" : "", fileList: fileList, showUploadList: {
|
|
21229
|
+
removeIcon: "x",
|
|
21272
21230
|
}, onRemove: (file) => {
|
|
21273
21231
|
const index = fileList.indexOf(file);
|
|
21274
21232
|
const newFileList = fileList.slice();
|
|
@@ -21285,17 +21243,18 @@ const Files = (props) => {
|
|
|
21285
21243
|
{
|
|
21286
21244
|
uid: file.uid,
|
|
21287
21245
|
name: file.name,
|
|
21288
|
-
status:
|
|
21246
|
+
status: "done",
|
|
21289
21247
|
fileData: fileData,
|
|
21290
|
-
thumbUrl: fileData
|
|
21291
|
-
|
|
21248
|
+
thumbUrl: fileData,
|
|
21249
|
+
file: file,
|
|
21250
|
+
},
|
|
21292
21251
|
]);
|
|
21293
21252
|
if (props.setImgCheck)
|
|
21294
21253
|
props.setImgCheck(true);
|
|
21295
21254
|
return false;
|
|
21296
21255
|
} }, fileList.length >= props.count ? null : (React.createElement(React.Fragment, null,
|
|
21297
21256
|
React.createElement(antd.Button, { icon: React.createElement(icons.UploadOutlined, null) }, "\uD30C\uC77C\uC120\uD0DD"),
|
|
21298
|
-
fileList.length === 0 ?
|
|
21257
|
+
fileList.length === 0 ? " 선택된 파일 없음" : null))));
|
|
21299
21258
|
};
|
|
21300
21259
|
|
|
21301
21260
|
/******************************************************************************
|