feat: featured products

:%s
This commit is contained in:
lytrankieio123
2021-10-04 19:36:47 +07:00
parent 6ad8f75c67
commit 47107e2702
9 changed files with 174 additions and 159 deletions

View File

@@ -4,41 +4,41 @@ export const BLUR_DATA_IMG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEA
export const DEFAULT_IMG = DefaultImg
export const SOCIAL_LINKS = {
FB: 'FB',
TWITTER: 'TWITTER',
YOUTUBE: 'YOUTUBE',
IG: 'IG',
FB: 'FB',
TWITTER: 'TWITTER',
YOUTUBE: 'YOUTUBE',
IG: 'IG',
}
export const ROUTE = {
HOME: '/',
ABOUT: '/about',
ACCOUNT: '/account',
HOME: '/',
ABOUT: '/about',
ACCOUNT: '/account',
PRODUCTS: '/products',
PRODUCT_DETAIL: '/product',
BLOGS: '/blogs',
BLOG_DETAIL: '/blog',
PRODUCTS: '/products',
PRODUCT_DETAIL: '/product',
RECIPES: '/recipes',
RECIPE_DETAIL: '/recipe',
BLOGS: '/blogs',
BLOG_DETAIL: '/blog',
NOTIFICATION: '/notifications',
BUSSINESS: '/bussiness',
CONTACT: '/contact',
CHECKOUT: '/checkout',
FAQ: '/faq',
CUSTOMER_SERVICE: '/customer-service',
TERM_CONDITION: '/term-condition',
PRIVACY_POLICY: '/privacy-policy',
FORGOT_PASSWORD: '/forgot-password'
RECIPES: '/recipes',
RECIPE_DETAIL: '/recipe',
NOTIFICATION: '/notifications',
BUSSINESS: '/bussiness',
CONTACT: '/contact',
CHECKOUT: '/checkout',
FAQ: '/faq',
CUSTOMER_SERVICE: '/customer-service',
TERM_CONDITION: '/term-condition',
PRIVACY_POLICY: '/privacy-policy',
FORGOT_PASSWORD: '/forgot-password'
}
export const ACCOUNT_TAB = {
CUSTOMER_INFO: '',
ORDER: 'orders',
FAVOURITE: 'wishlist',
CUSTOMER_INFO: '',
ORDER: 'orders',
FAVOURITE: 'wishlist',
}
export const LOCAL_STORAGE_KEY = {
@@ -46,101 +46,99 @@ export const LOCAL_STORAGE_KEY = {
}
export const QUERY_KEY = {
TAB: 'tab',
CATEGORY: 'category',
BRAND: 'brand',
FEATURED: 'feature',
SORTBY:'sortby',
RECIPES:'recipes'
TAB: 'tab',
CATEGORY: 'category',
BRAND: 'brand',
FEATURED: 'feature',
SORTBY: 'sortby',
RECIPES: 'recipes'
}
export enum ProductFeature {
BestSellers = 'Best Sellers',
Sales = 'Sales',
NewItem = 'New Item',
Viewed = 'Viewed',
BestSellers = 'Best Sellers',
Sales = 'Sales',
NewItem = 'New Item',
Viewed = 'Viewed',
}
export const KEY = {
ENTER: 'Enter',
ENTER: 'Enter',
}
export const OPTION_ALL = 'all';
export const DEFAULT_PAGE_SIZE=20;
export const DEFAULT_PAGE_SIZE = 20;
export const CATEGORY = [
{
name: 'All',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=${OPTION_ALL}`,
},
{
name: 'Veggie',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=veggie`,
},
{
name: 'Seafood',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=seafood`,
},
{
name: 'Frozen',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=frozen`,
},
{
name: 'Coffee Bean',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=coffee_bean`,
},
{
name: 'Sauce',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=sauce`,
},
]
export const BRAND = [
{
name: 'Maggi',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=maggi`,
},
{
name: 'Chomilex',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=chomilex`,
},
{
name: 'Chinsu',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=chinsu`,
},
]
{
name: 'All',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=${OPTION_ALL}`,
},
{
name: 'Veggie',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=veggie`,
},
{
name: 'Seafood',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=seafood`,
},
{
name: 'Frozen',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=frozen`,
},
{
name: 'Coffee Bean',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=coffee_bean`,
},
{
name: 'Sauce',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.CATEGORY}=sauce`,
},
]
export const FACET = {
FEATURE: {
PARENT_NAME: 'Featured',
FRESH: 'Fresh',
BEST_SELLERS: 'Best seller'
}
export const BRAND = [
{
name: 'Maggi',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=maggi`,
},
{
name: 'Chomilex',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=chomilex`,
},
{
name: 'Chinsu',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=chinsu`,
},
]
export const CODE_FACET_FEATURED = 'featured'
export const CODE_FACET_FEATURED_VARIANT = {
FRESH: 'fresh',
BEST_SELLERS: 'best-sellers'
}
export const FEATURED = [
{
name: 'Best Sellers',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=best_sellers`,
},
{
name: 'Sales',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=sales`,
},
{
name: 'New Item',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=new_item`,
},
{
name: 'Viewed',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=viewed`,
},
]
export const DEFAULT_BLOG_PAGE_SIZE=6;
{
name: 'Best Sellers',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=best_sellers`,
},
{
name: 'Sales',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=sales`,
},
{
name: 'New Item',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=new_item`,
},
{
name: 'Viewed',
link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.FEATURED}=viewed`,
},
]
export const FILTER_PAGE = [ROUTE.HOME,ROUTE.PRODUCTS]
export const DEFAULT_BLOG_PAGE_SIZE = 6;
export const FILTER_PAGE = [ROUTE.HOME, ROUTE.PRODUCTS]
export const STATE_OPTIONS = [
{

View File

@@ -1,6 +1,6 @@
import { FacetValue } from './../../framework/vendure/schema.d';
import { Facet } from "@commerce/types/facet";
import { FACET } from "./constanst.utils";
import { FacetValue } from './../../framework/vendure/schema.d';
import { CODE_FACET_FEATURED, CODE_FACET_FEATURED_VARIANT } from "./constanst.utils";
export function isMobile() {
return window.innerWidth < 768
@@ -14,15 +14,24 @@ export function removeItem<T>(arr: Array<T>, value: T): Array<T> {
return [...arr];
}
export function getFreshProductFacetId(facets: Facet[]) {
const featuredFacet = facets.find((item: Facet) => item.name === FACET.FEATURE.PARENT_NAME)
const freshFacetValue = featuredFacet?.values.find((item: FacetValue) => item.name === FACET.FEATURE.FRESH)
function findFacetByCode(code: string, facets?: Facet) {
return facets?.values.find((item: FacetValue) => item.code === code)
}
export function getFeaturedFacetId(facets: Facet[]) {
const featuredFacet = facets.find((item: Facet) => item.code === CODE_FACET_FEATURED)
return featuredFacet?.id
}
export function getFreshFacetId(facets: Facet[]) {
const featuredFacet = facets.find((item: Facet) => item.code === CODE_FACET_FEATURED)
const freshFacetValue = findFacetByCode(CODE_FACET_FEATURED_VARIANT.FRESH, featuredFacet)
return freshFacetValue?.id
}
export function getAllFeaturedFacetId(facets: Facet[]) {
const featuredFacet = facets.find((item: Facet) => item.name === FACET.FEATURE.PARENT_NAME)
const featuredFacet = facets.find((item: Facet) => item.code === CODE_FACET_FEATURED)
const rs = featuredFacet?.values.map((item: FacetValue) => item.id)
return rs