diff --git a/css/erl-widget.css b/css/erl-widget.css index 6a355ca..8f85a9b 100644 --- a/css/erl-widget.css +++ b/css/erl-widget.css @@ -2,15 +2,23 @@ background: #f5f5f3; border: none; margin: 30px 0; - padding: 60px 0; + padding: 60px 30px; } .field--widget-entity-reference-layout-widget fieldset.erl-field > legend { line-height: 30px; top: 15px; } -.field--widget-entity-reference-layout-widget .erl-item--layout { - background-color: #fff; - margin-top: 30px; +.field--widget-entity-reference-layout-widget .erl-layout { + margin-bottom: 30px; + position: relative; + padding: 25px 0 0 0; +} +.field--widget-entity-reference-layout-widget .erl-layout__content { + padding: 0 30px 15px 30px; +} +.field--widget-entity-reference-layout-widget .erl-layout__regions, +.field--widget-entity-reference-layout-widget .erl-disabled-wrapper { + background: #fff; } .field--widget-entity-reference-layout-widget .erl-layout-select .form-radios { @@ -26,6 +34,9 @@ text-align: left; width: 150px; } +.field--widget-entity-reference-layout-widget .layout-radio-item input[type=radio] { + display: none; +} .field--widget-entity-reference-layout-widget .layout-radio-item .form-item { margin-top: 0; } @@ -48,7 +59,18 @@ text-align: center; } -.field--widget-entity-reference-layout-widget .erl-item { +.field--widget-entity-reference-layout-widget .erl-layout.erl-item::before { + content: ""; + top: 15px; + height: 1px; + background-color: #ccc; + position: absolute; + left: 0; + right: 0; + width: 100%; +} +.field--widget-entity-reference-layout-widget .erl-layout .erl-item, +.field--widget-entity-reference-layout-widget .erl-disabled-items .erl-item { border: 1px solid #ffffff; box-sizing: border-box; padding: 30px; @@ -61,7 +83,10 @@ .field--widget-entity-reference-layout-widget .erl-item .erl-actions .form-wrapper { background: none; } -.field--widget-entity-reference-layout-widget .erl-item:hover { +.field--widget-entity-reference-layout-widget .erl-layout-region:hover { + border: 1px solid #ccc; +} +.field--widget-entity-reference-layout-widget .erl-layout .erl-item:hover { border-color: #0074bd; } .field--widget-entity-reference-layout-widget .reversed .erl-item:hover { @@ -75,14 +100,23 @@ position: relative; padding: 0; border: 1px dashed #f5f5f3; + border: 1px dashed #e5e5e3; transition: all .15s linear; min-height: 30px; + padding: 30px; } /* -- Layout Controls -- */ -.field--widget-entity-reference-layout-widget .layout-controls { +.field--widget-entity-reference-layout-widget .erl-layout .layout-controls, +.field--widget-entity-reference-layout-widget .erl-layout .erl-actions { background: #f5f5f3; +} +.field--widget-entity-reference-layout-widget .erl-layout .erl-item .layout-controls, +.field--widget-entity-reference-layout-widget .erl-layout .erl-item .erl-actions{ + background: none; +} +.field--widget-entity-reference-layout-widget .layout-controls { height: 30px; left: 0; position: absolute; @@ -90,14 +124,6 @@ width: 90px; opacity: 0; } -.field--widget-entity-reference-layout-widget .erl-item .erl-add-content--single { - opacity: 0; - padding: 10px 0; - background: #fff; -} -.field--widget-entity-reference-layout-widget .erl-item:hover > .erl-add-content--single { - opacity: 1; -} .field--widget-entity-reference-layout-widget .erl-item:hover > .layout-controls { opacity: 1; @@ -226,6 +252,7 @@ } .erl-add-content__container { position: absolute; + left: 0; top: 100%; width: 100%; } @@ -312,14 +339,17 @@ width: 100%; border: none; } +.erl-item:hover > .erl-add-content--single { + opacity: 1; +} .erl-add-content--single { - width: 150px; - left: 50%; - margin-left: -75px; + opacity: 0; + padding: 10px 0; + width: 100%; text-align: center; position: absolute; z-index: 10; - bottom: -20px; + bottom: -43px; } .erl-add-content--single button { background: none; @@ -366,7 +396,7 @@ min-height: 60px; padding-bottom: 0; padding-top: 0; - border: 1px dashed #c3c1c3; + border: 1px dashed #e5e5e3; } /* -- Dragula Specific Styles -- */ diff --git a/entity_reference_layout.module b/entity_reference_layout.module index 9f616a8..737012d 100644 --- a/entity_reference_layout.module +++ b/entity_reference_layout.module @@ -370,9 +370,17 @@ function theme_entity_reference_layout_widget(array $variables) { foreach ($form_with_layout as $key => $section) { if (!empty($section['layout']['#value'])) { $layout_instance = $layout_plugin_manager->createInstance($section['layout']['#value'], $section['config']['#value']); - $section['preview']['regions'] = [ - '#weight' => 1000, - ] + $layout_instance->build($section['#regions']); + $section['preview'] = [ + 'content' => [ + '#type' => 'container', + '#attributes' => ['class' => ['erl-layout__content']], + 'preview' => $section['preview'], + ], + 'regions' => [ + '#weight' => 1000, + '#attributes' => ['class' => ['erl-layout__regions']], + ] + $layout_instance->build($section['#regions']), + ]; } $section['preview']['#weight'] = 1000; $build['layout_items'][] = $section; diff --git a/js/erl-widget.js b/js/erl-widget.js index d40a1f2..efe62fd 100644 --- a/js/erl-widget.js +++ b/js/erl-widget.js @@ -83,6 +83,19 @@ updateFields($container.closest('.erl-field')); } + var enhanceRadioSelect = function() { + $('.layout-radio-item').click(function(){ + $(this).find('input[type=radio]').prop("checked", true).trigger("change"); + $(this).siblings().removeClass('active'); + $(this).addClass('active'); + }); + $('.layout-radio-item').each(function(){ + if ($(this).find('input[type=radio]').prop("checked")) { + $(this).addClass('active'); + } + }); + } + // Add create item links. $('.erl-field', context).once('erl-add-item-links').each(function(index, item){ @@ -165,6 +178,9 @@ appendTo: $('.erl-form').parent(), draggable: true, autoResize: false, + open: function (event, ui) { + enhanceRadioSelect(); + }, close: function(event, ui) { $(event.target).find('.erl-cancel').trigger('mousedown').trigger('click'); } diff --git a/src/Plugin/Field/FieldWidget/EntityReferenceLayoutWidget.php b/src/Plugin/Field/FieldWidget/EntityReferenceLayoutWidget.php index 05fddf6..eb270f0 100644 --- a/src/Plugin/Field/FieldWidget/EntityReferenceLayoutWidget.php +++ b/src/Plugin/Field/FieldWidget/EntityReferenceLayoutWidget.php @@ -540,11 +540,6 @@ class EntityReferenceLayoutWidget extends WidgetBase implements ContainerFactory ]; $element['entity_form']['layout_plugin_form'] += $layout_plugin->buildConfigurationForm([], $form_state); } - else { - $element['entity_form']['layout_plugin_form'] += [ - '#markup' => $this->t('This layout has no additional options.'), - ]; - } } // Add the additional options form if applicable. // This is deprecated and included only for backwards compatibility. @@ -552,7 +547,7 @@ class EntityReferenceLayoutWidget extends WidgetBase implements ContainerFactory // Other layout options. $element['entity_form']['options'] = [ '#type' => 'details', - '#title' => $this->t('Additional Layout Options'), + '#title' => $this->t('Basic Layout Options'), '#description' => $this->t('Classes will be applied to the container for this field item.'), '#open' => FALSE, ];