You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

711 lines
15 KiB

6 years ago
//////////////////////////////////////////////////////////////////
// Mixins
//////////////////////////////////////////////////////////////////
// Functions
// --------------------------------------------------
@function alpha($color, $alpha) {
@return hsla(hue($color), saturation($color), lightness($color), $alpha)
}
@function mulitply($number, $by) {
@if type-of($number) == 'number' and not unitless($number) {
@return $number / ($number * 0 + 1) * $by;
}
@return $number * $by;
}
// General
// --------------------------------------------------
@mixin transform($value) {
-webkit-transform: $value;
-moz-transform: $value;
-ms-transform: $value;
transform: $value;
}
@mixin scale($value) {
-webkit-transform: scale($value);
-moz-transform: scale($value);
-ms-transform: scale($value);
transform: scale($value);
}
@mixin opacity($opacity) {
opacity: $opacity;
}
@mixin transition($args) {
-webkit-transition: $args;
-moz-transition: $args;
-ms-transition: $args;
-o-transition: $args;
transition: $args;
}
@mixin rotate($value){
-webkit-transform: rotate($value);
-ms-transform: rotate($value);
transform: rotate($value);
}
@mixin translucent_background($color: $white, $alpha: 1, $important: 0){
@if $important == 1 {
background-color: hsla(hue($color), saturation($color), lightness($color), $alpha) !important;
}
@else {
background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
}
}
@mixin translucent_border($color: $white, $alpha: 1, $important: 1){
@if $important == 1 {
border-color: hsla(hue($color), saturation($color), lightness($color), $alpha) !important;
}
@else {
border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
}
}
@mixin placeholder($color: $input-color-placeholder) {
&::-webkit-input-placeholder {
color: $color;
}
&:-moz-placeholder { /* Firefox 18- */
color: $color;
}
&::-moz-placeholder { /* Firefox 19+ */
color: $color;
}
&:-ms-input-placeholder {
color: $color;
}
}
// Helpers
// --------------------------------------------------
@mixin at2x($path, $ext: "jpg", $w: auto, $h: auto) {
$at1x_path: "#{$path}.#{$ext}";
$at2x_path: "#{$path}@2x.#{$ext}";
background-image: url("#{$at1x_path}");
@media all and (-webkit-min-device-pixel-ratio: 1.5),
all and (-o-min-device-pixel-ratio: 3/2),
all and (min--moz-device-pixel-ratio: 1.5),
all and (min-device-pixel-ratio: 1.5) {
background-image: url("#{$at2x_path}");
background-size: $w $h;
}
}
@mixin fontawesome-bg($code){
font-family: 'Font Awesome 5 Free';
font-weight: 900;
font-style: normal;
speak: none;
display: inline-block;
content: unquote("\"#{ $code }\"");
}
// AppStrap specific
// --------------------------------------------------
@mixin appstrap-button-link-variant($color, $background, $border){
color: $color;
background-color: $background;
border-color: $border;
box-shadow: none !important;
&:focus,
&.focus {
color: darken($color, 10%);
}
&:hover {
color: darken($color, 10%);
}
&:active,
&.active,
.show > .dropdown-toggle &,
.open > .dropdown-toggle & {
color: darken($color, 10%);
&:hover,
&:focus,
&.focus {
color: darken($color, 10%);
}
}
&:active,
&.active,
.open > .dropdown-toggle & {
background-image: none;
}
&.disabled,
&[disabled],
&:disabled,
fieldset[disabled] & {
background-color: $background;
border-color: $border;
&:hover,
&:focus,
&.focus {
background-color: $background;
border-color: $border;
}
}
.badge {
color: $background;
background-color: $color;
}
}
@mixin appstrap-button-variant($color, $background, $border){
color: $color;
background-color: $background;
border-color: $border;
&:focus,
&.focus {
color: $color;
background-color: darken($background, 10%);
border-color: darken($border, 25%);
}
@include hover {
color: $color;
background-color: darken($background, 10%);
border-color: darken($border, 12%);
}
&:active,
&.active,
.show > &.dropdown-toggle,
.open > &.dropdown-toggle {
color: $color;
background-color: darken($background, 10%);
border-color: darken($border, 12%);
background-image: none;
&:hover,
&:focus,
&.focus {
color: $color;
background-color: darken($background, 17%);
border-color: darken($border, 25%);
}
}
&.disabled,
&[disabled],
&:disabled,
fieldset[disabled] & {
background-color: $background;
border-color: $border;
&:hover,
&:focus,
&.focus {
background-color: $background;
border-color: $border;
}
}
.badge {
color: $background;
background-color: $color;
}
}
// Elements mixins
// --------------------------------------------------
@mixin dropdowns-desktop {
.nav > .dropdown {
z-index: 1000;
> a {
position: relative;
z-index: $zindex-dropdown + 1;
}
}
//default dropdown menus (light)
&.collapse .dropdown-menu {
padding: 12px;
@include border-radius(0);
left: auto;
border: 1px solid $gray-200;
border-bottom: 2px solid $primary_colour;
min-width: 250px;
color: $gray-light;
background: $dropdown-bg;
position: absolute;
z-index: $zindex-dropdown;
.dropdown-item {
margin: 0;
padding: 8px 12px !important;
font-size: 12px;
@include border-radius(0);
background: white;
border-bottom: 1px solid $gray-lighter !important;
color: $gray;
&:before {
display: none;
}
.dropdown-icon {
color: $gray-400;
}
&.dropdown-item-caret:before {
@include fontawesome-bg($submenu_item_bullet);
font-size: 12px;
color: $gray-400;
width: 20px;
height: 20px;
padding-right: 10px;
margin: 0 !important;
display: inline-block;
}
}
.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active:hover,
.dropdown-item.active,
.dropdown-item.active:focus,
.active > .dropdown-item,
.active > .dropdown-item:hover,
.active > .dropdown-item:focus,
.show:not(.collapse) > .dropdown-item,
.show > .dropdown-item:hover,
.show > .dropdown-item:focus,
.open:not(.collapse) > .dropdown-item,
.open > .dropdown-item:hover,
.open > .dropdown-item:focus {
color: $gray-900;
background: $gray-100;
text-decoration: none;
&.dropdown-item-caret:before,
.dropdown-icon {
color: $primary_colour;
}
}
}
//dropdown titles & footers
.dropdown-header,
.dropdown-footer {
font-weight: bold;
padding: 8px ;
margin-top: 10px;
margin-bottom: 10px;
border-bottom: 2px solid $gray-lighter !important;
display: block;
float: none;
color: $gray;
}
.dropdown-footer {
border: none;
border-top: 2px solid $gray-lighter;
font-weight: 100;
margin-bottom: 0;
font-size: 11px;
&:first-child {
margin-top: 10px;
}
}
// Submenus desktop
// -----------------
&.collapse .dropdown-menu {
.dropdown-submenu {
position:relative;
}
.dropdown-submenu > .dropdown-menu {
top:0;
left: 100%;
margin-top: -5px;
margin-left: 10px;
padding: 8px;
}
// pull DD right
.dropdown-submenu.dropdown-menu-right {
//parent
}
.dropdown-submenu.dropdown-menu-right > .dropdown-menu,
.dropdown-submenu > .dropdown-menu.dropdown-menu-right {
top:0;
left:100%;
}
// DD left
.dropdown-submenu.dropdown-menu-left {
// Parent
}
.dropdown-submenu.dropdown-menu-left > .dropdown-menu,
.dropdown-submenu > .dropdown-menu.dropdown-menu-left {
top:0;
left: auto;
right: 100%;
margin-left: 0;
margin-right: 10px;
}
.dropdown-submenu {
.dropdown-item {
&:after{
border-color: transparent transparent $primary_colour transparent;
}
}
&.show,
&.open {
border-bottom: none;
}
.dropdown-menu {
.dropdown-item {
padding: 8px 15px !important;
}
}
}
}
// Mega menu variations
.nav {
//align to right edge - $todo - depreciate
> .dropdown-right {
position: relative;
}
}
.dropdown-mega-menu {
position: static;
.dropdown-menu {
min-width: 550px;
max-width: 100%;
padding: 15px;
right: 0;
left: 0;
}
&.dropdown-mega-menu-75 .dropdown-menu,
&.dropdown-mega-menu-50 .dropdown-menu,
&.dropdown-mega-menu-25 .dropdown-menu {
right: auto;
left: auto;
&.dropdown-menu-right {
right: 0;
}
}
&.dropdown-mega-menu-75 .dropdown-menu {
max-width: 75%;
}
&.dropdown-mega-menu-50 .dropdown-menu {
max-width: 50%;
}
&.dropdown-mega-menu-25 .dropdown-menu {
max-width: 25%;
}
}
}
%dropdowns-desktop {
@include dropdowns-desktop;
}
@mixin main-menu {
//float: right;
& {
display: block !important;
padding: 0;
margin: 0;
clear: none;
overflow-y: visible;
overflow-x: visible;
width: auto;
top: auto;
background: transparent;
position: static;
}
.navbar-nav {
margin-top: 0;
}
.navbar-nav.container {
margin-left: auto;
margin-right: auto;
}
@include dropdowns-desktop;
.btn {
margin-top: 8px;
&.btn-sm {
margin-top: 12px;
}
&.btn-lg {
margin-top: 4px;
}
}
.nav-item {
float: left;
border: none;
}
.navbar-nav {
// Styles
&.navbar-nav-stretch {
> .nav-item > .nav-link,
> .nav-link {
padding: 34px 14px;
}
}
&.navbar-nav-simple {
> .nav-item > .nav-link,
> .nav-link {
padding: 34px 14px;
&.dropdown-toggle:after {
display: none;
}
}
> .open > .dropdown-toggle,
> .open > .dropdown-toggle:hover,
> .open > .dropdown-toggle:focus {
border-color: transparent !important;
background: transparent !important;
color: $primary_colour;
}
.dropdown-menu {
margin-top: 1px !important;
}
}
> .nav-item > .nav-link,
> .nav-link {
@include border-radius(0);
@include transition(all 0.3s ease-out);
padding: 15px 10px;
margin: 0;
font-size: 12px;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.5px;
border: 1px solid transparent;
border-top: 3px solid transparent;
.nav-link-icon {
font-size: 17px;
margin-top: -5px;
}
}
> .nav-item > .nav-link:hover,
> .active > .nav-link{
.caret {
border-top-color: $white;
}
}
> .nav-item > .nav-link:focus {
background: transparent;
}
> .show,
> .show.active,
> .open,
> .open.active {
> .dropdown-toggle,
> .dropdown-toggle:hover,
> .dropdown-toggle:focus {
background: $dropdown-bg;
color: $gray;
border-color: #f3f3f3;
border-bottom-color: transparent;
}
}
// Acts link dropdown
.nav-link-dd-effect:hover,
.nav-link-dd-effect.active {
background: $dropdown-bg;
color: $gray;
border-color: #f3f3f3;
border-bottom: 1px solid #f3f3f3;
}
}
.navbar-nav-flush {
margin-left: -20px;
}
.navbar-nav-flush-right {
margin-right: -20px;
}
}
@mixin main-menu-schemes {
}
@mixin main-menu-mobile {
float: none;
margin: 0;
padding: 0;
@include border-radius(2px);
.btn {
margin: 10px 20px;
}
.nav-item+.nav-item {
margin: 0;
}
> .nav-item {
float: none;
border-left: none;
border-right: none;
padding: 0;
margin: 0;
border-top: 1px solid rgba($white, 10%/100.0%);
border-bottom: 1px solid #242424;
}
> .nav-item > .nav-link,
> .nav-link {
padding: 15px 20px;
margin: 0;
font-weight: normal;
font-size: 13px;
text-transform: uppercase;
color: rgba($white, 70%/100.0%);
.nav-link-icon {
font-size: 18px;
}
}
> .nav-item > .nav-link:hover,
> .nav-item.active > .nav-link {
background: lighten($gray, 5%);
color: $white;
}
.nav-link:focus {
background: transparent;
}
.show > .dropdown-toggle,
.show.active > .dropdown-toggle {
background: lighten(#242424, 2%);
color: $white;
}
}
// Flexbox extenders/mixins
// --------------------------------------------------
@mixin flex-stacked{
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
@mixin flex-d-flex{
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
@mixin flex-align-items-start{
-webkit-box-align: start;
-webkit-align-items: start;
-ms-flex-align: start;
align-items: flex-start;
}
@mixin flex-align-items-center{
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
@mixin flex-align-items-stretch{
-webkit-box-align: stretch;
-webkit-align-items: stretch;
-ms-flex-align: stretch;
align-items: stretch;
}
@mixin flex-justify-content-center{
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
}
@mixin flex-justify-content-start {
-webkit-box-pack: start;
-webkit-justify-content: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
@mixin flex-justify-content-end {
-webkit-box-pack: end;
-webkit-justify-content: end;
-ms-flex-pack: end;
justify-content: flex-end;
}
@mixin flex-wrap{
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
@mixin flex-row{
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
}
@mixin flex-newline {
-webkit-box-flex: 0;
-webkit-flex: 0 0 100%;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
%flex-stacked{
@include flex-stacked;
}
%flex-d-flex{
@include flex-d-flex;
}
%flex-align-items-start{
@include flex-align-items-start;
}
%flex-align-items-center{
@include flex-align-items-center;
}
%flex-align-items-stretch{
@include flex-align-items-stretch;
}
%flex-justify-content-center{
@include flex-justify-content-center;
}
%flex-justify-content-end {
@include flex-justify-content-end;
}
%flex-justify-content-start {
@include flex-justify-content-start;
}
%flex-wrap{
@include flex-wrap;
}
%flex-row{
@include flex-row;
}