Merge branch 'develop' into feature/login-nextjs

This commit is contained in:
Timofey Boyko 2024-03-26 13:01:08 +03:00
commit 9fbfe2be15
10 changed files with 261 additions and 156 deletions

View File

@ -35,8 +35,8 @@ import { observer, inject } from "mobx-react";
import { useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import { GroupParams } from "./types";
import { createGroup } from "@docspace/shared/api/groups";
import { GroupParams } from "./types";
import GroupNameParam from "./sub-components/GroupNameParam";
import HeadOfGroup from "./sub-components/HeadOfGroupParam";
import MembersParam from "./sub-components/MembersParam";
@ -104,88 +104,88 @@ const CreateGroupDialog = ({
});
};
if (selectGroupMangerPanelIsVisible)
return (
<SelectGroupManagerPanel
isVisible={selectGroupMangerPanelIsVisible}
onClose={onHideSelectGroupManagerPanel}
onParentPanelClose={onClose}
setGroupManager={setGroupManager}
/>
);
if (selectMembersPanelIsVisible)
return (
<SelectGroupMembersPanel
isVisible={selectMembersPanelIsVisible}
onClose={onHideSelectMembersPanel}
onParentPanelClose={onClose}
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
/>
);
return (
<ModalDialog
displayType={ModalDialogType.aside}
withBodyScroll
visible={visible}
onClose={onClose}
withFooterBorder
// isScrollLocked={isScrollLocked}
// isOauthWindowOpen={isOauthWindowOpen}
>
<ModalDialog.Header>
{t("PeopleTranslations:CreateGroup")}
</ModalDialog.Header>
<>
<ModalDialog
displayType={ModalDialogType.aside}
withBodyScroll
visible={visible}
onClose={onClose}
withFooterBorder
// isScrollLocked={isScrollLocked}
// isOauthWindowOpen={isOauthWindowOpen}
>
<ModalDialog.Header>
{t("PeopleTranslations:CreateGroup")}
</ModalDialog.Header>
<ModalDialog.Body>
<GroupNameParam
groupName={groupParams.groupName}
onChangeGroupName={onChangeGroupName}
/>
<HeadOfGroup
groupManager={groupParams.groupManager}
<ModalDialog.Body>
<GroupNameParam
groupName={groupParams.groupName}
onChangeGroupName={onChangeGroupName}
/>
<HeadOfGroup
groupManager={groupParams.groupManager}
setGroupManager={setGroupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectGroupManagerPanel={onShowSelectGroupManagerPanel}
/>
<MembersParam
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectMembersPanel={onShowSelectMembersPanel}
/>
</ModalDialog.Body>
<ModalDialog.Footer>
<Button
id="create-group-modal_submit"
tabIndex={5}
label={t("Common:Create")}
size={ButtonSize.normal}
primary
scale
onClick={onCreateGroup}
isDisabled={
!groupParams.groupName ||
(!groupParams.groupManager && !groupParams.groupMembers.length)
}
isLoading={isLoading}
/>
<Button
id="create-group-modal_cancel"
tabIndex={5}
label={t("Common:CancelButton")}
size={ButtonSize.normal}
scale
isDisabled={isLoading}
onClick={onClose}
/>
</ModalDialog.Footer>
</ModalDialog>
{selectGroupMangerPanelIsVisible && (
<SelectGroupManagerPanel
isVisible={selectGroupMangerPanelIsVisible}
onClose={onHideSelectGroupManagerPanel}
onParentPanelClose={onClose}
setGroupManager={setGroupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectGroupManagerPanel={onShowSelectGroupManagerPanel}
/>
<MembersParam
)}
{selectMembersPanelIsVisible && (
<SelectGroupMembersPanel
isVisible={selectMembersPanelIsVisible}
onClose={onHideSelectMembersPanel}
onParentPanelClose={onClose}
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectMembersPanel={onShowSelectMembersPanel}
/>
</ModalDialog.Body>
<ModalDialog.Footer>
<Button
id="create-group-modal_submit"
tabIndex={5}
label={t("Common:Create")}
size={ButtonSize.normal}
primary
scale
onClick={onCreateGroup}
isDisabled={
!groupParams.groupName ||
(!groupParams.groupManager && !groupParams.groupMembers.length)
}
isLoading={isLoading}
/>
<Button
id="create-group-modal_cancel"
tabIndex={5}
label={t("Common:CancelButton")}
size={ButtonSize.normal}
scale
isDisabled={isLoading}
onClick={onClose}
/>
</ModalDialog.Footer>
</ModalDialog>
)}
</>
);
};

View File

@ -155,87 +155,87 @@ const EditGroupDialog = ({
.finally(() => setFetchMembersIsLoading(false));
}, [group.id]);
if (selectGroupMangerPanelIsVisible)
return (
<SelectGroupManagerPanel
isVisible={selectGroupMangerPanelIsVisible}
onClose={onHideSelectGroupManagerPanel}
onParentPanelClose={onClose}
setGroupManager={setGroupManager}
/>
);
if (selectMembersPanelIsVisible)
return (
<SelectGroupMembersPanel
isVisible={selectMembersPanelIsVisible}
onClose={onHideSelectMembersPanel}
onParentPanelClose={onClose}
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
/>
);
return (
<ModalDialog
displayType="aside"
withBodyScroll
visible={visible}
onClose={onClose}
withFooterBorder
// isScrollLocked={isScrollLocked}
// isOauthWindowOpen={isOauthWindowOpen}
>
<ModalDialog.Header>
{t("PeopleTranslations:EditGroup")}
</ModalDialog.Header>
<>
<ModalDialog
displayType="aside"
withBodyScroll
visible={visible}
onClose={onClose}
withFooterBorder
// isScrollLocked={isScrollLocked}
// isOauthWindowOpen={isOauthWindowOpen}
>
<ModalDialog.Header>
{t("PeopleTranslations:EditGroup")}
</ModalDialog.Header>
<ModalDialog.Body>
<GroupNameParam
groupName={groupParams.groupName}
onChangeGroupName={onChangeGroupName}
/>
<HeadOfGroup
groupManager={groupParams.groupManager}
setGroupManager={setGroupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectGroupManagerPanel={onShowSelectGroupManagerPanel}
/>
{!isFetchMembersLoading && (
<MembersParam
<ModalDialog.Body>
<GroupNameParam
groupName={groupParams.groupName}
onChangeGroupName={onChangeGroupName}
/>
<HeadOfGroup
groupManager={groupParams.groupManager}
setGroupManager={setGroupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectMembersPanel={onShowSelectMembersPanel}
onShowSelectGroupManagerPanel={onShowSelectGroupManagerPanel}
/>
)}
</ModalDialog.Body>
{!isFetchMembersLoading && (
<MembersParam
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
onShowSelectMembersPanel={onShowSelectMembersPanel}
/>
)}
</ModalDialog.Body>
<ModalDialog.Footer>
<Button
id="edit-group-modal_submit"
tabIndex={5}
label={t("Common:SaveButton")}
size="normal"
primary
scale
onClick={onEditGroup}
isDisabled={notEnoughGroupParamsToEdit || groupParamsNotChanged}
isLoading={isCreateGroupLoading}
<ModalDialog.Footer>
<Button
id="edit-group-modal_submit"
tabIndex={5}
label={t("Common:SaveButton")}
size="normal"
primary
scale
onClick={onEditGroup}
isDisabled={notEnoughGroupParamsToEdit || groupParamsNotChanged}
isLoading={isCreateGroupLoading}
/>
<Button
id="edit-group-modal_cancel"
tabIndex={5}
label={t("Common:CancelButton")}
size="normal"
scale
isDisabled={isCreateGroupLoading}
onClick={onClose}
/>
</ModalDialog.Footer>
</ModalDialog>
{selectGroupMangerPanelIsVisible && (
<SelectGroupManagerPanel
isVisible={selectGroupMangerPanelIsVisible}
onClose={onHideSelectGroupManagerPanel}
onParentPanelClose={onClose}
setGroupManager={setGroupManager}
/>
<Button
id="edit-group-modal_cancel"
tabIndex={5}
label={t("Common:CancelButton")}
size="normal"
scale
isDisabled={isCreateGroupLoading}
onClick={onClose}
)}
{selectMembersPanelIsVisible && (
<SelectGroupMembersPanel
isVisible={selectMembersPanelIsVisible}
onClose={onHideSelectMembersPanel}
onParentPanelClose={onClose}
groupManager={groupParams.groupManager}
groupMembers={groupParams.groupMembers}
setGroupMembers={setGroupMembers}
/>
</ModalDialog.Footer>
</ModalDialog>
)}
</>
);
};

View File

@ -59,8 +59,10 @@ const SelectGroupManagerPanel = ({
onParentPanelClose={onParentPanelClose}
setDataItems={onSelectGroupManager}
accessOptions={accessOptions}
isEncrypted={true}
isEncrypted
defaultAccess={ShareAccessRights.FullAccess}
withoutBackground
withBlur={false}
/>
}
/>

View File

@ -84,6 +84,8 @@ const SelectGroupMembersPanel = ({
withAccessRights={false}
isEncrypted
defaultAccess={ShareAccessRights.FullAccess}
withoutBackground
withBlur={false}
/>
}
/>

View File

@ -1798,6 +1798,14 @@ class ContextOptionsStore {
isSeparator: true,
disabled: !deleteItems || isRootThirdPartyFolder,
},
{
key: "remove-from-recent",
label: t("RemoveFromList"),
icon: RemoveOutlineSvgUrl,
onClick: () =>
this.filesActionsStore.onClickRemoveFromRecent(selection),
disabled: !this.treeFoldersStore.isRecentTab,
},
{
key: "delete",
label: t("Common:Delete"),

View File

@ -28,6 +28,10 @@
const path = require("path");
const pkg = require("./package.json");
const BannerPlugin = require("webpack").BannerPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const version = pkg.version;
const nextConfig = {
basePath: "/doceditor",
@ -56,8 +60,52 @@ const nextConfig = {
},
};
const getBuildDate = () => {
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
return JSON.stringify(today.toISOString().split(".")[0] + "Z");
};
const getBuildYear = () => {
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
return today.getFullYear();
};
module.exports = {
webpack(config) {
config.devtool = "source-map";
if (config.mode === "production") {
config.optimization = {
splitChunks: { chunks: "all" },
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: /\*\s*\(c\)\s+Copyright\s+Ascensio\s+System\s+SIA/i,
},
},
extractComments: false,
}),
],
};
config.plugins.push(
new BannerPlugin({
raw: true,
banner: `/*
* (c) Copyright Ascensio System SIA 2009-${getBuildYear()}. All rights reserved
*
* https://www.onlyoffice.com/
*
* Version: ${version} (build: ${getBuildDate()})
*/`,
}),
);
}
// Grab the existing rule that handles SVG imports
const fileLoaderRule = config.module.rules.find((rule) =>
rule.test?.test?.(".svg"),

View File

@ -122,7 +122,7 @@ const template: Template = (
const page = `
<!DOCTYPE html>
<html lang="en">
<html lang="en" translate="no">
<head>
<meta charset="utf-8">
<title> ${documentTitle} </title>
@ -132,6 +132,7 @@ const template: Template = (
content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover"
/>
<meta name="theme-color" content="#000000" />
<meta name="google" content="notranslate" />
<link rel="stylesheet preload" href=${fontsCssUrl} as="style" type="text/css" crossorigin/>
<link id="favicon" rel="shortcut icon" href=${favicon} />

View File

@ -34,6 +34,7 @@ const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const ExternalTemplateRemotesPlugin = require("external-remotes-plugin");
const CopyPlugin = require("copy-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const BannerPlugin = require("webpack").BannerPlugin;
const minifyJson = require("@docspace/shared/utils/minifyJson");
const sharedDeps = require("@docspace/shared/constants/sharedDependencies");
@ -42,6 +43,7 @@ const baseConfig = require("./webpack.base.js");
const runtime = require("../../runtime.json");
const pkg = require("../package.json");
const deps = pkg.dependencies || {};
const version = pkg.version;
const dateHash = runtime?.date || "";
for (let dep in sharedDeps) {
@ -169,13 +171,35 @@ const clientConfig = {
],
};
const getBuildDate = () => {
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
return JSON.stringify(today.toISOString().split(".")[0] + "Z");
};
const getBuildYear = () => {
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
return today.getFullYear();
};
module.exports = (env, argv) => {
if (argv.mode === "production") {
clientConfig.devtool = "source-map";
clientConfig.mode = "production";
clientConfig.optimization = {
splitChunks: { chunks: "all" },
minimize: !env.minimize,
minimizer: [new TerserPlugin()],
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: /\*\s*\(c\)\s+Copyright\s+Ascensio\s+System\s+SIA/i,
},
},
extractComments: false,
}),
],
};
} else {
clientConfig.mode = "development";
@ -200,6 +224,16 @@ module.exports = (env, argv) => {
}`
),
}),
new BannerPlugin({
raw: true,
banner: `/*
* (c) Copyright Ascensio System SIA 2009-${getBuildYear()}. All rights reserved
*
* https://www.onlyoffice.com/
*
* Version: ${version} (build: ${getBuildDate()})
*/`,
}),
];
return merge(baseConfig, clientConfig);

View File

@ -146,6 +146,16 @@ const SubMenu = (props: {
if (subMenuRef.current) {
subMenuRef.current.style.top = "0px";
const submenuRects = subMenuRef.current.getBoundingClientRect();
if (submenuRects.bottom > viewport.height) {
const submenuMargin = 16;
const topOffset = submenuRects.bottom - viewport.height + submenuMargin;
subMenuRef.current.style.top = `${-1 * topOffset}px`;
}
if (isRtl) {
if (subListWidth < parseInt(`${containerOffset.left}`, 10)) {
subMenuRef.current.style.left = `${-1 * subListWidth}px`;

View File

@ -427,11 +427,11 @@ const FilterBlock = ({
const isEqualFilter = () => {
let isEqual = true;
if (
filterValues.length === 0 ||
selectedFilterValue.length > filterValues.length
)
return !isEqual;
// if (
// filterValues.length === 0 ||
// selectedFilterValue.length > filterValues.length
// )
// return !isEqual;
if (
(selectedFilterValue.length === 0 && filterValues.length > 0) ||
@ -477,7 +477,7 @@ const FilterBlock = ({
return !isEqual;
};
const showFooter = isEqualFilter();
const showFooter = isLoading ? false : isEqualFilter();
const filterBlockComponent = (
<>