Web: Files: Templates: added onArrowClick action

This commit is contained in:
Nikita Gopienko 2024-05-14 17:52:04 +03:00
parent f141269ec2
commit 738eb8f796
3 changed files with 54 additions and 12 deletions

View File

@ -24,16 +24,13 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 // content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode // International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import React, { useState, useEffect, useCallback } from "react"; import { useState, useEffect, useCallback } from "react";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import { useTranslation } from "react-i18next";
import { toastr } from "@docspace/shared/components/toast"; import { toastr } from "@docspace/shared/components/toast";
import { CreateRoomTemplateDialog } from "../dialogs"; import { CreateRoomTemplateDialog } from "../dialogs";
let timerId = null;
const CreateRoomTemplateEvent = (props) => { const CreateRoomTemplateEvent = (props) => {
const { visible, onClose, item, fetchTags } = props; const { visible, item, fetchTags, setTemplateEventVisible } = props;
const [fetchedTags, setFetchedTags] = useState([]); const [fetchedTags, setFetchedTags] = useState([]);
@ -42,10 +39,20 @@ const CreateRoomTemplateEvent = (props) => {
setFetchedTags(tags); setFetchedTags(tags);
}, []); }, []);
useEffect(() => {
setTemplateEventVisible(true);
});
useEffect(() => { useEffect(() => {
fetchTagsAction(); fetchTagsAction();
}, [fetchTagsAction]); }, [fetchTagsAction]);
const onClose = () => {
props.onClose();
setTemplateEventVisible(false);
};
return ( return (
<CreateRoomTemplateDialog <CreateRoomTemplateDialog
visible={visible} visible={visible}
@ -57,7 +64,8 @@ const CreateRoomTemplateEvent = (props) => {
); );
}; };
export default inject(({ tagsStore }) => { export default inject(({ tagsStore, dialogsStore }) => {
const { fetchTags } = tagsStore; const { fetchTags } = tagsStore;
return { fetchTags }; const { setTemplateEventVisible } = dialogsStore;
return { fetchTags, setTemplateEventVisible };
})(observer(CreateRoomTemplateEvent)); })(observer(CreateRoomTemplateEvent));

View File

@ -56,10 +56,13 @@ import ArrowPathReactSvgUrl from "PUBLIC_DIR/images/arrow.path.react.svg?url";
const TemplateAccessSettingsPanel = ({ const TemplateAccessSettingsPanel = ({
t, t,
item,
visible, visible,
setIsVisible, setIsVisible,
setInfoPanelIsMobileHidden, setInfoPanelIsMobileHidden,
currentDeviceType, currentDeviceType,
onCreateRoomFromTemplate,
templateEventVisible,
}) => { }) => {
const [isAvailable, setIsAvailable] = useState(false); const [isAvailable, setIsAvailable] = useState(false);
const [inviteItems, setInviteItems] = useState([]); const [inviteItems, setInviteItems] = useState([]);
@ -104,6 +107,13 @@ const TemplateAccessSettingsPanel = ({
setIsAvailable(!isAvailable); setIsAvailable(!isAvailable);
}; };
const onArrowClick = () => {
onClose();
if (item && !templateEventVisible) {
onCreateRoomFromTemplate({ ...item, isEdit: true });
}
};
const onClose = () => { const onClose = () => {
setInfoPanelIsMobileHidden(false); setInfoPanelIsMobileHidden(false);
setIsVisible(false); setIsVisible(false);
@ -188,7 +198,7 @@ const TemplateAccessSettingsPanel = ({
size={17} size={17}
iconName={ArrowPathReactSvgUrl} iconName={ArrowPathReactSvgUrl}
className="sharing_panel-arrow" className="sharing_panel-arrow"
onClick={() => console.log("onArrowClick")} //TODO: Templates onClick={onArrowClick}
/> />
<StyledHeading>{t("Files:AccessSettings")}</StyledHeading> <StyledHeading>{t("Files:AccessSettings")}</StyledHeading>
</StyledBlock> </StyledBlock>
@ -279,14 +289,30 @@ const TemplateAccessSettingsPanel = ({
}; };
export default inject( export default inject(
({ settingsStore, peopleStore, dialogsStore, infoPanelStore }) => { ({
settingsStore,
peopleStore,
dialogsStore,
infoPanelStore,
filesStore,
filesActionsStore,
}) => {
const { theme, currentDeviceType } = settingsStore; const { theme, currentDeviceType } = settingsStore;
const { getUsersByQuery } = peopleStore.usersStore; const { getUsersByQuery } = peopleStore.usersStore;
const { setIsMobileHidden: setInfoPanelIsMobileHidden } = infoPanelStore; const { setIsMobileHidden: setInfoPanelIsMobileHidden } = infoPanelStore;
const { selection, bufferSelection } = filesStore;
const { onCreateRoomFromTemplate } = filesActionsStore;
const {
templateAccessSettingsVisible,
setTemplateAccessSettingsVisible,
templateEventVisible,
} = dialogsStore;
const { templateAccessSettingsVisible, setTemplateAccessSettingsVisible } = const item = selection.length
dialogsStore; ? selection[0]
: bufferSelection
? bufferSelection
: null;
return { return {
getUsersByQuery, getUsersByQuery,
@ -295,6 +321,9 @@ export default inject(
setIsVisible: setTemplateAccessSettingsVisible, setIsVisible: setTemplateAccessSettingsVisible,
setInfoPanelIsMobileHidden, setInfoPanelIsMobileHidden,
currentDeviceType, currentDeviceType,
item,
onCreateRoomFromTemplate,
templateEventVisible,
}; };
}, },
)( )(

View File

@ -117,6 +117,7 @@ class DialogsStore {
cancelUploadDialogVisible = false; cancelUploadDialogVisible = false;
createRoomTemplateDialogVisible = false; createRoomTemplateDialogVisible = false;
templateAccessSettingsVisible = true; templateAccessSettingsVisible = true;
templateEventVisible = false;
selectFileFormRoomFilterParam = FilesSelectorFilterTypes.DOCX; selectFileFormRoomFilterParam = FilesSelectorFilterTypes.DOCX;
selectFileFormRoomOpenRoot = false; selectFileFormRoomOpenRoot = false;
@ -531,6 +532,10 @@ class DialogsStore {
setTemplateAccessSettingsVisible = (isVisible) => { setTemplateAccessSettingsVisible = (isVisible) => {
this.templateAccessSettingsVisible = isVisible; this.templateAccessSettingsVisible = isVisible;
}; };
setTemplateEventVisible = (isVisible) => {
this.templateEventVisible = isVisible;
};
} }
export default DialogsStore; export default DialogsStore;