479 lines
14 KiB
SCSS

@charset "UTF-8";
@import "../core/index-noreset.scss";
@import "scss/variable";
@import "scss/mixin";
@import "scss/placeholder";
#{$tab-prefix} {
& {
@include box-sizing;
width: 100%;
}
&-bar {
outline: none;
&-popup {
overflow-y: auto;
max-height: 480px;
}
}
&-nav-container {
position: relative;
@include clearfix;
}
&-nav-wrap {
overflow: hidden;
}
&-nav-scroll {
overflow: hidden;
white-space: nowrap;
}
&-scrollable #{$tab-prefix}-nav-scroll {
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
&::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
-webkit-appearance: none;
opacity: 0 !important;
}
}
&-nav {
display: inline-block;
position: relative;
transition: all $motion-duration-standard $motion-ease;
list-style: none;
padding: 0;
margin: 0;
&-enter,
&-appear {
animation: fadeInLeft .4s cubic-bezier(.78, .14, .15, .86);
animation-fill-mode: both;
}
&-leave {
animation: fadeOutLeft .2s cubic-bezier(.78, .14, .15, .86);
animation-fill-mode: both;
}
}
&-tab {
display: inline-block;
position: relative;
transition: all $motion-duration-immediately $motion-linear;
&-inner {
position: relative;
cursor: pointer;
text-decoration: none;
}
&:before {
content: "";
position: absolute;
transition: all $motion-duration-standard $motion-ease;
}
&.active {
font-weight: $tab-item-font-weight-selected;
}
@include tabs-tab-close-icon(
$tab-close-icon-color,
$tab-close-icon-color-hover,
$tab-close-icon-color-selected,
$tab-close-icon-color-disabled
);
}
&-tab:focus {
outline: none;
}
&-tabpane {
visibility: hidden;
opacity: 0;
&.active {
visibility: visible;
opacity: 1;
height: auto;
}
&.hidden {
overflow: hidden;
height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
}
}
/* Nav Button */
/* ----------------- */
&-btn-down,
&-btn-prev,
&-btn-next {
position: absolute;
top: 0;
cursor: pointer;
padding: 0;
border: 0;
outline: none;
height: 100%;
@include button-color($tab-nav-arrow-color-normal, $tab-nav-arrow-color-hover);
&.disabled {
cursor: not-allowed;
color: $tab-nav-arrow-color-disabled;
}
}
&-btn-next {
right: $tab-nav-arrow-right-positon-right;
}
&-btn-prev {
right: $tab-nav-arrow-left-positon-right;
}
&-btn-down {
right: $tab-nav-arrow-down-positon-right;
}
&-content {
overflow: hidden;
}
/* position: vertical */
/* ----------------- */
&-vertical > #{$tab-prefix}-bar {
#{$tab-prefix}-nav {
width: 100%;
}
#{$tab-prefix}-tab {
display: block;
}
}
/* Size */
/* ----------------- */
&.#{$css-prefix}medium {
@include tabs-size(
$tab-item-padding-tb-size-m,
$tab-item-padding-lr-size-m,
$tab-item-text-size-m,
$tab-nav-tab-icon-size-m,
$tab-nav-close-icon-size-m,
$tab-nav-close-icon-padding-l-size-m,
$tab-nav-scroll-padding-right-m
);
}
&.#{$css-prefix}small {
@include tabs-size(
$tab-item-padding-tb-size-s,
$tab-item-padding-lr-size-s,
$tab-item-text-size-s,
$tab-nav-tab-icon-size-s,
$tab-nav-close-icon-size-s,
$tab-nav-close-icon-padding-l-size-s,
$tab-nav-scroll-padding-right-s
);
}
/* shape: pure */
/* ----------------- */
&-pure > #{$tab-prefix}-bar {
border-bottom: $tab-pure-divider-line;
background-color: $tab-pure-bg-color;
#{$tab-prefix}-nav-container {
margin-bottom: -$tab-pure-divider-line-width;
box-shadow: $tab-pure-divider-shadow;
#{$tab-prefix}-tab {
@include tabs-tab-statement(
$tab-pure-text-color-normal, // text color
$tab-pure-text-color-hover,
$tab-pure-text-color-selected,
$tab-pure-text-color-disabled,
transparent, // bg color
transparent,
transparent,
transparent
);
@include tabs-tab-inkbar(
$tab-pure-ink-bar-width,
$tab-pure-ink-bar-color,
0%,
0%,
'bottom'
);
}
}
}
/* Shape: wrapped */
/* --------------------- */
&-wrapped > #{$tab-prefix}-bar {
background: $tab-wrapped-bar-bg-color;
#{$tab-prefix}-tab {
@include tabs-tab-statement(
$tab-wrapped-text-color,
$tab-wrapped-text-color-hover,
$tab-wrapped-text-color-selected,
$tab-wrapped-text-color-disabled,
$tab-wrapped-bg-color,
$tab-wrapped-bg-color-hover,
$tab-wrapped-bg-color-selected,
$tab-wrapped-bg-color-disabled
);
@include tabs-tab-close-icon(
$tab-close-icon-color,
$tab-close-icon-color-hover,
$tab-close-icon-color-selected,
$tab-close-icon-color-disabled
);
}
}
&-wrapped:before, &-wrapped:after {
content: "";
display: table;
}
&-wrapped:after {
clear: both;
}
&-wrapped > #{$tab-prefix}-content {
position: relative;
}
/* Shape: wrapped(top) */
&-wrapped#{$tab-prefix}-top > #{$tab-prefix}-bar {
position: relative;
#{$tab-prefix}-nav-extra {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
}
#{$tab-prefix}-tab {
margin-right: $tab-wrapped-tab-margin-right;
@include tabs-tab-border(
$tab-wrapped-bar-border,
null,
$tab-wrapped-tab-top-border-radius,
$tab-wrapped-border-line-color-hover,
$tab-wrapped-border-line-color,
$tab-wrapped-border-line-color,
$tab-wrapped-bg-color-selected,
$tab-wrapped-border-line-color
);
@include tabs-tab-inkbar(
$tab-wrapped-ink-bar-width,
$tab-wrapped-ink-bar-color,
-$tab-wrapped-border-line-width,
$tab-wrapped-tab-corner-radius,
'top'
);
border-width: $tab-wrapped-border-side-width $tab-wrapped-border-side-width $tab-wrapped-border-line-width $tab-wrapped-border-side-width;
&.active {
border-width: $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width;
}
}
}
&-wrapped#{$tab-prefix}-top > #{$tab-prefix}-bar:before {
content: '';
position: absolute;
top: 100%;
width: 100%;
height: 0;
border-bottom: $tab-wrapped-content-border;
transform: translateY(-$tab-wrapped-content-border-line-width);
display: block;
}
/* Shape: wrapped(bottom) */
&-wrapped#{$tab-prefix}-bottom > #{$tab-prefix}-bar {
position: relative;
#{$tab-prefix}-nav-extra {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
}
#{$tab-prefix}-tab {
margin-right: $tab-wrapped-tab-margin-right;
@include tabs-tab-border( $tab-wrapped-bar-border, null, $tab-wrapped-tab-bottom-border-radius, $tab-wrapped-border-line-color-hover, $tab-wrapped-bg-color-selected, $tab-wrapped-border-line-color, $tab-wrapped-border-line-color, $tab-wrapped-border-line-color);
@include tabs-tab-inkbar( $tab-wrapped-ink-bar-width, $tab-wrapped-ink-bar-color, -$tab-wrapped-border-line-width, $tab-wrapped-tab-corner-radius, 'bottom');
}
}
&-wrapped#{$tab-prefix}-bottom > #{$tab-prefix}-content {
top: $tab-wrapped-content-position-top;
border-bottom: $tab-wrapped-content-border;
}
/* Shape: wrapped(left) */
&-wrapped#{$tab-prefix}-left > #{$tab-prefix}-bar {
float: left;
#{$tab-prefix}-tab {
float: none;
margin-bottom: $tab-wrapped-tab-margin-bottom;
@include tabs-tab-border( $tab-wrapped-bar-border, null, $tab-wrapped-tab-left-border-radius, $tab-wrapped-border-line-color-hover, $tab-wrapped-border-line-color, $tab-wrapped-bg-color-selected, $tab-wrapped-border-line-color, $tab-wrapped-border-line-color);
@include tabs-tab-inkbar($tab-wrapped-ink-bar-width, $tab-wrapped-ink-bar-color, -$tab-wrapped-border-line-width, $tab-wrapped-tab-corner-radius, 'left');
border-width: $tab-wrapped-border-side-width $tab-wrapped-border-line-width $tab-wrapped-border-side-width $tab-wrapped-border-side-width;
&.active {
border-width: $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width;
}
}
}
&-wrapped#{$tab-prefix}-left > #{$tab-prefix}-content {
right: $tab-wrapped-content-position-right;
border-left: $tab-wrapped-content-border;
}
/* Shape: wrapped(right) */
&-wrapped#{$tab-prefix}-right > #{$tab-prefix}-bar {
float: right;
#{$tab-prefix}-tab {
float: none;
margin-bottom: $tab-wrapped-tab-margin-bottom;
@include tabs-tab-border( $tab-wrapped-bar-border, null, $tab-wrapped-tab-right-border-radius, $tab-wrapped-border-line-color-hover, $tab-wrapped-border-line-color, $tab-wrapped-border-line-color, $tab-wrapped-border-line-color, $tab-wrapped-bg-color-selected);
@include tabs-tab-inkbar($tab-wrapped-ink-bar-width, $tab-wrapped-ink-bar-color, -$tab-wrapped-border-line-width, $tab-wrapped-tab-corner-radius, 'right');
border-width: $tab-wrapped-border-side-width $tab-wrapped-border-side-width $tab-wrapped-border-side-width $tab-wrapped-border-line-width;
&.active {
border-width: $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width $tab-wrapped-border-line-width;
}
}
}
&-wrapped#{$tab-prefix}-right > #{$tab-prefix}-content {
right: -$tab-wrapped-content-position-right;
border-right: $tab-wrapped-content-border;
}
&-capsule > #{$tab-prefix}-bar {
#{$tab-prefix}-tab {
transition: background-color $motion-duration-immediately $motion-linear;
border: $tab-capsule-tab-border;
border-right-color: transparent;
margin-right: -$tab-capsule-tab-border-line-width;
&:first-child {
border-radius: $tab-capsule-corner-radius 0 0 $tab-capsule-corner-radius;
}
&:last-child {
border-radius: 0 $tab-capsule-corner-radius $tab-capsule-corner-radius 0;
border-right: $tab-capsule-tab-border;
}
&.active {
border-right: $tab-capsule-tab-border;
border-color: $tab-capsule-tab-border-line-color-active;
}
&.disabled {
border-color: $tab-capsule-tab-border-line-color-disabled;
}
&:hover {
z-index: 2;
border-right: $tab-capsule-tab-border;
border-color: $tab-capsule-tab-border-line-color-hover;
}
@include tabs-tab-statement(
$tab-capsule-text-color,
$tab-capsule-text-color-hover,
$tab-capsule-text-color-selected,
$tab-capsule-text-color-disabled,
$tab-capsule-bg-color,
$tab-capsule-bg-color-hover,
$tab-capsule-bg-color-selected,
$tab-capsule-bg-color-disabled
);
}
}
/* Shape: text */
/* ------------------- */
&-text > #{$tab-prefix}-bar {
#{$tab-prefix}-tab {
@include tabs-tab-statement(
$tab-text-text-color-normal,
$tab-text-text-color-hover,
$tab-text-text-color-selected,
$tab-text-text-color-disabled,
transparent, // no bg
transparent, // no hover bg
transparent, // no selected bg
transparent // no disabled bg
);
&:not(:last-child):after {
content: '';
position: absolute;
right: 0;
top: calc(50% - #{$tab-text-item-sep-height / 2});
width: $tab-text-item-sep-width;
height: $tab-text-item-sep-height;
background-color: $tab-text-item-sep-color;
}
}
}
&-pure > #{$tab-prefix}-bar {
position: relative;
#{$tab-prefix}-nav-extra {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
}
}
&-capsule > #{$tab-prefix}-bar {
position: relative;
#{$tab-prefix}-nav-extra {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
}
}
&-text > #{$tab-prefix}-bar {
position: relative;
#{$tab-prefix}-nav-extra {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
}
}
}
@import "./rtl.scss";