0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-12-01 11:41:20 +01:00
wagtail/client/scss/components/forms/_nested-panel.scss
2024-01-20 21:22:02 +10:00

103 lines
2.7 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$header-icon-size: theme('spacing.4');
$icon-center-offset: 2px;
$guide-line-bottom-margin: calc($form-field-spacing / 3);
/**
* Panel styles shared between StreamField and InlinePanel,
* for repeating collapsible panels which can be reordered.
* Top-level and nested panels have guiding borders to show their start and end,
* as well as indentation for nested panels.
*/
// Styles for the top-level panel, and any panel within.
.w-panel--nested {
--nesting-indent: #{$nested-field-indent-sm};
@include media-breakpoint-up(sm) {
--nesting-indent: #{$nested-field-indent};
}
.w-panel__content {
@include guide-line-vertical();
// Center the vertical line.
margin-inline-start: calc(-1 * var(--nesting-indent));
padding-inline-start: var(--nesting-indent);
margin-bottom: $guide-line-bottom-margin;
@include media-breakpoint-up(sm) {
// Extra pixels for better alignment with center of icon.
margin-inline-start: calc(
-1 * var(--nesting-indent) + $icon-center-offset
);
}
}
.w-panel__anchor {
// Mask the overlap with the parent panels guide line.
background-color: theme('colors.surface-page');
}
.w-field__wrapper {
// Reduced field spacing for nested panels.
// Using both padding and margin so the field guide line extends below.
padding-bottom: calc($form-field-spacing / 2);
margin-bottom: $guide-line-bottom-margin;
}
}
// Styles for nested panels at the top level only.
.w-panel--nested:not(.w-panel .w-panel) {
> .w-panel__content {
@include guide-line-vertical-stop();
}
}
// Styles for nested panels excluding the top level.
.w-panel--nested .w-panel {
@include guide-line-nested();
margin-inline-start: var(--nesting-indent);
margin-bottom: 0;
.w-panel__content {
margin-inline-start: calc(
-1 * (var(--nesting-indent) + $icon-center-offset - var(--header-gap) / 2)
);
}
// Tighter spacing for nested panel headers so their icons align
// with parent panels guiding line.
.w-panel__header {
gap: 0;
transform: translateX(
calc(var(--w-direction-factor) * -1 * var(--nesting-indent))
);
@include media-breakpoint-up(sm) {
transform: translateX(
calc(var(--w-direction-factor) * theme('spacing.1'))
);
}
}
.w-panel__divider {
@include guide-line-horizontal();
// Slightly nicer text alignment.
margin-top: 1px;
}
.w-panel__heading--label {
// Use smaller labels within nested panels in InlinePanel.
@apply w-label-2;
}
// For nested panels, there is always enough space for the prefix anchor.
.w-panel__anchor--prefix {
display: inline-grid;
}
// Nested panels never need the suffix anchor.
.w-panel__anchor--suffix {
display: none;
}
}