Skip to content

Commit ceed8ae

Browse files
committed
feat: Add htmlAttributes to indexSelector
1 parent 6d88dd0 commit ceed8ae

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

components/IndexSelector.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ class IndexSelector extends React.Component {
88
render() {
99
var currentIndex = this.props.currentIndex;
1010
var indices = this.props.indices;
11-
var cssClass = this.props.cssClass;
11+
var htmlAttributes = this.props.htmlAttributes;
12+
// React needs `className` in place of `class`
13+
if (htmlAttributes.class) {
14+
htmlAttributes.className = htmlAttributes.class;
15+
htmlAttributes.class = null;
16+
}
1217

1318
return (
1419
<select
15-
className={cssClass}
20+
{...htmlAttributes}
1621
onChange={this.handleChange.bind(this)}
1722
value={currentIndex}
1823
>
@@ -25,8 +30,8 @@ class IndexSelector extends React.Component {
2530
}
2631

2732
IndexSelector.propTypes = {
28-
cssClass: React.PropTypes.string,
2933
currentIndex: React.PropTypes.string,
34+
htmlAttributes: React.PropTypes.object,
3035
indices: React.PropTypes.array,
3136
setIndex: React.PropTypes.func
3237
};

example/app.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ search.addWidget(
3030
{'name': 'instant_search_price_asc', 'label': 'Lowest price'},
3131
{'name': 'instant_search_price_desc', 'label': 'Highest price'}
3232
],
33-
cssClass: 'form-control'
33+
htmlAttributes: {
34+
id: 'indexSelectorDropdown',
35+
class: 'form-control'
36+
}
3437
})
3538
);
3639

widgets/index-selector.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
var React = require('react');
2-
var cx = require('classnames');
32

43
var findIndex = require('lodash/array/findIndex');
54
var utils = require('../lib/widget-utils.js');
65

76
function indexSelector({
87
container = null,
9-
cssClass = null,
8+
htmlAttributes = {},
109
indices = null
1110
}) {
1211
var IndexSelector = require('../components/IndexSelector');
1312
var containerNode = utils.getContainerNode(container);
1413

15-
var usage = 'Usage: indexSelector({container, indices[, cssClass]})';
14+
var usage = 'Usage: indexSelector({container, indices[, htmlAttributes]})';
1615
if (container === null || indices === null) {
1716
throw new Error(usage);
1817
}
@@ -29,7 +28,7 @@ function indexSelector({
2928
render: function(results, state, helper) {
3029
React.render(
3130
<IndexSelector
32-
cssClass={cx(cssClass)}
31+
htmlAttributes={htmlAttributes}
3332
currentIndex={helper.getIndex()}
3433
indices={indices}
3534
setIndex={helper.setIndex.bind(helper)}

0 commit comments

Comments
 (0)