fone-design-system_v2 1.0.211 → 1.0.213

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.
@@ -1,3 +1,3 @@
1
1
  import { Table2Props } from './types';
2
- declare const Table2: <T extends object>({ data, columns, onChange, checkbox, no, radio, selectedCell, onRowClick, onRowDoubleClick, isLoading, rowCountChangeScrollPosition, scrollTo, isEditMode, rowClickTriggerIdx, resetTriggerOnDataChange, reorderMode, onReorder, onCellClick, rowHeight, headerRowHeight, sx, }: Table2Props) => import("react/jsx-runtime").JSX.Element;
2
+ declare const Table2: <T extends object>({ data, columns, onChange, checkbox, no, radio, selectedCell, onRowClick, onRowDoubleClick, isLoading, rowCountChangeScrollPosition, scrollTo, isEditMode, rowClickTriggerIdx, resetTriggerOnDataChange, reorderMode, onReorder, onCellClick, getRowProps, rowHeight, headerRowHeight, sx, }: Table2Props) => import("react/jsx-runtime").JSX.Element;
3
3
  export default Table2;
@@ -5,6 +5,7 @@ interface Props<T extends object = any> {
5
5
  idx: number;
6
6
  isHover: boolean;
7
7
  isRowClicked: boolean;
8
+ isRowActive?: boolean;
8
9
  selectedCellInfo: {
9
10
  rowIndex: number;
10
11
  colIndex: number;
@@ -16,8 +17,9 @@ interface Props<T extends object = any> {
16
17
  setRowSelection: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;
17
18
  rowSelection: Record<string, boolean>;
18
19
  radio?: boolean;
20
+ reorderMode?: boolean;
19
21
  dragHandleProps?: DraggableProvidedDragHandleProps | null;
20
22
  rowHeight?: number;
21
23
  }
22
- declare const Cell: <T extends object>({ onCellClick, cell, idx, isHover, isRowClicked, selectedCellInfo, showSelectedCellBorder, onChange, setTableData, setRowSelection, rowSelection, radio, dragHandleProps, rowHeight, }: Props<T>) => import("react/jsx-runtime").JSX.Element;
24
+ declare const Cell: <T extends object>({ onCellClick, cell, idx, isHover, isRowClicked, isRowActive, selectedCellInfo, showSelectedCellBorder, onChange, setTableData, setRowSelection, rowSelection, radio, reorderMode, dragHandleProps, rowHeight, }: Props<T>) => import("react/jsx-runtime").JSX.Element | null;
23
25
  export default Cell;
@@ -20,6 +20,13 @@ interface Props<T extends object = any> {
20
20
  isRowActive: boolean;
21
21
  radio?: boolean;
22
22
  reorderMode?: boolean;
23
+ getRowProps?: (params: {
24
+ row: T;
25
+ rowIndex: number;
26
+ isSelected: boolean;
27
+ isActive: boolean;
28
+ isHovered: boolean;
29
+ }) => HTMLAttributes<HTMLTableRowElement>;
23
30
  dragHandleProps?: DraggableProvidedDragHandleProps | null;
24
31
  isDragging?: boolean;
25
32
  rowProps?: HTMLAttributes<HTMLTableRowElement>;
@@ -21,6 +21,13 @@ interface Props<T extends object = any> {
21
21
  rowActiveIdx: number;
22
22
  radio?: boolean;
23
23
  reorderMode?: boolean;
24
+ getRowProps?: (params: {
25
+ row: T;
26
+ rowIndex: number;
27
+ isSelected: boolean;
28
+ isActive: boolean;
29
+ isHovered: boolean;
30
+ }) => React.HTMLAttributes<HTMLTableRowElement>;
24
31
  tableSx?: CSSProperties;
25
32
  rowHeight: number;
26
33
  headerRowHeight: number;
@@ -1,61 +1,106 @@
1
1
  import { default as React, CSSProperties } from 'react';
2
2
  import { ColumnDef as TanstackColumnDef } from '@tanstack/react-table';
3
- export type ColumnDef<T extends object> = TanstackColumnDef<T> & {
3
+ type BodyCellType<T extends object> = "input" | "textarea" | "inputNum" | "inputEng" | "select" | "checkbox" | "checkboxN" | "datePicker" | "modal" | "file" | "button" | "custom" | "text" | "date" | ((row: T) => "input" | "textarea" | "inputNum" | "inputEng" | "select" | "checkbox" | "checkboxN" | "datePicker" | "modal" | "file" | "button" | "custom" | "text" | "date") | string;
4
+ type RenderCellParams<T extends object> = {
5
+ rowData: T;
6
+ rowIndex: number;
7
+ column: ColumnDef<T>;
8
+ columnId: string;
9
+ value: unknown;
10
+ isCellActive: boolean;
11
+ isRowSelected: boolean;
12
+ isRowActive: boolean;
13
+ };
14
+ type GetCellPropsParams<T extends object> = {
15
+ rowData: T;
16
+ rowIndex: number;
17
+ column: ColumnDef<T>;
18
+ columnId: string;
19
+ value: unknown;
20
+ isCellActive: boolean;
21
+ isRowSelected: boolean;
22
+ isRowActive: boolean;
23
+ };
24
+ type CellMerge = {
25
+ /** 여러 행/열을 병합할 때 사용합니다. reorderMode에서는 rowSpan 기반 행병합만 지원하지 않으며, colSpan만 사용하는 경우는 허용됩니다. */
26
+ rowSpan?: number;
27
+ colSpan?: number;
28
+ skipCell?: boolean;
29
+ };
30
+ type GetCellPropsResult = React.TdHTMLAttributes<HTMLTableCellElement> & {
31
+ merge?: CellMerge;
32
+ };
33
+ type ColumnCommonProps<T extends object> = {
4
34
  accessorKey?: string;
5
35
  width?: string;
36
+ role?: "group";
37
+ setSort?: React.Dispatch<React.SetStateAction<string[]>>;
38
+ visible?: boolean;
39
+ /** 바디 td 요소에 추가 속성이나 스타일을 주입합니다. merge.rowSpan 기반 행병합은 reorderMode와 함께 사용할 수 없지만, colSpan만 사용하는 경우는 허용됩니다. */
40
+ getCellProps?: (params: GetCellPropsParams<T>) => GetCellPropsResult;
41
+ /** 헤더 셀의 내용을 컬럼 단위로 커스텀 렌더링합니다. */
42
+ renderHeaderCell?: (params: {
43
+ column: ColumnDef<T>;
44
+ columnId: string;
45
+ }) => React.ReactNode;
46
+ /** 헤더 th 요소에 추가 속성이나 스타일을 주입합니다. */
47
+ getHeaderCellProps?: (params: {
48
+ column: ColumnDef<T>;
49
+ columnId: string;
50
+ }) => React.ThHTMLAttributes<HTMLTableCellElement>;
51
+ };
52
+ type StandardColumnProps<T extends object> = {
6
53
  align?: "start" | "center" | "right";
7
54
  editable?: boolean;
8
- type?: "input" | "textarea" | "inputNum" | "inputEng" | "select" | "checkbox" | "checkboxN" | "datePicker" | "modal" | "file" | "button" | "custom" | "text" | "date" | ((row: T) => "input" | "textarea" | "inputNum" | "inputEng" | "select" | "checkbox" | "checkboxN" | "datePicker" | "modal" | "file" | "button" | "custom" | "text" | "date") | string;
55
+ type?: BodyCellType<T>;
9
56
  selectItems?: {
10
57
  value: string | number;
11
58
  label: string;
12
59
  }[];
13
60
  required?: boolean;
14
- setSort?: React.Dispatch<React.SetStateAction<string[]>>;
15
61
  button?: React.ReactNode | ((row: T) => React.ReactNode);
16
62
  ellipsis?: boolean;
17
- role?: "group";
18
63
  tags?: (row: T) => React.ReactNode[];
19
64
  disabled?: (row: T) => boolean | boolean;
20
65
  isOnly?: boolean;
21
66
  maxLength?: number;
22
67
  numRange?: number[];
68
+ /** custom 타입에서 사용하는 기존 전용 렌더러입니다. 신규 코드는 renderCell 사용을 권장합니다. */
23
69
  component?: (row: T) => React.ReactNode;
24
70
  modalFn?: (row: T) => void;
25
71
  accept?: string;
26
72
  icon?: React.ReactNode;
27
73
  onChange?: (...args: any[]) => any;
28
74
  readOnly?: boolean;
29
- visible?: boolean;
30
75
  simpleSelect?: boolean;
31
76
  showEditIcon?: boolean;
32
- /** 바디 셀의 내용을 컬럼 단위로 커스텀 렌더링합니다. */
33
- renderCell?: (params: {
34
- rowData: T;
35
- rowIndex: number;
36
- column: ColumnDef<T>;
37
- columnId: string;
38
- value: unknown;
39
- }) => React.ReactNode;
40
- /** 바디 td 요소에 추가 속성이나 스타일을 주입합니다. */
41
- getCellProps?: (params: {
42
- rowData: T;
43
- rowIndex: number;
44
- column: ColumnDef<T>;
45
- columnId: string;
46
- value: unknown;
47
- }) => React.TdHTMLAttributes<HTMLTableCellElement>;
48
- /** 헤더 셀의 내용을 컬럼 단위로 커스텀 렌더링합니다. */
49
- renderHeaderCell?: (params: {
50
- column: ColumnDef<T>;
51
- columnId: string;
52
- }) => React.ReactNode;
53
- /** 헤더 th 요소에 추가 속성이나 스타일을 주입합니다. */
54
- getHeaderCellProps?: (params: {
55
- column: ColumnDef<T>;
56
- columnId: string;
57
- }) => React.ThHTMLAttributes<HTMLTableCellElement>;
77
+ renderCell?: never;
78
+ };
79
+ type RenderCellColumnProps<T extends object> = {
80
+ /** 바디 셀의 내용을 컬럼 단위로 완전히 커스텀 렌더링합니다. 이 경로에서는 align, editable, type, maxLength 같은 표준 셀 옵션이 자동 적용되지 않습니다. */
81
+ renderCell: (params: RenderCellParams<T>) => React.ReactNode;
82
+ align?: never;
83
+ editable?: never;
84
+ type?: never;
85
+ selectItems?: never;
86
+ required?: never;
87
+ button?: never;
88
+ ellipsis?: never;
89
+ tags?: never;
90
+ disabled?: never;
91
+ isOnly?: never;
92
+ maxLength?: never;
93
+ numRange?: never;
94
+ component?: never;
95
+ modalFn?: never;
96
+ accept?: never;
97
+ icon?: never;
98
+ onChange?: never;
99
+ readOnly?: never;
100
+ simpleSelect?: never;
101
+ showEditIcon?: never;
58
102
  };
103
+ export type ColumnDef<T extends object> = TanstackColumnDef<T> & ColumnCommonProps<T> & (StandardColumnProps<T> | RenderCellColumnProps<T>);
59
104
  export interface Table2Props {
60
105
  /** Cell 클릭 시 해당 Cell Border 스타일 변경 여부를 설정합니다. */
61
106
  selectedCell?: boolean;
@@ -89,7 +134,7 @@ export interface Table2Props {
89
134
  rowClickTriggerIdx?: number;
90
135
  /** 데이터 변경 시 행 클릭 트리거 인덱스 초기화 여부를 설정합니다. */
91
136
  resetTriggerOnDataChange?: boolean;
92
- /** 행 드래그앤드롭 재정렬 모드를 활성화합니다. */
137
+ /** 행 드래그앤드롭 재정렬 모드를 활성화합니다. getCellProps의 merge.rowSpan 기반 행병합과 함께 사용하는 것은 지원하지 않지만, colSpan만 사용하는 경우는 허용됩니다. */
93
138
  reorderMode?: boolean;
94
139
  /** 행 순서가 변경될 때 재정렬된 데이터를 반환합니다. */
95
140
  onReorder?: (data: any[]) => void;
@@ -108,3 +153,4 @@ export interface Table2Props {
108
153
  isHovered: boolean;
109
154
  }) => React.HTMLAttributes<HTMLTableRowElement>;
110
155
  }
156
+ export {};