refactor(WIP): scss, ts 공통 파일 묶기

This commit is contained in:
2021-12-10 21:45:02 +09:00
parent 3d2489b51a
commit b706fd468d
21 changed files with 30 additions and 16 deletions
+15
View File
@@ -0,0 +1,15 @@
@import "./pretendard.scss";
$body-bg: #000;
$input-bg: #ddd;
$input-color: #303030;
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css");
@import "./variables.scss";
@import "./bootswatch_custom_variables.scss";
@import "/node_modules/bootstrap/scss/bootstrap.scss";
@import "./bootswatch_custom.scss";
@import "./bootstrap_sammo.scss";
@import "./vue-multiselect.scss";
+67
View File
@@ -0,0 +1,67 @@
@function frontColor($color) {
@return color-contrast($color);
}
@each $colorType, $color in $nationColors {
.sam-color-#{$colorType} {
.sam-nation-own-bgcolor{
background-color: $color;
color: frontColor($color);
}
.btn-sammo-nation{
@include button-variant($color, $color);
&:hover,
&:active,
&:focus {
background-color: $color;
}
&,
&:not(.disabled):hover,
&:not(.disabled):active,
&:focus {
border-color: shade-color($color, 10%);
}
}
}
.btn-sammo-nation-#{$colorType}{
@include button-variant($color, $color);
&:hover,
&:active,
&:focus {
background-color: $color;
}
&,
&:not(.disabled):hover,
&:not(.disabled):active,
&:focus {
border-color: shade-color($color, 10%);
}
}
}
@each $colorType, $color in $sammoColors {
.btn-sammo-#{$colorType}{
@include button-variant($color, $color);
&:hover,
&:active,
&:focus {
background-color: $color;
}
&,
&:not(.disabled):hover,
&:not(.disabled):active,
&:focus {
border-color: shade-color($color, 10%);
}
}
}
+324
View File
@@ -0,0 +1,324 @@
// Lumen 5.1.3
// Bootswatch
// Variables
// Mixins
@mixin shadow($width: 4px){
border-style: solid;
border-width: 0 1px $width 1px;
}
// Navbar
.navbar {
@include shadow();
@each $color, $value in $theme-colors {
&.bg-#{$color} {
border-color: shade-color($value, 10%);
}
}
}
// Buttons
.btn {
@include shadow();
text-transform: uppercase;
&:not(.disabled):hover {
margin-top: 1px;
border-bottom-width: 3px;
}
&:not(.disabled):active {
margin-top: 2px;
border-bottom-width: 2px;
@include box-shadow(none);
}
@each $color, $value in $theme-colors {
&-#{$color} {
&:hover,
&:active,
&:focus {
background-color: $value;
}
&,
&:not(.disabled):hover,
&:not(.disabled):active,
&:focus {
border-color: shade-color($value, 10%);
}
}
}
}
[class*="btn-outline"] {
border-top-width: 1px;
}
.btn-group-vertical {
.btn + .btn {
&:hover {
margin-top: -1px;
border-top-width: 1px;
}
&:active {
margin-top: -1px;
border-top-width: 2px;
}
}
}
// Typography
.text-secondary {
color: $gray-700 !important;
}
.blockquote-footer {
color: $gray-600;
}
// Forms
.form-control {
box-shadow: inset 0 2px 0 rgba(0, 0, 0, .075);
}
// Navs
.nav {
.open > a,
.open > a:hover,
.open > a:focus {
border-color: transparent;
}
}
.nav-tabs {
.nav-link {
color: $body-color;
&,
&.disabled,
&.disabled:hover,
&.disabled:focus {
margin-top: 6px;
border-color: $nav-tabs-border-color;
transition: padding-bottom .2s ease-in-out, margin-top .2s ease-in-out, border-bottom .2s ease-in-out;
}
&:not(.disabled):hover,
&:not(.disabled):focus,
&.active {
padding-bottom: add(.5rem, 6px);
border-bottom-color: transparent;
margin-top: 0;
}
}
&.nav-justified > li {
vertical-align: bottom;
}
}
.dropdown-menu {
margin-top: 0;
@include shadow();
border-top-width: 1px;
@include box-shadow(none);
}
.breadcrumb {
border-color: shade-color($breadcrumb-bg, 10%);
@include shadow();
}
.pagination {
a:hover {
text-decoration: none;
}
}
.pagination {
> li > a,
> li > span {
position: relative;
top: 0;
@include shadow();
color: $pagination-color;
font-weight: 700;
text-transform: uppercase;
&:hover,
&:focus {
top: 1px;
border-bottom-width: 3px;
text-decoration: none;
}
&:active {
top: 2px;
border-bottom-width: 2px;
}
}
> .disabled > a,
> .disabled > span {
&:hover {
top: 0;
@include shadow();
}
&:active {
top: 0;
@include shadow();
}
}
}
.pager {
> li > a,
> li > span,
> .disabled > a,
> .disabled > span {
&,
&:hover,
&:active {
border-left-width: 2px;
border-right-width: 2px;
}
}
}
// Indicators
.btn-close {
text-decoration: none;
opacity: .4;
&:hover,
&:focus {
opacity: 1;
}
}
.alert {
color: $white;
@include shadow();
&-primary {
background-color: $primary;
border-color: shade-color($primary, 10%);
}
&-secondary {
background-color: $secondary;
border-color: shade-color($secondary, 10%);
}
&-success {
background-color: $success;
border-color: shade-color($success, 10%);
}
&-info {
background-color: $info;
border-color: shade-color($info, 10%);
}
&-danger {
background-color: $danger;
border-color: shade-color($danger, 10%);
}
&-warning {
background-color: $warning;
border-color: shade-color($warning, 10%);
}
&-dark {
background-color: $dark;
border-color: shade-color($dark, 10%);
}
&-light {
background-color: $light;
border-color: shade-color($light, 10%);
}
.alert-link {
font-weight: 400;
color: $white;
text-decoration: underline;
}
&-secondary,
&-light {
&,
a,
.alert-link {
color: $body-color;
}
}
}
.badge {
&.bg-secondary,
&.bg-light {
color: $dark;
}
}
// Containers
a.list-group-item {
&-success {
&.active {
background-color: $success;
}
&.active:hover,
&.active:focus {
background-color: shade-color($success, 10%);
}
}
&-warning {
&.active {
background-color: $warning;
}
&.active:hover,
&.active:focus {
background-color: shade-color($warning, 10%);
}
}
&-danger {
&.active {
background-color: $danger;
}
&.active:hover,
&.active:focus {
background-color: shade-color($danger, 10%);
}
}
}
.modal,
.toast {
.btn-close {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>");
}
}
@@ -0,0 +1,177 @@
// Darkly 5.1.3
// Bootswatch
$theme: "darkly" !default;
//
// Color system
//
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #ebebeb !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #888 !default;
$gray-700: #444 !default;
$gray-800: #303030 !default;
$gray-900: #222 !default;
$black: #000 !default;
$blue: #375a7f !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #e74c3c !default;
$orange: #fd7e14 !default;
$yellow: #f39c12 !default;
$green: #00bc8c !default;
$teal: #20c997 !default;
$cyan: #3498db !default;
$primary: $blue !default;
$secondary: $gray-700 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-500 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 1.9 !default;
// Body
$body-bg: $gray-900 !default;
$body-color: $white !default;
// Links
$link-color: $success !default;
// Fonts
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic' !default;
$h1-font-size: 3rem !default;
$h2-font-size: 2.5rem !default;
$h3-font-size: 2rem !default;
$text-muted: $gray-600 !default;
// Tables
$table-border-color: $gray-700 !default;
$table-bg-scale: 0 !default;
// Buttons
$btn-font-weight: 700 !default;
// Forms
$input-bg: $white !default;
$input-color: $gray-800 !default;
$input-border-color: $body-bg !default;
$input-group-addon-color: $gray-500 !default;
$input-group-addon-bg: $gray-700 !default;
$form-check-input-bg: $white !default;
$form-check-input-border: none !default;
$form-file-button-color: $white !default;
// Dropdowns
$dropdown-bg: $gray-900 !default;
$dropdown-border-color: $gray-700 !default;
$dropdown-divider-bg: $gray-700 !default;
$dropdown-link-color: $white !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;
// Navs
$nav-link-padding-x: 2rem !default;
$nav-link-disabled-color: $gray-500 !default;
$nav-tabs-border-color: $gray-700 !default;
$nav-tabs-link-hover-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
// Navbar
$navbar-padding-y: 1rem !default;
$navbar-dark-color: rgba($white, .6) !default;
$navbar-dark-hover-color: $white !default;
$navbar-light-color: rgba($gray-900, .7) !default;
$navbar-light-hover-color: $gray-900 !default;
$navbar-light-active-color: $gray-900 !default;
$navbar-light-toggler-border-color: rgba($gray-900, .1) !default;
// Pagination
$pagination-color: $white !default;
$pagination-bg: $success !default;
$pagination-border-width: 0 !default;
$pagination-border-color: transparent !default;
$pagination-hover-color: $white !default;
$pagination-hover-bg: lighten($success, 10%) !default;
$pagination-hover-border-color: transparent !default;
$pagination-active-bg: $pagination-hover-bg !default;
$pagination-active-border-color: transparent !default;
$pagination-disabled-color: $white !default;
$pagination-disabled-bg: darken($success, 15%) !default;
$pagination-disabled-border-color: transparent !default;
// Cards
$card-cap-bg: $gray-700 !default;
$card-bg: $gray-800 !default;
// Popovers
$popover-bg: $gray-800 !default;
$popover-header-bg: $gray-700 !default;
// Toasts
$toast-background-color: $gray-700 !default;
$toast-header-background-color: $gray-800 !default;
// Modals
$modal-content-bg: $gray-800 !default;
$modal-content-border-color: $gray-700 !default;
$modal-header-border-color: $gray-700 !default;
// Progress bars
$progress-bg: $gray-700 !default;
// List group
$list-group-color: $body-color !default;
$list-group-bg: $gray-800 !default;
$list-group-border-color: $gray-700 !default;
$list-group-hover-bg: $gray-700 !default;
$list-group-action-hover-color: $list-group-color !default;
$list-group-action-active-bg: $gray-900 !default;
// Breadcrumbs
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-bg: $gray-700 !default;
$breadcrumb-border-radius: .25rem !default;
// Close
$btn-close-color: $white !default;
$btn-close-opacity: .4 !default;
$btn-close-hover-opacity: 1 !default;
// Code
$pre-color: inherit !default;
+15
View File
@@ -0,0 +1,15 @@
$container-max-widths: (
md: 500px,
lg: 1020px,
xl: 1140px,
xxl: 1320px
);
$grid-breakpoints: (
xs: 0,
sm: 520px,
md: 900px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
+7
View File
@@ -0,0 +1,7 @@
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css');
$font-family-sans-serif: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
html, body {
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic';
}
+47
View File
@@ -0,0 +1,47 @@
$base1color: #141c65;
$base2color: #00582c;
$base3color: #704615;
$base4color: #70153b;
$sammoColors: ('base1': $base1color,
'base2': $base2color,
'base3': $base3color,
'base4': $base4color,
);
$nationColors: ("000000": #000000,
"FF0000": #FF0000,
"800000": #800000,
"A0522D": #A0522D,
"FF6347": #FF6347,
"FFA500": #FFA500,
"FFDAB9": #FFDAB9,
"FFD700": #FFD700,
"FFFF00": #FFFF00,
"7CFC00": #7CFC00,
"00FF00": #00FF00,
"808000": #808000,
"008000": #008000,
"2E8B57": #2E8B57,
"008080": #008080,
"20B2AA": #20B2AA,
"6495ED": #6495ED,
"7FFFD4": #7FFFD4,
"AFEEEE": #AFEEEE,
"87CEEB": #87CEEB,
"00FFFF": #00FFFF,
"00BFFF": #00BFFF,
"0000FF": #0000FF,
"000080": #000080,
"483D8B": #483D8B,
"7B68EE": #7B68EE,
"BA55D3": #BA55D3,
"800080": #800080,
"FF00FF": #FF00FF,
"FFC0CB": #FFC0CB,
"F5F5DC": #F5F5DC,
"E0FFFF": #E0FFFF,
"FFFFFF": #FFFFFF,
"A9A9A9": #A9A9A9,
"330000": #330000,
);
+555
View File
@@ -0,0 +1,555 @@
@use "sass:math";
$vue-multiselect-disabled-bg: $gray-400;
$vue-multiselect-padding-x: $form-select-padding-x !default;
$vue-multiselect-padding-y: $form-select-padding-y !default;
$vue-multiselect-min-height: $input-height !default;
$vue-multiselect-border-radius: $border-radius !default;
$vue-multiselect-border-color: $form-select-border-color !default;
$vue-multiselect-border-width: 1px !default;
$vue-multiselect-disabled-opacity: $btn-disabled-opacity !default;
$vue-multiselect-placeholder-color: $text-muted !default;
$vue-multiselect-bg: $form-select-bg !default;
$vue-multiselect-color: $form-select-color !default;
$vue-multiselect-disabled-bg: $form-select-disabled-bg !default;
$vue-multiselect-disabled-color: $form-select-disabled-color !default;
$vue-multiselect-option-selected-bg: $dark !default;
$vue-multiselect-option-selected-color: $body-color !default;
$vue-multiselect-option-highlight-color: #fff !default;
$vue-multiselect-option-highlight-bg: $primary !default;
$vue-multiselect-option-selected-highlight-color: #fff !default;
$vue-multiselect-option-selected-highlight-bg: $secondary !default;
$vue-multiselect-tag-color: $dark !default;
$vue-multiselect-tag-bg: $light !default;
$vue-multiselect-tag-font-size: $badge-font-size !default;
$vue-multiselect-tag-font-weight: normal !default;
$vue-multiselect-tag-icon-size: 1.7rem !default;
$vue-multiselect-tag-icon-color: $vue-multiselect-tag-color !default;
$vue-multiselect-tag-icon-color-hover: white !default;
$vue-multiselect-tag-icon-bg-hover: $danger !default;
$vue-multiselect-tag-padding-x: .4rem !default;
$vue-multiselect-tag-padding-y: .25rem !default;
$vue-multiselect-tag-border-radius: $badge-border-radius !default;
$vue-multiselect-arrow-color: $form-select-color !default;
$vue-multiselect-arrow-size: 5px !default;
$vue-multiselect-arrow-padding: 8px !default;
$vue-multiselect-spinner-size: 16px !default;
$vue-multiselect-spinner-thickness: 2px !default;
$vue-multiselect-spinner-margin: math.div(-$vue-multiselect-spinner-size, 2) !default;
$vue-multiselect-spinner-color: $dark !default;
// --------------------------------
// Select field
//--
fieldset[disabled] .multiselect {
pointer-events: none;
}
.multiselect,
.multiselect__input,
.multiselect__single {
font-family: inherit;
font-size: inherit;
touch-action: manipulation;
}
.multiselect {
box-sizing: content-box;
display: block;
position: relative;
width: 100%;
min-height: $vue-multiselect-min-height;
text-align: left;
color: $vue-multiselect-color;
& * {
box-sizing: border-box;
}
&:focus {
outline: none;
}
}
.multiselect--disabled {
pointer-events: none;
opacity: $vue-multiselect-disabled-opacity;
}
.multiselect--active {
z-index: 50;
&:not(.multiselect--above) .multiselect__current,
&:not(.multiselect--above) .multiselect__input,
&:not(.multiselect--above) .multiselect__tags {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
& .multiselect__select {
transform: rotateZ(180deg);
}
}
.multiselect--above.multiselect--active .multiselect__current,
.multiselect--above.multiselect--active .multiselect__input,
.multiselect--above.multiselect--active .multiselect__tags {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.multiselect__input,
.multiselect__single {
position: relative;
display: inline-block;
min-height: $vue-multiselect-min-height / 2;
line-height: $vue-multiselect-min-height / 2;
border: none;
border-radius: $vue-multiselect-border-radius;
background: $vue-multiselect-bg;
padding: 0 0 0 $vue-multiselect-padding-x;
width: calc(100%);
transition: border 0.1s ease;
box-sizing: border-box;
margin-bottom: $vue-multiselect-padding-y;
vertical-align: top;
}
.multiselect__input::placeholder {
color: $vue-multiselect-placeholder-color;
}
.multiselect__tag ~ .multiselect__input,
.multiselect__tag ~ .multiselect__single {
width: auto;
}
.multiselect__input:hover,
.multiselect__single:hover {
border-color: #cfcfcf;
}
.multiselect__input:focus,
.multiselect__single:focus {
border-color: #a8a8a8;
outline: none;
}
.multiselect__single {
padding-left: $vue-multiselect-padding-x;
margin-bottom: $vue-multiselect-padding-y;
}
.multiselect__tags-wrap {
display: inline
}
.multiselect__tags {
min-height: $vue-multiselect-min-height;
display: block;
padding: $vue-multiselect-padding-y $vue-multiselect-min-height 0 $vue-multiselect-padding-y;
border-radius: $vue-multiselect-border-radius;
border: $vue-multiselect-border-width solid $vue-multiselect-border-color;
background: $vue-multiselect-bg;
font-family: inherit;
font-size: inherit;
}
.multiselect__tag {
position: relative;
display: inline-block;
padding: $vue-multiselect-tag-padding-y ($vue-multiselect-tag-icon-size + $vue-multiselect-tag-padding-x) $vue-multiselect-tag-padding-y $vue-multiselect-tag-padding-x;
border-radius: $vue-multiselect-tag-border-radius;
margin-right: $vue-multiselect-tag-padding-x;
color: $vue-multiselect-tag-color;
background: $vue-multiselect-tag-bg;
white-space: nowrap;
overflow: hidden;
max-width: 100%;
text-overflow: ellipsis;
font-size: $vue-multiselect-tag-font-size;
font-weight: $vue-multiselect-tag-font-weight;
}
.multiselect__tag-icon {
cursor: pointer;
margin-left: $vue-multiselect-tag-padding-y;
position: absolute;
right: 0;
top: 0;
bottom: 0;
font-style: initial;
width: $vue-multiselect-tag-icon-size;
text-align: center;
line-height: $vue-multiselect-tag-icon-size;
transition: all 0.2s ease;
font-size: $vue-multiselect-tag-font-size;
font-weight: $vue-multiselect-tag-font-weight;
}
.multiselect__tag-icon:after {
content: "×";
color: $vue-multiselect-tag-icon-color;
font-size: 220%;
}
.multiselect__tag-icon:focus,
.multiselect__tag-icon:hover {
background: $vue-multiselect-tag-icon-bg-hover;
}
.multiselect__tag-icon:focus:after,
.multiselect__tag-icon:hover:after {
color: $vue-multiselect-tag-icon-color-hover;
}
.multiselect__current {
line-height: $vue-multiselect-min-height / 2;
min-height: $vue-multiselect-min-height;
box-sizing: border-box;
display: block;
overflow: hidden;
padding: 8px 30px 0 12px;
white-space: nowrap;
margin: 0;
text-decoration: none;
border-radius: $vue-multiselect-border-radius;
border: 1px solid $vue-multiselect-border-color;
cursor: pointer;
}
.multiselect__select {
line-height: $vue-multiselect-min-height / 2;
display: block;
position: absolute;
box-sizing: border-box;
width: $vue-multiselect-min-height;
height: $vue-multiselect-min-height;
right: 0;
top: 0;
padding: ($vue-multiselect-arrow-padding) $vue-multiselect-arrow-padding;
margin: 0;
text-decoration: none;
text-align: center;
cursor: pointer;
transition: transform 0.2s ease;
}
.multiselect__select:before {
position: relative;
right: 0;
top: 50%;
color: $vue-multiselect-arrow-color;
border-style: solid;
border-width: $vue-multiselect-arrow-size $vue-multiselect-arrow-size 0 $vue-multiselect-arrow-size;
border-color: $vue-multiselect-arrow-color transparent transparent transparent;
content: "";
}
.multiselect__placeholder {
color: $vue-multiselect-placeholder-color;
display: inline-block;
margin-bottom: 10px;
padding-top: 2px;
}
.multiselect--active .multiselect__placeholder {
display: none;
}
.multiselect__content-wrapper {
position: absolute;
display: block;
background: $vue-multiselect-bg;
width: 100%;
max-height: 240px;
overflow: auto;
border: $vue-multiselect-border-width solid $vue-multiselect-border-color;
border-top: none;
border-bottom-left-radius: $vue-multiselect-border-radius;
border-bottom-right-radius: $vue-multiselect-border-radius;
z-index: 50;
-webkit-overflow-scrolling: touch;
}
.multiselect__content {
list-style: none;
display: inline-block;
padding: 0;
margin: 0;
min-width: 100%;
vertical-align: top;
}
.multiselect--above .multiselect__content-wrapper {
bottom: 100%;
border-radius: $vue-multiselect-border-radius $vue-multiselect-border-radius 0 0;
border-bottom: none;
border-top: $vue-multiselect-border-width solid $vue-multiselect-border-color;
}
.multiselect__content::webkit-scrollbar {
display: none;
}
.multiselect__element {
display: block;
}
.multiselect__option {
display: block;
padding: $vue-multiselect-padding-y $vue-multiselect-padding-x;
min-height: $vue-multiselect-min-height;
line-height: $vue-multiselect-min-height / 2;
text-decoration: none;
text-transform: none;
vertical-align: middle;
position: relative;
cursor: pointer;
white-space: nowrap;
}
.multiselect__option:after {
top: 0;
right: 0;
position: absolute;
line-height: $vue-multiselect-min-height;
padding-right: 12px;
padding-left: 20px;
font-family: inherit;
font-size: $small-font-size;
}
.multiselect__option--highlight {
background: $vue-multiselect-option-highlight-bg;
outline: none;
color: $vue-multiselect-option-highlight-color;
}
.multiselect__option--highlight:after {
content: attr(data-select);
background: $vue-multiselect-option-highlight-bg;
color: $vue-multiselect-option-highlight-color;
}
.multiselect__option--selected {
background: $vue-multiselect-option-selected-bg;
color: $vue-multiselect-option-selected-color;
font-weight: bold;
}
.multiselect__option--selected:after {
content: attr(data-selected);
color: silver;
}
.multiselect__option--selected.multiselect__option--highlight {
background: $vue-multiselect-option-selected-highlight-bg;
color: $vue-multiselect-option-selected-highlight-color;
}
.multiselect__option--selected.multiselect__option--highlight:after {
background: $vue-multiselect-option-selected-highlight-bg;
content: attr(data-deselect);
color: $vue-multiselect-option-selected-highlight-color;
}
.multiselect--disabled {
background: $vue-multiselect-disabled-bg;
pointer-events: none;
}
.multiselect--disabled .multiselect__current,
.multiselect--disabled .multiselect__select {
background: $vue-multiselect-disabled-bg;
color: $vue-multiselect-disabled-color;
}
.multiselect__option--disabled {
background: $vue-multiselect-disabled-bg;
color: $vue-multiselect-disabled-color;
cursor: text;
pointer-events: none;
}
.multiselect__option--group {
background: $vue-multiselect-disabled-bg;
color: $vue-multiselect-disabled-color;
&.multiselect__option--highlight {
background: $vue-multiselect-disabled-color;
color: $vue-multiselect-disabled-bg;
}
&.multiselect__option--highlight:after {
background: $vue-multiselect-disabled-color;
}
}
.multiselect__option--disabled.multiselect__option--highlight {
background: $vue-multiselect-disabled-bg;
}
.multiselect__option--group-selected.multiselect__option--highlight {
background: $vue-multiselect-option-selected-highlight-bg;
color: $vue-multiselect-option-selected-highlight-color;
}
.multiselect__option--group-selected.multiselect__option--highlight:after {
background: $vue-multiselect-option-selected-highlight-bg;
content: attr(data-deselect);
color: $vue-multiselect-option-selected-highlight-color;
}
.multiselect-enter-active,
.multiselect-leave-active {
transition: all 0.15s ease;
}
.multiselect-enter,
.multiselect-leave-active {
opacity: 0;
}
.multiselect__strong {
margin-bottom: $vue-multiselect-padding-y;
line-height: $vue-multiselect-min-height/2;
display: inline-block;
vertical-align: top;
}
// --------------------------------
// Spinner
//--
.multiselect__spinner {
position: absolute;
right: 0;
top: 0;
width: $vue-multiselect-min-height;
height: $vue-multiselect-min-height;
display: block;
&:before,
&:after {
position: absolute;
content: "";
top: 50%;
left: 50%;
margin: $vue-multiselect-spinner-margin 0 0 $vue-multiselect-spinner-margin;
width: $vue-multiselect-spinner-size;
height: $vue-multiselect-spinner-size;
border-radius: 100%;
border: $vue-multiselect-spinner-thickness solid transparent;
border-top-color: $vue-multiselect-spinner-color;
box-shadow: 0 0 0 1px transparent;
background: $vue-multiselect-bg;
}
&:before {
animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);
animation-iteration-count: infinite;
}
&:after {
animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);
animation-iteration-count: infinite;
}
}
@keyframes spinning {
from {
transform: rotate(0)
}
to {
transform: rotate(2turn)
}
}
// --------------------------------
// Loading state
//--
.multiselect__loading-enter-active,
.multiselect__loading-leave-active {
transition: opacity 0.4s ease-in-out;
opacity: 1;
}
.multiselect__loading-enter,
.multiselect__loading-leave-active {
opacity: 0;
}
// --------------------------------
// RTL adjustments
//--
*[dir="rtl"] {
.multiselect {
text-align: right;
}
.multiselect__select {
right: auto;
left: 1px;
}
.multiselect__tags {
padding: $vue-multiselect-padding-y $vue-multiselect-padding-y 0 $vue-multiselect-min-height;
}
.multiselect__content {
text-align: right;
}
.multiselect__option:after {
right: auto;
left: 0;
}
.multiselect__clear {
right: auto;
left: 12px;
}
.multiselect__spinner {
right: auto;
left: 1px;
}
}
// @see https://github.com/shentao/vue-multiselect/issues/718#issuecomment-471195859
.multiselect__placeholder {
color: $vue-multiselect-placeholder-color;
display: inline-block;
margin-bottom: 0;
padding-top: 0;
margin-left: 12px;
}
// is-valid / is-invalid state handling
// @see node_modules/bootstrap/scss/_forms.scss:262
@each $state, $data in $form-validation-states {
$color: map-get($data, color);
$icon: map-get($data, icon);
.form-group.is-#{$state} .multiselect__tags {
border-color: $color;
@if $enable-validation-icons {
padding-right: $form-select-feedback-icon-padding-end;
background: escape-svg($icon) $form-select-bg no-repeat $form-select-feedback-icon-position / $form-select-feedback-icon-size;
}
&:focus {
border-color: $color;
box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
}
}
}