From 5d4292003696883f3d5f442b33473932498978a6 Mon Sep 17 00:00:00 2001 From: Tiago Noronha Date: Thu, 5 Apr 2018 18:22:44 +0100 Subject: [PATCH] Closes woocommerce/woocommerce-blocks#84: Adds order setting to individual product scope --- .../assets/js/products-block.js | 62 +++++++-------- .../assets/js/products-block.jsx | 76 +++++++++---------- 2 files changed, 65 insertions(+), 73 deletions(-) diff --git a/plugins/woocommerce-blocks/assets/js/products-block.js b/plugins/woocommerce-blocks/assets/js/products-block.js index fc0b4eedfab..45b58ea3f87 100644 --- a/plugins/woocommerce-blocks/assets/js/products-block.js +++ b/plugins/woocommerce-blocks/assets/js/products-block.js @@ -570,7 +570,6 @@ var ProductsBlockPreview = withAPIData(function (_ref) { if ('specific' === display) { query.include = display_setting.join(','); - query.orderby = 'include'; } else if ('category' === display) { query.category = display_setting.join(','); } else if ('attribute' === display && display_setting.length) { @@ -586,7 +585,7 @@ var ProductsBlockPreview = withAPIData(function (_ref) { } // @todo Add support for orderby by sales, rating, and price to the API. - if ('specific' !== display && ('title' === orderby || 'date' === orderby)) { + if ('title' === orderby || 'date' === orderby) { query.orderby = orderby; if ('title' === orderby) { @@ -753,37 +752,34 @@ registerBlockType('woocommerce/products', { }); } - // Orderby settings don't make sense for specific-selected products display. - var orderControl = null; - if ('specific' !== display) { - orderControl = wp.element.createElement(SelectControl, { - key: 'query-panel-select', - label: __('Order Products By'), - value: orderby, - options: [{ - label: __('Newness - newest first'), - value: 'date' - }, { - label: __('Price - low to high'), - value: 'price_asc' - }, { - label: __('Price - high to low'), - value: 'price_desc' - }, { - label: __('Rating - highest first'), - value: 'rating' - }, { - label: __('Sales - most first'), - value: 'popularity' - }, { - label: __('Title - alphabetical'), - value: 'title' - }], - onChange: function onChange(value) { - return setAttributes({ orderby: value }); - } - }); - } + // Order controls + var orderControl = wp.element.createElement(SelectControl, { + key: 'query-panel-select', + label: __('Order Products By'), + value: orderby, + options: [{ + label: __('Newness - newest first'), + value: 'date' + }, { + label: __('Price - low to high'), + value: 'price_asc' + }, { + label: __('Price - high to low'), + value: 'price_desc' + }, { + label: __('Rating - highest first'), + value: 'rating' + }, { + label: __('Sales - most first'), + value: 'popularity' + }, { + label: __('Title - alphabetical'), + value: 'title' + }], + onChange: function onChange(value) { + return setAttributes({ orderby: value }); + } + }); // Row settings don't make sense for specific-selected products display. var rowControl = null; diff --git a/plugins/woocommerce-blocks/assets/js/products-block.jsx b/plugins/woocommerce-blocks/assets/js/products-block.jsx index 869b5861ea2..70ac93aaf58 100644 --- a/plugins/woocommerce-blocks/assets/js/products-block.jsx +++ b/plugins/woocommerce-blocks/assets/js/products-block.jsx @@ -337,7 +337,6 @@ const ProductsBlockPreview = withAPIData( ( { attributes } ) => { if ( 'specific' === display ) { query.include = display_setting.join( ',' ); - query.orderby = 'include'; } else if ( 'category' === display ) { query.category = display_setting.join( ',' ); } else if ( 'attribute' === display && display_setting.length ) { @@ -353,7 +352,7 @@ const ProductsBlockPreview = withAPIData( ( { attributes } ) => { } // @todo Add support for orderby by sales, rating, and price to the API. - if ( 'specific' !== display && ( 'title' === orderby || 'date' === orderby ) ) { + if ( 'title' === orderby || 'date' === orderby ) { query.orderby = orderby; if ( 'title' === orderby ) { @@ -486,44 +485,41 @@ registerBlockType( 'woocommerce/products', { ); } - // Orderby settings don't make sense for specific-selected products display. - let orderControl = null; - if ( 'specific' !== display ) { - orderControl = ( - setAttributes( { orderby: value } ) } - /> - ); - } + // Order controls + let orderControl = ( + setAttributes( { orderby: value } ) } + /> + ); // Row settings don't make sense for specific-selected products display. let rowControl = null;