DocSpace-client/packages/components/table-container/TableGroupMenu.js

86 lines
2.5 KiB
JavaScript
Raw Normal View History

2022-02-11 14:30:07 +00:00
import React from "react";
2022-03-03 10:43:43 +00:00
import PropTypes from "prop-types";
2021-07-15 13:55:24 +00:00
import Checkbox from "../checkbox";
import {
StyledTableGroupMenu,
StyledScrollbar,
StyledInfoPanelToggleWrapper,
} from "./StyledTableContainer";
import ComboBox from "../combobox";
import GroupMenuItem from "./GroupMenuItem";
2022-03-03 10:43:43 +00:00
import { useTranslation } from "react-i18next";
import IconButton from "../icon-button";
2021-07-15 13:55:24 +00:00
const TableGroupMenu = (props) => {
const {
isChecked,
isIndeterminate,
headerMenu,
onChange,
checkboxOptions,
checkboxMargin,
isInfoPanelVisible,
toggleInfoPanel,
...rest
} = props;
2021-07-15 13:55:24 +00:00
const onCheckboxChange = (e) => {
onChange && onChange(e.target && e.target.checked);
};
const { t } = useTranslation("Common");
2021-07-15 13:55:24 +00:00
return (
2021-07-20 13:01:54 +00:00
<>
<StyledTableGroupMenu
className="table-container_group-menu"
checkboxMargin={checkboxMargin}
{...rest}
2021-07-20 13:01:54 +00:00
>
<Checkbox
className="table-container_group-menu-checkbox"
onChange={onCheckboxChange}
isChecked={isChecked}
isIndeterminate={isIndeterminate}
title={t("Common:MainHeaderSelectAll")}
2021-07-20 13:01:54 +00:00
/>
<ComboBox
comboIcon="/static/images/triangle.navigation.down.react.svg"
noBorder
2021-07-20 13:01:54 +00:00
advancedOptions={checkboxOptions}
className="table-container_group-menu-combobox not-selectable"
options={[]}
selectedOption={{}}
manualY="42px"
manualX="-32px"
title={t("Common:TitleSelectFile")}
2021-07-20 13:01:54 +00:00
/>
<div className="table-container_group-menu-separator" />
<StyledScrollbar>
{headerMenu.map((item, index) => (
<GroupMenuItem key={index} item={item} />
))}
</StyledScrollbar>
<StyledInfoPanelToggleWrapper isInfoPanelVisible={isInfoPanelVisible}>
<div className="info-panel-toggle-bg">
<IconButton
className="info-panel-toggle"
2022-04-11 08:11:44 +00:00
iconName="images/panel.react.svg"
2022-03-25 09:10:23 +00:00
size="16"
isFill={true}
onClick={toggleInfoPanel}
/>
</div>
</StyledInfoPanelToggleWrapper>
2021-07-20 13:01:54 +00:00
</StyledTableGroupMenu>
</>
2021-07-15 13:55:24 +00:00
);
};
TableGroupMenu.propTypes = {
isChecked: PropTypes.bool,
isIndeterminate: PropTypes.bool,
headerMenu: PropTypes.arrayOf(PropTypes.object).isRequired,
checkboxOptions: PropTypes.any.isRequired,
2021-07-15 13:55:24 +00:00
onClick: PropTypes.func,
onChange: PropTypes.func,
checkboxMargin: PropTypes.string,
2021-07-15 13:55:24 +00:00
};
2022-03-03 11:25:10 +00:00
export default TableGroupMenu;