Merge branch 'release/v2.0.0' of github.com:ONLYOFFICE/DocSpace-client into release/v2.0.0

This commit is contained in:
Alexey Safronov 2023-11-13 15:40:23 +04:00
commit 6b27de85ec
8 changed files with 122 additions and 94 deletions

View File

@ -96,6 +96,7 @@ const CreateRoomDialog = ({
const isRoomTitleChanged = roomParams.title.trim() !== "" ? false : true;
const onKeyUpHandler = (e) => {
if (isWrongTitle) return;
if (e.keyCode === 13) onCreateRoom();
};

View File

@ -28,20 +28,23 @@ const EditRoomDialog = ({
const prevRoomParams = useRef(
Object.freeze({
...roomParams,
}),
})
);
const compareRoomParams = (prevParams, currentParams) => {
return (
prevParams.title === currentParams.title &&
prevParams.roomOwner.id === currentParams.roomOwner.id &&
prevParams.tags.sort().toString() === currentParams.tags.sort().toString() &&
((prevParams.icon.uploadedFile === "" && currentParams.icon.uploadedFile === null) ||
prevParams.tags.sort().toString() ===
currentParams.tags.sort().toString() &&
((prevParams.icon.uploadedFile === "" &&
currentParams.icon.uploadedFile === null) ||
prevParams.icon.uploadedFile === currentParams.icon.uploadedFile)
);
};
const setRoomTags = (newTags) => setRoomParams({ ...roomParams, tags: newTags });
const setRoomTags = (newTags) =>
setRoomParams({ ...roomParams, tags: newTags });
const tagHandler = new TagHandler(roomParams.tags, setRoomTags, fetchedTags);
@ -52,6 +55,7 @@ const EditRoomDialog = ({
}));
const onKeyUpHandler = (e) => {
if (isWrongTitle) return;
if (e.keyCode === 13) onEditRoom();
};
@ -90,7 +94,8 @@ const EditRoomDialog = ({
visible={visible}
onClose={onCloseAction}
isScrollLocked={isScrollLocked}
withFooterBorder>
withFooterBorder
>
<ModalDialog.Header>
<DialogHeader isEdit />
</ModalDialog.Header>
@ -121,7 +126,10 @@ const EditRoomDialog = ({
primary
scale
onClick={onEditRoom}
isDisabled={isWrongTitle || compareRoomParams(prevRoomParams.current, roomParams)}
isDisabled={
isWrongTitle ||
compareRoomParams(prevRoomParams.current, roomParams)
}
isLoading={isLoading}
/>
<Button

View File

@ -5,6 +5,8 @@ import Heading from "@docspace/components/heading";
import Aside from "@docspace/components/aside";
import Loaders from "@docspace/common/components/Loaders";
import FloatingButton from "@docspace/components/floating-button";
import Portal from "@docspace/components/portal";
import { DeviceType } from "@docspace/common/constants";
import { withTranslation } from "react-i18next";
import {
StyledVersionHistoryPanel,
@ -35,10 +37,11 @@ class PureVersionHistoryPanel extends React.Component {
render() {
//console.log("render versionHistoryPanel");
const { visible, isLoading, versions, showProgressBar } = this.props;
const { visible, isLoading, versions, showProgressBar, currentDeviceType } =
this.props;
const zIndex = 310;
return (
const element = (
<StyledVersionHistoryPanel
className="version-history-modal-dialog"
visible={visible}
@ -89,6 +92,12 @@ class PureVersionHistoryPanel extends React.Component {
</Aside>
</StyledVersionHistoryPanel>
);
return currentDeviceType === DeviceType.mobile ? (
<Portal element={element} />
) : (
element
);
}
}
@ -101,11 +110,9 @@ VersionHistoryPanel.propTypes = {
};
export default inject(({ auth, clientLoadingStore, versionHistoryStore }) => {
const { isTabletView } = auth.settingsStore;
const { isTabletView, currentDeviceType } = auth.settingsStore;
const { isLoading } = clientLoadingStore;
const {
setIsMobileHidden: setInfoPanelIsMobileHidden,
} = auth.infoPanelStore;
const { setIsMobileHidden: setInfoPanelIsMobileHidden } = auth.infoPanelStore;
const {
fileId,
versions,
@ -124,6 +131,7 @@ export default inject(({ auth, clientLoadingStore, versionHistoryStore }) => {
showProgressBar,
setIsVerHistoryPanel,
setInfoPanelIsMobileHidden
setInfoPanelIsMobileHidden,
currentDeviceType,
};
})(observer(VersionHistoryPanel));

View File

@ -65,7 +65,6 @@ const Members = ({
setEditLinkPanelIsVisible,
getPrimaryLink,
setExternalLink,
isVisitor,
}) => {
const [isLoading, setIsLoading] = useState(false);
const membersHelper = new MembersHelper({ t });
@ -265,8 +264,11 @@ const Members = ({
};
const publicRoomItems = [];
const withPublicRoomBlock =
selectionParentRoom?.access === ShareAccessRights.RoomManager ||
selectionParentRoom?.access === ShareAccessRights.None;
if (isPublicRoomType && !isVisitor) {
if (isPublicRoomType && withPublicRoomBlock) {
if (!isArchiveFolder || primaryLink) {
publicRoomItems.push(
<LinksBlock key="general-link_header">
@ -375,7 +377,7 @@ const Members = ({
}
const showPublicRoomBar =
((primaryLink && !isArchiveFolder) || isPublicRoom) && !isVisitor;
((primaryLink && !isArchiveFolder) || isPublicRoom) && withPublicRoomBlock;
return (
<>
@ -459,7 +461,7 @@ export default inject(
membersFilter,
setMembersFilter,
} = filesStore;
const { id: selfId, isVisitor } = auth.userStore.user;
const { id: selfId } = auth.userStore.user;
const { changeType: changeUserType } = peopleStore;
const {
@ -518,7 +520,6 @@ export default inject(
primaryLink,
getPrimaryLink: filesStore.getPrimaryLink,
setExternalLink,
isVisitor,
};
}
)(

View File

@ -9,7 +9,6 @@ import Text from "@docspace/components/text";
import Box from "@docspace/components/box";
import Textarea from "@docspace/components/textarea";
import Button from "@docspace/components/button";
import ModalDialog from "@docspace/components/modal-dialog";
import { withTranslation } from "react-i18next";
import VersionBadge from "./VersionBadge";
import { StyledVersionRow } from "./StyledVersionHistory";
@ -37,7 +36,7 @@ const VersionRow = (props) => {
culture,
isVersion,
t,
markAsVersion,
// markAsVersion,
restoreVersion,
updateCommentVersion,
onSetRestoreProcess,
@ -51,21 +50,28 @@ const VersionRow = (props) => {
onClose,
setIsVisible,
} = props;
const navigate = useNavigate();
const [showEditPanel, setShowEditPanel] = useState(false);
const [commentValue, setCommentValue] = useState(info.comment);
const [isSavingComment, setIsSavingComment] = useState(false);
const navigate = useNavigate();
useEffect(() => {
if (commentValue !== info.comment) {
setCommentValue(info.comment);
}
}, [info.comment]);
const versionDate = `${moment(info.updated)
.locale(culture)
.format("L, LTS")}`;
const title = `${Encoder.htmlDecode(info.updatedBy?.displayName)}`;
const linkStyles = { isHovered: true, type: "action" };
const title = `${Encoder.htmlDecode(info.updatedBy?.displayName)}`;
const onDownloadAction = () =>
window.open(`${info.viewUrl}&version=${info.version}`, "_self");
const onEditComment = () => !isEditing && setShowEditPanel(!showEditPanel);
const onChange = (e) => {
@ -113,11 +119,11 @@ const VersionRow = (props) => {
});
};
const onVersionClick = () => {
markAsVersion(info.id, isVersion, info.version).catch((err) =>
toastr.error(err)
);
};
// const onVersionClick = () => {
// markAsVersion(info.id, isVersion, info.version).catch((err) =>
// toastr.error(err)
// );
// };
const contextOptions = [
{
@ -289,7 +295,7 @@ export default inject(({ auth, versionHistoryStore, selectedFolderStore }) => {
const language = (user && user.cultureName) || culture || "en";
const {
markAsVersion,
// markAsVersion,
restoreVersion,
updateCommentVersion,
isEditing,
@ -304,7 +310,7 @@ export default inject(({ auth, versionHistoryStore, selectedFolderStore }) => {
theme: auth.settingsStore.theme,
culture: language,
isTabletView,
markAsVersion,
// markAsVersion,
restoreVersion,
updateCommentVersion,
isEditing: isEdit,

View File

@ -95,6 +95,7 @@ const Navigation = ({
);
const toggleDropBox = () => {
if (navigationItems.length === 0) return;
if (isRootFolder) return setIsOpen(false);
setIsOpen((prev) => !prev);

View File

@ -290,66 +290,65 @@ class PasswordInput extends React.Component {
) : null;
};
renderTooltipContent = () =>
!this.props.isDisableTooltip && !this.props.isDisabled ? (
<TooltipStyle>
<StyledTooltipContainer
renderTooltipContent = () => (
<TooltipStyle>
<StyledTooltipContainer
forwardedAs="div"
fontSize="12px"
title={this.props.tooltipPasswordTitle}
>
{this.props.tooltipPasswordTitle}
<StyledTooltipItem
forwardedAs="div"
fontSize="12px"
title={this.props.tooltipPasswordTitle}
title={this.props.tooltipPasswordLength}
valid={this.state.validLength}
>
{this.props.tooltipPasswordTitle}
{this.props.tooltipPasswordLength}
</StyledTooltipItem>
{this.props.passwordSettings.digits && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordLength}
valid={this.state.validLength}
title={this.props.tooltipPasswordDigits}
valid={this.state.validDigits}
>
{this.props.tooltipPasswordLength}
{this.props.tooltipPasswordDigits}
</StyledTooltipItem>
{this.props.passwordSettings.digits && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordDigits}
valid={this.state.validDigits}
>
{this.props.tooltipPasswordDigits}
</StyledTooltipItem>
)}
{this.props.passwordSettings.upperCase && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordCapital}
valid={this.state.validCapital}
>
{this.props.tooltipPasswordCapital}
</StyledTooltipItem>
)}
{this.props.passwordSettings.specSymbols && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordSpecial}
valid={this.state.validSpecial}
>
{this.props.tooltipPasswordSpecial}
</StyledTooltipItem>
)}
)}
{this.props.passwordSettings.upperCase && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordCapital}
valid={this.state.validCapital}
>
{this.props.tooltipPasswordCapital}
</StyledTooltipItem>
)}
{this.props.passwordSettings.specSymbols && (
<StyledTooltipItem
forwardedAs="div"
title={this.props.tooltipPasswordSpecial}
valid={this.state.validSpecial}
>
{this.props.tooltipPasswordSpecial}
</StyledTooltipItem>
)}
{this.props.generatePasswordTitle && (
<div className="generate-btn-container">
<Link
className="generate-btn"
type="action"
fontWeight="600"
isHovered={true}
onClick={this.onGeneratePassword}
>
{this.props.generatePasswordTitle}
</Link>
</div>
)}
</StyledTooltipContainer>
</TooltipStyle>
) : null;
{this.props.generatePasswordTitle && (
<div className="generate-btn-container">
<Link
className="generate-btn"
type="action"
fontWeight="600"
isHovered={true}
onClick={this.onGeneratePassword}
>
{this.props.generatePasswordTitle}
</Link>
</div>
)}
</StyledTooltipContainer>
</TooltipStyle>
);
renderInputGroup = () => {
const {
@ -365,6 +364,7 @@ class PasswordInput extends React.Component {
id,
autoComplete,
forwardedRef,
isDisableTooltip,
} = this.props;
const { type, inputValue } = this.state;
@ -400,17 +400,19 @@ class PasswordInput extends React.Component {
forwardedRef={forwardedRef}
></InputBlock>
<Tooltip
place="top"
clickable
openOnClick
anchorSelect="div[id='tooltipContent'] input"
offsetLeft={this.props.tooltipOffsetLeft}
offsetTop={this.props.tooltipOffsetTop}
reference={this.refTooltip}
>
{this.renderTooltipContent()}
</Tooltip>
{!isDisableTooltip && !isDisabled && (
<Tooltip
place="top"
clickable
openOnClick
anchorSelect="div[id='tooltipContent'] input"
offsetLeft={this.props.tooltipOffsetLeft}
offsetTop={this.props.tooltipOffsetTop}
reference={this.refTooltip}
>
{this.renderTooltipContent()}
</Tooltip>
)}
</>
);
};

View File

@ -57,6 +57,7 @@ const onSDKError = (event) => {
const ErrorContainerBody = styled(ErrorContainer)`
position: absolute;
height: 100%;
width: 100%;
`;
let documentIsReady = false;