Add operator to wp roles segment

[MAILPOET-3955]
This commit is contained in:
Pavel Dohnal
2021-12-02 13:58:18 +01:00
committed by Veljko V
parent 18771be94d
commit 37a05f22bb

View File

@@ -1,15 +1,18 @@
import React from 'react'; import React, { useEffect } from 'react';
import { filter, map } from 'lodash/fp'; import { filter, map } from 'lodash/fp';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
import { useSelect, useDispatch } from '@wordpress/data'; import { useSelect, useDispatch } from '@wordpress/data';
import ReactSelect from 'common/form/react_select/react_select'; import ReactSelect from 'common/form/react_select/react_select';
import Select from 'common/form/select/select';
import { Grid } from 'common/grid'; import { Grid } from 'common/grid';
import { import {
WordpressRoleFormItem, WordpressRoleFormItem,
SelectOption, SelectOption,
WindowEditableRoles, WindowEditableRoles,
AnyValueTypes,
SubscriberActionTypes,
} from '../types'; } from '../types';
type Props = { type Props = {
@@ -22,7 +25,18 @@ export const WordpressRoleFields: React.FunctionComponent<Props> = ({ filterInde
[filterIndex] [filterIndex]
); );
const { updateSegmentFilter } = useDispatch('mailpoet-dynamic-segments-form'); const { updateSegmentFilter, updateSegmentFilterFromEvent } = useDispatch('mailpoet-dynamic-segments-form');
useEffect(() => {
if (
(segment.action === SubscriberActionTypes.WORDPRESS_ROLE)
&& (segment.operator !== AnyValueTypes.ANY)
&& (segment.operator !== AnyValueTypes.ALL)
&& (segment.operator !== AnyValueTypes.NONE)
) {
updateSegmentFilter({ operator: AnyValueTypes.ANY }, filterIndex);
}
}, [updateSegmentFilter, segment, filterIndex]);
const wordpressRoles: WindowEditableRoles = useSelect( const wordpressRoles: WindowEditableRoles = useSelect(
(select) => select('mailpoet-dynamic-segments-form').getWordpressRoles(), (select) => select('mailpoet-dynamic-segments-form').getWordpressRoles(),
@@ -35,6 +49,20 @@ export const WordpressRoleFields: React.FunctionComponent<Props> = ({ filterInde
return ( return (
<> <>
<Grid.CenteredRow>
<Select
key="select"
isFullWidth
value={segment.operator}
onChange={(e) => {
updateSegmentFilterFromEvent('operator', filterIndex, e);
}}
>
<option value={AnyValueTypes.ANY}>{MailPoet.I18n.t('anyOf')}</option>
<option value={AnyValueTypes.ALL}>{MailPoet.I18n.t('allOf')}</option>
<option value={AnyValueTypes.NONE}>{MailPoet.I18n.t('noneOf')}</option>
</Select>
</Grid.CenteredRow>
<Grid.CenteredRow> <Grid.CenteredRow>
<ReactSelect <ReactSelect
dimension="small" dimension="small"