bulma/sass/grid/grid.scss
Jeremy Thomas 6da946f083 Fix #3747
2024-04-29 12:49:22 +01:00

210 lines
5.2 KiB
SCSS

@use "../utilities/css-variables" as cv;
@use "../utilities/initial-variables" as iv;
@use "../utilities/extends";
@use "../utilities/mixins" as mx;
$max-column-count: 12;
$grip-gap: 0.75rem;
$column-min-base: 1.5rem;
@mixin fixed-grid-properties($suffix: "") {
@for $i from 1 through $max-column-count {
&.#{iv.$class-prefix}has-#{$i}-cols#{$suffix} {
> .#{iv.$class-prefix}grid {
@include cv.register-var("grid-column-count", #{$i});
}
}
}
}
$grid-container-name: bulma-fixed-grid;
.#{iv.$class-prefix}fixed-grid {
@extend %block;
container-name: $grid-container-name;
container-type: inline-size;
> .#{iv.$class-prefix}grid {
@include cv.register-vars(
(
"grid-gap-count": calc(#{cv.getVar("grid-column-count")} - 1),
"grid-column-count": 2,
)
);
grid-template-columns: repeat(cv.getVar("grid-column-count"), 1fr);
}
@include fixed-grid-properties;
@include mx.container-until($grid-container-name, iv.$tablet) {
@include fixed-grid-properties("-mobile");
}
@include mx.container-from($grid-container-name, iv.$tablet) {
@include fixed-grid-properties("-tablet");
}
@include mx.container-from($grid-container-name, iv.$desktop) {
@include fixed-grid-properties("-desktop");
}
@include mx.container-from($grid-container-name, iv.$widescreen) {
@include fixed-grid-properties("-widescreen");
}
@include mx.container-from($grid-container-name, iv.$fullhd) {
@include fixed-grid-properties("-fullhd");
}
&.#{iv.$class-prefix}has-auto-count {
.#{iv.$class-prefix}grid {
@include mx.container-until($grid-container-name, iv.$tablet) {
@include cv.register-var("grid-column-count", 2);
}
@include mx.container-from($grid-container-name, iv.$tablet) {
@include cv.register-var("grid-column-count", 4);
}
@include mx.container-from($grid-container-name, iv.$desktop) {
@include cv.register-var("grid-column-count", 8);
}
@include mx.container-from($grid-container-name, iv.$widescreen) {
@include cv.register-var("grid-column-count", 12);
}
@include mx.container-from($grid-container-name, iv.$fullhd) {
@include cv.register-var("grid-column-count", 16);
}
}
}
}
.#{iv.$class-prefix}grid {
@include cv.register-vars(
(
"grid-gap": $grip-gap,
"grid-column-min": 9rem,
"grid-cell-column-span": 1,
"grid-cell-row-span": 1,
)
);
@extend %block;
display: grid;
gap: cv.getVar("grid-gap");
column-gap: #{cv.getVarWithBackup("grid-column-gap", "grid-gap")};
row-gap: #{cv.getVarWithBackup("grid-row-gap", "grid-gap")};
grid-template-columns: repeat(
auto-fit,
minmax(#{cv.getVar("grid-column-min")}, 1fr)
);
grid-template-rows: auto;
&.is-auto-fill {
grid-template-columns: repeat(
auto-fill,
minmax(#{cv.getVar("grid-column-min")}, 1fr)
);
}
@for $i from 1 through 12 {
&.#{iv.$class-prefix}is-col-min-#{$i} {
@include cv.register-vars(
(
"grid-column-min": #{$column-min-base * $i},
)
);
}
}
}
@mixin cell-properties($suffix: "") {
@for $i from 1 through $max-column-count {
$name: $i + $suffix;
&.#{iv.$class-prefix}is-col-start-#{$name} {
@include cv.register-var("grid-cell-column-start", #{$i});
}
&.#{iv.$class-prefix}is-col-end-#{$name} {
@include cv.register-var("grid-cell-column-end", #{$i});
}
&.#{iv.$class-prefix}is-col-from-end-#{$name} {
@include cv.register-var("grid-cell-column-start", #{$i * -1});
}
&.#{iv.$class-prefix}is-col-span-#{$name} {
@include cv.register-var("grid-cell-column-span", #{$i});
}
&.#{iv.$class-prefix}is-row-start-#{$name} {
@include cv.register-var("grid-cell-row-start", #{$i});
}
&.#{iv.$class-prefix}is-row-end-#{$name} {
@include cv.register-var("grid-cell-row-end", #{$i});
}
&.#{iv.$class-prefix}is-row-from-end-#{$name} {
@include cv.register-var("grid-cell-row-start", #{$i * -1});
}
&.#{iv.$class-prefix}is-row-span-#{$name} {
@include cv.register-var("grid-cell-row-span", #{$i});
}
}
}
.#{iv.$class-prefix}cell {
grid-column-end: span cv.getVar("grid-cell-column-span");
grid-column-start: cv.getVar("grid-cell-column-start");
grid-row-end: span cv.getVar("grid-cell-row-span");
grid-row-start: cv.getVar("grid-cell-row-start");
// Sizes
&.#{iv.$class-prefix}is-col-start-end {
@include cv.register-var("grid-cell-column-start", -1);
}
&.#{iv.$class-prefix}is-row-start-end {
@include cv.register-var("grid-cell-row-start", -1);
}
@include cell-properties;
@include mx.mobile {
@include cell-properties("-mobile");
}
@include mx.tablet {
@include cell-properties("-tablet");
}
@include mx.tablet-only {
@include cell-properties("-tablet-only");
}
@include mx.desktop {
@include cell-properties("-desktop");
}
@include mx.desktop-only {
@include cell-properties("-desktop-only");
}
@include mx.widescreen {
@include cell-properties("-widescreen");
}
@include mx.widescreen-only {
@include cell-properties("-widescreen-only");
}
@include mx.fullhd {
@include cell-properties("-fullhd");
}
}