Files
grecia/app/assets/stylesheets/admin.scss
Javi Martín d702fbbfc7 Add a caption to headings table in budgets admin
Captions benefit blind screen reader users who navigate through tables,
particularly in this case because we potentially have several tables
with headings (one table per group), so when navigating through tables
it might be hard to know which group the headings belong to.

In this case they also benefit sighted users. Usability tests have shown
the "Groups and headings" section is a bit confusing, so adding a
caption like "Headings in Districts" helps clarifying Districts is a
group and the table refers to headings in that group.

The very same table is rendered in the "headings" step of the budget
creation wizard. However, in that case the information of the caption is
redundant because the page is specific for headings belonging to a
certain group. We're making the element invisible but still keeping it
for screen reader users in order to ease their navigation through
tables.
2021-10-25 18:34:19 +02:00

1189 lines
17 KiB
SCSS

// Table of Contents
//
// 01. Global styles
// 02. Sidebar
// 03. List elements
// 04. Stats
// 05. Management
// 06. Polls
// 07. Legislation
// 08. CMS
// 09. Map
// 10. Budgets
// 11. Newsletters
//
// 01. Global styles
// -----------------
$admin-border-color: #d3d9dd;
$admin-border: 2px solid $admin-border-color;
$admin-color: #245b80;
$admin-text: #434d54;
$sidebar: #245b80;
$sidebar-hover: #25597c;
$sidebar-active: #f4fcd0;
$table-border: $admin-border;
$table-header: #ecf1f6;
.admin {
@include admin-layout;
> header {
border-bottom: 1px solid #eee;
> * {
@include full-width-background($adjust-margin: false, $adjust-padding: true);
}
}
h2 {
font-weight: 100;
margin-bottom: $line-height;
small {
color: $text-medium;
}
&.title {
text-transform: uppercase;
}
}
h3 {
margin: $line-height 0;
}
.back {
float: none;
}
.top-links {
background: #000;
color: $white;
a {
line-height: rem-calc($line-height * 1.5);
}
}
.top-bar {
height: auto;
padding-top: $line-height / 2;
@include breakpoint(small only) {
.top-bar-left ul {
display: inline-block;
}
.top-bar-right {
> ul {
border-bottom: 0;
padding-bottom: 0;
margin-bottom: 0;
}
.submenu {
position: initial;
}
a {
font-weight: normal;
}
}
[class^="icon-"] {
display: none;
}
}
[class^="icon-"] {
font-size: $base-font-size;
}
h1 {
margin-top: $line-height / 2;
margin-bottom: 0;
@include breakpoint(medium) {
margin-top: 0;
}
small {
color: inherit;
text-transform: uppercase;
}
a {
color: inherit;
display: inline-block;
font-family: "Lato" !important;
font-size: rem-calc(24);
font-weight: lighter;
line-height: 1;
}
}
}
.top-bar .menu > li {
@include breakpoint(medium) {
height: auto !important;
}
}
.title-bar {
color: #000;
position: absolute;
right: 12px;
}
.notifications.unread-notifications::after {
color: $admin-color;
}
.fieldset {
select {
height: $line-height * 2;
}
[type="text"] {
border-radius: 0;
margin-bottom: 0 !important;
}
}
th,
td {
text-align: left;
&.text-center {
text-align: center;
}
&.text-right {
padding-right: $line-height;
text-align: right;
}
&.with-button {
line-height: $line-height * 2;
}
}
table {
caption {
font-style: italic;
font-weight: normal;
padding: 0;
text-align: $global-left;
}
thead {
&,
tr {
border: 0;
}
th:first-of-type {
border-top-left-radius: rem-calc(8);
}
th:last-of-type {
border-top-right-radius: rem-calc(8);
}
}
th {
background: $table-header;
color: $admin-text;
padding: $line-height / 2;
label {
color: $white;
}
a {
color: inherit;
white-space: nowrap;
}
}
tr {
border: $table-border;
&:hover {
background: adjust-color(darken($table-background, 2%), $red: -4, $green: -1);
}
}
.break {
word-break: break-word;
}
&.fixed {
table-layout: fixed;
}
[type="submit"] ~ a {
margin-left: $line-height / 2;
}
[type="checkbox"] {
margin-bottom: 0;
vertical-align: middle;
}
}
hr {
max-width: none;
}
form {
.input-group-label {
height: $line-height * 2;
}
.checkbox,
.radio {
font-weight: bold;
}
select {
height: $input-height;
}
[type]:not([type="button"], [type=checkbox], [type=file], [type=radio], [type=submit]),
select {
background-color: $white;
border: $admin-border;
border-radius: rem-calc(6);
box-shadow: none;
&:focus {
border: $input-border-focus;
}
}
}
.form-label {
font-weight: bold;
margin-bottom: 0;
}
.menu.simple,
.order-links {
margin-bottom: $line-height / 2;
h2 {
font-weight: bold;
margin-bottom: $line-height / 3;
}
.is-active {
color: $admin-color;
font-weight: bold;
}
}
.order-links {
margin-bottom: $line-height;
}
.tabs-panel {
padding-left: 0;
padding-right: 0;
}
.accordion-title {
font-size: $base-font-size;
}
.button.secondary {
margin-right: rem-calc(12);
}
.admin-content {
.proposal-new {
padding-top: 0;
}
}
.is-featured {
margin-top: rem-calc(36);
}
}
.for-print-only {
display: none;
}
@include breakpoint(medium) {
tr {
.on-hover-block {
display: none;
}
&:hover .on-hover-block {
display: block;
margin: 0;
margin-top: $line-height / 2;
width: 100%;
}
}
}
@include breakpoint(medium) {
tr {
.on-hover {
display: none;
}
&:hover .on-hover {
display: inline;
}
}
}
.input-group {
.input-group-button {
padding-bottom: rem-calc(16);
vertical-align: top;
}
}
.sortable thead th:hover {
text-decoration: underline;
cursor: pointer;
}
.no-margin-bottom {
margin-bottom: 0 !important;
}
.enabled {
color: $color-success;
}
.disabled {
color: $text-medium;
}
.icon-sortable {
font-family: "Font Awesome 5 Free";
font-size: $small-font-size;
position: relative;
&::before,
&::after {
left: 6px;
opacity: 0.5;
position: absolute;
}
&::before {
content: "\f0d8";
bottom: 0;
}
&::after {
content: "\f0d7";
top: 0;
}
&.asc {
&::after {
opacity: 1;
}
}
&.desc {
&::before {
opacity: 1;
}
}
}
code {
word-break: break-all;
}
.content-type {
white-space: nowrap;
padding-right: $line-height;
label {
margin-left: 0 !important;
}
}
// 02. Sidebar
// -----------
// See admin/menu.scss
// 03. List elements
// -----------------
.delete {
border-bottom: 1px dotted #cf2a0e;
color: $delete;
font-size: $small-font-size;
&:hover,
&:active,
&:focus {
border-bottom-color: transparent;
color: #cf2a0e;
}
}
[class^="icon-"].delete {
border: 0;
font-size: $base-font-size;
}
.archived {
color: $text-medium;
font-size: rem-calc(12);
}
.ignored {
color: $text-medium;
font-size: rem-calc(12);
}
.rejected {
color: $delete;
}
.date {
color: $text-medium;
font-size: rem-calc(12);
font-style: italic;
}
.official {
background-color: #e7e7e7;
border-radius: rem-calc(3);
font-weight: normal;
padding: rem-calc(6) rem-calc(12);
}
.button.small.success {
margin-left: rem-calc(12);
&.no-margin {
margin-left: 0;
}
}
.moderation-description {
max-height: rem-calc(65);
overflow: hidden;
max-width: rem-calc(700);
&:hover {
max-height: rem-calc(1000);
transition: max-height 0.9s;
}
}
// 04. Stats
// ---------
.stats-numbers {
p {
color: $text-medium;
font-size: rem-calc(13);
padding: rem-calc(6);
text-transform: uppercase;
&.featured {
background: $info-bg;
border: 1px solid $info-border;
font-weight: bold;
}
.number {
color: $text;
font-size: rem-calc(30);
font-weight: bold;
}
}
}
// 05. Management
// --------------
.user-permissions {
ul {
list-style-type: none;
margin-left: 0;
}
li {
font-size: rem-calc(14);
margin-bottom: rem-calc(12);
span {
color: $text-medium;
font-size: rem-calc(12);
}
.icon-check {
color: $check;
}
.icon-x {
color: $delete;
}
}
}
.account-info,
.login-as {
background-color: $highlight;
border-radius: rem-calc(3);
font-size: rem-calc(16);
font-weight: normal;
margin-bottom: $line-height;
padding: $line-height / 2;
strong {
font-size: rem-calc(18);
}
}
.extra-info {
background: #fafafa;
border-bottom-left-radius: rem-calc(6);
border-bottom-right-radius: rem-calc(6);
border-top: 2px solid;
font-size: $small-font-size;
padding: $line-height / 2;
}
.admin-budget-investment-info {
background: $highlight-soft;
border: 2px solid $highlight;
border-radius: rem-calc(4);
margin-bottom: $line-height;
padding: $line-height / 2;
p {
font-size: $small-font-size;
margin-bottom: 0;
}
}
.admin {
.investment-projects-list.medium-9 {
width: 100%;
}
}
.investment-projects-summary {
th,
td {
text-align: center;
&:first-child {
font-weight: bold;
text-align: left;
}
&:last-child {
font-weight: bold;
}
}
tr {
&:nth-child(even) td:last-child {
background: $success-border;
}
&:nth-child(odd) td:last-child {
background: $success-bg;
}
}
}
.admin-content > header {
align-items: flex-start;
display: flex;
flex-wrap: wrap;
a,
button {
@include regular-button;
margin-left: auto;
}
}
.admin-content .select-geozone,
.admin-content .select-heading {
a {
color: inherit;
display: block;
&.is-active {
@include brand-text;
font-weight: bold;
text-decoration: underline;
}
}
}
.investment-projects-summary {
.total-price {
white-space: nowrap;
}
}
.admin {
.geozone {
background: #ececec;
border-radius: rem-calc(6);
color: $text;
display: inline-block;
font-size: $small-font-size;
margin-bottom: $line-height / 3;
padding: $line-height / 4 $line-height / 3;
text-decoration: none;
&:hover {
background: #e0e0e0;
}
}
}
.management-list {
max-width: rem-calc(1200);
}
// 06. Polls
// -----------------
.count-error {
background: $alert-bg !important;
color: $color-alert;
font-weight: bold;
}
table {
.callout {
height: $line-height * 2;
line-height: $line-height * 2;
margin: 0;
padding: 0 $line-height / 2;
}
}
// 07. Legislation
// --------------
// Markdown Editor
// ---------------
.markdown-editor {
background-color: $body-background;
.markdown-area,
.markdown-preview {
display: none;
}
}
.markdown-editor .markdown-preview {
overflow-y: auto;
height: 15em;
}
.markdown-editor textarea {
height: 15em;
}
.markdown-editor.fullscreen {
z-index: 9999;
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
}
.markdown-editor.fullscreen .markdown-preview {
height: 99%;
}
.edit-legislation-draft-version .row {
margin-bottom: 2rem;
}
.legislation-admin {
.menu .is-active > a {
background: none;
}
}
.legislation-process-save {
@include breakpoint(medium) {
float: right;
}
}
.legislation-question-delete {
@include breakpoint(medium) {
text-align: right;
}
}
// 08. CMS
// --------------
.cms-page-list {
[class^="icon-"] {
padding-right: $menu-icon-spacing;
vertical-align: middle;
}
}
.legislation-process-edit {
.edit-legislation-process {
small {
color: $text-medium;
}
.legislation-process-start,
.legislation-process-end {
@include breakpoint(medium) {
line-height: 3rem;
}
}
.legislation-process-end {
@include breakpoint(medium) {
text-align: right;
}
}
}
}
.legislation-draft-versions-index {
.legislation-process-question,
.legislation-process-version {
@include breakpoint(medium) {
text-align: right;
}
}
table tr td {
padding: 0.25rem 0.375rem;
}
}
.legislation-questions-form {
[type]:not([type="submit"]):not([type="file"]):not([type="checkbox"]):not([type="radio"]) {
margin-bottom: 0;
@include breakpoint(medium) {
margin-bottom: 1rem;
}
}
input::placeholder {
font-style: italic;
}
.legislation-questions-answers {
margin-bottom: 1rem;
}
}
.field {
margin-bottom: 1rem;
@include breakpoint(medium) {
margin-bottom: 0;
}
a {
line-height: 3rem;
color: $delete;
span {
text-decoration: underline;
}
.icon-x {
vertical-align: sub;
text-decoration: none;
line-height: 0;
}
&:active,
&:focus,
&:hover {
text-decoration: none;
}
}
}
.fullscreen-container {
a {
line-height: 8rem;
&:active,
&:focus,
&:hover {
text-decoration: none;
}
}
}
.fullscreen {
.fullscreen-container {
a {
line-height: 3rem;
@include breakpoint(medium) {
float: right;
}
}
.markdown-editor-header {
vertical-align: top;
display: inline-block;
color: $white;
@include breakpoint(medium) {
line-height: 3rem;
}
}
.truncate {
@include breakpoint(medium) {
width: 40vw;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.markdown-editor-buttons {
display: block;
@include breakpoint(medium) {
display: inline-block;
float: right;
padding-left: 1rem;
}
}
input {
font-size: $small-font-size;
padding: 0.5em 1em;
margin-left: 0;
margin-bottom: 0;
margin-top: 1rem;
@include breakpoint(medium) {
margin: 0.5rem;
}
}
a {
color: $white;
}
}
}
.legislation-draft-versions-form {
.legislation-process-version {
@include breakpoint(medium) {
text-align: right;
}
}
.control {
cursor: pointer;
margin-bottom: 1rem;
small {
display: block;
margin-top: -1rem;
color: $text-medium;
@include breakpoint(medium) {
margin-left: 0.25rem;
display: inline-block;
margin-top: 0;
}
}
}
.fullscreen-container {
text-align: center;
background: #ccdbe6;
.markdown-editor-header,
.markdown-editor-buttons {
display: none;
}
span {
text-decoration: none;
font-size: $small-font-size;
}
.icon-expand {
margin-left: 0.25rem;
vertical-align: sub;
text-decoration: none;
line-height: 0;
}
}
.markdown-preview {
font-family: $font-family-serif;
border: 1px solid #cacaca;
margin-bottom: 2rem;
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: $font-family-serif !important;
font-size: 1rem;
line-height: 1.625rem;
margin-bottom: 0;
}
p {
font-size: 1rem;
line-height: 1.625rem;
}
}
.fullscreen {
.markdown-area,
.markdown-preview {
display: block;
}
.column {
padding: 0;
}
.fullscreen-container {
text-align: left;
background: $admin-color;
padding: 0.5rem 1rem;
margin-bottom: 0;
}
.legislation-draft-version-body {
border-radius: 0;
@include breakpoint(medium) {
padding-left: 2rem;
padding-right: 2rem;
}
&:focus {
box-shadow: inset 0 1px 2px rgba(34, 34, 34, 0.1);
}
}
.markdown-preview {
padding: 1rem;
border: 0;
@include breakpoint(medium) {
padding: 1rem 2rem;
}
}
}
}
// 09. Map
// --------------
.map {
width: 100%;
height: 350px;
.map-marker {
visibility: visible;
position: absolute;
left: 50%;
top: 50%;
margin-top: -5px;
.map-icon {
width: 30px;
height: 30px;
border-radius: 50% 50% 50% 0;
background: #00cae9;
transform: rotate(-45deg);
}
.map-icon::after {
content: "";
width: 14px;
height: 14px;
margin: 8px 0 0 8px;
background: #fff;
position: absolute;
border-radius: 50%;
}
}
.map-attributtion {
visibility: visible;
height: auto;
}
}
.map-marker {
visibility: hidden;
}
.map-attributtion {
visibility: hidden;
height: 0;
}
// 10. Budgets
// -----------------
.advanced-filters {
margin: $line-height 0;
@include breakpoint(medium) {
margin: $line-height / 2 0 0;
}
}
.advanced-filters-content {
background: $highlight;
clear: both;
padding: $line-height / 2;
margin: $line-height 0;
.filter {
display: inline-block;
margin: 0 $line-height / 2;
label {
font-weight: normal;
margin: 0;
}
}
.button {
margin-top: $line-height / 2;
}
}
.columns-selector {
[class^="icon-"] {
vertical-align: middle;
}
&[aria-expanded='false'] {
@include hollow-button;
+ .columns-selector-wrapper {
display: none;
}
}
&[aria-expanded='true'] {
@include regular-button;
}
}
.columns-selector-wrapper {
background: $light-gray;
padding: 2rem;
border-radius: 10px;
margin-bottom: 1rem;
.column-selector-item {
display: inline-block;
&.hidden {
display: none;
}
label {
font-size: $base-font-size;
line-height: 1.5rem;
}
}
}
.column-selectable {
.hidden {
display: none;
}
}
// 11. Newsletters
// -----------------
.admin .newsletter-body-content {
table,
tbody,
tr,
th,
td {
border: 0;
&:nth-child(even),
&:nth-child(even) td:last-child,
&:nth-child(odd) td:last-child,
&:hover {
background: none;
}
}
}