Add grey lines to visually show level of nesting

Uses some CSS to draw some grey lines to show which radios descend from
which.

I don’t feel like the intentation is enough, and it looks a bit messy
because the circles of the radio buttons don’t have straight edges
easily suggest visual alignment.

Copies the design from conditionally revealing content in the design
system:
https://design-system.service.gov.uk/components/radios/#conditionally-revealing-content

Implementation is done with pseudo elements, because borders can’t be
positionned exactly enough.
This commit is contained in:
Chris Hill-Scott
2019-01-04 13:44:52 +00:00
parent 39506c4794
commit 4aa4970fc9
4 changed files with 64 additions and 11 deletions

View File

@@ -251,11 +251,6 @@ details .arrow {
cursor: default;
}
.multiple-choice > .panel {
border-left: none;
padding: 0 0 0 12px;
}
.heading-inline {
display: inline-block;
}

View File

@@ -57,11 +57,11 @@
border: 2px solid $black;
outline: 1px solid rgba($white, 0.1);
position: relative;
z-index: 1000;
z-index: 10;
color: $text-colour;
&:focus {
z-index: 10;
z-index: 1000;
outline: 3px solid $yellow;
}

View File

@@ -57,3 +57,60 @@
}
}
.radios-nested {
margin-bottom: 10px;
.multiple-choice {
$circle-diameter: 39px;
$border-thickness: 4px;
$border-indent: ($circle-diameter / 2) - ($border-thickness / 2);
float: none;
position: relative;
&:before {
content: "";
position: absolute;
bottom: 0;
left: $border-indent;
width: $border-thickness;
height: 100%;
background: $border-colour;
}
label {
float: none;
}
[type=radio]+label::before {
// To overlap the grey inset line
background: $white;
}
ul {
// To equalise the spacing between the line and the top/bottom of
// the radio
margin-top: 5px;
margin-bottom: -5px;
}
.block-label-hint {
&:after {
// Adds an little extra segment of line alongside the current folder
// hint so that it extends all the way down to the next radio
content: "";
position: absolute;
bottom: -5px;
left: $border-indent;
width: $border-thickness;
height: 25px;
background: $border-colour;
}
}
}
}

View File

@@ -19,10 +19,9 @@
options,
child_map,
disable=[],
option_hints={},
top_level=False
option_hints={}
) %}
<ul{% if not top_level %} class="panel panel-border-narrow"{% endif %}>
<ul>
{% for option in options %}
{% if child_map[option.data] %}
{% call radio(option, disable, option_hints, as_list_item=True) %}
@@ -47,7 +46,9 @@
{% call radios_wrapper(
field, hint, disable, option_hints, hide_legend
) %}
{{ radio_list(child_map[None], child_map, disable, option_hints, top_level=True) }}
<div class="radios-nested">
{{ radio_list(child_map[None], child_map, disable, option_hints) }}
</div>
{% endcall %}
{% endmacro %}