diff --git a/templates/cassiopeia/index.php b/templates/cassiopeia/index.php
index e11b9229b9ab8..6e4d83a343438 100644
--- a/templates/cassiopeia/index.php
+++ b/templates/cassiopeia/index.php
@@ -50,6 +50,18 @@
$logo = '';
}
+$hasClass = '';
+
+if ($this->countModules('sidebar-left'))
+{
+ $hasClass .= ' has-sidebar-left';
+}
+
+if ($this->countModules('sidebar-right'))
+{
+ $hasClass .= ' has-sidebar-right';
+}
+
// Header bottom margin
$headerMargin = !$this->countModules('banner') ? ' mb-4' : '';
@@ -72,7 +84,8 @@
. ($layout ? ' layout-' . $layout : ' no-layout')
. ($task ? ' task-' . $task : ' no-task')
. ($itemid ? ' itemid-' . $itemid : '')
- . ' ' . $pageclass;
+ . ' ' . $pageclass
+ . $hasClass;
echo ($this->direction == 'rtl' ? ' rtl' : '');
?>">
-
-
- countModules('sidebar-left')) : ?>
-
-
-
-
-
-
-
-
-
-
+ countModules('sidebar-left')) : ?>
+
+
- countModules('sidebar-right')) : ?>
-
-
+
+
+
+
+
+
+
+ countModules('sidebar-right')) : ?>
+
+
countModules('bottom-a')) : ?>
diff --git a/templates/cassiopeia/scss/blocks/_css-grid.scss b/templates/cassiopeia/scss/blocks/_css-grid.scss
index 1a321caaa1ae9..a9839db34f4d3 100644
--- a/templates/cassiopeia/scss/blocks/_css-grid.scss
+++ b/templates/cassiopeia/scss/blocks/_css-grid.scss
@@ -1,7 +1,6 @@
// CSS Grid
@supports (display: grid) {
- /* autoprefixer: off */
.site-grid {
display: grid;
grid-template-areas:
@@ -9,7 +8,7 @@
". banner banner banner banner ."
". top-a top-a top-a top-a ."
". top-b top-b top-b top-b ."
- ". main main main main ."
+ ". side-l comp comp side-r ."
". bot-a bot-a bot-a bot-a ."
". bot-b bot-b bot-b bot-b ."
". footer footer footer footer ."
@@ -24,19 +23,23 @@
margin: 0 0 $cassiopeia-grid-gutter;
}
- .container-top-a,
- .container-top-b,
- .container-bottom-a,
- .container-bottom-b {
- display: grid;
+ .container-component,
+ .container-sidebar-left,
+ .container-sidebar-right {
+ display: flex;
+ flex-direction: column;
- > div {
- margin: 0;
+ > div + div {
+ margin-top: cassiopeia-grid-gutter;
}
}
- .container-main {
- margin: ($cassiopeia-grid-gutter / -2) ($cassiopeia-grid-gutter / -2) ($cassiopeia-grid-gutter / 2);
+ &:not(.has-sidebar-left) .container-component {
+ grid-column-start: main-start;
+ }
+
+ &:not(.has-sidebar-right) .container-component {
+ grid-column-end: main-end;
}
> .full-width {
@@ -47,7 +50,9 @@
grid-template-areas:
". head head head head ."
". banner banner banner banner ."
- ". main main main main ."
+ ". comp comp comp comp ."
+ ". side-l side-l side-l side-l ."
+ ". side-r side-r side-r side-r ."
". top-a top-a top-a top-a ."
". top-b top-b top-b top-b ."
". bot-a bot-a bot-a bot-a ."
@@ -74,10 +79,12 @@
padding-right: 0;
padding-left: 0;
}
+
> .grid-child {
padding-right: ($cassiopeia-grid-gutter * 2);
padding-left: ($cassiopeia-grid-gutter * 2);
}
+
.container-main {
padding-right: ($cassiopeia-grid-gutter * 1.5);
padding-left: ($cassiopeia-grid-gutter * 1.5);
@@ -97,9 +104,7 @@
@include media-breakpoint-up(xl) {
margin-top: -3rem;
}
-
}
-
}
.container-header { grid-area: head; }
@@ -122,11 +127,14 @@
.container-top-b,
.container-bottom-a,
.container-bottom-b {
- /* autoprefixer: off */
display: grid;
grid-gap: $cassiopeia-grid-gutter;
grid-template-columns: repeat(auto-fit, minmax(24%, 1fr));
+ > div {
+ margin: 0;
+ }
+
@include media-breakpoint-down(md) {
grid-template-columns: 1fr 1fr;
}