You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
import { ExportButton } from "./ExportButton";
|
|
import { Button, Tooltip } from "antd";
|
|
import { useTable } from "../../stores/useTable";
|
|
import { FullscreenExitOutlined, FullscreenOutlined } from "@ant-design/icons";
|
|
import { useEffect, useState } from "react";
|
|
import { TableSettings } from "./TableSettings";
|
|
|
|
const ToggleFullScreenButton = () => {
|
|
const {
|
|
tableState: { fullScreen },
|
|
toggleFullScreen,
|
|
} = useTable();
|
|
const [hover, setHover] = useState(false);
|
|
|
|
useEffect(() => {
|
|
const timer = setTimeout(() => setHover(false), 1500);
|
|
|
|
return () => clearTimeout(timer);
|
|
}, [hover]);
|
|
|
|
const handleMouseEnter = () => {
|
|
setHover(true);
|
|
};
|
|
const handleMouseLeave = () => {
|
|
setHover(false);
|
|
};
|
|
|
|
const handleClick = (e) => {
|
|
e.stopPropagation();
|
|
toggleFullScreen();
|
|
};
|
|
|
|
return (
|
|
<Tooltip
|
|
title={fullScreen ? "Свернуть" : "Раскрыть на полный экран"}
|
|
placement={"topRight"}
|
|
open={hover}
|
|
>
|
|
<Button
|
|
onClick={handleClick}
|
|
onMouseEnter={handleMouseEnter}
|
|
onMouseLeave={handleMouseLeave}
|
|
>
|
|
{fullScreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}
|
|
</Button>
|
|
</Tooltip>
|
|
);
|
|
};
|
|
|
|
export const HeaderWrapper = ({
|
|
leftColumn,
|
|
rightColumn,
|
|
exportProvider,
|
|
classes,
|
|
orderColumns
|
|
}) => {
|
|
return (
|
|
<div className={"flex items-center w-full justify-between"}>
|
|
<div className={classes?.leftColumn}>
|
|
<span className="py-[5px]">Таблица атрибутов</span>
|
|
{leftColumn}
|
|
</div>
|
|
<div className={classes?.rightColumn}>
|
|
{rightColumn}
|
|
<div className="flex items-center gap-x-1">
|
|
<TableSettings orderColumns={orderColumns} />
|
|
{exportProvider && <ExportButton provider={exportProvider} />}
|
|
<ToggleFullScreenButton />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|