diff --git a/packages/amis-core/src/utils/debug.tsx b/packages/amis-core/src/utils/debug.tsx index 3f8f5b6193e..32240456f72 100644 --- a/packages/amis-core/src/utils/debug.tsx +++ b/packages/amis-core/src/utils/debug.tsx @@ -229,7 +229,7 @@ const AMISDebug = observer(({store}: {store: AMISDebugStore}) => { panelRef.current!.addEventListener('mouseup', handlePanelMouseUp); return () => { - panelRef.current!.removeEventListener('mouseup', handlePanelMouseUp); + panelRef.current?.removeEventListener('mouseup', handlePanelMouseUp); }; }, []); diff --git a/packages/amis-editor/src/plugin/CRUD.tsx b/packages/amis-editor/src/plugin/CRUD.tsx index 51261b18748..e166959b8e2 100644 --- a/packages/amis-editor/src/plugin/CRUD.tsx +++ b/packages/amis-editor/src/plugin/CRUD.tsx @@ -1195,6 +1195,33 @@ export class CRUDPlugin extends BasePlugin { hiddenOn: 'this.mode && this.mode !== "table" || this.pickerMode' }, + getSchemaTpl('switch', { + name: 'selectable', + label: '开启选择', + pipeIn: defaultValue(false), + labelRemark: { + className: 'm-l-xs', + trigger: 'click', + rootClose: true, + content: '开启后即便没有批量操作按钮也显示可点选', + placement: 'left' + } + }), + + getSchemaTpl('switch', { + name: 'multiple', + label: '开启多选', + visibleOn: '${selectable}', + pipeIn: defaultValue(true), + labelRemark: { + className: 'm-l-xs', + trigger: 'click', + rootClose: true, + content: '控制是单选还是多选', + placement: 'left' + } + }), + getSchemaTpl('switch', { name: 'syncLocation', label: '同步地址栏', diff --git a/packages/amis-editor/src/plugin/Table.tsx b/packages/amis-editor/src/plugin/Table.tsx index 7502aad8960..e2afd502a7f 100644 --- a/packages/amis-editor/src/plugin/Table.tsx +++ b/packages/amis-editor/src/plugin/Table.tsx @@ -688,6 +688,12 @@ export class TablePlugin extends BasePlugin { ] }, + getSchemaTpl('switch', { + name: 'showIndex', + label: '是否显示序号', + pipeIn: defaultValue(false) + }), + getSchemaTpl('switch', { name: 'affixHeader', label: '是否固定表头', diff --git a/packages/amis/src/renderers/Table/Cell.tsx b/packages/amis/src/renderers/Table/Cell.tsx index 2ca11000c2f..89ffb834182 100644 --- a/packages/amis/src/renderers/Table/Cell.tsx +++ b/packages/amis/src/renderers/Table/Cell.tsx @@ -77,71 +77,6 @@ export default function Cell({ onCheck?.(item); }, []); - if (column.type === '__checkme') { - return ( - - - - ); - } else if (column.type === '__dragme') { - return ( - - {item.draggable ? : null} - - ); - } else if (column.type === '__expandme') { - return ( - - {item.expandable ? ( - - - - ) : null} - - ); - } else if (column.type === '__index') { - return ( - - {`${filterItemIndex ? filterItemIndex(item.path, item) : item.path}` - .split('.') - .map(a => parseInt(a, 10) + 1) - .join('.')} - - ); - } - let [prefix, affix, addtionalClassName] = React.useMemo(() => { let prefix: React.ReactNode[] = []; let affix: React.ReactNode[] = []; @@ -273,6 +208,71 @@ export default function Cell({ }; delete subProps.label; + if (column.type === '__checkme') { + return ( + + + + ); + } else if (column.type === '__dragme') { + return ( + + {item.draggable ? : null} + + ); + } else if (column.type === '__expandme') { + return ( + + {item.expandable ? ( + + + + ) : null} + + ); + } else if (column.type === '__index') { + return ( + + {`${filterItemIndex ? filterItemIndex(item.path, item) : item.path}` + .split('.') + .map(a => parseInt(a, 10) + 1) + .join('.')} + + ); + } + return render( region, { diff --git a/packages/amis/src/renderers/Table/TableRow.tsx b/packages/amis/src/renderers/Table/TableRow.tsx index 3c3fb30ad31..c0cd9eb9d2b 100644 --- a/packages/amis/src/renderers/Table/TableRow.tsx +++ b/packages/amis/src/renderers/Table/TableRow.tsx @@ -247,13 +247,13 @@ export class TableRow< {ignoreFootableContent ? columns.map(column => ( - + {column.label !== false ? : null} )) : columns.map(column => ( - + {column.label !== false ? ( {render( @@ -275,14 +275,14 @@ export class TableRow< rowIndexPath: item.path, colIndex: column.index, rowPath, - key: column.index, + key: column.id, onAction: this.handleAction, onQuickChange: this.handleQuickChange, onChange: this.handleChange } ) ) : ( - +
 
)}