export const Calculator = () =>{
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' },
];
const [value,setValue] = useState({})
const flags = [
{id: 'first', text:'Включить цену за проживание'},
{id: 'second', text:'Варианты со скидкой'}
]
const handleChange = (val,actionMeta) => {
setValue({
...value,
[actionMeta]: val
})
}
const handleClick = () => setValue({})
return (
<aside className={classes.calculator}>
<h4 className={classes.title}>
Что хотите найти?
</h4>
<form onSubmit={(e)=>{
e.preventDefault()
}} className={classes.form}>
<div className={classes.fields}>
<div className={classes.field}>
<div className={classes.subtitle}>Язык</div>
<CustomSelect propValue={value} options={options} onChange={handleChange} name={'string'} id={1} placeholder={'На каком языке?'} styles={customStyles}/>
{JSON.stringify(value)}
</div>
<div className={classes.field}>
<div className={classes.subtitle}>Страна</div>
<CustomSelect propValue={value['2'] } onChange={handleChange} name={'2'} id={2} placeholder={'На каком языке?'} styles={customStyles}/>
</div>
<div className={classes.field}>
<div className={classes.subtitle}>Город</div>
<CustomSelect propValue={value['3'] } onChange={handleChange} name={'3'} id={3} placeholder={'Какой город?'} styles={customStyles}/>
</div>
<div className={classes.field}>
<div className={classes.subtitle}>Возрастная группа</div>
<CustomSelect propValue={value['4']} onChange={handleChange} name={'4'} id={4} placeholder={'Какой возраст?'} styles={customStyles}/>
</div>
<div className={classes.field}>
<div className={classes.subtitle}>Продолжительность обучения</div>
<CustomSelect propValue={value['5']} onChange={handleChange} name={'5'} id={5} placeholder={'Долго?'} styles={customStyles}/>
</div>
<div className={classes.field}>
<div className={classes.subtitle}>Количество учеников в классе</div>
<CustomSelect propValue={value['sum']} onChange={handleChange} name={'sum'} id={6} placeholder={'Кол-во учеников?'} styles={customStyles}/>
</div>
</div>
<div className={classes.feePerWeek}>
<div className={classes.feePerWeek}>
<div className={cn(classes.subtitle, classes.subtitleBigMargin )}>
Стоимость обучения за неделю
</div>
<MultiRangeSlider min={0} max={1000}/>
</div>
</div>
<div className={classes.flags}>
<Checkbox id={flags[0].id} text={flags[0].text}/>
<Checkbox id={flags[1].id} text={flags[1].text}/>
</div>
<CalculatorParameters onChange={handleChange} customStyles={customStyles} fieldValue={value}/>
<div className={classes.buttons}>
<button type={'submit'} className={classes.submit}>Применить</button>
<button className={classes.resetButton} onClick={handleClick}>Сбросить все</button>
</div>
</form>
</aside>
)
}
export const CustomSelect = ({placeholder,id,propValue,onChange, options, styles,name}) =>{
const initialOptions = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
{ value: 'vanilla', label: 'Vanilla' },
];
const [value,setValue] = useState(propValue)
useEffect(()=>{
setValue(propValue)
}, [propValue])
const handleOnChange = ({value}) => {
if (typeof onChange ==='undefined') {
return null
} else {
onChange(value, name)
}
}
return (
<Select onChange={handleOnChange} name={name} value={value} instanceId={id} placeholder={<span>{placeholder}</span>} styles={styles || customStyles} options={options ?? initialOptions} />
)
}