framework/js/old/common/components/Select.js

34 lines
1.0 KiB
JavaScript
Raw Normal View History

import Component from '../Component';
import icon from '../helpers/icon';
/**
* The `Select` component displays a <select> input, surrounded with some extra
* elements for styling. It accepts the following props:
*
* - `options` A map of option values to labels.
* - `onchange` A callback to run when the selected value is changed.
* - `value` The value of the selected option.
* - `disabled` Disabled state for the input.
*/
export default class Select extends Component {
view() {
2020-04-17 17:57:55 +08:00
const { options, onchange, value, disabled } = this.props;
return (
<span className="Select">
2020-04-17 17:57:55 +08:00
<select
className="Select-input FormControl"
onchange={onchange ? m.withAttr('value', onchange.bind(this)) : undefined}
value={value}
disabled={disabled}
>
{Object.keys(options).map((key) => (
<option value={key}>{options[key]}</option>
))}
</select>
2020-04-17 17:57:55 +08:00
{icon('fas fa-sort', { className: 'Select-caret' })}
</span>
);
}
}