Skip to content

Commit 3f64bef

Browse files
author
vvo
committed
fix(api): rename hideContainerWhenNoResults to autoHideContainer
+ updated jsdoc + updated some widgets algorithm to hide/show (numeric widgets) + had to rename the decorators require to $decoratorHOC (High Order Component, the pattern we use). fixes #407 BREAKING CHANGE: use autoHideContainer instead of hideContainerWhenNoResults
1 parent 33db1b3 commit 3f64bef

31 files changed

+137
-132
lines changed

docs/_includes/widget-jsdoc/hierarchicalMenu.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
| <span class='attr-optional'>`options.templates.item`</span> | Item template |
2020
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template (root level only) |
2121
| <span class='attr-optional'>`options.transformData`</span> | Method to change the object passed to the item template |
22-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
22+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when there are no items in the menu |
2323

2424
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/hitsPerPageSelector.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
| <span class='attr-optional'>`options.cssClasses`</span> | CSS classes to be added |
88
| <span class='attr-optional'>`options.cssClasses.root`</span> | CSS classes added to the parent <select> |
99
| <span class='attr-optional'>`options.cssClasses.item`</span> | CSS classes added to each <option> |
10-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when no results match |
10+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no results match |
1111

1212
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/indexSelector.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
| <span class='attr-optional'>`options.cssClasses`</span> | CSS classes to be added |
88
| <span class='attr-optional'>`options.cssClasses.root`</span> | CSS classes added to the parent <select> |
99
| <span class='attr-optional'>`options.cssClasses.item`</span> | CSS classes added to each <option> |
10-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when no results match |
10+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no results match |
1111

1212
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/menu.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
| <span class='attr-optional'>`options.templates.item`</span> | Item template, provided with `name`, `count`, `isRefined` |
2020
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template |
2121
| <span class='attr-optional'>`options.transformData`</span> | Method to change the object passed to the item template |
22-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
22+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when there are no items in the menu |
2323

2424
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/numericRefinementList.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
| <span class='attr-optional'>`options.templates.item`</span> | Item template, provided with `name`, `count`, `isRefined` |
1818
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template |
1919
| <span class='attr-optional'>`options.transformData`</span> | Function to change the object passed to the item template |
20-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
20+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no results match |
2121

2222
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/pagination.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@
2020
| <span class='attr-optional'>`options.padding`</span> | The number of pages to display on each side of the current page |
2121
| <span class='attr-optional'>`options.scrollTo`</span> | Where to scroll after a click, set to `false` to disable |
2222
| <span class='attr-optional'>`options.showFirstLast`</span> | Define if the First and Last links should be displayed |
23-
| <span class='attr-optional'>`options.hideContainerWhenNoResults`</span> | Hide the container when no results match |
23+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no results match |
2424

2525
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/priceRanges.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@
2323
| <span class='attr-optional'>`options.labels.currency`</span> | Currency label |
2424
| <span class='attr-optional'>`options.labels.separator`</span> | Separator labe, between min and max |
2525
| <span class='attr-optional'>`options.labels.button`</span> | Button label |
26-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when no results match |
26+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no refinements available |
2727

2828
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/rangeSlider.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
| <span class='attr-optional'>`options.cssClasses`</span> | CSS classes to add to the wrapping elements: root, body |
1010
| <span class='attr-optional'>`options.cssClasses.root`</span> | CSS class to add to the root element |
1111
| <span class='attr-optional'>`options.cssClasses.body`</span> | CSS class to add to the body element |
12-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when no results match |
12+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no refinements available |
1313

1414
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/refinementList.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
| <span class='attr-optional'>`options.templates.item`</span> | Item template, provided with `name`, `count`, `isRefined` |
2222
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template |
2323
| <span class='attr-optional'>`options.transformData`</span> | Function to change the object passed to the item template |
24-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
24+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no items in the refinement list |
2525

2626
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/searchBox.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
| <span class='attr-optional'>`poweredBy`</span> | Show a powered by Algolia link below the input |
1010
| <span class='attr-optional'>`wrapInput`</span> | Wrap the input in a div.ais-search-box |
1111
| <span class='attr-optional'>`autofocus`</span> | autofocus on the input |
12-
| <span class='attr-optional'>`searchOnEnterKeyPressOnly`</span> | If false, trigger the search once <Enter> is pressed only |
12+
| <span class='attr-optional'>`searchOnEnterKeyPressOnly`</span> | If set, trigger the search once <Enter> is pressed only |
1313

1414
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/stats.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
| <span class='attr-optional'>`options.templates.body`</span> | Body template |
1313
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template |
1414
| <span class='attr-optional'>`options.transformData`</span> | Function to change the object passed to the `body` template |
15-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
15+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when no results match |
1616

1717
<p class="attr-legend">* <span>Required</span></p>

docs/_includes/widget-jsdoc/toggle.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
| <span class='attr-optional'>`options.templates.item`</span> | Item template |
2020
| <span class='attr-optional'>`options.templates.footer`</span> | Footer template |
2121
| <span class='attr-optional'>`options.transformData`</span> | Function to change the object passed to the item template |
22-
| <span class='attr-optional'>`hideContainerWhenNoResults`</span> | Hide the container when there's no results |
22+
| <span class='attr-optional'>`options.autoHideContainer`</span> | Hide the container when there's no results |
2323

2424
<p class="attr-legend">* <span>Required</span></p>

widgets/hierarchical-menu/hierarchical-menu.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ let ReactDOM = require('react-dom');
44
let utils = require('../../lib/utils.js');
55
let bem = utils.bemHelper('ais-hierarchical-menu');
66
let cx = require('classnames');
7-
let autoHideContainer = require('../../decorators/autoHideContainer');
8-
let headerFooter = require('../../decorators/headerFooter');
7+
let autoHideContainerHOC = require('../../decorators/autoHideContainer');
8+
let headerFooterHOC = require('../../decorators/headerFooter');
99

1010
let defaultTemplates = require('./defaultTemplates.js');
1111

@@ -31,7 +31,7 @@ let defaultTemplates = require('./defaultTemplates.js');
3131
* @param {string|Function} [options.templates.item] Item template
3232
* @param {string|Function} [options.templates.footer=''] Footer template (root level only)
3333
* @param {Function} [options.transformData] Method to change the object passed to the item template
34-
* @param {boolean} [hideContainerWhenNoResults=true] Hide the container when there's no results
34+
* @param {boolean} [options.autoHideContainer=true] Hide the container when there are no items in the menu
3535
* @return {Object}
3636
*/
3737
function hierarchicalMenu({
@@ -41,16 +41,16 @@ function hierarchicalMenu({
4141
limit = 100,
4242
sortBy = ['name:asc'],
4343
cssClasses: userCssClasses = {},
44-
hideContainerWhenNoResults = true,
44+
autoHideContainer = true,
4545
templates = defaultTemplates,
4646
transformData
4747
}) {
4848
let containerNode = utils.getContainerNode(container);
49-
let usage = 'Usage: hierarchicalMenu({container, attributes, [separator, sortBy, limit, cssClasses.{root, list, item}, templates.{header, item, footer}, transformData, hideContainerWhenNoResults]})';
49+
let usage = 'Usage: hierarchicalMenu({container, attributes, [separator, sortBy, limit, cssClasses.{root, list, item}, templates.{header, item, footer}, transformData, autoHideContainer]})';
5050

51-
let RefinementList = headerFooter(require('../../components/RefinementList/RefinementList.js'));
52-
if (hideContainerWhenNoResults === true) {
53-
RefinementList = autoHideContainer(RefinementList);
51+
let RefinementList = headerFooterHOC(require('../../components/RefinementList/RefinementList.js'));
52+
if (autoHideContainer === true) {
53+
RefinementList = autoHideContainerHOC(RefinementList);
5454
}
5555

5656
if (!container || !attributes || !attributes.length) {
@@ -72,7 +72,7 @@ function hierarchicalMenu({
7272
}),
7373
render: function({results, helper, templatesConfig, createURL, state}) {
7474
let facetValues = getFacetValues(results, hierarchicalFacetName, sortBy);
75-
let hasNoRefinements = facetValues.length === 0;
75+
let hasNoFacetValues = facetValues.length === 0;
7676

7777
let templateProps = utils.prepareTemplateProps({
7878
transformData,
@@ -101,7 +101,7 @@ function hierarchicalMenu({
101101
facetNameKey="path"
102102
facetValues={facetValues}
103103
limit={limit}
104-
shouldAutoHideContainer={hasNoRefinements}
104+
shouldAutoHideContainer={hasNoFacetValues}
105105
templateProps={templateProps}
106106
toggleRefinement={toggleRefinement.bind(null, helper, hierarchicalFacetName)}
107107
/>,

widgets/hits-per-page-selector/__tests__/hits-per-page-selector-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ describe('hitsPerPageSelector()', () => {
3030
ReactDOM = {render: sinon.spy()};
3131

3232
hitsPerPageSelector.__Rewire__('ReactDOM', ReactDOM);
33-
hitsPerPageSelector.__Rewire__('autoHideContainer', autoHideContainer);
33+
hitsPerPageSelector.__Rewire__('autoHideContainerHOC', autoHideContainer);
3434
consoleLog = sinon.spy(window.console, 'log');
3535

3636
container = document.createElement('div');
@@ -113,7 +113,7 @@ describe('hitsPerPageSelector()', () => {
113113

114114
afterEach(() => {
115115
hitsPerPageSelector.__ResetDependency__('ReactDOM');
116-
hitsPerPageSelector.__ResetDependency__('autoHideContainer');
116+
hitsPerPageSelector.__ResetDependency__('autoHideContainerHOC');
117117
consoleLog.restore();
118118
});
119119
});

widgets/hits-per-page-selector/hits-per-page-selector.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let utils = require('../../lib/utils.js');
55
let any = require('lodash/collection/any');
66
let bem = utils.bemHelper('ais-hits-per-page-selector');
77
let cx = require('classnames');
8-
let autoHideContainer = require('../../decorators/autoHideContainer');
8+
let autoHideContainerHOC = require('../../decorators/autoHideContainer');
99

1010
/**
1111
* Instantiate a dropdown element to choose the number of hits to display per page
@@ -16,22 +16,22 @@ let autoHideContainer = require('../../decorators/autoHideContainer');
1616
* @param {Object} [options.cssClasses] CSS classes to be added
1717
* @param {string} [options.cssClasses.root] CSS classes added to the parent <select>
1818
* @param {string} [options.cssClasses.item] CSS classes added to each <option>
19-
* @param {boolean} [hideContainerWhenNoResults=false] Hide the container when no results match
19+
* @param {boolean} [options.autoHideContainer=false] Hide the container when no results match
2020
* @return {Object}
2121
*/
2222

2323
function hitsPerPageSelector({
2424
container,
2525
options,
2626
cssClasses: userCssClasses = {},
27-
hideContainerWhenNoResults = false
27+
autoHideContainer = false
2828
}) {
2929
let containerNode = utils.getContainerNode(container);
30-
let usage = 'Usage: hitsPerPageSelector({container, options[, cssClasses.{root,item}, hideContainerWhenNoResults]})';
30+
let usage = 'Usage: hitsPerPageSelector({container, options[, cssClasses.{root,item}, autoHideContainer]})';
3131

3232
let Selector = require('../../components/Selector');
33-
if (hideContainerWhenNoResults === true) {
34-
Selector = autoHideContainer(Selector);
33+
if (autoHideContainer === true) {
34+
Selector = autoHideContainerHOC(Selector);
3535
}
3636

3737
if (!container || !options) {

widgets/index-selector/__tests__/index-selector-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('indexSelector()', () => {
2929
ReactDOM = {render: sinon.spy()};
3030

3131
indexSelector.__Rewire__('ReactDOM', ReactDOM);
32-
indexSelector.__Rewire__('autoHideContainer', autoHideContainer);
32+
indexSelector.__Rewire__('autoHideContainerHOC', autoHideContainer);
3333

3434
container = document.createElement('div');
3535
indices = [
@@ -102,6 +102,6 @@ describe('indexSelector()', () => {
102102

103103
afterEach(() => {
104104
indexSelector.__ResetDependency__('ReactDOM');
105-
indexSelector.__ResetDependency__('autoHideContainer');
105+
indexSelector.__ResetDependency__('autoHideContainerHOC');
106106
});
107107
});

widgets/index-selector/index-selector.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ let map = require('lodash/collection/map');
66
let utils = require('../../lib/utils.js');
77
let bem = utils.bemHelper('ais-index-selector');
88
let cx = require('classnames');
9-
let autoHideContainer = require('../../decorators/autoHideContainer');
9+
let autoHideContainerHOC = require('../../decorators/autoHideContainer');
1010

1111
/**
1212
* Instantiate a dropdown element to choose the current targeted index
@@ -17,21 +17,21 @@ let autoHideContainer = require('../../decorators/autoHideContainer');
1717
* @param {Object} [options.cssClasses] CSS classes to be added
1818
* @param {string} [options.cssClasses.root] CSS classes added to the parent <select>
1919
* @param {string} [options.cssClasses.item] CSS classes added to each <option>
20-
* @param {boolean} [hideContainerWhenNoResults=false] Hide the container when no results match
20+
* @param {boolean} [options.autoHideContainer=false] Hide the container when no results match
2121
* @return {Object}
2222
*/
2323
function indexSelector({
2424
container,
2525
indices,
2626
cssClasses: userCssClasses = {},
27-
hideContainerWhenNoResults = false
27+
autoHideContainer = false
2828
}) {
2929
let containerNode = utils.getContainerNode(container);
30-
let usage = 'Usage: indexSelector({container, indices[, cssClasses.{root,item}, hideContainerWhenNoResults]})';
30+
let usage = 'Usage: indexSelector({container, indices[, cssClasses.{root,item}, autoHideContainer]})';
3131

3232
let Selector = require('../../components/Selector');
33-
if (hideContainerWhenNoResults === true) {
34-
Selector = autoHideContainer(Selector);
33+
if (autoHideContainer === true) {
34+
Selector = autoHideContainerHOC(Selector);
3535
}
3636

3737
if (!container || !indices) {

widgets/menu/menu.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ let ReactDOM = require('react-dom');
44
let utils = require('../../lib/utils.js');
55
let bem = utils.bemHelper('ais-menu');
66
let cx = require('classnames');
7-
let autoHideContainer = require('../../decorators/autoHideContainer');
8-
let headerFooter = require('../../decorators/headerFooter');
7+
let autoHideContainerHOC = require('../../decorators/autoHideContainer');
8+
let headerFooterHOC = require('../../decorators/headerFooter');
99

1010
let defaultTemplates = require('./defaultTemplates.js');
1111

@@ -30,7 +30,7 @@ let defaultTemplates = require('./defaultTemplates.js');
3030
* @param {string|Function} [options.templates.item] Item template, provided with `name`, `count`, `isRefined`
3131
* @param {string|Function} [options.templates.footer=''] Footer template
3232
* @param {Function} [options.transformData] Method to change the object passed to the item template
33-
* @param {boolean} [hideContainerWhenNoResults=true] Hide the container when there's no results
33+
* @param {boolean} [options.autoHideContainer=true] Hide the container when there are no items in the menu
3434
* @return {Object}
3535
*/
3636
function menu({
@@ -41,14 +41,14 @@ function menu({
4141
cssClasses: userCssClasses = {},
4242
templates = defaultTemplates,
4343
transformData,
44-
hideContainerWhenNoResults = true
44+
autoHideContainer = true
4545
}) {
4646
let containerNode = utils.getContainerNode(container);
47-
let usage = 'Usage: menu({container, facetName, [sortBy, limit, cssClasses.{root,list,item}, templates.{header,item,footer}, transformData, hideContainerWhenNoResults]})';
47+
let usage = 'Usage: menu({container, facetName, [sortBy, limit, cssClasses.{root,list,item}, templates.{header,item,footer}, transformData, autoHideContainer]})';
4848

49-
let RefinementList = headerFooter(require('../../components/RefinementList/RefinementList.js'));
50-
if (hideContainerWhenNoResults === true) {
51-
RefinementList = autoHideContainer(RefinementList);
49+
let RefinementList = headerFooterHOC(require('../../components/RefinementList/RefinementList.js'));
50+
if (autoHideContainer === true) {
51+
RefinementList = autoHideContainerHOC(RefinementList);
5252
}
5353

5454
if (!container || !facetName) {
@@ -68,7 +68,7 @@ function menu({
6868
}),
6969
render: function({results, helper, templatesConfig, state, createURL}) {
7070
let facetValues = getFacetValues(results, hierarchicalFacetName, sortBy, limit);
71-
let hasNoRefinements = facetValues.length === 0;
71+
let hasNoFacetValues = facetValues.length === 0;
7272

7373
let templateProps = utils.prepareTemplateProps({
7474
transformData,
@@ -94,7 +94,7 @@ function menu({
9494
createURL={(facetValue) => createURL(state.toggleRefinement(hierarchicalFacetName, facetValue))}
9595
cssClasses={cssClasses}
9696
facetValues={facetValues}
97-
shouldAutoHideContainer={hasNoRefinements}
97+
shouldAutoHideContainer={hasNoFacetValues}
9898
templateProps={templateProps}
9999
toggleRefinement={toggleRefinement.bind(null, helper, hierarchicalFacetName)}
100100
/>,

0 commit comments

Comments
 (0)