UNPKG

@scayle/storefront-core

Version:

Collection of essential utilities to work with the Storefront API

70 lines (69 loc) 1.93 kB
import { APISortOption, APISortOrder } from "@scayle/storefront-api"; import { SortName, SortQuery } from "../constants/sorting.mjs"; const SORTING_VALUES = { topSeller: { by: APISortOption.PRICE, direction: APISortOrder.DESCENDING, name: SortName.TOPSELLER, query: SortQuery.TOPSELLER }, dateNewest: { by: APISortOption.DATE_ADDED, name: SortName.DATE_NEWEST, query: SortQuery.DATE_NEWEST }, priceDesc: { by: APISortOption.PRICE, direction: APISortOrder.DESCENDING, name: SortName.PRICE_DESC, query: SortQuery.PRICE_DESC }, priceAsc: { by: APISortOption.PRICE, direction: APISortOrder.ASCENDING, name: SortName.PRICE_ASC, query: SortQuery.PRICE_ASC }, reductionDesc: { by: APISortOption.REDUCTION, direction: APISortOrder.DESCENDING, name: SortName.REDUCTION_DESC, query: SortQuery.REDUCTION_DESC }, reductionAsc: { by: APISortOption.REDUCTION, direction: APISortOrder.ASCENDING, name: SortName.REDUCTION_ASC, query: SortQuery.REDUCTION_ASC } }; export const getSortingValues = (options = [ "topSeller", "dateNewest", "priceDesc", "priceAsc", "reductionDesc", "reductionAsc" ]) => { return Object.fromEntries( options.filter((key) => key in SORTING_VALUES).map((key) => [key, SORTING_VALUES[key]]) ); }; export const getSortByValue = (query, defaultSort) => { switch (query) { case SortQuery.PRICE_DESC: return SORTING_VALUES.priceDesc; case SortQuery.PRICE_ASC: return SORTING_VALUES.priceAsc; case SortQuery.REDUCTION_DESC: return SORTING_VALUES.reductionDesc; case SortQuery.REDUCTION_ASC: return SORTING_VALUES.reductionAsc; case SortQuery.TOPSELLER: return SORTING_VALUES.topSeller; case SortQuery.DATE_NEWEST: return SORTING_VALUES.dateNewest; default: return SORTING_VALUES[defaultSort || "dateNewest"]; } };