DocSpace-client/packages/asc-web-components/table-container/TableSettings.js
Alexey Safronov f3afd79a3f Merge branch 'develop' into feature/virtual-rooms-1.2
# Conflicts:
#	packages/asc-web-common/components/AdvancedSelector/AdvancedSelector.js
#	packages/asc-web-common/components/AdvancedSelector/sub-components/Selector.js
#	packages/asc-web-common/components/FilterInput/sub-components/SortComboBox.js
#	packages/asc-web-common/components/PageLayout/index.js
#	packages/asc-web-common/store/SettingsStore.js
#	packages/asc-web-components/avatar-editor/sub-components/avatar-editor-body.js
#	packages/asc-web-components/combobox/index.js
#	packages/asc-web-components/context-menu/styled-context-menu.js
#	packages/asc-web-components/drop-down/index.js
#	packages/asc-web-components/link-with-dropdown/index.js
#	packages/asc-web-components/row/index.js
#	packages/asc-web-components/table-container/StyledTableContainer.js
#	packages/asc-web-components/table-container/TableHeaderCell.js
#	packages/asc-web-components/themes/dark.js
#	products/ASC.Files/Client/public/images/files.menu.svg
#	products/ASC.Files/Client/src/components/Article/Body/TreeFolders.js
#	products/ASC.Files/Client/src/components/Badges.js
#	products/ASC.Files/Client/src/components/QuickButtons.js
#	products/ASC.Files/Client/src/components/panels/NewFilesPanel/index.js
#	products/ASC.Files/Client/src/components/panels/OperationsPanel/index.js
#	products/ASC.Files/Client/src/components/panels/SelectFileDialog/AsideView.js
#	products/ASC.Files/Client/src/components/panels/SelectFileDialog/ModalView.js
#	products/ASC.Files/Client/src/components/panels/SharingPanel/index.js
#	products/ASC.Files/Client/src/components/panels/StyledPanels.js
#	products/ASC.Files/Client/src/components/panels/UploadPanel/FileRow.js
#	products/ASC.Files/Client/src/components/panels/UploadPanel/index.js
#	products/ASC.Files/Client/src/pages/Home/Section/Body/RowsView/FilesRowContent.js
#	products/ASC.Files/Client/src/pages/Home/Section/Body/RowsView/SimpleFilesRow.js
#	products/ASC.Files/Client/src/pages/Home/Section/Body/TableView/TableContainer.js
#	products/ASC.Files/Client/src/pages/Home/Section/Body/TableView/TableRow.js
#	products/ASC.Files/Client/src/pages/Home/Section/Body/TableView/sub-components/FileNameCell.js
#	products/ASC.Files/Client/src/pages/Home/Section/Filter/index.js
#	products/ASC.Files/Client/src/pages/Home/Section/Header/index.js
#	products/ASC.Files/Client/src/pages/Home/index.js
#	products/ASC.Files/Client/src/pages/VersionHistory/Section/Body/VersionRow.js
#	products/ASC.Files/Client/src/store/UploadDataStore.js
#	products/ASC.People/Client/public/images/people.menu.svg
#	products/ASC.People/Client/src/components/GroupSelector/index.js
#	products/ASC.People/Client/src/components/PeopleSelector/index.js
#	products/ASC.People/Client/src/pages/Home/Section/Body/RowView/userContent.js
#	products/ASC.People/Client/src/pages/Home/index.js
#	products/ASC.People/Client/src/pages/Profile/Section/Body/index.js
#	web/ASC.Web.Client/src/components/NavMenu/sub-components/header-nav.js
#	web/ASC.Web.Client/src/components/NavMenu/sub-components/header.js
#	web/ASC.Web.Client/src/components/NavMenu/sub-components/nav-item.js
#	web/ASC.Web.Client/src/components/NavMenu/sub-components/profile-menu.js
#	web/ASC.Web.Client/src/components/pages/Home/index.js
2022-03-01 13:50:26 +03:00

70 lines
1.8 KiB
JavaScript

import React, { useRef, useState } from "react";
import PropTypes from "prop-types";
import IconButton from "../icon-button";
import DropDown from "../drop-down";
import { StyledTableSettings } from "./StyledTableContainer";
import Checkbox from "../checkbox";
const TableSettings = ({ columns }) => {
const [isOpen, setIsOpen] = useState(false);
const ref = useRef();
const onClick = () => {
setIsOpen(!isOpen);
};
const clickOutsideAction = (e) => {
const path = e.path || (e.composedPath && e.composedPath());
const dropDownItem = path ? path.find((x) => x === ref.current) : null;
if (dropDownItem) return;
setIsOpen(false);
};
return (
<StyledTableSettings
className="table-container_header-settings-icon"
ref={ref}
>
<IconButton
size={12}
isFill
iconName="/static/images/settings.desc.react.svg"
onClick={onClick}
/>
<DropDown
className="table-container_settings"
directionX="right"
open={isOpen}
clickOutsideAction={clickOutsideAction}
forwardedRef={ref}
withBackdrop={false}
>
{columns.map((column) => {
const onChange = (e) =>
column.onChange && column.onChange(column.key, e);
return (
column.onChange && (
<Checkbox
className="table-container_settings-checkbox not-selectable"
isChecked={column.enable}
onChange={onChange}
key={column.key}
label={column.title}
/>
)
);
})}
</DropDown>
</StyledTableSettings>
);
};
TableSettings.propTypes = {
columns: PropTypes.array.isRequired,
};
export default TableSettings;