🎨 small ui changes (#110)

This commit is contained in:
Montassar Ghanmy
2023-06-23 10:53:03 +01:00
committed by GitHub
parent eadf2016bc
commit 6a7403a399
6 changed files with 85 additions and 65 deletions
+1 -1
View File
@@ -245,7 +245,7 @@
"components.item_context_menu.versions": "Versions", "components.item_context_menu.versions": "Versions",
"components.item_context_menu.move": "Move", "components.item_context_menu.move": "Move",
"components.item_context_menu.move.modal_header": "Move", "components.item_context_menu.move.modal_header": "Move",
"components.item_context_menu.move_to_trash": "Move to trash", "components.item_context_menu.move_to_trash": "Delete",
"components.item_context_menu.delete": "Delete", "components.item_context_menu.delete": "Delete",
"components.item_context_menu.move_multiple": "Move selected items", "components.item_context_menu.move_multiple": "Move selected items",
"components.item_context_menu.move_multiple.modal_header": "Move selected items", "components.item_context_menu.move_multiple.modal_header": "Move selected items",
+1 -1
View File
@@ -245,7 +245,7 @@
"components.item_context_menu.versions": "Versions", "components.item_context_menu.versions": "Versions",
"components.item_context_menu.move": "Déplacer", "components.item_context_menu.move": "Déplacer",
"components.item_context_menu.move.modal_header": "Déplacer", "components.item_context_menu.move.modal_header": "Déplacer",
"components.item_context_menu.move_to_trash": "Déplacer vers la corbeille", "components.item_context_menu.move_to_trash": "Supprimer",
"components.item_context_menu.delete": "Supprimer", "components.item_context_menu.delete": "Supprimer",
"components.item_context_menu.move_multiple": "Déplacer les éléments sélectionnés", "components.item_context_menu.move_multiple": "Déplacer les éléments sélectionnés",
"components.item_context_menu.move_multiple.modal_header": "Déplacer les éléments sélectionnés", "components.item_context_menu.move_multiple.modal_header": "Déplacer les éléments sélectionnés",
@@ -1,5 +1,4 @@
import React, { Component } from 'react'; import React from 'react';
import MenusManager from '@components/menus/menus-manager.jsx'; import MenusManager from '@components/menus/menus-manager.jsx';
/* /*
@@ -24,71 +23,91 @@ export default class Menu extends React.Component {
*/ */
static closeAll() { static closeAll() {
MenusManager.closeMenu(); MenusManager.closeAllMenus(); // Corrected method name to closeAllMenus()
} }
constructor(props) { constructor(props) {
super(); super(props);
this.state = { this.state = {
menus_manager: MenusManager, isMenuOpen: false,
}; };
this.open = false; // Added initialization for open state
this.container = React.createRef(); // Ref for container div
this.previousMenusId = null; // Added initialization for previousMenusId
}
componentDidMount() {
MenusManager.addListener(this); MenusManager.addListener(this);
} }
componentWillUnmount() { componentWillUnmount() {
if (this.props.onClose && this.open) { if (this.props.onClose && this.open) {
this.props.onClose(); this.props.onClose();
} }
MenusManager.removeListener(this); MenusManager.removeListener(this);
} }
openMenuFromParent(menu, rect, position) { openMenuFromParent(menu, rect, position) {
MenusManager.openMenu(menu, rect, position); MenusManager.openMenu(menu, rect, position);
} }
openMenu(evt) { openMenu(evt) {
this.open = true; if (this.open) {
evt.preventDefault(); this.closeAll();
evt.stopPropagation(); } else {
var elementRect = window.getBoundingClientRect(this.container); this.open = true;
elementRect.x = elementRect.x || elementRect.left; evt.preventDefault();
elementRect.y = elementRect.y || elementRect.top; evt.stopPropagation();
this.previous_menus_id = MenusManager.openMenu( var elementRect = this.container.current.getBoundingClientRect(); // Fixed getBoundingClientRect()
this.props.menu, elementRect.x = elementRect.x || elementRect.left;
elementRect, elementRect.y = elementRect.y || elementRect.top;
this.props.position, this.previousMenusId = MenusManager.openMenu( // Updated variable name
); this.props.menu,
if (this.props.onOpen) this.props.onOpen(); elementRect,
this.props.position,
);
if (this.props.onOpen) this.props.onOpen();
}
} }
shouldComponentUpdate(nextProps, nextState) { shouldComponentUpdate(nextProps, nextState) {
if (nextProps.menu != this.props.menu && this.open) { if (nextProps.menu !== this.props.menu && this.open) { // Fixed comparison operator
this.setState({}); this.setState({});
} }
if ( if (
(this.state.menus_manager.menus.length == 0 && this.previous_menus_number > 0) || (MenusManager.menus.length === 0 && this.previousMenusNumber > 0) ||
this.state.menus_manager.last_opened_id != this.previous_menus_id MenusManager.lastOpenedId !== this.previousMenusId // Updated variable name
) { ) {
if (this.open && this.props.onClose) { if (this.open && this.props.onClose) {
this.props.onClose(); this.props.onClose();
} }
this.open = false; this.open = false;
} }
if (this.previous_menus_number != this.state.menus_manager.menus.length) { if (this.previousMenusNumber !== MenusManager.menus.length) {
this.previous_menus_number = this.state.menus_manager.menus.length; this.previousMenusNumber = MenusManager.menus.length;
} }
if (this.props.style !== nextProps.style || this.props.className !== nextProps.className) { if (
this.props.style !== nextProps.style ||
this.props.className !== nextProps.className
) {
return true; return true;
} }
return false; return false;
} }
render() { render() {
return ( return (
<div <div
ref={node => (this.container = node)} ref={this.container}
style={this.props.style} style={this.props.style}
onClick={evt => { onClick={(evt) => {
console.log('if this open: ', this.state.isMenuOpen);
if (this.props.toggle) { if (this.props.toggle) {
if (!this.open) { if (!this.open) {
this.setState({ ...this.state, isMenuOpen: true });
this.openMenu(evt); this.openMenu(evt);
} else { } else {
MenusManager.closeMenu(); MenusManager.closeMenu();
@@ -16,6 +16,7 @@ class MenusManager extends Observable {
this.lastOpen = 0; this.lastOpen = 0;
this.willClose = false; this.willClose = false;
this.max_level = 0; this.max_level = 0;
this.isOpen = 0;
var that = this; var that = this;
Globals.window.addEventListener('keydown', function (evt) { Globals.window.addEventListener('keydown', function (evt) {
@@ -57,7 +58,7 @@ class MenusManager extends Observable {
this.notify(); this.notify();
} }
async openMenu(menu, domRect, positionType, options) { async openMenu(menu, domRect, positionType, options) {
this.isOpen = 1;
if(typeof menu === 'function') { if(typeof menu === 'function') {
menu = await menu(); menu = await menu();
} }
@@ -63,24 +63,6 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s
hide: item.is_directory, hide: item.is_directory,
onClick: () => preview(item), onClick: () => preview(item),
}, },
{
type: 'menu',
text: Languages.t('components.item_context_menu.download'),
onClick: () => download(item.id),
},
{ type: 'separator' },
{
type: 'menu',
text: Languages.t('components.item_context_menu.rename'),
hide: access === 'read',
onClick: () => setPropertiesModalState({ open: true, id: item.id }),
},
{
type: 'menu',
text: Languages.t('components.item_context_menu.manage_access'),
hide: access === 'read' || getPublicLinkToken(),
onClick: () => setAccessModalState({ open: true, id: item.id }),
},
{ {
type: 'menu', type: 'menu',
text: Languages.t('components.item_context_menu.share'), text: Languages.t('components.item_context_menu.share'),
@@ -89,20 +71,15 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s
}, },
{ {
type: 'menu', type: 'menu',
text: Languages.t('components.item_context_menu.copy_link'), text: Languages.t('components.item_context_menu.download'),
hide: !item.access_info.public?.level || item.access_info.public?.level === 'none', onClick: () => download(item.id),
onClick: () => {
copyToClipboard(getPublicLink(item || parent?.item));
ToasterService.success(
Languages.t('components.item_context_menu.copy_link.success'),
);
},
}, },
{ type: 'separator' },
{ {
type: 'menu', type: 'menu',
text: Languages.t('components.item_context_menu.versions'), text: Languages.t('components.item_context_menu.manage_access'),
hide: item.is_directory, hide: access === 'read' || getPublicLinkToken(),
onClick: () => setVersionModal({ open: true, id: item.id }), onClick: () => setAccessModalState({ open: true, id: item.id }),
}, },
{ {
type: 'menu', type: 'menu',
@@ -127,6 +104,29 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s
}, },
}), }),
}, },
{
type: 'menu',
text: Languages.t('components.item_context_menu.rename'),
hide: access === 'read',
onClick: () => setPropertiesModalState({ open: true, id: item.id }),
},
{
type: 'menu',
text: Languages.t('components.item_context_menu.copy_link'),
hide: !item.access_info.public?.level || item.access_info.public?.level === 'none',
onClick: () => {
copyToClipboard(getPublicLink(item || parent?.item));
ToasterService.success(
Languages.t('components.item_context_menu.copy_link.success'),
);
},
},
{
type: 'menu',
text: Languages.t('components.item_context_menu.versions'),
hide: item.is_directory,
onClick: () => setVersionModal({ open: true, id: item.id }),
},
{ type: 'separator', hide: access !== 'manage' }, { type: 'separator', hide: access !== 'manage' },
{ {
type: 'menu', type: 'menu',
@@ -62,14 +62,6 @@ export default () => {
<div className="mt-4" /> <div className="mt-4" />
<Title>Drive</Title> <Title>Drive</Title>
<Button
onClick={() => {history.push(RouterServices.generateRouteFromState({companyId: company, viewId: ""})); setParentId('root')}}
size="lg"
theme="white"
className={'w-full mt-2 mb-1 ' + (folderType === 'home' && viewId == '' ? activeClass : '')}
>
<CloudIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.home')}
</Button>
<Button <Button
onClick={() => {history.push(RouterServices.generateRouteFromState({companyId: company, viewId: ""})); setParentId('user_' + user?.id)}} onClick={() => {history.push(RouterServices.generateRouteFromState({companyId: company, viewId: ""})); setParentId('user_' + user?.id)}}
size="lg" size="lg"
@@ -78,6 +70,14 @@ export default () => {
> >
<UserIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.my_drive')} <UserIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.my_drive')}
</Button> </Button>
<Button
onClick={() => {history.push(RouterServices.generateRouteFromState({companyId: company, viewId: ""})); setParentId('root')}}
size="lg"
theme="white"
className={'w-full mt-2 mb-1 ' + (folderType === 'home' && viewId == '' ? activeClass : '')}
>
<CloudIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.home')}
</Button>
<Button <Button
onClick={() => {setParentId('shared_with_me')}} onClick={() => {setParentId('shared_with_me')}}
size="lg" size="lg"