Fixed Bug 57973 - Web: Files: Changed view for "Move to" dialog.
This commit is contained in:
parent
b61e98775b
commit
6ddb05512a
@ -8,16 +8,46 @@ import Button from "@appserver/components/button";
|
|||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
import toastr from "@appserver/components/toast/toastr";
|
import toastr from "@appserver/components/toast/toastr";
|
||||||
import { connectedCloudsTypeTitleTranslation } from "../../../helpers/utils";
|
import { connectedCloudsTypeTitleTranslation } from "../../../helpers/utils";
|
||||||
|
import RadioButtonGroup from "@appserver/components/radio-button-group";
|
||||||
|
|
||||||
const StyledOperationDialog = styled(ModalDialog)`
|
const StyledOperationDialog = styled(ModalDialog)`
|
||||||
.operation-button {
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-dialog-aside-footer {
|
.modal-dialog-aside-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
|
.third-party-move-radio-button {
|
||||||
|
margin-top: 12px;
|
||||||
|
label:not(:last-child) {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.modal-dialog-modal-footer {
|
||||||
|
border-top: ${(props) => props.theme.button.border.baseDisabled};
|
||||||
|
margin-left: -12px;
|
||||||
|
margin-right: -12px;
|
||||||
|
padding-left: 12px;
|
||||||
|
padding-right: 12px;
|
||||||
|
padding-top: 12px;
|
||||||
|
.operation-button {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.modal-dialog-aside-footer {
|
||||||
|
border-top: ${(props) => props.theme.button.border.baseDisabled};
|
||||||
|
margin-left: -16px;
|
||||||
|
margin-right: -16px;
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 16px;
|
||||||
|
padding-top: 16px;
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
grid-gap: 10px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.third-party-move-dialog-text {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const PureThirdPartyMoveContainer = ({
|
const PureThirdPartyMoveContainer = ({
|
||||||
@ -34,21 +64,25 @@ const PureThirdPartyMoveContainer = ({
|
|||||||
setBufferSelection,
|
setBufferSelection,
|
||||||
itemOperationToFolder,
|
itemOperationToFolder,
|
||||||
setMoveToPanelVisible,
|
setMoveToPanelVisible,
|
||||||
|
conflictResolveDialogVisible,
|
||||||
}) => {
|
}) => {
|
||||||
const zIndex = 310;
|
const zIndex = 310;
|
||||||
const deleteAfter = false; // TODO: get from settings
|
const deleteAfter = false; // TODO: get from settings
|
||||||
|
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
const [actionType, setActionType] = useState("move");
|
||||||
|
|
||||||
const onClose = () => {
|
const onClosePanels = () => {
|
||||||
setDestFolderId(false);
|
setDestFolderId(false);
|
||||||
setThirdPartyMoveDialogVisible(false);
|
setThirdPartyMoveDialogVisible(false);
|
||||||
setMoveToPanelVisible(false);
|
setMoveToPanelVisible(false);
|
||||||
setBufferSelection(null);
|
setBufferSelection(null);
|
||||||
};
|
};
|
||||||
|
const onClose = () => setThirdPartyMoveDialogVisible(false);
|
||||||
|
|
||||||
const startOperation = (e) => {
|
const startOperation = () => {
|
||||||
const isCopy = e.target.dataset.copy;
|
const isCopy = actionType === "copy";
|
||||||
|
console.log("isCopy", isCopy);
|
||||||
const folderIds = [];
|
const folderIds = [];
|
||||||
const fileIds = [];
|
const fileIds = [];
|
||||||
|
|
||||||
@ -80,7 +114,7 @@ const PureThirdPartyMoveContainer = ({
|
|||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
} else {
|
} else {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
onClose();
|
onClosePanels();
|
||||||
await itemOperationToFolder(data);
|
await itemOperationToFolder(data);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -92,47 +126,72 @@ const PureThirdPartyMoveContainer = ({
|
|||||||
|
|
||||||
const providerTitle = connectedCloudsTypeTitleTranslation(provider, t);
|
const providerTitle = connectedCloudsTypeTitleTranslation(provider, t);
|
||||||
|
|
||||||
|
const onSelectActionType = (e) => setActionType(e.target.value);
|
||||||
|
|
||||||
|
const radioOptions = [
|
||||||
|
{
|
||||||
|
label: (
|
||||||
|
<div>
|
||||||
|
<Text fontWeight={600} fontSize={"14px"}>
|
||||||
|
{t("Translations:Move")}
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
value: "move",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: (
|
||||||
|
<div>
|
||||||
|
<Text fontWeight={600} fontSize={"14px"}>
|
||||||
|
{t("Translations:Copy")}
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
|
||||||
|
value: "copy",
|
||||||
|
},
|
||||||
|
];
|
||||||
return (
|
return (
|
||||||
<StyledOperationDialog
|
<StyledOperationDialog
|
||||||
isLoading={!tReady}
|
isLoading={!tReady}
|
||||||
visible={visible}
|
visible={conflictResolveDialogVisible ? false : visible}
|
||||||
zIndex={zIndex}
|
zIndex={zIndex}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
displayType="aside"
|
|
||||||
>
|
>
|
||||||
<ModalDialog.Header>{t("MoveConfirmation")}</ModalDialog.Header>
|
<ModalDialog.Header>{t("MoveConfirmation")}</ModalDialog.Header>
|
||||||
<ModalDialog.Body>
|
<ModalDialog.Body>
|
||||||
<Text>{t("MoveConfirmationMessage", { provider: providerTitle })}</Text>
|
<Text>{t("MoveConfirmationMessage", { provider: providerTitle })}</Text>
|
||||||
<br />
|
|
||||||
<Text>{t("MoveConfirmationAlert")}</Text>
|
<Text className="third-party-move-dialog-text">
|
||||||
|
{t("ConflictResolveDialog:ConflictResolveSelectAction")}
|
||||||
|
</Text>
|
||||||
|
<RadioButtonGroup
|
||||||
|
className="third-party-move-radio-button"
|
||||||
|
orientation="vertical"
|
||||||
|
fontSize="13px"
|
||||||
|
fontWeight="400"
|
||||||
|
name="group"
|
||||||
|
onClick={onSelectActionType}
|
||||||
|
options={radioOptions}
|
||||||
|
selected={actionType}
|
||||||
|
/>
|
||||||
</ModalDialog.Body>
|
</ModalDialog.Body>
|
||||||
|
|
||||||
<ModalDialog.Footer>
|
<ModalDialog.Footer>
|
||||||
<Button
|
<Button
|
||||||
className="operation-button"
|
className="operation-button"
|
||||||
label={t("Translations:Move")}
|
label={t("Common:OKButton")}
|
||||||
size="normal"
|
size="normalTouchscreen"
|
||||||
scale
|
|
||||||
primary
|
primary
|
||||||
onClick={startOperation}
|
onClick={startOperation}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
isDisabled={isLoading}
|
isDisabled={isLoading}
|
||||||
/>
|
/>
|
||||||
<Button
|
|
||||||
data-copy="copy"
|
|
||||||
className="operation-button"
|
|
||||||
label={t("Translations:Copy")}
|
|
||||||
size="normal"
|
|
||||||
scale
|
|
||||||
onClick={startOperation}
|
|
||||||
isLoading={isLoading}
|
|
||||||
isDisabled={isLoading}
|
|
||||||
/>
|
|
||||||
<Button
|
<Button
|
||||||
className="operation-button"
|
className="operation-button"
|
||||||
label={t("Common:CancelButton")}
|
label={t("Common:CancelButton")}
|
||||||
size="normal"
|
size="normalTouchscreen"
|
||||||
scale
|
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
isDisabled={isLoading}
|
isDisabled={isLoading}
|
||||||
@ -150,6 +209,7 @@ export default inject(
|
|||||||
destFolderId,
|
destFolderId,
|
||||||
setDestFolderId,
|
setDestFolderId,
|
||||||
setMoveToPanelVisible,
|
setMoveToPanelVisible,
|
||||||
|
conflictResolveDialogVisible,
|
||||||
} = dialogsStore;
|
} = dialogsStore;
|
||||||
const { bufferSelection, setBufferSelection } = filesStore;
|
const { bufferSelection, setBufferSelection } = filesStore;
|
||||||
const { checkFileConflicts, setConflictDialogData } = filesActionsStore;
|
const { checkFileConflicts, setConflictDialogData } = filesActionsStore;
|
||||||
@ -171,10 +231,14 @@ export default inject(
|
|||||||
setConflictDialogData,
|
setConflictDialogData,
|
||||||
itemOperationToFolder,
|
itemOperationToFolder,
|
||||||
setMoveToPanelVisible,
|
setMoveToPanelVisible,
|
||||||
|
conflictResolveDialogVisible,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
)(
|
)(
|
||||||
withTranslation(["ThirdPartyMoveDialog", "Common", "Translations"])(
|
withTranslation([
|
||||||
observer(PureThirdPartyMoveContainer)
|
"ThirdPartyMoveDialog",
|
||||||
)
|
"Common",
|
||||||
|
"Translations",
|
||||||
|
"ConflictResolveDialog",
|
||||||
|
])(observer(PureThirdPartyMoveContainer))
|
||||||
);
|
);
|
||||||
|
@ -5,7 +5,7 @@ import { inject, observer } from "mobx-react";
|
|||||||
import toastr from "studio/toastr";
|
import toastr from "studio/toastr";
|
||||||
import SelectFolderDialog from "../SelectFolderDialog";
|
import SelectFolderDialog from "../SelectFolderDialog";
|
||||||
|
|
||||||
let operationData, fileWithConflicts, timerId;
|
let timerId;
|
||||||
const OperationsPanelComponent = (props) => {
|
const OperationsPanelComponent = (props) => {
|
||||||
const {
|
const {
|
||||||
t,
|
t,
|
||||||
@ -31,25 +31,12 @@ const OperationsPanelComponent = (props) => {
|
|||||||
parentFolderId,
|
parentFolderId,
|
||||||
conflictResolveDialogVisible,
|
conflictResolveDialogVisible,
|
||||||
clearActiveOperations,
|
clearActiveOperations,
|
||||||
|
thirdPartyMoveDialogVisible,
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const deleteAfter = false; // TODO: get from settings
|
const deleteAfter = false; // TODO: get from settings
|
||||||
|
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [intermediateHidden, setIntermediateHidden] = useState(false);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (conflictResolveDialogVisible === false) {
|
|
||||||
intermediateHidden && setIntermediateHidden(false);
|
|
||||||
} else {
|
|
||||||
isLoading && setIsLoading(false);
|
|
||||||
}
|
|
||||||
}, [conflictResolveDialogVisible]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
intermediateHidden &&
|
|
||||||
setConflictDialogData(fileWithConflicts, operationData);
|
|
||||||
}, [intermediateHidden]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
return () => {
|
return () => {
|
||||||
@ -113,7 +100,7 @@ const OperationsPanelComponent = (props) => {
|
|||||||
|
|
||||||
if (!folderIds.length && !fileIds.length) return;
|
if (!folderIds.length && !fileIds.length) return;
|
||||||
|
|
||||||
operationData = {
|
const operationData = {
|
||||||
destFolderId,
|
destFolderId,
|
||||||
folderIds,
|
folderIds,
|
||||||
fileIds,
|
fileIds,
|
||||||
@ -134,8 +121,7 @@ const OperationsPanelComponent = (props) => {
|
|||||||
checkFileConflicts(destFolderId, folderIds, fileIds)
|
checkFileConflicts(destFolderId, folderIds, fileIds)
|
||||||
.then(async (conflicts) => {
|
.then(async (conflicts) => {
|
||||||
if (conflicts.length) {
|
if (conflicts.length) {
|
||||||
fileWithConflicts = conflicts;
|
setConflictDialogData(conflicts, operationData);
|
||||||
setIntermediateHidden(true);
|
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
} else {
|
} else {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
@ -155,7 +141,11 @@ const OperationsPanelComponent = (props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// console.log("Operations panel render", expandedKeys);
|
// console.log("Operations panel render", expandedKeys);
|
||||||
const isVisible = intermediateHidden ? false : visible;
|
const isVisible =
|
||||||
|
conflictResolveDialogVisible || thirdPartyMoveDialogVisible
|
||||||
|
? false
|
||||||
|
: visible;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SelectFolderDialog
|
<SelectFolderDialog
|
||||||
selectionFiles={selection}
|
selectionFiles={selection}
|
||||||
@ -221,6 +211,7 @@ export default inject(
|
|||||||
setThirdPartyMoveDialogVisible,
|
setThirdPartyMoveDialogVisible,
|
||||||
setIsFolderActions,
|
setIsFolderActions,
|
||||||
conflictResolveDialogVisible,
|
conflictResolveDialogVisible,
|
||||||
|
thirdPartyMoveDialogVisible,
|
||||||
} = dialogsStore;
|
} = dialogsStore;
|
||||||
|
|
||||||
const selections = selection.length ? selection : [bufferSelection];
|
const selections = selection.length ? selection : [bufferSelection];
|
||||||
@ -252,6 +243,7 @@ export default inject(
|
|||||||
checkFileConflicts,
|
checkFileConflicts,
|
||||||
conflictResolveDialogVisible,
|
conflictResolveDialogVisible,
|
||||||
clearActiveOperations,
|
clearActiveOperations,
|
||||||
|
thirdPartyMoveDialogVisible,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
)(withRouter(observer(OperationsPanel)));
|
)(withRouter(observer(OperationsPanel)));
|
||||||
|
Loading…
Reference in New Issue
Block a user