@scayle/storefront-core
Version:
Collection of essential utilities to work with the Storefront API
70 lines (69 loc) • 1.93 kB
JavaScript
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"];
}
};