Peter Makowski has proposed merging ~petermakowski/maas-site-manager:enable-stylelint into maas-site-manager:main.
Commit message: enable stylelint - fix existing stylelint errors Requested reviews: MAAS Committers (maas-committers) For more details, see: https://code.launchpad.net/~petermakowski/maas-site-manager/+git/site-manager/+merge/442220 -- Your team MAAS Committers is requested to review the proposed merge of ~petermakowski/maas-site-manager:enable-stylelint into maas-site-manager:main.
diff --git a/frontend/package.json b/frontend/package.json index 1acaffe..a834207 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,8 +10,8 @@ "preview": "vite preview", "playwright-test": "playwright test", "playwright-ui": "playwright test --ui", - "lint": "npmPkgJsonLint . && tsc && eslint . --ext .ts,.tsx", - "lint-fix": "eslint . --ext .ts,.tsx --fix", + "lint": "npmPkgJsonLint . && tsc && eslint . --ext .ts,.tsx && stylelint src/**/*.scss", + "lint-fix": "eslint . --ext .ts,.tsx --fix && stylelint src/**/*.scss --fix", "upgrade-all": "yarn-upgrade-all -E" }, "dependencies": { diff --git a/frontend/src/_patterns_icons.scss b/frontend/src/_patterns_icons.scss index 41dedd6..249ea08 100644 --- a/frontend/src/_patterns_icons.scss +++ b/frontend/src/_patterns_icons.scss @@ -8,22 +8,25 @@ .p-icon--sidebar-toggle { @extend %icon; - @include maas-icon-sidebar-collapse(); + @include maas-icon-sidebar-collapse; } .p-icon--maas { @extend %icon; - @include maas-icon-maas-logo(); + @include maas-icon-maas-logo; } .p-icon--status-ready { @extend %icon; + background-image: url("data:image/svg+xml,%3Csvg width='17' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9 4a4 4 0 110 8 4 4 0 010-8z' fill='#{vf-url-friendly-color(#D3E4ED)}' fill-rule='nonzero'/%3E%3C/svg%3E"); } + .p-icon--status-deployed { @extend %icon; @include vf-icon-status-small($color-x-dark); } + .p-icon--status-allocated { @extend %icon; @include vf-icon-status-small($color-information); diff --git a/frontend/src/_patterns_typography.scss b/frontend/src/_patterns_typography.scss index a629d0f..516faa3 100644 --- a/frontend/src/_patterns_typography.scss +++ b/frontend/src/_patterns_typography.scss @@ -1,9 +1,11 @@ .p-heading--small { @extend %table-header-label; + color: $color-dark; margin-bottom: $sp-unit * 0.25; text-transform: uppercase; } + .is-dark { .p-heading--small { color: $color-light; diff --git a/frontend/src/_settings.scss b/frontend/src/_settings.scss index 0588138..bdcb88c 100644 --- a/frontend/src/_settings.scss +++ b/frontend/src/_settings.scss @@ -2,11 +2,9 @@ // Vanilla settings: $grid-max-width: math.div(1920, 16) * 1rem; - $breakpoint-xx-large: 1920px; $side-navigation-z-index: 103; +/* stylelint-disable-next-line scss/dollar-variable-pattern */ $application-layout--breakpoint-side-nav-expanded: $breakpoint-xx-large; - $increase-font-size-on-larger-screens: false; - $assets-path: "/assets/fonts/"; diff --git a/frontend/src/_utils.scss b/frontend/src/_utils.scss index 972f9d4..f34cdf0 100644 --- a/frontend/src/_utils.scss +++ b/frontend/src/_utils.scss @@ -1,52 +1,67 @@ .u-flex { display: flex !important; } + .u-flex--large { @media (min-width: $breakpoint-large) { display: flex !important; } } + .u-flex--align-end { align-items: flex-end !important; } + .u-flex--justify-end { justify-content: flex-end !important; } + .u-flex--justify-between { justify-content: space-between !important; } + .u-flex--column { flex-direction: column !important; } + .u-flex--column-x-small { @media (max-width: $breakpoint-x-small) { flex-direction: column !important; } } + .u-flex--grow { flex-grow: 1 !important; } + .u-flex--wrap { flex-wrap: wrap !important; } + .u-capitalize { text-transform: capitalize !important; } + .u-no-wrap { white-space: nowrap !important; } + .u-no-border { border: 0 !important; } + .u-padding-top--medium { padding-top: $spv--medium !important; } + .u-width--100 { width: 100% !important; } + .u-no-padding { padding: 0 !important; } + // hide elements visually, but keep them accessible to screen readers .u-visually-hidden { position: absolute !important; diff --git a/frontend/src/components/MainLayout/_MainLayout.scss b/frontend/src/components/MainLayout/_MainLayout.scss index a9e170b..ae08fec 100644 --- a/frontend/src/components/MainLayout/_MainLayout.scss +++ b/frontend/src/components/MainLayout/_MainLayout.scss @@ -2,9 +2,11 @@ display: flex; flex-direction: column; overflow: hidden; + @media (min-width: $breakpoint-small) { flex-direction: row; } + .l-main__nav { flex-shrink: 0; @@ -12,11 +14,13 @@ height: 100vh; } } + .l-main__content { width: 100%; overflow-y: auto; } } + .l-aside.is-maas-site-manager { background: $color-x-light; } diff --git a/frontend/src/components/Meter/_Meter.scss b/frontend/src/components/Meter/_Meter.scss index 2593c24..b1a4280 100644 --- a/frontend/src/components/Meter/_Meter.scss +++ b/frontend/src/components/Meter/_Meter.scss @@ -1,5 +1,5 @@ $meter-height: $sp-unit * 1.75; -$meter-height--small: $sp-unit * 1.5; +$meter-height-small: $sp-unit * 1.5; .p-meter { margin-bottom: $sp-unit * 1.5; @@ -40,8 +40,8 @@ $meter-height--small: $sp-unit * 1.5; padding-top: $sp-unit * 0.75; .p-meter__bar { - border-radius: $meter-height--small; - height: $meter-height--small; + border-radius: $meter-height-small; + height: $meter-height-small; margin-bottom: $sp-unit * 0.75; } diff --git a/frontend/src/components/Navigation/_Navigation.scss b/frontend/src/components/Navigation/_Navigation.scss index 5b97ae3..93dbc97 100644 --- a/frontend/src/components/Navigation/_Navigation.scss +++ b/frontend/src/components/Navigation/_Navigation.scss @@ -1,23 +1,51 @@ .l-navigation { @include vf-transition($property: #{width, box-shadow, background}, $duration: fast); + + .l-navigation__controls { + margin-left: auto; + padding-top: 0.65rem; + z-index: $side-navigation-z-index + 1; + + @include vf-transition($property: #{opacity, visibility, transform, background}, $duration: fast); + + @media only screen and (min-width: ($breakpoint-small + 1)) { + opacity: 1; + visibility: visible; + position: absolute; + top: 0; + left: 0; + padding-top: 0; + transform: translateX(1rem) translateY(2.6rem); + } + + @media only screen and (min-width: ($breakpoint-xx-large)) { + display: none; + } + } + &:hover, &:focus-within, &.is-pinned { grid-area: nav; + @media only screen and (min-width: ($breakpoint-small + 1)) { position: static; } + .l-navigation__controls { opacity: 1; visibility: visible; + button { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgb(255 255 255 / 5%); } + @media only screen and (min-width: ($breakpoint-small + 1)) { transform: translateX(#{$application-layout--side-nav-width-expanded - 3rem}) translateY(0.8rem); } } } + &.is-collapsed { .l-navigation-collapse-toggle, .l-navigation__controls { @@ -26,35 +54,21 @@ } } } + .l-navigation__drawer { // ensures the drawer never exceeds the viewport width on mobile max-width: 100vw; } - .l-navigation__controls { - margin-left: auto; - padding-top: 0.65rem; - z-index: $side-navigation-z-index + 1; - @include vf-transition($property: #{opacity, visibility, transform, background}, $duration: fast); - @media only screen and (min-width: ($breakpoint-small + 1)) { - opacity: 1; - visibility: visible; - position: absolute; - top: 0; - left: 0; - padding-top: 0; - transform: translateX(1rem) translateY(2.6rem); - } - @media only screen and (min-width: ($breakpoint-xx-large)) { - display: none; - } - } + .l-navigation--item-icon { margin-right: $sph--small; } } + .p-panel.is-dark { .p-panel__header { background-color: inherit; + @include vf-transition($property: #{width, box-shadow, background}, $duration: fast); } @@ -63,6 +77,7 @@ text-decoration: none; display: flex; flex-direction: column; + @media only screen and (max-width: ($breakpoint-small)) { margin-top: 1.25rem; margin-bottom: 0; @@ -71,11 +86,13 @@ .p-panel__logo-name { @extend %vf-heading-4; - font-size: #{map-get($font-sizes, h4)}rem; - line-height: map-get($line-heights, x-small); + + font-size: #{map_get($font-sizes, h4)}rem; + line-height: map_get($line-heights, x-small); margin-bottom: 1.25rem !important; padding-top: 0.051rem !important; margin-left: 2rem !important; + @media only screen and (min-width: ($breakpoint-small + 1)) { margin-left: 2.5rem !important; } @@ -84,20 +101,26 @@ .p-panel__content { padding-top: 0; } + .p-side-navigation--icons { - & > .p-side-navigation__list:last-of-type::after { - content: ""; - } .p-side-navigation__list::after { left: 1rem; opacity: 1; } + + & > .p-side-navigation__list:last-of-type::after { + content: ""; + } + .no-divider::after { left: 1rem; opacity: 0; } + .p-side-navigation__footer { + // stylelint-disable-next-line scss/at-extend-no-missing-placeholder @extend .p-side-navigation__text; + padding-left: 1.5rem; transition-duration: 0ms; } @@ -106,9 +129,11 @@ .p-navigation__tagged-logo { min-width: auto; } + .p-navigation__tagged-logo .p-navigation__logo-tag { height: 2.3rem; left: 1rem; + @media only screen and (min-width: ($breakpoint-small + 1)) { left: 1.5rem; } @@ -119,6 +144,7 @@ text-align: left; justify-content: flex-start; } + .p-side-navigation--icons .p-side-navigation__item .p-side-navigation__item .p-side-navigation__link { padding-left: 4rem; } diff --git a/frontend/src/components/Popover/_Popover.scss b/frontend/src/components/Popover/_Popover.scss index 9e5d701..c9c670d 100644 --- a/frontend/src/components/Popover/_Popover.scss +++ b/frontend/src/components/Popover/_Popover.scss @@ -2,6 +2,8 @@ @extend %vf-bg--x-light; @extend %vf-has-box-shadow; @extend %vf-has-round-corners; + + width: 13.5rem; z-index: 10; } %popover-grid { @@ -11,10 +13,6 @@ padding: $spv--small $spv--large; } -.p-popover { - width: 13.5rem; -} - .p-popover__header { margin: 0 $sph--large; } @@ -25,11 +23,11 @@ .p-popover__secondary { @extend %popover-grid; + background: $color-light; } .p-popover__separator { - grid-column-start: 1; - grid-column-end: 4; + grid-column: 1 4; margin-top: $spv--small; } diff --git a/frontend/src/components/SecondaryNavigation/_SecondaryNavigation.scss b/frontend/src/components/SecondaryNavigation/_SecondaryNavigation.scss index a8e0e28..3a2d251 100644 --- a/frontend/src/components/SecondaryNavigation/_SecondaryNavigation.scss +++ b/frontend/src/components/SecondaryNavigation/_SecondaryNavigation.scss @@ -2,7 +2,7 @@ transition-duration: 0.165s; transition-property: width, box-shadow, background; transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - background: #444444; + background: #444; width: 0; height: 0; visibility: hidden; @@ -11,10 +11,12 @@ visibility: visible; width: 100%; height: 100%; + @media (min-width: $breakpoint-small) { width: $application-layout--side-nav-width-expanded; } } + .p-side-navigation__drawer { background: inherit; transform: none; @@ -22,11 +24,14 @@ max-width: 100%; height: inherit; } + .p-side-navigation__title { @extend %vf-heading-4; + padding-left: 1.5rem; margin-bottom: 2rem !important; } + .p-side-navigation__text, .p-side-navigation__item--title .p-side-navigation__item .p-side-navigation__link { @media (min-width: $breakpoint-small) { diff --git a/frontend/src/components/SitesList/SitesTable/SitesTableControls/ColumnsVisibilityControl/_ColumnsVisibilityControl.scss b/frontend/src/components/SitesList/SitesTable/SitesTableControls/ColumnsVisibilityControl/_ColumnsVisibilityControl.scss index 98cbc27..cbeec0f 100644 --- a/frontend/src/components/SitesList/SitesTable/SitesTableControls/ColumnsVisibilityControl/_ColumnsVisibilityControl.scss +++ b/frontend/src/components/SitesList/SitesTable/SitesTableControls/ColumnsVisibilityControl/_ColumnsVisibilityControl.scss @@ -1,16 +1,18 @@ .columns-visibility-checkbox { - &:first-of-type label { - padding-top: $sph--small; - } label { padding: 0 $sph--large $sph--x-small $sph--large; width: 100%; - text-indent: 0 + text-indent: 0; + } + + &:first-of-type label { + padding-top: $sph--small; } } [class^="p-button"].has-icon.columns-visibility-toggle { @extend %vf-input-elements; + padding-left: $spv--small; text-align: left; width: 100%; diff --git a/frontend/src/components/SitesList/SitesTable/SitesTableControls/_SitesTableControls.scss b/frontend/src/components/SitesList/SitesTable/SitesTableControls/_SitesTableControls.scss index 631f8c0..f183a4c 100644 --- a/frontend/src/components/SitesList/SitesTable/SitesTableControls/_SitesTableControls.scss +++ b/frontend/src/components/SitesList/SitesTable/SitesTableControls/_SitesTableControls.scss @@ -3,6 +3,7 @@ width: 100%; margin-left: 0; margin-right: 0; + @media (min-width: $breakpoint-large) { width: auto; margin: 0 1rem; diff --git a/frontend/src/components/SitesList/SitesTable/_SitesTable.scss b/frontend/src/components/SitesList/SitesTable/_SitesTable.scss index 35397ae..03a559d 100644 --- a/frontend/src/components/SitesList/SitesTable/_SitesTable.scss +++ b/frontend/src/components/SitesList/SitesTable/_SitesTable.scss @@ -4,12 +4,14 @@ $connection-status-icon-width: 1.5rem; thead th:first-child { width: 3rem; } + td.connection, th.connection { .connection__text { padding-left: $connection-status-icon-width; } } + .sites-table-row--muted { td:not(.name) { &, @@ -18,11 +20,13 @@ $connection-status-icon-width: 1.5rem; } } } + .status-icon { display: inline-block; position: relative; padding-left: $connection-status-icon-width; } + .status-icon::before { content: "\00B7"; font-size: 5rem; @@ -31,15 +35,19 @@ $connection-status-icon-width: 1.5rem; top: -6px; color: transparent; } + .status-icon.is-lost::before { color: #c7162b; } + .status-icon.is-stable::before { color: #0e8420; } + .status-icon.is-unknown::before { color: #cdcdcd; } + .p-checkbox.is-label-visually-hidden .p-checkbox__label { position: absolute; width: 1px; diff --git a/frontend/src/components/TokensCreate/_TokensCreate.scss b/frontend/src/components/TokensCreate/_TokensCreate.scss index 3fc3031..32de4af 100644 --- a/frontend/src/components/TokensCreate/_TokensCreate.scss +++ b/frontend/src/components/TokensCreate/_TokensCreate.scss @@ -2,13 +2,16 @@ .tokens-create__heading { margin-bottom: $sph--x-large; } + hr.tokens-create__separator { margin-bottom: $sph--large; } + .tokens-create__buttons { display: flex; justify-content: flex-end; width: 100%; + a, button { margin-left: $sph--large; diff --git a/frontend/src/components/TokensList/_TokensList.scss b/frontend/src/components/TokensList/_TokensList.scss index 64694b2..3171cbd 100644 --- a/frontend/src/components/TokensList/_TokensList.scss +++ b/frontend/src/components/TokensList/_TokensList.scss @@ -1,6 +1,5 @@ .tokens-list-header { @media only screen and (min-width: $breakpoint-small) { - position: sticky; top: -0.75rem; background-color: white; diff --git a/frontend/src/components/TokensList/components/TokensTable/_TokensTable.scss b/frontend/src/components/TokensList/components/TokensTable/_TokensTable.scss index f3ee36a..2dd28ec 100644 --- a/frontend/src/components/TokensList/components/TokensTable/_TokensTable.scss +++ b/frontend/src/components/TokensList/components/TokensTable/_TokensTable.scss @@ -1,4 +1,9 @@ .tokens-table { + td, + th { + vertical-align: middle; + } + thead th:first-child { width: 3rem; } @@ -31,11 +36,6 @@ } } - td, - th { - vertical-align: middle; - } - .token-cell { width: 100%; display: flex; diff --git a/frontend/src/components/base/TablePagination/_TablePagination.scss b/frontend/src/components/base/TablePagination/_TablePagination.scss index c663d8f..3c96af4 100644 --- a/frontend/src/components/base/TablePagination/_TablePagination.scss +++ b/frontend/src/components/base/TablePagination/_TablePagination.scss @@ -18,6 +18,7 @@ .u__left-rotate { transform: rotate(90deg); } + .u__right-rotate { transform: rotate(-90deg); } @@ -34,16 +35,16 @@ } // Remove input arrows + /* Chrome, Safari, Edge, Opera */ input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { - -webkit-appearance: none; + appearance: none; margin: 0; } /* Firefox */ input[type="number"] { - -moz-appearance: textfield; appearance: textfield; }
-- Mailing list: https://launchpad.net/~sts-sponsors Post to : sts-sponsors@lists.launchpad.net Unsubscribe : https://launchpad.net/~sts-sponsors More help : https://help.launchpad.net/ListHelp