@tipp/ui 2.1.10 → 2.1.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.
Files changed (74) hide show
  1. package/dist/app/index.cjs.map +1 -1
  2. package/dist/app/index.js +10 -10
  3. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  4. package/dist/app/platform/edit-coaching-time.js +6 -6
  5. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  6. package/dist/app/platform/edit-service-type.js +6 -6
  7. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  8. package/dist/app/platform/goal-manage-card-edit.js +6 -6
  9. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  10. package/dist/app/platform/on-offline-radio-card.js +6 -6
  11. package/dist/app/platform/reservation-card.cjs.map +1 -1
  12. package/dist/app/platform/reservation-card.js +6 -6
  13. package/dist/app/platform/session-card.cjs.map +1 -1
  14. package/dist/app/platform/session-card.js +6 -6
  15. package/dist/app/platform/userInfos/coaching-customer-info/index.js +4 -4
  16. package/dist/chunk-3H5JZH44.js +192 -0
  17. package/dist/chunk-3H5JZH44.js.map +1 -0
  18. package/dist/chunk-3RNLOJ3Z.js +63 -0
  19. package/dist/chunk-3RNLOJ3Z.js.map +1 -0
  20. package/dist/chunk-535PWEKB.js +192 -0
  21. package/dist/chunk-535PWEKB.js.map +1 -0
  22. package/dist/chunk-B36RAS3U.js +37 -0
  23. package/dist/chunk-B36RAS3U.js.map +1 -0
  24. package/dist/chunk-BX5F5FIY.js +51 -0
  25. package/dist/chunk-BX5F5FIY.js.map +1 -0
  26. package/dist/chunk-CPH6OVGY.js +63 -0
  27. package/dist/chunk-CPH6OVGY.js.map +1 -0
  28. package/dist/chunk-ECOW2GOO.js +98 -0
  29. package/dist/chunk-ECOW2GOO.js.map +1 -0
  30. package/dist/chunk-GIRU6LCT.js +123 -0
  31. package/dist/chunk-GIRU6LCT.js.map +1 -0
  32. package/dist/chunk-JXNELVQI.js +144 -0
  33. package/dist/chunk-JXNELVQI.js.map +1 -0
  34. package/dist/chunk-K2MWDCUN.js +61 -0
  35. package/dist/chunk-K2MWDCUN.js.map +1 -0
  36. package/dist/chunk-K43UQM5K.js +29 -0
  37. package/dist/chunk-K43UQM5K.js.map +1 -0
  38. package/dist/chunk-K5YEAJYF.js +174 -0
  39. package/dist/chunk-K5YEAJYF.js.map +1 -0
  40. package/dist/chunk-LYSC27W7.js +145 -0
  41. package/dist/chunk-LYSC27W7.js.map +1 -0
  42. package/dist/chunk-MHQTP5GH.js +150 -0
  43. package/dist/chunk-MHQTP5GH.js.map +1 -0
  44. package/dist/chunk-OBR3PYFG.js +89 -0
  45. package/dist/chunk-OBR3PYFG.js.map +1 -0
  46. package/dist/chunk-OY7YLOWY.js +69 -0
  47. package/dist/chunk-OY7YLOWY.js.map +1 -0
  48. package/dist/chunk-SPKSNWII.js +101 -0
  49. package/dist/chunk-SPKSNWII.js.map +1 -0
  50. package/dist/chunk-VVMUR24Y.js +281 -0
  51. package/dist/chunk-VVMUR24Y.js.map +1 -0
  52. package/dist/chunk-WPLJHMMO.js +87 -0
  53. package/dist/chunk-WPLJHMMO.js.map +1 -0
  54. package/dist/chunk-WRTFAPEW.js +49 -0
  55. package/dist/chunk-WRTFAPEW.js.map +1 -0
  56. package/dist/chunk-WZBMMXTJ.js +59 -0
  57. package/dist/chunk-WZBMMXTJ.js.map +1 -0
  58. package/dist/chunk-XDVRMLAH.js +42 -0
  59. package/dist/chunk-XDVRMLAH.js.map +1 -0
  60. package/dist/chunk-XPKOBDJ7.js +43 -0
  61. package/dist/chunk-XPKOBDJ7.js.map +1 -0
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.css +1 -0
  64. package/dist/index.js +13 -13
  65. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +2 -2
  66. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +3 -3
  67. package/dist/molecules/curriculumV2/CurriculumContents/index.js +4 -4
  68. package/dist/molecules/curriculumV2/index.js +4 -4
  69. package/dist/molecules/expand-table/index.cjs.map +1 -1
  70. package/dist/molecules/expand-table/index.js +1 -1
  71. package/dist/molecules/index.cjs.map +1 -1
  72. package/dist/molecules/index.js +9 -9
  73. package/package.json +3 -3
  74. package/src/molecules/expand-table/index.tsx +1 -1
@@ -5,14 +5,13 @@ import "../../chunk-44Y6LSNA.js";
5
5
  import "../../chunk-4QWYV2QX.js";
6
6
  import "../../chunk-MDTIYQLE.js";
7
7
  import "../../chunk-KSS4FSJI.js";
8
- import "../../chunk-HNO5SCLZ.js";
9
- import "../../chunk-WDUSQ6HR.js";
10
8
  import "../../chunk-J5WASNFY.js";
11
9
  import "../../chunk-I24MOOUK.js";
12
10
  import "../../chunk-AS7ID74X.js";
13
- import "../../chunk-J27CSA2I.js";
14
- import "../../chunk-VTNGVFOL.js";
15
- import "../../chunk-QQ5DIV3E.js";
11
+ import "../../chunk-POJT5P6J.js";
12
+ import "../../chunk-EFB4UO4F.js";
13
+ import "../../chunk-TN63T2TG.js";
14
+ import "../../chunk-GJQDFBAF.js";
16
15
  import "../../chunk-D4WHIKQQ.js";
17
16
  import "../../chunk-JLNQOXEV.js";
18
17
  import "../../chunk-CHGLVZEQ.js";
@@ -24,7 +23,6 @@ import "../../chunk-PNYMKF4M.js";
24
23
  import "../../chunk-KCDVUSEZ.js";
25
24
  import "../../chunk-KQG5B26J.js";
26
25
  import "../../chunk-637SZITH.js";
27
- import "../../chunk-GJQDFBAF.js";
28
26
  import "../../chunk-EBGKFGME.js";
29
27
  import "../../chunk-HYMGXDPL.js";
30
28
  import "../../chunk-OHA7BIRX.js";
@@ -36,6 +34,8 @@ import "../../chunk-HFXODPRR.js";
36
34
  import "../../chunk-YHT7DP6A.js";
37
35
  import "../../chunk-YN4SHJ2O.js";
38
36
  import "../../chunk-M6VXNQHU.js";
37
+ import "../../chunk-3H5JZH44.js";
38
+ import "../../chunk-WDUSQ6HR.js";
39
39
  import "../../chunk-AI7EZKUN.js";
40
40
  import "../../chunk-WK7R5OB3.js";
41
41
  import "../../chunk-5VWEW4M2.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CoachingCustomerInfo
3
- } from "../../../../chunk-2T7JCRER.js";
4
- import {
5
- CoachingCustomerInfoSmall
6
- } from "../../../../chunk-M7C3ID36.js";
3
+ } from "../../../../chunk-FEGPGG5R.js";
7
4
  import {
8
5
  CoachingCustomerInfoLarge
9
6
  } from "../../../../chunk-3XXTLSLM.js";
10
7
  import {
11
8
  CoachingCustomerInfoMedium
12
9
  } from "../../../../chunk-LD4TLEWG.js";
10
+ import {
11
+ CoachingCustomerInfoSmall
12
+ } from "../../../../chunk-M7C3ID36.js";
13
13
  import "../../../../chunk-I2ZOU3LX.js";
14
14
  import "../../../../chunk-A6W2ZWYA.js";
15
15
  import "../../../../chunk-QD5ZSFPG.js";
@@ -0,0 +1,192 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-WDUSQ6HR.js";
4
+ import {
5
+ Spinner
6
+ } from "./chunk-FR2GDOU2.js";
7
+ import {
8
+ Pagination
9
+ } from "./chunk-V3T3QLRZ.js";
10
+ import {
11
+ Typo
12
+ } from "./chunk-LH57PIY2.js";
13
+ import {
14
+ Flex
15
+ } from "./chunk-25HMMI7R.js";
16
+ import {
17
+ TriangleArrowDownIcon
18
+ } from "./chunk-2TPQQBUQ.js";
19
+ import {
20
+ TriangleArrowUpIcon
21
+ } from "./chunk-PVL7SJYR.js";
22
+
23
+ // src/molecules/expand-table/index.tsx
24
+ import {
25
+ flexRender,
26
+ getCoreRowModel,
27
+ useReactTable,
28
+ getSortedRowModel,
29
+ createColumnHelper,
30
+ getPaginationRowModel
31
+ } from "@tanstack/react-table";
32
+ import { useCallback, useMemo, useState } from "react";
33
+ import { jsx, jsxs } from "react/jsx-runtime";
34
+ function ExpandTable(props) {
35
+ const {
36
+ data,
37
+ columns,
38
+ ExpandComp,
39
+ placeholder,
40
+ onRowClick,
41
+ tableStyle,
42
+ showPagination = true,
43
+ isLoading,
44
+ pageIndex = 0,
45
+ pageSize = 10,
46
+ siblingCount = 2,
47
+ getRowStyle,
48
+ getCellStyle
49
+ } = props;
50
+ const defaultAlign = "left";
51
+ const [pagination, setPagination] = useState({
52
+ pageIndex: pageIndex || 0,
53
+ pageSize: pageSize || 9999
54
+ });
55
+ const [sorting, setSorting] = useState([]);
56
+ const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({
57
+ data: data || [],
58
+ columns,
59
+ getCoreRowModel: getCoreRowModel(),
60
+ getSortedRowModel: getSortedRowModel(),
61
+ state: {
62
+ sorting,
63
+ pagination
64
+ },
65
+ onSortingChange: setSorting,
66
+ getPaginationRowModel: getPaginationRowModel(),
67
+ onPaginationChange: setPagination
68
+ });
69
+ const gridTemplateColumns = useMemo(() => {
70
+ return columns.map((col) => {
71
+ var _a;
72
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize) return `minmax(${col.size || 50}px, 1fr)`;
73
+ return `${col.size || 150}px`;
74
+ }).join(" ");
75
+ }, [columns]);
76
+ const rowModels = getRowModel();
77
+ const onChangePagination = useCallback(
78
+ (page) => {
79
+ setPageIndex(page - 1);
80
+ },
81
+ [setPageIndex]
82
+ );
83
+ const helpCompRender = useCallback(
84
+ (rowLength) => {
85
+ if (isLoading) {
86
+ return /* @__PURE__ */ jsx(
87
+ Flex,
88
+ {
89
+ align: "center",
90
+ height: "100%",
91
+ justify: "center",
92
+ p: "5",
93
+ width: "100%",
94
+ children: /* @__PURE__ */ jsx(Spinner, {})
95
+ }
96
+ );
97
+ }
98
+ if (rowLength === 0) {
99
+ return /* @__PURE__ */ jsx("div", { className: "tr", children: /* @__PURE__ */ jsx(Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ jsx(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder");
100
+ }
101
+ return null;
102
+ },
103
+ [isLoading, placeholder]
104
+ );
105
+ const pageCount = useMemo(() => {
106
+ if (!data) return 0;
107
+ return Math.ceil(data.length / pageSize);
108
+ }, [data, pageSize]);
109
+ return /* @__PURE__ */ jsxs("div", { className: "expand-table-wrapper", children: [
110
+ /* @__PURE__ */ jsxs("div", { className: "expand-table", style: tableStyle, children: [
111
+ /* @__PURE__ */ jsx("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(
112
+ "div",
113
+ {
114
+ className: "tr",
115
+ style: { gridTemplateColumns },
116
+ children: headerGroup.headers.map((header) => {
117
+ var _a;
118
+ const sortable = header.column.getCanSort();
119
+ const sortedState = header.column.getIsSorted();
120
+ const justifyContent = ((_a = header.column.columnDef.meta) == null ? void 0 : _a.align) || defaultAlign;
121
+ return /* @__PURE__ */ jsx("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ jsxs(
122
+ "button",
123
+ {
124
+ onClick: header.column.getToggleSortingHandler(),
125
+ style: sortable ? { cursor: "pointer" } : { cursor: "default" },
126
+ type: "button",
127
+ children: [
128
+ /* @__PURE__ */ jsx(Typo, { as: "div", variant: "body", children: flexRender(
129
+ header.column.columnDef.header,
130
+ header.getContext()
131
+ ) }),
132
+ sortable ? /* @__PURE__ */ jsxs(
133
+ Flex,
134
+ {
135
+ direction: "column",
136
+ style: { marginLeft: "var(--space-2)" },
137
+ children: [
138
+ /* @__PURE__ */ jsx(
139
+ TriangleArrowUpIcon,
140
+ {
141
+ color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsx(
145
+ TriangleArrowDownIcon,
146
+ {
147
+ color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
148
+ }
149
+ )
150
+ ]
151
+ }
152
+ ) : null
153
+ ]
154
+ }
155
+ ) }, header.id);
156
+ })
157
+ },
158
+ headerGroup.id
159
+ )) }),
160
+ /* @__PURE__ */ jsx("div", { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
161
+ return /* @__PURE__ */ jsx(
162
+ Row,
163
+ {
164
+ ExpandComp,
165
+ defaultAlign,
166
+ getCellStyle,
167
+ getRowStyle,
168
+ gridTemplateColumns,
169
+ onRowClick,
170
+ row
171
+ },
172
+ `row_${row.id}`
173
+ );
174
+ }) })
175
+ ] }),
176
+ showPagination ? /* @__PURE__ */ jsx(Flex, { justify: "end", pt: "3", width: "100%", children: /* @__PURE__ */ jsx(
177
+ Pagination,
178
+ {
179
+ count: pageCount,
180
+ onChange: onChangePagination,
181
+ page: pagination.pageIndex + 1,
182
+ siblingCount
183
+ }
184
+ ) }) : null
185
+ ] });
186
+ }
187
+
188
+ export {
189
+ createColumnHelper,
190
+ ExpandTable
191
+ };
192
+ //# sourceMappingURL=chunk-3H5JZH44.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/index.tsx"],"sourcesContent":["import type {\n ColumnDef,\n SortingState,\n RowData,\n Row as RowType,\n PaginationState,\n} from '@tanstack/react-table';\nimport type { CSSProperties } from 'react';\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getSortedRowModel,\n createColumnHelper,\n getPaginationRowModel,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Flex, Pagination, Spinner, Typo } from '../../atoms';\nimport { TriangleArrowDownIcon } from '../../icons/down';\nimport { TriangleArrowUpIcon } from '../../icons/up';\nimport { Row, type ExpandComp, type OnRowClick } from './row';\n\nexport type { ExpandComp, OnRowClick, ColumnDef, RowType as Row };\nexport { createColumnHelper };\n\nexport interface ExpandTableProps<Datum extends RowData> {\n /** 렌더할 데이터 배열 */\n data?: Datum[];\n /** 테이블 컬럼의 메타 데이터 */\n columns: ColumnDef<Datum>[];\n /** Row의 open이 true인 경우 하단의 collapse에 렌더할 컴포넌트 */\n ExpandComp?: ExpandComp<Datum>;\n /** 데이테가 없을 시 화면에 표시할 컴포넌트 */\n placeholder?: React.ReactNode;\n /** 행 클릭 시 실행할 콜백 */\n onRowClick?: OnRowClick<Datum>;\n getRowStyle?: (data: Datum) => CSSProperties;\n getCellStyle?: (data: Datum) => CSSProperties;\n tableStyle?: CSSProperties;\n isLoading?: boolean;\n\n /** pagination - 표시 유무, 기본값 true */\n showPagination?: boolean;\n /** pagination - 현재 선택된 페이지, 0부터 시작 */\n pageIndex?: number;\n /** pagination - 한 페이지에 표시될 컬럼 개수, 기본값 10 */\n pageSize?: number;\n /** pagination - */\n siblingCount?: number;\n}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const {\n data,\n columns,\n ExpandComp,\n placeholder,\n onRowClick,\n tableStyle,\n showPagination = true,\n isLoading,\n pageIndex = 0,\n pageSize = 10,\n siblingCount = 2,\n getRowStyle,\n getCellStyle,\n } = props;\n const defaultAlign = 'left';\n const [pagination, setPagination] = useState<PaginationState>({\n pageIndex: pageIndex || 0,\n pageSize: pageSize || 9999,\n });\n\n const [sorting, setSorting] = useState<SortingState>([]);\n const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({\n data: data || [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n pagination,\n },\n onSortingChange: setSorting,\n getPaginationRowModel: getPaginationRowModel(),\n onPaginationChange: setPagination,\n });\n\n const gridTemplateColumns = useMemo<string>(() => {\n return columns\n .map((col) => {\n if (col.meta?.autoSize) return `minmax(${col.size || 50}px, 1fr)`;\n return `${col.size || 150}px`;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n const onChangePagination = useCallback(\n (page: number) => {\n setPageIndex(page - 1);\n },\n [setPageIndex]\n );\n\n const helpCompRender = useCallback(\n (rowLength: number) => {\n if (isLoading) {\n return (\n <Flex\n align=\"center\"\n height=\"100%\"\n justify=\"center\"\n p=\"5\"\n width=\"100%\"\n >\n <Spinner />\n </Flex>\n );\n }\n if (rowLength === 0) {\n return (\n <div className=\"tr\" key=\"expand_placeholder\">\n <Flex align=\"center\" justify=\"center\">\n {placeholder || (\n <Typo color=\"gray\" mb=\"6\" mt=\"6\" variant=\"body\">\n 데이터가 없습니다\n </Typo>\n )}\n </Flex>\n </div>\n );\n }\n return null;\n },\n [isLoading, placeholder]\n );\n\n const pageCount = useMemo(() => {\n if (!data) return 0;\n return Math.ceil(data.length / pageSize);\n }, [data, pageSize]);\n\n return (\n <div className=\"expand-table-wrapper\">\n <div className=\"expand-table\" style={tableStyle}>\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div\n className=\"tr\"\n key={headerGroup.id}\n style={{ gridTemplateColumns }}\n >\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const justifyContent =\n header.column.columnDef.meta?.align || defaultAlign;\n\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <button\n onClick={header.column.getToggleSortingHandler()}\n style={\n sortable ? { cursor: 'pointer' } : { cursor: 'default' }\n }\n type=\"button\"\n >\n <Typo as=\"div\" variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n {sortable ? (\n <Flex\n direction=\"column\"\n style={{ marginLeft: 'var(--space-2)' }}\n >\n <TriangleArrowUpIcon\n color={\n sortedState === 'asc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n <TriangleArrowDownIcon\n color={\n sortedState === 'desc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n </Flex>\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"tbody\">\n {/* 조건에 따라 placeholder 또는 loading 렌더*/}\n {helpCompRender(rowModels.rows.length) ||\n rowModels.rows.map((row) => {\n return (\n <Row\n ExpandComp={ExpandComp}\n defaultAlign={defaultAlign}\n getCellStyle={getCellStyle}\n getRowStyle={getRowStyle}\n gridTemplateColumns={gridTemplateColumns}\n key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n {showPagination ? (\n <Flex justify=\"end\" pt=\"3\" width=\"100%\">\n <Pagination\n count={pageCount}\n onChange={onChangePagination}\n page={pagination.pageIndex + 1}\n siblingCount={siblingCount}\n />\n </Flex>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,63 @@
1
+ import {
2
+ review_question_footer_default
3
+ } from "./chunk-JLNQOXEV.js";
4
+ import {
5
+ review_question_header_default
6
+ } from "./chunk-CHGLVZEQ.js";
7
+ import {
8
+ review_question_layout_default
9
+ } from "./chunk-YVMPMKUV.js";
10
+ import {
11
+ review_question_body_default
12
+ } from "./chunk-OY7YLOWY.js";
13
+
14
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.tsx
15
+ import { jsx } from "react/jsx-runtime";
16
+ function ReviewQuestion({
17
+ question,
18
+ index,
19
+ total,
20
+ answer,
21
+ error,
22
+ onChange,
23
+ onNext,
24
+ onPrev,
25
+ isLast,
26
+ isNextDisabled,
27
+ onSubmit,
28
+ isLoading
29
+ }) {
30
+ return /* @__PURE__ */ jsx(
31
+ review_question_layout_default,
32
+ {
33
+ Body: /* @__PURE__ */ jsx(
34
+ review_question_body_default,
35
+ {
36
+ answer,
37
+ error,
38
+ onChange,
39
+ question
40
+ }
41
+ ),
42
+ Footer: /* @__PURE__ */ jsx(
43
+ review_question_footer_default,
44
+ {
45
+ index,
46
+ isLast,
47
+ isLoading,
48
+ isNextButtonDisabled: isNextDisabled,
49
+ onNext,
50
+ onPrev,
51
+ onSubmit
52
+ }
53
+ ),
54
+ Header: /* @__PURE__ */ jsx(review_question_header_default, { index, total })
55
+ }
56
+ );
57
+ }
58
+ var ReviewQuestion_default = ReviewQuestion;
59
+
60
+ export {
61
+ ReviewQuestion_default
62
+ };
63
+ //# sourceMappingURL=chunk-3RNLOJ3Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.tsx"],"sourcesContent":["import React from 'react';\nimport type { ReviewQuestionElement } from '@/types/curriculum.type';\nimport ReviewQuestionLayout from './review-question-layout';\nimport ReviewQuestionHeader from './review-question-header';\nimport ReviewQuestionFooter from './review-question-footer';\nimport ReviewQuestionBody from './review-question-body';\n\ninterface ReviewQuestionProps {\n question: ReviewQuestionElement;\n index: number;\n total: number;\n answer: string;\n error?: string;\n onChange: (value: string) => void;\n onNext: () => void;\n onPrev: () => void;\n isLast: boolean;\n isNextDisabled?: boolean;\n onSubmit: () => void;\n isLoading?: boolean;\n}\n\nfunction ReviewQuestion({\n question,\n index,\n total,\n answer,\n error,\n onChange,\n onNext,\n onPrev,\n isLast,\n isNextDisabled,\n onSubmit,\n isLoading,\n}: ReviewQuestionProps): React.ReactElement {\n \n return (\n <ReviewQuestionLayout\n Body={\n <ReviewQuestionBody\n answer={answer}\n error={error}\n onChange={onChange}\n question={question}\n />\n }\n Footer={\n <ReviewQuestionFooter\n index={index}\n isLast={isLast}\n isLoading={isLoading}\n isNextButtonDisabled={isNextDisabled}\n onNext={onNext}\n onPrev={onPrev}\n onSubmit={onSubmit}\n />\n }\n Header={<ReviewQuestionHeader index={index} total={total} />}\n />\n );\n}\n\nexport default ReviewQuestion;\n"],"mappings":";;;;;;;;;;;;;;AAwCQ;AAlBR,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4C;AAE1C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MAEF,QACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,sBAAsB;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MAEF,QAAQ,oBAAC,kCAAqB,OAAc,OAAc;AAAA;AAAA,EAC5D;AAEJ;AAEA,IAAO,yBAAQ;","names":[]}
@@ -0,0 +1,192 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-WDUSQ6HR.js";
4
+ import {
5
+ Spinner
6
+ } from "./chunk-FR2GDOU2.js";
7
+ import {
8
+ Pagination
9
+ } from "./chunk-V3T3QLRZ.js";
10
+ import {
11
+ Typo
12
+ } from "./chunk-LH57PIY2.js";
13
+ import {
14
+ Flex
15
+ } from "./chunk-25HMMI7R.js";
16
+ import {
17
+ TriangleArrowUpIcon
18
+ } from "./chunk-PVL7SJYR.js";
19
+ import {
20
+ TriangleArrowDownIcon
21
+ } from "./chunk-2TPQQBUQ.js";
22
+
23
+ // src/molecules/expand-table/index.tsx
24
+ import {
25
+ flexRender,
26
+ getCoreRowModel,
27
+ useReactTable,
28
+ getSortedRowModel,
29
+ createColumnHelper,
30
+ getPaginationRowModel
31
+ } from "@tanstack/react-table";
32
+ import { useCallback, useMemo, useState } from "react";
33
+ import { jsx, jsxs } from "react/jsx-runtime";
34
+ function ExpandTable(props) {
35
+ const {
36
+ data,
37
+ columns,
38
+ ExpandComp,
39
+ placeholder,
40
+ onRowClick,
41
+ tableStyle,
42
+ showPagination = true,
43
+ isLoading,
44
+ pageIndex = 0,
45
+ pageSize = 10,
46
+ siblingCount = 2,
47
+ getRowStyle,
48
+ getCellStyle
49
+ } = props;
50
+ const defaultAlign = "left";
51
+ const [pagination, setPagination] = useState({
52
+ pageIndex: pageIndex || 0,
53
+ pageSize: pageSize || 9999
54
+ });
55
+ const [sorting, setSorting] = useState([]);
56
+ const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({
57
+ data: data || [],
58
+ columns,
59
+ getCoreRowModel: getCoreRowModel(),
60
+ getSortedRowModel: getSortedRowModel(),
61
+ state: {
62
+ sorting,
63
+ pagination
64
+ },
65
+ onSortingChange: setSorting,
66
+ getPaginationRowModel: getPaginationRowModel(),
67
+ onPaginationChange: setPagination
68
+ });
69
+ const gridTemplateColumns = useMemo(() => {
70
+ return columns.map((col) => {
71
+ var _a;
72
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize) return `minmax(${col.size || 50}px, 1fr)`;
73
+ return `${col.size || 150}px`;
74
+ }).join(" ");
75
+ }, [columns]);
76
+ const rowModels = getRowModel();
77
+ const onChangePagination = useCallback(
78
+ (page) => {
79
+ setPageIndex(page - 1);
80
+ },
81
+ [setPageIndex]
82
+ );
83
+ const helpCompRender = useCallback(
84
+ (rowLength) => {
85
+ if (isLoading) {
86
+ return /* @__PURE__ */ jsx(
87
+ Flex,
88
+ {
89
+ align: "center",
90
+ height: "100%",
91
+ justify: "center",
92
+ p: "5",
93
+ width: "100%",
94
+ children: /* @__PURE__ */ jsx(Spinner, {})
95
+ }
96
+ );
97
+ }
98
+ if (rowLength === 0) {
99
+ return /* @__PURE__ */ jsx("div", { className: "tr", children: /* @__PURE__ */ jsx(Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ jsx(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder");
100
+ }
101
+ return null;
102
+ },
103
+ [isLoading, placeholder]
104
+ );
105
+ const pageCount = useMemo(() => {
106
+ if (!data) return 0;
107
+ return Math.ceil(data.length / pageSize);
108
+ }, [data, pageSize]);
109
+ return /* @__PURE__ */ jsxs("div", { className: "expand-table-wrapper", children: [
110
+ /* @__PURE__ */ jsxs("div", { className: "expand-table", style: tableStyle, children: [
111
+ /* @__PURE__ */ jsx("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(
112
+ "div",
113
+ {
114
+ className: "tr",
115
+ style: { gridTemplateColumns },
116
+ children: headerGroup.headers.map((header) => {
117
+ var _a;
118
+ const sortable = header.column.getCanSort();
119
+ const sortedState = header.column.getIsSorted();
120
+ const justifyContent = ((_a = header.column.columnDef.meta) == null ? void 0 : _a.align) || defaultAlign;
121
+ return /* @__PURE__ */ jsx("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ jsxs(
122
+ "button",
123
+ {
124
+ onClick: header.column.getToggleSortingHandler(),
125
+ style: sortable ? { cursor: "pointer" } : { cursor: "default" },
126
+ type: "button",
127
+ children: [
128
+ /* @__PURE__ */ jsx(Typo, { as: "div", variant: "body", children: flexRender(
129
+ header.column.columnDef.header,
130
+ header.getContext()
131
+ ) }),
132
+ sortable ? /* @__PURE__ */ jsxs(
133
+ Flex,
134
+ {
135
+ direction: "column",
136
+ style: { marginLeft: "var(--space-2)" },
137
+ children: [
138
+ /* @__PURE__ */ jsx(
139
+ TriangleArrowUpIcon,
140
+ {
141
+ color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsx(
145
+ TriangleArrowDownIcon,
146
+ {
147
+ color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
148
+ }
149
+ )
150
+ ]
151
+ }
152
+ ) : null
153
+ ]
154
+ }
155
+ ) }, header.id);
156
+ })
157
+ },
158
+ headerGroup.id
159
+ )) }),
160
+ /* @__PURE__ */ jsx("div", { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
161
+ return /* @__PURE__ */ jsx(
162
+ Row,
163
+ {
164
+ ExpandComp,
165
+ defaultAlign,
166
+ getCellStyle,
167
+ getRowStyle,
168
+ gridTemplateColumns,
169
+ onRowClick,
170
+ row
171
+ },
172
+ `row_${row.id}`
173
+ );
174
+ }) })
175
+ ] }),
176
+ showPagination ? /* @__PURE__ */ jsx(Flex, { justify: "end", pt: "3", width: "100%", children: /* @__PURE__ */ jsx(
177
+ Pagination,
178
+ {
179
+ count: pageCount,
180
+ onChange: onChangePagination,
181
+ page: pagination.pageIndex + 1,
182
+ siblingCount
183
+ }
184
+ ) }) : null
185
+ ] });
186
+ }
187
+
188
+ export {
189
+ createColumnHelper,
190
+ ExpandTable
191
+ };
192
+ //# sourceMappingURL=chunk-535PWEKB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/index.tsx"],"sourcesContent":["import type {\n ColumnDef,\n SortingState,\n RowData,\n Row as RowType,\n PaginationState,\n} from '@tanstack/react-table';\nimport type { CSSProperties } from 'react';\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getSortedRowModel,\n createColumnHelper,\n getPaginationRowModel,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Flex, Pagination, Spinner, Typo } from '../../atoms';\nimport { TriangleArrowDownIcon } from '../../icons/down';\nimport { TriangleArrowUpIcon } from '../../icons/up';\nimport { Row, type ExpandComp, type OnRowClick } from './row';\n\nexport type { ExpandComp, OnRowClick, ColumnDef, RowType as Row };\nexport { createColumnHelper };\n\nexport interface ExpandTableProps<Datum extends RowData> {\n /** 렌더할 데이터 배열 */\n data?: Datum[];\n /** 테이블 컬럼의 메타 데이터 */\n columns: ColumnDef<Datum>[];\n /** Row의 open이 true인 경우 하단의 collapse에 렌더할 컴포넌트 */\n ExpandComp?: ExpandComp<Datum>;\n /** 데이테가 없을 시 화면에 표시할 컴포넌트 */\n placeholder?: React.ReactNode;\n /** 행 클릭 시 실행할 콜백 */\n onRowClick?: OnRowClick<Datum>;\n getRowStyle?: (data: Datum) => CSSProperties;\n getCellStyle?: (data: Datum) => CSSProperties;\n tableStyle?: CSSProperties;\n isLoading?: boolean;\n\n /** pagination - 표시 유무, 기본값 true */\n showPagination?: boolean;\n /** pagination - 현재 선택된 페이지, 0부터 시작 */\n pageIndex?: number;\n /** pagination - 한 페이지에 표시될 컬럼 개수, 기본값 10 */\n pageSize?: number;\n /** pagination - */\n siblingCount?: number;\n}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const {\n data,\n columns,\n ExpandComp,\n placeholder,\n onRowClick,\n tableStyle,\n showPagination = true,\n isLoading,\n pageIndex = 0,\n pageSize = 10,\n siblingCount = 2,\n getRowStyle,\n getCellStyle,\n } = props;\n const defaultAlign = 'left';\n const [pagination, setPagination] = useState<PaginationState>({\n pageIndex: pageIndex || 0,\n pageSize: pageSize || 9999,\n });\n\n const [sorting, setSorting] = useState<SortingState>([]);\n const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({\n data: data || [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n pagination,\n },\n onSortingChange: setSorting,\n getPaginationRowModel: getPaginationRowModel(),\n onPaginationChange: setPagination,\n });\n\n const gridTemplateColumns = useMemo<string>(() => {\n return columns\n .map((col) => {\n if (col.meta?.autoSize) return `minmax(${col.size || 50}px, 1fr)`;\n return `${col.size || 150}px`;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n const onChangePagination = useCallback(\n (page: number) => {\n setPageIndex(page - 1);\n },\n [setPageIndex]\n );\n\n const helpCompRender = useCallback(\n (rowLength: number) => {\n if (isLoading) {\n return (\n <Flex\n align=\"center\"\n height=\"100%\"\n justify=\"center\"\n p=\"5\"\n width=\"100%\"\n >\n <Spinner />\n </Flex>\n );\n }\n if (rowLength === 0) {\n return (\n <div className=\"tr\" key=\"expand_placeholder\">\n <Flex align=\"center\" justify=\"center\">\n {placeholder || (\n <Typo color=\"gray\" mb=\"6\" mt=\"6\" variant=\"body\">\n 데이터가 없습니다\n </Typo>\n )}\n </Flex>\n </div>\n );\n }\n return null;\n },\n [isLoading, placeholder]\n );\n\n const pageCount = useMemo(() => {\n if (!data) return 0;\n return Math.ceil(data.length / pageSize);\n }, [data, pageSize]);\n\n return (\n <div className=\"expand-table-wrapper\">\n <div className=\"expand-table\" style={tableStyle}>\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div\n className=\"tr\"\n key={headerGroup.id}\n style={{ gridTemplateColumns }}\n >\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const justifyContent =\n header.column.columnDef.meta?.align || defaultAlign;\n\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <button\n onClick={header.column.getToggleSortingHandler()}\n style={\n sortable ? { cursor: 'pointer' } : { cursor: 'default' }\n }\n type=\"button\"\n >\n <Typo as=\"div\" variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n {sortable ? (\n <Flex\n direction=\"column\"\n style={{ marginLeft: 'var(--space-2)' }}\n >\n <TriangleArrowUpIcon\n color={\n sortedState === 'asc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n <TriangleArrowDownIcon\n color={\n sortedState === 'desc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n </Flex>\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"tbody\">\n {/* 조건에 따라 placeholder 또는 loading 렌더*/}\n {helpCompRender(rowModels.rows.length) ||\n rowModels.rows.map((row) => {\n return (\n <Row\n ExpandComp={ExpandComp}\n defaultAlign={defaultAlign}\n getCellStyle={getCellStyle}\n getRowStyle={getRowStyle}\n gridTemplateColumns={gridTemplateColumns}\n key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n {showPagination ? (\n <Flex justify=\"end\" pt=\"3\" width=\"100%\">\n <Pagination\n count={pageCount}\n onChange={onChangePagination}\n page={pagination.pageIndex + 1}\n siblingCount={siblingCount}\n />\n </Flex>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAgB,aAAa,SAAS,gBAAgB;AAuG1C,cA2DU,YA3DV;AApEL,SAAS,YACd,OACiB;AACjB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,eAAe;AAAA,IACf;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,eAAe;AACrB,QAAM,CAAC,YAAY,aAAa,IAAI,SAA0B;AAAA,IAC5D,WAAW,aAAa;AAAA,IACxB,UAAU,YAAY;AAAA,EACxB,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,CAAC,CAAC;AACvD,QAAM,EAAE,aAAa,iBAAiB,aAAa,IAAI,cAAc;AAAA,IACnE,MAAM,QAAQ,CAAC;AAAA,IACf;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,kBAAkB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,uBAAuB,sBAAsB;AAAA,IAC7C,oBAAoB;AAAA,EACtB,CAAC;AAED,QAAM,sBAAsB,QAAgB,MAAM;AAChD,WAAO,QACJ,IAAI,CAAC,QAAQ;AA5FpB;AA6FQ,WAAI,SAAI,SAAJ,mBAAU,SAAU,QAAO,UAAU,IAAI,QAAQ,EAAE;AACvD,aAAO,GAAG,IAAI,QAAQ,GAAG;AAAA,IAC3B,CAAC,EACA,KAAK,GAAG;AAAA,EACb,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,YAAY;AAE9B,QAAM,qBAAqB;AAAA,IACzB,CAAC,SAAiB;AAChB,mBAAa,OAAO,CAAC;AAAA,IACvB;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,cAAsB;AACrB,UAAI,WAAW;AACb,eACE;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,GAAE;AAAA,YACF,OAAM;AAAA,YAEN,8BAAC,WAAQ;AAAA;AAAA,QACX;AAAA,MAEJ;AACA,UAAI,cAAc,GAAG;AACnB,eACE,oBAAC,SAAI,WAAU,MACb,8BAAC,QAAK,OAAM,UAAS,SAAQ,UAC1B,yBACC,oBAAC,QAAK,OAAM,QAAO,IAAG,KAAI,IAAG,KAAI,SAAQ,QAAO,+DAEhD,GAEJ,KAPsB,oBAQxB;AAAA,MAEJ;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,WAAW;AAAA,EACzB;AAEA,QAAM,YAAY,QAAQ,MAAM;AAC9B,QAAI,CAAC,KAAM,QAAO;AAClB,WAAO,KAAK,KAAK,KAAK,SAAS,QAAQ;AAAA,EACzC,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,SACE,qBAAC,SAAI,WAAU,wBACf;AAAA,yBAAC,SAAI,WAAU,gBAAe,OAAO,YACnC;AAAA,0BAAC,SAAI,WAAU,SACZ,0BAAgB,EAAE,IAAI,CAAC,gBACtB;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UAEV,OAAO,EAAE,oBAAoB;AAAA,UAE5B,sBAAY,QAAQ,IAAI,CAAC,WAAW;AA5JjD;AA6Jc,kBAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,kBAAM,cAAc,OAAO,OAAO,YAAY;AAC9C,kBAAM,mBACJ,YAAO,OAAO,UAAU,SAAxB,mBAA8B,UAAS;AAEzC,mBACE,oBAAC,SAAI,WAAW,GAAG,cAAc,OAC/B;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,OAAO,OAAO,wBAAwB;AAAA,gBAC/C,OACE,WAAW,EAAE,QAAQ,UAAU,IAAI,EAAE,QAAQ,UAAU;AAAA,gBAEzD,MAAK;AAAA,gBAEL;AAAA,sCAAC,QAAK,IAAG,OAAM,SAAQ,QACpB;AAAA,oBACC,OAAO,OAAO,UAAU;AAAA,oBACxB,OAAO,WAAW;AAAA,kBACpB,GACF;AAAA,kBACC,WACC;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAO,EAAE,YAAY,iBAAiB;AAAA,sBAEtC;AAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OACE,gBAAgB,QACZ,mBACA;AAAA;AAAA,wBAER;AAAA,wBACA;AAAA,0BAAC;AAAA;AAAA,4BACC,OACE,gBAAgB,SACZ,mBACA;AAAA;AAAA,wBAER;AAAA;AAAA;AAAA,kBACF,IACE;AAAA;AAAA;AAAA,YACN,KAnC2C,OAAO,EAoCpD;AAAA,UAEJ,CAAC;AAAA;AAAA,QAhDI,YAAY;AAAA,MAiDnB,CACD,GACH;AAAA,MACA,oBAAC,SAAI,WAAU,SAEZ,yBAAe,UAAU,KAAK,MAAM,KACnC,UAAU,KAAK,IAAI,CAAC,QAAQ;AAC1B,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YAEA;AAAA,YACA;AAAA;AAAA,UAFK,OAAO,IAAI,EAAE;AAAA,QAGpB;AAAA,MAEJ,CAAC,GACL;AAAA,OACF;AAAA,IACG,iBACG,oBAAC,QAAK,SAAQ,OAAM,IAAG,KAAI,OAAM,QAC/B;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,MAAM,WAAW,YAAY;AAAA,QAC7B;AAAA;AAAA,IACF,GACF,IACE;AAAA,KACR;AAEJ;","names":[]}
@@ -0,0 +1,37 @@
1
+ import {
2
+ ReviewQuestionContentHeader
3
+ } from "./chunk-XPKOBDJ7.js";
4
+ import {
5
+ RadioGroup
6
+ } from "./chunk-6DJOIRMF.js";
7
+ import {
8
+ Card
9
+ } from "./chunk-HEDMSFPW.js";
10
+ import {
11
+ Flex
12
+ } from "./chunk-25HMMI7R.js";
13
+
14
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.tsx
15
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
+ function ReviewQuestionSatisfisRadio(props) {
17
+ var _a, _b, _c;
18
+ const { question, answer, onChange } = props;
19
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
20
+ /* @__PURE__ */ jsx(Card, { size: "2", children: /* @__PURE__ */ jsx(
21
+ ReviewQuestionContentHeader,
22
+ {
23
+ icon: question.icon,
24
+ question: (_a = question.question) != null ? _a : "\uC774\uBC88 \uD559\uC2B5\uC5D0 \uB300\uD55C \uC804\uBC18\uC801\uC778 \uB9CC\uC871\uB3C4\uB97C \uC54C\uB824\uC8FC\uC138\uC694.",
25
+ title: (_b = question.title) != null ? _b : "\uB9CC\uC871\uB3C4 \uC870\uC0AC",
26
+ type: question.type
27
+ }
28
+ ) }),
29
+ /* @__PURE__ */ jsx(RadioGroup.Root, { color: "iris", mt: "3", onValueChange: onChange, value: answer, children: /* @__PURE__ */ jsx(Flex, { direction: "column", gap: "2", children: (_c = question.options) == null ? void 0 : _c.map((option) => /* @__PURE__ */ jsx(RadioGroup.Item, { value: String(option.value), children: option.label }, option.value)) }) })
30
+ ] });
31
+ }
32
+ var review_question_satisfaction_option_default = ReviewQuestionSatisfisRadio;
33
+
34
+ export {
35
+ review_question_satisfaction_option_default
36
+ };
37
+ //# sourceMappingURL=chunk-B36RAS3U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.tsx"],"sourcesContent":["import React from 'react';\nimport { Card, Flex, RadioGroup } from '@/atoms';\nimport { type CurriculumReviewQuestionSatisfactionOption } from '@/types/curriculumContents.type';\nimport { ReviewQuestionContentHeader } from './review-comp';\n\ninterface ReviewQuestionSatisfactionOptionProps {\n question: CurriculumReviewQuestionSatisfactionOption;\n answer: string;\n error?: string;\n onChange: (value: string) => void;\n}\n\nfunction ReviewQuestionSatisfisRadio(\n props: ReviewQuestionSatisfactionOptionProps\n): React.ReactNode {\n const { question, answer, onChange } = props;\n \n return (\n <>\n <Card size=\"2\">\n <ReviewQuestionContentHeader\n icon={question.icon}\n question={\n question.question ??\n '이번 학습에 대한 전반적인 만족도를 알려주세요.'\n }\n title={question.title ?? '만족도 조사'}\n type={question.type}\n />\n </Card>\n <RadioGroup.Root color=\"iris\" mt=\"3\" onValueChange={onChange} value={answer}>\n <Flex direction=\"column\" gap=\"2\">\n {question.options?.map((option) => (\n <RadioGroup.Item key={option.value} value={String(option.value)}>\n {option.label}\n </RadioGroup.Item>\n ))}\n </Flex>\n </RadioGroup.Root>\n </>\n );\n}\n\nexport default ReviewQuestionSatisfisRadio;\n"],"mappings":";;;;;;;;;;;;;;AAkBI,mBAEI,KAFJ;AANJ,SAAS,4BACP,OACiB;AAdnB;AAeE,QAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AAEvC,SACE,iCACE;AAAA,wBAAC,QAAK,MAAK,KACT;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,SAAS;AAAA,QACf,WACE,cAAS,aAAT,YACA;AAAA,QAEF,QAAO,cAAS,UAAT,YAAkB;AAAA,QACzB,MAAM,SAAS;AAAA;AAAA,IACjB,GACF;AAAA,IACA,oBAAC,WAAW,MAAX,EAAgB,OAAM,QAAO,IAAG,KAAI,eAAe,UAAU,OAAO,QACnE,8BAAC,QAAK,WAAU,UAAS,KAAI,KAC1B,yBAAS,YAAT,mBAAkB,IAAI,CAAC,WACtB,oBAAC,WAAW,MAAX,EAAmC,OAAO,OAAO,OAAO,KAAK,GAC3D,iBAAO,SADY,OAAO,KAE7B,IAEJ,GACF;AAAA,KACF;AAEJ;AAEA,IAAO,8CAAQ;","names":[]}
@@ -0,0 +1,51 @@
1
+ import {
2
+ curriculum_sidebar_item_wrapper_default
3
+ } from "./chunk-LRKARLHL.js";
4
+ import {
5
+ section_item_default
6
+ } from "./chunk-K43UQM5K.js";
7
+ import {
8
+ section_title_default
9
+ } from "./chunk-HFXODPRR.js";
10
+ import {
11
+ getCurriculumIconColor
12
+ } from "./chunk-ECOW2GOO.js";
13
+ import {
14
+ __spreadProps,
15
+ __spreadValues
16
+ } from "./chunk-2NMEKWO5.js";
17
+
18
+ // src/molecules/curriculumV2/CurriculumSidebar/sidebar-item.tsx
19
+ import { jsx } from "react/jsx-runtime";
20
+ function SidebarItem({ item, selectedIndex, setSelectedIndex, index, done }) {
21
+ if (item.type === "sectionTitle") {
22
+ return /* @__PURE__ */ jsx(section_title_default, __spreadValues({}, item), item.uuid);
23
+ }
24
+ const isSelected = selectedIndex === index;
25
+ return /* @__PURE__ */ jsx(
26
+ curriculum_sidebar_item_wrapper_default,
27
+ {
28
+ index,
29
+ isSelected,
30
+ onClick: () => {
31
+ setSelectedIndex(index);
32
+ },
33
+ children: /* @__PURE__ */ jsx(
34
+ section_item_default,
35
+ __spreadProps(__spreadValues({}, item), {
36
+ color: getCurriculumIconColor({
37
+ done,
38
+ selected: isSelected
39
+ })
40
+ })
41
+ )
42
+ },
43
+ item.uuid
44
+ );
45
+ }
46
+ var sidebar_item_default = SidebarItem;
47
+
48
+ export {
49
+ sidebar_item_default
50
+ };
51
+ //# sourceMappingURL=chunk-BX5F5FIY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumSidebar/sidebar-item.tsx"],"sourcesContent":["import type { CurriculumListContents } from '@/types/curriculum.type'; \nimport { getCurriculumIconColor } from '../../../utils/curriculum.utils';\nimport SectionTitle from './Items/section-title';\nimport CurriculumSidebarItemWrapper from './Items/curriculum-sidebar-item-wrapper';\nimport SectionCommonItem from './Items/section-item';\n\n\ninterface SidebarItemProps {\n item: CurriculumListContents;\n selectedIndex: number;\n setSelectedIndex: (index: number) => void;\n index: number;\n done: boolean;\n}\n\nfunction SidebarItem({item, selectedIndex, setSelectedIndex, index, done}: SidebarItemProps): React.ReactNode {\n \n \n if (item.type === 'sectionTitle') {\n return <SectionTitle key={item.uuid} {...item} />;\n }\n const isSelected = selectedIndex === index;\n\n return (\n <CurriculumSidebarItemWrapper\n index={index}\n isSelected={isSelected}\n key={item.uuid}\n onClick={() => {\n setSelectedIndex(index);\n }}\n >\n <SectionCommonItem\n {...item}\n color={getCurriculumIconColor({\n done,\n selected: isSelected,\n })}\n />\n </CurriculumSidebarItemWrapper>\n );\n }\n\nexport default SidebarItem;"],"mappings":";;;;;;;;;;;;;;;;;;AAmBe;AAJf,SAAS,YAAY,EAAC,MAAM,eAAe,kBAAkB,OAAO,KAAI,GAAsC;AAG5G,MAAI,KAAK,SAAS,gBAAgB;AAC5B,WAAO,oBAAC,0CAAiC,OAAf,KAAK,IAAgB;AAAA,EACjD;AACA,QAAM,aAAa,kBAAkB;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MAEA,SAAS,MAAM;AACb,yBAAiB,KAAK;AAAA,MACxB;AAAA,MAEA;AAAA,QAAC;AAAA,yCACK,OADL;AAAA,UAEC,OAAO,uBAAuB;AAAA,YAC5B;AAAA,YACA,UAAU;AAAA,UACZ,CAAC;AAAA;AAAA,MACH;AAAA;AAAA,IAXK,KAAK;AAAA,EAYZ;AAEJ;AAEJ,IAAO,uBAAQ;","names":[]}