import * as React from "react"; import * as PropTypes from "prop-types"; import { default as PlainSelect, ReactSelectProps, OptionValues, OnChangeHandler, Option } from "react-select"; import { InputContextTypes, InputContext } from "react-context-form"; import { getRefHandler } from "../helpers/setRef"; export class MultiSelect extends React.Component> { public static readonly contextTypes = InputContextTypes; public readonly context: InputContext; protected PlainSelect = class extends PlainSelect { }; public render() { const childProps: ReactSelectProps = { ...this.props, name: this.context.name, value: this.context.value, onChange: this.handleChange as any, onBlur: this.context.onBlur, onFocus: this.context.onFocus, multi: true, ref: this.handleRef } return } protected handleRef = getRefHandler(this); protected handleChange = (option: Option): void => { this.context.onChange( (option && option.length) ? option.map(({value}) => value) : undefined ) } }