Skip to content

Commit a2221a8

Browse files
author
vvo
committed
fix: hits widget should allow hitsPerPage configuration, pagination should not
1 parent daa312d commit a2221a8

File tree

4 files changed

+44
-29
lines changed

4 files changed

+44
-29
lines changed

components/Hits/index.js

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,46 @@ var TemplateFn = require('../templates/Function');
77

88
class Hits extends React.Component {
99
render() {
10-
var results = this.props.results;
11-
if (!results || !results.hits || results.hits.length === 0) {
12-
return this.renderNoResults(results, this.props.noResultsTemplate);
10+
if (this.props.hits.length === 0) {
11+
return this.renderNoResults();
1312
}
14-
return this.renderWithResults(results.hits, this.props.hitTemplate);
13+
14+
return this.renderWithResults();
1515
}
16-
renderWithResults(hits, hitTemplate) {
17-
var TemplateComponent = isString(hitTemplate) ? Hogan : TemplateFn;
18-
var renderedHits = map(hits, function(hit) {
19-
return <TemplateComponent data={hit} key={hit.objectID} template={hitTemplate} />;
20-
});
21-
return <div className="search_list search_results_container row">{renderedHits}</div>;
16+
17+
renderWithResults() {
18+
var TemplateComponent = isString(this.props.hitTemplate) ? Hogan : TemplateFn;
19+
20+
var renderedHits = map(this.props.hits, function(hit) {
21+
return <TemplateComponent data={hit} key={hit.objectID} template={this.props.hitTemplate} />;
22+
}, this);
23+
24+
return <div>{renderedHits}</div>;
2225
}
23-
renderNoResults(results, noResultsTemplate) {
24-
var TemplateComponent = isString(noResultsTemplate) ? Hogan : TemplateFn;
26+
27+
renderNoResults() {
28+
var TemplateComponent = isString(this.props.noResultsTemplate) ? Hogan : TemplateFn;
29+
2530
return (
26-
<div className="search_list search_results_container row">
27-
<TemplateComponent data={results} template={noResultsTemplate} />
28-
</div>
31+
<div><TemplateComponent template={this.props.noResultsTemplate} /></div>
2932
);
3033
}
3134
}
3235

36+
Hits.propTypes = {
37+
hits: React.PropTypes.array,
38+
hitTemplate: React.PropTypes.oneOfType([
39+
React.PropTypes.string,
40+
React.PropTypes.func
41+
]).isRequired,
42+
noResultsTemplate: React.PropTypes.oneOfType([
43+
React.PropTypes.string,
44+
React.PropTypes.func
45+
]).isRequired
46+
};
47+
48+
Hits.defaultProps = {
49+
hits: []
50+
};
51+
3352
module.exports = Hits;

example/app.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ instant.addWidget(
2020
instantsearch.widgets.hits({
2121
container: '#hits',
2222
templates: {
23-
noResults: require('./templates/no-results.html'),
23+
empty: require('./templates/no-results.html'),
2424
hit: require('./templates/hit.html')
25-
}
25+
},
26+
hitsPerPage: 5
2627
})
2728
);
2829

2930
instant.addWidget(
3031
instantsearch.widgets.pagination({
3132
container: '#pagination',
3233
cssClass: 'pagination',
33-
hitsPerPage: 5,
3434
maxPages: 20
3535
})
3636
);

widgets/hits/index.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ var React = require('react');
22

33
var utils = require('../../lib/widgetUtils.js');
44

5-
function hits(params) {
5+
function hits({container=null, templates={}, hitsPerPage=20}) {
66
var Hits = require('../../components/Hits');
7-
var containerNode = utils.getContainerNode(params.container);
7+
var containerNode = utils.getContainerNode(container);
88

99
return {
10+
getConfiguration: () => ({hitsPerPage}),
1011
render: function(results, state, helper) {
1112
React.render(
12-
<Hits results={results}
13+
<Hits hits={results.hits}
1314
helper={helper}
14-
noResultsTemplate={params.templates.noResults}
15-
hitTemplate={params.templates.hit} />,
15+
noResultsTemplate={templates.empty}
16+
hitTemplate={templates.hit} />,
1617
containerNode
1718
);
1819
}

widgets/pagination/index.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,11 @@ var React = require('react');
22

33
var utils = require('../../lib/widgetUtils.js');
44

5-
function hits({container, cssClass, labels, hitsPerPage=20, maxPages}={}) {
5+
function hits({container, cssClass, labels, maxPages}={}) {
66
var Pagination = require('../../components/Pagination/');
77
var containerNode = utils.getContainerNode(container);
88

99
return {
10-
getConfiguration: function() {
11-
return {
12-
hitsPerPage
13-
};
14-
},
1510
render: function(results, state, helper) {
1611
var nbPages = maxPages !== undefined ? maxPages : results.nbPages;
1712

0 commit comments

Comments
 (0)