X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fsass%2Finclude%2F_mixins.scss;h=62e1ca163dfbaa1b5b647dda4f7d5db1a672f4e4;hb=37a44fc915eef2140e22ceb96aba6b6eb2509007;hp=bf844ac5dffe190441c63085ce9d098d041760a9;hpb=cdeddff142fd20f8cb8bb346625909d61c596603;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index bf844ac5d..62e1ca163 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -1,7 +1,9 @@ @import '_variables'; @mixin disable-default-a-behaviour { - &:hover, &:focus, &:active { + &:hover, + &:focus, + &:active { text-decoration: none !important; outline: none !important; } @@ -22,7 +24,7 @@ @mixin ellipsis-multiline($font-size: 16px, $number-of-lines: 2) { display: block; /* Fallback for non-webkit */ - display: -webkit-box; + display: -webkit-box; /* stylelint-disable-line value-no-vendor-prefix */ -webkit-line-clamp: $number-of-lines; /* Fallback for non-webkit */ font-size: $font-size; @@ -36,7 +38,7 @@ position: relative; overflow: hidden; - &:after { + &::after { content: ''; pointer-events: none; width: 100%; @@ -48,16 +50,20 @@ } } -@mixin peertube-word-wrap { +@mixin peertube-word-wrap ($with-hyphen: true) { word-break: break-word; word-wrap: break-word; overflow-wrap: break-word; - hyphens: auto; + + @if $with-hyphen { + hyphens: auto; + } } @mixin apply-svg-color ($color) { ::ng-deep .feather, - ::ng-deep .material { + ::ng-deep .material, + ::ng-deep .misc { color: $color; } } @@ -78,6 +84,7 @@ } @mixin peertube-input-text($width) { + padding: 0 15px; display: inline-block; height: $button-height; width: $width; @@ -85,8 +92,6 @@ background-color: pvar(--inputBackgroundColor); border: 1px solid #C6C6C6; border-radius: 3px; - padding-left: 15px; - padding-right: 15px; font-size: 15px; &::placeholder { @@ -97,7 +102,7 @@ opacity: 0.7; } - @media screen and (max-width: $width) { + @media screen and (max-width: calc(#{$width} + 40px)) { width: 100%; } } @@ -109,9 +114,9 @@ padding-bottom: 0; flex-wrap: nowrap; - .input-group-text{ + .input-group-text { font-size: 14px; - color: gray; + color: #808080; } } @@ -128,7 +133,9 @@ @mixin orange-button { @include button-focus(pvar(--mainColorLightest)); - &, &:active, &:focus { + &, + &:active, + &:focus { color: #fff; background-color: pvar(--mainColor); } @@ -138,14 +145,15 @@ background-color: pvar(--mainHoverColor); } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; color: #fff; background-color: #C6C6C6; } my-global-icon { - @include apply-svg-color(#fff) + @include apply-svg-color(#fff); } } @@ -155,7 +163,9 @@ border: 2px solid pvar(--mainColor); font-weight: $font-semibold; - &, &:active, &:focus { + &, + &:active, + &:focus { color: pvar(--mainColor); background-color: pvar(--mainBackgroundColor); } @@ -165,14 +175,15 @@ background-color: pvar(--mainColorLightest); } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; color: pvar(--mainColor); background-color: #C6C6C6; } my-global-icon { - @include apply-svg-color(pvar(--mainColor)) + @include apply-svg-color(pvar(--mainColor)); } } @@ -182,12 +193,13 @@ color: pvar(--greyForegroundColor); background-color: transparent; - &[disabled], &.disabled { + &[disabled], + .disabled { cursor: default; } my-global-icon { - @include apply-svg-color(transparent) + @include apply-svg-color(transparent); } } @@ -197,17 +209,22 @@ background-color: $grey-background-color; color: pvar(--greyForegroundColor); - &:hover, &:active, &:focus, &[disabled], &.disabled { + &:hover, + &:active, + &:focus, + &[disabled], + &.disabled { color: pvar(--greyForegroundColor); background-color: $grey-background-hover-color; } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; } my-global-icon { - @include apply-svg-color(pvar(--greyForegroundColor)) + @include apply-svg-color(pvar(--greyForegroundColor)); } } @@ -216,47 +233,54 @@ $text: #fff6f5; @include button-focus(scale-color($color, $alpha: -95%)); + background-color: $color; color: $text; - &:hover, &:active, &:focus, &[disabled], &.disabled { + &:hover, + &:active, + &:focus, + &[disabled], + &.disabled { background-color: lighten($color: $color, $amount: 10); } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; } my-global-icon { - @include apply-svg-color($text) + @include apply-svg-color($text); } } @mixin peertube-button { - border: none; + @include padding(0, 17px, 0, 13px); + + border: 0; font-weight: $font-semibold; font-size: 15px; height: $button-height; line-height: $button-height; - border-radius: 3px; + // FIXME: because of primeng that redefines border-radius of all input[type="..."] + border-radius: 3px !important; text-align: center; - padding: 0 17px 0 13px; cursor: pointer; } @mixin peertube-button-link { - display: inline-block; - @include disable-default-a-behaviour; @include peertube-button; -} -@mixin peertube-button-outline { display: inline-block; +} +@mixin peertube-button-outline { @include disable-default-a-behaviour; @include peertube-button; + display: inline-block; border: 1px solid; } @@ -266,9 +290,10 @@ line-height: normal !important; my-global-icon { + @include margin-right($margin-right); + position: relative; width: $width; - margin-right: $margin-right; top: $top; } } @@ -286,21 +311,21 @@ width: 100%; height: 100%; font-size: 100px; - text-align: right; + text-align: end; filter: alpha(opacity=0); opacity: 0; outline: none; - background: white; + background: #fff; cursor: inherit; display: block; } } @mixin peertube-button-file ($width) { - width: $width; - @include peertube-file; @include peertube-button; + + width: $width; } @mixin icon ($size) { @@ -313,20 +338,6 @@ cursor: pointer; } -@mixin select-arrow-down { - top: 50%; - right: calc(0% + 15px); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border: 5px solid rgba(0, 0, 0, 0); - border-top-color: #000; - margin-top: -2px; - z-index: 100; -} - @mixin responsive-width ($width) { width: $width; @@ -357,8 +368,18 @@ width: 100%; } - &:after { - @include select-arrow-down; + &::after { + top: 50%; + right: calc(0% + 15px); + content: ' '; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border: 5px solid rgba(0, 0, 0, 0); + border-top-color: #000; + margin-top: -2px; + z-index: 100; } select { @@ -393,21 +414,23 @@ option { font-weight: $font-semibold; color: pvar(--greyForegroundColor); - border: none; + border: 0; } } } // Thanks: https://codepen.io/triss90/pen/XNEdRe/ @mixin peertube-radio-container { - input[type="radio"] { + input[type=radio] { display: none; - & + label { + + label { font-weight: $font-regular; cursor: pointer; - &:before { + &::before { + @include margin-right(10px); + position: relative; top: -2px; content: ''; @@ -420,16 +443,15 @@ vertical-align: middle; cursor: pointer; text-align: center; - margin-right: 10px; } } - &:checked + label:before { + &:checked + label::before { background-color: #000; box-shadow: inset 0 0 0 4px #fff; } - &:focus + label:before { + &:focus + label::before { outline: none; border-color: #000; } @@ -444,7 +466,7 @@ box-shadow: #{$focus-box-shadow-form} pvar(--mainColorLightest); } - & + span { + + span { position: relative; width: 18px; min-width: 18px; @@ -454,7 +476,7 @@ vertical-align: middle; cursor: pointer; - &:after { + &::after { content: ''; position: absolute; top: calc(2px - #{$border-width}); @@ -473,22 +495,23 @@ background: pvar(--mainColor); animation: jelly 0.6s ease; - &:after { + &::after { opacity: 1; transform: rotate(45deg) scale(1); } } - & + span + span { + + span + span { + @include margin-left(5px); + font-size: 15px; font-weight: $font-regular; - margin-left: 5px; cursor: pointer; display: inline; } &[disabled] + span, - &[disabled] + span + span{ + &[disabled] + span + span { opacity: 0.5; cursor: default; } @@ -538,21 +561,25 @@ } } -@mixin avatar ($size) { - object-fit: cover; - border-radius: 50%; +@mixin actor-avatar-size ($size) { + display: inline-block; width: $size; height: $size; min-width: $size; min-height: $size; } -@mixin channel-avatar ($size) { - width: $size; - height: $size; - min-width: $size; - min-height: $size; - border-radius: 5px; +@mixin actor-counters ($separator-margin: 10px) { + color: pvar(--greyForegroundColor); + font-size: 16px; + display: flex; + align-items: center; + + > *:not(:last-child)::after { + content: '•'; + margin: 0 $separator-margin; + color: pvar(--mainColor); + } } @mixin chevron ($size, $border-width) { @@ -594,26 +621,6 @@ margin-bottom: 10px; } -@mixin actor-owner { - @include disable-default-a-behaviour; - - font-size: 13px; - margin-top: 4px; - color: pvar(--mainForegroundColor); - - span:hover { - opacity: 0.8; - } - - img { - @include avatar(18px); - - margin-left: 7px; - position: relative; - top: -2px; - } -} - @mixin create-button { @include peertube-button-link; @include orange-button; @@ -644,10 +651,10 @@ padding: 6px 15px; my-global-icon { + @include margin-right(10px); + width: 22px; opacity: .7; - - margin-right: 10px; position: relative; top: -2px; } @@ -713,13 +720,15 @@ color: pvar(--mainColor); } - & + .breadcrumb-item { - padding-left: 0.5rem; + + .breadcrumb-item { + @include padding-left(0.5rem); + &::before { + @include padding-right(0.5rem); + display: inline-block; - padding-right: 0.5rem; color: #6c757d; - content: "/"; + content: '/'; } } @@ -734,13 +743,13 @@ flex-wrap: wrap; margin: 0 -5px; - & > div { + > div { box-sizing: border-box; flex: 0 0 percentage(1/3); padding: 0 5px; margin-bottom: 10px; - & > a { + > a { @include disable-default-a-behaviour; text-decoration: none; @@ -755,8 +764,8 @@ } } - & > a, - & > div { + > a, + > div { padding: 20px; background: pvar(--submenuBackgroundColor); border-radius: 4px; @@ -765,7 +774,8 @@ } } - .dashboard-num, .dashboard-text { + .dashboard-num, + .dashboard-text { text-align: center; font-size: 130%; color: pvar(--mainForegroundColor); @@ -829,17 +839,9 @@ --chip-padding: .2rem .3rem; } - .avatar { - margin-left: -.4rem; - margin-right: .2rem; - height: $avatar-height; - width: $avatar-height; - - border-radius: 50%; - display: inline-block; - line-height: 1.25; - position: relative; - vertical-align: middle; + my-actor-avatar { + @include margin-left(-.4rem); + @include margin-right(.2rem); } &.two-lines { @@ -847,45 +849,21 @@ height: $avatar-height; - .avatar { - height: $avatar-height; - width: $avatar-height; + my-actor-avatar { + @include actor-avatar-size($avatar-height); } div { + margin: 0 .1rem; + display: flex; flex-direction: column; height: $avatar-height; - margin-left: .1rem; - margin-right: .1rem; justify-content: center; } } } -@mixin admin-sub-header-responsive { - flex-direction: column; - - .form-sub-title { - margin-right: 0px !important; - margin-bottom: 10px; - text-align: center; - } - - .admin-sub-nav { - display: block; - overflow-x: auto; - white-space: nowrap; - height: 50px; - padding: 10px 0; - width: 100%; - - a { - margin-left: 5px; - } - } -} - // applies ratio (default to 16:9) to a child element (using $selector) only using // an immediate's parent size. This allows to set a ratio without explicit // dimensions, as width/height cannot be computed from each other. @@ -902,6 +880,7 @@ width: 100%; height: 100%; top: 0; + @content; } } @@ -913,15 +892,17 @@ padding-bottom: 15px; margin-bottom: $sub-menu-margin-bottom; - my-global-icon { - margin-right: 10px; - vertical-align: bottom; + > span > my-global-icon, + > my-global-icon { + @include margin-right(10px); width: 24px; height: 24px; + vertical-align: top; } .badge { - margin-left: 7px; + @include margin-left(7px); + vertical-align: top; } } } @@ -968,3 +949,59 @@ } } } + +@mixin margin ($block-start, $inline-end, $block-end, $inline-start) { + @include margin-left($inline-start); + @include margin-right($inline-end); + + margin-top: $block-start; + margin-bottom: $block-end; +} + +@mixin padding ($block-start, $inline-end, $block-end, $inline-start) { + @include padding-left($inline-start); + @include padding-right($inline-end); + + padding-top: $block-start; + padding-bottom: $block-end; +} + +@mixin margin-left ($value) { + @supports (margin-inline-start: $value) { + margin-inline-start: $value; + } + + @supports not (margin-inline-start: $value) { + margin-left: $value; + } +} + +@mixin margin-right ($value) { + @supports (margin-inline-end: $value) { + margin-inline-end: $value; + } + + @supports not (margin-inline-end: $value) { + margin-right: $value; + } +} + +@mixin padding-left ($value) { + @supports (padding-inline-start: $value) { + padding-inline-start: $value; + } + + @supports not (padding-inline-start: $value) { + padding-left: $value; + } +} + +@mixin padding-right ($value) { + @supports (padding-inline-end: $value) { + padding-inline-end: $value; + } + + @supports not (padding-inline-end: $value) { + padding-right: $value; + } +}