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 ответов

6 просмотров

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта