Merge branch 'release/v1.2' of https://github.com/ONLYOFFICE/AppServer into release/v1.2
This commit is contained in:
commit
9601e64d0e
@ -125,6 +125,7 @@ export default function withFileActions(WrappedFileItem) {
|
||||
if (
|
||||
(e && e.target.tagName === "INPUT") ||
|
||||
!!e.target.closest(".lock-file") ||
|
||||
!!e.target.closest(".additional-badges") ||
|
||||
isTrashFolder
|
||||
)
|
||||
return;
|
||||
|
@ -223,8 +223,9 @@ class TreeFolders extends React.Component {
|
||||
};
|
||||
|
||||
getItems = (data) => {
|
||||
const { withoutProvider, theme, parentId, setIsLoadingNodes } = this.props;
|
||||
return data.map((item, index) => {
|
||||
const { withoutProvider, theme } = this.props;
|
||||
|
||||
return data.map((item) => {
|
||||
const dragging = this.props.dragging ? this.showDragItems(item) : false;
|
||||
|
||||
const showBadge = item.newItems
|
||||
@ -240,23 +241,6 @@ class TreeFolders extends React.Component {
|
||||
let value = "";
|
||||
if (dragging) value = `${item.id} dragging ${provider}`;
|
||||
|
||||
if (this.needScroll) {
|
||||
if (parentId && item.parentId.toString() === parentId.toString()) {
|
||||
if (index === this.childLength) {
|
||||
setIsLoadingNodes(false);
|
||||
const selectedNode = document.getElementsByClassName(
|
||||
"rc-tree-node-selected"
|
||||
)[0];
|
||||
if (selectedNode) {
|
||||
this.needScroll = false;
|
||||
document
|
||||
.querySelector("#folder-tree-scroll-bar > .scroll-body")
|
||||
.scrollTo(0, selectedNode.offsetTop + index * 36);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((item.folders && item.folders.length > 0) || serviceFolder) {
|
||||
return (
|
||||
<TreeNode
|
||||
@ -347,13 +331,9 @@ class TreeFolders extends React.Component {
|
||||
};
|
||||
|
||||
getNewTreeData(treeData, curId, child, pos) {
|
||||
const { parentId, setIsLoadingNodes } = this.props;
|
||||
this.childLength = null;
|
||||
!this.expand && parentId && setIsLoadingNodes(true);
|
||||
if (!this.expand && parentId && curId.toString() === parentId?.toString()) {
|
||||
this.needScroll = true;
|
||||
this.childLength = child.length - 1;
|
||||
}
|
||||
const { selectedNodeParentId, setIsLoadingNodes } = this.props;
|
||||
!this.expand && selectedNodeParentId && setIsLoadingNodes(true);
|
||||
|
||||
this.loop(treeData, child, pos);
|
||||
this.setLeaf(treeData, curId, 10);
|
||||
}
|
||||
@ -380,14 +360,14 @@ class TreeFolders extends React.Component {
|
||||
}
|
||||
|
||||
generateTreeNodes = (treeNode) => {
|
||||
const folderId = treeNode.props.id;
|
||||
const level = treeNode.props.pos;
|
||||
const folderId = treeNode.id;
|
||||
const level = treeNode.pos;
|
||||
|
||||
let arrayFolders;
|
||||
return this.props.getSubfolders(folderId).then((data) => {
|
||||
arrayFolders = data;
|
||||
|
||||
const folderIndex = treeNode.props.pos;
|
||||
const folderIndex = treeNode.pos;
|
||||
let i = 0;
|
||||
|
||||
for (let item of arrayFolders) {
|
||||
@ -411,12 +391,12 @@ class TreeFolders extends React.Component {
|
||||
|
||||
return this.generateTreeNodes(treeNode)
|
||||
.then((data) => {
|
||||
const itemId = treeNode.props.id.toString();
|
||||
const itemId = treeNode.id.toString();
|
||||
const listIds = data.listIds;
|
||||
listIds.push(itemId);
|
||||
|
||||
const treeData = certainFolders
|
||||
? incomingDate
|
||||
? [...incomingDate]
|
||||
: [...this.props.treeFolders];
|
||||
|
||||
this.getNewTreeData(treeData, listIds, data.folders, data.level);
|
||||
@ -430,7 +410,6 @@ class TreeFolders extends React.Component {
|
||||
};
|
||||
|
||||
onExpand = (expandedKeys, treeNode) => {
|
||||
this.needScroll = false;
|
||||
this.expand = true;
|
||||
if (treeNode.node && !treeNode.node.children) {
|
||||
if (treeNode.expanded) {
|
||||
@ -481,7 +460,18 @@ class TreeFolders extends React.Component {
|
||||
promise.then((files) => onTreeDrop(files, id));
|
||||
//}
|
||||
};
|
||||
onLoad = (loadedKeys, options) => {
|
||||
const { firstLoadScroll, selectedNodeParentId } = this.props;
|
||||
//console.log("onLoad tree nodes", "loadedKeys", treeNode, "options", options);
|
||||
|
||||
if (
|
||||
!this.expand &&
|
||||
selectedNodeParentId &&
|
||||
loadedKeys.includes(selectedNodeParentId.toString())
|
||||
) {
|
||||
firstLoadScroll();
|
||||
}
|
||||
};
|
||||
render() {
|
||||
const {
|
||||
selectedKeys,
|
||||
@ -521,6 +511,7 @@ class TreeFolders extends React.Component {
|
||||
gapBetweenNodesTablet="26"
|
||||
isFullFillSelection={false}
|
||||
childrenCount={expandedPanelKeys?.length}
|
||||
onLoad={this.onLoad}
|
||||
>
|
||||
{this.getItems(data || treeFolders)}
|
||||
</StyledTreeMenu>
|
||||
@ -558,7 +549,10 @@ export default inject(
|
||||
setIsLoadingNodes,
|
||||
isLoadingNodes,
|
||||
} = treeFoldersStore;
|
||||
const { id /* rootFolderType */ } = selectedFolderStore;
|
||||
const {
|
||||
id,
|
||||
parentId: selectedNodeParentId /* rootFolderType */,
|
||||
} = selectedFolderStore;
|
||||
|
||||
return {
|
||||
isAdmin: auth.isAdmin,
|
||||
@ -584,6 +578,7 @@ export default inject(
|
||||
getSubfolders,
|
||||
setIsLoadingNodes,
|
||||
isLoadingNodes,
|
||||
selectedNodeParentId,
|
||||
};
|
||||
}
|
||||
)(withTranslation(["Home", "Common"])(observer(TreeFolders)));
|
||||
|
@ -18,12 +18,13 @@ const FolderTreeBody = ({
|
||||
isDisableTree,
|
||||
parentId,
|
||||
isLoadingNodes,
|
||||
setIsLoadingNodes,
|
||||
}) => {
|
||||
const { t } = useTranslation(["SelectFolder", "Common"]);
|
||||
|
||||
useEffect(() => {
|
||||
const selectedNode = document.getElementsByClassName(
|
||||
"rc-tree-node-selected"
|
||||
"rc-tree-treenode-selected"
|
||||
)[0];
|
||||
if (selectedNode) {
|
||||
document
|
||||
@ -32,6 +33,19 @@ const FolderTreeBody = ({
|
||||
}
|
||||
}, []);
|
||||
|
||||
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);
|
||||
}
|
||||
};
|
||||
return (
|
||||
<>
|
||||
{isAvailable ? (
|
||||
@ -51,6 +65,7 @@ const FolderTreeBody = ({
|
||||
needUpdate={false}
|
||||
defaultExpandAll
|
||||
parentId={parentId}
|
||||
firstLoadScroll={firstLoadScroll}
|
||||
/>
|
||||
</Scrollbar>
|
||||
</div>
|
||||
@ -74,8 +89,11 @@ FolderTreeBody.defaultProps = {
|
||||
export default inject(
|
||||
({ filesStore, treeFoldersStore, selectedFolderStore }) => {
|
||||
const { filter, isLoading } = filesStore;
|
||||
const { expandedPanelKeys, isLoadingNodes } = treeFoldersStore;
|
||||
|
||||
const {
|
||||
expandedPanelKeys,
|
||||
isLoadingNodes,
|
||||
setIsLoadingNodes,
|
||||
} = treeFoldersStore;
|
||||
const expandedKeysProp = expandedPanelKeys
|
||||
? expandedPanelKeys
|
||||
: selectedFolderStore.pathParts;
|
||||
@ -87,6 +105,7 @@ export default inject(
|
||||
filter,
|
||||
isLoading,
|
||||
isLoadingNodes,
|
||||
setIsLoadingNodes,
|
||||
};
|
||||
}
|
||||
)(observer(FolderTreeBody));
|
||||
|
@ -10,7 +10,7 @@ const { auth: authStore } = store;
|
||||
class SelectFileDialogBody extends React.Component {
|
||||
componentDidMount() {
|
||||
const { settings, setFilesSettings } = this.props;
|
||||
settings && setFilesSettings(settings);
|
||||
settings && setFilesSettings(settings); // Remove after initialization settings in Editor
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -17,6 +17,7 @@ const SharingDialog = ({
|
||||
setSelection,
|
||||
theme,
|
||||
sharingPanelVisible,
|
||||
settings,
|
||||
}) => {
|
||||
useEffect(() => {
|
||||
setSharingPanelVisible(isVisible);
|
||||
@ -35,6 +36,7 @@ const SharingDialog = ({
|
||||
onSuccess={onSuccess}
|
||||
onCancel={onCancel}
|
||||
theme={theme}
|
||||
settings={settings}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
@ -419,6 +419,9 @@ class SharingPanelComponent extends React.Component {
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
const { settings, setFilesSettings } = this.props;
|
||||
settings && setFilesSettings(settings); // Remove after initialization settings in Editor
|
||||
|
||||
this.getShareData();
|
||||
|
||||
this._isMounted = true;
|
||||
@ -827,12 +830,13 @@ const SharingPanel = inject(
|
||||
dialogsStore,
|
||||
treeFoldersStore,
|
||||
selectedFolderStore,
|
||||
settingsStore,
|
||||
},
|
||||
{ uploadPanelVisible }
|
||||
) => {
|
||||
const { replaceFileStream, setEncryptionAccess } = auth;
|
||||
const { personal, customNames, isDesktopClient } = auth.settingsStore;
|
||||
const { user } = auth.userStore;
|
||||
const { setFilesSettings } = settingsStore;
|
||||
|
||||
const { id, access } = selectedFolderStore;
|
||||
|
||||
@ -908,6 +912,7 @@ const SharingPanel = inject(
|
||||
setBufferSelection,
|
||||
access,
|
||||
isShared: isShared,
|
||||
setFilesSettings,
|
||||
};
|
||||
}
|
||||
)(
|
||||
|
@ -58,9 +58,9 @@ const theme = store.auth.settingsStore.theme;
|
||||
|
||||
let documentIsReady = false;
|
||||
|
||||
const text = "text";
|
||||
const spreadSheet = "spreadsheet";
|
||||
const presentation = "presentation";
|
||||
const text = "word";
|
||||
const spreadSheet = "cell";
|
||||
const presentation = "slide";
|
||||
const insertImageAction = "imageFileType";
|
||||
const mailMergeAction = "mailMergeFileType";
|
||||
const compareFilesAction = "documentsFileType";
|
||||
@ -908,6 +908,7 @@ const Editor = () => {
|
||||
<div id="editor"></div>
|
||||
{isSharingAccess && isVisible && (
|
||||
<SharingDialog
|
||||
settings={settings} //TODO: Maybe init filesSettings in editor?
|
||||
isVisible={isVisible}
|
||||
sharingObject={fileInfo}
|
||||
onCancel={onCancel}
|
||||
@ -917,7 +918,7 @@ const Editor = () => {
|
||||
|
||||
{isFileDialogVisible && (
|
||||
<SelectFileDialog
|
||||
settings={settings}
|
||||
settings={settings} //TODO: Maybe init filesSettings in editor?
|
||||
resetTreeFolders
|
||||
onSelectFile={onSelectFile}
|
||||
isPanelVisible={isFileDialogVisible}
|
||||
|
Loading…
Reference in New Issue
Block a user