Use ReactSelect instead of Select2 in Settings

[MAILPOET-3073]
This commit is contained in:
Ján Mikláš
2020-10-21 14:56:06 +02:00
committed by Veljko V
parent ca836a1dc8
commit 882d1ebe29

View File

@@ -1,7 +1,6 @@
import React from 'react'; import React from 'react';
import $ from 'jquery';
import 'select2';
import { useSelector } from 'settings/store/hooks'; import { useSelector } from 'settings/store/hooks';
import ReactSelect from 'common/form/react_select/react_select';
type Props = { type Props = {
id: string id: string
@@ -11,26 +10,24 @@ type Props = {
} }
export default (props: Props) => { export default (props: Props) => {
const id = props.id; const segments = useSelector('getSegments')().map((segment) => ({
const setValue = React.useCallback(props.setValue, []); value: segment.id,
const segments = useSelector('getSegments')(); label: segment.name,
React.useLayoutEffect(() => { count: segment.subscribers,
const idSelector = `#${id}`; }));
$(idSelector).select2();
$(idSelector).on('change', (e) => { const defaultValue = segments.filter((segment) => props.value.indexOf(segment.value) > -1);
const value = Array.from(e.target.selectedOptions).map((x: any) => x.value);
setValue(value);
});
return () => $(idSelector).select2('destroy');
}, [id, setValue]);
return ( return (
<select id={id} data-placeholder={props.placeholder} defaultValue={props.value} multiple> <ReactSelect
{segments.map((seg) => ( isMulti
<option key={seg.id} value={seg.id}> defaultValue={defaultValue}
{`${seg.name} (${seg.subscribers})`} id={props.id}
</option> placeholder={props.placeholder}
))} options={segments}
</select> onChange={(selectedValues: any) => {
props.setValue(selectedValues.map((x: any) => x.value));
}}
/>
); );
}; };