Move default settings to block mapper

[MAILPOET-2835]
This commit is contained in:
Pavel Dohnal
2020-04-30 14:30:38 +02:00
committed by Veljko V
parent 09ecf3e595
commit acd7abec96
2 changed files with 26 additions and 29 deletions

View File

@@ -14,7 +14,6 @@ import {
Attributes, Attributes,
Style, Style,
Types, Types,
defaultAttributes,
} from './divider'; } from './divider';
type Props = { type Props = {
@@ -23,18 +22,11 @@ type Props = {
}; };
const DividerEdit = ({ attributes, setAttributes }: Props) => { const DividerEdit = ({ attributes, setAttributes }: Props) => {
const attributeStyle = attributes.style ?? defaultAttributes.style;
const attributeDividerHeight = attributes.dividerHeight ?? defaultAttributes.dividerHeight;
const attributeDividerWidth = attributes.dividerWidth ?? defaultAttributes.dividerWidth;
const attributeHeight = attributes.height ?? defaultAttributes.height;
const attributeType = attributes.type ?? defaultAttributes.type;
const attributeColor = attributes.color ?? defaultAttributes.color;
const dividerSettings = ( const dividerSettings = (
<> <>
<SelectControl <SelectControl
label={MailPoet.I18n.t('blockDividerStyle')} label={MailPoet.I18n.t('blockDividerStyle')}
value={attributeStyle} value={attributes.style}
onChange={(style) => (setAttributes({ style }))} onChange={(style) => (setAttributes({ style }))}
options={[ options={[
{ value: Style.Solid, label: MailPoet.I18n.t('blockDividerStyleSolid') }, { value: Style.Solid, label: MailPoet.I18n.t('blockDividerStyleSolid') },
@@ -44,20 +36,20 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {
/> />
<RangeControl <RangeControl
label={MailPoet.I18n.t('blockDividerDividerHeight')} label={MailPoet.I18n.t('blockDividerDividerHeight')}
value={attributeDividerHeight} value={attributes.dividerHeight}
min={1} min={1}
max={40} max={40}
allowReset allowReset
onChange={(dividerHeight) => { onChange={(dividerHeight) => {
setAttributes({ setAttributes({
dividerHeight, dividerHeight,
height: Math.max(dividerHeight, attributeHeight), height: Math.max(dividerHeight, attributes.height),
}); });
}} }}
/> />
<RangeControl <RangeControl
label={MailPoet.I18n.t('blockDividerDividerWidth')} label={MailPoet.I18n.t('blockDividerDividerWidth')}
value={attributeDividerWidth} value={attributes.dividerWidth}
min={1} min={1}
max={100} max={100}
allowReset allowReset
@@ -65,19 +57,19 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {
/> />
<ColorSettings <ColorSettings
name={MailPoet.I18n.t('blockDividerColor')} name={MailPoet.I18n.t('blockDividerColor')}
value={attributeColor} value={attributes.color}
onChange={(color) => (setAttributes({ color }))} onChange={(color) => (setAttributes({ color }))}
/> />
</> </>
); );
const dividerStyles = {} as React.CSSProperties; const dividerStyles = {} as React.CSSProperties;
if (attributeType === Types.Divider) { if (attributes.type === Types.Divider) {
dividerStyles.borderTopStyle = attributeStyle; dividerStyles.borderTopStyle = attributes.style;
dividerStyles.borderTopWidth = attributeDividerHeight; dividerStyles.borderTopWidth = attributes.dividerHeight;
dividerStyles.borderTopColor = attributeColor; dividerStyles.borderTopColor = attributes.color;
dividerStyles.height = attributeDividerHeight; dividerStyles.height = attributes.dividerHeight;
dividerStyles.width = `${attributeDividerWidth}%`; dividerStyles.width = `${attributes.dividerWidth}%`;
} }
return ( return (
@@ -87,7 +79,7 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {
<PanelBody title={MailPoet.I18n.t('formSettingsStyles')} initialOpen> <PanelBody title={MailPoet.I18n.t('formSettingsStyles')} initialOpen>
<RangeControl <RangeControl
label={MailPoet.I18n.t('blockSpacerHeight')} label={MailPoet.I18n.t('blockSpacerHeight')}
value={attributeHeight} value={attributes.height}
min={1} min={1}
max={400} max={400}
allowReset allowReset
@@ -95,13 +87,13 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {
/> />
<ToggleControl <ToggleControl
label={MailPoet.I18n.t('blockSpacerEnableDivider')} label={MailPoet.I18n.t('blockSpacerEnableDivider')}
checked={attributeType === Types.Divider} checked={attributes.type === Types.Divider}
onChange={(checked) => setAttributes({ onChange={(checked) => setAttributes({
type: checked ? Types.Divider : Types.Spacer, type: checked ? Types.Divider : Types.Spacer,
})} })}
/> />
{( {(
(attributeType === Types.Divider) && (dividerSettings) (attributes.type === Types.Divider) && (dividerSettings)
)} )}
</PanelBody> </PanelBody>
</Panel> </Panel>
@@ -110,7 +102,7 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {
<div <div
className={classnames('mailpoet_spacer', attributes.className)} className={classnames('mailpoet_spacer', attributes.className)}
style={{ style={{
height: attributeHeight, height: attributes.height,
display: 'flex', display: 'flex',
flexDirection: 'column', flexDirection: 'column',
alignItems: 'center', alignItems: 'center',

View File

@@ -2,6 +2,7 @@
import { has } from 'lodash'; import { has } from 'lodash';
import asNum from './server_value_as_num'; import asNum from './server_value_as_num';
import formatCustomFieldBlockName from '../blocks/format_custom_field_block_name.jsx'; import formatCustomFieldBlockName from '../blocks/format_custom_field_block_name.jsx';
import { defaultAttributes as dividerDefaultAttributes } from '../blocks/divider/divider';
const generateId = () => (`${Math.random().toString()}-${Date.now()}`); const generateId = () => (`${Math.random().toString()}-${Date.now()}`);
@@ -359,12 +360,16 @@ export const formBodyToBlocksFactory = (
name: 'mailpoet-form/divider', name: 'mailpoet-form/divider',
attributes: { attributes: {
className: mapped.attributes.className, className: mapped.attributes.className,
height: asNum(item.params?.height), height: asNum(item.params?.height ?? dividerDefaultAttributes.height),
type: item.params?.type, type: item.params?.type ?? dividerDefaultAttributes.type,
style: item.params?.style, style: item.params?.style ?? dividerDefaultAttributes.style,
dividerHeight: asNum(item.params?.divider_height), dividerHeight: asNum(
dividerWidth: asNum(item.params?.divider_width), item.params?.divider_height ?? dividerDefaultAttributes.dividerHeight
color: item.params?.color, ),
dividerWidth: asNum(
item.params?.divider_width ?? dividerDefaultAttributes.dividerWidth
),
color: item.params?.color ?? dividerDefaultAttributes.color,
}, },
}; };
case 'html': case 'html':