Render input padding
[MAILPOET-2809]
This commit is contained in:
@@ -130,19 +130,6 @@ class BlockRendererHelper {
|
|||||||
return $rules ? 'style="' . implode("", $rules) . '"' : '';
|
return $rules ? 'style="' . implode("", $rules) . '"' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderBlockAlignment(array $formSettings) {
|
|
||||||
$rules = [];
|
|
||||||
if (isset($formSettings['alignment'])) {
|
|
||||||
if ($formSettings['alignment'] === 'right') {
|
|
||||||
$rules[] = 'margin: 0 0 0 auto';
|
|
||||||
}
|
|
||||||
if ($formSettings['alignment'] === 'center') {
|
|
||||||
$rules[] = 'margin: 0 auto';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $rules ? 'style="' . implode("", $rules) . '"' : '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderInputPlaceholder(array $block): string {
|
public function renderInputPlaceholder(array $block): string {
|
||||||
$html = '';
|
$html = '';
|
||||||
// if the label is displayed as a placeholder,
|
// if the label is displayed as a placeholder,
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Form\Block;
|
namespace MailPoet\Form\Block;
|
||||||
|
|
||||||
|
use MailPoet\Form\BlockStylesRenderer;
|
||||||
use MailPoet\Form\BlockWrapperRenderer;
|
use MailPoet\Form\BlockWrapperRenderer;
|
||||||
|
|
||||||
class Date {
|
class Date {
|
||||||
@@ -12,9 +13,17 @@ class Date {
|
|||||||
/** @var BlockWrapperRenderer */
|
/** @var BlockWrapperRenderer */
|
||||||
private $wrapper;
|
private $wrapper;
|
||||||
|
|
||||||
public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper) {
|
/** @var BlockStylesRenderer */
|
||||||
|
private $blockStylesRenderer;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
BlockRendererHelper $rendererHelper,
|
||||||
|
BlockStylesRenderer $blockStylesRenderer,
|
||||||
|
BlockWrapperRenderer $wrapper
|
||||||
|
) {
|
||||||
$this->rendererHelper = $rendererHelper;
|
$this->rendererHelper = $rendererHelper;
|
||||||
$this->wrapper = $wrapper;
|
$this->wrapper = $wrapper;
|
||||||
|
$this->blockStylesRenderer = $blockStylesRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render(array $block, array $formSettings): string {
|
public function render(array $block, array $formSettings): string {
|
||||||
@@ -46,7 +55,7 @@ class Date {
|
|||||||
foreach ($dateSelectors as $dateSelector) {
|
foreach ($dateSelectors as $dateSelector) {
|
||||||
if ($dateSelector === 'DD') {
|
if ($dateSelector === 'DD') {
|
||||||
$html .= '<select class="mailpoet_date_day" ';
|
$html .= '<select class="mailpoet_date_day" ';
|
||||||
$html .= $this->rendererHelper->renderBlockAlignment($formSettings);
|
$html .= ' style="' . $this->blockStylesRenderer->renderForSelect([], $formSettings) . '"';
|
||||||
$html .= $this->rendererHelper->getInputValidation($block, [
|
$html .= $this->rendererHelper->getInputValidation($block, [
|
||||||
'required-message' => __('Please select a day', 'mailpoet'),
|
'required-message' => __('Please select a day', 'mailpoet'),
|
||||||
]);
|
]);
|
||||||
@@ -55,7 +64,7 @@ class Date {
|
|||||||
$html .= '</select>';
|
$html .= '</select>';
|
||||||
} else if ($dateSelector === 'MM') {
|
} else if ($dateSelector === 'MM') {
|
||||||
$html .= '<select class="mailpoet_select mailpoet_date_month" ';
|
$html .= '<select class="mailpoet_select mailpoet_date_month" ';
|
||||||
$html .= $this->rendererHelper->renderBlockAlignment($formSettings);
|
$html .= ' style="' . $this->blockStylesRenderer->renderForSelect([], $formSettings) . '"';
|
||||||
$html .= $this->rendererHelper->getInputValidation($block, [
|
$html .= $this->rendererHelper->getInputValidation($block, [
|
||||||
'required-message' => __('Please select a month', 'mailpoet'),
|
'required-message' => __('Please select a month', 'mailpoet'),
|
||||||
]);
|
]);
|
||||||
@@ -64,7 +73,7 @@ class Date {
|
|||||||
$html .= '</select>';
|
$html .= '</select>';
|
||||||
} else if ($dateSelector === 'YYYY') {
|
} else if ($dateSelector === 'YYYY') {
|
||||||
$html .= '<select class="mailpoet_date_year" ';
|
$html .= '<select class="mailpoet_date_year" ';
|
||||||
$html .= $this->rendererHelper->renderBlockAlignment($formSettings);
|
$html .= ' style="' . $this->blockStylesRenderer->renderForSelect([], $formSettings) . '"';
|
||||||
$html .= $this->rendererHelper->getInputValidation($block, [
|
$html .= $this->rendererHelper->getInputValidation($block, [
|
||||||
'required-message' => __('Please select a year', 'mailpoet'),
|
'required-message' => __('Please select a year', 'mailpoet'),
|
||||||
]);
|
]);
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Form\Block;
|
namespace MailPoet\Form\Block;
|
||||||
|
|
||||||
|
use MailPoet\Form\BlockStylesRenderer;
|
||||||
use MailPoet\Form\BlockWrapperRenderer;
|
use MailPoet\Form\BlockWrapperRenderer;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@@ -16,10 +17,19 @@ class Select {
|
|||||||
/** @var BlockWrapperRenderer */
|
/** @var BlockWrapperRenderer */
|
||||||
private $wrapper;
|
private $wrapper;
|
||||||
|
|
||||||
public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
|
/** @var BlockStylesRenderer */
|
||||||
|
private $blockStylesRenderer;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
BlockRendererHelper $rendererHelper,
|
||||||
|
BlockWrapperRenderer $wrapper,
|
||||||
|
BlockStylesRenderer $blockStylesRenderer,
|
||||||
|
WPFunctions $wp
|
||||||
|
) {
|
||||||
$this->rendererHelper = $rendererHelper;
|
$this->rendererHelper = $rendererHelper;
|
||||||
$this->wrapper = $wrapper;
|
$this->wrapper = $wrapper;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
|
$this->blockStylesRenderer = $blockStylesRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render(array $block, array $formSettings): string {
|
public function render(array $block, array $formSettings): string {
|
||||||
@@ -33,7 +43,7 @@ class Select {
|
|||||||
class="mailpoet_select"
|
class="mailpoet_select"
|
||||||
name="' . $fieldName . '" '
|
name="' . $fieldName . '" '
|
||||||
. $automationId
|
. $automationId
|
||||||
. $this->rendererHelper->renderBlockAlignment($formSettings)
|
. 'style="' . $this->blockStylesRenderer->renderForSelect([], $formSettings) . '"'
|
||||||
. '>';
|
. '>';
|
||||||
|
|
||||||
if (isset($block['params']['label_within']) && $block['params']['label_within']) {
|
if (isset($block['params']['label_within']) && $block['params']['label_within']) {
|
||||||
|
@@ -22,7 +22,7 @@ class Submit {
|
|||||||
$this->stylesRenderer = $stylesRenderer;
|
$this->stylesRenderer = $stylesRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render(array $block): string {
|
public function render(array $block, array $formSettings): string {
|
||||||
$html = '';
|
$html = '';
|
||||||
|
|
||||||
$html .= '<input type="submit" class="mailpoet_submit" ';
|
$html .= '<input type="submit" class="mailpoet_submit" ';
|
||||||
@@ -31,7 +31,7 @@ class Submit {
|
|||||||
|
|
||||||
$html .= 'data-automation-id="subscribe-submit-button" ';
|
$html .= 'data-automation-id="subscribe-submit-button" ';
|
||||||
|
|
||||||
$styles = $this->stylesRenderer->renderForButton($block['styles'] ?? []);
|
$styles = $this->stylesRenderer->renderForButton($block['styles'] ?? [], $formSettings);
|
||||||
|
|
||||||
if ($styles) {
|
if ($styles) {
|
||||||
$html .= 'style="' . $styles . '" ';
|
$html .= 'style="' . $styles . '" ';
|
||||||
|
@@ -36,7 +36,7 @@ class Text {
|
|||||||
$automationId = 'data-automation-id="form_' . $block['id'] . '" ';
|
$automationId = 'data-automation-id="form_' . $block['id'] . '" ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$styles = $this->inputStylesRenderer->renderForTextInput($block['styles'] ?? []);
|
$styles = $this->inputStylesRenderer->renderForTextInput($block['styles'] ?? [], $formSettings);
|
||||||
|
|
||||||
if (in_array($block['id'], ['email', 'last_name', 'first_name'], true)) {
|
if (in_array($block['id'], ['email', 'last_name', 'first_name'], true)) {
|
||||||
$automationId = 'data-automation-id="form_' . $block['id'] . '" ';
|
$automationId = 'data-automation-id="form_' . $block['id'] . '" ';
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
namespace MailPoet\Form;
|
namespace MailPoet\Form;
|
||||||
|
|
||||||
class BlockStylesRenderer {
|
class BlockStylesRenderer {
|
||||||
public function renderForTextInput(array $styles): string {
|
public function renderForTextInput(array $styles, array $formSettings = []): string {
|
||||||
$rules = [];
|
$rules = [];
|
||||||
if (isset($styles['full_width']) && intval($styles['full_width'])) {
|
if (isset($styles['full_width']) && intval($styles['full_width'])) {
|
||||||
$rules[] = 'width:100%;';
|
$rules[] = 'width:100%;';
|
||||||
@@ -23,10 +23,13 @@ class BlockStylesRenderer {
|
|||||||
if (isset($styles['border_color'])) {
|
if (isset($styles['border_color'])) {
|
||||||
$rules[] = "border-color:{$styles['border_color']};";
|
$rules[] = "border-color:{$styles['border_color']};";
|
||||||
}
|
}
|
||||||
|
if (isset($formSettings['inputPadding'])) {
|
||||||
|
$rules[] = "padding:{$formSettings['inputPadding']}px;";
|
||||||
|
}
|
||||||
return implode('', $rules);
|
return implode('', $rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderForButton(array $styles): string {
|
public function renderForButton(array $styles, array $formSettings = []): string {
|
||||||
$rules = [];
|
$rules = [];
|
||||||
if (isset($styles['font_color'])) {
|
if (isset($styles['font_color'])) {
|
||||||
$rules[] = "color:{$styles['font_color']};";
|
$rules[] = "color:{$styles['font_color']};";
|
||||||
@@ -37,6 +40,25 @@ class BlockStylesRenderer {
|
|||||||
if (isset($styles['bold']) && $styles['bold'] === '1') {
|
if (isset($styles['bold']) && $styles['bold'] === '1') {
|
||||||
$rules[] = "font-weight:bold;";
|
$rules[] = "font-weight:bold;";
|
||||||
}
|
}
|
||||||
|
if (isset($formSettings['inputPadding'])) {
|
||||||
|
$rules[] = "padding:{$formSettings['inputPadding']}px;";
|
||||||
|
}
|
||||||
return $this->renderForTextInput($styles) . implode('', $rules);
|
return $this->renderForTextInput($styles) . implode('', $rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function renderForSelect(array $styles, array $formSettings = []): string {
|
||||||
|
$rules = [];
|
||||||
|
if (isset($formSettings['inputPadding'])) {
|
||||||
|
$rules[] = "padding:{$formSettings['inputPadding']}px;";
|
||||||
|
}
|
||||||
|
if (isset($formSettings['alignment'])) {
|
||||||
|
if ($formSettings['alignment'] === 'right') {
|
||||||
|
$rules[] = 'margin: 0 0 0 auto;';
|
||||||
|
}
|
||||||
|
if ($formSettings['alignment'] === 'center') {
|
||||||
|
$rules[] = 'margin: 0 auto;';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return implode('', $rules);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -150,7 +150,7 @@ class BlocksRenderer {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'submit':
|
case 'submit':
|
||||||
$html .= $this->submit->render($block);
|
$html .= $this->submit->render($block, $formSettings);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return $html;
|
return $html;
|
||||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
|
|||||||
|
|
||||||
use MailPoet\Form\Block\BlockRendererHelper;
|
use MailPoet\Form\Block\BlockRendererHelper;
|
||||||
use MailPoet\Form\Block\Date;
|
use MailPoet\Form\Block\Date;
|
||||||
|
use MailPoet\Form\BlockStylesRenderer;
|
||||||
use MailPoet\Form\BlockWrapperRenderer;
|
use MailPoet\Form\BlockWrapperRenderer;
|
||||||
use MailPoet\Test\Form\HtmlParser;
|
use MailPoet\Test\Form\HtmlParser;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
@@ -21,6 +22,9 @@ class DateTest extends \MailPoetUnitTest {
|
|||||||
/** @var MockObject & BlockWrapperRenderer */
|
/** @var MockObject & BlockWrapperRenderer */
|
||||||
private $wrapperMock;
|
private $wrapperMock;
|
||||||
|
|
||||||
|
/** @var MockObject & BlockStylesRenderer */
|
||||||
|
private $blockStylesRenderer;
|
||||||
|
|
||||||
/** @var HtmlParser */
|
/** @var HtmlParser */
|
||||||
private $htmlParser;
|
private $htmlParser;
|
||||||
|
|
||||||
@@ -42,10 +46,12 @@ class DateTest extends \MailPoetUnitTest {
|
|||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
|
$this->blockStylesRenderer = $this->createMock(BlockStylesRenderer::class);
|
||||||
|
$this->blockStylesRenderer->method('renderForSelect')->willReturn('');
|
||||||
$this->baseMock = $this->createMock(BlockRendererHelper::class);
|
$this->baseMock = $this->createMock(BlockRendererHelper::class);
|
||||||
$this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
|
$this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
|
||||||
$this->wrapperMock->method('render')->will($this->returnArgument(1));
|
$this->wrapperMock->method('render')->will($this->returnArgument(1));
|
||||||
$this->date = new Date($this->baseMock, $this->wrapperMock);
|
$this->date = new Date($this->baseMock, $this->blockStylesRenderer, $this->wrapperMock);
|
||||||
$this->htmlParser = new HtmlParser();
|
$this->htmlParser = new HtmlParser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
|
|||||||
|
|
||||||
use MailPoet\Form\Block\BlockRendererHelper;
|
use MailPoet\Form\Block\BlockRendererHelper;
|
||||||
use MailPoet\Form\Block\Select;
|
use MailPoet\Form\Block\Select;
|
||||||
|
use MailPoet\Form\BlockStylesRenderer;
|
||||||
use MailPoet\Form\BlockWrapperRenderer;
|
use MailPoet\Form\BlockWrapperRenderer;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\WP\Functions;
|
use MailPoet\WP\Functions;
|
||||||
@@ -22,6 +23,9 @@ class SelectTest extends \MailPoetUnitTest {
|
|||||||
/** @var MockObject & BlockRendererHelper */
|
/** @var MockObject & BlockRendererHelper */
|
||||||
private $rendererHelperMock;
|
private $rendererHelperMock;
|
||||||
|
|
||||||
|
/** @var MockObject & BlockStylesRenderer */
|
||||||
|
private $blockStylesRenderer;
|
||||||
|
|
||||||
/** @var MockObject & BlockWrapperRenderer */
|
/** @var MockObject & BlockWrapperRenderer */
|
||||||
private $wrapperMock;
|
private $wrapperMock;
|
||||||
|
|
||||||
@@ -36,7 +40,9 @@ class SelectTest extends \MailPoetUnitTest {
|
|||||||
$this->rendererHelperMock->method('renderLabel')->will($this->returnValue('<label></label>'));
|
$this->rendererHelperMock->method('renderLabel')->will($this->returnValue('<label></label>'));
|
||||||
$this->rendererHelperMock->method('getFieldLabel')->will($this->returnValue('Field label'));
|
$this->rendererHelperMock->method('getFieldLabel')->will($this->returnValue('Field label'));
|
||||||
$this->rendererHelperMock->method('getFieldValue')->will($this->returnValue('1'));
|
$this->rendererHelperMock->method('getFieldValue')->will($this->returnValue('1'));
|
||||||
$this->selectBlock = new Select($this->rendererHelperMock, $this->wrapperMock, $this->wpMock);
|
$this->blockStylesRenderer = $this->createMock(BlockStylesRenderer::class);
|
||||||
|
$this->blockStylesRenderer->method('renderForSelect')->willReturn('');
|
||||||
|
$this->selectBlock = new Select($this->rendererHelperMock, $this->wrapperMock, $this->blockStylesRenderer, $this->wpMock);
|
||||||
$this->block = [
|
$this->block = [
|
||||||
'id' => 'status',
|
'id' => 'status',
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
|
@@ -52,7 +52,7 @@ class SubmitTest extends \MailPoetUnitTest {
|
|||||||
public function testItShouldRenderSubmit() {
|
public function testItShouldRenderSubmit() {
|
||||||
$this->rendererHelperMock->expects($this->once())->method('getFieldLabel')->willReturn('Submit label');
|
$this->rendererHelperMock->expects($this->once())->method('getFieldLabel')->willReturn('Submit label');
|
||||||
$this->stylesRendererMock->expects($this->once())->method('renderForButton')->willReturn('border-radius: 10px;');
|
$this->stylesRendererMock->expects($this->once())->method('renderForButton')->willReturn('border-radius: 10px;');
|
||||||
$html = $this->submit->render($this->block);
|
$html = $this->submit->render($this->block, []);
|
||||||
$input = $this->htmlParser->getElementByXpath($html, '//input');
|
$input = $this->htmlParser->getElementByXpath($html, '//input');
|
||||||
$type = $this->htmlParser->getAttribute($input, 'type');
|
$type = $this->htmlParser->getAttribute($input, 'type');
|
||||||
$value = $this->htmlParser->getAttribute($input, 'value');
|
$value = $this->htmlParser->getAttribute($input, 'value');
|
||||||
|
@@ -35,11 +35,15 @@ class BlockStylesRendererTest extends \MailPoetUnitTest {
|
|||||||
'background_color' => '#dddddd',
|
'background_color' => '#dddddd',
|
||||||
'bold' => '1',
|
'bold' => '1',
|
||||||
];
|
];
|
||||||
$result = $this->renderer->renderForTextInput($styles);
|
$settings = [
|
||||||
|
'inputPadding' => '40',
|
||||||
|
];
|
||||||
|
$result = $this->renderer->renderForTextInput($styles, $settings);
|
||||||
expect($result)->contains('border-radius:10px;');
|
expect($result)->contains('border-radius:10px;');
|
||||||
expect($result)->contains('border-color:#fff;');
|
expect($result)->contains('border-color:#fff;');
|
||||||
expect($result)->contains('border-width:10px;');
|
expect($result)->contains('border-width:10px;');
|
||||||
expect($result)->contains('background-color:#dddddd;');
|
expect($result)->contains('background-color:#dddddd;');
|
||||||
|
expect($result)->contains('padding:40px;');
|
||||||
expect($result)->notContains('font-weight:bold;');
|
expect($result)->notContains('font-weight:bold;');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +66,10 @@ class BlockStylesRendererTest extends \MailPoetUnitTest {
|
|||||||
'font_size' => 8,
|
'font_size' => 8,
|
||||||
'bold' => '1',
|
'bold' => '1',
|
||||||
];
|
];
|
||||||
$result = $this->renderer->renderForButton($styles);
|
$settings = [
|
||||||
|
'inputPadding' => '40',
|
||||||
|
];
|
||||||
|
$result = $this->renderer->renderForButton($styles, $settings);
|
||||||
expect($result)->contains('border-radius:10px;');
|
expect($result)->contains('border-radius:10px;');
|
||||||
expect($result)->contains('border-color:#fff;');
|
expect($result)->contains('border-color:#fff;');
|
||||||
expect($result)->contains('border-width:10px;');
|
expect($result)->contains('border-width:10px;');
|
||||||
@@ -70,5 +77,12 @@ class BlockStylesRendererTest extends \MailPoetUnitTest {
|
|||||||
expect($result)->contains('color:#eeeeee;');
|
expect($result)->contains('color:#eeeeee;');
|
||||||
expect($result)->contains('font-size:8px;');
|
expect($result)->contains('font-size:8px;');
|
||||||
expect($result)->contains('font-weight:bold;');
|
expect($result)->contains('font-weight:bold;');
|
||||||
|
expect($result)->contains('padding:40px;');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldRenderSegmentInputStyles() {
|
||||||
|
expect($this->renderer->renderForSelect([], ['inputPadding' => 10]))->equals('padding:10px;');
|
||||||
|
expect($this->renderer->renderForSelect([], ['alignment' => 'right']))->equals('margin: 0 0 0 auto;');
|
||||||
|
expect($this->renderer->renderForSelect([], ['alignment' => 'center']))->equals('margin: 0 auto;');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user