sales-frontend-components 0.0.5 โ†’ 0.0.7

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.
@@ -0,0 +1,109 @@
1
+ @use 'sales-frontend-design-system/design-system-context' as *;
2
+
3
+ // ๐ŸŽจ ๋ฃจํŠธ ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์Šคํฌ๋กค
4
+ .root {
5
+ width: 100%;
6
+ overflow-x: auto;
7
+ border: 1px solid colors(border-neutral_3);
8
+ border-bottom: none;
9
+ // height๊ฐ€ ์ง€์ •๋˜๋ฉด sticky ๋ชจ๋“œ๋กœ ๋™์ž‘
10
+ &.sticky {
11
+ overflow: auto; // ์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์Šคํฌ๋กค์„ ๊ฐ€์ง
12
+ border-bottom: 1px solid colors(border-neutral_3);
13
+ }
14
+ }
15
+
16
+ // ๐ŸŽจ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ
17
+ .table {
18
+ width: 100%;
19
+ color: colors(text-body_1);
20
+ table-layout: fixed;
21
+ border-collapse: collapse;
22
+
23
+ @include apply-typography(body3);
24
+ }
25
+
26
+ // ๐ŸŽจ ํ…Œ์ด๋ธ” ํ—ค๋”
27
+ .table-head {
28
+ color: colors(text-body_2);
29
+ background-color: colors(surface-neutral_1); // ์Šคํฌ๋กค ์‹œ ์•„๋ž˜ ๋‚ด์šฉ์ด ๋น„์น˜์ง€ ์•Š๋„๋ก ๋ฐฐ๊ฒฝ์ƒ‰ ์ง€์ •
30
+ // Sticky ํ—ค๋” ์Šคํƒ€์ผ
31
+ &.sticky th {
32
+ position: sticky;
33
+ top: 0;
34
+ z-index: 1;
35
+ }
36
+
37
+ @include apply-typography(body4);
38
+ }
39
+
40
+ // ๐ŸŽจ ํ…Œ์ด๋ธ” ์…€ ๊ณตํ†ต ์Šคํƒ€์ผ
41
+ .table-head-cell {
42
+ position: relative; // ๋ฆฌ์‚ฌ์ด์ง• ํ•ธ๋“ค ์œ„์น˜์˜ ๊ธฐ์ค€
43
+ height: 40px;
44
+ text-align: center;
45
+ // โœ… box-shadow๋กœ ์œ„์ชฝ ํ…Œ๋‘๋ฆฌ๊นŒ์ง€ ์ถ”๊ฐ€
46
+ box-shadow:
47
+ inset 0 1px 0 colors(border-neutral_3),
48
+ inset 0 -1px 0 colors(border-neutral_3);
49
+
50
+ // ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ
51
+ &.is-resizing {
52
+ color: colors(text-body_1);
53
+ background-color: colors(surface-neutral_3);
54
+ }
55
+ }
56
+
57
+ .table-head-cell,
58
+ .table-data-cell {
59
+ // ๋„ˆ๋น„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํ…์ŠคํŠธ๋Š” ๋ง์ค„์ž„ํ‘œ๋กœ ํ‘œ์‹œ
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+
64
+ // โœ… ์„ธ๋กœ์„  ์ถ”๊ฐ€
65
+ border-right: 1px solid colors(border-neutral_3);
66
+ // โœ… box-shadow๋กœ ์•„๋ž˜์ชฝ ํ…Œ๋‘๋ฆฌ ๋Œ€์ฒด
67
+ box-shadow: inset 0 -1px 0 colors(border-neutral_3);
68
+ // โœ… ๋งˆ์ง€๋ง‰ ์…€์˜ ์˜ค๋ฅธ์ชฝ ์„ธ๋กœ์„  ์ œ๊ฑฐ
69
+ &:last-child {
70
+ border-right: none;
71
+ }
72
+ }
73
+
74
+ // ๐ŸŽจ ๋ฆฌ์‚ฌ์ด์ง• ํ•ธ๋“ค ์Šคํƒ€์ผ
75
+ .resize-handle {
76
+ position: absolute;
77
+ top: 0;
78
+ right: 0;
79
+ width: 5px; // ํ•ธ๋“ค ๋„ˆ๋น„ (์‹ค์ œ๋กœ๋Š” ํˆฌ๋ช…)
80
+ height: 100%;
81
+ touch-action: none; // ๋ชจ๋ฐ”์ผ ํ„ฐ์น˜ ์ด๋ฒคํŠธ ์ œ์–ด
82
+ cursor: col-resize; // ์ปค์„œ ๋ชจ์–‘ ๋ณ€๊ฒฝ
83
+ user-select: none; // ๋“œ๋ž˜๊ทธ ์ค‘ ํ…์ŠคํŠธ ์„ ํƒ ๋ฐฉ์ง€
84
+
85
+ // ํ•ธ๋“ค ์˜ค๋ฅธ์ชฝ์— ๊ตฌ๋ถ„์„  ํšจ๊ณผ ์ถ”๊ฐ€
86
+ // &::after {
87
+ // position: absolute;
88
+ // top: 25%;
89
+ // right: 2px;
90
+ // width: 1px;
91
+ // height: 50%;
92
+ // content: '';
93
+ // background-color: #c0c0c0;
94
+ // transition: background-color 0.2s ease;
95
+ // }
96
+
97
+ // ํ•ธ๋“ค์— ํ˜ธ๋ฒ„ํ•˜๊ฑฐ๋‚˜, ๋ถ€๋ชจ th๊ฐ€ ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ๊ตฌ๋ถ„์„  ๊ฐ•์กฐ
98
+ // &:hover::after,
99
+ // :global(.is-resizing) &::after {
100
+ // background-color: #2979ff; // ํ™œ์„ฑํ™” ์ƒ‰์ƒ
101
+ // }
102
+ }
103
+
104
+ // ๐ŸŽจ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์‹œ์ง€ ์…€ (Loading, No Data ๋“ฑ)
105
+ .feedback-cell {
106
+ padding: 48px;
107
+ color: #757575;
108
+ text-align: center;
109
+ }
@@ -0,0 +1,331 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var reactTable = require('@tanstack/react-table');
5
+ var styles = require('./data-table/data-table.module.scss');
6
+ var React = require('react');
7
+ var reactHookForm = require('react-hook-form');
8
+ var salesFrontendDesignSystem = require('sales-frontend-design-system');
9
+ var styles$1 = require('./step-indicator/step-indicator.module.scss');
10
+
11
+ function getDefaultExportFromCjs (x) {
12
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
13
+ }
14
+
15
+ var bind = {exports: {}};
16
+
17
+ /*!
18
+ Copyright (c) 2018 Jed Watson.
19
+ Licensed under the MIT License (MIT), see
20
+ http://jedwatson.github.io/classnames
21
+ */
22
+
23
+ var hasRequiredBind;
24
+
25
+ function requireBind () {
26
+ if (hasRequiredBind) return bind.exports;
27
+ hasRequiredBind = 1;
28
+ (function (module) {
29
+ /* global define */
30
+
31
+ (function () {
32
+
33
+ var hasOwn = {}.hasOwnProperty;
34
+
35
+ function classNames () {
36
+ var classes = '';
37
+
38
+ for (var i = 0; i < arguments.length; i++) {
39
+ var arg = arguments[i];
40
+ if (arg) {
41
+ classes = appendClass(classes, parseValue.call(this, arg));
42
+ }
43
+ }
44
+
45
+ return classes;
46
+ }
47
+
48
+ function parseValue (arg) {
49
+ if (typeof arg === 'string' || typeof arg === 'number') {
50
+ return this && this[arg] || arg;
51
+ }
52
+
53
+ if (typeof arg !== 'object') {
54
+ return '';
55
+ }
56
+
57
+ if (Array.isArray(arg)) {
58
+ return classNames.apply(this, arg);
59
+ }
60
+
61
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
62
+ return arg.toString();
63
+ }
64
+
65
+ var classes = '';
66
+
67
+ for (var key in arg) {
68
+ if (hasOwn.call(arg, key) && arg[key]) {
69
+ classes = appendClass(classes, this && this[key] || key);
70
+ }
71
+ }
72
+
73
+ return classes;
74
+ }
75
+
76
+ function appendClass (value, newClass) {
77
+ if (!newClass) {
78
+ return value;
79
+ }
80
+
81
+ if (value) {
82
+ return value + ' ' + newClass;
83
+ }
84
+
85
+ return value + newClass;
86
+ }
87
+
88
+ if (module.exports) {
89
+ classNames.default = classNames;
90
+ module.exports = classNames;
91
+ } else {
92
+ window.classNames = classNames;
93
+ }
94
+ }());
95
+ } (bind));
96
+ return bind.exports;
97
+ }
98
+
99
+ var bindExports = requireBind();
100
+ var classNames = /*@__PURE__*/getDefaultExportFromCjs(bindExports);
101
+
102
+ const cx$1 = classNames.bind(styles);
103
+ const DataTable = ({
104
+ table,
105
+ height,
106
+ isError,
107
+ isLoading,
108
+ msgText,
109
+ className
110
+ }) => {
111
+ const isSticky = !!height;
112
+ const { columnSizing } = table.getState();
113
+ return (
114
+ // 1. Sticky ํ—ค๋”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋กค ์ปจํ…Œ์ด๋„ˆ
115
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx$1("root", { sticky: isSticky }), style: { height }, children: /* @__PURE__ */ jsxRuntime.jsxs(
116
+ "table",
117
+ {
118
+ className: cx$1("table", className),
119
+ style: {
120
+ // minWidth: table.getCenterTotalSize() // ํ…Œ์ด๋ธ” ์ „์ฒด ๋„ˆ๋น„๋ฅผ ์ปฌ๋Ÿผ ๋„ˆ๋น„์˜ ํ•ฉ์œผ๋กœ ์„ค์ •
121
+ },
122
+ children: [
123
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { className: cx$1("table-head", { sticky: isSticky }), children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsxRuntime.jsx("tr", { className: cx$1("table-row"), children: headerGroup.headers.map((header) => /* @__PURE__ */ jsxRuntime.jsxs(
124
+ "th",
125
+ {
126
+ colSpan: header.colSpan,
127
+ className: cx$1("table-head-cell", {
128
+ "is-resizing": header.column.getIsResizing()
129
+ // 3. ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ํด๋ž˜์Šค ์ถ”๊ฐ€
130
+ }),
131
+ style: header.column.columnDef.size ? { width: header.getSize(), minWidth: header.getSize(), maxWidth: header.getSize() } : void 0,
132
+ children: [
133
+ header.isPlaceholder ? null : reactTable.flexRender(header.column.columnDef.header, header.getContext()),
134
+ header.column.getCanResize() && /* @__PURE__ */ jsxRuntime.jsx(
135
+ "div",
136
+ {
137
+ onMouseDown: header.getResizeHandler(),
138
+ onTouchStart: header.getResizeHandler(),
139
+ className: cx$1("resize-handle")
140
+ }
141
+ )
142
+ ]
143
+ },
144
+ header.id
145
+ )) }, headerGroup.id)) }),
146
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: cx$1("table-body"), children: !isLoading && !isError && table.getRowModel().rows.length > 0 ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsxRuntime.jsx("tr", { className: cx$1("table-row"), children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsxRuntime.jsx(
147
+ "td",
148
+ {
149
+ className: cx$1("table-data-cell"),
150
+ style: cell.column.columnDef.size ? {
151
+ width: cell.column.getSize(),
152
+ minWidth: cell.column.getSize(),
153
+ maxWidth: cell.column.getSize()
154
+ } : void 0,
155
+ children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())
156
+ },
157
+ cell.id
158
+ )) }, row.id)) : /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { className: cx$1("feedback-cell"), colSpan: table.getVisibleLeafColumns().length, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Loading..." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: msgText || (isError ? "Error" : "No data") }) }) }) })
159
+ ]
160
+ }
161
+ ) })
162
+ );
163
+ };
164
+
165
+ const useTable = ({
166
+ data,
167
+ columns,
168
+ defaultColumn = { size: 150, enableResizing: true },
169
+ initialState,
170
+ onSortingChange,
171
+ enableRowSelection,
172
+ enableColumnResizing,
173
+ mode = "SSR",
174
+ debug
175
+ }) => {
176
+ const [sorting, setSorting] = React.useState(initialState?.sorting || []);
177
+ const [rowSelection, setRowSelection] = React.useState(initialState?.rowSelection || {});
178
+ const [pagination, setPagination] = React.useState(initialState?.pagination || {});
179
+ const [columnVisibility, setColumnVisibility] = React.useState(initialState?.columnVisibility || {});
180
+ const getOption = (mode2) => {
181
+ if (mode2 === "SSR") {
182
+ return {
183
+ manualSorting: true,
184
+ manualPagination: true,
185
+ onSortingChange
186
+ };
187
+ } else {
188
+ return {
189
+ getPaginationRowModel: reactTable.getPaginationRowModel(),
190
+ onPaginationChange: setPagination,
191
+ onSortingChange: setSorting
192
+ };
193
+ }
194
+ };
195
+ const table = reactTable.useReactTable({
196
+ data,
197
+ columns,
198
+ columnResizeMode: "onChange",
199
+ defaultColumn,
200
+ enableColumnResizing,
201
+ enableRowSelection,
202
+ initialState,
203
+ state: {
204
+ sorting,
205
+ rowSelection,
206
+ pagination,
207
+ columnVisibility
208
+ },
209
+ onRowSelectionChange: setRowSelection,
210
+ onColumnVisibilityChange: setColumnVisibility,
211
+ getCoreRowModel: reactTable.getCoreRowModel(),
212
+ getSortedRowModel: reactTable.getSortedRowModel(),
213
+ ...getOption(mode),
214
+ debugTable: debug,
215
+ debugHeaders: debug,
216
+ debugColumns: debug
217
+ });
218
+ return table;
219
+ };
220
+
221
+ const FormDatePicker = ({
222
+ name,
223
+ control,
224
+ disabled,
225
+ ...props
226
+ }) => {
227
+ const { field, fieldState } = reactHookForm.useController({ name, control, disabled });
228
+ const baseProps = {
229
+ ...props,
230
+ id: field.name,
231
+ defaultValue: field.value,
232
+ disabled: field.disabled,
233
+ error: fieldState.invalid,
234
+ onBlur: field.onBlur
235
+ };
236
+ return /* @__PURE__ */ jsxRuntime.jsx(salesFrontendDesignSystem.DatePicker, { ...baseProps });
237
+ };
238
+
239
+ const FormSegmentGroup = ({
240
+ name,
241
+ control,
242
+ disabled,
243
+ ...props
244
+ }) => {
245
+ const { field, fieldState } = reactHookForm.useController({ name, control, disabled });
246
+ return /* @__PURE__ */ jsxRuntime.jsx(
247
+ salesFrontendDesignSystem.SegmentGroup,
248
+ {
249
+ ...props,
250
+ tabIndex: 0,
251
+ id: field.name,
252
+ ref: field.ref,
253
+ defaultValue: field.value,
254
+ disabled: field.disabled,
255
+ error: fieldState.invalid,
256
+ onBlur: field.onBlur,
257
+ onValueChange: (selected) => {
258
+ field.onChange(selected);
259
+ props.onValueChange?.(selected);
260
+ }
261
+ }
262
+ );
263
+ };
264
+
265
+ const FormTextField = ({
266
+ name,
267
+ control,
268
+ disabled,
269
+ error,
270
+ onBlur,
271
+ onChange,
272
+ rootProps,
273
+ ...props
274
+ }) => {
275
+ const { field, fieldState } = reactHookForm.useController({ name, control, disabled });
276
+ return /* @__PURE__ */ jsxRuntime.jsx(
277
+ salesFrontendDesignSystem.FormField.TextField,
278
+ {
279
+ ...props,
280
+ id: field.name,
281
+ size: "medium",
282
+ autoComplete: "off",
283
+ name: field.name,
284
+ value: field.value ?? "",
285
+ disabled: field.disabled,
286
+ error: fieldState.invalid || error,
287
+ onChange: (e) => {
288
+ field.onChange(e);
289
+ onChange?.(e);
290
+ },
291
+ onBlur: (e) => {
292
+ field.onBlur();
293
+ onBlur?.(e);
294
+ },
295
+ rootProps: {
296
+ ...rootProps,
297
+ onClear: () => {
298
+ field.onChange("");
299
+ rootProps?.onClear?.();
300
+ }
301
+ }
302
+ }
303
+ );
304
+ };
305
+
306
+ const cx = classNames.bind(styles$1);
307
+ const StepIndicator = ({ items, currentIndex = 0, defaultValue = "", dotCount = 3 }) => {
308
+ const [current, setCurrent] = React.useState(currentIndex);
309
+ React.useEffect(() => {
310
+ items.map((item, idx) => {
311
+ if (item.value === defaultValue) {
312
+ setCurrent(idx);
313
+ }
314
+ });
315
+ }, [items, defaultValue]);
316
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx("stepper-layout"), children: [
317
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx("stepper"), children: items.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
318
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx("circle", (defaultValue === item.value || current === idx) && "active"), children: item.isCompleted || idx < current ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cx("completed") }) : ++idx }),
319
+ idx < items.length && Array.from({ length: dotCount }).map((_, dotIdx) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: cx("dot") }, `dot-${idx}-${dotIdx}`))
320
+ ] }, `num-${idx}`)) }),
321
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cx("step-labels"), children: items.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: cx((defaultValue === item.value || current === idx) && "active"), children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label ?? item.value }) }, `label-${idx}`)) })
322
+ ] });
323
+ };
324
+
325
+ exports.DataTable = DataTable;
326
+ exports.FormDatePicker = FormDatePicker;
327
+ exports.FormSegmentGroup = FormSegmentGroup;
328
+ exports.FormTextField = FormTextField;
329
+ exports.StepIndicator = StepIndicator;
330
+ exports.useTable = useTable;
331
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/data-table/data-table.tsx","../src/data-table/use-table.ts","../src/form/form-date-picker.tsx","../src/form/form-segment.tsx","../src/form/form-text-field.tsx","../src/step-indicator/step-indicator.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue.call(this, arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn this && this[arg] || arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(this, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, this && this[key] || key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { flexRender, type RowData } from '@tanstack/react-table';\nimport classNames from 'classnames/bind';\nimport styles from './data-table.module.scss';\nimport { DataTableProps } from './data-table.types';\n\nconst cx = classNames.bind(styles);\n\n// isResizing ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด onMouseDown์—์„œ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ,\n// table.getState()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.\nexport const DataTable = <T extends RowData>({\n table,\n height,\n isError,\n isLoading,\n msgText,\n className\n}: DataTableProps<T>) => {\n // sticky prop์€ ์ด์ œ height ์œ ๋ฌด๋กœ ํŒ๋‹จ\n const isSticky = !!height;\n const { columnSizing } = table.getState();\n\n return (\n // 1. Sticky ํ—ค๋”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋กค ์ปจํ…Œ์ด๋„ˆ\n <div className={cx('root', { sticky: isSticky })} style={{ height: height }}>\n {/* 2. table-layout: fixed์™€ ๋„ˆ๋น„ 100%๋ฅผ ์œ„ํ•ด table ํƒœ๊ทธ์— ์Šคํƒ€์ผ ์ ์šฉ */}\n <table\n className={cx('table', className)}\n style={\n {\n // minWidth: table.getCenterTotalSize() // ํ…Œ์ด๋ธ” ์ „์ฒด ๋„ˆ๋น„๋ฅผ ์ปฌ๋Ÿผ ๋„ˆ๋น„์˜ ํ•ฉ์œผ๋กœ ์„ค์ •\n }\n }\n >\n <thead className={cx('table-head', { sticky: isSticky })}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className={cx('table-row')}>\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n colSpan={header.colSpan}\n className={cx('table-head-cell', {\n 'is-resizing': header.column.getIsResizing() // 3. ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ํด๋ž˜์Šค ์ถ”๊ฐ€\n })}\n style={\n header.column.columnDef.size\n ? { width: header.getSize(), minWidth: header.getSize(), maxWidth: header.getSize() } // 4. TanStack์ด ๊ณ„์‚ฐํ•œ ๋„ˆ๋น„๋ฅผ ์ง์ ‘ ์ ์šฉ\n : undefined\n }\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/* 5. ์ปฌ๋Ÿผ ๋ฆฌ์‚ฌ์ด์ง• ํ•ธ๋“ค */}\n {header.column.getCanResize() && (\n <div\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={cx('resize-handle')}\n />\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n\n <tbody className={cx('table-body')}>\n {/* ... ๊ธฐ์กด tbody ๋‚ด์šฉ์€ ๋™์ผ ... */}\n {!isLoading && !isError && table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <tr key={row.id} className={cx('table-row')}>\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n className={cx('table-data-cell')}\n style={\n cell.column.columnDef.size\n ? {\n width: cell.column.getSize(),\n minWidth: cell.column.getSize(),\n maxWidth: cell.column.getSize()\n }\n : undefined\n }\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td className={cx('feedback-cell')} colSpan={table.getVisibleLeafColumns().length}>\n {isLoading ? <div>Loading...</div> : <div>{msgText || (isError ? 'Error' : 'No data')}</div>}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n","'use client';\n\nimport React, { useState } from 'react';\n\nimport {\n type PaginationState,\n type RowData,\n type RowSelectionState,\n type TableOptions,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\n\ntype RenderingMode = 'CSR' | 'SSR';\n\nexport const useTable = <TData extends RowData>({\n data,\n columns,\n defaultColumn = { size: 150, enableResizing: true },\n initialState,\n onSortingChange,\n enableRowSelection,\n enableColumnResizing,\n mode = 'SSR',\n debug\n}: Pick<\n TableOptions<TData>,\n | 'data'\n | 'columns'\n | 'initialState'\n | 'onSortingChange'\n | 'enableRowSelection'\n | 'enableColumnResizing'\n | 'defaultColumn'\n> & {\n mode?: RenderingMode;\n debug?: boolean;\n}) => {\n const [sorting, setSorting] = React.useState(initialState?.sorting || []);\n const [rowSelection, setRowSelection] = useState<RowSelectionState>(initialState?.rowSelection || {});\n const [pagination, setPagination] = React.useState((initialState?.pagination as PaginationState) || {});\n const [columnVisibility, setColumnVisibility] = React.useState(initialState?.columnVisibility || {});\n\n const getOption = (mode: RenderingMode): Partial<TableOptions<TData>> => {\n if (mode === 'SSR') {\n return {\n manualSorting: true,\n manualPagination: true,\n onSortingChange\n };\n } else {\n return {\n getPaginationRowModel: getPaginationRowModel(),\n onPaginationChange: setPagination,\n onSortingChange: setSorting\n };\n }\n };\n\n const table = useReactTable({\n data,\n columns,\n columnResizeMode: 'onChange',\n defaultColumn,\n enableColumnResizing,\n enableRowSelection,\n initialState,\n state: {\n sorting,\n rowSelection,\n pagination,\n columnVisibility\n },\n onRowSelectionChange: setRowSelection,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n ...getOption(mode),\n\n debugTable: debug,\n debugHeaders: debug,\n debugColumns: debug\n });\n\n return table;\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { DatePicker, type DatePickerProps } from 'sales-frontend-design-system';\n\nexport const FormDatePicker = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & DatePickerProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n const baseProps: DatePickerProps = {\n ...props,\n id: field.name,\n defaultValue: field.value,\n disabled: field.disabled,\n error: fieldState.invalid,\n onBlur: field.onBlur\n };\n\n // if (props.mode === 'range') {\n // return (\n // <DatePicker\n // {...baseProps}\n // onValueChange={(selected: IPeriodDate) => {\n // if (props.mode === 'range') {\n // }\n // field.onChange(selected);\n // // props.onValueChange?.(selected);\n // }}\n // />\n // );\n // }\n\n return <DatePicker {...baseProps} />;\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { SegmentGroup, type SegmentGroupProps } from 'sales-frontend-design-system';\n\nexport const FormSegmentGroup = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & SegmentGroupProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n return (\n <SegmentGroup\n {...props}\n tabIndex={0}\n id={field.name}\n ref={field.ref}\n defaultValue={field.value}\n disabled={field.disabled}\n error={fieldState.invalid}\n onBlur={field.onBlur}\n onValueChange={(selected) => {\n field.onChange(selected);\n props.onValueChange?.(selected);\n }}\n />\n );\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { FormField } from 'sales-frontend-design-system';\n\nexport const FormTextField = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n error,\n onBlur,\n onChange,\n rootProps,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & FormField.ITextFieldProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n return (\n <FormField.TextField\n {...props}\n id={field.name}\n size=\"medium\"\n autoComplete=\"off\"\n name={field.name}\n value={field.value ?? ''}\n disabled={field.disabled}\n error={fieldState.invalid || error}\n onChange={(e) => {\n field.onChange(e);\n onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n onBlur?.(e);\n }}\n rootProps={{\n ...rootProps,\n onClear: () => {\n field.onChange('');\n rootProps?.onClear?.();\n }\n }}\n />\n );\n};\n","import React from 'react';\n\nimport classNames from 'classnames/bind';\nimport styles from './step-indicator.module.scss';\nimport type { IStepIndicatorProps } from './step-indicator.types';\n\nconst cx = classNames.bind(styles);\n\nexport const StepIndicator = ({ items, currentIndex = 0, defaultValue = '', dotCount = 3 }: IStepIndicatorProps) => {\n const [current, setCurrent] = React.useState(currentIndex);\n\n React.useEffect(() => {\n items.map((item, idx) => {\n if (item.value === defaultValue) {\n setCurrent(idx);\n }\n });\n }, [items, defaultValue]);\n\n return (\n <div className={cx('stepper-layout')}>\n <div className={cx('stepper')}>\n {items.map((item, idx) => (\n <React.Fragment key={`num-${idx}`}>\n <div className={cx('circle', (defaultValue === item.value || current === idx) && 'active')}>\n {item.isCompleted || idx < current ? <span className={cx('completed')} /> : ++idx}\n </div>\n\n {/* ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ dot ๋ Œ๋”๋ง */}\n {idx < items.length &&\n Array.from({ length: dotCount }).map((_, dotIdx) => (\n <span key={`dot-${idx}-${dotIdx}`} className={cx('dot')} />\n ))}\n </React.Fragment>\n ))}\n </div>\n\n <ul className={cx('step-labels')}>\n {items.map((item, idx) => (\n <li key={`label-${idx}`} className={cx((defaultValue === item.value || current === idx) && 'active')}>\n <span>{item.label ?? item.value}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n"],"names":["cx","jsx","jsxs","flexRender","useState","mode","getPaginationRowModel","useReactTable","getCoreRowModel","getSortedRowModel","useController","DatePicker","SegmentGroup","FormField","styles"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,53 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { RowData, Table, TableOptions } from '@tanstack/react-table';
3
+ import { FieldValues, UseControllerProps } from 'react-hook-form';
4
+ import { DatePickerProps, SegmentGroupProps, FormField } from 'sales-frontend-design-system';
2
5
 
3
- interface Props {
4
- test: string;
6
+ type DataTableProps<T extends RowData> = {
7
+ table: Table<T>;
8
+ height?: string;
9
+ isError?: boolean;
10
+ isLoading?: boolean;
11
+ msgText?: React.ReactNode;
12
+ className?: string;
13
+ };
14
+
15
+ declare const DataTable: <T extends RowData>({ table, height, isError, isLoading, msgText, className }: DataTableProps<T>) => react_jsx_runtime.JSX.Element;
16
+
17
+ type RenderingMode = 'CSR' | 'SSR';
18
+ declare const useTable: <TData extends RowData>({ data, columns, defaultColumn, initialState, onSortingChange, enableRowSelection, enableColumnResizing, mode, debug }: Pick<TableOptions<TData>, "data" | "columns" | "initialState" | "onSortingChange" | "enableRowSelection" | "enableColumnResizing" | "defaultColumn"> & {
19
+ mode?: RenderingMode;
20
+ debug?: boolean;
21
+ }) => any;
22
+
23
+ declare const FormDatePicker: <TFormValues extends FieldValues>({ name, control, disabled, ...props }: Pick<UseControllerProps<TFormValues>, "name" | "control" | "disabled"> & DatePickerProps) => react_jsx_runtime.JSX.Element;
24
+
25
+ declare const FormSegmentGroup: <TFormValues extends FieldValues>({ name, control, disabled, ...props }: Pick<UseControllerProps<TFormValues>, "name" | "control" | "disabled"> & SegmentGroupProps) => react_jsx_runtime.JSX.Element;
26
+
27
+ declare const FormTextField: <TFormValues extends FieldValues>({ name, control, disabled, error, onBlur, onChange, rootProps, ...props }: Pick<UseControllerProps<TFormValues>, "name" | "control" | "disabled"> & FormField.ITextFieldProps) => react_jsx_runtime.JSX.Element;
28
+
29
+ interface IStepItems {
30
+ /** Step์˜ ๊ณ ์œ  ์‹๋ณ„ ๊ฐ’ */
31
+ value: string;
32
+ /** Step์— ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋  ํ…์ŠคํŠธ ๋ผ๋ฒจ */
33
+ label?: string;
34
+ /** ์™„๋ฃŒ์ƒํƒœ ์—ฌ๋ถ€ */
35
+ isCompleted?: boolean;
36
+ /** Step์— ํ•ด๋‹นํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ */
37
+ component?: React.ReactNode;
5
38
  }
6
- declare const Hello: ({ test }: Props) => react_jsx_runtime.JSX.Element;
39
+ interface IStepIndicatorProps {
40
+ /** ๊ฐ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด (ํ…์ŠคํŠธ, ์ƒํƒœ ๋“ฑ)๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด */
41
+ items: IStepItems[];
42
+ /** ํ˜„์žฌ ์„ ํƒ๋œ ๋‹จ๊ณ„์˜ ์ธ๋ฑ์Šค (์™ธ๋ถ€ ์ œ์–ด์šฉ) */
43
+ currentIndex?: number;
44
+ /** ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ตœ์ดˆ ๋งˆ์šดํŠธ๋  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์„ ํƒ๋  ๊ฐ’ (value ๊ธฐ์ค€) */
45
+ defaultValue?: string;
46
+ /** ํ‘œ์‹œํ•  dot์˜ ์ด ๊ฐœ์ˆ˜ (items ๋ฐฐ์—ด๊ณผ ๋ณ„๊ฐœ๋กœ ์‹œ๊ฐ์  ํ‘œ์‹œ๋งŒ ์กฐ์ ˆํ•  ๋•Œ ์‚ฌ์šฉ) */
47
+ dotCount?: number;
48
+ }
49
+
50
+ declare const StepIndicator: ({ items, currentIndex, defaultValue, dotCount }: IStepIndicatorProps) => react_jsx_runtime.JSX.Element;
7
51
 
8
- export { Hello };
52
+ export { DataTable, FormDatePicker, FormSegmentGroup, FormTextField, StepIndicator, useTable };
53
+ export type { DataTableProps, IStepIndicatorProps, IStepItems };
@@ -0,0 +1,324 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { flexRender, useReactTable, getSortedRowModel, getCoreRowModel, getPaginationRowModel } from '@tanstack/react-table';
3
+ import styles from './data-table/data-table.module.scss';
4
+ import React, { useState } from 'react';
5
+ import { useController } from 'react-hook-form';
6
+ import { DatePicker, SegmentGroup, FormField } from 'sales-frontend-design-system';
7
+ import styles$1 from './step-indicator/step-indicator.module.scss';
8
+
9
+ function getDefaultExportFromCjs (x) {
10
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
11
+ }
12
+
13
+ var bind = {exports: {}};
14
+
15
+ /*!
16
+ Copyright (c) 2018 Jed Watson.
17
+ Licensed under the MIT License (MIT), see
18
+ http://jedwatson.github.io/classnames
19
+ */
20
+
21
+ var hasRequiredBind;
22
+
23
+ function requireBind () {
24
+ if (hasRequiredBind) return bind.exports;
25
+ hasRequiredBind = 1;
26
+ (function (module) {
27
+ /* global define */
28
+
29
+ (function () {
30
+
31
+ var hasOwn = {}.hasOwnProperty;
32
+
33
+ function classNames () {
34
+ var classes = '';
35
+
36
+ for (var i = 0; i < arguments.length; i++) {
37
+ var arg = arguments[i];
38
+ if (arg) {
39
+ classes = appendClass(classes, parseValue.call(this, arg));
40
+ }
41
+ }
42
+
43
+ return classes;
44
+ }
45
+
46
+ function parseValue (arg) {
47
+ if (typeof arg === 'string' || typeof arg === 'number') {
48
+ return this && this[arg] || arg;
49
+ }
50
+
51
+ if (typeof arg !== 'object') {
52
+ return '';
53
+ }
54
+
55
+ if (Array.isArray(arg)) {
56
+ return classNames.apply(this, arg);
57
+ }
58
+
59
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
60
+ return arg.toString();
61
+ }
62
+
63
+ var classes = '';
64
+
65
+ for (var key in arg) {
66
+ if (hasOwn.call(arg, key) && arg[key]) {
67
+ classes = appendClass(classes, this && this[key] || key);
68
+ }
69
+ }
70
+
71
+ return classes;
72
+ }
73
+
74
+ function appendClass (value, newClass) {
75
+ if (!newClass) {
76
+ return value;
77
+ }
78
+
79
+ if (value) {
80
+ return value + ' ' + newClass;
81
+ }
82
+
83
+ return value + newClass;
84
+ }
85
+
86
+ if (module.exports) {
87
+ classNames.default = classNames;
88
+ module.exports = classNames;
89
+ } else {
90
+ window.classNames = classNames;
91
+ }
92
+ }());
93
+ } (bind));
94
+ return bind.exports;
95
+ }
96
+
97
+ var bindExports = requireBind();
98
+ var classNames = /*@__PURE__*/getDefaultExportFromCjs(bindExports);
99
+
100
+ const cx$1 = classNames.bind(styles);
101
+ const DataTable = ({
102
+ table,
103
+ height,
104
+ isError,
105
+ isLoading,
106
+ msgText,
107
+ className
108
+ }) => {
109
+ const isSticky = !!height;
110
+ const { columnSizing } = table.getState();
111
+ return (
112
+ // 1. Sticky ํ—ค๋”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋กค ์ปจํ…Œ์ด๋„ˆ
113
+ /* @__PURE__ */ jsx("div", { className: cx$1("root", { sticky: isSticky }), style: { height }, children: /* @__PURE__ */ jsxs(
114
+ "table",
115
+ {
116
+ className: cx$1("table", className),
117
+ style: {
118
+ // minWidth: table.getCenterTotalSize() // ํ…Œ์ด๋ธ” ์ „์ฒด ๋„ˆ๋น„๋ฅผ ์ปฌ๋Ÿผ ๋„ˆ๋น„์˜ ํ•ฉ์œผ๋กœ ์„ค์ •
119
+ },
120
+ children: [
121
+ /* @__PURE__ */ jsx("thead", { className: cx$1("table-head", { sticky: isSticky }), children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx("tr", { className: cx$1("table-row"), children: headerGroup.headers.map((header) => /* @__PURE__ */ jsxs(
122
+ "th",
123
+ {
124
+ colSpan: header.colSpan,
125
+ className: cx$1("table-head-cell", {
126
+ "is-resizing": header.column.getIsResizing()
127
+ // 3. ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ํด๋ž˜์Šค ์ถ”๊ฐ€
128
+ }),
129
+ style: header.column.columnDef.size ? { width: header.getSize(), minWidth: header.getSize(), maxWidth: header.getSize() } : void 0,
130
+ children: [
131
+ header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()),
132
+ header.column.getCanResize() && /* @__PURE__ */ jsx(
133
+ "div",
134
+ {
135
+ onMouseDown: header.getResizeHandler(),
136
+ onTouchStart: header.getResizeHandler(),
137
+ className: cx$1("resize-handle")
138
+ }
139
+ )
140
+ ]
141
+ },
142
+ header.id
143
+ )) }, headerGroup.id)) }),
144
+ /* @__PURE__ */ jsx("tbody", { className: cx$1("table-body"), children: !isLoading && !isError && table.getRowModel().rows.length > 0 ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx("tr", { className: cx$1("table-row"), children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(
145
+ "td",
146
+ {
147
+ className: cx$1("table-data-cell"),
148
+ style: cell.column.columnDef.size ? {
149
+ width: cell.column.getSize(),
150
+ minWidth: cell.column.getSize(),
151
+ maxWidth: cell.column.getSize()
152
+ } : void 0,
153
+ children: flexRender(cell.column.columnDef.cell, cell.getContext())
154
+ },
155
+ cell.id
156
+ )) }, row.id)) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { className: cx$1("feedback-cell"), colSpan: table.getVisibleLeafColumns().length, children: isLoading ? /* @__PURE__ */ jsx("div", { children: "Loading..." }) : /* @__PURE__ */ jsx("div", { children: msgText || (isError ? "Error" : "No data") }) }) }) })
157
+ ]
158
+ }
159
+ ) })
160
+ );
161
+ };
162
+
163
+ const useTable = ({
164
+ data,
165
+ columns,
166
+ defaultColumn = { size: 150, enableResizing: true },
167
+ initialState,
168
+ onSortingChange,
169
+ enableRowSelection,
170
+ enableColumnResizing,
171
+ mode = "SSR",
172
+ debug
173
+ }) => {
174
+ const [sorting, setSorting] = React.useState(initialState?.sorting || []);
175
+ const [rowSelection, setRowSelection] = useState(initialState?.rowSelection || {});
176
+ const [pagination, setPagination] = React.useState(initialState?.pagination || {});
177
+ const [columnVisibility, setColumnVisibility] = React.useState(initialState?.columnVisibility || {});
178
+ const getOption = (mode2) => {
179
+ if (mode2 === "SSR") {
180
+ return {
181
+ manualSorting: true,
182
+ manualPagination: true,
183
+ onSortingChange
184
+ };
185
+ } else {
186
+ return {
187
+ getPaginationRowModel: getPaginationRowModel(),
188
+ onPaginationChange: setPagination,
189
+ onSortingChange: setSorting
190
+ };
191
+ }
192
+ };
193
+ const table = useReactTable({
194
+ data,
195
+ columns,
196
+ columnResizeMode: "onChange",
197
+ defaultColumn,
198
+ enableColumnResizing,
199
+ enableRowSelection,
200
+ initialState,
201
+ state: {
202
+ sorting,
203
+ rowSelection,
204
+ pagination,
205
+ columnVisibility
206
+ },
207
+ onRowSelectionChange: setRowSelection,
208
+ onColumnVisibilityChange: setColumnVisibility,
209
+ getCoreRowModel: getCoreRowModel(),
210
+ getSortedRowModel: getSortedRowModel(),
211
+ ...getOption(mode),
212
+ debugTable: debug,
213
+ debugHeaders: debug,
214
+ debugColumns: debug
215
+ });
216
+ return table;
217
+ };
218
+
219
+ const FormDatePicker = ({
220
+ name,
221
+ control,
222
+ disabled,
223
+ ...props
224
+ }) => {
225
+ const { field, fieldState } = useController({ name, control, disabled });
226
+ const baseProps = {
227
+ ...props,
228
+ id: field.name,
229
+ defaultValue: field.value,
230
+ disabled: field.disabled,
231
+ error: fieldState.invalid,
232
+ onBlur: field.onBlur
233
+ };
234
+ return /* @__PURE__ */ jsx(DatePicker, { ...baseProps });
235
+ };
236
+
237
+ const FormSegmentGroup = ({
238
+ name,
239
+ control,
240
+ disabled,
241
+ ...props
242
+ }) => {
243
+ const { field, fieldState } = useController({ name, control, disabled });
244
+ return /* @__PURE__ */ jsx(
245
+ SegmentGroup,
246
+ {
247
+ ...props,
248
+ tabIndex: 0,
249
+ id: field.name,
250
+ ref: field.ref,
251
+ defaultValue: field.value,
252
+ disabled: field.disabled,
253
+ error: fieldState.invalid,
254
+ onBlur: field.onBlur,
255
+ onValueChange: (selected) => {
256
+ field.onChange(selected);
257
+ props.onValueChange?.(selected);
258
+ }
259
+ }
260
+ );
261
+ };
262
+
263
+ const FormTextField = ({
264
+ name,
265
+ control,
266
+ disabled,
267
+ error,
268
+ onBlur,
269
+ onChange,
270
+ rootProps,
271
+ ...props
272
+ }) => {
273
+ const { field, fieldState } = useController({ name, control, disabled });
274
+ return /* @__PURE__ */ jsx(
275
+ FormField.TextField,
276
+ {
277
+ ...props,
278
+ id: field.name,
279
+ size: "medium",
280
+ autoComplete: "off",
281
+ name: field.name,
282
+ value: field.value ?? "",
283
+ disabled: field.disabled,
284
+ error: fieldState.invalid || error,
285
+ onChange: (e) => {
286
+ field.onChange(e);
287
+ onChange?.(e);
288
+ },
289
+ onBlur: (e) => {
290
+ field.onBlur();
291
+ onBlur?.(e);
292
+ },
293
+ rootProps: {
294
+ ...rootProps,
295
+ onClear: () => {
296
+ field.onChange("");
297
+ rootProps?.onClear?.();
298
+ }
299
+ }
300
+ }
301
+ );
302
+ };
303
+
304
+ const cx = classNames.bind(styles$1);
305
+ const StepIndicator = ({ items, currentIndex = 0, defaultValue = "", dotCount = 3 }) => {
306
+ const [current, setCurrent] = React.useState(currentIndex);
307
+ React.useEffect(() => {
308
+ items.map((item, idx) => {
309
+ if (item.value === defaultValue) {
310
+ setCurrent(idx);
311
+ }
312
+ });
313
+ }, [items, defaultValue]);
314
+ return /* @__PURE__ */ jsxs("div", { className: cx("stepper-layout"), children: [
315
+ /* @__PURE__ */ jsx("div", { className: cx("stepper"), children: items.map((item, idx) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
316
+ /* @__PURE__ */ jsx("div", { className: cx("circle", (defaultValue === item.value || current === idx) && "active"), children: item.isCompleted || idx < current ? /* @__PURE__ */ jsx("span", { className: cx("completed") }) : ++idx }),
317
+ idx < items.length && Array.from({ length: dotCount }).map((_, dotIdx) => /* @__PURE__ */ jsx("span", { className: cx("dot") }, `dot-${idx}-${dotIdx}`))
318
+ ] }, `num-${idx}`)) }),
319
+ /* @__PURE__ */ jsx("ul", { className: cx("step-labels"), children: items.map((item, idx) => /* @__PURE__ */ jsx("li", { className: cx((defaultValue === item.value || current === idx) && "active"), children: /* @__PURE__ */ jsx("span", { children: item.label ?? item.value }) }, `label-${idx}`)) })
320
+ ] });
321
+ };
322
+
323
+ export { DataTable, FormDatePicker, FormSegmentGroup, FormTextField, StepIndicator, useTable };
324
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/data-table/data-table.tsx","../src/data-table/use-table.ts","../src/form/form-date-picker.tsx","../src/form/form-segment.tsx","../src/form/form-text-field.tsx","../src/step-indicator/step-indicator.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue.call(this, arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn this && this[arg] || arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(this, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, this && this[key] || key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { flexRender, type RowData } from '@tanstack/react-table';\nimport classNames from 'classnames/bind';\nimport styles from './data-table.module.scss';\nimport { DataTableProps } from './data-table.types';\n\nconst cx = classNames.bind(styles);\n\n// isResizing ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด onMouseDown์—์„œ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ,\n// table.getState()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.\nexport const DataTable = <T extends RowData>({\n table,\n height,\n isError,\n isLoading,\n msgText,\n className\n}: DataTableProps<T>) => {\n // sticky prop์€ ์ด์ œ height ์œ ๋ฌด๋กœ ํŒ๋‹จ\n const isSticky = !!height;\n const { columnSizing } = table.getState();\n\n return (\n // 1. Sticky ํ—ค๋”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋กค ์ปจํ…Œ์ด๋„ˆ\n <div className={cx('root', { sticky: isSticky })} style={{ height: height }}>\n {/* 2. table-layout: fixed์™€ ๋„ˆ๋น„ 100%๋ฅผ ์œ„ํ•ด table ํƒœ๊ทธ์— ์Šคํƒ€์ผ ์ ์šฉ */}\n <table\n className={cx('table', className)}\n style={\n {\n // minWidth: table.getCenterTotalSize() // ํ…Œ์ด๋ธ” ์ „์ฒด ๋„ˆ๋น„๋ฅผ ์ปฌ๋Ÿผ ๋„ˆ๋น„์˜ ํ•ฉ์œผ๋กœ ์„ค์ •\n }\n }\n >\n <thead className={cx('table-head', { sticky: isSticky })}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className={cx('table-row')}>\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n colSpan={header.colSpan}\n className={cx('table-head-cell', {\n 'is-resizing': header.column.getIsResizing() // 3. ๋ฆฌ์‚ฌ์ด์ง• ์ค‘์ผ ๋•Œ ํด๋ž˜์Šค ์ถ”๊ฐ€\n })}\n style={\n header.column.columnDef.size\n ? { width: header.getSize(), minWidth: header.getSize(), maxWidth: header.getSize() } // 4. TanStack์ด ๊ณ„์‚ฐํ•œ ๋„ˆ๋น„๋ฅผ ์ง์ ‘ ์ ์šฉ\n : undefined\n }\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/* 5. ์ปฌ๋Ÿผ ๋ฆฌ์‚ฌ์ด์ง• ํ•ธ๋“ค */}\n {header.column.getCanResize() && (\n <div\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={cx('resize-handle')}\n />\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n\n <tbody className={cx('table-body')}>\n {/* ... ๊ธฐ์กด tbody ๋‚ด์šฉ์€ ๋™์ผ ... */}\n {!isLoading && !isError && table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <tr key={row.id} className={cx('table-row')}>\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n className={cx('table-data-cell')}\n style={\n cell.column.columnDef.size\n ? {\n width: cell.column.getSize(),\n minWidth: cell.column.getSize(),\n maxWidth: cell.column.getSize()\n }\n : undefined\n }\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td className={cx('feedback-cell')} colSpan={table.getVisibleLeafColumns().length}>\n {isLoading ? <div>Loading...</div> : <div>{msgText || (isError ? 'Error' : 'No data')}</div>}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n","'use client';\n\nimport React, { useState } from 'react';\n\nimport {\n type PaginationState,\n type RowData,\n type RowSelectionState,\n type TableOptions,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\n\ntype RenderingMode = 'CSR' | 'SSR';\n\nexport const useTable = <TData extends RowData>({\n data,\n columns,\n defaultColumn = { size: 150, enableResizing: true },\n initialState,\n onSortingChange,\n enableRowSelection,\n enableColumnResizing,\n mode = 'SSR',\n debug\n}: Pick<\n TableOptions<TData>,\n | 'data'\n | 'columns'\n | 'initialState'\n | 'onSortingChange'\n | 'enableRowSelection'\n | 'enableColumnResizing'\n | 'defaultColumn'\n> & {\n mode?: RenderingMode;\n debug?: boolean;\n}) => {\n const [sorting, setSorting] = React.useState(initialState?.sorting || []);\n const [rowSelection, setRowSelection] = useState<RowSelectionState>(initialState?.rowSelection || {});\n const [pagination, setPagination] = React.useState((initialState?.pagination as PaginationState) || {});\n const [columnVisibility, setColumnVisibility] = React.useState(initialState?.columnVisibility || {});\n\n const getOption = (mode: RenderingMode): Partial<TableOptions<TData>> => {\n if (mode === 'SSR') {\n return {\n manualSorting: true,\n manualPagination: true,\n onSortingChange\n };\n } else {\n return {\n getPaginationRowModel: getPaginationRowModel(),\n onPaginationChange: setPagination,\n onSortingChange: setSorting\n };\n }\n };\n\n const table = useReactTable({\n data,\n columns,\n columnResizeMode: 'onChange',\n defaultColumn,\n enableColumnResizing,\n enableRowSelection,\n initialState,\n state: {\n sorting,\n rowSelection,\n pagination,\n columnVisibility\n },\n onRowSelectionChange: setRowSelection,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n ...getOption(mode),\n\n debugTable: debug,\n debugHeaders: debug,\n debugColumns: debug\n });\n\n return table;\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { DatePicker, type DatePickerProps } from 'sales-frontend-design-system';\n\nexport const FormDatePicker = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & DatePickerProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n const baseProps: DatePickerProps = {\n ...props,\n id: field.name,\n defaultValue: field.value,\n disabled: field.disabled,\n error: fieldState.invalid,\n onBlur: field.onBlur\n };\n\n // if (props.mode === 'range') {\n // return (\n // <DatePicker\n // {...baseProps}\n // onValueChange={(selected: IPeriodDate) => {\n // if (props.mode === 'range') {\n // }\n // field.onChange(selected);\n // // props.onValueChange?.(selected);\n // }}\n // />\n // );\n // }\n\n return <DatePicker {...baseProps} />;\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { SegmentGroup, type SegmentGroupProps } from 'sales-frontend-design-system';\n\nexport const FormSegmentGroup = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & SegmentGroupProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n return (\n <SegmentGroup\n {...props}\n tabIndex={0}\n id={field.name}\n ref={field.ref}\n defaultValue={field.value}\n disabled={field.disabled}\n error={fieldState.invalid}\n onBlur={field.onBlur}\n onValueChange={(selected) => {\n field.onChange(selected);\n props.onValueChange?.(selected);\n }}\n />\n );\n};\n","import { useController, type FieldValues, type UseControllerProps } from 'react-hook-form';\nimport { FormField } from 'sales-frontend-design-system';\n\nexport const FormTextField = <TFormValues extends FieldValues>({\n name,\n control,\n disabled,\n error,\n onBlur,\n onChange,\n rootProps,\n ...props\n}: Pick<UseControllerProps<TFormValues>, 'name' | 'control' | 'disabled'> & FormField.ITextFieldProps) => {\n const { field, fieldState } = useController({ name, control, disabled });\n\n return (\n <FormField.TextField\n {...props}\n id={field.name}\n size=\"medium\"\n autoComplete=\"off\"\n name={field.name}\n value={field.value ?? ''}\n disabled={field.disabled}\n error={fieldState.invalid || error}\n onChange={(e) => {\n field.onChange(e);\n onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n onBlur?.(e);\n }}\n rootProps={{\n ...rootProps,\n onClear: () => {\n field.onChange('');\n rootProps?.onClear?.();\n }\n }}\n />\n );\n};\n","import React from 'react';\n\nimport classNames from 'classnames/bind';\nimport styles from './step-indicator.module.scss';\nimport type { IStepIndicatorProps } from './step-indicator.types';\n\nconst cx = classNames.bind(styles);\n\nexport const StepIndicator = ({ items, currentIndex = 0, defaultValue = '', dotCount = 3 }: IStepIndicatorProps) => {\n const [current, setCurrent] = React.useState(currentIndex);\n\n React.useEffect(() => {\n items.map((item, idx) => {\n if (item.value === defaultValue) {\n setCurrent(idx);\n }\n });\n }, [items, defaultValue]);\n\n return (\n <div className={cx('stepper-layout')}>\n <div className={cx('stepper')}>\n {items.map((item, idx) => (\n <React.Fragment key={`num-${idx}`}>\n <div className={cx('circle', (defaultValue === item.value || current === idx) && 'active')}>\n {item.isCompleted || idx < current ? <span className={cx('completed')} /> : ++idx}\n </div>\n\n {/* ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ dot ๋ Œ๋”๋ง */}\n {idx < items.length &&\n Array.from({ length: dotCount }).map((_, dotIdx) => (\n <span key={`dot-${idx}-${dotIdx}`} className={cx('dot')} />\n ))}\n </React.Fragment>\n ))}\n </div>\n\n <ul className={cx('step-labels')}>\n {items.map((item, idx) => (\n <li key={`label-${idx}`} className={cx((defaultValue === item.value || current === idx) && 'active')}>\n <span>{item.label ?? item.value}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n"],"names":["cx","mode","styles"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,65 @@
1
+ @use 'sales-frontend-design-system/design-system-context' as *;
2
+
3
+ .stepper-layout {
4
+ display: flex;
5
+ gap: padding(medium);
6
+
7
+ .stepper {
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: center;
11
+ justify-content: space-around;
12
+ padding: padding(medium) padding(zero);
13
+
14
+ .circle {
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ width: 24px;
19
+ height: 24px;
20
+
21
+ @include apply-typography(body3);
22
+
23
+ color: colors(text-body_0);
24
+ background-color: colors(text-neutral_2);
25
+ border-radius: radius-basic(full);
26
+
27
+ .completed {
28
+ width: 20px;
29
+ height: 20px;
30
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.7071 6.29289C16.0976 6.68342 16.0976 7.31658 15.7071 7.70711L9.70711 13.7071C9.31658 14.0976 8.68342 14.0976 8.29289 13.7071L4.29289 9.70711C3.90237 9.31658 3.90237 8.68342 4.29289 8.29289C4.68342 7.90237 5.31658 7.90237 5.70711 8.29289L9 11.5858L14.2929 6.29289C14.6834 5.90237 15.3166 5.90237 15.7071 6.29289Z' fill='white'/%3E%3C/svg%3E");
31
+ }
32
+
33
+ &.active {
34
+ background-color: colors(text-body_1);
35
+ }
36
+ }
37
+
38
+ .dot {
39
+ width: 2px;
40
+ height: 2px;
41
+ background-color: colors(text-neutral_2);
42
+ border-radius: radius-basic(full);
43
+ }
44
+ }
45
+
46
+ .step-labels {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: padding(xsmall);
50
+ color: colors(text-neutral_1);
51
+
52
+ @include apply-typography(subtitle3);
53
+
54
+ li {
55
+ padding: padding(medium) padding(large);
56
+ border: 2px solid colors(border-neutral_3);
57
+ border-radius: radius-basic(medium);
58
+ }
59
+
60
+ li.active {
61
+ color: colors(text-body);
62
+ border: 2px solid colors(border-neutral_6);
63
+ }
64
+ }
65
+ }
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "sales-frontend-components",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "private": false,
5
5
  "type": "module",
6
- "main": "./dist/index.js",
6
+ "main": "dist/index.cjs.js",
7
+ "module": "dist/index.esm.js",
7
8
  "types": "dist/index.d.ts",
8
9
  "files": [
9
10
  "dist"
@@ -12,7 +13,7 @@
12
13
  ".": {
13
14
  "import": {
14
15
  "types": "./dist/index.d.ts",
15
- "default": "./dist/index.js"
16
+ "default": "./dist/index.esm.js"
16
17
  },
17
18
  "require": {
18
19
  "types": "./dist/index.d.ts",
@@ -21,28 +22,48 @@
21
22
  }
22
23
  },
23
24
  "devDependencies": {
25
+ "@faker-js/faker": "^9.8.0",
26
+ "@hookform/resolvers": "^5.1.1",
27
+ "@rollup/plugin-commonjs": "^28.0.3",
28
+ "@rollup/plugin-node-resolve": "^16.0.1",
29
+ "@tanstack/react-table": "^8.0.0",
24
30
  "@types/node": "^22.14.0",
25
31
  "@types/react": "19.1.0",
26
32
  "@types/react-dom": "19.1.1",
33
+ "concurrently": "^9.1.2",
34
+ "copyfiles": "^2.4.1",
35
+ "esbuild": "^0.25.3",
27
36
  "react": "^19.1.0",
37
+ "react-hook-form": "^7.58.1",
38
+ "rollup": "^4.40.0",
39
+ "rollup-plugin-dts": "^6.2.1",
40
+ "rollup-plugin-esbuild": "^6.2.1",
41
+ "rollup-plugin-peer-deps-external": "^2.2.4",
28
42
  "sass": "^1.86.3",
29
- "tsup": "^8.4.0",
30
43
  "typescript": "5.8.2",
31
- "sales-frontend-design-system": "0.0.3",
44
+ "zod": "^3.25.67",
45
+ "sales-frontend-design-system": "0.0.6",
32
46
  "sales-frontend-typescript-config": "0.0.2",
33
47
  "eslint-config-sales-frontend-eslint-config-v8": "^0.0.5"
34
48
  },
35
49
  "peerDependencies": {
50
+ "@tanstack/react-table": "^8.0.0",
36
51
  "react": ">=18.0.0",
37
52
  "react-dom": ">=18.0.0",
38
- "sales-frontend-design-system": ">=0.0.0"
53
+ "react-hook-form": "^7.58.1",
54
+ "sales-frontend-design-system": "^0.0.6"
55
+ },
56
+ "dependencies": {
57
+ "classnames": "^2.5.1"
39
58
  },
40
59
  "scripts": {
41
60
  "lint": "eslint . --max-warnings 0",
42
61
  "generate:component": "turbo gen react-component",
43
62
  "check-types": "tsc --noEmit",
44
- "storybook": "tsup --watch",
45
- "build": "tsup",
63
+ "storybook": "concurrently \"rollup -c -w\" \"pnpm copy-scss:watch\"",
64
+ "copy-scss": "copyfiles -u 1 'src/**/*.scss' dist",
65
+ "copy-scss:watch": "copyfiles -w -u 1 'src/**/*.scss' dist",
66
+ "build": "rollup -c && pnpm copy-scss",
46
67
  "release": "pnpm publish"
47
68
  }
48
69
  }