169 похожих чатов

Import React, {PureComponent} from 'react' import {change, WrappedFieldProps} from 'redux-form' import {InjectedIntlProps}

from 'react-intl'
import Select from 'react-select'
import {OptionsType} from 'react-select/lib/types'
import {Text} from 'appComponents'
import {showWarning} from 'utilities'


export type SelectOption<E = {id: number}> = E & {label: string, value: string | number}
export type SelectOptions<O = {}> = OptionsType<SelectOption<O>>

type Props = WrappedFieldProps & InjectedIntlProps & {
defaultValue: SelectOption,
className: string,
required: boolean,
isDisabled: boolean,
htmlFor: string,
label: string,
autoFocus: boolean,
options: SelectOptions,
placeholder?: string,
localize?: boolean,
isSearchable?: boolean,

onChange: (value: SelectOption) => void
}

export class InputSelect extends PureComponent<Props, {}> {
componentWillUnmount() {
if (this.props.meta && this.props.meta.dispatch) {
this.props.meta.dispatch(change(this.props.meta.form, this.props.input.name,null))
}
}

componentWillReceiveProps(nextProps: Props) {
if (!this.props.defaultValue && nextProps.defaultValue && nextProps.defaultValue.value) {
this.onChange(nextProps.defaultValue)
}
}

componentDidMount() {
if (this.props.defaultValue) {
this.onChange(this.props.defaultValue)
}
}

onChange = (value: SelectOption) => {
const {input, onChange} = this.props

if (input) {
input.onChange(value)
input.onBlur(value)
}
if (onChange) {
onChange(value)
}
}

checkValue = () => {
const {localize, input} = this.props
if (localize && (input && input.value)) {
return {
...input.value,
label: <Text text={input.value.label} type="bare"/>,
value: input.value.value
}
} else if (input && input.value) {
return input.value
} else {
return
}
}

select = (classNames: string) => {
const {placeholder = 'select', autoFocus, options, localize} = this.props

return (
<Select
{...this.props}
menuRenderer={() => showWarning('No menuRenderer handler in InputSelect')}
placeholder={placeholder && ((<Text text={placeholder} type="bare" /> as unknown) as string)}
classNamePrefix={classNames}
autoFocus={autoFocus}
options={options.map(option => ({
...option,
label: localize ? <Text text={option.label} type="bare"/> : option.label,
value: option.value
}))}
value={this.checkValue()}
// @ts-ignore
onChange={this.onChange}
noOptionsMessage={() => (<Text text="noData" type="bare"/> as unknown) as string}
/>
)
}

input = () => {
const {className, meta, required, input, isDisabled} = this.props

let classNames = className ? ${className} react-select : 'react-select'

// подсказка ошибок
if (meta && meta.error && meta.touched) {
classNames += ' validation__select-error'
}

return input
? (
<div className={form__validation${isDisabled ? ' disabled' : ''}}>
{this.select(classNames)}

{required && !meta.touched ? <div className="validation__input-required"/> : null}
</div>
)
: this.select(classNames)
}

render() {
const {htmlFor, input, label} = this.props

return label
? (
<div className="form__label">
<label htmlFor={htmlFor || input.name}>
{<Text text={label} type="label"/>}
</label>
{this.input()}
</div>
)
: (
this.input()
)
}
}

2 ответов

5 просмотров

а длиннее портянку можно было?

пздц ты укурился?)

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта