{"version":3,"sources":["webpack:///./Avensia.Common/Features/Shared/infinite-scroll.tsx","webpack:///./Avensia.Common/Features/Account/MyPages/MyReviews/components/SearchBar.tsx","webpack:///./Avensia.Common/Features/Shared/ReadMore/index.tsx","webpack:///./Avensia.Common/Features/Account/MyPages/MyReviews/components/ReviewItem.tsx","webpack:///./Avensia.Common/Features/Account/MyPages/MyReviews/components/ReviewList.tsx","webpack:///./Avensia.Common/Features/Account/MyPages/MyReviews/index.tsx"],"names":["isBound","bindInfiniteScroll","element","callback","offset","clientHeight","scrollTop","elementBottomPosition","offsetTop","offsetHeight","scrollBottomPosition","window","pageYOffset","handleScroll","SEARCH_URL","SEARCH_FAILED","onSubmit","e","preventDefault","query","searchKeyword","this","props","searchText","myReviewsSearchUrl","pathname","onSearchRequest","updateCurrentPage","current","myReviews","onChange","onChangeSearchText","target","value","render","SearchForm","css","compose","Field","isMobile","margin","x","Container","SearchInput","type","placeholder","backgroundColor","theme","buttonSearchHeaderBackgroundColor","padding","SearchIcon","Component","connect","state","myReviewsSearch","dispatch","updater","isLoading","form","position","input","inputSearchHeaderBackgroundColor","border","xy","style","color","inputTextColor","flexGrow","fontSize","lineHeight","top","bottom","div","display","width","inputSearchHeaderBorderColor","right","alignItems","maxWidth","y","button","cursor","menuBarTextColor","onReadMyReviewClick","isExpanded","setState","textWrapperHeight","height","textWrapperRef","renderArrowIcon","IconContent","ArrowUp","ArrowDown","showGradientEffect","componentDidMount","buttonAlignment","includeArrow","text","buttonLabel","readMoreLabel","Div","TextWrapper","ref","el","Gradient","ReadMoreButton","textAlign","onClick","marginLeft","paddingTop","paddingLeft","ArrowStyled","overflow","property","backgroundImage","marginTop","textDecoration","productUrl","productImageUrl","createdDate","timeStamp","Date","day","getDate","slice","month","getMonth","created","getFullYear","ItemWrapper","ProductContent","Header","ImageAndProductInfoWrapper","ImageInfo","ContentLink","to","ImageStyled","src","preset","includes","undefined","Tiny","ratio","OneToOne","ProductInfo","ProductTitle","reviewItem","productTitle","ProductReviewDateCreated","RatingContent","Ratings","average","rating","spacing","Normal","size","MyReviewContent","reviewText","AdminResponseContent","siteName","reviewAdminAnswer","borderBottom","flexFlow","infoStyle","marginRight","alignContent","Link","textColor","flexBasis","minHeight","paddingRight","AverageRating","zIndex","fontWeight","paddingBottom","elementRef","productsReviews","map","item","index","key","now","showMore","currentlyReloading","hasMore","currentMyReviewsCount","length","pageSize","currentPage","reload","reloadPage","hideSpinner","merge","newMyReviews","array","Promise","resolve","deactivateInfinityScroll","reject","feedback","push","activateInfiniteScroll","infinityScroll","unbindInfiniteScroll","MyReviewsList","componentWillUnmount","totalCount","pageCount","page","count","skip","loadOptions","url","searchParams","set","String","hiddenParams","FeedbackButton","Button","currentBreakpoint","Medium","hideMobileBorder","MyPagesBaseLayout","HeaderWrapper","MyReview","AdminResponse","LoadingSpinner","ReviewList","NoReviews","Pagination","variant","Large","appearance","Secondary","disabled","maximumFulfilled","appShellData","borderColor","justifyContent","Spinner","flexDirection","order"],"mappings":"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","file":"assets/32.chunk.9336a1367c8589ea45d3.js","sourcesContent":["import { isBrowser, on } from '@avensia/scope';\r\n\r\nlet isBound = false;\r\n\r\nexport function bindInfiniteScroll(element: HTMLElement, callback: () => void, offset?: number) {\r\n if (isBrowser() && !isBound) {\r\n const listener = () => handleScroll(element, callback, offset);\r\n const unbindRootScroll = on('scroll', listener);\r\n isBound = true;\r\n return () => {\r\n unbindRootScroll();\r\n isBound = false;\r\n };\r\n }\r\n}\r\n\r\nfunction handleScroll(element: HTMLElement, callback: () => void, offset = 0) {\r\n const { clientHeight, scrollTop } = document.documentElement;\r\n const elementBottomPosition = element.offsetTop + element.offsetHeight;\r\n const scrollBottomPosition = (scrollTop ? scrollTop : window.pageYOffset) + clientHeight;\r\n\r\n if (elementBottomPosition <= scrollBottomPosition - offset) {\r\n callback();\r\n }\r\n}\r\n","import React from 'react';\r\nimport connect from 'Shared/connect';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { changeSearchText, searchRequestStatus } from 'Account/MyPages/MyReviews/action-creators';\r\nimport { translate, postJson, addUserLog, currentUrl, updateCurrentPage } from '@avensia/scope';\r\nimport { large, sigma, pixelsToUnit, thin } from 'Shared/Style';\r\nimport Icon from 'Shared/Icon/Search';\r\nimport MyReviewsPageViewModelType from 'Account/MyPages/MyReviews/MyReviewsPageViewModel.type';\r\n\r\ntype PropType = {\r\n isMobile: boolean;\r\n searchText: string;\r\n} & StyledProps &\r\n ConnectActionType;\r\n\r\ntype ConnectActionType = {\r\n updateCurrentPage: (updater: (page: MyReviewsPageViewModelType) => MyReviewsPageViewModelType) => void;\r\n onChangeSearchText: (searchText: string) => Promise;\r\n onSearchRequest: (isLoading: boolean) => Promise;\r\n};\r\n\r\nconst SEARCH_URL = '/search';\r\nconst SEARCH_FAILED = 'My reviews Search failed';\r\nclass SearchBar extends React.Component {\r\n onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n const query = { searchKeyword: this.props.searchText };\r\n const myReviewsSearchUrl = currentUrl().pathname + SEARCH_URL;\r\n try {\r\n this.props.onSearchRequest(true);\r\n const result = await postJson(myReviewsSearchUrl, query);\r\n if (!!result) {\r\n this.props.onSearchRequest(false);\r\n }\r\n this.props.updateCurrentPage((current) => ({ ...current, myReviews: result }));\r\n } catch (error) {\r\n addUserLog(SEARCH_FAILED);\r\n }\r\n };\r\n\r\n onChange = (e: React.FocusEvent) => {\r\n return this.props.onChangeSearchText(e.target.value);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n theme.buttonSearchHeaderBackgroundColor,\r\n padding: {\r\n x: large,\r\n },\r\n }}\r\n type=\"submit\"\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default styled(\r\n connect(\r\n (state) => ({\r\n searchText: state.myReviewsSearch.searchText,\r\n }),\r\n (dispatch) => ({\r\n updateCurrentPage(updater: (page: MyReviewsPageViewModelType) => MyReviewsPageViewModelType) {\r\n dispatch(updateCurrentPage(updater));\r\n },\r\n onChangeSearchText(searchText: string) {\r\n dispatch(changeSearchText(searchText));\r\n },\r\n onSearchRequest(isLoading: boolean) {\r\n dispatch(searchRequestStatus(isLoading));\r\n },\r\n }),\r\n )(SearchBar),\r\n);\r\n\r\nconst SearchForm = styled.form({\r\n position: 'relative',\r\n});\r\n\r\nconst SearchInput = styled.input({\r\n backgroundColor: (theme) => theme.inputSearchHeaderBackgroundColor,\r\n border: {\r\n xy: {\r\n style: 'none',\r\n },\r\n },\r\n color: (theme) => theme.inputTextColor,\r\n flexGrow: 1,\r\n fontSize: sigma,\r\n lineHeight: 'normal',\r\n padding: {\r\n top: pixelsToUnit(14),\r\n bottom: pixelsToUnit(12),\r\n x: pixelsToUnit(17),\r\n },\r\n});\r\n\r\nconst Container = styled.div({\r\n flexGrow: 1,\r\n display: 'flex',\r\n border: {\r\n xy: {\r\n width: thin,\r\n style: 'solid',\r\n color: (theme) => theme.inputSearchHeaderBorderColor,\r\n },\r\n right: {\r\n width: 0,\r\n },\r\n },\r\n});\r\n\r\nconst Field = styled.div({\r\n display: 'flex',\r\n alignItems: 'stretch',\r\n maxWidth: pixelsToUnit(400),\r\n margin: {\r\n y: pixelsToUnit(22),\r\n },\r\n});\r\n\r\nconst Button = styled.button({\r\n border: {\r\n xy: {\r\n style: 'none',\r\n },\r\n },\r\n cursor: 'pointer',\r\n});\r\n\r\nconst SearchIcon = styled(Icon, {\r\n color: (theme) => theme.menuBarTextColor,\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { translate } from '@avensia/scope';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { transition } from 'Shared/Style';\r\nimport { Up, Down } from 'Shared/Icon/Arrow';\r\n\r\ntype PropType = {\r\n buttonLabel?: string;\r\n buttonAlignment?: 'left' | 'center' | 'right';\r\n height?: number;\r\n includeArrow?: boolean;\r\n text: string;\r\n} & StyledProps;\r\n\r\ntype StateType = {\r\n isExpanded: boolean;\r\n textWrapperHeight: number | string;\r\n showGradientEffect: boolean;\r\n isLoading: boolean;\r\n};\r\n\r\nexport default styled(\r\n class ReadMore extends React.Component {\r\n textWrapperRef: HTMLDivElement;\r\n\r\n constructor(props: PropType) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n showGradientEffect: false,\r\n isExpanded: false,\r\n textWrapperHeight: this.props.height,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const divHeight = this.textWrapperRef.clientHeight;\r\n\r\n if (divHeight > this.props.height) {\r\n this.setState({ showGradientEffect: true, textWrapperHeight: this.props.height });\r\n }\r\n\r\n this.setState({ isLoading: true });\r\n }\r\n\r\n onReadMyReviewClick = () => {\r\n const { isExpanded } = this.state;\r\n\r\n this.setState({ isExpanded: !isExpanded });\r\n\r\n if (!isExpanded) {\r\n this.setState({ textWrapperHeight: this.textWrapperRef.clientHeight });\r\n } else {\r\n this.setState({\r\n textWrapperHeight: this.props.height,\r\n });\r\n }\r\n };\r\n\r\n renderArrowIcon = () => {\r\n return {this.state.isExpanded ? : };\r\n };\r\n\r\n render() {\r\n const { buttonAlignment = 'left', includeArrow, text, compose, buttonLabel } = this.props;\r\n const readMoreLabel = !!buttonLabel ? buttonLabel : translate('/Shared/ReadMore');\r\n\r\n return (\r\n \r\n \r\n (this.textWrapperRef = el)}\r\n >\r\n {text}\r\n \r\n {!this.state.isExpanded && this.state.showGradientEffect && }\r\n \r\n {this.state.showGradientEffect && (\r\n \r\n {this.state.isExpanded ? (\r\n {translate('/Account/MyPages/MyReviews/ReadLess')}\r\n ) : (\r\n {readMoreLabel}\r\n )}\r\n\r\n {includeArrow && this.renderArrowIcon()}\r\n \r\n )}\r\n \r\n );\r\n }\r\n },\r\n);\r\n\r\nconst IconContent = styled.div({\r\n marginLeft: pixelsToUnit(3),\r\n paddingTop: pixelsToUnit(5),\r\n paddingLeft: pixelsToUnit(5),\r\n});\r\n\r\nconst ArrowStyled = styled({\r\n fontSize: pixelsToUnit(16),\r\n});\r\n\r\nconst ArrowUp = ArrowStyled(Up);\r\nconst ArrowDown = ArrowStyled(Down);\r\n\r\nconst TextWrapper = styled.div({\r\n overflow: 'hidden',\r\n position: 'relative',\r\n ...transition({ property: 'height' }),\r\n});\r\n\r\nconst Gradient = styled.div({\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.9))',\r\n bottom: 0,\r\n height: '70%',\r\n position: 'absolute',\r\n width: '100%',\r\n});\r\n\r\nconst ReadMoreButton = styled.div({\r\n cursor: 'pointer',\r\n marginTop: pixelsToUnit(21),\r\n textAlign: 'center',\r\n textDecoration: 'underline',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { translate } from '@avensia/scope';\r\nimport { pixelsToUnit } from 'Shared/Style/unit';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport AverageRating, { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport { thin, alto, minTinyMediaQuery, minSmallMediaQuery, minLargeMediaQuery } from 'Shared/Style';\r\nimport MyReviewViewModel from './../MyReviewViewModel.type';\r\nimport Link from 'Shared/Link';\r\nimport ReadMore from 'Shared/ReadMore';\r\n\r\ntype PropType = {\r\n reviewItem: MyReviewViewModel;\r\n isMobile: boolean;\r\n siteName: string;\r\n} & StyledProps;\r\n\r\nconst FIXEDHEIGHT = 96;\r\n\r\nconst ReviewItem = (props: PropType) => {\r\n const { productUrl, productImageUrl, createdDate } = props.reviewItem;\r\n const timeStamp = new Date(createdDate);\r\n const day = ('0' + timeStamp.getDate()).slice(-2);\r\n const month = ('0' + (timeStamp.getMonth() + 1)).slice(-2);\r\n const year = timeStamp.getFullYear();\r\n const created = `${year}-${month}-${day}`;\r\n\r\n return (\r\n \r\n \r\n {props.isMobile && (\r\n
\r\n {translate('/Account/MyPages/MyReviews/HeadTitle/ProductTitleAndPublish')}\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.reviewItem.productTitle}\r\n \r\n {created}\r\n \r\n \r\n
\r\n\r\n \r\n {props.isMobile &&
{translate('/Account/MyPages/MyReviews/HeadTitle/Ratings')}
}\r\n \r\n \r\n\r\n \r\n {props.isMobile &&
{translate('/Account/MyPages/MyReviews/HeadTitle/MyReview')}
}\r\n \r\n
\r\n\r\n \r\n {props.isMobile && (\r\n
{`${props.siteName} ${translate('/Account/MyPages/MyReviews/HeadTitle/AdminRespond')}`}
\r\n )}\r\n\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default styled(ReviewItem);\r\n\r\nconst DESKTOP_WIDTH = '25%';\r\n\r\nconst ItemWrapper = styled.div({\r\n borderBottom: {\r\n style: 'solid',\r\n width: thin,\r\n color: alto,\r\n },\r\n display: 'flex',\r\n flexFlow: 'row wrap',\r\n padding: {\r\n y: pixelsToUnit(20),\r\n },\r\n});\r\n\r\nconst ImageAndProductInfoWrapper = styled.div({\r\n display: 'flex',\r\n});\r\n\r\nconst ImageStyled = styled(Image, {\r\n width: pixelsToUnit(84),\r\n height: 'auto',\r\n});\r\n\r\nconst infoStyle = {\r\n marginRight: pixelsToUnit(20),\r\n alignContent: 'flex-start',\r\n};\r\n\r\nconst ImageInfo = styled.div(infoStyle);\r\n\r\nconst ProductInfo = styled.div({\r\n ...infoStyle,\r\n width: '100%',\r\n});\r\n\r\nconst ContentLink = styled(Link, {\r\n color: theme => theme.textColor,\r\n display: 'flex',\r\n flexFlow: 'column nowrap',\r\n flexBasis: pixelsToUnit(84),\r\n});\r\n\r\nconst ProductTitle = styled.div({\r\n minHeight: pixelsToUnit(36),\r\n});\r\n\r\nconst ProductReviewDateCreated = styled.div({\r\n height: pixelsToUnit(36),\r\n paddingTop: pixelsToUnit(15),\r\n});\r\n\r\nconst ProductContent = styled.div({\r\n width: '100%',\r\n [minTinyMediaQuery]: {\r\n width: '50%',\r\n },\r\n [minSmallMediaQuery]: {\r\n width: '35%',\r\n },\r\n [minLargeMediaQuery]: {\r\n width: DESKTOP_WIDTH,\r\n },\r\n});\r\n\r\nconst RatingContent = styled.div({\r\n width: '100%',\r\n [minTinyMediaQuery]: {\r\n width: '50%',\r\n },\r\n [minSmallMediaQuery]: {\r\n width: '15%',\r\n },\r\n [minLargeMediaQuery]: {\r\n width: DESKTOP_WIDTH,\r\n },\r\n});\r\n\r\nconst MyReviewContent = styled.div({\r\n marginTop: pixelsToUnit(20),\r\n paddingRight: pixelsToUnit(20),\r\n width: '100%',\r\n [minTinyMediaQuery]: {\r\n width: '50%',\r\n },\r\n [minSmallMediaQuery]: {\r\n marginTop: 0,\r\n width: '25%',\r\n },\r\n});\r\n\r\nconst AdminResponseContent = styled.div({\r\n marginTop: pixelsToUnit(20),\r\n paddingRight: pixelsToUnit(20),\r\n width: '100%',\r\n [minTinyMediaQuery]: {\r\n width: '50%',\r\n },\r\n [minSmallMediaQuery]: {\r\n marginTop: 0,\r\n width: '25%',\r\n },\r\n});\r\n\r\nconst Ratings = styled(AverageRating, {\r\n height: pixelsToUnit(20),\r\n position: 'absolute',\r\n width: '100%',\r\n zIndex: 1,\r\n});\r\n\r\nconst Header = styled.div({\r\n fontWeight: 'bold',\r\n fontSize: pixelsToUnit(16),\r\n paddingBottom: pixelsToUnit(5),\r\n});\r\n","import React from 'react';\r\nimport ReviewItem from './ReviewItem';\r\nimport MyReviewViewModel from './../MyReviewViewModel.type';\r\n\r\ntype PropTypes = {\r\n isMobile: boolean;\r\n productsReviews: MyReviewViewModel[];\r\n siteName: string;\r\n elementRef?: React.Ref;\r\n};\r\n\r\nexport default (props: PropTypes) => (\r\n
\r\n {props.productsReviews.map((item: MyReviewViewModel, index: number) => (\r\n \r\n ))}\r\n
\r\n);\r\n","/**\r\n * @ComponentFor MyReviewsPageViewModel\r\n */\r\n\r\nimport React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport connect from 'Shared/connect';\r\nimport MyPagesBaseLayout from '../MyPagesBaseLayout';\r\nimport { pixelsToUnit, minMediumMediaQuery, minLargeMediaQuery, huge } from 'Shared/Style';\r\nimport { Variant as ButtonVariant, Appearance as ButtonAppearance } from 'Shared/Button';\r\nimport SearchBar from './components/SearchBar';\r\nimport ReviewList from './components/ReviewList';\r\nimport { translate, Breakpoint, currentUrl, replaceState, HistoryOptions } from '@avensia/scope';\r\nimport MyReviewsPageViewModelType from './MyReviewsPageViewModel.type';\r\nimport MyReviewViewModel from './MyReviewViewModel.type';\r\nimport { connectWithFeedback, ConnectPropType } from 'Shared/Button/Feedback';\r\nimport Spinner from 'Shared/Icon/Spinner';\r\nimport H1 from 'Shared/Generic/h1';\r\nimport { bindInfiniteScroll } from 'Shared/infinite-scroll';\r\nimport { Part } from 'Shared/PageLayout';\r\n\r\ntype ConnectStateType = {\r\n currentBreakpoint: number;\r\n isloading: boolean;\r\n myReviews: MyReviewViewModel[];\r\n siteName: string;\r\n};\r\n\r\ntype PropType = MyReviewsPageViewModelType & ConnectStateType & ConnectPropType;\r\n\r\ntype StateType = {\r\n infinityScroll: boolean;\r\n};\r\n\r\nclass MyReviewsPage extends React.Component {\r\n currentlyReloading: boolean;\r\n unbindInfiniteScroll: () => void;\r\n MyReviewsList: HTMLDivElement;\r\n\r\n constructor(props: PropType) {\r\n super(props);\r\n\r\n this.state = {\r\n infinityScroll: false,\r\n };\r\n this.currentlyReloading = false;\r\n }\r\n\r\n componentWillUnmount() {\r\n this.deactivateInfinityScroll();\r\n }\r\n\r\n showMore = async () => {\r\n if (!this.currentlyReloading) {\r\n if (this.hasMore()) {\r\n this.currentlyReloading = true;\r\n const currentMyReviewsCount = this.props.myReviews.length;\r\n const newCount = this.props.pageSize;\r\n const newPageNumber = this.props.currentPage + 1;\r\n const skip = currentMyReviewsCount;\r\n const reload = async () => {\r\n try {\r\n await this.reloadPage(newPageNumber, newCount, skip, {\r\n hideSpinner: true,\r\n merge: (currentPage: MyReviewsPageViewModelType, newMyReviews: MyReviewsPageViewModelType) => {\r\n const array = [...currentPage.myReviews, ...newMyReviews.myReviews];\r\n const newPage = { ...currentPage, currentPage: newMyReviews.currentPage, myReviews: array };\r\n return newPage;\r\n },\r\n });\r\n this.currentlyReloading = false;\r\n return Promise.resolve();\r\n } catch (e) {\r\n this.deactivateInfinityScroll();\r\n this.currentlyReloading = false;\r\n return Promise.reject(null);\r\n }\r\n };\r\n\r\n this.props.feedback.push(reload());\r\n } else {\r\n this.deactivateInfinityScroll();\r\n }\r\n }\r\n };\r\n\r\n hasMore() {\r\n return this.props.totalCount > this.props.myReviews.length && this.props.currentPage < this.props.pageCount;\r\n }\r\n\r\n reloadPage(page: number, count: number, skip: number, loadOptions?: HistoryOptions) {\r\n const url = currentUrl();\r\n url.searchParams.set('page', String(page));\r\n url.searchParams.set('pageSize', String(count));\r\n url.hiddenParams.set('skip', String(skip));\r\n\r\n return replaceState(url, loadOptions);\r\n }\r\n\r\n deactivateInfinityScroll() {\r\n if (this.state.infinityScroll) {\r\n this.setState({ infinityScroll: false });\r\n }\r\n if (this.unbindInfiniteScroll) {\r\n this.unbindInfiniteScroll();\r\n }\r\n }\r\n\r\n activateInfiniteScroll = () => {\r\n this.showMore();\r\n this.setState({ infinityScroll: true });\r\n this.unbindInfiniteScroll = bindInfiniteScroll(this.MyReviewsList, this.showMore, -500);\r\n };\r\n\r\n render() {\r\n const FeedbackButton = this.props.feedback.Button;\r\n const isMobile = this.props.currentBreakpoint < Breakpoint.Medium;\r\n const myReviews = this.props.myReviews || [];\r\n const hideMobileBorder = (this.props.isLoading && isMobile) || (myReviews.length === 0 && isMobile);\r\n\r\n return (\r\n \r\n \r\n \r\n {!isMobile && (\r\n <>\r\n {translate('/Account/MyPages/MyReviews/HeadTitle/ProductTitleAndPublish')}\r\n {translate('/Account/MyPages/MyReviews/HeadTitle/Ratings')}\r\n {translate('/Account/MyPages/MyReviews/HeadTitle/MyReview')}\r\n \r\n {`${this.props.siteName} ${translate('/Account/MyPages/MyReviews/HeadTitle/AdminRespond')}`}\r\n \r\n \r\n )}\r\n \r\n {!this.props.isLoading ? (\r\n myReviews.length > 0 ? (\r\n (this.MyReviewsList = el)}\r\n isMobile={isMobile}\r\n productsReviews={myReviews}\r\n siteName={this.props.siteName}\r\n />\r\n ) : (\r\n {translate('/Account/MyPages/MyReviews/NoReviewsAdded')}\r\n )\r\n ) : (\r\n \r\n )}\r\n\r\n \r\n {this.hasMore() && (\r\n \r\n {translate('/ProductListing/ShowMore')}\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connectWithFeedback({ maximumFulfilled: 0 })(\r\n connect(state => ({\r\n currentBreakpoint: state.currentBreakpoint,\r\n isLoading: state.myReviewsSearch.isLoading,\r\n siteName: state.appShellData.siteName,\r\n }))(MyReviewsPage),\r\n);\r\n\r\nconst DESKTOP_WIDTH = '25%';\r\n\r\nconst HeaderWrapper = styled.div({\r\n borderBottom: {\r\n color: theme => theme.borderColor,\r\n style: 'solid',\r\n width: pixelsToUnit(1),\r\n },\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n marginTop: pixelsToUnit(46),\r\n paddingBottom: pixelsToUnit(11),\r\n});\r\n\r\nconst LoadingSpinner = styled(Spinner, {\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n margin: {\r\n x: 'auto',\r\n y: pixelsToUnit(30),\r\n },\r\n [minMediumMediaQuery]: {\r\n margin: {\r\n y: pixelsToUnit(50),\r\n },\r\n height: pixelsToUnit(35),\r\n width: pixelsToUnit(35),\r\n },\r\n});\r\n\r\nconst Header = styled.div({\r\n fontWeight: 'bold',\r\n});\r\n\r\nconst ProductTitle = styled(Header, {\r\n [minMediumMediaQuery]: {\r\n fontSize: pixelsToUnit(17),\r\n width: '35%',\r\n },\r\n [minLargeMediaQuery]: {\r\n width: DESKTOP_WIDTH,\r\n },\r\n});\r\n\r\nconst Ratings = styled(Header, {\r\n [minMediumMediaQuery]: {\r\n fontSize: pixelsToUnit(17),\r\n width: '15%',\r\n },\r\n [minLargeMediaQuery]: {\r\n width: DESKTOP_WIDTH,\r\n },\r\n});\r\n\r\nconst MyReview = styled(Header, {\r\n width: DESKTOP_WIDTH,\r\n});\r\n\r\nconst NoReviews = styled(H1, {\r\n marginTop: pixelsToUnit(70),\r\n textAlign: 'center',\r\n});\r\n\r\nconst AdminResponse = styled(Header, {\r\n width: DESKTOP_WIDTH,\r\n});\r\n\r\nconst Pagination = styled(Part, {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n order: 3,\r\n marginTop: huge,\r\n});\r\n"],"sourceRoot":""}