UNPKG

touchstonejs-ui

Version:

React.js UI components for the TouchstoneJS platform http://touchstonejs.io

279 lines (201 loc) 6.41 kB
// // Navigation Bar // ============================== // Base // --------------------------- .NavigationBar { .box-sizing(content-box); // allows us to set a fixed height whilst growing when padding is applied .retina-1px-border-bottom( rgba(0, 0, 0, 0.28) ); background-color: @headerbar-bg; line-height: @headerbar-height; height: @headerbar-height; position: relative; z-index: @view-transition-stack-top + 1; // make room for the iOS statusbar .device--iPhone & { padding-top: @statusbar-height; } } // Buttons - Common // --------------------------- /* * 1. force hardware accelaration - prepare for animation * removes antialising artefacts left by transform/animation * 2. remove browser default styles from <button> * button is used to leverage the [disabled] attribute * 3. stops overflow without having to apply overflow:hidden on the wrapper * 4. position and stack the element for layout **/ .NavigationBarLeftButton, .NavigationBarRightButton { .transition( opacity 80ms ); .translateZ(0); // 1 background: none; // 2 color: @headerbar-button-color; border: none; // 2 bottom: 0; line-height: @headerbar-height; // 3 height: @headerbar-height; // 3 outline: none; // 2 position: absolute; // 4 z-index: 2; // 4 -webkit-appearance: none; // 2 &[disabled] { color: @headerbar-button-color-disabled; } &.Tappable-active { opacity: .5; } } // Left Button // --------------------------- // arrow and label position themselves .NavigationBarLeftButton {} // Left Icon / Back Chevron (child of left button) // --------------------------- // common .NavigationBarLeftArrow, .NavigationBarLeftIcon { .translateZ(0); bottom: 0; left: 0; line-height: inherit; position: absolute; text-align: center; // center the chevron vertical-align: top; width: @headerbar-left-arrow-with-gutter; z-index: 3; // should be the highest element in the navigation bar } // arrow .NavigationBarLeftArrow { #gradient .horizontal(@headerbar-bg, fade(@headerbar-bg, 0%), 50%, 100%); // mask the label as it enters and leaves .ionicon(inherit, @ionicon-var-chevron-left, @icon-size-large); line-height: inherit; } // icon .NavigationBarLeftIcon { display: none; // hide from iOS font-size: @icon-size-large; } // Left Label // Child of Left Button // --------------------------- .NavigationBarLeftLabel { .translateZ(0); bottom: 0; color: inherit; display: inline-block; left: @gutter-sm; vertical-align: top; line-height: @headerbar-height; height: @headerbar-height; position: absolute; // FIXME: always offset the label to stop jank // .has-arrow & { // left: @headerbar-left-arrow-with-gutter; // } left: @headerbar-left-arrow-with-gutter; } // Title // --------------------------- .NavigationBarTitle { bottom: 0; font-weight: 500; height: @headerbar-height; left: 0; line-height: @headerbar-height; position: absolute; text-align: center; width: 100%; z-index: 1; } // Right Button // --------------------------- .NavigationBarRightButton { right: @gutter-sm; } // Right Icon // --------------------------- .NavigationBarRightIcon { font-size: @icon-size-large; } // Animation // --------------------------- // 1. set common duration // 2. set common timing function // 3. disable user interaction during transitions .NavigationBarTransition-Instant-enter, .NavigationBarTransition-Instant-leave, .NavigationBarTransition-Fade-enter, .NavigationBarTransition-Fade-leave, .NavigationBarTransition-Forwards-enter, .NavigationBarTransition-Forwards-leave, .NavigationBarTransition-Backwards-enter, .NavigationBarTransition-Backwards-leave { .animation-duration( @view-transition-duration ); // 1 .animation-timing-function( @view-transition-timing-function ); // 2 pointer-events: none; // 3 } // set transition types .NavigationBarTransition-Fade-enter { .animation-name( fadeIn ); } .NavigationBarTransition-Fade-leave { .animation-name( fadeOut ); } .NavigationBarTransition-Forwards-enter { .animation-name( NavigationBarTransitionForwardsEnter ); } .NavigationBarTransition-Forwards-leave { .animation-name( NavigationBarTransitionForwardsLeave ); } .NavigationBarTransition-Backwards-enter { .animation-name( NavigationBarTransitionBackwardsEnter ); } .NavigationBarTransition-Backwards-leave { .animation-name( NavigationBarTransitionBackwardsLeave ); } // instant is a special case. intentionally declared last .NavigationBarTransition-Instant-enter { .animation( fadeIn 50ms linear ); } .NavigationBarTransition-Instant-leave { .animation( fadeOut 50ms linear ); } // Describe animation keyframes // header element (forwards) - enter @-webkit-keyframes NavigationBarTransitionForwardsEnter { from { opacity: 0; -webkit-transform: translate3d(@view-transition-distance, 0, 0); } to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); } } @keyframes NavigationBarTransitionForwardsEnter { from { opacity: 0; transform: translate3d(@view-transition-distance, 0, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } // header element (forwards) - leave @-webkit-keyframes NavigationBarTransitionForwardsLeave { from { opacity: 1; -webkit-transform: translate3d(0, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(-@view-transition-distance, 0, 0); } } @keyframes NavigationBarTransitionForwardsLeave { from { opacity: 1; transform: translate3d(0, 0, 0); } to { opacity: 0; transform: translate3d(-@view-transition-distance, 0, 0); } } // header element (backwards) - enter @-webkit-keyframes NavigationBarTransitionBackwardsEnter { from { opacity: 0; -webkit-transform: translate3d(-@view-transition-distance, 0, 0); } to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); } } @keyframes NavigationBarTransitionBackwardsEnter { from { opacity: 0; transform: translate3d(-@view-transition-distance, 0, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } // header element (backwards) - leave @-webkit-keyframes NavigationBarTransitionBackwardsLeave { from { opacity: 1; -webkit-transform: translate3d(0, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(@view-transition-distance, 0, 0); } } @keyframes NavigationBarTransitionBackwardsLeave { from { opacity: 1; transform: translate3d(0, 0, 0); } to { opacity: 0; transform: translate3d(@view-transition-distance, 0, 0); } }