@tipp/ui 2.10.4 → 2.10.6
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.map +1 -1
- package/dist/app/index.js +1 -1
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +1 -1
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +1 -1
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +1 -1
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +1 -1
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +1 -1
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +1 -1
- package/dist/app/roleplay/index.cjs +5 -25
- package/dist/app/roleplay/index.cjs.map +1 -1
- package/dist/app/roleplay/index.js +5 -5
- package/dist/app/roleplay/parts/content.cjs +5 -25
- package/dist/app/roleplay/parts/content.cjs.map +1 -1
- package/dist/app/roleplay/parts/content.js +4 -4
- package/dist/app/roleplay/parts/score-trend-section.cjs +4 -1
- package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -1
- package/dist/app/roleplay/parts/score-trend-section.js +2 -2
- package/dist/app/roleplay/parts/step-detail.cjs +1 -24
- package/dist/app/roleplay/parts/step-detail.cjs.map +1 -1
- package/dist/app/roleplay/parts/step-detail.js +1 -1
- package/dist/app/roleplay/rp-session-detail.cjs +5 -25
- package/dist/app/roleplay/rp-session-detail.cjs.map +1 -1
- package/dist/app/roleplay/rp-session-detail.js +5 -5
- package/dist/{chunk-UCTSCSQR.js → chunk-2IRG44IV.js} +2 -2
- package/dist/{chunk-L7ZHSQES.js → chunk-4LFGW6SO.js} +2 -2
- package/dist/{chunk-LGILQRJM.js → chunk-BTU3IMVG.js} +3 -3
- package/dist/{chunk-73PHGHPI.js → chunk-U4XM7VNI.js} +5 -2
- package/dist/chunk-U4XM7VNI.js.map +1 -0
- package/dist/{chunk-KJPBBBVK.js → chunk-YHA4OOND.js} +2 -25
- package/dist/chunk-YHA4OOND.js.map +1 -0
- package/dist/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/molecules/expand-table/index.cjs +4 -1
- package/dist/molecules/expand-table/index.cjs.map +1 -1
- package/dist/molecules/expand-table/index.js +1 -1
- package/dist/molecules/index.cjs +4 -1
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.js +1 -1
- package/package.json +1 -1
- package/src/app/roleplay/parts/step-detail.tsx +1 -24
- package/src/molecules/expand-table/index.tsx +3 -0
- package/dist/chunk-73PHGHPI.js.map +0 -1
- package/dist/chunk-KJPBBBVK.js.map +0 -1
- /package/dist/{chunk-UCTSCSQR.js.map → chunk-2IRG44IV.js.map} +0 -0
- /package/dist/{chunk-L7ZHSQES.js.map → chunk-4LFGW6SO.js.map} +0 -0
- /package/dist/{chunk-LGILQRJM.js.map → chunk-BTU3IMVG.js.map} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
RpSessionDetail
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-4LFGW6SO.js";
|
|
5
5
|
import "../../chunk-TFJJKM3W.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-BTU3IMVG.js";
|
|
7
|
+
import "../../chunk-YHA4OOND.js";
|
|
8
8
|
import "../../chunk-WVY3C64M.js";
|
|
9
9
|
import "../../chunk-5QIT4URV.js";
|
|
10
10
|
import "../../chunk-GA6W62DO.js";
|
|
11
11
|
import "../../chunk-VJREZH2Z.js";
|
|
12
12
|
import "../../chunk-2XDAK4B7.js";
|
|
13
|
-
import "../../chunk-
|
|
13
|
+
import "../../chunk-2IRG44IV.js";
|
|
14
14
|
import "../../chunk-DIISQDYA.js";
|
|
15
15
|
import "../../chunk-AS3JVRQ3.js";
|
|
16
16
|
import "../../chunk-RNGEVYY5.js";
|
|
@@ -22,7 +22,7 @@ import "../../chunk-PSINRHYW.js";
|
|
|
22
22
|
import "../../chunk-WSWSAPSS.js";
|
|
23
23
|
import "../../chunk-RXK3JM34.js";
|
|
24
24
|
import "../../chunk-5DRITHNR.js";
|
|
25
|
-
import "../../chunk-
|
|
25
|
+
import "../../chunk-U4XM7VNI.js";
|
|
26
26
|
import "../../chunk-JCG2AUFJ.js";
|
|
27
27
|
import "../../chunk-AS7ID74X.js";
|
|
28
28
|
import "../../chunk-AYWCLLQ2.js";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
ExpandTable,
|
|
7
7
|
createColumnHelper
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-U4XM7VNI.js";
|
|
9
9
|
import {
|
|
10
10
|
Heading
|
|
11
11
|
} from "./chunk-USGOLLYO.js";
|
|
@@ -239,4 +239,4 @@ export {
|
|
|
239
239
|
Section,
|
|
240
240
|
ScoreTrendSection
|
|
241
241
|
};
|
|
242
|
-
//# sourceMappingURL=chunk-
|
|
242
|
+
//# sourceMappingURL=chunk-2IRG44IV.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-TFJJKM3W.js";
|
|
4
4
|
import {
|
|
5
5
|
Content
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BTU3IMVG.js";
|
|
7
7
|
import {
|
|
8
8
|
Header
|
|
9
9
|
} from "./chunk-VJREZH2Z.js";
|
|
@@ -139,4 +139,4 @@ function RpSessionDetail({
|
|
|
139
139
|
export {
|
|
140
140
|
RpSessionDetail
|
|
141
141
|
};
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
142
|
+
//# sourceMappingURL=chunk-4LFGW6SO.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StepDetail
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YHA4OOND.js";
|
|
4
4
|
import {
|
|
5
5
|
StepSummary
|
|
6
6
|
} from "./chunk-WVY3C64M.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-2XDAK4B7.js";
|
|
13
13
|
import {
|
|
14
14
|
ScoreTrendSection
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-2IRG44IV.js";
|
|
16
16
|
import {
|
|
17
17
|
SectionNav
|
|
18
18
|
} from "./chunk-DIISQDYA.js";
|
|
@@ -128,4 +128,4 @@ function Content({
|
|
|
128
128
|
export {
|
|
129
129
|
Content
|
|
130
130
|
};
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-BTU3IMVG.js.map
|
|
@@ -98,7 +98,10 @@ function ExpandTable(props) {
|
|
|
98
98
|
},
|
|
99
99
|
onSortingChange: setSorting,
|
|
100
100
|
getPaginationRowModel: getPaginationRowModel(),
|
|
101
|
-
onPaginationChange: setPagination
|
|
101
|
+
onPaginationChange: setPagination,
|
|
102
|
+
// data 참조가 바뀔 때(예: 목록 refetch) tanstack이 pageIndex를 0으로
|
|
103
|
+
// 자동 리셋하지 않도록 끈다. 행 수정 저장 후에도 보던 페이지를 유지하기 위함.
|
|
104
|
+
autoResetPageIndex: false
|
|
102
105
|
});
|
|
103
106
|
const gridTemplateColumns = useMemo(() => {
|
|
104
107
|
return columns.map((col) => {
|
|
@@ -237,4 +240,4 @@ export {
|
|
|
237
240
|
createColumnHelper,
|
|
238
241
|
ExpandTable
|
|
239
242
|
};
|
|
240
|
-
//# sourceMappingURL=chunk-
|
|
243
|
+
//# sourceMappingURL=chunk-U4XM7VNI.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, useEffect, useMemo, useState } from 'react';\nimport { ScrollArea } from '@radix-ui/themes';\nimport { Flex } from '@/atoms/flex';\nimport { Pagination } from '@/atoms/pagination';\nimport { Spinner } from '@/atoms/spinner';\nimport { Typo } from '@/atoms/typo';\nimport { TriangleArrowDownIcon } from '../../icons/down';\nimport { TriangleArrowUpIcon } from '../../icons/up';\nimport { EmptyState } from '../empty-state';\nimport { Row, type ExpandComp, type OnRowClick } from './row';\n\nexport type { ExpandComp, OnRowClick, ColumnDef, RowType as Row };\nexport { createColumnHelper };\n\ntype Variant = 'card' | 'sprite' | 'sprite-border';\nconst sortButtonColorMapper: Record<\n Variant,\n { selected: string; unselected: string }\n> = {\n card: {\n selected: 'var(--iris-10)',\n unselected: 'var(--iris-6)',\n },\n sprite: {\n // selected: 'var(--gray-a12)',\n // unselected: 'var(--gray-a6)',\n selected: 'var(--iris-10)',\n unselected: 'var(--iris-6)',\n },\n 'sprite-border': {\n selected: 'var(--iris-10)',\n unselected: 'var(--iris-6)',\n },\n};\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 /** pagination - 페이지 변경 시 호출되는 콜백 (0-based pageIndex) */\n onPageChange?: (pageIndex: number) => void;\n variant?: Variant;\n /** 슬림 모드 - 행 높이·패딩을 줄여 컴팩트하게 표시, 기본값 false */\n slim?: boolean;\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 onPageChange,\n getRowStyle,\n getCellStyle,\n variant = 'card',\n slim = false,\n } = props;\n const defaultAlign = 'left';\n const [pagination, setPagination] = useState<PaginationState>({\n pageIndex: pageIndex || 0,\n pageSize: pageSize || 9999,\n });\n\n useEffect(() => {\n setPagination((prev) => {\n const next = pageIndex;\n if (prev.pageIndex === next) return prev;\n return { ...prev, pageIndex: next };\n });\n }, [pageIndex]);\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 // data 참조가 바뀔 때(예: 목록 refetch) tanstack이 pageIndex를 0으로\n // 자동 리셋하지 않도록 끈다. 행 수정 저장 후에도 보던 페이지를 유지하기 위함.\n autoResetPageIndex: false,\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 const idx = page - 1;\n setPageIndex(idx);\n onPageChange?.(idx);\n },\n [setPageIndex, onPageChange]\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 <EmptyState heading=\"데이터가 없습니다\" size=\"compact\" />\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 ${variant}${slim ? ' slim' : ''}`}>\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 if (sortable) {\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <button\n onClick={header.column.getToggleSortingHandler()}\n style={{ cursor: 'pointer' }}\n type=\"button\"\n >\n <Typo as=\"div\" variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n <Flex\n direction=\"column\"\n style={{ marginLeft: 'var(--space-2)' }}\n >\n {sortedState === false && (\n <TriangleArrowDownIcon\n color={sortButtonColorMapper[variant].unselected}\n />\n )}\n {sortedState === 'asc' && (\n <TriangleArrowUpIcon\n color={sortButtonColorMapper[variant].selected}\n />\n )}\n {sortedState === 'desc' && (\n <TriangleArrowDownIcon\n color={sortButtonColorMapper[variant].selected}\n />\n )}\n </Flex>\n </button>\n </div>\n );\n }\n\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <Typo as=\"div\" variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <ScrollArea 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 </ScrollArea>\n </div>\n {showPagination ? (\n <Flex justify=\"end\" pt=\"4\" 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":[]}
|
|
@@ -83,7 +83,7 @@ function StepDetail({
|
|
|
83
83
|
step.basis ? /* @__PURE__ */ jsx(RubricField, { label: "\uADFC\uAC70", value: step.basis }) : null,
|
|
84
84
|
step.issue ? /* @__PURE__ */ jsx(RubricField, { label: "\uC544\uC26C\uC6B4 \uC810", value: step.issue }) : null
|
|
85
85
|
] }) }) : null,
|
|
86
|
-
step.improve || step.example
|
|
86
|
+
step.improve || step.example ? /* @__PURE__ */ jsx(Box, { pt: "3", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "3", children: [
|
|
87
87
|
step.improve ? /* @__PURE__ */ jsx(RubricField, { label: "\uAC1C\uC120\uC810", value: step.improve }) : null,
|
|
88
88
|
step.example ? /* @__PURE__ */ jsxs(
|
|
89
89
|
Box,
|
|
@@ -107,29 +107,6 @@ function StepDetail({
|
|
|
107
107
|
/* @__PURE__ */ jsx(Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ jsx(Typo, { as: "p", style: { color: "var(--accent-11)" }, variant: "body", children: step.example }) })
|
|
108
108
|
]
|
|
109
109
|
}
|
|
110
|
-
) : null,
|
|
111
|
-
step.idealExample ? /* @__PURE__ */ jsxs(
|
|
112
|
-
Box,
|
|
113
|
-
{
|
|
114
|
-
p: "2",
|
|
115
|
-
style: {
|
|
116
|
-
borderRadius: "var(--radius-2)",
|
|
117
|
-
background: "var(--gray-a2)"
|
|
118
|
-
},
|
|
119
|
-
children: [
|
|
120
|
-
/* @__PURE__ */ jsx(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uBAA8\uBC94 \uC608\uC2DC" }),
|
|
121
|
-
/* @__PURE__ */ jsx(Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ jsx(
|
|
122
|
-
Typo,
|
|
123
|
-
{
|
|
124
|
-
as: "p",
|
|
125
|
-
color: "gray",
|
|
126
|
-
style: { whiteSpace: "pre-line" },
|
|
127
|
-
variant: "body",
|
|
128
|
-
children: step.idealExample
|
|
129
|
-
}
|
|
130
|
-
) })
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
110
|
) : null
|
|
134
111
|
] }) }) : null
|
|
135
112
|
] })
|
|
@@ -139,4 +116,4 @@ function StepDetail({
|
|
|
139
116
|
export {
|
|
140
117
|
StepDetail
|
|
141
118
|
};
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
119
|
+
//# sourceMappingURL=chunk-YHA4OOND.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/step-detail.tsx"],"sourcesContent":["'use client';\n\nimport { Box, Flex, Progress, Typo } from '../../../atoms';\nimport type { RpReportStep } from '../utils/report-parse';\nimport {\n stepCode,\n stepColor,\n stepGradeLabel,\n stepRatio,\n stepScoreText,\n stepVars,\n} from '../utils/session-utils';\n\nexport interface StepDetailProps {\n step: RpReportStep;\n scrollMarginTop?: string;\n}\n\nfunction RubricField({\n label,\n value,\n}: {\n label: string;\n value: string;\n}): React.ReactElement {\n return (\n <Box>\n <Typo as=\"p\" variant=\"body\" weight=\"medium\">\n {label}\n </Typo>\n <Box mt=\"1\" style={{ maxWidth: '65ch' }}>\n <Typo as=\"p\" variant=\"body\">\n {value}\n </Typo>\n </Box>\n </Box>\n );\n}\n\nexport function StepDetail({\n step,\n scrollMarginTop = '120px',\n}: StepDetailProps): React.ReactElement {\n const qv = stepVars(step);\n const ratio = stepRatio(step);\n const scoreText = stepScoreText(step);\n const gradeLabel = stepGradeLabel(step);\n\n return (\n <Box id={`step-${step.key}`} style={{ scrollMarginTop }}>\n <Flex align=\"center\" gap=\"2\" justify=\"between\" mb=\"1\">\n <Box style={{ minWidth: 0 }}>\n <Typo as=\"span\" color=\"gray\" mono variant=\"body\">\n {stepCode(step)}\n </Typo>\n <Typo as=\"p\" variant=\"subtitle\" weight=\"bold\">\n {step.label}\n </Typo>\n </Box>\n <Flex align=\"end\" direction=\"column\" gap=\"1\" style={{ flexShrink: 0 }}>\n {scoreText !== null ? (\n <Typo\n as=\"span\"\n mono\n style={{ color: qv.fg }}\n variant=\"subtitle\"\n weight=\"bold\"\n >\n {scoreText}\n </Typo>\n ) : null}\n {gradeLabel !== null ? (\n <Typo\n as=\"span\"\n mono\n style={{\n display: 'inline-block',\n borderRadius: 'var(--radius-2)',\n border: `1px solid ${qv.border}`,\n background: qv.bg,\n color: qv.fg,\n padding: '1px 8px',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n {gradeLabel}\n </Typo>\n ) : null}\n </Flex>\n </Flex>\n\n {ratio !== null ? (\n <Box mb=\"3\" mt=\"2\">\n <Progress color={stepColor(step)} size=\"2\" value={ratio * 100} />\n </Box>\n ) : null}\n\n {step.description ? (\n <Box mb=\"3\" mt={ratio !== null ? '0' : '2'} style={{ maxWidth: '65ch' }}>\n <Typo as=\"p\" color=\"gray\" variant=\"body\">\n {step.description}\n </Typo>\n </Box>\n ) : null}\n\n <Flex direction=\"column\" gap=\"0\">\n {step.basis || step.issue ? (\n <Box pb=\"3\" style={{ borderBottom: '1px solid var(--gray-a4)' }}>\n <Flex direction=\"column\" gap=\"3\">\n {step.basis ? <RubricField label=\"근거\" value={step.basis} /> : null}\n {step.issue ? <RubricField label=\"아쉬운 점\" value={step.issue} /> : null}\n </Flex>\n </Box>\n ) : null}\n\n {step.improve || step.example ? (\n <Box pt=\"3\">\n <Flex direction=\"column\" gap=\"3\">\n {step.improve ? <RubricField label=\"개선점\" value={step.improve} /> : null}\n {step.example ? (\n <Box\n p=\"2\"\n style={{\n borderRadius: 'var(--radius-2)',\n background: 'var(--accent-a2)',\n }}\n >\n <Typo\n as=\"p\"\n style={{ color: 'var(--accent-11)' }}\n variant=\"body\"\n weight=\"medium\"\n >\n 예시 스크립트\n </Typo>\n <Box mt=\"1\" style={{ maxWidth: '65ch' }}>\n <Typo as=\"p\" style={{ color: 'var(--accent-11)' }} variant=\"body\">\n {step.example}\n </Typo>\n </Box>\n </Box>\n ) : null}\n </Flex>\n </Box>\n ) : null}\n </Flex>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -3369,7 +3369,10 @@ function ExpandTable(props) {
|
|
|
3369
3369
|
},
|
|
3370
3370
|
onSortingChange: setSorting,
|
|
3371
3371
|
getPaginationRowModel: (0, import_react_table2.getPaginationRowModel)(),
|
|
3372
|
-
onPaginationChange: setPagination
|
|
3372
|
+
onPaginationChange: setPagination,
|
|
3373
|
+
// data 참조가 바뀔 때(예: 목록 refetch) tanstack이 pageIndex를 0으로
|
|
3374
|
+
// 자동 리셋하지 않도록 끈다. 행 수정 저장 후에도 보던 페이지를 유지하기 위함.
|
|
3375
|
+
autoResetPageIndex: false
|
|
3373
3376
|
});
|
|
3374
3377
|
const gridTemplateColumns = (0, import_react42.useMemo)(() => {
|
|
3375
3378
|
return columns.map((col) => {
|