Skip to content

Commit 99ec2a9

Browse files
committed
Remove part of the Dropdown animation
1 parent 7ffd375 commit 99ec2a9

10 files changed

Lines changed: 165 additions & 135 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
6. Supports zooming in to view or modify data
1111
- ⭐【New Features】Supports the ctrl/cmd+c shortcut to copy row data or cell data
1212
- ⭐【New Features】Supports the shortcut key ctrl/cmd+v to paste and copy row data/cell data to row/cell
13-
- ⭐【New Features】The tree node operation menu can copy the names of tables, fields, keys, indexes, and functions
1413
- ⭐【New Features】Edit table structure supports setting primary keys in columns
1514
- ⭐【New Features】History is added to the foldable panel on the right
1615
- ⭐【New Features】Edit data to support cell-level undo changes
16+
- ⭐【New Features】The Table tree node operation menu on the left supports copying table, field, key, index, and function names
17+
- ⭐【New Features】The node in the left Table tree supports ctrl/cmd+c to copy the node text
1718
- ⚡️【Optimize】Edit the table structure to add loading
1819
- ⚡️【Optimize】The tree node operation menu supports right-clicking
1920
- 🐞【Fixed】Fixed table structure editing floating-point decimal Settings display exception
@@ -28,10 +29,11 @@
2829
6. 支持放大查看或修改数据
2930
- ⭐【新功能】支持快捷键ctrl/cmd+c 复制行数据/单元格数据
3031
- ⭐【新功能】支持快捷键ctrl/cmd+v 粘贴复制行数据/单元格数据到行/单元格
31-
- ⭐【新功能】树节点操作菜单支持复制表、字段、key、index、函数等名称
3232
- ⭐【新功能】编辑表结构支持在列中设置主键
33-
- ⭐【新功能】右侧可折叠面板中增加历史记录
3433
- ⭐【新功能】编辑数据支持单元格级别撤销修改
34+
- ⭐【新功能】左侧Table树节点操作菜单支持复制表、字段、key、index、函数等名称
35+
- ⭐【新功能】左侧Table树节点支持ctrl/cmd+c 复制节点文本
36+
- ⭐【新功能】右侧可折叠面板中增加历史记录
3537
- ⚡️【优化】编辑表结构添加loading
3638
- ⚡️【优化】树节点操作菜单支持右键唤出
3739
- 🐞【修复】修复表结构编辑浮点数小数位设置显示异常

chat2db-client/src/components/SearchResult/TableBox/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { ExportSizeEnum, ExportTypeEnum } from '@/typings/resultTable';
2525
import sqlService, { IExportParams, IExecuteSqlParams } from '@/service/sql';
2626

2727
// store
28-
import { useWorkspaceStore } from '@/store/workspace';
28+
import { useCommonStore } from '@/store/common';
2929

3030
// 依赖组件
3131
import ExecuteSQL from '@/components/ExecuteSQL';
@@ -136,7 +136,7 @@ export default function TableBox(props: ITableProps) {
136136
const [canPaste, setCanPaste] = useState<boolean>(false);
137137
// 判断是否聚焦在了可粘贴的区域中 hooks
138138
useCheckCanPaste(setCanPaste);
139-
const { setFocusedContent } = useWorkspaceStore((state) => {
139+
const { setFocusedContent } = useCommonStore((state) => {
140140
return {
141141
setFocusedContent: state.setFocusedContent,
142142
};

chat2db-client/src/components/Tabs/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export default memo<IProps>((props) => {
7474

7575
onChange?.(internalActiveTab);
7676
}, [internalActiveTab]);
77-
77+
7878
function deleteTab(data: ITabItem) {
7979
const newInternalTabs = internalTabs?.filter((t) => t.key !== data.key);
8080
let activeKeyTemp = internalActiveTab;

chat2db-client/src/hooks/useFocusData.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { useEffect } from 'react';
2-
import { useWorkspaceStore } from '@/store/workspace';
2+
import { useCommonStore } from '@/store/common';
33
import { tableCopy, copy } from '@/utils'
44

55
// 如果用户点击的不是可复制的元素,就清空选中的内容
66
function useCopyFocusData() {
7-
const { setFocusedContent, focusedContent } = useWorkspaceStore((state) => {
7+
const { setFocusedContent, focusedContent } = useCommonStore((state) => {
88
return {
99
setFocusedContent: state.setFocusedContent,
1010
focusedContent: state.focusedContent

chat2db-client/src/pages/main/workspace/components/TableList/index.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react'
22
import classnames from 'classnames';
33
import i18n from '@/i18n';
44
import { connect } from 'umi';
5-
import { Input, Cascader, Dropdown, MenuProps, Pagination, Select } from 'antd';
5+
import { Input, Cascader, Dropdown, MenuProps, Pagination, Select, ConfigProvider } from 'antd';
66
import Iconfont from '@/components/Iconfont';
77
import LoadingContent from '@/components/Loading/LoadingContent';
88
import { IConnectionModelType } from '@/models/connection';
@@ -423,17 +423,25 @@ const TableList = dvaModel((props: any) => {
423423
</div>
424424
) : (
425425
<div className={styles.leftModuleTitleText}>
426-
<Cascader
427-
defaultValue={[curType.value]}
428-
popupClassName={styles.cascaderPopup}
429-
options={optionsList}
430-
onChange={cascaderChange as any}
426+
<ConfigProvider
427+
theme={{
428+
token: {
429+
motion: false,
430+
},
431+
}}
431432
>
432-
<div className={styles.modelName}>
433-
{curType.label}
434-
<Iconfont code="&#xe88e;" />
435-
</div>
436-
</Cascader>
433+
<Cascader
434+
defaultValue={[curType.value]}
435+
popupClassName={styles.cascaderPopup}
436+
options={optionsList}
437+
onChange={cascaderChange as any}
438+
>
439+
<div className={styles.modelName}>
440+
{curType.label}
441+
<Iconfont code="&#xe88e;" />
442+
</div>
443+
</Cascader>
444+
</ConfigProvider>
437445
<div className={styles.iconBox}>
438446
<div className={classnames(styles.refreshIcon, styles.itemIcon)} onClick={() => refreshTableList()}>
439447
<Iconfont code="&#xec08;" />
@@ -466,7 +474,7 @@ const TableList = dvaModel((props: any) => {
466474
</LoadingContent>
467475
</div>
468476

469-
{pagingData?.total > 100 && !searchKey && (
477+
{pagingData?.total > 100 && !searchKey && curType.value === TreeNodeType.TABLES && (
470478
<div className={styles.paging}>
471479
<div className={styles.paginationBox}>
472480
<Pagination

chat2db-client/src/pages/main/workspace/components/Tree/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { TreeNodeType, databaseMap } from '@/constants';
1010
import TreeNodeRightClick from './TreeNodeRightClick';
1111
import { treeConfig, switchIcon, ITreeConfigItem } from './treeConfig';
1212
import { IWorkspaceModelType, ICurWorkspaceParams } from '@/models/workspace';
13-
import { useWorkspaceStore } from '@/store/workspace';
13+
import { useCommonStore } from '@/store/common';
1414

1515
interface IProps {
1616
className?: string;
@@ -84,7 +84,7 @@ const TreeNode = (props: TreeNodeIProps) => {
8484
const indentArr = new Array(level).fill('indent');
8585
const [openTooltipComment, setOpenTooltipComment] = useState(false);
8686
const contentTextRef = React.useRef<HTMLDivElement>(null);
87-
const { setFocusedContent } = useWorkspaceStore((state) => {
87+
const { setFocusedContent } = useCommonStore((state) => {
8888
return {
8989
setFocusedContent: state.setFocusedContent,
9090
};

chat2db-client/src/pages/main/workspace/components/WorkspaceHeader/index.tsx

Lines changed: 118 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import CustomLayout from '@/components/CustomLayout';
77
import { IConnectionModelType } from '@/models/connection';
88
import { IWorkspaceModelType } from '@/models/workspace';
99
import { IMainPageType } from '@/models/mainPage';
10-
import { Cascader, Spin, Modal, Tag, Divider } from 'antd';
10+
import { Cascader, Spin, Modal, Tag, Divider, ConfigProvider } from 'antd';
1111
import { databaseMap, TreeNodeType, DatabaseTypeCode } from '@/constants';
1212
import { treeConfig } from '../Tree/treeConfig';
1313
import { useUpdateEffect } from '@/hooks/useUpdateEffect';
@@ -296,130 +296,138 @@ const WorkspaceHeader = memo<IProps>((props) => {
296296
return (
297297
<>
298298
{!!connectionList.length && (
299-
<div className={styles.workspaceHeader}>
300-
<div className={styles.workspaceHeaderLeft}>
301-
<Cascader
302-
popupClassName={styles.cascaderPopup}
303-
options={connectionOptions}
304-
onChange={connectionChange}
305-
bordered={false}
306-
value={[curConnection?.id || '']}
307-
>
308-
<div className={styles.crumbsItem}>
309-
<Iconfont
310-
className={styles.databaseTypeIcon}
311-
code={databaseMap[curWorkspaceParams.databaseType]?.icon}
312-
/>
313-
<div className={styles.text}>{curWorkspaceParams.dataSourceName}</div>
314-
<div className={styles.pullDownArrow}>
315-
<Iconfont code="&#x100be;" />
316-
</div>
317-
</div>
318-
</Cascader>
319-
320-
{/* {!!curDBOptions?.length && <Iconfont className={styles.arrow} code="&#xe641;" />} */}
321-
{!!curDBOptions?.length && (
299+
<ConfigProvider
300+
theme={{
301+
token: {
302+
motion: false,
303+
}
304+
}}
305+
>
306+
<div className={styles.workspaceHeader}>
307+
<div className={styles.workspaceHeaderLeft}>
322308
<Cascader
323309
popupClassName={styles.cascaderPopup}
324-
options={curDBOptions}
325-
open={openDBCascaderDropdown}
326-
dropdownRender={(menu) => {
327-
return (
328-
<div>
329-
{menu}
330-
<Divider style={{ margin: 0 }} />
331-
{
332-
// 不支持创建数据库的数据库类型
333-
!notSupportCreateDatabaseType.includes(curWorkspaceParams?.databaseType) && (
334-
<div
335-
className={styles.dropdownFooter}
336-
onClick={() => {
337-
setOpenDBCascaderDropdown(false);
338-
createDatabaseRef.current?.setOpen(true, 'database');
339-
}}
340-
>
341-
<Iconfont code="&#xe631;" />
342-
{i18n('common.Button.addDatabase')}
343-
</div>
344-
)
345-
}
346-
</div>
347-
);
348-
}}
349-
onChange={databaseChange as any}
310+
options={connectionOptions}
311+
onChange={connectionChange}
350312
bordered={false}
351-
value={[curWorkspaceParams?.databaseName || '']}
313+
value={[curConnection?.id || '']}
352314
>
353315
<div className={styles.crumbsItem}>
354-
<Iconfont className={styles.databaseTypeIcon} code="&#xe62c;" />
355-
<div className={styles.text}>{curWorkspaceParams.databaseName}</div>
316+
<Iconfont
317+
className={styles.databaseTypeIcon}
318+
code={databaseMap[curWorkspaceParams.databaseType]?.icon}
319+
/>
320+
<div className={styles.text}>{curWorkspaceParams.dataSourceName}</div>
356321
<div className={styles.pullDownArrow}>
357322
<Iconfont code="&#x100be;" />
358323
</div>
359324
</div>
360325
</Cascader>
361-
)}
362-
{/* {!!curSchemaOptions.length && <Iconfont className={styles.arrow} code="&#xe641;" />} */}
363-
{!!curSchemaOptions.length && (
364-
<Cascader
365-
popupClassName={styles.cascaderPopup}
366-
options={curSchemaOptions}
367-
onChange={schemaChange}
368-
bordered={false}
369-
open={openSchemaCascaderDropdown}
370-
value={[curWorkspaceParams?.schemaName || '']}
371-
dropdownRender={(menu) => {
372-
return (
373-
<div>
374-
{menu}
375-
<Divider style={{ margin: 0 }} />
376-
{
377-
// 不支持创建schema的数据库类型
378-
!notSupportCreateSchemaType.includes(curWorkspaceParams?.databaseType) && (
379-
<div
380-
className={styles.dropdownFooter}
381-
onClick={() => {
382-
setOpenSchemaCascaderDropdown(false);
383-
createDatabaseRef.current?.setOpen(true, 'schema');
384-
}}
385-
>
386-
<Iconfont code="&#xe631;" />
387-
{i18n('common.Button.addSchema')}
388-
</div>
389-
)
390-
}
326+
327+
{/* {!!curDBOptions?.length && <Iconfont className={styles.arrow} code="&#xe641;" />} */}
328+
{!!curDBOptions?.length && (
329+
<Cascader
330+
popupClassName={styles.cascaderPopup}
331+
options={curDBOptions}
332+
open={openDBCascaderDropdown}
333+
dropdownRender={(menu) => {
334+
return (
335+
<div>
336+
{menu}
337+
<Divider style={{ margin: 0 }} />
338+
{
339+
// 不支持创建数据库的数据库类型
340+
!notSupportCreateDatabaseType.includes(curWorkspaceParams?.databaseType) && (
341+
<div
342+
className={styles.dropdownFooter}
343+
onClick={() => {
344+
setOpenDBCascaderDropdown(false);
345+
createDatabaseRef.current?.setOpen(true, 'database');
346+
}}
347+
>
348+
<Iconfont code="&#xe631;" />
349+
{i18n('common.Button.addDatabase')}
350+
</div>
351+
)
352+
}
353+
</div>
354+
);
355+
}}
356+
onChange={databaseChange as any}
357+
bordered={false}
358+
value={[curWorkspaceParams?.databaseName || '']}
359+
>
360+
<div className={styles.crumbsItem}>
361+
<Iconfont className={styles.databaseTypeIcon} code="&#xe62c;" />
362+
<div className={styles.text}>{curWorkspaceParams.databaseName}</div>
363+
<div className={styles.pullDownArrow}>
364+
<Iconfont code="&#x100be;" />
391365
</div>
392-
);
393-
}}
394-
>
395-
<div className={styles.crumbsItem}>
396-
<Iconfont className={styles.databaseTypeIcon} code="&#xe696;" />
397-
<div className={styles.text}>{curWorkspaceParams.schemaName}</div>
398-
<div className={styles.pullDownArrow}>
399-
<Iconfont code="&#x100be;" />
400366
</div>
401-
</div>
402-
</Cascader>
403-
)}
404-
<div className={styles.refreshBox} onClick={handleRefresh}>
405-
{cascaderLoading ? (
406-
<Spin className={styles.spin} />
407-
) : (
408-
<Iconfont className={styles.typeIcon} code="&#xec08;" />
367+
</Cascader>
368+
)}
369+
{/* {!!curSchemaOptions.length && <Iconfont className={styles.arrow} code="&#xe641;" />} */}
370+
{!!curSchemaOptions.length && (
371+
<Cascader
372+
popupClassName={styles.cascaderPopup}
373+
options={curSchemaOptions}
374+
onChange={schemaChange}
375+
bordered={false}
376+
open={openSchemaCascaderDropdown}
377+
value={[curWorkspaceParams?.schemaName || '']}
378+
dropdownRender={(menu) => {
379+
return (
380+
<div>
381+
{menu}
382+
<Divider style={{ margin: 0 }} />
383+
{
384+
// 不支持创建schema的数据库类型
385+
!notSupportCreateSchemaType.includes(curWorkspaceParams?.databaseType) && (
386+
<div
387+
className={styles.dropdownFooter}
388+
onClick={() => {
389+
setOpenSchemaCascaderDropdown(false);
390+
createDatabaseRef.current?.setOpen(true, 'schema');
391+
}}
392+
>
393+
<Iconfont code="&#xe631;" />
394+
{i18n('common.Button.addSchema')}
395+
</div>
396+
)
397+
}
398+
</div>
399+
);
400+
}}
401+
>
402+
<div className={styles.crumbsItem}>
403+
<Iconfont className={styles.databaseTypeIcon} code="&#xe696;" />
404+
<div className={styles.text}>{curWorkspaceParams.schemaName}</div>
405+
<div className={styles.pullDownArrow}>
406+
<Iconfont code="&#x100be;" />
407+
</div>
408+
</div>
409+
</Cascader>
410+
)}
411+
<div className={styles.refreshBox} onClick={handleRefresh}>
412+
{cascaderLoading ? (
413+
<Spin className={styles.spin} />
414+
) : (
415+
<Iconfont className={styles.typeIcon} code="&#xec08;" />
416+
)}
417+
</div>
418+
</div>
419+
<div className={classnames(styles.connectionTag, styles.workspaceHeaderCenter)}>
420+
{curConnection?.id && curConnection?.environment?.shortName && (
421+
<Tag color={curConnection?.environment?.color?.toLocaleLowerCase()}>
422+
{curConnection?.environment?.shortName}
423+
</Tag>
409424
)}
410425
</div>
426+
<div className={styles.workspaceHeaderRight}>
427+
<CustomLayout />
428+
</div>
411429
</div>
412-
<div className={classnames(styles.connectionTag, styles.workspaceHeaderCenter)}>
413-
{curConnection?.id && curConnection?.environment?.shortName && (
414-
<Tag color={curConnection?.environment?.color?.toLocaleLowerCase()}>
415-
{curConnection?.environment?.shortName}
416-
</Tag>
417-
)}
418-
</div>
419-
<div className={styles.workspaceHeaderRight}>
420-
<CustomLayout />
421-
</div>
422-
</div>
430+
</ConfigProvider>
423431
)}
424432

425433
<Modal open={noConnectionModal} closeIcon={<></>} keyboard={false} maskClosable={false} footer={false}>

chat2db-client/src/store/workspace/copyFocusedContent.ts renamed to chat2db-client/src/store/common/copyFocusedContent.ts

File renamed without changes.

0 commit comments

Comments
 (0)