@flexis/ui
Version:
Styleless React Components
45 lines • 3.98 kB
JavaScript
import { __decorate } from "tslib";
import React, { PureComponent, Children } from 'react';
import PropTypes from 'prop-types';
import { Bind, omit } from '../../helpers';
import { PrimitivePropType } from '../common/types';
import { style, classes } from './Select.st.css';
export * from './SelectOption';
let Select = /** @class */ (() => {
class Select extends PureComponent {
constructor() {
super(...arguments);
this.originalValues = [];
}
render() {
const { className, elementRef, defaultValue, value, children, ...props } = this.props;
this.originalValues = Children.toArray(children).map(({ props: { value, children } }) => (typeof value === 'undefined'
? children
: value));
return (<select ref={elementRef} {...omit(props, ['multiple'])} className={style(classes.root, className)} onChange={this.onChange} defaultValue={defaultValue} value={value}>
{children}
</select>);
}
onChange(event) {
const { onChange } = this.props;
if (typeof onChange === 'function') {
const { selectedIndex } = event.currentTarget.options;
const nextValue = this.originalValues[selectedIndex];
onChange(nextValue, event);
}
}
}
Select.propTypes = {
elementRef: PropTypes.func,
defaultValue: PrimitivePropType,
value: PrimitivePropType,
onChange: PropTypes.func,
children: PropTypes.node.isRequired
};
__decorate([
Bind()
], Select.prototype, "onChange", null);
return Select;
})();
export default Select;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0LmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQU1iLGFBQWEsRUFDYixRQUFRLEVBQ1IsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUVOLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTixLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsY0FBYyxnQkFBZ0IsQ0FBQztBQWUvQjtJQUFBLE1BQXFCLE1BQU8sU0FBUSxhQUFxQjtRQUF6RDs7WUFVUyxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUF1RDFDLENBQUM7UUFyREEsTUFBTTtZQUVMLE1BQU0sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLEdBQUcsS0FBSyxFQUNSLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUVmLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNyRCxLQUFLLEVBQUUsRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLEVBQ2tCLEVBQUUsRUFBRSxDQUFDLENBQ3hCLE9BQU8sS0FBSyxLQUFLLFdBQVc7Z0JBQzNCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxLQUFLLENBQ1IsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUNOLENBQUMsTUFBTSxDQUNOLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQzlCLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEIsWUFBWSxDQUFDLENBQUMsWUFBc0IsQ0FBQyxDQUNyQyxLQUFLLENBQUMsQ0FBQyxLQUFlLENBQUMsQ0FFdkI7SUFBQSxDQUFDLFFBQVEsQ0FDVjtHQUFBLEVBQUUsTUFBTSxDQUFDLENBQ1QsQ0FBQztRQUNILENBQUM7UUFHRCxRQUFRLENBQUMsS0FBcUM7WUFFN0MsTUFBTSxFQUNMLFFBQVEsRUFDUixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFFZixJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtnQkFFbkMsTUFBTSxFQUNMLGFBQWEsRUFDYixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUVyRCxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzNCO1FBQ0YsQ0FBQzs7SUE5RE0sZ0JBQVMsR0FBRztRQUNsQixVQUFVLEVBQUksU0FBUyxDQUFDLElBQUk7UUFDNUIsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixLQUFLLEVBQVMsaUJBQWlCO1FBQy9CLFFBQVEsRUFBTSxTQUFTLENBQUMsSUFBSTtRQUM1QixRQUFRLEVBQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0tBQ3ZDLENBQUM7SUF5Q0Y7UUFEQyxJQUFJLEVBQUU7MENBZ0JOO0lBQ0YsYUFBQztLQUFBO2VBakVvQixNQUFNIn0=