From a4c696ea890f68de2741e4d23469031b79c311f0 Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Wed, 29 Apr 2020 10:05:40 +0200 Subject: [PATCH] Set default values for older dividers [MAILPOET-2835] --- .../src/form_editor/blocks/divider/divider.ts | 21 ++++++--- .../src/form_editor/blocks/divider/edit.tsx | 44 ++++++++++++------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/assets/js/src/form_editor/blocks/divider/divider.ts b/assets/js/src/form_editor/blocks/divider/divider.ts index 39841b1cfe..7d240ac029 100644 --- a/assets/js/src/form_editor/blocks/divider/divider.ts +++ b/assets/js/src/form_editor/blocks/divider/divider.ts @@ -23,6 +23,16 @@ export interface Attributes { color: string; } +export const defaultAttributes = { + className: undefined, + height: 1, + type: Types.Divider, + style: Style.Solid, + dividerHeight: 1, + dividerWidth: 100, + color: 'black', +}; + export const name = 'mailpoet-form/divider'; export const settings = { @@ -33,26 +43,27 @@ export const settings = { attributes: { height: { type: 'number', - default: 1, + default: defaultAttributes.height, }, type: { type: 'string', - default: Types.Divider, + default: defaultAttributes.type, }, style: { type: 'string', - default: Style.Solid, + default: defaultAttributes.style, }, dividerHeight: { type: 'number', - default: 1, + default: defaultAttributes.dividerHeight, }, dividerWidth: { type: 'number', - default: 100, + default: defaultAttributes.dividerWidth, }, color: { type: 'string', + default: defaultAttributes.color, }, }, supports: { diff --git a/assets/js/src/form_editor/blocks/divider/edit.tsx b/assets/js/src/form_editor/blocks/divider/edit.tsx index 70e14ed50f..fcc8a9e610 100644 --- a/assets/js/src/form_editor/blocks/divider/edit.tsx +++ b/assets/js/src/form_editor/blocks/divider/edit.tsx @@ -10,7 +10,12 @@ import { SelectControl, ToggleControl, } from '@wordpress/components'; -import { Attributes, Style, Types } from './divider'; +import { + Attributes, + Style, + Types, + defaultAttributes, +} from './divider'; type Props = { attributes: Attributes, @@ -18,11 +23,18 @@ type 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 = ( <> (setAttributes({ style }))} options={[ { value: Style.Solid, label: MailPoet.I18n.t('blockDividerStyleSolid') }, @@ -32,20 +44,20 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => { /> { setAttributes({ dividerHeight, - height: Math.max(dividerHeight, attributes.height), + height: Math.max(dividerHeight, attributeHeight), }); }} /> { /> (setAttributes({ color }))} /> ); const dividerStyles = {} as React.CSSProperties; - if (attributes.type === Types.Divider) { - dividerStyles.borderTopStyle = attributes.style; - dividerStyles.borderTopWidth = attributes.dividerHeight; - dividerStyles.borderTopColor = attributes.color; - dividerStyles.height = attributes.dividerHeight; - dividerStyles.width = `${attributes.dividerWidth}%`; + if (attributeType === Types.Divider) { + dividerStyles.borderTopStyle = attributeStyle; + dividerStyles.borderTopWidth = attributeDividerHeight; + dividerStyles.borderTopColor = attributeColor; + dividerStyles.height = attributeDividerHeight; + dividerStyles.width = `${attributeDividerWidth}%`; } return ( @@ -75,7 +87,7 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => { { /> setAttributes({ type: checked ? Types.Divider : Types.Spacer, })} /> {( - (attributes.type === Types.Divider) && (dividerSettings) + (attributeType === Types.Divider) && (dividerSettings) )} @@ -98,7 +110,7 @@ const DividerEdit = ({ attributes, setAttributes }: Props) => {