diff --git a/docs/drip-table-generator/demo/demo.tsx b/docs/drip-table-generator/demo/demo.tsx index 13d1a7274..28ed1d173 100755 --- a/docs/drip-table-generator/demo/demo.tsx +++ b/docs/drip-table-generator/demo/demo.tsx @@ -10,7 +10,7 @@ import './demo.module.less'; import * as AntIcons from '@ant-design/icons'; import { CloudSyncOutlined } from '@ant-design/icons'; import { Button, message } from 'antd'; -import DripTableGenerator from 'drip-table-generator'; +import DripTableGenerator, { DripTableGeneratorHandler } from 'drip-table-generator'; import React from 'react'; import { DripTableSchema } from '@/packages/drip-table/lib'; @@ -25,6 +25,7 @@ const { createFromIconfontCN, IconProvider, setTwoToneColor, getTwoToneColor, .. console.log(createFromIconfontCN, IconProvider, setTwoToneColor, getTwoToneColor); function Demo() { + const generatorRef = React.useRef(null); return ( + ref={generatorRef} mockDataSource mode="page" icons={Icons} diff --git a/packages/drip-table-generator/package.json b/packages/drip-table-generator/package.json index cc320779e..63f94ee2c 100755 --- a/packages/drip-table-generator/package.json +++ b/packages/drip-table-generator/package.json @@ -1,6 +1,6 @@ { "name": "drip-table-generator", - "version": "3.2.1-alpha.12", + "version": "3.2.1-alpha.16", "description": "A visualization tool for generating schema of drip-table.", "main": "dist/index.min.js", "module": "lib/index.js", diff --git a/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/column-header/index.tsx b/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/column-header/index.tsx index b0066cf7a..03eae39bb 100644 --- a/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/column-header/index.tsx +++ b/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/column-header/index.tsx @@ -108,6 +108,7 @@ ExtraOptions extends Partial = never, columns: newColumns, currentTableID: props.tableConfig.tableId, tableConfig: props.tableConfig, + columnIndex: index, }); return newColumns; }} @@ -135,6 +136,7 @@ ExtraOptions extends Partial = never, columns: newColumns, currentTableID: props.tableConfig.tableId, tableConfig: props.tableConfig, + columnIndex: index, }); return newColumns; }} @@ -285,6 +287,7 @@ ExtraOptions extends Partial = never, columns.splice(columnIndex, 1); setTableColumns(columns, tableIndex); props.onClick?.('column-delete', { + columnIndex, columns, currentTableID: props.tableConfig.tableId, tableConfig: props.tableConfig, diff --git a/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/components-selector/index.tsx b/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/components-selector/index.tsx index 7cb45e223..8fb8147b1 100644 --- a/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/components-selector/index.tsx +++ b/packages/drip-table-generator/src/layouts/table-workstation/editable-table/components/components-selector/index.tsx @@ -203,15 +203,19 @@ ExtraOptions extends Partial = never, } else { const lastSortableColumnIndex = tableConfigs[tableIndex].columns.map(item => !!item.fixed).lastIndexOf(false); let columns = [...tableConfigs[tableIndex].columns]; + let columnIndex = columns.length - 1; if (props.customColumns) { columns = props.customColumns(tableConfigs[tableIndex].columns, column); + columnIndex = columns.findIndex(item => item.key === column.key); } else if (lastSortableColumnIndex < columns.length - 1) { columns.splice(lastSortableColumnIndex + 1, 0, column); + columnIndex = lastSortableColumnIndex + 1; } else { columns = [...tableConfigs[tableIndex].columns, column]; + columnIndex += 1; } setTableColumns(columns, tableIndex, (configs) => { - props.onColumnAdded?.(column, getSchemaValue(configs)); + props.onColumnAdded?.(column, getSchemaValue(configs), columnIndex); }); } initStates(); diff --git a/packages/drip-table-generator/src/typing.ts b/packages/drip-table-generator/src/typing.ts index b4d3767db..16f816b44 100644 --- a/packages/drip-table-generator/src/typing.ts +++ b/packages/drip-table-generator/src/typing.ts @@ -256,6 +256,8 @@ export interface DripTableGeneratorProps< */ tableTools?: ('config' | 'subtable')[]; columnTools?: ('config' | 'copy' | 'more' | 'delete')[]; + checkedTableId?: string; + checkedColumnId?: string; /** * 自定义列添加面板 */ @@ -277,7 +279,7 @@ export interface DripTableGeneratorProps< onExportSchema?: (schema: DripTableSchema) => void; onSchemaChange?: (schema: DripTableSchema) => void; onDataSourceChange?: (dataSource: DripTableProps['dataSource']) => void; - onColumnAdded?: (column: DripTableSchema['columns'][number], schema: DripTableSchema) => void; + onColumnAdded?: (column: DripTableSchema['columns'][number], schema: DripTableSchema, columnIndex: number) => void; onClose?: (schema?: DripTableSchema) => void; onSave?: (schema: DripTableSchema) => void; /** diff --git a/packages/drip-table-generator/src/wrapper/index.tsx b/packages/drip-table-generator/src/wrapper/index.tsx index 3bb4c9123..5aaf6fce3 100644 --- a/packages/drip-table-generator/src/wrapper/index.tsx +++ b/packages/drip-table-generator/src/wrapper/index.tsx @@ -37,7 +37,8 @@ const generateStates = < RecordType extends DataSourceTypeAbbr>, ExtraOptions extends Partial = never, >(props: DripTableGeneratorProps): DripTableGeneratorStates => ({ - currentTableID: void 0, + currentTableID: props.checkedTableId, + currentColumnID: props.checkedColumnId, previewDataSource: [...props.dataSource || []], mode: props.defaultMode ?? 'edit', }); @@ -117,6 +118,9 @@ const DripTableGenerator = React.forwardRef(< setTableConfigs: tableConfigsContext.setTableConfigs, setTableColumns: tableConfigsContext.setTableColumns, }, + checkColumn: (tableId: string, columnId: string) => { + setGeneratorStates({ ...generatorStates, currentTableID: tableId, currentColumnID: columnId }); + }, })); React.useEffect(() => {