From 78f8a750c8ac86598b53e1e0797af25781ea23f9 Mon Sep 17 00:00:00 2001 From: ichim-david Date: Mon, 18 Mar 2024 13:45:48 +0200 Subject: [PATCH] (Fix): Sorting Order and Sorting On are not working in Search Block edit mode (#5262) (#5878) Co-authored-by: dobri1408 <50819975+dobri1408@users.noreply.github.com> Co-authored-by: Claudia Ifrim Co-authored-by: Alin Voinea --- cypress/tests/core/blocks/blocks-search.js | 61 +++++++++++++++++++ packages/volto/news/5262.bugfix | 1 + .../manage/Blocks/Search/SearchBlockEdit.jsx | 10 ++- .../manage/Blocks/Search/hocs/withSearch.jsx | 4 +- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 packages/volto/news/5262.bugfix diff --git a/cypress/tests/core/blocks/blocks-search.js b/cypress/tests/core/blocks/blocks-search.js index 9574b1b6d2..3867349870 100644 --- a/cypress/tests/core/blocks/blocks-search.js +++ b/cypress/tests/core/blocks/blocks-search.js @@ -497,4 +497,65 @@ describe('Search Block Tests', () => { `Search results: ${results_number}`, ); }); + + it('Search block - test on edit sort on and sort order', () => { + cy.visit('/'); + cy.get('#toolbar-add > .icon').click(); + cy.get('#toolbar-add-document').click(); + cy.getSlateTitle().focus().click().type('My Search Page'); + + // Add Search listing block + cy.addNewBlock('search'); + + // Add search query criteria + cy.get('#default-query-0-query .react-select__value-container').click(); + cy.get('#default-query-0-query .react-select__option') + .contains('Type') + .click(); + + cy.get('#default-query-0-query .fields:first-of-type > .field').click(); + cy.get( + '#default-query-0-query .fields:first-of-type > .field .react-select__option', + ) + .contains('Page') + .click(); + + cy.get('#default-query-0-query .fields:first-of-type > .field').click(); + cy.get( + '#default-query-0-query .fields:first-of-type > .field .react-select__option', + ) + .contains('Folder') + .click(); + + cy.get('#default-query-0-query .fields:first-of-type > .field').click(); + cy.get( + '#default-query-0-query .fields:first-of-type > .field .react-select__option', + ) + .contains('Event') + .click(); + + // uncheck showSearchButton + cy.get('label[for=field-showSearchButton]').click(); + cy.get('.search-wrapper .ui.button').should('contain', 'Search'); + // reverse order + cy.get('label[for=field-sort_order_boolean-2-query]').click(); + //check if the sorting order is working + cy.get('.listing-item').first().contains('My Event'); + cy.get('#select-listingblock-sort-on').click(); + cy.get('.react-select__menu .react-select__group') + .first() + .children() + .first() + .next() + .children() + .first() + .next() + .click(); + cy.wait(5000); + + cy.get('.listing-item').first().contains('My page'); + //save page + cy.get('#toolbar-save > .icon').click(); + cy.wait(500); + }); }); diff --git a/packages/volto/news/5262.bugfix b/packages/volto/news/5262.bugfix new file mode 100644 index 0000000000..8648d6af38 --- /dev/null +++ b/packages/volto/news/5262.bugfix @@ -0,0 +1 @@ +(fix): make search block sort and facets work on edit @dobri1408 \ No newline at end of file diff --git a/src/components/manage/Blocks/Search/SearchBlockEdit.jsx b/src/components/manage/Blocks/Search/SearchBlockEdit.jsx index b0d7ec2ed5..2fbe1ce4c0 100644 --- a/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +++ b/src/components/manage/Blocks/Search/SearchBlockEdit.jsx @@ -63,9 +63,15 @@ const SearchBlockEdit = (props) => { const { query = {} } = data || {}; // We don't need deep compare here, as this is just json serializable data. const deepQuery = JSON.stringify(query); + useEffect(() => { - onTriggerSearch(); - }, [deepQuery, onTriggerSearch]); + onTriggerSearch( + '', + data?.facets, + data?.query?.sort_on, + data?.query?.sort_order, + ); + }, [deepQuery, onTriggerSearch, data]); return ( <> diff --git a/src/components/manage/Blocks/Search/hocs/withSearch.jsx b/src/components/manage/Blocks/Search/hocs/withSearch.jsx index d06c5bc7ba..961df207b5 100644 --- a/src/components/manage/Blocks/Search/hocs/withSearch.jsx +++ b/src/components/manage/Blocks/Search/hocs/withSearch.jsx @@ -404,12 +404,12 @@ const withSearch = (options) => (WrappedComponent) => { query: data.query || {}, facets: toSearchFacets || facets, searchText: toSearchText ? toSearchText.trim() : '', - sortOn: toSortOn || sortOn, + sortOn: toSortOn || undefined, sortOrder: toSortOrder || sortOrder, facetSettings, }); if (toSearchFacets) setFacets(toSearchFacets); - if (toSortOn) setSortOn(toSortOn); + if (toSortOn) setSortOn(toSortOn || undefined); if (toSortOrder) setSortOrder(toSortOrder); setSearchData(newSearchData); setLocationSearchData(getSearchFields(newSearchData));