@tipp/ui 2.3.11 → 2.3.12
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/app/index.cjs +42 -39
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +23 -23
- package/dist/app/platform/edit-coaching-time.cjs +15 -12
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +19 -19
- package/dist/app/platform/edit-service-type.cjs +10 -7
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +19 -19
- package/dist/app/platform/goal-manage-card-edit.cjs +12 -9
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +19 -19
- package/dist/app/platform/on-offline-radio-card.cjs +34 -31
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +19 -19
- package/dist/app/platform/reservation-card.cjs +17 -14
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +19 -19
- package/dist/app/platform/session-card.cjs +21 -18
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +19 -19
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +4 -4
- package/dist/chunk-2QFLNAGL.js +100 -0
- package/dist/chunk-2QFLNAGL.js.map +1 -0
- package/dist/chunk-3FKAH2RB.js +105 -0
- package/dist/chunk-3FKAH2RB.js.map +1 -0
- package/dist/chunk-3OCAVV5Z.js +151 -0
- package/dist/chunk-3OCAVV5Z.js.map +1 -0
- package/dist/chunk-3PE6OFB3.js +70 -0
- package/dist/chunk-3PE6OFB3.js.map +1 -0
- package/dist/chunk-3QNIJCKK.js +98 -0
- package/dist/chunk-3QNIJCKK.js.map +1 -0
- package/dist/chunk-4OFVNWKB.js +100 -0
- package/dist/chunk-4OFVNWKB.js.map +1 -0
- package/dist/chunk-4SSWZQPC.js +89 -0
- package/dist/chunk-4SSWZQPC.js.map +1 -0
- package/dist/chunk-5JUYOJVM.js +77 -0
- package/dist/chunk-5JUYOJVM.js.map +1 -0
- package/dist/chunk-5SECMWKA.js +196 -0
- package/dist/chunk-5SECMWKA.js.map +1 -0
- package/dist/chunk-65FJZWXV.js +49 -0
- package/dist/chunk-65FJZWXV.js.map +1 -0
- package/dist/chunk-7UUHYDMJ.js +43 -0
- package/dist/chunk-7UUHYDMJ.js.map +1 -0
- package/dist/chunk-B5W5HY62.js +196 -0
- package/dist/chunk-B5W5HY62.js.map +1 -0
- package/dist/chunk-B63TOIOA.js +29 -0
- package/dist/chunk-B63TOIOA.js.map +1 -0
- package/dist/chunk-DTUYT5S2.js +98 -0
- package/dist/chunk-DTUYT5S2.js.map +1 -0
- package/dist/chunk-EI232M7E.js +196 -0
- package/dist/chunk-EI232M7E.js.map +1 -0
- package/dist/chunk-FDJPEXOU.js +222 -0
- package/dist/chunk-FDJPEXOU.js.map +1 -0
- package/dist/chunk-FGBFER5X.js +196 -0
- package/dist/chunk-FGBFER5X.js.map +1 -0
- package/dist/chunk-FNRYQLCC.js +64 -0
- package/dist/chunk-FNRYQLCC.js.map +1 -0
- package/dist/chunk-G7EN5QQR.js +64 -0
- package/dist/chunk-G7EN5QQR.js.map +1 -0
- package/dist/chunk-GDCDEPJO.js +64 -0
- package/dist/chunk-GDCDEPJO.js.map +1 -0
- package/dist/chunk-I4OEBZDH.js +64 -0
- package/dist/chunk-I4OEBZDH.js.map +1 -0
- package/dist/chunk-I5NKMQOT.js +64 -0
- package/dist/chunk-I5NKMQOT.js.map +1 -0
- package/dist/chunk-J5IKAPJM.js +69 -0
- package/dist/chunk-J5IKAPJM.js.map +1 -0
- package/dist/chunk-JJQM3MW3.js +98 -0
- package/dist/chunk-JJQM3MW3.js.map +1 -0
- package/dist/chunk-JKJUBJ65.js +70 -0
- package/dist/chunk-JKJUBJ65.js.map +1 -0
- package/dist/chunk-KLIEFXWN.js +100 -0
- package/dist/chunk-KLIEFXWN.js.map +1 -0
- package/dist/chunk-NDC72OWR.js +37 -0
- package/dist/chunk-NDC72OWR.js.map +1 -0
- package/dist/chunk-NMGLSEZ3.js +152 -0
- package/dist/chunk-NMGLSEZ3.js.map +1 -0
- package/dist/chunk-NMKIFFKE.js +63 -0
- package/dist/chunk-NMKIFFKE.js.map +1 -0
- package/dist/chunk-OX4OPOPI.js +82 -0
- package/dist/chunk-OX4OPOPI.js.map +1 -0
- package/dist/chunk-POFUBAXM.js +77 -0
- package/dist/chunk-POFUBAXM.js.map +1 -0
- package/dist/chunk-QBBF5V24.js +70 -0
- package/dist/chunk-QBBF5V24.js.map +1 -0
- package/dist/chunk-QPTWBPAQ.js +87 -0
- package/dist/chunk-QPTWBPAQ.js.map +1 -0
- package/dist/chunk-R7NTFLYB.js +98 -0
- package/dist/chunk-R7NTFLYB.js.map +1 -0
- package/dist/chunk-RAK5LEBO.js +70 -0
- package/dist/chunk-RAK5LEBO.js.map +1 -0
- package/dist/chunk-RWXNQPE7.js +151 -0
- package/dist/chunk-RWXNQPE7.js.map +1 -0
- package/dist/chunk-SGJFPJMV.js +100 -0
- package/dist/chunk-SGJFPJMV.js.map +1 -0
- package/dist/chunk-SYUWHIFX.js +98 -0
- package/dist/chunk-SYUWHIFX.js.map +1 -0
- package/dist/chunk-TDBCQSTJ.js +61 -0
- package/dist/chunk-TDBCQSTJ.js.map +1 -0
- package/dist/chunk-TGCLWLPY.js +51 -0
- package/dist/chunk-TGCLWLPY.js.map +1 -0
- package/dist/chunk-UFWZAT6E.js +89 -0
- package/dist/chunk-UFWZAT6E.js.map +1 -0
- package/dist/chunk-VN7IU4XW.js +64 -0
- package/dist/chunk-VN7IU4XW.js.map +1 -0
- package/dist/chunk-W3NTNHA4.js +196 -0
- package/dist/chunk-W3NTNHA4.js.map +1 -0
- package/dist/chunk-XDPRIBTV.js +101 -0
- package/dist/chunk-XDPRIBTV.js.map +1 -0
- package/dist/chunk-XU7H43IG.js +196 -0
- package/dist/chunk-XU7H43IG.js.map +1 -0
- package/dist/chunk-ZFWZAZPG.js +153 -0
- package/dist/chunk-ZFWZAZPG.js.map +1 -0
- package/dist/index.cjs +136 -89
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +4 -2
- package/dist/index.js +40 -40
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +7 -7
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs +54 -17
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +2 -2
- package/dist/molecules/curriculumV2/curriculum-context.cjs +29 -21
- package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-context.d.cts +7 -1
- package/dist/molecules/curriculumV2/curriculum-context.d.ts +7 -1
- package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +2 -2
- package/dist/molecules/curriculumV2/index.cjs +85 -38
- package/dist/molecules/curriculumV2/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/index.js +16 -16
- package/dist/molecules/index.cjs +115 -68
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.js +33 -33
- package/package.json +3 -3
- package/src/molecules/curriculumV2/CurriculumSidebar/index.tsx +47 -13
- package/src/molecules/curriculumV2/curriculum-context.tsx +62 -39
package/dist/molecules/index.js
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import "../chunk-QDXZVPRR.js";
|
|
2
|
+
import {
|
|
3
|
+
ExpandTable,
|
|
4
|
+
createColumnHelper
|
|
5
|
+
} from "../chunk-ZBZ7IGBT.js";
|
|
6
|
+
import "../chunk-JCG2AUFJ.js";
|
|
2
7
|
import "../chunk-AS7ID74X.js";
|
|
3
8
|
import {
|
|
4
9
|
CurriculumBody
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-I5NKMQOT.js";
|
|
11
|
+
import "../chunk-XU7H43IG.js";
|
|
12
|
+
import "../chunk-QGKQ3IX7.js";
|
|
13
|
+
import {
|
|
14
|
+
CurriculumSidebar
|
|
15
|
+
} from "../chunk-R7NTFLYB.js";
|
|
16
|
+
import "../chunk-KTUCYAG7.js";
|
|
17
|
+
import "../chunk-4TST4UK5.js";
|
|
18
|
+
import "../chunk-WS7IOHVK.js";
|
|
19
|
+
import "../chunk-6L4OTKID.js";
|
|
20
|
+
import "../chunk-SDEDXT7A.js";
|
|
21
|
+
import "../chunk-4SSWZQPC.js";
|
|
8
22
|
import "../chunk-W3TY3SYU.js";
|
|
9
23
|
import "../chunk-QIRUYN3K.js";
|
|
10
24
|
import "../chunk-BUZDDAS6.js";
|
|
@@ -15,44 +29,27 @@ import "../chunk-VREM33BW.js";
|
|
|
15
29
|
import "../chunk-AQVIQODP.js";
|
|
16
30
|
import "../chunk-WHZZKXOD.js";
|
|
17
31
|
import "../chunk-YT4LGWIY.js";
|
|
18
|
-
import "../chunk-PYGTM7ML.js";
|
|
19
32
|
import "../chunk-JNYTH4BZ.js";
|
|
33
|
+
import "../chunk-PYGTM7ML.js";
|
|
20
34
|
import "../chunk-GMKRNFH5.js";
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import {
|
|
23
|
-
CurriculumSidebar
|
|
24
|
-
} from "../chunk-Y724ZBAT.js";
|
|
25
|
-
import "../chunk-KTUCYAG7.js";
|
|
26
|
-
import "../chunk-4TST4UK5.js";
|
|
27
|
-
import "../chunk-WS7IOHVK.js";
|
|
28
|
-
import "../chunk-6L4OTKID.js";
|
|
29
|
-
import "../chunk-SDEDXT7A.js";
|
|
30
|
-
import {
|
|
31
|
-
ExpandTable,
|
|
32
|
-
createColumnHelper
|
|
33
|
-
} from "../chunk-ZBZ7IGBT.js";
|
|
34
|
-
import "../chunk-JCG2AUFJ.js";
|
|
35
|
-
import "../chunk-LHKGSKKG.js";
|
|
36
|
-
import {
|
|
37
|
-
DatePickerButton
|
|
38
|
-
} from "../chunk-I46J2XHG.js";
|
|
39
|
-
import {
|
|
40
|
-
DatePicker
|
|
41
|
-
} from "../chunk-FVTBDVT4.js";
|
|
35
|
+
import "../chunk-RAK5LEBO.js";
|
|
42
36
|
import {
|
|
43
37
|
CurriculumSubNav
|
|
44
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-2QFLNAGL.js";
|
|
45
39
|
import {
|
|
46
40
|
CurriculumProvider,
|
|
47
41
|
useCurriculumContext
|
|
48
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-ZFWZAZPG.js";
|
|
49
43
|
import {
|
|
50
44
|
CurriculumV2Layout
|
|
51
45
|
} from "../chunk-CQSM6JCO.js";
|
|
52
|
-
import "../chunk-JF7JAMOQ.js";
|
|
53
46
|
import {
|
|
54
|
-
|
|
55
|
-
} from "../chunk-
|
|
47
|
+
DatePickerButton
|
|
48
|
+
} from "../chunk-I46J2XHG.js";
|
|
49
|
+
import {
|
|
50
|
+
DatePicker
|
|
51
|
+
} from "../chunk-FVTBDVT4.js";
|
|
52
|
+
import "../chunk-JF7JAMOQ.js";
|
|
56
53
|
import {
|
|
57
54
|
Stepper
|
|
58
55
|
} from "../chunk-IPEAJLS3.js";
|
|
@@ -67,9 +64,6 @@ import "../chunk-NRPDVI76.js";
|
|
|
67
64
|
import "../chunk-2BPFXK4L.js";
|
|
68
65
|
import "../chunk-NWJSLIQ3.js";
|
|
69
66
|
import "../chunk-BXX3B3E4.js";
|
|
70
|
-
import {
|
|
71
|
-
DynamicFormResponseItem
|
|
72
|
-
} from "../chunk-QTQKJ4A2.js";
|
|
73
67
|
import {
|
|
74
68
|
DynamicForm,
|
|
75
69
|
createYupValidation
|
|
@@ -91,6 +85,9 @@ import {
|
|
|
91
85
|
OneOnOneGuideList,
|
|
92
86
|
oneOnOneNoteTextReplacer
|
|
93
87
|
} from "../chunk-O5MYSBA3.js";
|
|
88
|
+
import {
|
|
89
|
+
RadioButtonCard
|
|
90
|
+
} from "../chunk-CSKNBWPB.js";
|
|
94
91
|
import {
|
|
95
92
|
DotNavigation
|
|
96
93
|
} from "../chunk-IJOOKMKQ.js";
|
|
@@ -100,6 +97,9 @@ import {
|
|
|
100
97
|
import {
|
|
101
98
|
DynamicFormField
|
|
102
99
|
} from "../chunk-T4HTYL5M.js";
|
|
100
|
+
import {
|
|
101
|
+
DynamicFormResponseItem
|
|
102
|
+
} from "../chunk-QTQKJ4A2.js";
|
|
103
103
|
import "../chunk-FR2GDOU2.js";
|
|
104
104
|
import "../chunk-5ZITU5L7.js";
|
|
105
105
|
import "../chunk-5XYPLDI5.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tipp/ui",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.12",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"ts-node": "^10.9.2",
|
|
59
59
|
"tsup": "^8.0.2",
|
|
60
60
|
"typescript": "^5.0.0",
|
|
61
|
-
"@tipp/
|
|
62
|
-
"@tipp/
|
|
61
|
+
"@tipp/typescript-config": "1.0.1",
|
|
62
|
+
"@tipp/eslint-config": "1.1.2"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@types/react": "*",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
2
|
import { Box } from '@/atoms/box';
|
|
3
3
|
import { Grid } from '@/atoms/grid';
|
|
4
4
|
import { Tabs } from '@/atoms/tabs';
|
|
5
|
-
import { useCurriculumContext } from '../curriculum-context';
|
|
5
|
+
import { useCurriculumContext } from '../curriculum-context';
|
|
6
6
|
import SidebarItem from './sidebar-item';
|
|
7
7
|
|
|
8
8
|
const TAB_LIST = [
|
|
@@ -11,17 +11,38 @@ const TAB_LIST = [
|
|
|
11
11
|
value: 'curriculum',
|
|
12
12
|
},
|
|
13
13
|
];
|
|
14
|
+
|
|
15
|
+
const TABS_LIST_STYLE: React.CSSProperties = {
|
|
16
|
+
padding: '0 var(--space-3)',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const TABS_CONTENT_STYLE: React.CSSProperties = {
|
|
20
|
+
position: 'absolute',
|
|
21
|
+
height: '100%',
|
|
22
|
+
width: '100%',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
|
|
14
26
|
export function CurriculumSidebar(): React.ReactNode {
|
|
15
|
-
const {
|
|
16
|
-
|
|
27
|
+
const {
|
|
28
|
+
curriculum,
|
|
29
|
+
selectedIndex,
|
|
30
|
+
setSelectedIndex,
|
|
31
|
+
scrollAreaRef,
|
|
32
|
+
curriculumCompleteMap,
|
|
33
|
+
customTabs,
|
|
34
|
+
} = useCurriculumContext();
|
|
17
35
|
const list = curriculum.contents.list;
|
|
18
|
-
|
|
36
|
+
|
|
37
|
+
const tabList = useMemo(() => {
|
|
38
|
+
return [...TAB_LIST, ...(customTabs ?? [])];
|
|
39
|
+
}, [customTabs]);
|
|
19
40
|
|
|
20
41
|
return (
|
|
21
42
|
<Tabs.Root asChild defaultValue={TAB_LIST[0].value}>
|
|
22
43
|
<Grid height="100%" overflowY="auto" rows="auto 1fr " width="100%">
|
|
23
|
-
<Tabs.List style={
|
|
24
|
-
{
|
|
44
|
+
<Tabs.List style={TABS_LIST_STYLE}>
|
|
45
|
+
{tabList.map((tab) => (
|
|
25
46
|
<Tabs.Trigger key={tab.value} value={tab.value}>
|
|
26
47
|
{tab.label}
|
|
27
48
|
</Tabs.Trigger>
|
|
@@ -35,18 +56,31 @@ export function CurriculumSidebar(): React.ReactNode {
|
|
|
35
56
|
width="100%"
|
|
36
57
|
>
|
|
37
58
|
<Tabs.Content
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
height: '100%',
|
|
41
|
-
width: '100%',
|
|
42
|
-
}}
|
|
59
|
+
key={TAB_LIST[0].value}
|
|
60
|
+
style={TABS_CONTENT_STYLE}
|
|
43
61
|
value={TAB_LIST[0].value}
|
|
44
62
|
>
|
|
45
63
|
{list.map((item, index) => (
|
|
46
|
-
<SidebarItem
|
|
64
|
+
<SidebarItem
|
|
65
|
+
done={curriculumCompleteMap[item.uuid]}
|
|
66
|
+
index={index}
|
|
67
|
+
item={item}
|
|
68
|
+
key={item.uuid}
|
|
69
|
+
selectedIndex={selectedIndex}
|
|
70
|
+
setSelectedIndex={setSelectedIndex}
|
|
71
|
+
/>
|
|
47
72
|
))}
|
|
48
73
|
<Box height="150px" />
|
|
49
74
|
</Tabs.Content>
|
|
75
|
+
{customTabs?.map((tab) => (
|
|
76
|
+
<Tabs.Content
|
|
77
|
+
key={tab.value}
|
|
78
|
+
style={TABS_CONTENT_STYLE}
|
|
79
|
+
value={tab.value}
|
|
80
|
+
>
|
|
81
|
+
{tab.content}
|
|
82
|
+
</Tabs.Content>
|
|
83
|
+
))}
|
|
50
84
|
</Box>
|
|
51
85
|
</Grid>
|
|
52
86
|
</Tabs.Root>
|
|
@@ -7,11 +7,11 @@ import React, {
|
|
|
7
7
|
useRef,
|
|
8
8
|
useEffect,
|
|
9
9
|
} from 'react';
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
import { type CurriculumSectionTitleContents } from '@/types/curriculumContents.type';
|
|
11
|
+
import type {
|
|
12
|
+
Curriculum,
|
|
13
|
+
CurriculumListContents,
|
|
14
|
+
} from '@/types/curriculum.type';
|
|
15
15
|
|
|
16
16
|
export interface CurriculumContextValue {
|
|
17
17
|
curriculum: Curriculum;
|
|
@@ -48,45 +48,66 @@ export interface CurriculumContextValue {
|
|
|
48
48
|
/** 과제 완료 후 저장된 값 */
|
|
49
49
|
curriculumReviewAnswers: Record<string, string>;
|
|
50
50
|
/** 과제 완료 전 임시 저장된 값 */
|
|
51
|
-
tempCurriculumReviewAnswers: Record<string, string>;
|
|
51
|
+
tempCurriculumReviewAnswers: Record<string, string>;
|
|
52
52
|
/** 항목 수강 완료 여부 */
|
|
53
53
|
curriculumCompleteMap: Record<string, boolean>;
|
|
54
54
|
/** action Button 클릭시 호출 */
|
|
55
55
|
onActionButtonClick: (item: CurriculumListContents) => void;
|
|
56
56
|
/** 초기 선택 인덱스 */
|
|
57
57
|
initialSelectedIndex?: number;
|
|
58
|
+
/** 커스텀 탭 주입값 */
|
|
59
|
+
customTabs?: {
|
|
60
|
+
content: React.ReactElement;
|
|
61
|
+
label: string;
|
|
62
|
+
value: string;
|
|
63
|
+
}[];
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
const CurriculumContext = createContext<CurriculumContextValue | undefined>(
|
|
61
67
|
undefined
|
|
62
68
|
);
|
|
63
69
|
|
|
64
|
-
export interface CurriculumProviderProps
|
|
65
|
-
|
|
70
|
+
export interface CurriculumProviderProps
|
|
71
|
+
extends Pick<
|
|
72
|
+
CurriculumContextValue,
|
|
73
|
+
| 'customTabs'
|
|
74
|
+
| 'curriculum'
|
|
75
|
+
| 'onReviewSubmit'
|
|
76
|
+
| 'onReviewValueChange'
|
|
77
|
+
| 'curriculumReviewAnswers'
|
|
78
|
+
| 'tempCurriculumReviewAnswers'
|
|
79
|
+
| 'curriculumCompleteMap'
|
|
80
|
+
| 'onActionButtonClick'
|
|
81
|
+
| 'initialSelectedIndex'
|
|
82
|
+
> {
|
|
83
|
+
children: React.ReactNode;
|
|
66
84
|
onReviewValueChange: ({
|
|
67
85
|
reviewId,
|
|
68
86
|
answer,
|
|
69
87
|
}: {
|
|
70
88
|
reviewId: string;
|
|
71
89
|
answer: Record<string, string>;
|
|
72
|
-
}) => void;
|
|
90
|
+
}) => void;
|
|
73
91
|
|
|
74
92
|
/** 현재 화면에 표시 중인 컨텐츠 인덱스 변경 시 호출 */
|
|
75
93
|
onChangeSelectedContent?: (item: CurriculumListContents) => void;
|
|
76
94
|
}
|
|
77
95
|
|
|
78
|
-
export function CurriculumProvider(
|
|
96
|
+
export function CurriculumProvider(
|
|
97
|
+
props: CurriculumProviderProps
|
|
98
|
+
): React.ReactElement {
|
|
79
99
|
const {
|
|
80
100
|
children,
|
|
81
101
|
curriculum,
|
|
82
|
-
onReviewSubmit,
|
|
102
|
+
onReviewSubmit,
|
|
83
103
|
onReviewValueChange,
|
|
84
104
|
curriculumReviewAnswers,
|
|
85
|
-
tempCurriculumReviewAnswers,
|
|
105
|
+
tempCurriculumReviewAnswers,
|
|
86
106
|
curriculumCompleteMap,
|
|
87
107
|
onChangeSelectedContent,
|
|
88
108
|
onActionButtonClick,
|
|
89
|
-
initialSelectedIndex
|
|
109
|
+
initialSelectedIndex,
|
|
110
|
+
customTabs,
|
|
90
111
|
} = props;
|
|
91
112
|
const sidebarRef = useRef<HTMLDivElement>(null);
|
|
92
113
|
|
|
@@ -171,43 +192,45 @@ export function CurriculumProvider(props: CurriculumProviderProps): React.ReactE
|
|
|
171
192
|
[list, selectedIndexState]
|
|
172
193
|
);
|
|
173
194
|
|
|
174
|
-
const selectedItem = useMemo(()=>{
|
|
195
|
+
const selectedItem = useMemo(() => {
|
|
175
196
|
return list[selectedIndexState];
|
|
176
|
-
},[list,selectedIndexState])
|
|
197
|
+
}, [list, selectedIndexState]);
|
|
177
198
|
|
|
178
199
|
const selectedSectionTitle = useMemo(() => {
|
|
179
200
|
// selectedIndexState 이전 인덱스 중 가장 가까운 섹션 타이틀 찾기
|
|
180
201
|
const prevItems = list.slice(0, selectedIndexState).reverse();
|
|
181
202
|
return prevItems.find((item) => item.type === 'sectionTitle') ?? null;
|
|
182
203
|
}, [list, selectedIndexState]);
|
|
183
|
-
|
|
184
204
|
|
|
185
|
-
useEffect(()=>{
|
|
205
|
+
useEffect(() => {
|
|
186
206
|
onChangeSelectedContent?.(selectedItem);
|
|
187
|
-
|
|
188
|
-
},[selectedItem])
|
|
207
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- 트리거 최소화
|
|
208
|
+
}, [selectedItem]);
|
|
189
209
|
|
|
190
210
|
return (
|
|
191
|
-
<CurriculumContext.Provider
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
<CurriculumContext.Provider
|
|
212
|
+
value={{
|
|
213
|
+
curriculum,
|
|
214
|
+
scrollNavItem,
|
|
215
|
+
selectedIndex: selectedIndexState,
|
|
216
|
+
setSelectedIndex,
|
|
217
|
+
selectedId,
|
|
218
|
+
hasPrev,
|
|
219
|
+
hasNext,
|
|
220
|
+
selectPrev,
|
|
221
|
+
selectNext,
|
|
222
|
+
selectedSectionTitle,
|
|
223
|
+
selectedItem,
|
|
224
|
+
scrollAreaRef: sidebarRef,
|
|
225
|
+
onReviewSubmit,
|
|
226
|
+
onReviewValueChange,
|
|
227
|
+
curriculumReviewAnswers,
|
|
228
|
+
tempCurriculumReviewAnswers,
|
|
229
|
+
curriculumCompleteMap,
|
|
230
|
+
onActionButtonClick,
|
|
231
|
+
customTabs,
|
|
232
|
+
}}
|
|
233
|
+
>
|
|
211
234
|
{children}
|
|
212
235
|
</CurriculumContext.Provider>
|
|
213
236
|
);
|