Merge branch 'release/v1.2' of https://github.com/ONLYOFFICE/AppServer into release/v1.2

This commit is contained in:
Maria Sukhova 2022-05-23 18:10:09 +03:00
commit d1494ca672
36 changed files with 514 additions and 97 deletions

View File

@ -40,6 +40,7 @@ const Navigation = ({
isCurrentFolderInfo,
toggleInfoPanel,
isInfoPanelVisible,
isShowRootFolder,
titles,
...rest
}) => {
@ -189,6 +190,7 @@ const Navigation = ({
isRootFolder={isRootFolder}
toggleInfoPanel={toggleInfoPanel}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
/>
)}
</>

View File

@ -39,7 +39,8 @@ const StyledContainer = styled.div`
`;
const StyledInfoPanelToggleWrapper = styled.div`
display: ${(props) => (props.isInfoPanelVisible ? "none" : "flex")};
display: ${(props) =>
props.isInfoPanelVisible && !props.isShowRootFolder ? "none" : "flex"};
align-items: center;
align-self: center;
@ -86,11 +87,13 @@ const ToggleInfoPanelButton = ({
isRootFolder,
isInfoPanelVisible,
toggleInfoPanel,
isShowRootFolder,
}) => {
return (
<StyledInfoPanelToggleWrapper
isRootFolder={isRootFolder}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
>
<div className="info-panel-toggle-bg">
<IconButton

View File

@ -133,8 +133,22 @@ const StyledCrossIcon = styled(CrossIcon)`
StyledCrossIcon.defaultProps = { theme: Base };
const InfoPanel = ({ children, isVisible, setIsVisible, viewAs }) => {
const InfoPanel = ({
children,
isVisible,
setIsVisible,
viewAs,
isRootFolder,
selectedItems,
isShowRootFolder,
setIsShowRootFolder,
}) => {
if (isRootFolder && selectedItems.length === 0) setIsShowRootFolder(true);
else setIsShowRootFolder(false);
if (!isVisible) return null;
if (isShowRootFolder) return null;
const closeInfoPanel = () => setIsVisible(false);
@ -182,17 +196,44 @@ StyledInfoPanelWrapper.defaultProps = { theme: Base };
StyledInfoPanel.defaultProps = { theme: Base };
InfoPanel.defaultProps = { theme: Base };
export default inject(({ infoPanelStore }) => {
let isVisible = false;
let setIsVisible = () => {};
export default inject(({ infoPanelStore, selectedFolderStore, filesStore }) => {
let isVisible = false,
isRootFolder = false,
setIsVisible = () => {},
selection = [],
bufferSelection = null,
isShowRootFolder = false,
setIsShowRootFolder = () => {};
if (infoPanelStore) {
isVisible = infoPanelStore.isVisible;
setIsVisible = infoPanelStore.setIsVisible;
isShowRootFolder = infoPanelStore.isShowRootFolder;
setIsShowRootFolder = infoPanelStore.setIsShowRootFolder;
}
if (selectedFolderStore) {
isRootFolder = selectedFolderStore.isRootFolder;
}
if (filesStore) {
selection = filesStore.selection;
bufferSelection = filesStore.bufferSelection;
}
const selectedItems =
selection?.length > 0
? [...selection]
: bufferSelection
? [bufferSelection]
: [];
return {
isVisible,
setIsVisible,
isRootFolder,
selectedItems,
isShowRootFolder,
setIsShowRootFolder,
};
})(InfoPanel);

View File

@ -23,7 +23,7 @@ class FirebaseHelper {
this.remoteConfig = firebase.remoteConfig();
this.remoteConfig.settings = {
fetchTimeMillis: 3600000,
fetchTimeoutMillis: 3600000,
minimumFetchIntervalMillis: 3600000,
};

View File

@ -413,7 +413,16 @@ export default function withContent(WrappedContent) {
isEdit,
titleWithoutExt,
} = this.props;
const { access, createdBy, fileExst, fileStatus, href, icon, id } = item;
const {
access,
createdBy,
fileExst,
fileStatus,
href,
icon,
id,
isFolder,
} = item;
const updatedDate = this.getStatusByDate(false);
const createdDate = this.getStatusByDate(true);
@ -456,6 +465,7 @@ export default function withContent(WrappedContent) {
cancelUpdateItem={this.cancelUpdateItem}
isUpdatingRowItem={isUpdatingRowItem}
passwordEntryProcess={passwordEntryProcess}
isFolder={item.fileExst ? false : true}
/>
) : (
<WrappedContent

View File

@ -61,10 +61,7 @@ const Banner = () => {
useEffect(() => {
getBanner();
const adsInterval = setInterval(getBanner, ADS_TIMEOUT);
return function cleanup() {
clearInterval(adsInterval);
};
return () => clearInterval(adsInterval);
}, []);
return (

View File

@ -67,7 +67,7 @@ const EditingWrapper = styled.div`
props.theme.filesEditingWrapper.tile.background};
border: ${(props) => props.theme.filesEditingWrapper.border};
border-radius: 0 0 6px 6px;
border-radius: ${(props) => (props.isFolder ? "6px" : "0 0 6px 6px")};
height: 43px;
bottom: 0;
@ -78,7 +78,7 @@ const EditingWrapper = styled.div`
@media ${tablet} {
height: 56px;
height: ${(props) => (props.viewAs === "tile" ? "43px" : "56px")};
}
.edit-text {
@ -114,6 +114,7 @@ const EditingWrapper = styled.div`
${(props) =>
props.viewAs === "tile" &&
!props.isUpdatingRowItem &&
css`
background: #fff;
border: ${(props) =>
@ -188,6 +189,7 @@ const EditingWrapperComponent = (props) => {
elementIcon,
isUpdatingRowItem,
passwordEntryProcess,
isFolder,
} = props;
const isTable = viewAs === "table";
@ -233,6 +235,7 @@ const EditingWrapperComponent = (props) => {
<EditingWrapper
viewAs={viewAs}
isUpdatingRowItem={isUpdatingRowItem && !isTable}
isFolder={isFolder}
>
{isTable && elementIcon}
{isUpdatingRowItem && !isTable ? (

View File

@ -22,30 +22,27 @@ const FolderTreeBody = ({
}) => {
const { t } = useTranslation(["SelectFolder", "Common"]);
useEffect(() => {
const scrollToSelectedNode = () => {
const selectedNode = document.getElementsByClassName(
"rc-tree-treenode-selected"
)[0];
if (selectedNode) {
document
.querySelector("#folder-tree-scroll-bar > .scroll-body")
.scrollTo(0, selectedNode.offsetTop);
}
}, []);
const firstLoadScroll = () => {
setIsLoadingNodes(false);
const selectedNode = document.getElementsByClassName(
"rc-tree-treenode-selected"
)[0];
if (selectedNode) {
document
.querySelector("#folder-tree-scroll-bar > .scroll-body")
.scrollTo(0, selectedNode.offsetTop);
}
};
useEffect(() => {
scrollToSelectedNode();
}, []);
const firstLoadScroll = () => {
setIsLoadingNodes(false);
scrollToSelectedNode();
};
return (
<>
{isAvailable ? (

View File

@ -222,7 +222,6 @@ class SelectFileDialog extends React.Component {
maxInputWidth,
folderId,
fileInfo,
storeParentId,
} = this.props;
const {
isVisible,
@ -286,7 +285,6 @@ class SelectFileDialog extends React.Component {
filesListTitle={filesListTitle}
fileId={fileInfo?.id}
newFilter={this.newFilter}
parentId={storeParentId}
/>
);
}
@ -334,7 +332,7 @@ export default inject(
const { treeFolders, setExpandedPanelKeys } = treeFoldersStore;
const { filter } = filesStore;
const { id: storeFolderId, parentId } = selectedFolderStore;
const { id: storeFolderId } = selectedFolderStore;
const { settingsStore } = auth;
const { theme } = settingsStore;
@ -347,7 +345,7 @@ export default inject(
filter,
treeFolders,
storeFolderId,
storeParentId: parentId,
folderId,
theme: theme,
setExpandedPanelKeys,

View File

@ -1,13 +1,73 @@
import React from "react";
import { Provider as MobxProvider } from "mobx-react";
import { Provider as MobxProvider, inject, observer } from "mobx-react";
import { I18nextProvider } from "react-i18next";
import stores from "../../../store/index";
import store from "studio/store";
import SelectFolderDialog from "./index";
import i18n from "./i18n";
import { getFolder } from "@appserver/common/api/files";
const { auth: authStore } = store;
const SelectFolderModalWrapper = (props) => <SelectFolderDialog {...props} />;
class SelectFolderDialogBody extends React.Component {
constructor(props) {
super(props);
this.state = {
pathParts: [],
parentId: null,
};
}
componentDidMount() {
const { setExpandedPanelKeys, setParentId, folderId } = this.props;
if (folderId) {
folderId &&
getFolder(folderId)
.then((data) => {
const pathParts = data.pathParts.map((item) => item.toString());
pathParts?.pop();
setExpandedPanelKeys(pathParts);
setParentId(data.current.parentId);
this.setState({
pathParts: pathParts,
parentId: data.current.parentId,
});
})
.catch((e) => toastr.error(e));
}
}
componentDidUpdate(prevProps) {
const { isPanelVisible, setParentId, setExpandedPanelKeys } = this.props;
const { pathParts, parentId } = this.state;
if (isPanelVisible && isPanelVisible !== prevProps.isPanelVisible) {
setExpandedPanelKeys(pathParts);
setParentId(parentId);
}
}
render() {
const { folderId, isPanelVisible } = this.props;
const { pathParts, parentId } = this.state;
return (
isPanelVisible && (
<SelectFolderDialog {...this.props} selectedId={folderId} />
)
);
}
}
const SelectFolderModalWrapper = inject(
({ treeFoldersStore, selectedFolderStore }) => {
const { setExpandedPanelKeys } = treeFoldersStore;
const { setParentId } = selectedFolderStore;
return {
setExpandedPanelKeys,
setParentId,
};
}
)(observer(SelectFolderDialogBody));
class SelectFolderModal extends React.Component {
componentDidMount() {

View File

@ -190,7 +190,6 @@ class SelectFolderDialog extends React.Component {
folderTitle,
expandedKeys,
isDisableButton,
storeParentId,
} = this.props;
const {
displayType,
@ -230,7 +229,6 @@ class SelectFolderDialog extends React.Component {
isAvailable={isAvailable}
isDisableTree={isDisableTree}
isDisableButton={isDisableButton}
parentId={storeParentId}
/>
) : (
<SelectionPanel
@ -255,7 +253,6 @@ class SelectFolderDialog extends React.Component {
folderSelection
newFilter={this.newFilter}
isDisableButton={isDisableButton}
parentId={storeParentId}
/>
);
}
@ -285,20 +282,23 @@ SelectFolderDialog.defaultProps = {
};
export default inject(
({
(
{
treeFoldersStore,
selectedFolderStore,
selectFolderDialogStore,
filesStore,
auth,
filesActionsStore,
}) => {
},
{ selectedId }
) => {
const { treeFolders, setExpandedPanelKeys } = treeFoldersStore;
const { filter } = filesStore;
const { setSelectedItems } = filesActionsStore;
const { id, parentId } = selectedFolderStore;
const { id } = selectedFolderStore;
const {
setFolderId,
setFolderTitle,
@ -310,11 +310,11 @@ export default inject(
const { settingsStore } = auth;
const { theme } = settingsStore;
const selectedFolderId = selectedId ? selectedId : id;
return {
theme: theme,
storeFolderId: id,
storeParentId: parentId,
storeFolderId: selectedFolderId,
providerKey,
folderTitle,
folderId,

View File

@ -89,13 +89,13 @@ class Tile extends React.PureComponent {
onCreateForm = () => {
const { match, history } = this.props;
const { setInfoPanelIsVisible } = this.props;
const { setInfoPanelVisible } = this.props;
const filter = FilesFilter.getDefault();
filter.folder = match.params.folderId;
const urlFilter = filter.toUrlParams();
setInfoPanelIsVisible(false);
setInfoPanelVisible(false);
history.push(
combineUrl(
@ -108,7 +108,7 @@ class Tile extends React.PureComponent {
onShowTemplateInfo = () => {
if (!this.props.isInfoPanelVisible) {
this.props.setInfoPanelIsVisible(true);
this.props.setInfoPanelVisible(true);
}
};
@ -212,7 +212,7 @@ export default inject(
({ filesStore, settingsStore, infoPanelStore }, { item }) => {
const { gallerySelected, setGallerySelected } = filesStore;
const { getIcon } = settingsStore;
const { setInfoPanelIsVisible, isVisible } = infoPanelStore;
const { setIsVisible, isVisible } = infoPanelStore;
const isSelected = item.id === gallerySelected?.id;
@ -220,7 +220,7 @@ export default inject(
isSelected,
setGallerySelected,
getIcon,
setInfoPanelIsVisible,
setInfoPanelVisible: setIsVisible,
isInfoPanelVisible: isVisible,
};
}

View File

@ -362,6 +362,7 @@ class SectionHeaderContent extends React.Component {
isHeaderIndeterminate,
showText,
toggleInfoPanel,
isShowRootFolder,
} = this.props;
const menuItems = this.getMenuItems();
const isLoading = !title || !tReady;
@ -419,6 +420,7 @@ class SectionHeaderContent extends React.Component {
onBackToParentFolder={this.onBackToParentFolder}
toggleInfoPanel={toggleInfoPanel}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
titles={{
trash: t("EmptyRecycleBin"),
}}
@ -483,7 +485,7 @@ export default inject(
backToParentFolder,
} = filesActionsStore;
const { toggleIsVisible, isVisible } = infoPanelStore;
const { isVisible, isShowRootFolder, toggleIsVisible } = infoPanelStore;
return {
showText: auth.settingsStore.showText,
@ -496,6 +498,7 @@ export default inject(
canCreate,
toggleInfoPanel: toggleIsVisible,
isInfoPanelVisible: isVisible,
isShowRootFolder,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,

View File

@ -2,6 +2,7 @@ import { makeAutoObservable } from "mobx";
class InfoPanelStore {
isVisible = false;
isShowRootFolder = false;
constructor() {
makeAutoObservable(this);
@ -11,17 +12,17 @@ class InfoPanelStore {
this.isVisible = !this.isVisible;
};
setInfoPanelIsVisible = (isVisible) => {
this.isVisible = isVisible;
};
setVisible = () => {
this.isVisible = true;
};
setIsVisible = (bool) => {
this.isVisible = bool;
};
setIsToggleVisible = (bool) => {
this.isToggleVisible = bool;
};
setIsShowRootFolder = (bool) => {
this.isShowRootFolder = bool;
};
}
export default InfoPanelStore;

View File

@ -40,6 +40,12 @@ module.exports = {
],
}
},
{
resolve: "gatsby-plugin-google-fonts",
options: {
fonts: ["Open Sans:600,700"],
},
},
'gatsby-plugin-no-javascript'
],
}

View File

@ -6,6 +6,7 @@
"firebase-tools": "^10.2.0",
"gatsby": "^4.4.0",
"gatsby-plugin-gatsby-cloud": "^4.4.0",
"gatsby-plugin-google-fonts": "^1.0.1",
"gatsby-plugin-image": "^2.4.0",
"gatsby-plugin-manifest": "^4.4.0",
"gatsby-plugin-no-javascript": "^2.0.5",

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Objevte <1>ONLYOFFICE Docs v7.1</1>:</0> kompatibilitu s ARM, vylepšený prohlížeč PDF/XPS/DjVu, převod PDF do DOCX, náhled tisku pro listy a další funkce",
"BannerTextMob": "<0>Objevte ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Entdecken Sie <1>ONLYOFFICE Docs v7.1</1>:</0> ARM-Kompatibilität, verbesserter PDF/XPS/DjVu-Unterstützung, Konvertierung von PDF in DOCX, Druckvorschau für Arbeitsblätter und mehr",
"BannerTextMob": "<0>ONLYOFFICE <1>Docs v7.1</1> entdecken</0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Discover <1>ONLYOFFICE Docs v7.1</1>:</0> ARM compatibility, upgraded PDF/XPS/DjVu viewer, PDF to DOCX conversion, Print preview for sheets and more",
"BannerTextMob": "<0>Discover ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Descubre <1>ONLYOFFICE Docs v7.1</1>:</0> compatibilidad con ARM, visor mejorado de PDF/XPS/DjVu, conversión de PDF a DOCX, vista previa de impresión para hojas y mucho más",
"BannerTextMob": "<0>Descubre ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Découvrez <1>ONLYOFFICE Docs v7.1</1>:</0> Compatibilité ARM, visionneuse PDF/XPS/DjVu améliorée, conversion de PDF en DOCX, aperçu avant impression pour les feuilles de calcul et plus encore",
"BannerTextMob": "<0>Découvrir ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Scopri <1>ONLYOFFICE Docs v7.1</1>:</0> compatibilità ARM, lettore PDF/XPS/DjVu aggiornato, conversione da PDF a DOCX, anteprima di stampa per fogli di calcolo e altro ancora",
"BannerTextMob": "<0>Scopri ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0><1>ONLYOFFICE Docs v7.1</1>についてご紹介します。</0>ARMとの互換性、PDF/XPS/DjVu表示のアップグレード、PDFからDOCXへの変換、シートの印刷プレビュー、その他",
"BannerTextMob": "<0>ONLYOFFICE <1>Docs v7.1</1>について</0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Ontdek <1>ONLYOFFICE Docs v7.1</1></0> ARM compatibiliteit, verbeterde PDF/XPS/DjVu viewer, omzetten van PDF naar DOCX, afdrukvoorbeeld voor bladen en meer",
"BannerTextMob": "<0>Ontdek ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Descubra o <1>ONLYOFFICE Docs v7.1</1></0> Compatibilidade com ARM, visualizador de PDF/XPS/DjVu atualizado, conversão de PDF para DOCX, visualização de impressão para planilhas e muito mais",
"BannerTextMob": "<0>Descubra o ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>Встречайте <1>ONLYOFFICE Docs v7.1</1>:</0> совместимость с ARM, улучшенный просмотрщик PDF/XPS/DjVu, конвертация формата PDF в DOCX, функция предварительного просмотра перед печатью для таблиц и многое другое",
"BannerTextMob": "<0>Встречайте ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,4 @@
{
"BannerTextDesktop": "<0>发现<1>ONLYOFFICE Docs v7.1</1></0>ARM兼容性、升级的PDF/XPS/DjVu查看器、PDF到DOCX的转换功能工作表的打印预览以及更多",
"BannerTextMob": "<0>了解更多关于ONLYOFFICE <1>Docs v7.1</1></0>"
}

View File

@ -0,0 +1,13 @@
<svg width="81" height="37" viewBox="0 0 81 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M73.8516 35.9537L51 32.2781L55.9226 1.67322L71.9677 4.254L77.7727 11.5759L73.8516 35.9537Z" fill="#3E5AA0"/>
<path d="M75.3556 35.1406L52.5039 31.4651L57.4279 0.85199L73.473 3.43277L79.2766 10.7628L75.3556 35.1406Z" fill="#436AA9"/>
<path d="M73.4729 3.43277L72.47 9.66801L79.2765 10.7628L73.4729 3.43277Z" fill="#355E99"/>
<path d="M73.1658 13.9829L60.1404 11.8878L60.0091 12.7039L73.0346 14.799L73.1658 13.9829Z" fill="#8DB6DB"/>
<path d="M72.6525 17.174L59.6271 15.0789L59.4958 15.895L72.5213 17.9901L72.6525 17.174Z" fill="#8DB6DB"/>
<path d="M72.1393 20.365L59.1139 18.27L58.9826 19.0861L72.0081 21.1812L72.1393 20.365Z" fill="#8DB6DB"/>
<path d="M71.626 23.5561L58.6006 21.461L58.4693 22.2772L71.4948 24.3722L71.626 23.5561Z" fill="#8DB6DB"/>
<path d="M71.1127 26.7472L58.0873 24.6521L57.956 25.4682L70.9815 27.5633L71.1127 26.7472Z" fill="#8DB6DB"/>
<path d="M27.3 4.8C28.6255 4.8 29.7 3.72548 29.7 2.4C29.7 1.07452 28.6255 0 27.3 0C25.9745 0 24.9 1.07452 24.9 2.4C24.9 3.72548 25.9745 4.8 27.3 4.8Z" fill="#6C95C5"/>
<path d="M24.9001 29.3C26.3305 29.3 27.4901 28.1404 27.4901 26.71C27.4901 25.2796 26.3305 24.12 24.9001 24.12C23.4696 24.12 22.3101 25.2796 22.3101 26.71C22.3101 28.1404 23.4696 29.3 24.9001 29.3Z" fill="#6C95C5"/>
<path d="M10.75 14.13H0.53C0.389435 14.13 0.254628 14.0742 0.155233 13.9748C0.0558391 13.8754 0 13.7406 0 13.6V3.38001C0 3.31041 0.0137089 3.24149 0.0403439 3.17718C0.0669788 3.11288 0.106018 3.05445 0.155233 3.00524C0.204448 2.95602 0.262875 2.91699 0.327178 2.89035C0.39148 2.86372 0.460399 2.85001 0.53 2.85001H10.75C10.8191 2.84999 10.8876 2.86377 10.9513 2.89052C11.0151 2.91728 11.0729 2.95648 11.1213 3.00583C11.1697 3.05518 11.2078 3.11369 11.2333 3.17794C11.2589 3.24219 11.2713 3.31088 11.27 3.38001V13.6C11.2713 13.6691 11.2589 13.7378 11.2333 13.8021C11.2078 13.8663 11.1697 13.9248 11.1213 13.9742C11.0729 14.0235 11.0151 14.0627 10.9513 14.0895C10.8876 14.1162 10.8191 14.13 10.75 14.13V14.13ZM1.05 13.07H10.22V3.91001H1.05V13.07Z" fill="#6C95C5"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,13 @@
<svg width="136" height="56" viewBox="0 0 136 56" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M87.029 36.5033L60.9824 43.9825L50.9657 9.0986L69.2541 3.84719L79.0504 8.71718L87.029 36.5033Z" fill="#3D5BA1"/>
<path d="M88.2181 34.8932L62.1715 42.3723L52.1521 7.47913L70.4405 2.22771L80.2394 7.107L88.2181 34.8932Z" fill="#436AA9"/>
<path d="M70.4406 2.22772L72.4813 9.33473L80.2395 7.10702L70.4406 2.22772Z" fill="#355E99"/>
<path d="M75.3663 13.5611L60.5198 17.8242L60.7869 18.7545L75.6335 14.4914L75.3663 13.5611Z" fill="#8DB6DB"/>
<path d="M76.4108 17.1984L61.5642 21.4615L61.8313 22.3917L76.6779 18.1286L76.4108 17.1984Z" fill="#8DB6DB"/>
<path d="M77.4551 20.8356L62.6085 25.0987L62.8756 26.0289L77.7222 21.7658L77.4551 20.8356Z" fill="#8DB6DB"/>
<path d="M78.4995 24.4728L63.653 28.7359L63.9201 29.6661L78.7666 25.403L78.4995 24.4728Z" fill="#8DB6DB"/>
<path d="M79.544 28.11L64.6974 32.3731L64.9645 33.3033L79.8111 29.0402L79.544 28.11Z" fill="#8DB6DB"/>
<path d="M115.574 55.7221C116.894 55.7221 117.964 54.652 117.964 53.3321C117.964 52.0121 116.894 50.9421 115.574 50.9421C114.254 50.9421 113.184 52.0121 113.184 53.3321C113.184 54.652 114.254 55.7221 115.574 55.7221Z" fill="#638BBF"/>
<path d="M129.944 45.3921C128.835 45.3901 127.751 45.0594 126.83 44.4418C125.909 43.8241 125.191 42.9473 124.768 41.922C124.345 40.8968 124.236 39.7691 124.453 38.6815C124.671 37.5939 125.206 36.5953 125.991 35.8117C126.776 35.0281 127.775 34.4948 128.863 34.2792C129.951 34.0635 131.079 34.1752 132.103 34.6001C133.128 35.025 134.003 35.744 134.619 36.6664C135.235 37.5887 135.564 38.673 135.564 39.7821C135.564 40.5196 135.419 41.25 135.136 41.9312C134.854 42.6125 134.439 43.2314 133.917 43.7525C133.395 44.2736 132.776 44.6866 132.094 44.9679C131.412 45.2493 130.682 45.3934 129.944 45.3921ZM129.944 35.2321C129.045 35.2341 128.166 35.5026 127.419 36.0038C126.672 36.5049 126.09 37.2162 125.748 38.0478C125.405 38.8794 125.316 39.7939 125.493 40.6759C125.669 41.5578 126.104 42.3676 126.74 43.0029C127.377 43.6383 128.188 44.0706 129.07 44.2454C129.952 44.4201 130.867 44.3294 131.698 43.9848C132.528 43.6401 133.238 43.0569 133.738 42.3089C134.238 41.5609 134.504 40.6816 134.504 39.7821C134.504 39.1837 134.386 38.5912 134.157 38.0386C133.928 37.4859 133.591 36.9838 133.168 36.5612C132.744 36.1386 132.242 35.8036 131.688 35.5756C131.135 35.3475 130.542 35.2308 129.944 35.2321V35.2321Z" fill="#638BBF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.5436 40.1696L9.29363 44.4294C8.90355 44.8204 8.90192 45.4559 9.28998 45.8489L9.31705 45.8763C9.70511 46.2693 10.3359 46.2709 10.726 45.8799L15.7058 40.8886C15.9258 40.6681 16.0223 40.3698 15.9949 40.0811C15.9768 39.8505 15.8799 39.6251 15.7044 39.4492L10.731 34.4644C10.3409 34.0734 9.71014 34.075 9.32208 34.468L9.29502 34.4954C8.90696 34.8884 8.90859 35.5239 9.29866 35.9149L13.5436 40.1696Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,13 @@
<svg width="54" height="28" viewBox="0 0 54 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M49.0612 27.6253L31.5029 24.8012L35.2853 1.28555L47.6137 3.26852L52.074 8.89436L49.0612 27.6253Z" fill="#3E5AA0"/>
<path d="M50.2167 27.0006L32.6584 24.1764L36.4418 0.654572L48.7702 2.63754L53.2295 8.26965L50.2167 27.0006Z" fill="#436AA9"/>
<path d="M48.7701 2.63754L47.9995 7.42846L53.2294 8.26965L48.7701 2.63754Z" fill="#355E99"/>
<path d="M48.5342 10.7439L38.526 9.13409L38.4251 9.76118L48.4334 11.371L48.5342 10.7439Z" fill="#8DB6DB"/>
<path d="M48.1398 13.1957L38.1316 11.586L38.0307 12.2131L48.039 13.8228L48.1398 13.1957Z" fill="#8DB6DB"/>
<path d="M47.7455 15.6476L37.7373 14.0379L37.6364 14.665L47.6447 16.2747L47.7455 15.6476Z" fill="#8DB6DB"/>
<path d="M47.3511 18.0996L37.3429 16.4898L37.242 17.1169L47.2503 18.7266L47.3511 18.0996Z" fill="#8DB6DB"/>
<path d="M46.9567 20.5514L36.9485 18.9417L36.8476 19.5687L46.8559 21.1785L46.9567 20.5514Z" fill="#8DB6DB"/>
<path d="M20.9763 3.68813C21.9947 3.68813 22.8203 2.86252 22.8203 1.84407C22.8203 0.825616 21.9947 0 20.9763 0C19.9578 0 19.1322 0.825616 19.1322 1.84407C19.1322 2.86252 19.9578 3.68813 20.9763 3.68813Z" fill="#6C95C5"/>
<path d="M19.1321 22.513C20.2312 22.513 21.1222 21.622 21.1222 20.5229C21.1222 19.4238 20.2312 18.5329 19.1321 18.5329C18.0331 18.5329 17.1421 19.4238 17.1421 20.5229C17.1421 21.622 18.0331 22.513 19.1321 22.513Z" fill="#6C95C5"/>
<path d="M8.25988 10.8569H0.407231C0.299227 10.8569 0.195646 10.814 0.119275 10.7377C0.0429046 10.6613 0 10.5577 0 10.4497V2.59705C0 2.54357 0.0105333 2.49062 0.0309986 2.44121C0.0514639 2.3918 0.0814604 2.34691 0.119275 2.30909C0.15709 2.27128 0.201983 2.24128 0.251391 2.22082C0.300798 2.20035 0.353753 2.18982 0.407231 2.18982H8.25988C8.313 2.18981 8.36559 2.20039 8.41457 2.22095C8.46356 2.24151 8.50795 2.27163 8.54515 2.30955C8.58236 2.34747 8.61163 2.39242 8.63125 2.44179C8.65087 2.49116 8.66045 2.54394 8.65943 2.59705V10.4497C8.66045 10.5028 8.65087 10.5556 8.63125 10.605C8.61163 10.6543 8.58236 10.6993 8.54515 10.7372C8.50795 10.7751 8.46356 10.8052 8.41457 10.8258C8.36559 10.8464 8.313 10.8569 8.25988 10.8569V10.8569ZM0.806779 10.0425H7.85265V3.00428H0.806779V10.0425Z" fill="#6C95C5"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,12 @@
<svg width="51" height="52" viewBox="0 0 51 52" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M33.7935 33.8871L9.61371 40.8302L0.314941 8.4465L17.2926 3.57147L26.3867 8.09241L33.7935 33.8871Z" fill="#3D5BA1"/>
<path d="M34.8973 32.3923L10.7175 39.3354L1.41626 6.94308L18.3939 2.06805L27.4905 6.59763L34.8973 32.3923Z" fill="#436AA9"/>
<path d="M18.3939 2.06805L20.2884 8.66568L27.4905 6.59764L18.3939 2.06805Z" fill="#355E99"/>
<path d="M22.9667 12.5892L9.1842 16.5467L9.43217 17.4103L23.2147 13.4527L22.9667 12.5892Z" fill="#8DB6DB"/>
<path d="M23.9363 15.9657L10.1538 19.9232L10.4018 20.7868L24.1843 16.8293L23.9363 15.9657Z" fill="#8DB6DB"/>
<path d="M24.9058 19.3422L11.1233 23.2998L11.3713 24.1633L25.1537 20.2058L24.9058 19.3422Z" fill="#8DB6DB"/>
<path d="M25.8754 22.7188L12.0929 26.6763L12.3409 27.5399L26.1233 23.5823L25.8754 22.7188Z" fill="#8DB6DB"/>
<path d="M26.8449 26.0953L13.0624 30.0529L13.3103 30.9164L27.0928 26.9589L26.8449 26.0953Z" fill="#8DB6DB"/>
<path d="M32.4427 51.728C33.6681 51.728 34.6614 50.7347 34.6614 49.5093C34.6614 48.284 33.6681 47.2906 32.4427 47.2906C31.2174 47.2906 30.224 48.284 30.224 49.5093C30.224 50.7347 31.2174 51.728 32.4427 51.728Z" fill="#638BBF"/>
<path d="M45.7827 42.1384C44.7531 42.1366 43.7471 41.8296 42.8919 41.2562C42.0367 40.6828 41.3706 39.8688 40.9779 38.917C40.5851 37.9653 40.4833 36.9184 40.6853 35.9088C40.8873 34.8992 41.384 33.9721 42.1128 33.2447C42.8415 32.5172 43.7694 32.0222 44.7794 31.822C45.7894 31.6218 46.8361 31.7254 47.7871 32.1199C48.7382 32.5143 49.5511 33.1818 50.1229 34.0381C50.6947 34.8943 50.9999 35.9008 50.9999 36.9305C50.9999 37.6152 50.8649 38.2931 50.6026 38.9256C50.3403 39.5581 49.9559 40.1326 49.4713 40.6163C48.9867 41.1 48.4115 41.4835 47.7786 41.7446C47.1457 42.0058 46.4674 42.1396 45.7827 42.1384ZM45.7827 32.7066C44.9477 32.7084 44.132 32.9577 43.4386 33.4229C42.7452 33.8882 42.2053 34.5485 41.887 35.3205C41.5687 36.0925 41.4864 36.9414 41.6504 37.7602C41.8145 38.5789 42.2175 39.3307 42.8086 39.9205C43.3997 40.5103 44.1523 40.9116 44.9714 41.0739C45.7905 41.2361 46.6393 41.1519 47.4106 40.8319C48.1819 40.512 48.841 39.9706 49.3047 39.2762C49.7684 38.5818 50.0159 37.7655 50.0159 36.9305C50.0159 36.375 49.9064 35.825 49.6935 35.3119C49.4807 34.7988 49.1687 34.3328 48.7755 33.9404C48.3823 33.5481 47.9155 33.2372 47.402 33.0254C46.8885 32.8137 46.3382 32.7054 45.7827 32.7066V32.7066Z" fill="#638BBF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,144 @@
div {
font-family: "Open Sans", sans-serif, Arial;
text-align: center;
}
.advent-announce {
background-color: #3A5FA6;
height: 56px;
left: 0;
top: 0;
padding: 0;
text-align: center;
position: relative;
width: 100%;
z-index: 1001;
}
.advent-announce a {
display: block;
text-decoration: none;
width: auto;
animation-duration: 0.5s;
position: absolute;
width: 100%;
}
.advent-announce-text {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
color: #FFFFFF;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
margin: 0 auto;
position: relative;
font-size: 14px;
font-weight: 600;
height: 40px;
text-decoration: none !important;
line-height: 20px;
padding: 8px 0px;
width: 754px;
z-index: 0;
}
.advent-announce-text:after {
background-image: url(./images/desktop_right_docs_7_1.svg);
background-position-y: -14px;
right: -132px;
width: 136px;
}
.advent-announce-text:before {
background-image: url(./images/desktop_left_docs_7_1.svg);
background-position-y: 12px;
left: -96px;
width: 81px;
}
.advent-announce-text:before,
.advent-announce-text:after {
background-repeat: no-repeat;
content: "";
display: block;
height: 56px;
top: 0px;
position: absolute;
z-index: -1;
}
.advent-announce-text b {
font-weight: 700;
}
.advent-announce-text span {
color: #FFB979;
}
.advent-announce.ru .advent-announce-text {
width: 828px;
}
.advent-desktop-hide {
display: none;
}
@media screen and (max-width: 1023px) {
.advent-announce {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
background-color: #3A5FA6;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
height: 48px;
}
.advent-announce-text {
display: inline-block;
font-size: 12px;
font-weight: bold;
height: auto;
letter-spacing: 0.01em;
line-height: 16px;
padding: 16px 0px;
white-space: normal;
width: auto !important;
}
.advent-announce-text:after {
background-image: url(./images/mob_right_docs_7_1.svg);
background-position-y: -12px;
right: -58px;
width: 54px;
}
.advent-announce-text:before {
background-image: url(./images/mob_left_docs_7_1.svg);
background-position-y: 0;
height: 28px;
left: -64px;
top: 9px;
width: 51px;
}
.advent-mobile-hide {
display: none;
}
}

View File

@ -0,0 +1,55 @@
import * as React from "react"
import { graphql } from "gatsby";
import { Trans, useTranslation } from 'gatsby-plugin-react-i18next';
import '../../styles/base.css';
import "./index.css";
const IndexPage = () => {
const { t, i18n: { language } } = useTranslation("Docs_7_1");
const LinkHrefDocs71 = "https://www.onlyoffice.com/blog/2022/05/discover-onlyoffice-docs-v7-1/";
return (
<>
<div className={"advent-announce advent-mobile-hide " + language}>
<a className="docs-7-1" href={LinkHrefDocs71}>
<div className="advent-announce-text">
<div>
<Trans i18nKey="BannerTextDesktop">
<b>Discover <span>ONLYOFFICE Docs v7.1</span>:</b> ARM compatibility, upgraded PDF/XPS/DjVu viewer, PDF to DOCX conversion, Print preview for sheets and more
</Trans>
</div>
</div>
</a>
</div>
<div className="advent-announce advent-desktop-hide">
<a className="docs-7-1" href={LinkHrefDocs71}>
<div className="advent-announce-text">
<Trans i18nKey="BannerTextMob">
<b>Discover ONLYOFFICE <span>Docs v7.1</span></b>
</Trans>
</div>
</a>
</div>
</>
)
}
export default IndexPage;
export const query = graphql`
query ($language: String!) {
locales: allLocale(filter: {language: {eq: $language}}) {
edges {
node {
ns
data
language
}
}
}
}
`;

View File

@ -5946,6 +5946,11 @@ gatsby-plugin-gatsby-cloud@^4.4.0:
lodash "^4.17.21"
webpack-assets-manifest "^5.1.0"
gatsby-plugin-google-fonts@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gatsby-plugin-google-fonts/-/gatsby-plugin-google-fonts-1.0.1.tgz#d71054f7bf207b9a8da227380369e18e6f4e0201"
integrity sha512-p1NVkn27GUnDA5qHM+Z4cCcLCJIardzZXMon3640sT4xuL/AZJbsx3HEt2KY/5oZu0UXIkytkxzV2Da4rQeUIg==
gatsby-plugin-image@^2.4.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/gatsby-plugin-image/-/gatsby-plugin-image-2.7.0.tgz#cec35a39e73cee991a1fa3d66e3584d937bd640b"

View File

@ -61,7 +61,7 @@ const Header = styled.header`
position: relative;
padding-right: 20px;
padding-left: ${(props) =>
!props.needNavMenu || props.isPersonal || props.isDesktopView
!props.needNavMenu || props.isPersonal || props.isDesktopView || isMobile
? "20px"
: "4px"};
cursor: pointer;

View File

@ -929,8 +929,8 @@ const Editor = () => {
/>
)}
{isFolderDialogVisible && (
<SelectFolderDialog
folderId={fileInfo?.folderId}
isPanelVisible={isFolderDialogVisible}
onClose={onCloseFolderDialog}
foldersType="exceptSortedByTags"
@ -938,10 +938,7 @@ const Editor = () => {
isDisableButton={!titleSelectorFolder.trim()}
header={
<StyledSelectFolder>
<Text
className="editor-select-folder_text"
fontWeight={600}
>
<Text className="editor-select-folder_text" fontWeight={600}>
{i18n.t("FileName")}
</Text>
<TextInput
@ -965,7 +962,6 @@ const Editor = () => {
),
})}
/>
)}
{preparationPortalDialogVisible && (
<PreparationPortalDialog