Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix lists wrapping under the prefix #4702

Merged
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vanilla-framework",
"version": "3.12.1",
"version": "3.12.2",
"author": {
"email": "webteam@canonical.com",
"name": "Canonical Webteam"
Expand Down
36 changes: 28 additions & 8 deletions scss/_patterns_lists.scss
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,30 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
content: '';
display: inline-block;
height: $sph--large;
margin-right: $sph--large;
position: relative;
top: $sph--x-small;
width: $sph--large;
}
}

@mixin vf-list-item-has-prefix {
column-gap: $sph--large;
display: grid;
grid-template-areas:
'prefix inline-content'
'prefix children';
grid-template-columns: $sph--large 1fr;

> .p-list--divided {
margin-left: 0;
}

> * {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit worried about assumptions we have to make about HTML and children elements in order for this to work. Like the * is definitely a red flag if it can be avoided.

Would it work if we use padding or margin instead of "prefix" area, and position the prefix before element absolutely on top of this padding/margin?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah you're right, I liked being able to cleanly define the spacing using the grid gaps but the inability to target the text content of the <li> makes this approach a bit unreliable. Back to absolute positioning!

grid-area: children;
}
}

@mixin vf-list-item-divided {
box-shadow: inset 0px 1px 0px 0rem $color-mid-x-light;
box-shadow: inset 0px 1px 0px 0px $color-mid-x-light;
margin: 0;
padding-bottom: $sph--large;
padding-top: $sph--small;
Expand Down Expand Up @@ -116,6 +131,7 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
}

%vf-list-item-ordered {
counter-increment: list-item;
&::marker {
content: none;
display: none;
Expand All @@ -125,9 +141,7 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
color: $color-dark;
content: counters(list-item, '.') '. ';
display: inline-block;
margin-right: $sph--large;
text-align: right;
width: $sph--large;
}
}

Expand Down Expand Up @@ -159,8 +173,10 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
// stylelint-disable selector-max-type -- we want to target ordered lists
ol.p-list--divided {
list-style: none;

.p-list__item {
@extend %vf-list-item-ordered;
@include vf-list-item-has-prefix;
}
}
// stylelint-enable selector-max-type -- we want to target ordered lists
Expand All @@ -169,13 +185,17 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
// Displays item with a state icon
@mixin vf-p-list-item-state {
.is-ticked {
@include vf-list-item-has-prefix;

&::before {
@extend %vf-list-item-state-base;
@include vf-icon-success;
}
}

.is-crossed {
@include vf-list-item-has-prefix;

&::before {
@extend %vf-list-item-state-base;
@include vf-icon-error;
Expand All @@ -188,15 +208,16 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
color: $color-dark;
content: '•';
display: inline-block;
margin-right: $sph--large;
flex-shrink: 0;
grid-area: prefix;
text-align: right;
width: $sph--large;
}
}

// Displays item with a bullet
.has-bullet {
@extend %vf-list-item-bullet;
@include vf-list-item-has-prefix;
}

// Displays a list inline with spacing
Expand Down Expand Up @@ -456,7 +477,6 @@ $list-status-icon-nudge: 0.3rem; // 0.3rem seems to be a magic number that posit
columns: 2;

.p-list__item {
display: inline-block;
width: 100%;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{% extends "_layouts/examples.html" %}
{% block title %}Lists / All variations with horizontal divider and wrapping text{% endblock %}

{% block standalone_css %}patterns_lists{% endblock %}

{% block content %}
<ul class="p-list--divided">
<li class="p-list__item has-bullet">
Balance compute load in the cloud
<ul class="p-list--divided">
<li class="p-list__item has-bullet">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod risus a nisi pharetra iaculis. Maecenas dictum consectetur vehicula. Maecenas ullamcorper interdum ipsum, in rutrum felis consectetur quis. Quisque dictum lorem non pretium pretium. Aenean vitae sodales magna. Vivamus tincidunt, mauris vel accumsan pretium, sem dolor facilisis turpis, vitae imperdiet libero quam eget nibh. Nam vulputate ligula quis turpis facilisis, ac dapibus ipsum commodo. Aliquam dolor turpis, congue eu orci non, commodo placerat magna.</li>
<li class="p-list__item has-bullet">In sed tristique lectus. Nunc posuere ullamcorper nulla, id fringilla urna cursus et. Ut in augue sed risus iaculis aliquam. Sed ullamcorper turpis magna, ullamcorper egestas nunc auctor et. Ut rutrum nec enim et tincidunt. Ut quis est est. Donec aliquet mi sit amet lectus posuere consequat. Integer sit amet turpis vel nunc suscipit ultrices. Integer laoreet porttitor sagittis. Suspendisse ut erat ut eros luctus ultricies. Donec varius posuere maximus. Duis venenatis tortor sit amet lacus placerat, eget blandit ex imperdiet. Curabitur maximus aliquam nulla, id auctor ligula accumsan eu. Nulla facilisi. Integer dignissim diam ligula.</li>
<li class="p-list__item has-bullet">Nulla sit amet diam ac elit interdum eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce tempus imperdiet nisi, eget mollis leo faucibus a. Curabitur vitae sem lectus. Nulla facilisi. Fusce ullamcorper ultricies lectus a blandit. Nullam sed nisi libero. Praesent at lectus bibendum, iaculis neque nec, volutpat velit.</li>
</ul>
</li>
<li class="p-list__item is-ticked">
Balance compute load in the cloud
<ul class="p-list--divided">
<li class="p-list__item is-ticked">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod risus a nisi pharetra iaculis. Maecenas dictum consectetur vehicula. Maecenas ullamcorper interdum ipsum, in rutrum felis consectetur quis. Quisque dictum lorem non pretium pretium. Aenean vitae sodales magna. Vivamus tincidunt, mauris vel accumsan pretium, sem dolor facilisis turpis, vitae imperdiet libero quam eget nibh. Nam vulputate ligula quis turpis facilisis, ac dapibus ipsum commodo. Aliquam dolor turpis, congue eu orci non, commodo placerat magna.</li>
<li class="p-list__item is-ticked">In sed tristique lectus. Nunc posuere ullamcorper nulla, id fringilla urna cursus et. Ut in augue sed risus iaculis aliquam. Sed ullamcorper turpis magna, ullamcorper egestas nunc auctor et. Ut rutrum nec enim et tincidunt. Ut quis est est. Donec aliquet mi sit amet lectus posuere consequat. Integer sit amet turpis vel nunc suscipit ultrices. Integer laoreet porttitor sagittis. Suspendisse ut erat ut eros luctus ultricies. Donec varius posuere maximus. Duis venenatis tortor sit amet lacus placerat, eget blandit ex imperdiet. Curabitur maximus aliquam nulla, id auctor ligula accumsan eu. Nulla facilisi. Integer dignissim diam ligula.</li>
<li class="p-list__item is-ticked">Nulla sit amet diam ac elit interdum eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce tempus imperdiet nisi, eget mollis leo faucibus a. Curabitur vitae sem lectus. Nulla facilisi. Fusce ullamcorper ultricies lectus a blandit. Nullam sed nisi libero. Praesent at lectus bibendum, iaculis neque nec, volutpat velit.</li>
</ul>
</li>
<li class="p-list__item">
Balance compute load in the cloud
<ul class="p-list--divided">
<li class="p-list__item">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod risus a nisi pharetra iaculis. Maecenas dictum consectetur vehicula. Maecenas ullamcorper interdum ipsum, in rutrum felis consectetur quis. Quisque dictum lorem non pretium pretium. Aenean vitae sodales magna. Vivamus tincidunt, mauris vel accumsan pretium, sem dolor facilisis turpis, vitae imperdiet libero quam eget nibh. Nam vulputate ligula quis turpis facilisis, ac dapibus ipsum commodo. Aliquam dolor turpis, congue eu orci non, commodo placerat magna.</li>
<li class="p-list__item">In sed tristique lectus. Nunc posuere ullamcorper nulla, id fringilla urna cursus et. Ut in augue sed risus iaculis aliquam. Sed ullamcorper turpis magna, ullamcorper egestas nunc auctor et. Ut rutrum nec enim et tincidunt. Ut quis est est. Donec aliquet mi sit amet lectus posuere consequat. Integer sit amet turpis vel nunc suscipit ultrices. Integer laoreet porttitor sagittis. Suspendisse ut erat ut eros luctus ultricies. Donec varius posuere maximus. Duis venenatis tortor sit amet lacus placerat, eget blandit ex imperdiet. Curabitur maximus aliquam nulla, id auctor ligula accumsan eu. Nulla facilisi. Integer dignissim diam ligula.</li>
<li class="p-list__item">Nulla sit amet diam ac elit interdum eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce tempus imperdiet nisi, eget mollis leo faucibus a. Curabitur vitae sem lectus. Nulla facilisi. Fusce ullamcorper ultricies lectus a blandit. Nullam sed nisi libero. Praesent at lectus bibendum, iaculis neque nec, volutpat velit.</li>
</ul>
</li>
</ul>
<ol class="p-list--divided p-list--nested-counter">
<li class="p-list__item">
Balance compute load in the cloud
<ol class="p-list--divided">
<li class="p-list__item">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod risus a nisi pharetra iaculis. Maecenas dictum consectetur vehicula. Maecenas ullamcorper interdum ipsum, in rutrum felis consectetur quis. Quisque dictum lorem non pretium pretium. Aenean vitae sodales magna. Vivamus tincidunt, mauris vel accumsan pretium, sem dolor facilisis turpis, vitae imperdiet libero quam eget nibh. Nam vulputate ligula quis turpis facilisis, ac dapibus ipsum commodo. Aliquam dolor turpis, congue eu orci non, commodo placerat magna.</li>
<li class="p-list__item">In sed tristique lectus. Nunc posuere ullamcorper nulla, id fringilla urna cursus et. Ut in augue sed risus iaculis aliquam. Sed ullamcorper turpis magna, ullamcorper egestas nunc auctor et. Ut rutrum nec enim et tincidunt. Ut quis est est. Donec aliquet mi sit amet lectus posuere consequat. Integer sit amet turpis vel nunc suscipit ultrices. Integer laoreet porttitor sagittis. Suspendisse ut erat ut eros luctus ultricies. Donec varius posuere maximus. Duis venenatis tortor sit amet lacus placerat, eget blandit ex imperdiet. Curabitur maximus aliquam nulla, id auctor ligula accumsan eu. Nulla facilisi. Integer dignissim diam ligula.</li>
<li class="p-list__item">Nulla sit amet diam ac elit interdum eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce tempus imperdiet nisi, eget mollis leo faucibus a. Curabitur vitae sem lectus. Nulla facilisi. Fusce ullamcorper ultricies lectus a blandit. Nullam sed nisi libero. Praesent at lectus bibendum, iaculis neque nec, volutpat velit.</li>
</ol>
</li>
</ol>
{% endblock %}
2 changes: 1 addition & 1 deletion tests/parker.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ function generateMetrics(file, metricsArray) {
{
name: 'Stylesheet size',
benchmark: 150000,
threshold: 320000,
threshold: 350000,
result: results['total-stylesheet-size'],
},
{
Expand Down