Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 1x 1x 1x 1x 1x 11x 11x 11x 11x 27x 27x 27x 11x 1x | import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { DropdownButton, MenuItem } from 'react-bootstrap'; import classnames from 'classnames'; import styles from './validation-selector.less'; /** * Validation selector component. */ class ValidationSelector extends Component { static displayName = 'ValidationSelector'; static propTypes = { id: PropTypes.string.isRequired, bsSize: PropTypes.string, options: PropTypes.object.isRequired, label: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), title: PropTypes.string, onSelect: PropTypes.func, disabled: PropTypes.bool }; static defaultProps = { label: '', title: 'Select an option', onSelect: () => {}, disabled: false }; static renderLabel(label, id) { return label ? <label className={classnames(styles['option-selector-label'])} htmlFor={id}>{label}</label> : null; } /** * Renders the Option Selector component. * * @returns {React.Component} The component. */ render() { const htmlLabel = this.constructor.renderLabel(this.props.label, this.props.id); const menuItems = []; for (const key in this.props.options) { Eif (this.props.options.hasOwnProperty(key)) { const label = this.props.options[key]; menuItems.push(<MenuItem key={key} eventKey={key} href="#">{label}</MenuItem>); } } return ( <div className={classnames(styles['option-selector'])}> {htmlLabel} <DropdownButton bsSize={this.props.bsSize} id={this.props.id} onSelect={this.props.onSelect} title={this.props.title} disabled={this.props.disabled}> {menuItems} </DropdownButton> </div> ); } } export default ValidationSelector; |