Create breadcrumbs actions
[arvados-workbench2.git] / src / views-components / breadcrumbs / breadcrumbs.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { connect } from "react-redux";
6 import { Breadcrumbs as BreadcrumbsComponent, BreadcrumbsProps } from '~/components/breadcrumbs/breadcrumbs';
7 import { RootState } from '~/store/store';
8 import { Dispatch } from 'redux';
9 import { navigateTo } from '~/store/navigation/navigation-action';
10 import { getProperty } from '../../store/properties/properties';
11 import { ResourceBreadcrumb, BREADCRUMBS } from '../../store/breadcrumbs/breadcrumbs-actions';
12
13
14
15 type BreadcrumbsDataProps = Pick<BreadcrumbsProps, 'items'>;
16 type BreadcrumbsActionProps = Pick<BreadcrumbsProps, 'onClick' | 'onContextMenu'>;
17
18 const mapStateToProps = () => ({ properties }: RootState): BreadcrumbsDataProps => ({
19     items: getProperty<ResourceBreadcrumb[]>(BREADCRUMBS)(properties) || []
20 });
21
22 const mapDispatchToProps = (dispatch: Dispatch): BreadcrumbsActionProps => ({
23     onClick: ({ uuid }: ResourceBreadcrumb) => {
24         dispatch<any>(navigateTo(uuid));
25     },
26     onContextMenu: () => { return; }
27 });
28
29 export const Breadcrumbs = connect(mapStateToProps(), mapDispatchToProps)(BreadcrumbsComponent);