UNPKG

@flexis/ui

Version:

Styleless React Components

45 lines 3.98 kB
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=