diff --git a/client/src/config/sidebarMenu.js b/client/src/config/sidebarMenu.js index 6ea6987ea..b2f776d36 100644 --- a/client/src/config/sidebarMenu.js +++ b/client/src/config/sidebarMenu.js @@ -4,6 +4,13 @@ export default [ { divider: true, }, + { + icon: 'homepage', + iconSize: 20, + text: 'Items List', + disabled: false, + href: '/dashboard/items/list', + }, { icon: 'homepage', iconSize: 20, diff --git a/client/src/connectors/Items.connect.js b/client/src/connectors/Items.connect.js new file mode 100644 index 000000000..3c2d4eb84 --- /dev/null +++ b/client/src/connectors/Items.connect.js @@ -0,0 +1,41 @@ + + +import {connect} from 'react-redux'; +import { + fetchItems, + fetchItem, + deleteItem, +} from 'store/items/items.actions'; +import { + getResourceViews, + getViewPages, +} from 'store/customViews/customViews.selectors' +import { + getCurrentPageResults +} from 'store/selectors'; +import t from 'store/types'; + +export const mapStateToProps = (state, props) => { + const viewPages = getViewPages(state.items.views, state.items.currentViewId); + + return { + views: getResourceViews(state, 'items'), + currentPageItems: getCurrentPageResults( + state.items.items, viewPages, state.items.currentPage), + + bulkSelected: state.items.bulkActions, + }; +}; + +export const mapDispatchToProps = (dispatch) => ({ + fetchItems: (query) => dispatch(fetchItems({ query })), + requestDeleteItem: (id) => dispatch(deleteItem({ id })), + addBulkActionItem: (id) => dispatch({ + type: t.ITEM_BULK_ACTION_ADD, itemId: id + }), + removeBulkActionItem: (id) => dispatch({ + type: t.ITEM_BULK_ACTION_REMOVE, itemId: id, + }), +}); + +export default connect(mapStateToProps, mapDispatchToProps); \ No newline at end of file diff --git a/client/src/containers/Dashboard/Accounts/AccountsChart.js b/client/src/containers/Dashboard/Accounts/AccountsChart.js index 6a489acea..b645968f8 100644 --- a/client/src/containers/Dashboard/Accounts/AccountsChart.js +++ b/client/src/containers/Dashboard/Accounts/AccountsChart.js @@ -116,7 +116,8 @@ function AccountsChart({ return ( - + { + const {path} = useRouteMatch(); + const viewsMenuItems = views.map((view) => { + return (); + }); + + const onClickNewItem = () => { + + }; + const itemsFields = getResourceFields('items'); + + const filterDropdown = FilterDropdown({ + fields: itemsFields, + onFilterChange, + }); + + const hasBulkActionsSelected = useMemo(() => + !!Object.keys(bulkSelected).length, [bulkSelected]); + + return ( + + {viewsMenuItems}} + minimal={true} + interactionKind={PopoverInteractionKind.HOVER} + position={Position.BOTTOM_LEFT}> + +