diff --git a/dev/app.js b/dev/app.js index 4a539a87c65..c23329aa3a6 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 9eb055f317c..9e61b5bfcb8 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -897,19 +897,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'}, @@ -926,9 +926,9 @@ search.addWidget(
You need to create slave indices for every sort order you need, and diff --git a/lib/main.js b/lib/main.js index e75432cf638..0fef137a384 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'), 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 b042f5a6326..673656b2150 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 b7e296c14e5..717bb00fabe 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 4fdb9fcce24..08e2404423f 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;