@tipp/ui 1.4.3 → 1.4.5

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 (45) hide show
  1. package/dist/atoms/field-error-wrapper.js +2 -2
  2. package/dist/atoms/index.js +57 -57
  3. package/dist/atoms/pagination.js +2 -2
  4. package/dist/chunk-CJUJJZ65.js +190 -0
  5. package/dist/chunk-CJUJJZ65.js.map +1 -0
  6. package/dist/chunk-SOMDO7V4.js +80 -0
  7. package/dist/chunk-SOMDO7V4.js.map +1 -0
  8. package/dist/chunk-W4GH6ZKK.js +19 -0
  9. package/dist/chunk-W4GH6ZKK.js.map +1 -0
  10. package/dist/chunk-ZQ4XMJH7.js +1 -0
  11. package/dist/chunk-ZQ4XMJH7.js.map +1 -0
  12. package/dist/index.cjs +17 -4
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.js +79 -75
  17. package/dist/molecules/date-picker/index.js +2 -2
  18. package/dist/molecules/expand-table/index.cjs +8 -4
  19. package/dist/molecules/expand-table/index.cjs.map +1 -1
  20. package/dist/molecules/expand-table/index.d.cts +1 -1
  21. package/dist/molecules/expand-table/index.d.ts +1 -1
  22. package/dist/molecules/expand-table/index.js +26 -26
  23. package/dist/molecules/expand-table/row.cjs +18 -2
  24. package/dist/molecules/expand-table/row.cjs.map +1 -1
  25. package/dist/molecules/expand-table/row.d.cts +1 -0
  26. package/dist/molecules/expand-table/row.d.ts +1 -0
  27. package/dist/molecules/expand-table/row.js +25 -25
  28. package/dist/molecules/index.cjs +8 -4
  29. package/dist/molecules/index.cjs.map +1 -1
  30. package/dist/molecules/index.js +31 -31
  31. package/dist/molecules/learning-post.js +3 -3
  32. package/dist/molecules/navigation.js +25 -25
  33. package/dist/molecules/stepper.js +3 -3
  34. package/dist/molecules/tag-selector.js +25 -25
  35. package/dist/utils/get-column-meta.js +4 -13
  36. package/dist/utils/get-column-meta.js.map +1 -1
  37. package/dist/utils/index.cjs +26 -0
  38. package/dist/utils/index.cjs.map +1 -1
  39. package/dist/utils/index.d.cts +2 -0
  40. package/dist/utils/index.d.ts +2 -0
  41. package/dist/utils/index.js +5 -1
  42. package/package.json +1 -1
  43. package/src/molecules/expand-table/index.tsx +6 -2
  44. package/src/molecules/expand-table/row.tsx +6 -2
  45. package/src/utils/index.ts +1 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  FieldErrorWrapper
3
- } from "../chunk-QDZS4B6A.js";
4
- import "../chunk-52MVZ6AN.js";
3
+ } from "../chunk-DJN2IEY6.js";
5
4
  import "../chunk-25HMMI7R.js";
5
+ import "../chunk-52MVZ6AN.js";
6
6
  import "../chunk-N552FDTV.js";
7
7
  export {
8
8
  FieldErrorWrapper
@@ -1,23 +1,4 @@
1
1
  import "../chunk-76JGDATZ.js";
2
- import {
3
- TextArea
4
- } from "../chunk-ILRUXI2E.js";
5
- import {
6
- TextField
7
- } from "../chunk-JPIZP2PZ.js";
8
- import {
9
- ToastContainer,
10
- toast
11
- } from "../chunk-CYYWMYE7.js";
12
- import {
13
- Select
14
- } from "../chunk-3JRNKBMN.js";
15
- import {
16
- Separator
17
- } from "../chunk-HYITAA4J.js";
18
- import {
19
- Skeleton
20
- } from "../chunk-5H3YPCZK.js";
21
2
  import {
22
3
  Spinner
23
4
  } from "../chunk-FR2GDOU2.js";
@@ -34,14 +15,15 @@ import {
34
15
  Tabs
35
16
  } from "../chunk-5ZITU5L7.js";
36
17
  import {
37
- Progress
38
- } from "../chunk-365QMK4D.js";
18
+ TextArea
19
+ } from "../chunk-ILRUXI2E.js";
39
20
  import {
40
- Quote
41
- } from "../chunk-YO3BQW6S.js";
21
+ TextField
22
+ } from "../chunk-JPIZP2PZ.js";
42
23
  import {
43
- RadioCards
44
- } from "../chunk-6IVCARWS.js";
24
+ ToastContainer,
25
+ toast
26
+ } from "../chunk-CYYWMYE7.js";
45
27
  import {
46
28
  RadioGroup
47
29
  } from "../chunk-6DJOIRMF.js";
@@ -58,8 +40,14 @@ import {
58
40
  SegmentedControl
59
41
  } from "../chunk-TVDKGMBI.js";
60
42
  import {
61
- HoverCard
62
- } from "../chunk-O3T3TM3V.js";
43
+ Select
44
+ } from "../chunk-3JRNKBMN.js";
45
+ import {
46
+ Separator
47
+ } from "../chunk-HYITAA4J.js";
48
+ import {
49
+ Skeleton
50
+ } from "../chunk-5H3YPCZK.js";
63
51
  import {
64
52
  Inset
65
53
  } from "../chunk-XQOL7UBI.js";
@@ -71,31 +59,22 @@ import {
71
59
  } from "../chunk-SIM6HKVI.js";
72
60
  import {
73
61
  Pagination
74
- } from "../chunk-IM7DSIK2.js";
75
- import {
76
- IconButton
77
- } from "../chunk-O3DNDMV3.js";
62
+ } from "../chunk-5X3BCQPR.js";
78
63
  import {
79
64
  Popover
80
65
  } from "../chunk-5AVBYDPB.js";
81
66
  import {
82
- DropdownMenu
83
- } from "../chunk-4WFMOFN2.js";
84
- import {
85
- EllipsisTooltip
86
- } from "../chunk-WKFZ5MMN.js";
67
+ Progress
68
+ } from "../chunk-365QMK4D.js";
87
69
  import {
88
- Tooltip
89
- } from "../chunk-ACVANQJ4.js";
70
+ Quote
71
+ } from "../chunk-YO3BQW6S.js";
90
72
  import {
91
- Em
92
- } from "../chunk-2DZ2Y3JI.js";
73
+ RadioCards
74
+ } from "../chunk-6IVCARWS.js";
93
75
  import {
94
76
  FieldErrorWrapper
95
- } from "../chunk-QDZS4B6A.js";
96
- import {
97
- Typo
98
- } from "../chunk-52MVZ6AN.js";
77
+ } from "../chunk-DJN2IEY6.js";
99
78
  import {
100
79
  Flex
101
80
  } from "../chunk-25HMMI7R.js";
@@ -109,14 +88,11 @@ import {
109
88
  Heading
110
89
  } from "../chunk-HK224ADT.js";
111
90
  import {
112
- CheckboxGroup
113
- } from "../chunk-IQEEPHOY.js";
114
- import {
115
- Checkbox
116
- } from "../chunk-LHCDPZ5E.js";
91
+ HoverCard
92
+ } from "../chunk-O3T3TM3V.js";
117
93
  import {
118
- Code
119
- } from "../chunk-OHMOP5PV.js";
94
+ IconButton
95
+ } from "../chunk-O3DNDMV3.js";
120
96
  import {
121
97
  Collapse
122
98
  } from "../chunk-LZJR77Q2.js";
@@ -136,14 +112,20 @@ import {
136
112
  Trigger
137
113
  } from "../chunk-3IZQ2PIQ.js";
138
114
  import {
139
- Avatar
140
- } from "../chunk-3SSSCLJ5.js";
115
+ DropdownMenu
116
+ } from "../chunk-4WFMOFN2.js";
141
117
  import {
142
- Badge
143
- } from "../chunk-EWD4AO5N.js";
118
+ EllipsisTooltip
119
+ } from "../chunk-WKFZ5MMN.js";
144
120
  import {
145
- Blockquote
146
- } from "../chunk-YGL6SWKN.js";
121
+ Tooltip
122
+ } from "../chunk-ACVANQJ4.js";
123
+ import {
124
+ Typo
125
+ } from "../chunk-52MVZ6AN.js";
126
+ import {
127
+ Em
128
+ } from "../chunk-2DZ2Y3JI.js";
147
129
  import {
148
130
  Box
149
131
  } from "../chunk-4Y5BEXVN.js";
@@ -159,6 +141,15 @@ import {
159
141
  import {
160
142
  CheckboxCards
161
143
  } from "../chunk-MIMJ7LON.js";
144
+ import {
145
+ CheckboxGroup
146
+ } from "../chunk-IQEEPHOY.js";
147
+ import {
148
+ Checkbox
149
+ } from "../chunk-LHCDPZ5E.js";
150
+ import {
151
+ Code
152
+ } from "../chunk-OHMOP5PV.js";
162
153
  import "../chunk-66C4U3BG.js";
163
154
  import {
164
155
  AlertDialog
@@ -169,6 +160,15 @@ import {
169
160
  import {
170
161
  AutoSizingInput
171
162
  } from "../chunk-YJCCE5WP.js";
163
+ import {
164
+ Avatar
165
+ } from "../chunk-3SSSCLJ5.js";
166
+ import {
167
+ Badge
168
+ } from "../chunk-EWD4AO5N.js";
169
+ import {
170
+ Blockquote
171
+ } from "../chunk-YGL6SWKN.js";
172
172
  import "../chunk-N552FDTV.js";
173
173
  export {
174
174
  AlertDialog,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Pagination
3
- } from "../chunk-IM7DSIK2.js";
3
+ } from "../chunk-5X3BCQPR.js";
4
+ import "../chunk-25HMMI7R.js";
4
5
  import "../chunk-O3DNDMV3.js";
5
6
  import "../chunk-52MVZ6AN.js";
6
- import "../chunk-25HMMI7R.js";
7
7
  import "../chunk-66C4U3BG.js";
8
8
  import "../chunk-N552FDTV.js";
9
9
  export {
@@ -0,0 +1,190 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-SOMDO7V4.js";
4
+ import {
5
+ TriangleArrowDownIcon
6
+ } from "./chunk-BSTJBBEX.js";
7
+ import {
8
+ TriangleArrowUpIcon
9
+ } from "./chunk-NDUKDKGB.js";
10
+ import {
11
+ Spinner
12
+ } from "./chunk-FR2GDOU2.js";
13
+ import {
14
+ Pagination
15
+ } from "./chunk-5X3BCQPR.js";
16
+ import {
17
+ Flex
18
+ } from "./chunk-25HMMI7R.js";
19
+ import {
20
+ Typo
21
+ } from "./chunk-52MVZ6AN.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,
43
+ isLoading,
44
+ pageIndex = 0,
45
+ pageSize = 10,
46
+ siblingCount = 2,
47
+ getRowStyle
48
+ } = props;
49
+ const defaultAlign = "left";
50
+ const [pagination, setPagination] = useState({
51
+ pageIndex: pageIndex || 0,
52
+ pageSize: pageSize || 9999
53
+ });
54
+ const [sorting, setSorting] = useState([]);
55
+ const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({
56
+ data: data || [],
57
+ columns,
58
+ getCoreRowModel: getCoreRowModel(),
59
+ getSortedRowModel: getSortedRowModel(),
60
+ state: {
61
+ sorting,
62
+ pagination
63
+ },
64
+ onSortingChange: setSorting,
65
+ getPaginationRowModel: getPaginationRowModel(),
66
+ onPaginationChange: setPagination
67
+ });
68
+ const gridColTemp = useMemo(() => {
69
+ return columns.map((col) => {
70
+ var _a;
71
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize)
72
+ return "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)
107
+ return 0;
108
+ return Math.ceil(data.length / pageSize);
109
+ }, [data, pageSize]);
110
+ return /* @__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: gridColTemp },
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, { 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
+ getRowStyle,
167
+ gridColTemp,
168
+ onRowClick,
169
+ row
170
+ },
171
+ `row_${row.id}`
172
+ );
173
+ }) }),
174
+ showPagination ? /* @__PURE__ */ jsx(Flex, { justify: "end", pt: "3", width: "100%", children: /* @__PURE__ */ jsx(
175
+ Pagination,
176
+ {
177
+ count: pageCount,
178
+ onChange: onChangePagination,
179
+ page: pagination.pageIndex + 1,
180
+ siblingCount
181
+ }
182
+ ) }) : null
183
+ ] });
184
+ }
185
+
186
+ export {
187
+ createColumnHelper,
188
+ ExpandTable
189
+ };
190
+ //# sourceMappingURL=chunk-CJUJJZ65.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 tableStyle?: CSSProperties;\n isLoading?: boolean;\n\n /** pagination - 표시 유무 */\n showPagination?: boolean;\n /** pagination - 현재 선택된 페이지, 0부터 시작 */\n pageIndex?: number;\n /** pagination - 한 페이지에 표시될 컬럼 개수 */\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,\n isLoading,\n pageIndex = 0,\n pageSize = 10,\n siblingCount = 2,\n getRowStyle,\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 gridColTemp = useMemo<string>(() => {\n return columns\n .map((col) => {\n if (col.meta?.autoSize) return '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\" style={tableStyle}>\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div\n className=\"tr\"\n key={headerGroup.id}\n style={{ gridTemplateColumns: gridColTemp }}\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 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 getRowStyle={getRowStyle}\n gridColTemp={gridColTemp}\n key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n\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,80 @@
1
+ import {
2
+ Collapse
3
+ } from "./chunk-LZJR77Q2.js";
4
+ import {
5
+ __spreadValues
6
+ } from "./chunk-N552FDTV.js";
7
+
8
+ // src/molecules/expand-table/row.tsx
9
+ import {
10
+ flexRender
11
+ } from "@tanstack/react-table";
12
+ import { useCallback, useMemo, useState } from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ function Row(props) {
15
+ const { row, ExpandComp, gridColTemp, getRowStyle } = props;
16
+ const [open, setOpen] = useState(false);
17
+ const onClickRow = useCallback(() => {
18
+ var _a;
19
+ (_a = props.onRowClick) == null ? void 0 : _a.call(props, row.original);
20
+ setOpen((prev) => !prev);
21
+ }, [props, row.original]);
22
+ const rowClassName = useMemo(() => {
23
+ const baseCls = ["tr-wrapper"];
24
+ if (ExpandComp) {
25
+ baseCls.push("expandable");
26
+ }
27
+ if (props.onRowClick) {
28
+ baseCls.push("clickable");
29
+ }
30
+ return baseCls.join(" ");
31
+ }, [ExpandComp, props.onRowClick]);
32
+ return /* @__PURE__ */ jsxs("div", { className: rowClassName, children: [
33
+ /* @__PURE__ */ jsx(
34
+ "button",
35
+ {
36
+ className: "tr",
37
+ onClick: onClickRow,
38
+ style: __spreadValues({
39
+ gridTemplateColumns: gridColTemp
40
+ }, (getRowStyle == null ? void 0 : getRowStyle(row.original)) || {}),
41
+ type: "button",
42
+ children: row.getVisibleCells().map((cell) => {
43
+ var _a, _b, _c;
44
+ const autoSize = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.autoSize;
45
+ const justifyContent = ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.align) || props.defaultAlign;
46
+ return /* @__PURE__ */ jsxs(
47
+ "div",
48
+ {
49
+ className: "td",
50
+ style: {
51
+ // width: autoSize ? undefined : cell.column.getSize(),
52
+ flexGrow: autoSize ? 1 : void 0,
53
+ justifyContent
54
+ },
55
+ children: [
56
+ flexRender(cell.column.columnDef.cell, cell.getContext()),
57
+ ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ jsx(
58
+ cell.column.columnDef.meta.OpenBtn,
59
+ {
60
+ data: row.original,
61
+ open,
62
+ setIsOpen: setOpen
63
+ }
64
+ ) : null
65
+ ]
66
+ },
67
+ cell.id
68
+ );
69
+ })
70
+ },
71
+ `tr_${row.id}`
72
+ ),
73
+ ExpandComp ? /* @__PURE__ */ jsx(Collapse, { open, children: /* @__PURE__ */ jsx("div", { className: "expand-comp-wrapper", children: /* @__PURE__ */ jsx(ExpandComp, { row }) }) }) : null
74
+ ] }, `tr-wrapper_${row.id}`);
75
+ }
76
+
77
+ export {
78
+ Row
79
+ };
80
+ //# sourceMappingURL=chunk-SOMDO7V4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/row.tsx"],"sourcesContent":["import {\n type Row as TanstackRow,\n type RowData,\n flexRender,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Collapse } from '../../atoms';\nimport type { CellAlign } from '../../utils/get-cell-align';\n\nexport type ExpandComp<Datum> = React.FC<{ row: TanstackRow<Datum> }>;\nexport type OnRowClick<Datum> = (data: Datum) => void;\n\ninterface RowProps<Datum extends RowData> {\n row: TanstackRow<Datum>;\n ExpandComp?: ExpandComp<Datum>;\n onRowClick?: OnRowClick<Datum>;\n gridColTemp: string;\n getRowStyle?: (data: Datum) => React.CSSProperties;\n defaultAlign: CellAlign;\n}\n\nexport function Row<Datum extends RowData>(\n props: RowProps<Datum>\n): React.ReactNode {\n const { row, ExpandComp, gridColTemp, getRowStyle } = props;\n const [open, setOpen] = useState(false);\n\n const onClickRow = useCallback(() => {\n props.onRowClick?.(row.original);\n setOpen((prev) => !prev);\n }, [props, row.original]);\n\n const rowClassName = useMemo(() => {\n const baseCls = ['tr-wrapper'];\n if (ExpandComp) {\n baseCls.push('expandable');\n }\n if (props.onRowClick) {\n baseCls.push('clickable');\n }\n return baseCls.join(' ');\n }, [ExpandComp, props.onRowClick]);\n\n return (\n <div className={rowClassName} key={`tr-wrapper_${row.id}`}>\n <button\n className=\"tr\"\n key={`tr_${row.id}`}\n onClick={onClickRow}\n style={{\n gridTemplateColumns: gridColTemp,\n ...(getRowStyle?.(row.original) || {}),\n }}\n type=\"button\"\n >\n {row.getVisibleCells().map((cell) => {\n const autoSize = cell.column.columnDef.meta?.autoSize;\n const justifyContent =\n cell.column.columnDef.meta?.align || props.defaultAlign;\n\n return (\n <div\n className=\"td\"\n key={cell.id}\n style={{\n // width: autoSize ? undefined : cell.column.getSize(),\n flexGrow: autoSize ? 1 : undefined,\n justifyContent,\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n {cell.column.columnDef.meta?.OpenBtn ? (\n <cell.column.columnDef.meta.OpenBtn\n data={row.original}\n open={open}\n setIsOpen={setOpen}\n />\n ) : null}\n </div>\n );\n })}\n </button>\n {ExpandComp ? (\n <Collapse open={open}>\n <div className=\"expand-comp-wrapper\">\n <ExpandComp row={row} />\n </div>\n </Collapse>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAAA;AAAA,EAGE;AAAA,OACK;AACP,SAAgB,aAAa,SAAS,gBAAgB;AAwD1C,SAWI,KAXJ;AAxCL,SAAS,IACd,OACiB;AACjB,QAAM,EAAE,KAAK,YAAY,aAAa,YAAY,IAAI;AACtD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,QAAM,aAAa,YAAY,MAAM;AA3BvC;AA4BI,gBAAM,eAAN,+BAAmB,IAAI;AACvB,YAAQ,CAAC,SAAS,CAAC,IAAI;AAAA,EACzB,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC;AAExB,QAAM,eAAe,QAAQ,MAAM;AACjC,UAAM,UAAU,CAAC,YAAY;AAC7B,QAAI,YAAY;AACd,cAAQ,KAAK,YAAY;AAAA,IAC3B;AACA,QAAI,MAAM,YAAY;AACpB,cAAQ,KAAK,WAAW;AAAA,IAC1B;AACA,WAAO,QAAQ,KAAK,GAAG;AAAA,EACzB,GAAG,CAAC,YAAY,MAAM,UAAU,CAAC;AAEjC,SACE,qBAAC,SAAI,WAAW,cACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QAEV,SAAS;AAAA,QACT,OAAO;AAAA,UACL,qBAAqB;AAAA,YACjB,2CAAc,IAAI,cAAa,CAAC;AAAA,QAEtC,MAAK;AAAA,QAEJ,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAAS;AAvD7C;AAwDU,gBAAM,YAAW,UAAK,OAAO,UAAU,SAAtB,mBAA4B;AAC7C,gBAAM,mBACJ,UAAK,OAAO,UAAU,SAAtB,mBAA4B,UAAS,MAAM;AAE7C,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cAEV,OAAO;AAAA;AAAA,gBAEL,UAAU,WAAW,IAAI;AAAA,gBACzB;AAAA,cACF;AAAA,cAEC;AAAA,2BAAW,KAAK,OAAO,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA,kBACxD,UAAK,OAAO,UAAU,SAAtB,mBAA4B,WAC3B;AAAA,kBAAC,KAAK,OAAO,UAAU,KAAK;AAAA,kBAA3B;AAAA,oBACC,MAAM,IAAI;AAAA,oBACV;AAAA,oBACA,WAAW;AAAA;AAAA,gBACb,IACE;AAAA;AAAA;AAAA,YAdC,KAAK;AAAA,UAeZ;AAAA,QAEJ,CAAC;AAAA;AAAA,MAjCI,MAAM,IAAI,EAAE;AAAA,IAkCnB;AAAA,IACC,aACC,oBAAC,YAAS,MACR,8BAAC,SAAI,WAAU,uBACb,8BAAC,cAAW,KAAU,GACxB,GACF,IACE;AAAA,OA5C6B,cAAc,IAAI,EAAE,EA6CvD;AAEJ;","names":[]}
@@ -0,0 +1,19 @@
1
+ import {
2
+ getCellAlign
3
+ } from "./chunk-2BPFXK4L.js";
4
+ import {
5
+ __spreadProps,
6
+ __spreadValues
7
+ } from "./chunk-N552FDTV.js";
8
+
9
+ // src/utils/get-column-meta.ts
10
+ var getColumnMeta = (meta) => {
11
+ return __spreadProps(__spreadValues({}, meta), {
12
+ align: getCellAlign(meta.align || "left")
13
+ });
14
+ };
15
+
16
+ export {
17
+ getColumnMeta
18
+ };
19
+ //# sourceMappingURL=chunk-W4GH6ZKK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/get-column-meta.ts"],"sourcesContent":["import type { RowData } from '@tanstack/react-table';\nimport type { CellDataType } from './get-cell-align';\nimport { getCellAlign } from './get-cell-align';\n\ntype ExpandButtonComp = <Data extends RowData>(props: {\n open: boolean;\n setIsOpen: (value: boolean) => void;\n data: Data;\n}) => React.ReactNode;\n\nexport interface ColumnMeta {\n OpenBtn?: ExpandButtonComp;\n /** 셀의 가로 너비 지정을 number가 아닌 auto로 사용하고 싶을 경우.\n * 테이블 당 하나의 셀에만 사용하기를 권장\n */\n autoSize?: boolean;\n /** 좌/우/중앙 정렬 설정의 기준, dataType을 우선해 사용 */\n align?: CellDataType;\n}\n\nexport const getColumnMeta = (meta: ColumnMeta): ColumnMeta => {\n return {\n ...meta,\n align: getCellAlign(meta.align || 'left'),\n };\n};\n"],"mappings":";;;;;;;;;AAoBO,IAAM,gBAAgB,CAAC,SAAiC;AAC7D,SAAO,iCACF,OADE;AAAA,IAEL,OAAO,aAAa,KAAK,SAAS,MAAM;AAAA,EAC1C;AACF;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-ZQ4XMJH7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/index.cjs CHANGED
@@ -163,6 +163,7 @@ __export(src_exports, {
163
163
  Typo: () => Typo,
164
164
  createColumnHelper: () => import_react_table2.createColumnHelper,
165
165
  getCellAlign: () => getCellAlign,
166
+ getColumnMeta: () => getColumnMeta,
166
167
  scrollTo: () => scrollTo,
167
168
  toast: () => import_react_toastify2.toast,
168
169
  uiProps: () => uiProps,
@@ -1082,7 +1083,7 @@ var import_react_table = require("@tanstack/react-table");
1082
1083
  var import_react19 = require("react");
1083
1084
  var import_jsx_runtime23 = require("react/jsx-runtime");
1084
1085
  function Row(props) {
1085
- const { row, ExpandComp, gridColTemp } = props;
1086
+ const { row, ExpandComp, gridColTemp, getRowStyle } = props;
1086
1087
  const [open, setOpen] = (0, import_react19.useState)(false);
1087
1088
  const onClickRow = (0, import_react19.useCallback)(() => {
1088
1089
  var _a;
@@ -1105,7 +1106,9 @@ function Row(props) {
1105
1106
  {
1106
1107
  className: "tr",
1107
1108
  onClick: onClickRow,
1108
- style: { gridTemplateColumns: gridColTemp },
1109
+ style: __spreadValues({
1110
+ gridTemplateColumns: gridColTemp
1111
+ }, (getRowStyle == null ? void 0 : getRowStyle(row.original)) || {}),
1109
1112
  type: "button",
1110
1113
  children: row.getVisibleCells().map((cell) => {
1111
1114
  var _a, _b, _c;
@@ -1156,7 +1159,8 @@ function ExpandTable(props) {
1156
1159
  isLoading,
1157
1160
  pageIndex = 0,
1158
1161
  pageSize = 10,
1159
- siblingCount = 2
1162
+ siblingCount = 2,
1163
+ getRowStyle
1160
1164
  } = props;
1161
1165
  const defaultAlign = "left";
1162
1166
  const [pagination, setPagination] = (0, import_react20.useState)({
@@ -1234,7 +1238,7 @@ function ExpandTable(props) {
1234
1238
  "button",
1235
1239
  {
1236
1240
  onClick: header.column.getToggleSortingHandler(),
1237
- style: sortable ? { cursor: "pointer" } : void 0,
1241
+ style: sortable ? { cursor: "pointer" } : { cursor: "default" },
1238
1242
  type: "button",
1239
1243
  children: [
1240
1244
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Typo, { variant: "body", children: (0, import_react_table2.flexRender)(
@@ -1275,6 +1279,7 @@ function ExpandTable(props) {
1275
1279
  {
1276
1280
  ExpandComp,
1277
1281
  defaultAlign,
1282
+ getRowStyle,
1278
1283
  gridColTemp,
1279
1284
  onRowClick,
1280
1285
  row
@@ -2244,6 +2249,13 @@ var getCellAlign = (type) => {
2244
2249
  }
2245
2250
  };
2246
2251
 
2252
+ // src/utils/get-column-meta.ts
2253
+ var getColumnMeta = (meta) => {
2254
+ return __spreadProps(__spreadValues({}, meta), {
2255
+ align: getCellAlign(meta.align || "left")
2256
+ });
2257
+ };
2258
+
2247
2259
  // src/utils/scroll-to.ts
2248
2260
  function scrollTo(element, targetPosition, duration) {
2249
2261
  const startPosition = element.scrollTop;
@@ -2376,6 +2388,7 @@ function scrollTo(element, targetPosition, duration) {
2376
2388
  Typo,
2377
2389
  createColumnHelper,
2378
2390
  getCellAlign,
2391
+ getColumnMeta,
2379
2392
  scrollTo,
2380
2393
  toast,
2381
2394
  uiProps,