Render form alignment

[MAILPOET-2809]
This commit is contained in:
Pavel Dohnal
2020-04-21 10:23:47 +02:00
committed by Veljko V
parent 9628463477
commit 2317412f88
5 changed files with 35 additions and 3 deletions

View File

@ -130,6 +130,19 @@ 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,

View File

@ -20,11 +20,11 @@ class Date {
public function render(array $block, array $formSettings): string { public function render(array $block, array $formSettings): string {
$html = ''; $html = '';
$html .= $this->rendererHelper->renderLabel($block, $formSettings); $html .= $this->rendererHelper->renderLabel($block, $formSettings);
$html .= $this->renderDateSelect($block); $html .= $this->renderDateSelect($block, $formSettings);
return $this->wrapper->render($block, $html); return $this->wrapper->render($block, $html);
} }
private function renderDateSelect(array $block = []): string { private function renderDateSelect(array $block = [], $formSettings = []): string {
$html = ''; $html = '';
$fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']'; $fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']';
@ -46,6 +46,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 .= $this->rendererHelper->getInputValidation($block, [ $html .= $this->rendererHelper->getInputValidation($block, [
'required-message' => __('Please select a day', 'mailpoet'), 'required-message' => __('Please select a day', 'mailpoet'),
]); ]);
@ -54,6 +55,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 .= $this->rendererHelper->getInputValidation($block, [ $html .= $this->rendererHelper->getInputValidation($block, [
'required-message' => __('Please select a month', 'mailpoet'), 'required-message' => __('Please select a month', 'mailpoet'),
]); ]);
@ -62,6 +64,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 .= $this->rendererHelper->getInputValidation($block, [ $html .= $this->rendererHelper->getInputValidation($block, [
'required-message' => __('Please select a year', 'mailpoet'), 'required-message' => __('Please select a year', 'mailpoet'),
]); ]);

View File

@ -29,7 +29,12 @@ class Select {
$automationId = ($block['id'] == 'status') ? 'data-automation-id="form_status"' : ''; $automationId = ($block['id'] == 'status') ? 'data-automation-id="form_status"' : '';
$html .= $this->rendererHelper->renderLabel($block, $formSettings); $html .= $this->rendererHelper->renderLabel($block, $formSettings);
$html .= '<select class="mailpoet_select" name="' . $fieldName . '" ' . $automationId . '>'; $html .= '<select
class="mailpoet_select"
name="' . $fieldName . '" '
. $automationId
. $this->rendererHelper->renderBlockAlignment($formSettings)
. '>';
if (isset($block['params']['label_within']) && $block['params']['label_within']) { if (isset($block['params']['label_within']) && $block['params']['label_within']) {
$label = $this->rendererHelper->getFieldLabel($block); $label = $this->rendererHelper->getFieldLabel($block);

View File

@ -119,6 +119,10 @@ class Renderer {
$styles[] = 'padding: ' . $formSettings['formPadding'] . 'px'; $styles[] = 'padding: ' . $formSettings['formPadding'] . 'px';
} }
if (isset($formSettings['alignment'])) {
$styles[] = 'text-align: ' . $formSettings['alignment'];
}
return join(';', $styles); return join(';', $styles);
} }
} }

View File

@ -132,6 +132,13 @@ class RendererTest extends \MailPoetUnitTest {
expect($styles)->equals('padding: 22px'); expect($styles)->equals('padding: 22px');
} }
public function testItShouldRenderAlignment() {
$form = Fixtures::get('simple_form_body');
$form['settings'] = ['alignment' => 'right'];
$styles = $this->renderer->renderFormElementStyles($form);
expect($styles)->equals('text-align: right');
}
public function testItShouldRenderBorderWithRadius() { public function testItShouldRenderBorderWithRadius() {
$form = Fixtures::get('simple_form_body'); $form = Fixtures::get('simple_form_body');
$form['settings'] = ['borderSize' => '22', 'borderColor' => 'red', 'borderRadius' => '11']; $form['settings'] = ['borderSize' => '22', 'borderColor' => 'red', 'borderRadius' => '11'];