Skip to content

Commit

Permalink
doc(connectors): clearAll usage & checkRendering
Browse files Browse the repository at this point in the history
  • Loading branch information
iam4x committed Mar 23, 2017
1 parent cd75a17 commit e22fc3d
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions src/connectors/clear-all/connectClearAll.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
import {
checkRendering,
getRefinements,
clearRefinementsFromState,
clearRefinementsAndSearch,
} from '../../lib/utils.js';

const usage = `Usage:
var customClearAll = connectClearAll(function render(params, isFirstRendering) {
// params = {
// clearAll,
// hasRefinements,
// createURL,
// instantSearchInstance,
// }
});
search.addWidget(
customClearAll({
[excludeAttributes = []]
});
);
Full documentation available at https://community.algolia.com/instantsearch.js/connectors/connectClearAll.html
`;

const clearAll = ({helper, clearAttributes, hasRefinements}) => () => {
if (hasRefinements) {
clearRefinementsAndSearch(helper, clearAttributes);
Expand All @@ -26,20 +44,21 @@ const clearAll = ({helper, clearAttributes, hasRefinements}) => () => {
/**
* Connects a rendering with the clearAll business logic.
* @function connectClearAll
* @param {function(ClearAllRenderingOptions)} renderClearAll - function that renders the clear all widget
* @param {function(ClearAllRenderingOptions)} renderFn function that renders the clear all widget
* @return {function(CustomClearAllWidgetOptions)} - a widget factory for a clear all widget
*/
const connectClearAll = renderClearAll => ({
excludeAttributes = [],
} = {}) => ({
export default function connectClearAll(renderFn) {
checkRendering(renderFn, usage);

return ({excludeAttributes = []}) => ({
init({helper, instantSearchInstance, createURL}) {
const clearAttributes = getRefinements({}, helper.state)
.map(one => one.attributeName)
.filter(one => excludeAttributes.indexOf(one) === -1);
const hasRefinements = clearAttributes.length !== 0;
const preparedCreateURL = () => createURL(clearRefinementsFromState(helper.state));

renderClearAll({
renderFn({
clearAll: () => {},
hasRefinements,
createURL: preparedCreateURL,
Expand All @@ -54,13 +73,12 @@ const connectClearAll = renderClearAll => ({
const hasRefinements = clearAttributes.length !== 0;
const preparedCreateURL = () => createURL(clearRefinementsFromState(state));

renderClearAll({
renderFn({
clearAll: clearAll({helper, clearAttributes, hasRefinements}),
hasRefinements,
createURL: preparedCreateURL,
instantSearchInstance,
}, false);
},
});

export default connectClearAll;
}

0 comments on commit e22fc3d

Please sign in to comment.