Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});

const tslib_1 = require("tslib");

const react_1 = tslib_1.__importDefault(require("react"));

const exotic_1 = require("exotic");

const words_1 = require("@skava/ui/dist/words");

const Empty_1 = require("@skava/ui/dist/components/atoms/Empty");

const SwatchList_1 = require("../../SwatchList");

const styled_1 = require("./styled");

function defaultRenderProduct(props) {
  const {
    item,
    index,
    productCount
  } = props;
  const {
    name,
    brandName,
    salePrice,
    regPrice,
    image,
    isBundleSubProduct,
    hasAddon,
    navigationUrl
  } = item;
  const value = exotic_1.isSafe(image) ? exotic_1.isSafe(image.value) ? image.value : undefined : undefined;
  const captionColor = isBundleSubProduct && hasAddon ? '#ea7b0a' : '#195fbf';
  const bundleCaption = `${words_1.wording.item} ${index + 1} of ${productCount}`;
  const caption = isBundleSubProduct && hasAddon ? words_1.wording.addon : bundleCaption;
  const imageView = isBundleSubProduct ? react_1.default.createElement(styled_1.StyledProductImageWithCaption, {
    src: value,
    alt: name,
    caption: caption,
    captionColor: captionColor
  }) : react_1.default.createElement(styled_1.StyledProductImage, {
    src: value,
    alt: name
  });
  return react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(styled_1.ProductNavigationLink, {
    to: navigationUrl,
    target: "_top"
  }, imageView), react_1.default.createElement(styled_1.StyledBrandName, {
    breedType: "h4",
    content: brandName
  }), react_1.default.createElement(styled_1.ProductNavigationLink, {
    to: navigationUrl,
    target: "_top"
  }, react_1.default.createElement(styled_1.StyledProductName, {
    content: name,
    breedType: "h2"
  })), react_1.default.createElement(styled_1.StyledProductPrice, {
    salePrice: salePrice,
    regularPrice: regPrice
  }));
}

exports.defaultRenderProduct = defaultRenderProduct;

function defaultRenderOptions(props) {
  // return 'Preset/defaultRenderOptions'
  // @example : This renderProp should be overriden for rendering ProductOptions anyway!
  return react_1.default.createElement(SwatchList_1.SwatchList, {
    list: [{
      isSelected: true,
      label: 'Regular',
      value: 'regular'
    }, {
      label: 'Medium',
      value: 'medium'
    }],
    title: 'Size'
  });
}

exports.defaultRenderOptions = defaultRenderOptions;

function defaultRenderDescription(props) {
  const {
    item
  } = props;
  const {
    description,
    identifier
  } = item;
  return react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(styled_1.StyledHeading, {
    breedType: "h3",
    content: words_1.wording.productDetails
  }), exotic_1.isSafe(identifier) ? react_1.default.createElement(styled_1.StyledProductIdentifier, {
    label: 'Product ID',
    value: identifier
  }) : react_1.default.createElement(Empty_1.Empty, null), exotic_1.isSafe(description) ? react_1.default.createElement(styled_1.StyledProductDescription, {
    content: description
  }) : react_1.default.createElement(Empty_1.Empty, null));
}

exports.defaultRenderDescription = defaultRenderDescription;

function defaultRenderRating(props) {
  const {
    item,
    onWriteReviewClick
  } = props;
  const {
    reviewrating
  } = item;
  const ratings = exotic_1.isSafe(reviewrating) ? exotic_1.isSafe(reviewrating.ratings) ? reviewrating.ratings : undefined : undefined;
  const reviewcount = exotic_1.isSafe(reviewrating) ? exotic_1.isSafe(reviewrating.reviewcount) ? reviewrating.reviewcount : undefined : undefined;

  const handleWriteReviewClick = event => {
    if (exotic_1.isFunction(onWriteReviewClick)) {
      const changeArgs = {
        event
      };
      onWriteReviewClick(changeArgs);
    }
  };

  return react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(styled_1.StyledRatingTitle, null, words_1.wording.rating), react_1.default.createElement(styled_1.StyledRating, {
    fillColor: "#000000",
    defaultColor: "#ffffff",
    shouldShowCount: true,
    starRating: ratings,
    width: 20,
    starGap: 5,
    isUserCount: true,
    userRating: reviewcount
  }), react_1.default.createElement(styled_1.StyledWriteReview, {
    text: words_1.wording.writeReview,
    onClick: handleWriteReviewClick
  }));
}

exports.defaultRenderRating = defaultRenderRating;
var stockStatus;

(function (stockStatus) {
  stockStatus["available"] = "#009944";
  stockStatus["limited"] = "#FFCC00";
  stockStatus["sold out"] = "#EA2227";
})(stockStatus || (stockStatus = {}));

function defaultRenderQuantity(props) {
  const {
    item,
    onQuantityInputChange
  } = props;
  let {
    hasAddon,
    isBundleSubProduct,
    isCollectionSubProduct,
    inventoryContent = ''
  } = item;
  const isButton = isBundleSubProduct && hasAddon || isCollectionSubProduct;

  const handleQuantityInputChange = changeArgs => {
    if (exotic_1.isFunction(onQuantityInputChange)) {
      onQuantityInputChange(changeArgs);
    }
  };

  inventoryContent = inventoryContent.toLocaleLowerCase();
  const view = isButton && react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(styled_1.StyledQuantity, {
    content: words_1.wording.quantity,
    defaultValue: 1,
    onChange: handleQuantityInputChange
  }), exotic_1.isSafe(inventoryContent) ? react_1.default.createElement(styled_1.InventoryContent, {
    color: stockStatus[inventoryContent]
  }, inventoryContent) : react_1.default.createElement(Empty_1.Empty, null));
  return view;
}

exports.defaultRenderQuantity = defaultRenderQuantity;

function defaultRenderButton(props) {
  const {
    item,
    onCheckBoxInputChange,
    onPrimaryButtonClick,
    onSecondaryButtonClick
  } = props;
  const {
    isCollectionSubProduct,
    isBundleSubProduct,
    hasAddon,
    isBundle,
    navigationUrl,
    inventoryContent = ''
  } = item;

  const handleCheckboxInputChange = args => {
    if (exotic_1.isFunction(onCheckBoxInputChange)) {
      const changeArgs = {
        isSelected: args.isSelected
      };
      onCheckBoxInputChange(changeArgs);
    }
  };

  const handlePrimaryButtonClick = event => {
    if (exotic_1.isFunction(onPrimaryButtonClick)) {
      const changeArgs = {
        event
      };
      onPrimaryButtonClick(changeArgs);
    }
  };

  const handleSecondaryButtonClick = event => {
    if (exotic_1.isFunction(onSecondaryButtonClick)) {
      const changeArgs = {
        event
      };
      onSecondaryButtonClick(changeArgs);
    }
  };

  const isAddToCartDisabled = inventoryContent.toLowerCase().substring(0, 1) === 's' ? true : false;

  if (isBundleSubProduct && hasAddon || isCollectionSubProduct) {
    const primaryView = isCollectionSubProduct ? isBundle ? react_1.default.createElement(styled_1.StyledLink, {
      text: words_1.wording.viewBundle,
      to: navigationUrl,
      target: "_top"
    }) : react_1.default.createElement(styled_1.PrimaryButton, {
      breedType: "icon-with-text",
      iconType: "cart",
      text: words_1.wording.addToCart,
      onClick: handlePrimaryButtonClick,
      isAddToCartDisabled: isAddToCartDisabled
    }) : react_1.default.createElement(styled_1.StyledCheckBox, {
      bgColor: '#159fd5',
      borderColor: '#a6afc1',
      tickColor: '#ffffff',
      iconType: 'checkbox',
      label: words_1.wording.addItem,
      onToggle: handleCheckboxInputChange
    });
    const secondaryView = react_1.default.createElement(styled_1.SecondaryButton, {
      breedType: "icon-with-text",
      iconType: "favourite",
      text: words_1.wording.saveToLater,
      onClick: handleSecondaryButtonClick
    });
    return react_1.default.createElement(react_1.default.Fragment, null, primaryView, secondaryView);
  } else {
    return react_1.default.createElement(Empty_1.Empty, null);
  }
}

exports.defaultRenderButton = defaultRenderButton;