woocommerce/plugins/woocommerce-blocks/assets/js/components/product-control/index.js

248 lines
5.6 KiB
JavaScript
Raw Normal View History

/**
* External dependencies
*/
import { __, _n, sprintf } from '@wordpress/i18n';
import { escapeRegExp, isEmpty } from 'lodash';
import PropTypes from 'prop-types';
import { SearchListControl, SearchListItem } from '@woocommerce/components';
import { Spinner, MenuItem } from '@wordpress/components';
import classnames from 'classnames';
import {
withProductVariations,
withSearchedProducts,
withTransformSingleSelectToMultipleSelect,
} from '@woocommerce/block-hocs';
import { Icon, radioSelected, radioUnselected } from '@woocommerce/icons';
import ErrorMessage from '@woocommerce/block-components/error-placeholder/error-message.js';
/**
* Internal dependencies
*/
import './style.scss';
function getHighlightedName( name, search ) {
if ( ! search ) {
return name;
}
const re = new RegExp( escapeRegExp( search ), 'ig' );
return name.replace( re, '<strong>$&</strong>' );
}
const getInteractionIcon = ( isSelected = false ) => {
return isSelected ? (
<Icon srcElement={ radioSelected } />
) : (
<Icon srcElement={ radioUnselected } />
);
};
const messages = {
list: __( 'Products', 'woo-gutenberg-products-block' ),
noItems: __(
"Your store doesn't have any products.",
'woo-gutenberg-products-block'
),
search: __(
'Search for a product to display',
'woo-gutenberg-products-block'
),
updated: __(
'Product search results updated.',
'woo-gutenberg-products-block'
),
};
const ProductControl = ( {
expandedProduct,
error,
isLoading,
onChange,
onSearch,
products,
renderItem,
selected,
showVariations,
variations,
variationsLoading,
} ) => {
const renderItemWithVariations = ( args ) => {
const { item, search, depth = 0, isSelected, onSelect } = args;
const variationsCount =
item.variations && Array.isArray( item.variations )
? item.variations.length
: 0;
const classes = classnames(
'woocommerce-search-product__item',
'woocommerce-search-list__item',
`depth-${ depth }`,
{
'is-searching': search.length > 0,
'is-skip-level': depth === 0 && item.parent !== 0,
'is-variable': variationsCount > 0,
}
);
const itemArgs = Object.assign( {}, args );
delete itemArgs.isSingle;
const a11yProps = {
role: 'menuitemradio',
};
if ( item.breadcrumbs.length ) {
a11yProps[
'aria-label'
] = `${ item.breadcrumbs[ 0 ] }: ${ item.name }`;
}
if ( variationsCount ) {
a11yProps[ 'aria-expanded' ] = item.id === expandedProduct;
}
// Top level items custom rendering based on SearchListItem.
if ( ! item.breadcrumbs.length ) {
return [
<MenuItem
key={ `product-${ item.id }` }
isSelected={ isSelected }
{ ...itemArgs }
{ ...a11yProps }
className={ classes }
onClick={ () => {
onSelect( item )();
} }
>
<span className="woocommerce-search-list__item-state">
{ getInteractionIcon( isSelected ) }
</span>
<span className="woocommerce-search-list__item-label">
<span
className="woocommerce-search-list__item-name"
dangerouslySetInnerHTML={ {
__html: getHighlightedName( item.name, search ),
} }
/>
</span>
{ variationsCount ? (
<span className="woocommerce-search-list__item-variation-count">
{ sprintf(
_n(
'%d variation',
'%d variations',
variationsCount,
'woo-gutenberg-products-block'
),
variationsCount
) }
</span>
) : null }
</MenuItem>,
expandedProduct === item.id &&
variationsCount > 0 &&
variationsLoading && (
<div
key="loading"
className={
'woocommerce-search-list__item woocommerce-search-product__item' +
'depth-1 is-loading is-not-active'
}
>
<Spinner />
</div>
),
];
}
if ( ! isEmpty( item.variation ) ) {
item.name = item.variation;
}
return (
<SearchListItem
className={ classes }
{ ...args }
{ ...a11yProps }
/>
);
};
const getRenderItemFunc = () => {
if ( renderItem ) {
return renderItem;
} else if ( showVariations ) {
return renderItemWithVariations;
}
return null;
};
if ( error ) {
return <ErrorMessage error={ error } />;
}
const currentVariations =
variations && variations[ expandedProduct ]
? variations[ expandedProduct ]
: [];
const currentList = [ ...products, ...currentVariations ];
return (
<SearchListControl
className="woocommerce-products"
list={ currentList }
isLoading={ isLoading }
isSingle
selected={ currentList.filter( ( { id } ) =>
selected.includes( id )
) }
onChange={ onChange }
renderItem={ getRenderItemFunc() }
onSearch={ onSearch }
messages={ messages }
isHierarchical
/>
);
};
ProductControl.propTypes = {
/**
* Callback to update the selected products.
*/
onChange: PropTypes.func.isRequired,
Create Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/658) * Create Reviews by Product block * Honor Content settings * Fix wrong className * Load new wc-packages file * Add reviews-by-product JS files to webpack config * Cleanup * Remove error messages * Add Reviews by Product icon * Update sort options * Allow additional CSS classes attribute * Refactor block styles * Fix wrong default for reviews_orderby * Don't enforce CSS chunks * Add reviews count to Reviews by Product controls (https://github.com/woocommerce/woocommerce-blocks/pull/671) * Add label to Reviews by Product controls count (https://github.com/woocommerce/woocommerce-blocks/pull/677) * Add reviews count to Reviews by Product controls * Add label to Reviews by Product controls count * Add label to Reviews by Product controls count * Update components package * Review ordering and placeholders (https://github.com/woocommerce/woocommerce-blocks/pull/688) * Add support for comment_count ordering and add to productcontrol * Add a placeholder if rating count is 0 * Update assets/js/components/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/blocks/reviews-by-product/block.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * grammar * Fix some linting errors and warnings (https://github.com/woocommerce/woocommerce-blocks/pull/693) * Create Reviews by Product block placeholder (https://github.com/woocommerce/woocommerce-blocks/pull/691) * Create Reviews by Product block placeholder * Reviews by Product: load and render reviews with JS (https://github.com/woocommerce/woocommerce-blocks/pull/696) * Reviews by Product: load and render reviews with JS * Add dangerouslySetInnerHTML explanatory comment * Fix wrong dependency source * Debounce getReviews call when creating the Reviews by Product block * Rename 'Reviewer Picture' with 'Avatar' (https://github.com/woocommerce/woocommerce-blocks/pull/702) * Lint errors * Replace stringify query with addQueryArgs (https://github.com/woocommerce/woocommerce-blocks/pull/707) * Add reviews endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/705) * Prevent state updates on unmounted components (https://github.com/woocommerce/woocommerce-blocks/pull/715) * Add Order by and Load more controls in Reviews by Product frontend (https://github.com/woocommerce/woocommerce-blocks/pull/716) * Export IconReviewsByProduct (https://github.com/woocommerce/woocommerce-blocks/pull/721) * Fix Reviews by Product layout in IE11 (https://github.com/woocommerce/woocommerce-blocks/pull/723) * Set minimum to per page input field (https://github.com/woocommerce/woocommerce-blocks/pull/731) * Hide avatars in Reviews by Products if 'show_avatars' settings is false (https://github.com/woocommerce/woocommerce-blocks/pull/730) * Blocks API - Reviews endpoint with rating sort and category filtering (https://github.com/woocommerce/woocommerce-blocks/pull/726) * Move file to correct location * We are only using the reviews endpoint not revioews/id * Remove sensistive data and make endpoint public * Allow guest access to approved reviews * Add support for rating sorting * category filtering * update arg name * fix category query * Reviews by Product: add placeholders when loading reviews (https://github.com/woocommerce/woocommerce-blocks/pull/732) * Add placeholder animation (https://github.com/woocommerce/woocommerce-blocks/pull/733) * Hook up Reviews by Product 'Order by' with endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/736) * Hook up Reviews by Product 'Order by' with endpoint * Use onChange instead of onBlur in select control * Reviews by Product: Hide ratings if they are disabled in settings (https://github.com/woocommerce/woocommerce-blocks/pull/740) * Hide ratings in Reviews by Product if disabled in settings * Hide order by select if ratings are disabled * Reviews by Product cleanup (https://github.com/woocommerce/woocommerce-blocks/pull/773) * Fix wrong method name * Reduce the number of dependencies used in Reviews by Product (https://github.com/woocommerce/woocommerce-blocks/pull/774) * Reduce the number of dependencies used in Reviews by Product * Use 'withComponentId' HOC * Remove debounce * Fix wrong proptype * Get rid of JS warning * Load render from react-dom * Add formatted_date_created item schema (https://github.com/woocommerce/woocommerce-blocks/pull/788) * Fix import of WithComponentID * Add new settings to Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/787) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Reviews by Product: prevent importing all HOCs and import only withComponentId (https://github.com/woocommerce/woocommerce-blocks/pull/811) * Reviews by product: Update review styling and content (https://github.com/woocommerce/woocommerce-blocks/pull/806) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Review design/layout * verified icons * Read more component * remove comment * expanded -> isExpanded * Localise and change default elipses * Simplify ReadMore * Support children rather than passing content * remove outside * remove list style * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * merge set state * Add missing parameter doc in renderReview (https://github.com/woocommerce/woocommerce-blocks/pull/820) * Fix Reviews by Product order by select not honoring default setting (https://github.com/woocommerce/woocommerce-blocks/pull/818) * Read more component - change how clamped content is shown (https://github.com/woocommerce/woocommerce-blocks/pull/821) * Pass review as components * Build summary from content and track both * Toggle display after inital load * remove unused variable * remove componentDidUpdate * Simplify clampLines * Put back componentDidUpdate, but store final summary in state * clampEnabled * Call clampLines from componentDidMount (https://github.com/woocommerce/woocommerce-blocks/pull/826) * truncate html tests * implement trimHTML and pass test * Feedback * test short content * Use withProduct HOC in ReviewsByProductEditor (https://github.com/woocommerce/woocommerce-blocks/pull/828) * Use withProduct HOC * Convert ReviewsByProductEditor to a functional component * Add loading and error states * Prevent loading screen appearing when changing products * Reviews: only save wrapper element to post (https://github.com/woocommerce/woocommerce-blocks/pull/830) * Fix bundlesize config not picking frontend files (https://github.com/woocommerce/woocommerce-blocks/pull/840) * Reviews by Product: split 'block.js' into smaller chunks (https://github.com/woocommerce/woocommerce-blocks/pull/841) * Split 'block.js' into smaller chunks * Move frontend blocks to their specific folder * Order imports * Typo * Add frontend components proptypes * Fix indentation * Call 'this.getDefaultArgs' directly inside 'getReviews' * Move access to wc_product_block_data to the top of the file * Rename 'frontend' folder to 'base' * Rename base components and move styles to their folder * Fix Reviews by Product using rating count instead of review count (https://github.com/woocommerce/woocommerce-blocks/pull/860) * Improve Reviews by Product accessibility (https://github.com/woocommerce/woocommerce-blocks/pull/861) * Improve Reviews by Product accessibility * Make 'onClick' prop not required in <LoadMoreButton> * Wrap Reviews by Product editor block with <Disabled> * Reviews: fix reviews without rating not appearing when sorting by rating (https://github.com/woocommerce/woocommerce-blocks/pull/863)
2019-08-15 14:55:57 +00:00
/**
* The ID of the currently expanded product.
Create Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/658) * Create Reviews by Product block * Honor Content settings * Fix wrong className * Load new wc-packages file * Add reviews-by-product JS files to webpack config * Cleanup * Remove error messages * Add Reviews by Product icon * Update sort options * Allow additional CSS classes attribute * Refactor block styles * Fix wrong default for reviews_orderby * Don't enforce CSS chunks * Add reviews count to Reviews by Product controls (https://github.com/woocommerce/woocommerce-blocks/pull/671) * Add label to Reviews by Product controls count (https://github.com/woocommerce/woocommerce-blocks/pull/677) * Add reviews count to Reviews by Product controls * Add label to Reviews by Product controls count * Add label to Reviews by Product controls count * Update components package * Review ordering and placeholders (https://github.com/woocommerce/woocommerce-blocks/pull/688) * Add support for comment_count ordering and add to productcontrol * Add a placeholder if rating count is 0 * Update assets/js/components/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/blocks/reviews-by-product/block.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * grammar * Fix some linting errors and warnings (https://github.com/woocommerce/woocommerce-blocks/pull/693) * Create Reviews by Product block placeholder (https://github.com/woocommerce/woocommerce-blocks/pull/691) * Create Reviews by Product block placeholder * Reviews by Product: load and render reviews with JS (https://github.com/woocommerce/woocommerce-blocks/pull/696) * Reviews by Product: load and render reviews with JS * Add dangerouslySetInnerHTML explanatory comment * Fix wrong dependency source * Debounce getReviews call when creating the Reviews by Product block * Rename 'Reviewer Picture' with 'Avatar' (https://github.com/woocommerce/woocommerce-blocks/pull/702) * Lint errors * Replace stringify query with addQueryArgs (https://github.com/woocommerce/woocommerce-blocks/pull/707) * Add reviews endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/705) * Prevent state updates on unmounted components (https://github.com/woocommerce/woocommerce-blocks/pull/715) * Add Order by and Load more controls in Reviews by Product frontend (https://github.com/woocommerce/woocommerce-blocks/pull/716) * Export IconReviewsByProduct (https://github.com/woocommerce/woocommerce-blocks/pull/721) * Fix Reviews by Product layout in IE11 (https://github.com/woocommerce/woocommerce-blocks/pull/723) * Set minimum to per page input field (https://github.com/woocommerce/woocommerce-blocks/pull/731) * Hide avatars in Reviews by Products if 'show_avatars' settings is false (https://github.com/woocommerce/woocommerce-blocks/pull/730) * Blocks API - Reviews endpoint with rating sort and category filtering (https://github.com/woocommerce/woocommerce-blocks/pull/726) * Move file to correct location * We are only using the reviews endpoint not revioews/id * Remove sensistive data and make endpoint public * Allow guest access to approved reviews * Add support for rating sorting * category filtering * update arg name * fix category query * Reviews by Product: add placeholders when loading reviews (https://github.com/woocommerce/woocommerce-blocks/pull/732) * Add placeholder animation (https://github.com/woocommerce/woocommerce-blocks/pull/733) * Hook up Reviews by Product 'Order by' with endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/736) * Hook up Reviews by Product 'Order by' with endpoint * Use onChange instead of onBlur in select control * Reviews by Product: Hide ratings if they are disabled in settings (https://github.com/woocommerce/woocommerce-blocks/pull/740) * Hide ratings in Reviews by Product if disabled in settings * Hide order by select if ratings are disabled * Reviews by Product cleanup (https://github.com/woocommerce/woocommerce-blocks/pull/773) * Fix wrong method name * Reduce the number of dependencies used in Reviews by Product (https://github.com/woocommerce/woocommerce-blocks/pull/774) * Reduce the number of dependencies used in Reviews by Product * Use 'withComponentId' HOC * Remove debounce * Fix wrong proptype * Get rid of JS warning * Load render from react-dom * Add formatted_date_created item schema (https://github.com/woocommerce/woocommerce-blocks/pull/788) * Fix import of WithComponentID * Add new settings to Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/787) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Reviews by Product: prevent importing all HOCs and import only withComponentId (https://github.com/woocommerce/woocommerce-blocks/pull/811) * Reviews by product: Update review styling and content (https://github.com/woocommerce/woocommerce-blocks/pull/806) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Review design/layout * verified icons * Read more component * remove comment * expanded -> isExpanded * Localise and change default elipses * Simplify ReadMore * Support children rather than passing content * remove outside * remove list style * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * merge set state * Add missing parameter doc in renderReview (https://github.com/woocommerce/woocommerce-blocks/pull/820) * Fix Reviews by Product order by select not honoring default setting (https://github.com/woocommerce/woocommerce-blocks/pull/818) * Read more component - change how clamped content is shown (https://github.com/woocommerce/woocommerce-blocks/pull/821) * Pass review as components * Build summary from content and track both * Toggle display after inital load * remove unused variable * remove componentDidUpdate * Simplify clampLines * Put back componentDidUpdate, but store final summary in state * clampEnabled * Call clampLines from componentDidMount (https://github.com/woocommerce/woocommerce-blocks/pull/826) * truncate html tests * implement trimHTML and pass test * Feedback * test short content * Use withProduct HOC in ReviewsByProductEditor (https://github.com/woocommerce/woocommerce-blocks/pull/828) * Use withProduct HOC * Convert ReviewsByProductEditor to a functional component * Add loading and error states * Prevent loading screen appearing when changing products * Reviews: only save wrapper element to post (https://github.com/woocommerce/woocommerce-blocks/pull/830) * Fix bundlesize config not picking frontend files (https://github.com/woocommerce/woocommerce-blocks/pull/840) * Reviews by Product: split 'block.js' into smaller chunks (https://github.com/woocommerce/woocommerce-blocks/pull/841) * Split 'block.js' into smaller chunks * Move frontend blocks to their specific folder * Order imports * Typo * Add frontend components proptypes * Fix indentation * Call 'this.getDefaultArgs' directly inside 'getReviews' * Move access to wc_product_block_data to the top of the file * Rename 'frontend' folder to 'base' * Rename base components and move styles to their folder * Fix Reviews by Product using rating count instead of review count (https://github.com/woocommerce/woocommerce-blocks/pull/860) * Improve Reviews by Product accessibility (https://github.com/woocommerce/woocommerce-blocks/pull/861) * Improve Reviews by Product accessibility * Make 'onClick' prop not required in <LoadMoreButton> * Wrap Reviews by Product editor block with <Disabled> * Reviews: fix reviews without rating not appearing when sorting by rating (https://github.com/woocommerce/woocommerce-blocks/pull/863)
2019-08-15 14:55:57 +00:00
*/
expandedProduct: PropTypes.number,
/**
* Callback to search products by their name.
*/
onSearch: PropTypes.func,
Create Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/658) * Create Reviews by Product block * Honor Content settings * Fix wrong className * Load new wc-packages file * Add reviews-by-product JS files to webpack config * Cleanup * Remove error messages * Add Reviews by Product icon * Update sort options * Allow additional CSS classes attribute * Refactor block styles * Fix wrong default for reviews_orderby * Don't enforce CSS chunks * Add reviews count to Reviews by Product controls (https://github.com/woocommerce/woocommerce-blocks/pull/671) * Add label to Reviews by Product controls count (https://github.com/woocommerce/woocommerce-blocks/pull/677) * Add reviews count to Reviews by Product controls * Add label to Reviews by Product controls count * Add label to Reviews by Product controls count * Update components package * Review ordering and placeholders (https://github.com/woocommerce/woocommerce-blocks/pull/688) * Add support for comment_count ordering and add to productcontrol * Add a placeholder if rating count is 0 * Update assets/js/components/utils/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/blocks/reviews-by-product/block.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * grammar * Fix some linting errors and warnings (https://github.com/woocommerce/woocommerce-blocks/pull/693) * Create Reviews by Product block placeholder (https://github.com/woocommerce/woocommerce-blocks/pull/691) * Create Reviews by Product block placeholder * Reviews by Product: load and render reviews with JS (https://github.com/woocommerce/woocommerce-blocks/pull/696) * Reviews by Product: load and render reviews with JS * Add dangerouslySetInnerHTML explanatory comment * Fix wrong dependency source * Debounce getReviews call when creating the Reviews by Product block * Rename 'Reviewer Picture' with 'Avatar' (https://github.com/woocommerce/woocommerce-blocks/pull/702) * Lint errors * Replace stringify query with addQueryArgs (https://github.com/woocommerce/woocommerce-blocks/pull/707) * Add reviews endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/705) * Prevent state updates on unmounted components (https://github.com/woocommerce/woocommerce-blocks/pull/715) * Add Order by and Load more controls in Reviews by Product frontend (https://github.com/woocommerce/woocommerce-blocks/pull/716) * Export IconReviewsByProduct (https://github.com/woocommerce/woocommerce-blocks/pull/721) * Fix Reviews by Product layout in IE11 (https://github.com/woocommerce/woocommerce-blocks/pull/723) * Set minimum to per page input field (https://github.com/woocommerce/woocommerce-blocks/pull/731) * Hide avatars in Reviews by Products if 'show_avatars' settings is false (https://github.com/woocommerce/woocommerce-blocks/pull/730) * Blocks API - Reviews endpoint with rating sort and category filtering (https://github.com/woocommerce/woocommerce-blocks/pull/726) * Move file to correct location * We are only using the reviews endpoint not revioews/id * Remove sensistive data and make endpoint public * Allow guest access to approved reviews * Add support for rating sorting * category filtering * update arg name * fix category query * Reviews by Product: add placeholders when loading reviews (https://github.com/woocommerce/woocommerce-blocks/pull/732) * Add placeholder animation (https://github.com/woocommerce/woocommerce-blocks/pull/733) * Hook up Reviews by Product 'Order by' with endpoint (https://github.com/woocommerce/woocommerce-blocks/pull/736) * Hook up Reviews by Product 'Order by' with endpoint * Use onChange instead of onBlur in select control * Reviews by Product: Hide ratings if they are disabled in settings (https://github.com/woocommerce/woocommerce-blocks/pull/740) * Hide ratings in Reviews by Product if disabled in settings * Hide order by select if ratings are disabled * Reviews by Product cleanup (https://github.com/woocommerce/woocommerce-blocks/pull/773) * Fix wrong method name * Reduce the number of dependencies used in Reviews by Product (https://github.com/woocommerce/woocommerce-blocks/pull/774) * Reduce the number of dependencies used in Reviews by Product * Use 'withComponentId' HOC * Remove debounce * Fix wrong proptype * Get rid of JS warning * Load render from react-dom * Add formatted_date_created item schema (https://github.com/woocommerce/woocommerce-blocks/pull/788) * Fix import of WithComponentID * Add new settings to Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/787) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Reviews by Product: prevent importing all HOCs and import only withComponentId (https://github.com/woocommerce/woocommerce-blocks/pull/811) * Reviews by product: Update review styling and content (https://github.com/woocommerce/woocommerce-blocks/pull/806) * Add new settings to Reviews by Product block * Remove helpText and add notices * Use RangeControl for numeric settings * Prevent fetching new reviews if all were already fetched * Enable product image in reviews * Remove unnecessary catch * Refactor getReviews * Move getReviews back to block's code * Cleanup * Fix wrong order in editor * Hide 'Load More Reviews' if showLoadMore is false * Move getReviews to utils.js * Add @woocommerce/navigation to package.json * Make notices non-dismissable * Review design/layout * verified icons * Read more component * remove comment * expanded -> isExpanded * Localise and change default elipses * Simplify ReadMore * Support children rather than passing content * remove outside * remove list style * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * Update assets/js/components/read-more/index.js Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com> * merge set state * Add missing parameter doc in renderReview (https://github.com/woocommerce/woocommerce-blocks/pull/820) * Fix Reviews by Product order by select not honoring default setting (https://github.com/woocommerce/woocommerce-blocks/pull/818) * Read more component - change how clamped content is shown (https://github.com/woocommerce/woocommerce-blocks/pull/821) * Pass review as components * Build summary from content and track both * Toggle display after inital load * remove unused variable * remove componentDidUpdate * Simplify clampLines * Put back componentDidUpdate, but store final summary in state * clampEnabled * Call clampLines from componentDidMount (https://github.com/woocommerce/woocommerce-blocks/pull/826) * truncate html tests * implement trimHTML and pass test * Feedback * test short content * Use withProduct HOC in ReviewsByProductEditor (https://github.com/woocommerce/woocommerce-blocks/pull/828) * Use withProduct HOC * Convert ReviewsByProductEditor to a functional component * Add loading and error states * Prevent loading screen appearing when changing products * Reviews: only save wrapper element to post (https://github.com/woocommerce/woocommerce-blocks/pull/830) * Fix bundlesize config not picking frontend files (https://github.com/woocommerce/woocommerce-blocks/pull/840) * Reviews by Product: split 'block.js' into smaller chunks (https://github.com/woocommerce/woocommerce-blocks/pull/841) * Split 'block.js' into smaller chunks * Move frontend blocks to their specific folder * Order imports * Typo * Add frontend components proptypes * Fix indentation * Call 'this.getDefaultArgs' directly inside 'getReviews' * Move access to wc_product_block_data to the top of the file * Rename 'frontend' folder to 'base' * Rename base components and move styles to their folder * Fix Reviews by Product using rating count instead of review count (https://github.com/woocommerce/woocommerce-blocks/pull/860) * Improve Reviews by Product accessibility (https://github.com/woocommerce/woocommerce-blocks/pull/861) * Improve Reviews by Product accessibility * Make 'onClick' prop not required in <LoadMoreButton> * Wrap Reviews by Product editor block with <Disabled> * Reviews: fix reviews without rating not appearing when sorting by rating (https://github.com/woocommerce/woocommerce-blocks/pull/863)
2019-08-15 14:55:57 +00:00
/**
* Query args to pass to getProducts.
*/
queryArgs: PropTypes.object,
/**
* Callback to render each item in the selection list, allows any custom object-type rendering.
*/
renderItem: PropTypes.func,
/**
* The ID of the currently selected item (product or variation).
*/
selected: PropTypes.arrayOf( PropTypes.number ),
/**
* Whether to show variations in the list of items available.
*/
showVariations: PropTypes.bool,
};
ProductControl.defaultProps = {
expandedProduct: null,
selected: [],
showVariations: false,
};
export default withTransformSingleSelectToMultipleSelect(
withSearchedProducts( withProductVariations( ProductControl ) )
);