Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/ui   js

Repository URL to install this package:

Version: 2.8.8 

/ src / components / themes / ProductItem / wr / renderProps.tsx

import React from 'react'
import { MaterialIcon } from 'atoms/MaterialIcon'
import { ProductItemProps } from './typings'
import { ColorList, FitList, StyleList } from './fixture'
import {
  ProductItemWrapper,
  ProductImage,
  ProductTitle,
  ProductPricePanel,
  RegularPrice,
  SalePrice,
  StyledRatings,
  ButtonsPanel,
  FavouriteButton,
  AddtoCartButton,
  OfferLabel,
  FacetsPanel,
  StyledSelectDropDown,
} from './styled'

const renderAddToCartIcon = (props: ProductItemProps) => (
  <MaterialIcon type="cart" />
)
const renderFavIcon = (props: ProductItemProps) => (
  <MaterialIcon type="favorite_border" />
)

function defaultRenderImage(props: ProductItemProps) {
  const { image } = props.productItemData
  return <ProductImage src={image} />
}

function defaultRenderTitle(props: ProductItemProps) {
  const { title } = props.productItemData
  return <ProductTitle content={title} />
}

function defaultRenderPrice(props: ProductItemProps) {
  const { price } = props.productItemData
  const { regular, sale } = price
  return (
    <ProductPricePanel>
      <SalePrice content={sale} />
      <RegularPrice content={regular} />
    </ProductPricePanel>
  )
}

function defaultRenderOfferInfo(props: ProductItemProps) {
  const { offers } = props.productItemData
  return <OfferLabel content={offers} />
}

function defaultRenderRatings(props: ProductItemProps) {
  const { ratings } = props.productItemData
  return <StyledRatings value={4} count={24} />
}

function defaultRenderAddToCartButton(props: ProductItemProps) {
  return (
    <AddtoCartButton
      breedType="icon-with-text"
      text="Add To Cart"
      renderIcon={renderAddToCartIcon}
    />
  )
}

function defaultRenderFacetList(props: ProductItemProps) {
  return (
    <FacetsPanel>
      <StyledSelectDropDown options={ColorList} />
      <StyledSelectDropDown options={StyleList} />
      <StyledSelectDropDown options={FitList} />
    </FacetsPanel>
  )
}
function defaultRenderFavouriteButton(props: ProductItemProps) {
  return (
    <FavouriteButton
      breedType="icon-with-text"
      text="Save"
      renderIcon={renderFavIcon}
    />
  )
}

function defaultRenderTemplate(props: ProductItemProps) {
  const {
    renderImage,
    renderTitle,
    renderPrice,
    renderOfferInfo,
    renderRatings,
    renderFacetList,
    renderAddToCartButton,
    renderFavouriteButton,
    ...remainingProps
  } = props

  return (
    <React.Fragment>
      {renderImage(remainingProps)}
      {renderTitle(remainingProps)}
      {renderPrice(remainingProps)}
      {renderOfferInfo(remainingProps)}
      {renderRatings(remainingProps)}
      {renderFacetList(remainingProps)}
      <ButtonsPanel>
        {renderFavouriteButton(remainingProps)}
        {renderAddToCartButton(remainingProps)}
      </ButtonsPanel>
    </React.Fragment>
  )
}

function defaultRenderWrapper(props: ProductItemProps) {
  const { className, children } = props
  return (
    <ProductItemWrapper classNam={className}>{children}</ProductItemWrapper>
  )
}

export {
  defaultRenderImage,
  defaultRenderTitle,
  defaultRenderPrice,
  defaultRenderOfferInfo,
  defaultRenderRatings,
  defaultRenderFacetList,
  defaultRenderAddToCartButton,
  defaultRenderFavouriteButton,
  defaultRenderTemplate,
  defaultRenderWrapper,
}