Alexey Safronov
f3afd79a3f
# 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
90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
import React, { useRef } from "react";
|
|
import PropTypes from "prop-types";
|
|
import { StyledTableRow } from "./StyledTableContainer";
|
|
import TableCell from "./TableCell";
|
|
import NewContextMenu from "../new-context-menu";
|
|
import ContextMenuButton from "../context-menu-button";
|
|
|
|
const TableRow = (props) => {
|
|
const {
|
|
fileContextClick,
|
|
onHideContextMenu,
|
|
children,
|
|
contextOptions,
|
|
className,
|
|
style,
|
|
selectionProp,
|
|
title,
|
|
...rest
|
|
} = props;
|
|
|
|
const cm = useRef();
|
|
const row = useRef();
|
|
|
|
const onContextMenu = (e) => {
|
|
fileContextClick && fileContextClick();
|
|
if (cm.current && !cm.current.menuRef.current) {
|
|
row.current.click(e);
|
|
}
|
|
cm.current.show(e);
|
|
};
|
|
|
|
const renderContext =
|
|
Object.prototype.hasOwnProperty.call(props, "contextOptions") &&
|
|
contextOptions.length > 0;
|
|
|
|
const getOptions = () => {
|
|
fileContextClick && fileContextClick();
|
|
return contextOptions;
|
|
};
|
|
|
|
return (
|
|
<StyledTableRow
|
|
onContextMenu={onContextMenu}
|
|
className={`${className} table-container_row`}
|
|
{...rest}
|
|
>
|
|
{children}
|
|
<div>
|
|
<TableCell
|
|
{...selectionProp}
|
|
style={style}
|
|
forwardedRef={row}
|
|
className={`${selectionProp?.className} table-container_row-context-menu-wrapper`}
|
|
>
|
|
<NewContextMenu
|
|
onHide={onHideContextMenu}
|
|
ref={cm}
|
|
model={contextOptions}
|
|
></NewContextMenu>
|
|
{renderContext ? (
|
|
<ContextMenuButton
|
|
className="expandButton"
|
|
getData={getOptions}
|
|
directionX="right"
|
|
isNew={true}
|
|
onClick={onContextMenu}
|
|
title={title}
|
|
/>
|
|
) : (
|
|
<div className="expandButton"> </div>
|
|
)}
|
|
</TableCell>
|
|
</div>
|
|
</StyledTableRow>
|
|
);
|
|
};
|
|
|
|
TableRow.propTypes = {
|
|
fileContextClick: PropTypes.func,
|
|
children: PropTypes.any,
|
|
contextOptions: PropTypes.array,
|
|
onHideContextMenu: PropTypes.func,
|
|
selectionProp: PropTypes.object,
|
|
className: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
|
style: PropTypes.object,
|
|
title: PropTypes.string,
|
|
};
|
|
|
|
export default TableRow;
|