/** * Tabs * -------------------------------------------------- * A navigation bar with any number of tab items supported. */ .tabs { @include display-flex(); @include flex-direction(horizontal); @include justify-content(center); @include translate3d(0,0,0); @include tab-style($tabs-default-bg, $tabs-default-border, $tabs-default-text); @include tab-badge-style($tabs-default-text, $tabs-default-bg); position: absolute; bottom: 0; z-index: $z-index-tabs; width: 100%; height: $tabs-height; border-style: solid; border-top-width: 1px; background-size: 0; line-height: $tabs-height; @media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi), (min-resolution: 1.5dppx) { padding-top: 2px; border-top: none !important; border-bottom: none; background-position: top; background-size: 100% 1px; background-repeat: no-repeat; } } /* Allow parent element of tabs to define color, or just the tab itself */ .tabs-light > .tabs, .tabs.tabs-light { @include tab-style($tabs-light-bg, $tabs-light-border, $tabs-light-text); @include tab-badge-style($tabs-light-text, $tabs-light-bg); } .tabs-stable > .tabs, .tabs.tabs-stable { @include tab-style($tabs-stable-bg, $tabs-stable-border, $tabs-stable-text); @include tab-badge-style($tabs-stable-text, $tabs-stable-bg); } .tabs-positive > .tabs, .tabs.tabs-positive { @include tab-style($tabs-positive-bg, $tabs-positive-border, $tabs-positive-text); @include tab-badge-style($tabs-positive-text, $tabs-positive-bg); } .tabs-calm > .tabs, .tabs.tabs-calm { @include tab-style($tabs-calm-bg, $tabs-calm-border, $tabs-calm-text); @include tab-badge-style($tabs-calm-text, $tabs-calm-bg); } .tabs-assertive > .tabs, .tabs.tabs-assertive { @include tab-style($tabs-assertive-bg, $tabs-assertive-border, $tabs-assertive-text); @include tab-badge-style($tabs-assertive-text, $tabs-assertive-bg); } .tabs-balanced > .tabs, .tabs.tabs-balanced { @include tab-style($tabs-balanced-bg, $tabs-balanced-border, $tabs-balanced-text); @include tab-badge-style($tabs-balanced-text, $tabs-balanced-bg); } .tabs-energized > .tabs, .tabs.tabs-energized { @include tab-style($tabs-energized-bg, $tabs-energized-border, $tabs-energized-text); @include tab-badge-style($tabs-energized-text, $tabs-energized-bg); } .tabs-royal > .tabs, .tabs.tabs-royal { @include tab-style($tabs-royal-bg, $tabs-royal-border, $tabs-royal-text); @include tab-badge-style($tabs-royal-text, $tabs-royal-bg); } .tabs-dark > .tabs, .tabs.tabs-dark { @include tab-style($tabs-dark-bg, $tabs-dark-border, $tabs-dark-text); @include tab-badge-style($tabs-dark-text, $tabs-dark-bg); } @mixin tabs-striped($style, $color, $background) { &.#{$style} { .tabs{ background-color: $background; } .tab-item { color: rgba($color, $tabs-striped-off-opacity); opacity: 1; .badge{ opacity:$tabs-striped-off-opacity; } &.tab-item-active, &.active, &.activated { margin-top: -$tabs-striped-border-width; color: $color; border-style: solid; border-width: $tabs-striped-border-width 0 0 0; border-color: $color; } } } &.tabs-top{ .tab-item { &.tab-item-active, &.active, &.activated { .badge { top: 4%; } } } } } @mixin tabs-background($style, $color, $border-color) { .#{$style} { .tabs, &> .tabs{ background-color: $color; background-image: linear-gradient(0deg, $border-color, $border-color 50%, transparent 50%); border-color: $border-color; } } } @mixin tabs-striped-background($style, $color) { &.#{$style} { .tabs { background-color: $color; background-image:none; } } } @mixin tabs-color($style, $color) { .#{$style} { .tab-item { color: rgba($color, $tabs-off-opacity); opacity: 1; .badge{ opacity:$tabs-off-opacity; } &.tab-item-active, &.active, &.activated { color: $color; border: 0 solid $color; .badge{ opacity: 1; } } } } } @mixin tabs-striped-color($style, $color) { &.#{$style} { .tab-item { color: rgba($color, $tabs-striped-off-opacity); opacity: 1; .badge{ opacity:$tabs-striped-off-opacity; } &.tab-item-active, &.active, &.activated { margin-top: -$tabs-striped-border-width; color: $color; border: 0 solid $color; border-top-width: $tabs-striped-border-width; .badge{ top:$tabs-striped-border-width; opacity: 1; } } } } } .tabs-striped { .tabs { background-color: white; background-image: none; border: none; border-bottom: 1px solid #ddd; padding-top: $tabs-striped-border-width; } .tab-item { // default android tab style &.tab-item-active, &.active, &.activated { margin-top: -$tabs-striped-border-width; border-style: solid; border-width: $tabs-striped-border-width 0 0 0; border-color: $dark; .badge{ top:$tabs-striped-border-width; opacity: 1; } } } @include tabs-striped('tabs-light', $dark, $light); @include tabs-striped('tabs-stable', $dark, $stable); @include tabs-striped('tabs-positive', $light, $positive); @include tabs-striped('tabs-calm', $light, $calm); @include tabs-striped('tabs-assertive', $light, $assertive); @include tabs-striped('tabs-balanced', $light, $balanced); @include tabs-striped('tabs-energized', $light, $energized); @include tabs-striped('tabs-royal', $light, $royal); @include tabs-striped('tabs-dark', $light, $dark); // doing this twice so striped tabs styles don't override specific bg and color vals @include tabs-striped-background('tabs-background-light', $light); @include tabs-striped-background('tabs-background-stable', $stable); @include tabs-striped-background('tabs-background-positive', $positive); @include tabs-striped-background('tabs-background-calm', $calm); @include tabs-striped-background('tabs-background-assertive', $assertive); @include tabs-striped-background('tabs-background-balanced', $balanced); @include tabs-striped-background('tabs-background-energized',$energized); @include tabs-striped-background('tabs-background-royal', $royal); @include tabs-striped-background('tabs-background-dark', $dark); @include tabs-striped-color('tabs-color-light', $light); @include tabs-striped-color('tabs-color-stable', $stable); @include tabs-striped-color('tabs-color-positive', $positive); @include tabs-striped-color('tabs-color-calm', $calm); @include tabs-striped-color('tabs-color-assertive', $assertive); @include tabs-striped-color('tabs-color-balanced', $balanced); @include tabs-striped-color('tabs-color-energized',$energized); @include tabs-striped-color('tabs-color-royal', $royal); @include tabs-striped-color('tabs-color-dark', $dark); } @include tabs-background('tabs-background-light', $light, $bar-light-border); @include tabs-background('tabs-background-stable', $stable, $bar-stable-border); @include tabs-background('tabs-background-positive', $positive, $bar-positive-border); @include tabs-background('tabs-background-calm', $calm, $bar-calm-border); @include tabs-background('tabs-background-assertive', $assertive, $bar-assertive-border); @include tabs-background('tabs-background-balanced', $balanced, $bar-balanced-border); @include tabs-background('tabs-background-energized',$energized, $bar-energized-border); @include tabs-background('tabs-background-royal', $royal, $bar-royal-border); @include tabs-background('tabs-background-dark', $dark, $bar-dark-border); @include tabs-color('tabs-color-light', $light); @include tabs-color('tabs-color-stable', $stable); @include tabs-color('tabs-color-positive', $positive); @include tabs-color('tabs-color-calm', $calm); @include tabs-color('tabs-color-assertive', $assertive); @include tabs-color('tabs-color-balanced', $balanced); @include tabs-color('tabs-color-energized',$energized); @include tabs-color('tabs-color-royal', $royal); @include tabs-color('tabs-color-dark', $dark); @mixin tabs-standard-color($style, $color, $off-color:$dark) { &.#{$style} { .tab-item { color: $off-color; &.tab-item-active, &.active, &.activated { color: $color; } } } } ion-tabs { @include tabs-standard-color('tabs-color-active-light', $light, $dark); @include tabs-standard-color('tabs-color-active-stable', $stable, $dark); @include tabs-standard-color('tabs-color-active-positive', $positive, $dark); @include tabs-standard-color('tabs-color-active-calm', $calm, $dark); @include tabs-standard-color('tabs-color-active-assertive', $assertive, $dark); @include tabs-standard-color('tabs-color-active-balanced', $balanced, $dark); @include tabs-standard-color('tabs-color-active-energized',$energized, $dark); @include tabs-standard-color('tabs-color-active-royal', $royal, $dark); @include tabs-standard-color('tabs-color-active-dark', $dark, $light); } .tabs-top { &.tabs-striped { padding-bottom:0; .tab-item{ background: transparent; // animate the top bar, leave bottom for platform consistency -webkit-transition: all .1s ease; -moz-transition: all .1s ease; -ms-transition: all .1s ease; -o-transition: all .1s ease; transition: all .1s ease; &.tab-item-active, &.active, &.activated { margin-top: 0; margin-bottom: -$tabs-striped-border-width; border-width: 0px 0px $tabs-striped-border-width 0px !important; border-style: solid; } .badge{ -webkit-transition: all .2s ease; -moz-transition: all .2s ease; -ms-transition: all .2s ease; -o-transition: all .2s ease; transition: all .2s ease; } } } } /* Allow parent element to have tabs-top */ /* If you change this, change platform.scss as well */ .tabs-top > .tabs, .tabs.tabs-top { top: $bar-height; padding-top: 0; background-position: bottom; border-top-width: 0; border-bottom-width: 1px; .tab-item { &.tab-item-active, &.active, &.activated { .badge { top: 4%; } } } } .tabs-top ~ .bar-header { border-bottom-width: 0; } .tab-item { @include flex(1); display: block; overflow: hidden; max-width: $tab-item-max-width; height: 100%; color: inherit; text-align: center; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; font-size: $tabs-text-font-size; font-family: $font-family-sans-serif; opacity: 0.7; &:hover { cursor: pointer; } &.tab-hidden{ display:none; } } .tabs-item-hide > .tabs, .tabs.tabs-item-hide { display: none; } .tabs-icon-top > .tabs .tab-item, .tabs-icon-top.tabs .tab-item, .tabs-icon-bottom > .tabs .tab-item, .tabs-icon-bottom.tabs .tab-item { font-size: $tabs-text-font-size-side-icon; line-height: $tabs-text-font-size; } .tab-item .icon { display: block; margin: 0 auto; height: $tabs-icon-size; font-size: $tabs-icon-size; } .tabs-icon-left.tabs .tab-item, .tabs-icon-left > .tabs .tab-item, .tabs-icon-right.tabs .tab-item, .tabs-icon-right > .tabs .tab-item { font-size: $tabs-text-font-size-side-icon; .icon { display: inline-block; vertical-align: top; margin-top: -.1em; &:before { font-size: $tabs-icon-size - 8; line-height: $tabs-height; } } } .tabs-icon-left > .tabs .tab-item .icon, .tabs-icon-left.tabs .tab-item .icon { padding-right: 3px; } .tabs-icon-right > .tabs .tab-item .icon, .tabs-icon-right.tabs .tab-item .icon { padding-left: 3px; } .tabs-icon-only > .tabs .icon, .tabs-icon-only.tabs .icon { line-height: inherit; } .tab-item.has-badge { position: relative; } .tab-item .badge { position: absolute; top: 4%; right: 33%; // fallback right: calc(50% - 26px); padding: $tabs-badge-padding; height: auto; font-size: $tabs-badge-font-size; line-height: $tabs-badge-font-size + 4; } /* Navigational tab */ /* Active state for tab */ .tab-item.tab-item-active, .tab-item.active, .tab-item.activated { opacity: 1; &.tab-item-light { color: $light; } &.tab-item-stable { color: $stable; } &.tab-item-positive { color: $positive; } &.tab-item-calm { color: $calm; } &.tab-item-assertive { color: $assertive; } &.tab-item-balanced { color: $balanced; } &.tab-item-energized { color: $energized; } &.tab-item-royal { color: $royal; } &.tab-item-dark { color: $dark; } } .item.tabs { @include display-flex(); padding: 0; .icon:before { position: relative; } } .tab-item.disabled, .tab-item[disabled] { opacity: .4; cursor: default; pointer-events: none; }