@croquiscom/pds 0.47.2 → 0.47.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @croquiscom/pds
2
2
 
3
+ ## 0.47.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 7f04724: Table noDataText ReactNode 타입 지원, Column props Cell 렌더 및 selection 상태 외부 제어 지원
8
+
9
+ ## 0.47.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 3f95ca9: FormField Align 속성 추가
14
+
3
15
  ## 0.47.2
4
16
 
5
17
  ### Patch Changes
@@ -20,5 +20,10 @@ export interface FormFieldProps {
20
20
  * 최소너비 80px내에서 라벨 너비를 지정할 수 있습니다.
21
21
  */
22
22
  labelWidth?: CSSValueWithLength;
23
+ /**
24
+ * label, children 정렬를 지정할 수 있습니다.
25
+ * @default center
26
+ */
27
+ alignment?: 'top' | 'center';
23
28
  }
24
- export declare const FormField: ({ className, label, rightAddon, required, helper, labelWidth, children, }: PropsWithChildren<FormFieldProps>) => JSX.Element;
29
+ export declare const FormField: ({ className, label, rightAddon, required, helper, labelWidth, alignment, children, }: PropsWithChildren<FormFieldProps>) => JSX.Element;
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import { ComponentStory, ComponentMeta } from '@storybook/react';
3
3
  import { FormField } from './FormField';
4
- declare const _default: ComponentMeta<({ className, label, rightAddon, required, helper, labelWidth, children, }: React.PropsWithChildren<import("./FormField").FormFieldProps>) => JSX.Element>;
4
+ declare const _default: ComponentMeta<({ className, label, rightAddon, required, helper, labelWidth, alignment, children, }: React.PropsWithChildren<import("./FormField").FormFieldProps>) => JSX.Element>;
5
5
  export default _default;
6
6
  export declare const Base: any;
7
7
  export declare const LabelWidth: any;
8
8
  export declare const WithRadioGroup: ComponentStory<typeof FormField>;
9
9
  export declare const WithCheckboxGroup: ComponentStory<typeof FormField>;
10
10
  export declare const WithHelpPopover: any;
11
+ export declare const TopAlign: any;
@@ -1,5 +1,5 @@
1
- import React, { Key, ReactElement, PropsWithChildren, Ref } from 'react';
2
- import { SortDirection, Scroll, TableColumnsType, TableRowsType } from './types';
1
+ import React, { Key, ReactElement, PropsWithChildren, Ref, ReactNode } from 'react';
2
+ import { SortDirection, Scroll, TableColumnsType, TableRowsType, RowSelectState } from './types';
3
3
  export interface TableProps<DataType> {
4
4
  className?: string;
5
5
  /**
@@ -42,11 +42,18 @@ export interface TableProps<DataType> {
42
42
  * - true일 경우 각 테이블 로우는 고유 key가 존재해야 합니다.
43
43
  */
44
44
  selectableRows?: boolean;
45
+ /**
46
+ * Row 선택 상태 정보
47
+ * - 이하 두가지 타입으로 로우 셀렉 상태를 받습니다.
48
+ * - ((row: DataType) => boolean): 함수형태로 전달할 경우 해당 조건에 일치하는 row 목록 선택 상태가 업데이트됩니다.
49
+ * - Key[]: 키목록으로 전달할 경우 해당 키를 포함하는 row 목록 선택 상태가 업데이트됩니다.
50
+ */
51
+ rowSelection?: RowSelectState<DataType>;
45
52
  /**
46
53
  * Table 데이터가 없을 경우 노출되는 텍스트를 지정할 수 있습니다.
47
54
  * @default '데이터가 없습니다'
48
55
  */
49
- noDataText?: string;
56
+ noDataText?: ReactNode;
50
57
  /**
51
58
  * 테이블 로우 호버 스타일 사용 유무, 스펙아웃될 예정입니다.
52
59
  * - rowspan to highlight all relevant rows 이슈 처리전 임시 props
@@ -19,5 +19,7 @@ export declare const ColumnFixed: any;
19
19
  export declare const StickyHeader: any;
20
20
  export declare const Scroll: any;
21
21
  export declare const Selection: any;
22
+ export declare const BeforehandSelectionByKey: any;
23
+ export declare const BeforehandSelectionByFunction: any;
22
24
  export declare const Sort: any;
23
25
  export declare const WithPagination: any;
@@ -4,5 +4,6 @@ export declare function tableReducer<DataType>(state: TableState<DataType>, acti
4
4
  allSelected: boolean;
5
5
  selectedRows: import("./types").TableRowsType<DataType>;
6
6
  selectedRowsKey: import("react").Key[];
7
+ emitSelectedEvent: boolean;
7
8
  selectableRows?: boolean;
8
9
  };
@@ -1,5 +1,5 @@
1
1
  import { Key } from 'react';
2
- import { TableColumnBase, TableColumnsType, CellProps } from '../types';
2
+ import { TableColumnBase, TableColumnsType, CellProps, CellAttributesProps } from '../types';
3
3
  /** storybook table type helper용 컴포넌트 */
4
4
  export interface HelperTableColumnTypeProps<DataType> extends TableColumnBase {
5
5
  /**
@@ -11,7 +11,14 @@ export interface HelperTableColumnTypeProps<DataType> extends TableColumnBase {
11
11
  * 테이블 셀 rowSpan 속성, hidden 여부를 지정할 수 있습니다.
12
12
  * - (row: DataType, index: index) => ({ rowSpan: number, hidden: boolean })
13
13
  */
14
- cellAttributes?: CellProps<DataType>;
14
+ cellAttributes?: CellAttributesProps<DataType>;
15
+ /**
16
+ * 테이블 컬럼에 해당하는 셀 렌더를 지정할 수 있습니다.
17
+ * - 해당 컬럼의 row, cell value, index를 받을 수 있습니다.
18
+ * - 반환값은 ReactNode여야 합니다.
19
+ * - ({ row, value, index }: { row: DataType; value: CellValue; index: number }) => ReactNode
20
+ */
21
+ cell?: CellProps<DataType>;
15
22
  }
16
23
  export declare const HelperTableColumnType: <DataType extends object = any>(props: HelperTableColumnTypeProps<DataType>) => any;
17
24
  export interface HelperTableColumnGroupTypeProps<DataType> extends TableColumnBase {
@@ -25,7 +32,14 @@ export interface HelperTableColumnGroupTypeProps<DataType> extends TableColumnBa
25
32
  * 테이블 셀 rowSpan 속성, hidden 여부를 지정할 수 있습니다.
26
33
  * - (row: DataType, index: index) => ({ rowSpan: number, hidden: boolean })
27
34
  */
28
- cellAttributes?: CellProps<DataType>;
35
+ cellAttributes?: CellAttributesProps<DataType>;
36
+ /**
37
+ * 테이블 컬럼에 해당하는 셀 렌더를 지정할 수 있습니다.
38
+ * - 해당 컬럼의 row, cell value, index를 받을 수 있습니다.
39
+ * - 반환값은 ReactNode여야 합니다.
40
+ * - ({ row, value, index }: { row: DataType; value: CellValue; index: number }) => ReactNode
41
+ */
42
+ cell?: CellProps<DataType>;
29
43
  }
30
44
  export declare const HelperTableColumnGroupType: <DataType extends object = any>(props: HelperTableColumnGroupTypeProps<DataType>) => any;
31
45
  export interface HelperTableRowsTypeProps {
@@ -1,4 +1,4 @@
1
- import { Key, ReactNode } from 'react';
1
+ import { Key } from 'react';
2
2
  import { TableColumnsType, TableRowsType } from '../index';
3
3
  export interface DataType {
4
4
  key?: Key;
@@ -10,23 +10,15 @@ export interface DataType {
10
10
  price: string;
11
11
  amount: number;
12
12
  }
13
- export interface DataTypeReactNode {
14
- id: ReactNode;
15
- name: ReactNode;
16
- code: ReactNode;
17
- date: ReactNode;
18
- price: ReactNode;
19
- amount: ReactNode;
20
- }
21
- export declare const columns: TableColumnsType<DataType | DataTypeReactNode>;
13
+ export declare const columns: TableColumnsType<DataType>;
22
14
  export declare const rows: TableRowsType<DataType>;
23
- export declare const customColumns: TableColumnsType<DataType | DataTypeReactNode>;
24
- export declare const customColumnCell: TableColumnsType<DataType | DataTypeReactNode>;
25
- export declare const customRowCell: TableRowsType<DataTypeReactNode>;
15
+ export declare const customColumns: TableColumnsType<DataType>;
16
+ export declare const customColumnCell: TableColumnsType<DataType>;
17
+ export declare const customRowCellColumns: TableColumnsType<DataType>;
26
18
  export declare const groupColumns: TableColumnsType<DataType>;
27
19
  export declare const groupRows: TableRowsType<DataType>;
28
- export declare const RowSpanColumns: TableColumnsType<DataType | DataTypeReactNode>;
29
- export declare const RowSpanRows: TableRowsType<DataType | DataTypeReactNode>;
30
- export declare const fixedColumns: TableColumnsType<DataType | DataTypeReactNode>;
20
+ export declare const RowSpanColumns: TableColumnsType<DataType>;
21
+ export declare const RowSpanRows: TableRowsType<DataType>;
22
+ export declare const fixedColumns: TableColumnsType<DataType>;
31
23
  export declare const selectionRows: TableRowsType<DataType>;
32
24
  export declare const sortColumns: TableColumnsType<DataType>;
@@ -6,9 +6,16 @@ export type Scroll = {
6
6
  x?: CSSValueWithLength;
7
7
  y?: CSSValueWithLength;
8
8
  };
9
- export type CellProps<DataType> = (row: DataType, index?: number) => Pick<TdHTMLAttributes<any>, 'rowSpan'> & {
9
+ export type CellValue<Value = any> = Value;
10
+ export type RowSelectState<DataType> = ((row: DataType) => boolean) | Array<Key> | null;
11
+ export type CellAttributesProps<DataType> = (row: DataType, index?: number) => Pick<TdHTMLAttributes<any>, 'rowSpan'> & {
10
12
  hidden?: boolean;
11
13
  };
14
+ export type CellProps<DataType> = ({ row, value, index, }: {
15
+ row: DataType;
16
+ value: CellValue<any>;
17
+ index: number;
18
+ }) => ReactNode;
12
19
  export type TableColumnBase = {
13
20
  /**
14
21
  * 테이블 컬럼 텍스트
@@ -46,7 +53,14 @@ export interface TableColumnType<DataType> extends TableColumnBase {
46
53
  * 테이블 셀 rowSpan 속성, hidden 여부를 지정할 수 있습니다.
47
54
  * - (row: DataType, index: index) => ({ rowSpan: number, hidden: boolean })
48
55
  */
49
- cellAttributes?: CellProps<DataType>;
56
+ cellAttributes?: CellAttributesProps<DataType>;
57
+ /**
58
+ * 테이블 컬럼에 해당하는 셀 렌더를 지정할 수 있습니다.
59
+ * - 해당 컬럼의 row, cell value, index를 받을 수 있습니다.
60
+ * - 반환값은 ReactNode여야 합니다.
61
+ * - ({ row, value, index }: { row: DataType; value: CellValue; index: number }) => ReactNode
62
+ */
63
+ cell?: CellProps<DataType>;
50
64
  }
51
65
  export interface TableColumnGroupType<DataType> extends Omit<TableColumnType<DataType>, 'id'> {
52
66
  columnGroup: TableColumnsType<DataType>;
@@ -61,6 +75,7 @@ export interface TableState<DataType = unknown> {
61
75
  selectableRows?: boolean;
62
76
  selectedRowsKey?: Key[];
63
77
  selectedRows?: TableRowsType<DataType>;
78
+ emitSelectedEvent?: boolean;
64
79
  }
65
80
  export interface SelectRowsAction<DataType> {
66
81
  type: 'SELECT_ROWS';
@@ -72,4 +87,9 @@ export interface SelectRowAction<DataType> {
72
87
  selected: boolean;
73
88
  totalRowCount: number;
74
89
  }
75
- export type TableAction<DataType> = SelectRowsAction<DataType> | SelectRowAction<DataType>;
90
+ export interface SelectControlledRowAction<DataType> {
91
+ type: 'SELECT_CONTROLLED_ROW';
92
+ rows: TableRowsType<DataType>;
93
+ totalRowCount: number;
94
+ }
95
+ export type TableAction<DataType> = SelectRowsAction<DataType> | SelectRowAction<DataType> | SelectControlledRowAction<DataType>;
@@ -1,4 +1,5 @@
1
- import { TableColumnsType } from './types';
1
+ import { Key } from 'react';
2
+ import { TableColumnsType, TableRowsType } from './types';
2
3
  export interface UseTableColumnsProps<DataType> {
3
4
  columns: TableColumnsType<DataType>;
4
5
  }
@@ -6,3 +7,4 @@ export declare function getColGroup<DataType>({ columns }: UseTableColumnsProps<
6
7
  export declare function getGroupColumns<DataType>({ columns }: UseTableColumnsProps<DataType>): TableColumnsType<DataType>;
7
8
  export declare function getFlattenColumns<DataType>({ columns }: UseTableColumnsProps<DataType>): TableColumnsType<DataType>;
8
9
  export declare function getFixedMergeColumn<DataType>(columns: TableColumnsType<DataType>, selectableRows: boolean, columnCount: number): number;
10
+ export declare function getRowsKey<DataType>(rows: TableRowsType<DataType>): Key[];