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 | 66x 8x 8x 63x 303x 8x 66x 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 1x 1x | import { DetailPanelProps, TableMetaProps } from "@props/RecordProps"; import { DetailComponentRenderFunction, FieldConfigures } from "./ComponentsConfig"; import React, { ReactElement, useState } from "react"; import { ColumnsUtils } from "@utils/index"; import { useResizeDetector } from "react-resize-detector"; import { stopPropagationAndPreventDefault } from "@utils/ObjectUtils"; import { MonitorOutlined, } from "@ant-design/icons"; import { Button, Tooltip } from "antd"; /** * 获取某种列类型的 detail 模式(在编辑或者察看详情时候,右边部分的显示) */ export const getDetailRenderFunction = ( column: TableMetaProps ): DetailComponentRenderFunction | undefined => { const { type } = column; const detailComponent = column?.extInfo?.summaryField ? wrapperRender(FieldConfigures.find(fc => fc.type === type)?.detailComponent) : FieldConfigures.find(fc => fc.type === type)?.detailComponent; return detailComponent; }; const wrapperRender = (render: DetailComponentRenderFunction | undefined): DetailComponentRenderFunction | undefined => { Iif (!render) { return undefined; } return (props: DetailPanelProps): ReactElement => { const { column, record, zIndex } = props; const summaryField = ColumnsUtils.summaryField(column); Eif (summaryField && record?.[summaryField]) { const [showSummary, setShowSummary] = useState<boolean>(true); const summaryRecord = { ...record, [column.key]: record[summaryField], }; const { width, height, ref } = useResizeDetector(); const summaryProps: DetailPanelProps = { ...props, record: showSummary ? summaryRecord : record, }; // const [originalElement, summaryElement] = useState(() => [render(props), render(summaryProps)]); // FIXME: Fix translation return <div> {showSummary ? (<div> <div style={{ position: "absolute", width, height, display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", zIndex: zIndex + 1, }} onMouseEnter={(e) => stopPropagationAndPreventDefault(e)} onMouseLeave={(e) => stopPropagationAndPreventDefault(e)} onClick={(e) => stopPropagationAndPreventDefault(e)} > <Tooltip title="点击显示详情"> <Button size={"large"} shape="circle" onClick={() => setShowSummary(false)} > <MonitorOutlined style={{ fontSize: 24, }} /> </Button> </Tooltip> </div> <div ref={ref} style={{ filter: showSummary ? "blur(1px) brightness(0.95)" : undefined, }} > {render(summaryProps)} </div> </div>) : ( <div> {render(props)} </div>)} </div>; } return render(props); }; }; |