diff --git a/src/Element/ElementPreRenderLayoutBuilder.php b/src/Element/ElementPreRenderLayoutBuilder.php index da7143ff1d92622fa64c80d871e76e35de88c28a..c9e54caeade998e78844344dd888ae9e0b3871ec 100644 --- a/src/Element/ElementPreRenderLayoutBuilder.php +++ b/src/Element/ElementPreRenderLayoutBuilder.php @@ -17,7 +17,32 @@ class ElementPreRenderLayoutBuilder implements TrustedCallbackInterface { /** * Weight to ensure the section label is placed first. */ - public const SECTION_LABEL_WEIGHT = -1; + public const SECTION_LABEL_WEIGHT = -50; + + /** + * Weight to ensure the remove link is placed second. + */ + public const REMOVE_WEIGHT = -45; + + /** + * Weight to ensure the configure link is placed third. + */ + public const CONFIGURE_WEIGHT = -40; + + /** + * Weight to ensure the Section Library add to library link is placed fourth. + */ + public const SECTION_LIBRARY_ADD_WEIGHT = -35; + + /** + * Weight to ensure the Layout Builder Reorder up link is placed fifth. + */ + public const LAYOUT_BUILDER_REORDER_UP_WEIGHT = -30; + + /** + * Weight to ensure the Layout Builder Reorder down link is placed sixth. + */ + public const LAYOUT_BUILDER_REORDER_DOWN_WEIGHT = -25; /** * Handle styling for layout builder element. @@ -76,6 +101,7 @@ class ElementPreRenderLayoutBuilder implements TrustedCallbackInterface { $layoutBuilderArea->remove->addClass('mx-1'); $layoutBuilderArea->remove->setIcon(Bootstrap::icon('trash')); $layoutBuilderArea->remove->setProperty('icon_position', 'icon_only'); + $layoutBuilderArea->remove->setProperty('weight', static::REMOVE_WEIGHT); } } @@ -86,6 +112,7 @@ class ElementPreRenderLayoutBuilder implements TrustedCallbackInterface { $layoutBuilderArea->configure->addClass('mx-1'); $layoutBuilderArea->configure->setIcon(Bootstrap::icon('pencil-fill')); $layoutBuilderArea->configure->setProperty('icon_position', 'icon_only'); + $layoutBuilderArea->configure->setProperty('weight', static::CONFIGURE_WEIGHT); } } @@ -169,6 +196,29 @@ class ElementPreRenderLayoutBuilder implements TrustedCallbackInterface { $layoutBuilderArea->add_to_library->addClass('mx-1'); $layoutBuilderArea->add_to_library->setIcon(Bootstrap::icon('folder-plus')); $layoutBuilderArea->add_to_library->setProperty('icon_position', 'icon_only'); + $layoutBuilderArea->add_to_library->setProperty('weight', static::SECTION_LIBRARY_ADD_WEIGHT); + } + } + + // Layout Builder Reorder: Move section up. + if (isset($layoutBuilderArea->rearrange_up) && $layoutBuilderArea->rearrange_up->isType('link')) { + $url = $layoutBuilderArea->rearrange_up->getProperty('url'); + if ($url instanceof Url) { + $layoutBuilderArea->rearrange_up->addClass('mx-1'); + $layoutBuilderArea->rearrange_up->setIcon(Bootstrap::icon('arrow-up')); + $layoutBuilderArea->rearrange_up->setProperty('icon_position', 'icon_only'); + $layoutBuilderArea->rearrange_up->setProperty('weight', static::LAYOUT_BUILDER_REORDER_UP_WEIGHT); + } + } + + // Layout Builder Reorder: Move section down. + if (isset($layoutBuilderArea->rearrange_down) && $layoutBuilderArea->rearrange_down->isType('link')) { + $url = $layoutBuilderArea->rearrange_down->getProperty('url'); + if ($url instanceof Url) { + $layoutBuilderArea->rearrange_down->addClass('mx-1'); + $layoutBuilderArea->rearrange_down->setIcon(Bootstrap::icon('arrow-down')); + $layoutBuilderArea->rearrange_down->setProperty('icon_position', 'icon_only'); + $layoutBuilderArea->rearrange_down->setProperty('weight', static::LAYOUT_BUILDER_REORDER_DOWN_WEIGHT); } } }