diff --git a/css/page-manager.admin.css b/css/page-manager.admin.css new file mode 100644 index 0000000..39afd04 --- /dev/null +++ b/css/page-manager.admin.css @@ -0,0 +1,114 @@ +/** + * @file + * Styles for Page Manager admin. + */ + +/* Narrow screens */ + +.page-manager-wizard-tree, +.page-manager-wizard-form { + box-sizing: border-box; +} + +/** + * Wizard actions across the top. + */ +.page-manager-wizard-actions { + text-align: right; /* LTR */ +} +.page-manager-wizard-actions ul.inline, +.page-manager-wizard-actions ul.inline li { + display: inline-block; + margin: 0; +} +.page-manager-wizard-actions ul.inline { + border-top: 1px solid black; + border-left: 1px solid black; +} +.page-manager-wizard-actions ul.inline li { + border-right: 1px solid black; + padding: .5em; +} + +/** + * The tree of wizard steps. + */ +.page-manager-wizard-tree ul { + margin: 0; + padding: 0; + list-style: none; +} +.page-manager-wizard-tree ul > li > ul { + margin-left: 1em; +} +.page-manager-wizard-tree > ul { + border: 1px solid black; + padding-bottom: .5em; + margin-bottom: 20px; +} +.page-manager-wizard-tree li { + border-bottom: 1px solid black; + padding: .5em; + padding-right: 0; +} +.page-manager-wizard-tree li:last-child { + border-bottom: 0; + padding-bottom: 0; +} + +/** + * The wizard form. + */ +.page-manager-wizard-form { + border: 1px solid black; + padding: 1em; + margin-bottom: 20px; +} + +/* Wide screens */ +@media + screen and (min-width: 780px), + (orientation: landscape) and (min-device-height: 780px) { + + /** + * Overall layout. + */ + .page-manager-wizard-tree { + float: left; /* LTR */ + width: 20%; + } + .page-manager-wizard-form { + float: left; /* LTR */ + width: 80%; + } + .page-manager-wizard-form-actions { + margin-left: 20%; /* LTR */ + } + + /** + * Make the borders look nice. + */ + .page-manager-wizard-tree > ul { + border-right: 0; /* LTR */ + } + .page-manager-wizard-form { + min-height: 700px; + } + + /** + * Right-to-left support. + */ + [dir="rtl"] .page-manager-wizard-tree, + [dir="rtl"] .page-manager-wizard-form { + float: right; + } + [dir="rtl"] .page-manager-wizard-form-actions { + margin-left: 0; + margin-right: 20%; + } + [dir="rtl"] .page-manager-wizard-tree > ul { + border-right: 1px solid black; + border-left: 0; + } +} + diff --git a/page_manager.libraries.yml b/page_manager.libraries.yml new file mode 100644 index 0000000..14f4d82 --- /dev/null +++ b/page_manager.libraries.yml @@ -0,0 +1,5 @@ +admin: + version: VERSION + css: + layout: + css/page-manager.admin.css: {} diff --git a/page_manager.module b/page_manager.module index 1031feb..85d5a31 100644 --- a/page_manager.module +++ b/page_manager.module @@ -9,6 +9,9 @@ */ function page_manager_theme() { return [ + 'page_manager_wizard_form' => [ + 'render element' => 'form', + ], 'page_manager_wizard_tree' => [ 'variables' => [ 'wizard' => NULL, diff --git a/src/Wizard/PageEditWizard.php b/src/Wizard/PageEditWizard.php index 43c6fba..9730de8 100644 --- a/src/Wizard/PageEditWizard.php +++ b/src/Wizard/PageEditWizard.php @@ -132,27 +132,32 @@ class PageEditWizard extends PageWizardBase { /** @var $page \Drupal\page_manager\Entity\Page */ $page = $cached_values['page']; - // Setup the step rendering theme element. - $prefix = []; - $prefix['actions'] = [ + // The page actions. + $form['wizard_actions'] = [ '#theme' => 'links', '#links' => [], + '#attributes' => [ + 'class' => ['inline'], + ] ]; foreach ($this->getPageActionLinks($page) as $action) { - $prefix['actions']['#links'][] = $action + [ + $form['wizard_actions']['#links'][] = $action + [ 'attributes' => [ 'class' => 'use-ajax', 'data-dialog-type' => 'modal', ], ]; } - $prefix['tree'] = [ + + // The tree of wizard steps. + $form['wizard_tree'] = [ '#theme' => ['page_manager_wizard_tree'], '#wizard' => $this, '#cached_values' => $form_state->getTemporaryValue('wizard'), ]; - // @todo properly inject the renderer. - $form['#prefix'] = \Drupal::service('renderer')->render($prefix); + + $form['#theme'] = 'page_manager_wizard_form'; + $form['#attached']['library'][] = 'page_manager/admin'; return $form; } diff --git a/templates/page-manager-wizard-form.html.twig b/templates/page-manager-wizard-form.html.twig new file mode 100644 index 0000000..62fb633 --- /dev/null +++ b/templates/page-manager-wizard-form.html.twig @@ -0,0 +1,32 @@ +{# +/** + * @file + * Default theme implementation for a 'form' element. + * + * Available variables + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The child elements of the form. + * + * @see template_preprocess_form() + * + * @ingroup themeable + */ +#} +