mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 05:10:31 +00:00
feat: style vendor form and list.
feat: items state selectors.
This commit is contained in:
@@ -1,7 +1,69 @@
|
||||
import { paginationLocationQuery } from "store/selectors";
|
||||
import { createSelector } from 'reselect';
|
||||
import {
|
||||
pickItemsFromIds,
|
||||
defaultPaginationMeta,
|
||||
} from 'store/selectors';
|
||||
|
||||
const itemsTableQuerySelector = (state) => state.items.tableQuery;
|
||||
|
||||
const itemsCurrentPageSelector = (state, props) => {
|
||||
const currentViewId = state.items.currentViewId;
|
||||
const currentView = state.items.views?.[currentViewId];
|
||||
const currentPageId = currentView?.paginationMeta?.page;
|
||||
|
||||
export const getItemsViewPages = (itemsViews, viewId) => {
|
||||
return itemsViews[viewId] ?
|
||||
itemsViews[viewId].pages : {};
|
||||
};
|
||||
return currentView?.pages?.[currentPageId];
|
||||
};
|
||||
const itemsDataSelector = (state) => state.items.items;
|
||||
|
||||
const itemsPaginationSelector = (state, props) => {
|
||||
const viewId = state.items.currentViewId;
|
||||
return state.items.views?.[viewId]?.paginationMeta;
|
||||
};
|
||||
const customersCurrentViewIdSelector = (state) => state.customers.currentViewId;
|
||||
|
||||
// Get items table query marged with location query.
|
||||
export const getItemsTableQueryFactory = () =>
|
||||
createSelector(
|
||||
paginationLocationQuery,
|
||||
itemsTableQuerySelector,
|
||||
(locationQuery, tableQuery) => {
|
||||
return {
|
||||
...locationQuery,
|
||||
...tableQuery,
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// Retrieve items current page and view.
|
||||
export const getItemsCurrentPageFactory = () =>
|
||||
createSelector(
|
||||
itemsDataSelector,
|
||||
itemsCurrentPageSelector,
|
||||
(items, itemsIdsCurrentPage) => {
|
||||
return typeof itemsIdsCurrentPage === 'object'
|
||||
? pickItemsFromIds(items, itemsIdsCurrentPage.ids) || []
|
||||
: [];
|
||||
},
|
||||
);
|
||||
|
||||
// Retrieve items pagination meta.
|
||||
export const getItemsPaginationMetaFactory = () =>
|
||||
createSelector(
|
||||
itemsPaginationSelector,
|
||||
(itemsPagination) => {
|
||||
return {
|
||||
...defaultPaginationMeta(),
|
||||
...itemsPagination,
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
// Retrieve items current view id.
|
||||
export const getItemsCurrentViewIdFactory = () =>
|
||||
createSelector(
|
||||
customersCurrentViewIdSelector,
|
||||
(currentViewId) => {
|
||||
return currentViewId;
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user