@shopgate/engage 7.25.0-beta.4 → 7.25.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -7
- package/product/components/Rating/index.js +2 -2
- package/reviews/components/Reviews/components/Header/components/AverageRating/index.js +6 -4
- package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +2 -2
- package/reviews/components/Reviews/components/Header/index.js +5 -3
- package/reviews/components/Reviews/components/Header/spec.js +1 -1
- package/reviews/components/Reviews/components/ReviewsInfo/index.js +1 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopgate/engage",
|
|
3
|
-
"version": "7.25.0-beta.
|
|
3
|
+
"version": "7.25.0-beta.5",
|
|
4
4
|
"description": "Shopgate's ENGAGE library.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Shopgate <support@shopgate.com>",
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@shopgate/native-modules": "^1.0.0-beta.22",
|
|
19
|
-
"@shopgate/pwa-common": "7.25.0-beta.
|
|
20
|
-
"@shopgate/pwa-common-commerce": "7.25.0-beta.
|
|
21
|
-
"@shopgate/pwa-core": "7.25.0-beta.
|
|
22
|
-
"@shopgate/pwa-ui-ios": "7.25.0-beta.
|
|
23
|
-
"@shopgate/pwa-ui-material": "7.25.0-beta.
|
|
24
|
-
"@shopgate/pwa-ui-shared": "7.25.0-beta.
|
|
19
|
+
"@shopgate/pwa-common": "7.25.0-beta.5",
|
|
20
|
+
"@shopgate/pwa-common-commerce": "7.25.0-beta.5",
|
|
21
|
+
"@shopgate/pwa-core": "7.25.0-beta.5",
|
|
22
|
+
"@shopgate/pwa-ui-ios": "7.25.0-beta.5",
|
|
23
|
+
"@shopgate/pwa-ui-material": "7.25.0-beta.5",
|
|
24
|
+
"@shopgate/pwa-ui-shared": "7.25.0-beta.5",
|
|
25
25
|
"@stripe/react-stripe-js": "^1.16.5",
|
|
26
26
|
"@stripe/stripe-js": "^1.3.1",
|
|
27
27
|
"@virtuous/conductor": "~2.5.0",
|
|
@@ -3,5 +3,5 @@ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="s
|
|
|
3
3
|
*/var scrollToRating=function scrollToRating(){var reviewsExcerpt=document.getElementById('reviewsExcerpt');if(_typeof(reviewsExcerpt)!=='object'||!reviewsExcerpt||!reviewsExcerpt.offsetTop||!reviewsExcerpt.closest||!reviewsExcerpt.closest('article')){return;}reviewsExcerpt.closest('article').scroll(0,reviewsExcerpt.offsetTop-30);};/**
|
|
4
4
|
* The Rating component.
|
|
5
5
|
* @param {Object} props The component props.
|
|
6
|
-
* @return {JSX}
|
|
7
|
-
*/var Rating=function Rating(_ref){var rating=_ref.rating;var _useWidgetSettings=useWidgetSettings('@shopgate/engage/rating'),_useWidgetSettings$sh=_useWidgetSettings.showEmptyRatingStars,showEmptyRatingStars=_useWidgetSettings$sh===void 0?false:_useWidgetSettings$sh;var showRatings=useMemo(function(){if(hasReviews&&(rating===null||rating===void 0?void 0:rating.average)>0){return true;}if(hasReviews&&showEmptyRatingStars&&rating){return true;}return false;},[rating,showEmptyRatingStars]);return React.createElement(SurroundPortals,{portalName:PRODUCT_RATING},showRatings&&React.createElement("div",{className:container,onClick:scrollToRating,role:"
|
|
6
|
+
* @return {JSX.Element}
|
|
7
|
+
*/var Rating=function Rating(_ref){var rating=_ref.rating;var _useWidgetSettings=useWidgetSettings('@shopgate/engage/rating'),_useWidgetSettings$sh=_useWidgetSettings.showEmptyRatingStars,showEmptyRatingStars=_useWidgetSettings$sh===void 0?false:_useWidgetSettings$sh;var showRatings=useMemo(function(){if(hasReviews&&(rating===null||rating===void 0?void 0:rating.average)>0){return true;}if(hasReviews&&showEmptyRatingStars&&rating){return true;}return false;},[rating,showEmptyRatingStars]);return React.createElement(SurroundPortals,{portalName:PRODUCT_RATING},showRatings&&React.createElement("div",{className:container,onClick:scrollToRating,role:"presentation"},React.createElement(RatingStars,{value:rating.average,display:"big"}),React.createElement(RatingCount,{count:rating.count,prominent:true})));};Rating.defaultProps={rating:null};export default connect(memo(Rating));
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import React from'react';import PropTypes from'prop-types';import RatingStars from'@shopgate/pwa-ui-shared/RatingStars';import
|
|
1
|
+
import React from'react';import PropTypes from'prop-types';import RatingStars from'@shopgate/pwa-ui-shared/RatingStars';import{Link}from'@shopgate/engage/components';import{ITEM_PATH}from'@shopgate/pwa-common-commerce/product/constants';import{bin2hex}from'@shopgate/pwa-common/helpers/data';import appConfig from'@shopgate/pwa-common/helpers/config';import RatingCount from"../../../RatingCount";import{container}from"./style";/**
|
|
2
2
|
* The average rating and number of ratings for a product.
|
|
3
|
-
* @param {Object}
|
|
4
|
-
* @param {
|
|
5
|
-
* @
|
|
3
|
+
* @param {Object} props The component props
|
|
4
|
+
* @param {number} props.average The average rating
|
|
5
|
+
* @param {number} props.count The rating count
|
|
6
|
+
* @param {string} props.productId The related product ID.
|
|
7
|
+
* @returns {JSX.Element}
|
|
6
8
|
*/var AverageRating=function AverageRating(_ref){var average=_ref.average,count=_ref.count,productId=_ref.productId;if(!productId){return null;}return React.createElement(Link,{"data-test-id":"ratedStarsAverage",tagName:"a",href:"".concat(ITEM_PATH,"/").concat(bin2hex(productId),"/write_review"),disabled:!appConfig.showWriteReview,className:container,itemProp:"item",itemScope:true,itemType:"http://schema.org/Review"// eslint-disable-next-line jsx-a11y/aria-role
|
|
7
9
|
,role:"text"},React.createElement(RatingStars,{value:average,display:"large"}),React.createElement(RatingCount,{count:count}));};AverageRating.defaultProps={average:0,count:0,productId:null};export default AverageRating;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import React,{Fragment}from'react';import PropTypes from'prop-types';import
|
|
2
|
-
* @return {JSX}
|
|
3
|
-
*/var NoReviews=function NoReviews(_ref){var productId=_ref.productId;return React.createElement("div",{className:styles.container
|
|
1
|
+
import React,{Fragment}from'react';import PropTypes from'prop-types';import{I18n}from'@shopgate/engage/components';import appConfig from'@shopgate/pwa-common/helpers/config';import AverageRating from"../AverageRating";import WriteReviewLink from"../WriteReviewLink";import*as styles from"./style";/**
|
|
2
|
+
* @return {JSX.Element}
|
|
3
|
+
*/var NoReviews=function NoReviews(_ref){var productId=_ref.productId;return React.createElement("div",{className:styles.container},React.createElement(AverageRating,{productId:productId}),React.createElement("div",{className:styles.noReviews},appConfig.showWriteReview&&React.createElement(Fragment,null,React.createElement(I18n.Text,{string:"reviews.no_reviews"}),React.createElement(WriteReviewLink,{productId:productId}))));};NoReviews.defaultProps={productId:null};export default NoReviews;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React from'react';import PropTypes from'prop-types';import classNames from'classnames';import appConfig from'@shopgate/pwa-common/helpers/config';import I18n from'@shopgate/pwa-common/components/I18n';import
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React from'react';import PropTypes from'prop-types';import classNames from'classnames';import appConfig from'@shopgate/pwa-common/helpers/config';import I18n from'@shopgate/pwa-common/components/I18n';import{RatingNumber}from'@shopgate/engage/components';import AverageRating from"../AverageRating";import WriteReviewLink from"../WriteReviewLink";import*as styles from"./style";/**
|
|
2
2
|
* @param {Object} props The component props.
|
|
3
|
-
* @returns {JSX}
|
|
4
|
-
*/var ReviewsExcerpt=function ReviewsExcerpt(_ref){var productId=_ref.productId,average=_ref.average,count=_ref.count,withTopGap=_ref.withTopGap;return React.createElement("div",{className:classNames('engage__reviews__reviews-excerpt',_defineProperty(_defineProperty({},styles.withTopGapContainer,withTopGap),styles.container,!withTopGap)),id:"reviewsExcerpt"},React.createElement(AverageRating,{productId:productId,average:average,count:count}),React.createElement("div",{className:styles.reviewsLine
|
|
3
|
+
* @returns {JSX.Element}
|
|
4
|
+
*/var ReviewsExcerpt=function ReviewsExcerpt(_ref){var productId=_ref.productId,average=_ref.average,count=_ref.count,withTopGap=_ref.withTopGap;return React.createElement("div",{className:classNames('engage__reviews__reviews-excerpt',_defineProperty(_defineProperty({},styles.withTopGapContainer,withTopGap),styles.container,!withTopGap)),id:"reviewsExcerpt"},React.createElement(AverageRating,{productId:productId,average:average,count:count}),React.createElement("div",{className:styles.reviewsLine},React.createElement(I18n.Text,{string:"reviews.rating",className:styles.averageRatingText},React.createElement(RatingNumber,{rating:average,className:styles.averageRatingNumber})),appConfig.showWriteReview&&React.createElement(WriteReviewLink,{productId:productId})));};ReviewsExcerpt.defaultProps={average:0,count:0,productId:null,withTopGap:false};export default ReviewsExcerpt;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from'react';import PropTypes from'prop-types';import
|
|
1
|
+
import React from'react';import PropTypes from'prop-types';import{I18n}from'@shopgate/engage/components';import{i18n}from'@shopgate/engage/core';import{ITEM_PATH}from'@shopgate/pwa-common-commerce/product/constants';import{bin2hex}from'@shopgate/pwa-common/helpers/data';import ButtonLink from'@shopgate/pwa-ui-shared/ButtonLink';/**
|
|
2
2
|
* Link to add a review.
|
|
3
|
-
* @returns {JSX
|
|
4
|
-
*/var WriteReviewLink=function WriteReviewLink(_ref){var productId=_ref.productId;return React.createElement("div",{"data-test-id":"writeReview",
|
|
3
|
+
* @returns {JSX.Element}
|
|
4
|
+
*/var WriteReviewLink=function WriteReviewLink(_ref){var productId=_ref.productId;return React.createElement("div",{"data-test-id":"writeReview",className:"engage__reviews__write-review-link"},React.createElement(ButtonLink,{href:"".concat(ITEM_PATH,"/").concat(bin2hex(productId),"/write_review"),noGap:true,"aria-label":i18n.text('reviews.button_add')},React.createElement(I18n.Text,{string:"reviews.button_add"})));};export default WriteReviewLink;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from'react';import{Provider}from'react-redux';import configureStore from'redux-mock-store';import{mount}from'enzyme';import{mockedStateWithAll}from'@shopgate/pwa-common-commerce/reviews/mock';import WriteReviewLink from"./index";var mockedStore=configureStore();/**
|
|
1
|
+
import React from'react';import{Provider}from'react-redux';import configureStore from'redux-mock-store';import{mount}from'enzyme';import{mockedStateWithAll}from'@shopgate/pwa-common-commerce/reviews/mock';import WriteReviewLink from"./index";var mockedStore=configureStore();jest.mock('@shopgate/engage/components');/**
|
|
2
2
|
* Creates component with provided store state.
|
|
3
3
|
* @param {Object} mockedState Mocked stage.
|
|
4
4
|
* @return {ReactWrapper}
|
|
5
|
-
*/var createComponent=function createComponent(mockedState){var Component=React.createElement(Provider,{store:mockedStore(mockedState)},React.createElement(WriteReviewLink,{productId:"foo"}));return mount(Component);};describe('<WriteReviewLink>',function(){var component=null;beforeEach(function(){jest.resetModules();});it('should render when current product is set',function(){component=createComponent(mockedStateWithAll);expect(component).toMatchSnapshot();expect(component.find('
|
|
5
|
+
*/var createComponent=function createComponent(mockedState){var Component=React.createElement(Provider,{store:mockedStore(mockedState)},React.createElement(WriteReviewLink,{productId:"foo"}));return mount(Component);};describe('<WriteReviewLink>',function(){var component=null;beforeEach(function(){jest.resetModules();});it('should render when current product is set',function(){component=createComponent(mockedStateWithAll);expect(component).toMatchSnapshot();expect(component.find('Text[string="reviews.button_add"]').exists()).toBe(true);});});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from'react';import PropTypes from'prop-types';import NoReviews from"./components/NoReviews";import ReviewsExcerpt from"./components/ReviewsExcerpt";import connect from"./connector";/**
|
|
2
2
|
* The header of the reviews component
|
|
3
|
-
* @param {Object}
|
|
4
|
-
* @param {
|
|
5
|
-
* @
|
|
3
|
+
* @param {Object} props The component props
|
|
4
|
+
* @param {string} props.productId The related product ID.
|
|
5
|
+
* @param {Object} props.rating The rating values
|
|
6
|
+
* @param {boolean} props.withTopGap Adds additional top gap when true.
|
|
7
|
+
* @returns {JSX.Element}
|
|
6
8
|
*/var Header=function Header(_ref){var productId=_ref.productId,rating=_ref.rating,withTopGap=_ref.withTopGap;if(!rating){return null;}var _rating$average=rating.average,average=_rating$average===void 0?0:_rating$average,_rating$count=rating.count,count=_rating$count===void 0?0:_rating$count;if(!average){return React.createElement(NoReviews,{productId:productId});}return React.createElement(ReviewsExcerpt,{productId:productId,average:average,count:count,withTopGap:withTopGap});};Header.defaultProps={productId:null,rating:null,withTopGap:false};export default connect(Header);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from'react';import{Provider}from'react-redux';import{mount}from'enzyme';import configureStore from'redux-mock-store';import mockRenderOptions from'@shopgate/pwa-common/helpers/mocks/mockRenderOptions';import{mockProductId,mockedStateWithoutReview,mockedStateWithAll}from'@shopgate/pwa-common-commerce/reviews/mock';import Header from"./index";var mockedStore=configureStore();/**
|
|
1
|
+
import React from'react';import{Provider}from'react-redux';import{mount}from'enzyme';import configureStore from'redux-mock-store';import mockRenderOptions from'@shopgate/pwa-common/helpers/mocks/mockRenderOptions';import{mockProductId,mockedStateWithoutReview,mockedStateWithAll}from'@shopgate/pwa-common-commerce/reviews/mock';import Header from"./index";var mockedStore=configureStore();jest.mock('@shopgate/engage/components');/**
|
|
2
2
|
* Creates component with provided store state.
|
|
3
3
|
* @param {Object} mockedState Mocked stage.
|
|
4
4
|
* @param {Object|null} props Rating prop.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from'react';import{css}from'glamor';import classNames from'classnames';import appConfig from'@shopgate/pwa-common/helpers/config';import{Link}from'@shopgate/engage/components';var styles={root:css({textAlign:'center',marginTop:8,fontSize:'.875rem',fontWeight:300,lineHeight:1.5,padding:'0 1rem 1rem'}).toString(),link:css({textAlign:'center',fontWeight:600,marginTop:8}).toString()};var _appConfig$reviewsInf=appConfig.reviewsInfo,_appConfig$reviewsInf2=_appConfig$reviewsInf===void 0?{}:_appConfig$reviewsInf,text=_appConfig$reviewsInf2.text,linkText=_appConfig$reviewsInf2.linkText,linkUrl=_appConfig$reviewsInf2.linkUrl;/**
|
|
2
2
|
* The ReviewsInfo component
|
|
3
|
-
* @
|
|
4
|
-
* @returns {JSX}
|
|
3
|
+
* @returns {JSX.Element}
|
|
5
4
|
*/var ReviewsInfo=function ReviewsInfo(){if(!text){return null;}return React.createElement("div",{className:classNames(styles.root,'engage__reviews__review_info_text')},React.createElement("div",null,text,linkText&&linkUrl&&React.createElement(Link,{href:linkUrl,className:styles.link},linkText)));};export default ReviewsInfo;
|