Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 66x | // DisplayStyleDropdown.tsx import React from "react"; import { Button, Dropdown, Menu, Space, Switch } from "antd"; import { ReloadOutlined, TableOutlined, AppstoreOutlined, CaretDownOutlined } from "@ant-design/icons"; import { useTranslation } from 'react-i18next'; import { FullScreenToggle } from "../components"; import { TableMode } from "@props/RecordProps"; import {stopPropagationAndPreventDefault} from "@utils/ObjectUtils"; type DisplayStyleDropdownProps = { setTableMode?: (mode: TableMode) => void; tableMode: TableMode; fetchDataCallback: (force?: boolean) => void; refreshMode: string; setRefreshMode: (mode: string) => void; }; const DisplayStyleDropdown: React.FC<DisplayStyleDropdownProps> = ({ setTableMode, tableMode, fetchDataCallback, refreshMode, setRefreshMode, }) => { const { t } = useTranslation(); const isMasterTableMode = (tableMode === "table-list"); const handleMenuClick = (key: string): void => { if (key === "refreshData") { fetchDataCallback(true); } else if (key === "toggleTableMode") { setTableMode?.(isMasterTableMode ? "card-list" : "table-list"); } }; const refreshTableElement = ( <Menu.Item key="refreshData" icon={<ReloadOutlined />}> {t("Refresh data")} </Menu.Item> ); const toggleTableModeElement = ( <Menu.Item key="toggleTableMode" icon={isMasterTableMode ? <AppstoreOutlined /> : <TableOutlined />}> {isMasterTableMode ? t("Switch to card list") : t("Switch to table list")} </Menu.Item> ); const switchRefreshModeIconTitle: string = (refreshMode === 'realtime') ? '当前数据刷新模式: 自动刷新,点击切换到手动刷新数据' : '当前数据刷新模式: 手动刷新,点击切换到自动刷新数据'; const realTimeRefreshToggle = (refreshMode != null && refreshMode !== 'disable') && ( <Menu.Item key="realTimeRefreshToggle"> <Space size="small"> <Switch checkedChildren="" unCheckedChildren="" title={switchRefreshModeIconTitle} checked={refreshMode === 'realtime'} onChange={(checked: boolean) => { const destMode = checked ? 'realtime' : 'manual'; setRefreshMode(destMode); }} onClick={(checked: boolean, event: React.MouseEvent<HTMLButtonElement>) => { event.stopPropagation(); }} size={"small"} /> <span onClick={(e: React.MouseEvent<unknown>) => { stopPropagationAndPreventDefault(e); if (refreshMode === 'realtime') { setRefreshMode("manual"); } else { setRefreshMode("realtime"); } }}> {refreshMode === "realtime" ? "实时刷" : "手动刷"} </span> </Space> </Menu.Item> ); const menuItems = [ realTimeRefreshToggle, refreshTableElement, <FullScreenToggle key="fullScreenToggle" />, toggleTableModeElement, ]; const dropdownMenu = <Menu onClick={({ key }) => handleMenuClick(key)}>{menuItems}</Menu>; return ( <Dropdown overlay={dropdownMenu} trigger={["hover"]} > <Button> <Space size={"small"}> {isMasterTableMode ? <TableOutlined /> : <AppstoreOutlined />} {t("Display settings")} <CaretDownOutlined /> </Space> </Button> </Dropdown> ); }; export default DisplayStyleDropdown; |