import { connect } from "react-redux";
import { Breadcrumbs as BreadcrumbsComponent, BreadcrumbsProps } from '~/components/breadcrumbs/breadcrumbs';
import { RootState } from '~/store/store';
-import { Breadcrumb } from '~/components/breadcrumbs/breadcrumbs';
-import { matchProjectRoute } from '~/routes/routes';
-import { getTreePicker } from '~/store/tree-picker/tree-picker';
-import { SIDE_PANEL_TREE } from '~/store/side-panel-tree/side-panel-tree-actions';
-import { getNodeAncestors, getNode } from '~/models/tree';
import { Dispatch } from 'redux';
-import { navigateToResource } from '~/store/navigation/navigation-action';
-
-interface ResourceBreadcrumb extends Breadcrumb {
- uuid: string;
-}
+import { navigateTo } from '~/store/navigation/navigation-action';
+import { getProperty } from '../../store/properties/properties';
+import { ResourceBreadcrumb, BREADCRUMBS } from '../../store/breadcrumbs/breadcrumbs-actions';
+import { openSidePanelContextMenu } from '~/store/context-menu/context-menu-actions';
type BreadcrumbsDataProps = Pick<BreadcrumbsProps, 'items'>;
type BreadcrumbsActionProps = Pick<BreadcrumbsProps, 'onClick' | 'onContextMenu'>;
-const memoizedMapStateToProps = () => {
- let items: ResourceBreadcrumb[] = [];
- return ({ router, treePicker }: RootState): BreadcrumbsDataProps => {
- if (router.location) {
- const projectMatch = matchProjectRoute(location.pathname);
- const collectionMatch = matchProjectRoute(location.pathname);
- const uuid = projectMatch && projectMatch.params.id
- || collectionMatch && collectionMatch.params.id
- || '';
- const tree = getTreePicker(SIDE_PANEL_TREE)(treePicker);
- if (tree) {
- const ancestors = getNodeAncestors(uuid)(tree);
- const node = getNode(uuid)(tree);
- const nodes = node ? [...ancestors, node] : ancestors;
- items = nodes.map(({ value }) =>
- typeof value.value === 'string'
- ? { label: value.value, uuid: value.nodeId }
- : { label: value.value.name, uuid: value.value.uuid });
- }
- }
- return { items };
- };
-};
+const mapStateToProps = () => ({ properties }: RootState): BreadcrumbsDataProps => ({
+ items: getProperty<ResourceBreadcrumb[]>(BREADCRUMBS)(properties) || []
+});
const mapDispatchToProps = (dispatch: Dispatch): BreadcrumbsActionProps => ({
onClick: ({ uuid }: ResourceBreadcrumb) => {
- dispatch<any>(navigateToResource(uuid));
+ dispatch<any>(navigateTo(uuid));
},
- onContextMenu: () => { return; }
+ onContextMenu: (event, breadcrumb: ResourceBreadcrumb) => {
+ dispatch<any>(openSidePanelContextMenu(event, breadcrumb.uuid));
+ }
});
-export const Breadcrumbs = connect(memoizedMapStateToProps(), mapDispatchToProps)(BreadcrumbsComponent);
\ No newline at end of file
+export const Breadcrumbs = connect(mapStateToProps(), mapDispatchToProps)(BreadcrumbsComponent);
\ No newline at end of file