Display spinner when custom field is being created

[MAILPOET-2463]
This commit is contained in:
Rostislav Wolny
2020-01-14 12:47:18 +01:00
committed by Pavel Dohnal
parent e87d72b5c6
commit 223d6fca0f
3 changed files with 47 additions and 33 deletions

View File

@@ -5,6 +5,7 @@ import {
Button,
SelectControl,
TextControl,
Spinner,
} from '@wordpress/components';
import { BlockIcon } from '@wordpress/block-editor';
import { useSelect, useDispatch } from '@wordpress/data';
@@ -58,6 +59,11 @@ const AddCustomField = ({ clientId }) => {
[]
);
const isCreating = useSelect(
(sel) => sel('mailpoet-form-editor').getIsCustomFieldCrating(),
[]
);
const defaultType = dateSettings.dateTypes[0].value;
const defaultFormat = dateSettings.dateFormats[defaultType][0];
@@ -111,39 +117,43 @@ const AddCustomField = ({ clientId }) => {
icon={<BlockIcon icon={icon} showColors />}
label="New Custom Field"
>
<p>Create a new custom field for your subscribers.</p>
<div className="mailpoet_custom_field_add_form">
<hr />
<SelectControl
label="Select a field type"
options={customFieldTypes}
onChange={(value) => {
setFieldSettings(null);
setFieldType(value);
}}
/>
<TextControl
label="Field name"
onChange={setFieldName}
/>
<hr />
{renderSettingsForType()}
<Button
isLarge
isDefault
disabled={!canSubmit()}
onClick={() => {
const data = {
name: fieldName,
type: fieldType,
params: mapCustomFieldFormData(fieldType, fieldSettings),
};
createCustomField(data, clientId);
}}
>
{'Create'}
</Button>
</div>
{!isCreating ? (
<>
<p>Create a new custom field for your subscribers.</p>
<div className="mailpoet_custom_field_add_form">
<hr />
<SelectControl
label="Select a field type"
options={customFieldTypes}
onChange={(value) => {
setFieldSettings(null);
setFieldType(value);
}}
/>
<TextControl
label="Field name"
onChange={setFieldName}
/>
<hr />
{renderSettingsForType()}
<Button
isLarge
isDefault
disabled={!canSubmit()}
onClick={() => {
const data = {
name: fieldName,
type: fieldType,
params: mapCustomFieldFormData(fieldType, fieldSettings),
};
createCustomField(data, clientId);
}}
>
{'Create'}
</Button>
</div>
</>
) : (<Spinner />)}
</Placeholder>
);
};

View File

@@ -59,4 +59,7 @@ export default {
getDateSettingsData(state) {
return state.dateSettingData;
},
getIsCustomFieldCrating(state) {
return state.isCustomFieldCreating;
},
};

View File

@@ -32,6 +32,7 @@ export default () => {
customFields: window.mailpoet_custom_fields,
isFormSaving: false,
isCustomFieldSaving: false,
isCustomFieldCreating: false,
notices: [],
sidebar: {
activeTab: 'form',