From 882d1ebe29f19b71acc3ab2e81e3a1f812b29e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ja=CC=81n=20Mikla=CC=81s=CC=8C?= Date: Wed, 21 Oct 2020 14:56:06 +0200 Subject: [PATCH] Use ReactSelect instead of Select2 in Settings [MAILPOET-3073] --- .../settings/components/segments_select.tsx | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/assets/js/src/settings/components/segments_select.tsx b/assets/js/src/settings/components/segments_select.tsx index 86e1859c9e..f908c20837 100644 --- a/assets/js/src/settings/components/segments_select.tsx +++ b/assets/js/src/settings/components/segments_select.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import $ from 'jquery'; -import 'select2'; import { useSelector } from 'settings/store/hooks'; +import ReactSelect from 'common/form/react_select/react_select'; type Props = { id: string @@ -11,26 +10,24 @@ type Props = { } export default (props: Props) => { - const id = props.id; - const setValue = React.useCallback(props.setValue, []); - const segments = useSelector('getSegments')(); - React.useLayoutEffect(() => { - const idSelector = `#${id}`; - $(idSelector).select2(); - $(idSelector).on('change', (e) => { - const value = Array.from(e.target.selectedOptions).map((x: any) => x.value); - setValue(value); - }); - return () => $(idSelector).select2('destroy'); - }, [id, setValue]); + const segments = useSelector('getSegments')().map((segment) => ({ + value: segment.id, + label: segment.name, + count: segment.subscribers, + })); + + const defaultValue = segments.filter((segment) => props.value.indexOf(segment.value) > -1); return ( - + { + props.setValue(selectedValues.map((x: any) => x.value)); + }} + /> ); };