Skip to content

Commit

Permalink
OpusCapita#155 Remove redurant contextMenuRenderer (OpusCapita#156)
Browse files Browse the repository at this point in the history
  • Loading branch information
kvolkovich-sc authored Feb 21, 2018
1 parent 1111a77 commit 3709d08
Show file tree
Hide file tree
Showing 14 changed files with 49 additions and 224 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,38 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react';
import './ContextMenu.less';
import { ContextMenu as Menu } from "react-contextmenu";
import rawToReactElement from '../raw-to-react-element';
import ContextMenuItem from '../ContextMenuItem';

const propTypes = {
triggerId: PropTypes.string,
children: PropTypes.oneOfType([
PropTypes.arrayOf(PropTypes.shape({
elementType: PropTypes.string,
elementProps: PropTypes.object
})),
PropTypes.arrayOf(PropTypes.node)
])
items: PropTypes.arrayOf(PropTypes.shape({
icon: PropTypes.shape({
svg: PropTypes.string,
fill: PropTypes.string
}),
label: PropTypes.string,
onClick: PropTypes.func
}))
};
const defaultProps = {
triggerId: '',
children: []
items: []
};

export default
class ContextMenu extends Component {
render() {
let { children, triggerId, ...restProps } = this.props;
let { items, triggerId, ...restProps } = this.props;

let childrenElement = children.map((rawChild, i) => {
return rawToReactElement({ ...rawChild }, i);
});
let childrenElement = items.map((item, i) => (
<ContextMenuItem
key={i}
onClick={item.onClick || (() => {})}
icon={item.icon}
>
<span>{item.label}</span>
</ContextMenuItem>
));

return (
<div className="oc-fm--context-menu">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,28 +411,34 @@ class FileNavigator extends Component {
}));

// TODO replace it by method "getCapabilities" for performace reason
let rowContextMenuChildren = initializedCapabilities.
let rowContextMenuItems = initializedCapabilities.
filter(capability => (
capability.contextMenuRenderer &&
capability.shouldBeAvailable(apiOptions) &&
(capability.availableInContexts && capability.availableInContexts.indexOf('row') !== -1)
)).
map(capability => capability.contextMenuRenderer(apiOptions));
capability.shouldBeAvailable(apiOptions) &&
(capability.availableInContexts && capability.availableInContexts.indexOf('row') !== -1)
)).
map(capability => ({
icon: capability.icon,
label: capability.label || '',
onClick: capability.handler || (() => {})
}));

let filesViewContextMenuChildren = initializedCapabilities.
let filesViewContextMenuItems = initializedCapabilities.
filter(capability => (
capability.contextMenuRenderer &&
capability.shouldBeAvailable(apiOptions) &&
(capability.availableInContexts && capability.availableInContexts.indexOf('files-view') !== -1)
)).
map(capability => capability.contextMenuRenderer(apiOptions));
map(capability => ({
icon: capability.icon,
label: capability.label || '',
onClick: capability.handler || (() => {})
}));

let toolbarItems = initializedCapabilities.
filter(capability => (
(capability.availableInContexts && capability.availableInContexts.indexOf('toolbar') !== -1)
)).
map(capability => ({
icon: capability.icon || null,
icon: capability.icon,
label: capability.label || '',
onClick: capability.handler || (() => {}),
disabled: !capability.shouldBeAvailable(apiOptions)
Expand All @@ -443,7 +449,7 @@ class FileNavigator extends Component {
(capability.availableInContexts && capability.availableInContexts.indexOf('new-button') !== -1)
)).
map(capability => ({
icon: capability.icon || null,
icon: capability.icon,
label: capability.label || '',
onClick: capability.handler || (() => {}),
disabled: !capability.shouldBeAvailable(apiOptions)
Expand Down Expand Up @@ -500,12 +506,14 @@ class FileNavigator extends Component {
loading={loadingResourceLocation}
/>
</div>
<ContextMenu triggerId={rowContextMenuId}>
{rowContextMenuChildren.map((contextMenuChild, i) => ({ ...contextMenuChild, key: i }))}
</ContextMenu>
<ContextMenu triggerId={filesViewContextMenuId}>
{filesViewContextMenuChildren.map((contextMenuChild, i) => ({ ...contextMenuChild, key: i }))}
</ContextMenu>
<ContextMenu
triggerId={rowContextMenuId}
items={rowContextMenuItems}
/>
<ContextMenu
triggerId={filesViewContextMenuId}
items={filesViewContextMenuItems}
/>
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,27 +88,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => (
{
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
}
)
})
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,25 +54,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
21 changes: 1 addition & 20 deletions packages/connector-google-drive-v2/src/capabilities/download.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,25 +146,6 @@ export default (apiOptions, {
getResourceLocation,
getNotifications
}),
availableInContexts: ['row', 'toolbar'],
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
availableInContexts: ['row', 'toolbar']
};
}
19 changes: 0 additions & 19 deletions packages/connector-google-drive-v2/src/capabilities/rename.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,25 +92,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default (apiOptions, {
getSortState
}) => ({
id: 'sort',
shouldBeAvailable: () => true,
handler: async ({ sortBy, sortDirection }) => {
let id = getResource().id;
let { resourceChildren } = await api.getChildrenForId(apiOptions, { id, sortBy, sortDirection });
Expand Down
19 changes: 0 additions & 19 deletions packages/connector-google-drive-v2/src/capabilities/upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,25 +128,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
19 changes: 0 additions & 19 deletions packages/connector-node-v1/src/capabilities/create-folder.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,25 +103,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
19 changes: 0 additions & 19 deletions packages/connector-node-v1/src/capabilities/delete-resource.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,25 +95,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
19 changes: 0 additions & 19 deletions packages/connector-node-v1/src/capabilities/download.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,25 +151,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
19 changes: 0 additions & 19 deletions packages/connector-node-v1/src/capabilities/rename.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,25 +104,6 @@ export default (apiOptions, {
getResourceChildren,
getResourceLocation,
getNotifications
}),
contextMenuRenderer: (apiOptions) => ({
elementType: 'ContextMenuItem',
elementProps: {
icon: { svg: icon },
onClick: () => handler(apiOptions, {
showDialog,
hideDialog,
navigateToDir,
updateNotifications,
getSelection,
getSelectedResources,
getResource,
getResourceChildren,
getResourceLocation,
getNotifications
}),
children: localeLabel
}
})
};
}
1 change: 1 addition & 0 deletions packages/connector-node-v1/src/capabilities/sort.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export default (apiOptions, {
getSortState
}) => ({
id: 'sort',
shouldBeAvailable: () => true,
handler: async ({ sortBy, sortDirection }) => {
const onFail = ({ message }) => onFailError({
getNotifications,
Expand Down
Loading

0 comments on commit 3709d08

Please sign in to comment.