diff --git a/dev/app.js b/dev/app.js index b512d803b0..3fab967ef9 100644 --- a/dev/app.js +++ b/dev/app.js @@ -25,7 +25,7 @@ search.addWidget( ); search.addWidget( - instantsearch.widgets.indexSelector({ + instantsearch.widgets.sortBySelector({ container: '#index-selector', indices: [ {name: 'instant_search', label: 'Most relevant'}, diff --git a/docs/_includes/widget-jsdoc/indexSelector.md b/docs/_includes/widget-jsdoc/sortBySelector.md similarity index 100% rename from docs/_includes/widget-jsdoc/indexSelector.md rename to docs/_includes/widget-jsdoc/sortBySelector.md diff --git a/docs/documentation.md b/docs/documentation.md index 1df1ee7094..bc2dfd17aa 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -947,19 +947,19 @@ instantsearch.widgets.clearAll(options); ### Sort -#### indexSelector +#### sortBySelector
-This widget lets you select which index you want to use for the search. Since Algolia uses slave indices to deal with the different sort orders of a single dataset, this widget is particularly useful to switch between those sort orders. +This widget lets you change the sort order by letting you select which index you want to use for the search. That's the right way to go to switch between your slave indices. {:.description}
{% highlight javascript %} search.addWidget( - instantsearch.widgets.indexSelector({ + instantsearch.widgets.sortBySelector({ container: '#index-selector-container', indices: [ {name: 'instant_search', label: 'Most relevant'}, @@ -976,9 +976,9 @@ search.addWidget(
You need to create slave indices for every sort order you need, and diff --git a/docs/examples/amazon/search.js b/docs/examples/amazon/search.js index 9c6452e8b9..90c2c4a942 100644 --- a/docs/examples/amazon/search.js +++ b/docs/examples/amazon/search.js @@ -164,7 +164,7 @@ search.addWidget( ); search.addWidget( - instantsearch.widgets.indexSelector({ + instantsearch.widgets.sortBySelector({ container: '#index-selector', indices: [ {name: 'ikea', label: 'Featured'}, diff --git a/lib/main.js b/lib/main.js index 2ee2edc84c..24e78eab2a 100644 --- a/lib/main.js +++ b/lib/main.js @@ -12,7 +12,6 @@ instantsearch.widgets = { hierarchicalMenu: require('../widgets/hierarchical-menu/hierarchical-menu.js'), hits: require('../widgets/hits/hits'), hitsPerPageSelector: require('../widgets/hits-per-page-selector/hits-per-page-selector'), - indexSelector: require('../widgets/index-selector/index-selector'), menu: require('../widgets/menu/menu.js'), refinementList: require('../widgets/refinement-list/refinement-list.js'), numericRefinementList: require('../widgets/numeric-refinement-list/numeric-refinement-list.js'), @@ -21,6 +20,7 @@ instantsearch.widgets = { priceRanges: require('../widgets/price-ranges/price-ranges.js'), searchBox: require('../widgets/search-box/search-box'), rangeSlider: require('../widgets/range-slider/range-slider'), + sortBySelector: require('../widgets/sort-by-selector/sort-by-selector'), starRating: require('../widgets/star-rating/star-rating'), stats: require('../widgets/stats/stats'), toggle: require('../widgets/toggle/toggle') diff --git a/widgets/menu/__tests__/menu-test.js b/widgets/menu/__tests__/menu-test.js index b042f5a632..673656b215 100644 --- a/widgets/menu/__tests__/menu-test.js +++ b/widgets/menu/__tests__/menu-test.js @@ -5,7 +5,7 @@ import jsdom from 'mocha-jsdom'; import menu from '../menu'; -describe('indexSelector call', () => { +describe('menu', () => { jsdom({useEach: true}); it('throws an exception when no attributeName', () => { diff --git a/widgets/index-selector/__tests__/index-selector-test.js b/widgets/sort-by-selector/__tests__/sort-by-selector-test.js similarity index 83% rename from widgets/index-selector/__tests__/index-selector-test.js rename to widgets/sort-by-selector/__tests__/sort-by-selector-test.js index b7e296c14e..717bb00fab 100644 --- a/widgets/index-selector/__tests__/index-selector-test.js +++ b/widgets/sort-by-selector/__tests__/sort-by-selector-test.js @@ -8,24 +8,24 @@ import jsdom from 'mocha-jsdom'; import expectJSX from 'expect-jsx'; expect.extend(expectJSX); -import indexSelector from '../index-selector'; +import sortBySelector from '../sort-by-selector'; import Selector from '../../../components/Selector'; -describe('indexSelector call', () => { +describe('sortBySelector call', () => { jsdom({useEach: true}); it('throws an exception when no options', () => { const container = document.createElement('div'); - expect(indexSelector.bind(null, {container})).toThrow(/^Usage/); + expect(sortBySelector.bind(null, {container})).toThrow(/^Usage/); }); it('throws an exception when no indices', () => { const indices = []; - expect(indexSelector.bind(null, {indices})).toThrow(/^Usage/); + expect(sortBySelector.bind(null, {indices})).toThrow(/^Usage/); }); }); -describe('indexSelector()', () => { +describe('sortBySelector()', () => { jsdom({useEach: true}); let ReactDOM; @@ -42,8 +42,8 @@ describe('indexSelector()', () => { autoHideContainer = sinon.stub().returns(Selector); ReactDOM = {render: sinon.spy()}; - indexSelector.__Rewire__('ReactDOM', ReactDOM); - indexSelector.__Rewire__('autoHideContainerHOC', autoHideContainer); + sortBySelector.__Rewire__('ReactDOM', ReactDOM); + sortBySelector.__Rewire__('autoHideContainerHOC', autoHideContainer); container = document.createElement('div'); indices = [ @@ -54,7 +54,7 @@ describe('indexSelector()', () => { root: 'custom-root', item: 'custom-item' }; - widget = indexSelector({container, indices, cssClasses}); + widget = sortBySelector({container, indices, cssClasses}); helper = { getIndex: sinon.stub().returns('index-a'), setIndex: sinon.spy(), @@ -115,7 +115,7 @@ describe('indexSelector()', () => { }); afterEach(() => { - indexSelector.__ResetDependency__('ReactDOM'); - indexSelector.__ResetDependency__('autoHideContainerHOC'); + sortBySelector.__ResetDependency__('ReactDOM'); + sortBySelector.__ResetDependency__('autoHideContainerHOC'); }); }); diff --git a/widgets/index-selector/index-selector.js b/widgets/sort-by-selector/sort-by-selector.js similarity index 92% rename from widgets/index-selector/index-selector.js rename to widgets/sort-by-selector/sort-by-selector.js index 4fdb9fcce2..08e2404423 100644 --- a/widgets/index-selector/index-selector.js +++ b/widgets/sort-by-selector/sort-by-selector.js @@ -10,7 +10,7 @@ let autoHideContainerHOC = require('../../decorators/autoHideContainer'); /** * Instantiate a dropdown element to choose the current targeted index - * @function indexSelector + * @function sortBySelector * @param {string|DOMElement} options.container CSS Selector or DOMElement to insert the widget * @param {Array} options.indices Array of objects defining the different indices to choose from. * @param {string} options.indices[0].name Name of the index to target @@ -22,13 +22,13 @@ let autoHideContainerHOC = require('../../decorators/autoHideContainer'); * @return {Object} */ const usage = `Usage: -indexSelector({ +sortBySelector({ container, indices, [cssClasses.{root,item}={}], [autoHideContainer=false] })`; -function indexSelector({ +function sortBySelector({ container, indices, cssClasses: userCssClasses = {}, @@ -53,7 +53,7 @@ function indexSelector({ let currentIndex = helper.getIndex(); let isIndexInList = findIndex(indices, {name: currentIndex}) !== -1; if (!isIndexInList) { - throw new Error('[indexSelector]: Index ' + currentIndex + ' not present in `indices`'); + throw new Error('[sortBySelector]: Index ' + currentIndex + ' not present in `indices`'); } }, @@ -85,4 +85,4 @@ function indexSelector({ }; } -module.exports = indexSelector; +module.exports = sortBySelector;