3.0 source code

This commit is contained in:
agolybev
2015-04-28 17:59:00 +03:00
parent c69fd34bdd
commit 7b3b2248e5
16311 changed files with 1445974 additions and 3108429 deletions

View File

@@ -0,0 +1,2 @@
@import 'core';
@import 'widgets';

View File

@@ -0,0 +1,3 @@
@import 'core/reset';
@import 'core/core';
@import 'core/layout';

View File

@@ -0,0 +1,2 @@
@import 'variables';
@import 'mixins';

View File

@@ -0,0 +1,153 @@
@import 'compass/css3';
@import 'recipes/background';
@import 'recipes/color';
$default-gradient: $base-gradient;
/**
* @class Global_CSS
*/
/**
* Includes a base64-encoded icon for use within tab bars and buttons (With the component parameter iconMask: true).
*
* @include pictos-iconmask('attachment');
*
* @param {string} $name The name of the icon to be included. This is to match the name of the icon file (located at resources/themes/images/default/pictos) without its extention (.png).
*/
@mixin pictos-iconmask($name) {
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name} {
-webkit-mask-image: theme_image('default', "pictos/" + $name + ".png");
}
}
/**
* Includes the default styles for toolbar buttons, mostly used as a helper function.
*
* @param {color} $bg-color Base color to be used for the button.
* @param {color} $type Gradient style for the button, will automatically use "recessed" when pressed.
*/
@mixin toolbar-button($bg-color, $type: $button-gradient){
&, .x-toolbar & {
border: 1px solid darken($bg-color, 20%);
border-top-color: darken($bg-color, 15%);
@include color-by-background($bg-color);
&.x-button-back:before, &.x-button-forward:before {
background: darken($bg-color, 20%);
}
&, &.x-button-back:after, &.x-button-forward:after {
@include background-gradient($bg-color, $type);
}
.x-button-icon.x-icon-mask {
@include mask-by-background($bg-color);
}
&.x-button-pressing, &.x-button-pressed, &.x-button-active {
&, &:after {
@include background-gradient(darken($bg-color, 3%), 'recessed');
}
}
}
}
/**
* Adds a small text shadow (or highlight) to give the impression of beveled text.
*
* @param {string} $type Either shadow or highlight, decides whether to apply a light shadow or dark.
*/
@mixin bevel-text($type: 'shadow') {
@if $include-highlights {
@if $type == shadow {
text-shadow: rgba(0,0,0,.5) 0 -.08em 0;
} @else {
text-shadow: rgba(255,255,255,.25) 0 .08em 0;
}
}
}
/**
* Adds a small box shadow (or highlight) to give the impression of being beveled.
*
* @param {string} $type Either shadow or highlight, decides whether to apply a light shadow or dark.
*/
@mixin bevel-box($type: 'light') {
@if $include-highlights {
@if $type == shadow {
@include box-shadow(rgba(#000, .5) 0 -.06em 0);
} @else {
@include box-shadow(rgba(#fff, .35) 0 .06em 0);
}
}
}
/**
* Adds basic styles to :before or :after pseudo-elements.
*
* .my-element:after {
* @include insertion(50px, 50px);
* }
*
* @param {measurement} $width Height of pseudo-element.
* @param {measurement} $height Height of pseudo-element.
* @param {measurement} $top Top positioning of pseudo-element.
* @param {measurement} $left Left positioning of pseudo-element.
*
*/
@mixin insertion($width: 30px, $height: 30px, $top: 0, $left: 0) {
content: "";
position: absolute;
width: $width;
height: $height;
top: $top;
left: $left;
}
/**
* Makes an element stretch to its parent's bounds.
*/
@mixin stretch {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
/**
* Bevels the text based on its background.
*
* @param {color} $bg-color Background color of element.
* @see bevel-text
*
*/
@mixin bevel-by-background($bg-color) {
@if (lightness($bg-color) > 50) { @include bevel-text(light) }
@else { @include bevel-text; }
}
/**
* Creates a background gradient for masked elements, based on the lightness of their background.
*
* @param {color} $bg-color Background color of element.
* @param {percent} $percent Contrast of the new gradient to its background.
* @param {percent} $style Gradient style of the gradient.
* @see background-gradient
*
*/
@mixin mask-by-background($bg-color, $contrast: 100%, $style: $base-gradient) {
@if (lightness($bg-color) > 50) { @include background-gradient(darken($bg-color, $contrast), $style) }
@else { @include background-gradient(lighten($bg-color, $contrast), $style) }
}
/**
* Makes the element text overflow to use ellipsis.
*/
@mixin ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@@ -0,0 +1,122 @@
$theme-name: 'default' !default;
/**
* @class Global_CSS
*
* Global CSS variables and mixins of Sencha Touch.
*/
/**
* @var {boolean} $include-html-style
* Optionally remove included HTML styles/typography (for components with styleHtmlContent: true).
* Styles are scoped to .x-html. Set to false to reduce CSS weight.
*/
$include-html-style: true !default;
/**
* @var {boolean} $include-default-icons
* Optionally remove the default icon set which includes the following toolbar and tab bar icons: action,
* add, arrow_down, arrow_left, arrow_right, arrow_up, bookmarks, compose, delete, download, favorites,
* home, info, locate, maps, more, organize, refresh, reply, search, settings, star, team, time, trash,
* and user. Set to false to reduce CSS weight.
*/
$include-default-icons: true !default;
/**
* @var {boolean} $include-form-sliders
* Decides if default HTML styles are included (for components with styleHtmlContent: true). Class is applied to .x-html.
*/
$include-form-sliders: true !default;
/**
* @var {boolean} $include-floating-panels
* Decides whether or not to include floating panels (useful to disable for iPhone applications which do not typically have floating menus).
*/
$include-floating-panels: true !default;
/**
* @var {boolean} $include-default-uis
* Decides whether or not to include the default UIs for all components.
*/
$include-default-uis: true !default;
/**
* @var {boolean} $include-highlights=true
* Optionally disable all gradients, text-shadows, and box-shadows. Useful for CSS debugging,
* non-performant browsers, or minimalist designs.
*/
$include-highlights: true !default; // Can disable all theme-generated gradients, text-shadows, and box-shadows.
/**
* @var {boolean} $include-border-radius
* Optionally disable all border-radius. Useful for CSS debugging, non-performant browsers, or minimalist designs.
*/
$include-border-radius: true !default; // Can disable all rounded corners
/**
* @var {boolean} $basic-slider
* Optionally remove CSS3 effects from the slider component for improved performance.
*/
$basic-slider: false !default;
/**
* @var {color} $base-color
* The primary color variable from which most elements derive their color scheme.
*/
$base-color: #1985D0 !default; // Triton Blue
/**
* @var {string} $base-gradient
* The primary gradient variable from which most elements derive their color scheme.
* @see background-gradient
*/
$base-gradient: if($include-highlights, matte, null) !default;
/**
* @var {font-family} $font-family
* The font-family to be used throughout the theme.
* @see background-gradient
*/
$font-family: "Helvetica Neue", HelveticaNeue, "Helvetica-Neue", Helvetica, "BBAlpha Sans", sans-serif !default;
/**
* @var {color} $alert-color
* Color used for elements like badges, errors, and "decline" UIs (eg. on buttons).
*/
$alert-color: red !default;
/**
* @var {color} $confirm-color
* Color used for elements like success messages, and "confirm" UIs (eg. on buttons).
*/
$confirm-color: #92cf00 !default; // Green
/**
* @var {color} $active-color
* Color used for elements like selected rows, "action" UIs (eg. on buttons) and certain overlays like the picker mask.
*/
$active-color: darken(saturate($base-color, 55%), 10%) !default;
/**
* @var {color} $neutral-color
* Color used for the neautral `ui` for Toolbars and Tabbars.
*/
$neutral-color: #e0e0e0;
/**
* @var {color} $page-bg-color
* Background color for fullscreen components.
*/
$page-bg-color: #eee !default;
/**
* @var {measurement} $global-row-height
* The minimum row height for items like toolbars.
*/
$global-row-height: 2.6em !default;
/**
* @var {measurement} $global-list-height
* The minimum row height for items like toolbars.
*/
$global-list-height: 46px !default;

View File

@@ -0,0 +1,18 @@
@import 'widgets/map';
@import 'widgets/picker';
@import 'widgets/panel';
@import 'widgets/toolbar';
@import 'widgets/buttons';
@import 'widgets/tabs';
@import 'widgets/carousel';
@import 'widgets/indexbar';
@import 'widgets/list';
@import 'widgets/form';
@import 'widgets/sheets';
@import 'widgets/msgbox';
@import 'widgets/toolbar-forms';
@import 'widgets/loading-spinner';
@import 'widgets/draw';
@import 'widgets/charts';
@import 'widgets/img';
@import 'widgets/media';

View File

@@ -0,0 +1,205 @@
@import '../global';
@import 'compass/css3/box-sizing';
@import 'blueprint/typography';
$experimental-support-for-mozilla: false;
$experimental-support-for-opera: false;
$experimental-support-for-microsoft: false;
$experimental-support-for-khtml: false;
html, body {
font-family: $font-family;
font-weight: normal;
position: relative;
-webkit-text-size-adjust: none;
}
body.x-desktop {
overflow: hidden;
}
*, *:after, *:before {
@include box-sizing(border-box);
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-user-select: none;
-webkit-touch-callout: none;
-webkit-user-drag: none;
}
.x-ios.x-tablet .x-landscape * {
-webkit-text-stroke: 1px transparent;
}
body {
font-size: 104%;
}
body.x-android.x-phone {
font-size: 116%;
}
body.x-android.x-phone.x-silk {
font-size: 130%;
}
body.x-ios.x-phone {
font-size: 114%;
}
body.x-desktop {
font-size: 114%;
}
input, textarea {
-webkit-user-select: text;
}
.x-hidden-visibility {
visibility: hidden !important;
}
.x-hidden-display {
display: none !important;
}
.x-hidden-offsets {
position: absolute !important;
left: -10000em;
top: -10000em;
visibility: hidden;
}
.x-fullscreen {
position: absolute !important;
// removing this so floating items dont always stick to the top. i've seen no downside to this. ^robert
// top: 0px;
// left: 0px;
}
.x-desktop .x-body-stretcher {
margin-bottom: 0px;
}
.x-mask {
$min-width: 8.5em;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
height: 100%;
z-index: 10;
@include display-box;
@include box-align(center);
@include box-pack(center);
background: rgba(0,0,0,.3) center center no-repeat;
&.x-mask-gray {
background-color: rgba(0, 0, 0, 0.5);
}
&.x-mask-transparent {
background-color: transparent;
}
.x-mask-inner {
position: relative;
background: rgba(0, 0, 0, .25);
color: #fff;
text-align: center;
padding: .4em;
font-size: .95em;
font-weight: bold;
@if $include-border-radius { @include border-radius(.5em); }
}
.x-loading-spinner-outer {
@include display-box;
@include box-orient(vertical);
@include box-align(center);
@include box-pack(center);
width: 100%;
min-width: $min-width;
height: $min-width;
}
&.x-indicator-hidden {
.x-mask-inner {
padding-bottom: 0 !important;
}
.x-loading-spinner-outer {
display: none;
}
.x-mask-message {
position: relative;
bottom: .25em;
}
}
.x-mask-message {
position: absolute;
bottom: 1.7em;
@include bevel-text;
-webkit-box-flex: 0 !important;
max-width: 13em;
min-width: $min-width;
}
&.x-has-message {
.x-mask-inner {
padding-bottom: 2em;
}
.x-loading-spinner-outer {
height: 7.5em;
}
}
}
.x-draggable {
z-index: 1;
}
.x-dragging {
opacity: 0.7;
}
.x-panel-list {
background-color: saturate(lighten($base-color, 50%), 15%);
}
@if $include-html-style {
.x-html {
-webkit-user-select: auto;
-webkit-touch-callout: inherit;
@include blueprint-typography;
line-height: 1.5;
color: #333;
font-size: .8em;
padding: 1.2em;
ul li {
list-style-type: circle;
}
ol li {
list-style-type: decimal;
}
}
}
.x-video {
background-color: #000;
}
.x-sortable .x-dragging {
opacity: 1;
z-index: 5;
}
.x-layout-card-item {
background: $page-bg-color;
}

View File

@@ -0,0 +1,629 @@
@mixin absolute-position($top: 0, $right: 0, $bottom: 0, $left: 0){
position: absolute;
top: $top;
right: $right;
bottom: $bottom;
left: $left;
}
@mixin absolute-fit {
width: auto;
height: auto;
//overflow: hidden;
@include absolute-position;
}
@mixin box(){
display: -webkit-box;
}
@mixin box-align($align: stretch){
-webkit-box-align: $align;
}
@mixin box-orient($orient: horizontal){
-webkit-box-orient: $orient;
}
@mixin box-orient-important($orient: horizontal){
-webkit-box-orient: $orient !important;
}
@mixin box-pack($pack: start){
-webkit-box-pack: $pack;
}
@mixin box-flex($flex: 1){
-webkit-box-flex: $flex;
}
@mixin sencha-layout {
html, body {
width: 100%;
height: 100%;
}
@-webkit-keyframes x-paint-monitor-helper {
from { zoom: 1 }
to { zoom: 1 }
}
.x-paint-monitored {
position: relative;
}
.x-paint-monitor {
width: 0 !important;
height: 0 !important;
visibility: hidden;
&.cssanimation {
-webkit-animation-duration: 0.0001ms;
-webkit-animation-name: x-paint-monitor-helper;
}
&.overflowchange {
overflow: hidden;
&::after {
content: "";
display: block;
width: 1px !important;
height: 1px !important;
}
}
}
.x-size-monitored {
position:relative;
}
.x-size-monitors {
position:absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
visibility: hidden;
z-index: -9999;
overflow: hidden;
> * {
width: 100%;
height: 100%;
overflow: hidden;
}
&.scroll > * {
&.shrink::after {
content: "";
display: block;
width: 200%;
height: 200%;
min-width: 1px;
min-height: 1px;
}
&.expand::after {
content: "";
display: block;
width: 100000px;
height: 100000px;
}
}
&.overflowchanged > * {
&.shrink {
> * {
width: 100%;
height: 100%;
}
}
&.expand {
> * {
width: 200%;
height: 200%;
}
}
}
}
//.x-container, .x-component, .x-body, .x-inner {
// position: relative;
// overflow: hidden;
//}
.x-body {
position: relative;
z-index: 0;
}
.x-inner, .x-body {
width: 100%;
height: 100%;
}
.x-dock, .x-dock-body {
height: 100%;
}
.x-sized {
position: relative;
}
.x-stretched.x-container {
@include box;
@include box-orient(vertical);
> .x-inner, > .x-body, > .x-body > .x-inner {
@include box();
@include box-flex(1);
@include box-orient(vertical);
}
}
.x-innerhtml {
width: 100%;
}
.x-layout-card {
position: relative;
overflow: hidden;
}
.x-layout-card-item-container {
@include absolute-fit;
}
.x-layout-card-item {
@include absolute-position;
}
.x-layout-newcard-item, .x-layout-newcard-item > * {
@include absolute-position;
}
.x-layout-newcard-item:not(.active) {
display: none;
}
.x-layout-fit.x-stretched > .x-layout-fit-item {
@include box();
@include box-flex(1);
}
.x-layout-fit {
position: relative;
}
.x-layout-fit-item {
&.x-sized {
@include absolute-position;
}
&.x-unsized {
width: 100%;
height: 100%;
}
}
.x-center, .x-centered {
@include absolute-position;
@include box;
@include box-align(center);
@include box-pack(center);
> * {
position: relative;
}
> .x-floating {
position: relative !important;
}
}
.x-floating {
position: absolute;
}
.x-dock {
@include box();
&.x-sized, &.x-sized > .x-dock-body > *,
&.x-sized > .x-dock-body > .x-body > .x-inner {
@include absolute-fit();
}
.x-dock-body {
@include box();
@include box-flex(1);
}
&.x-sized > .x-dock-body {
position: relative;
}
&.x-unsized, &.x-stretched {
> .x-dock-body {
@include box-orient(vertical);
> * {
@include box-flex(1);
}
}
}
&.x-dock-vertical {
@include box-orient(vertical);
}
&.x-dock-horizontal {
@include box-orient(horizontal);
> .x-dock-item {
@include box();
&.x-sized {
> .x-inner, > .x-body {
@include absolute-fit();
}
}
&.x-unsized {
@include box-orient(vertical);
> * {
@include box-flex(1);
}
}
}
}
}
//.x-dock {
// display: table;
// width: 100%;
// height: 100%;
// &.x-dock-vertical {
// > * {
// display: table-row;
// }
// > .x-dock-item {
// height: 1px;
// }
// &.x-sized > .x-dock-body {
// > .x-body, > .x-inner, > .x-body > .x-inner {
// width: 100%;
// height: 100%;
// }
// }
// }
// &.x-dock-horizontal {
// > * {
// display: table-cell;
// vertical-align: top;
// height: 100%;
// position: relative;
// }
// > .x-dock-item {
// width: 1px;
// }
// > .x-dock-item > *, > .x-dock-body > * {
// height: 100%;
// }
// &.x-sized > .x-dock-body {
// > .x-body, > .x-inner, > .x-body > .x-inner {
// width: 100%;
// height: 100%;
// }
// }
// }
//}
.x-layout-box {
@include box;
&.x-horizontal {
@include box-orient-important(horizontal);
> .x-layout-box-item.x-flexed {
width: 0 !important;
}
}
&.x-vertical {
@include box-orient(vertical);
> .x-layout-box-item.x-flexed {
height: 0 !important;
}
}
> .x-layout-box-item {
display: -webkit-box !important;
}
&.x-align-start {
@include box-align(start);
}
&.x-align-center {
@include box-align(center);
}
&.x-align-end {
@include box-align(end);
}
&.x-align-stretch {
@include box-align(stretch);
}
&.x-pack-start {
@include box-pack(start);
}
&.x-pack-center {
@include box-pack(center);
}
&.x-pack-end {
@include box-pack(end);
}
&.x-pack-justify {
@include box-pack(justify);
}
}
.x-layout-box-item.x-sized {
> .x-inner, > .x-body, > .x-dock-outer {
@include absolute-fit;
}
}
.x-layout-float {
overflow: hidden;
> .x-layout-float-item {
float: left;
}
&.x-direction-right {
> .x-layout-float-item {
float: right;
}
}
}
.x-table-inner {
display: table !important;
width: 100% !important;
height: 100% !important;
&.x-fixed-layout {
table-layout: fixed !important;
}
}
.x-table-row {
display: table-row !important;
}
.x-table-cell {
display: table-cell !important;
vertical-align: middle;
}
.x-translatable {
position: absolute;
top: 100% !important;
left: 100% !important;
overflow: visible !important;
z-index: 1;
&::before {
content: "";
display: block;
position: absolute;
top: 100%;
left: 100%;
width: 100%;
height: 100%;
visibility: hidden;
}
}
.x-translatable-container {
overflow: hidden;
@include absolute-fit();
&::before {
content: "";
display: block;
width: 300%;
height: 300%;
visibility: hidden;
}
}
.x-size-change-detector {
visibility: hidden;
position: absolute;
left: 0;
top: 0;
z-index: -1;
width: 100%;
height: 100%;
overflow: hidden;
}
.x-size-change-detector > * {
visibility: hidden;
}
.x-size-change-detector-shrink > * {
width: 200%;
height: 200%;
}
.x-size-change-detector-expand > * {
width: 100000px;
height: 100000px;
}
.x-scroll-view {
position: relative;
display: block;
overflow: hidden;
}
.x-scroll-container {
position: absolute;
width: 100%;
height: 100%;
}
.x-scroll-scroller {
position: absolute;
min-width: 100%;
min-height: 100%;
width: auto !important;
height: auto !important;
}
.x-ios .x-scroll-scroller {
-webkit-transform: translate3d(0, 0, 0);
}
.x-scroll-stretcher {
position: absolute;
visibility: hidden;
}
.x-scroll-bar-grid-wrapper {
position: absolute;
width: 100%;
height: 100%;
}
.x-scroll-bar-grid {
display: table;
width: 100%;
height: 100%;
> * {
display: table-row;
}
> * > * {
display: table-cell;
}
> :first-child > :first-child {
width: 100%;
height: 100%;
}
> :first-child > :nth-child(2) {
padding: 3px 3px 0 0;
}
> :nth-child(2) > :first-child {
padding: 0 0 3px 3px;
}
}
.x-scroll-bar {
position: relative;
overflow: hidden;
}
.x-scroll-bar-stretcher {
position: absolute;
visibility: hidden;
width: 100%;
height: 100%;
}
.x-scroll-bar-x {
width: 100%;
> .x-scroll-bar-stretcher {
width: 300%;
}
&.active {
height: 6px;
}
}
.x-scroll-bar-y {
height: 100%;
> .x-scroll-bar-stretcher {
height: 300%;
}
&.active {
width: 6px;
}
}
.x-scroll-indicator {
background: #333;
position: absolute;
z-index: 3;
opacity: 0.5;
}
.x-android-4 .x-scroll-indicator {
opacity: 1;
}
.x-scroll-indicator.default {
@include border-top-radius(3px);
@include border-bottom-radius(3px);
}
.x-list-light,
.x-dataview-light {
.x-scroll-indicator {
background: #fff;
opacity: 1;
}
}
.x-scroll-indicator-x {
height: 100%;
}
.x-scroll-indicator-y {
width: 100%;
}
.x-scroll-indicator.csstransform {
background: none;
> * {
position: absolute;
background-color: #333;
}
> :nth-child(2) {
-webkit-transform-origin: 0% 0%;
background: none;
content: url(data:image/bmp;base64,Qk08AAAAAAAAADYAAAAoAAAAAQAAAAEAAAABABAAAAAAAAYAAAASCwAAEgsAAAAAAAAAAAAAxhgAAAAA);
}
&.x-scroll-indicator-light {
> * {
background-color: #eee;
}
> :nth-child(2) {
content: url(data:image/bmp;base64,Qk08AAAAAAAAADYAAAAoAAAAAQAAAAEAAAABABAAAAAAAAYAAAASCwAAEgsAAAAAAAAAAAAAvXcAAAAA);
}
}
&.x-scroll-indicator-y {
> * {
width: 100%;
}
> :first-child {
height: 3px;
@include border-top-radius(3px);
}
> :nth-child(2) {
height: 1px;
}
> :last-child {
height: 3px;
@include border-bottom-radius(3px);
}
}
&.x-scroll-indicator-x {
> * {
height: 100%;
}
> :first-child {
width: 3px;
@include border-left-radius(3px);
}
> :nth-child(2) {
width: 1px;
}
> :last-child {
width: 3px;
@include border-right-radius(3px);
}
}
}
}

View File

@@ -0,0 +1,62 @@
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
h4, h5, h6, pre, code, form, fieldset, legend,
input, textarea, p, blockquote, th, td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset, img {
border: 0;
}
address, caption, cite, code,
dfn, em, strong, th, var {
font-style: normal;
font-weight: normal;
}
li {
list-style: none;
}
caption, th {
text-align: left;
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
font-weight: normal;
}
q:before,
q:after {
content: "";
}
abbr, acronym {
border: 0;
font-variant: normal;
}
sup {
vertical-align: text-top;
}
sub {
vertical-align: text-bottom;
}
input, textarea, select {
font-family: inherit;
font-size: inherit;
font-weight: inherit;
}
*:focus {
outline: none;
}

View File

@@ -0,0 +1,362 @@
// Toolbar icons used with permission from Drew Wilson
// http://pictos.drewwilson.com/
// Pictos icons are (c) 2010 Drew Wilson
@import '../global';
/**
* @class Ext.Button
*/
/**
* @var {measurement} $button-height Default height for buttons.
*/
$button-height: 1.8em;
/**
* @var {measurement} $button-radius Default border-radius for buttons.
*/
$button-radius: .4em !default;
/**
* @var {measurement} $button-stroke-weight Default border width for buttons.
*/
$button-stroke-weight: .1em !default;
/**
* @var {string} $button-gradient Default gradient for buttons.
*/
$button-gradient: $base-gradient !default;
/**
* @var {string} $toolbar-icon-size Default size (width and height) for toolbar icons.
*/
$toolbar-icon-size: 1.4em !default;
/**
* @var {boolean} $include-button-uis Optionally disable separate button UIs, including action, confirm, and decline.
*/
$include-button-uis: $include-default-uis !default;
/**
* @var {boolean} $include-button-highlights Optionally disable special CSS3 effects on buttons including gradients, text-shadows, and box-shadows.
*/
$include-button-highlights: $include-highlights !default;
/**
* Includes default button styles.
*/
@mixin sencha-buttons {
// Basic button style
.x-button {
@include background-clip(padding-box);
@if $include-border-radius { @include border-radius($button-radius); }
@include display-box;
@include box-align(center);
@include toolbar-button(#ccc, $button-gradient);
min-height: $button-height; // Why was this !important? Breaks small uis - DK
padding: .3em .6em;
position: relative;
overflow: hidden;
-webkit-user-select: none;
z-index: 1;
// Default icon style
.x-button-icon {
width: 2.1em;
height: 2.1em;
background-repeat: no-repeat;
background-position: center;
display: block;
&.x-icon-mask {
width: 1.1em;
height: 1.1em;
-webkit-mask-size: 1.1em;
}
}
&.x-item-disabled .x-button-label, &.x-item-disabled .x-button-icon {
opacity: .5;
}
}
@if $include-border-radius {
.x-button-round {
@include border-radius($button-height/2);
}
}
// Button icon alignment
.x-iconalign-left, .x-icon-align-right {
@include box-orient(horizontal);
}
.x-iconalign-top, .x-iconalign-bottom {
@include box-orient(vertical);
}
.x-iconalign-bottom, .x-iconalign-right {
@include box-direction(reverse);
}
.x-iconalign-center {
@include box-pack(center);
}
.x-iconalign-left .x-button-label {
margin-left: $toolbar-spacing * 1.5;
}
.x-iconalign-right .x-button-label {
margin-right: $toolbar-spacing * 1.5;
}
.x-iconalign-top .x-button-label {
margin-top: $toolbar-spacing * 1.5;
}
.x-iconalign-bottom .x-button-label {
margin-bottom: $toolbar-spacing * 1.5;
}
// Button labels
.x-button-label {
@include box-flex(1);
@include box-align(center);
white-space: nowrap;
text-overflow: ellipsis;
text-align: center;
font-weight: bold;
line-height: 1.2em;
display: block;
overflow: hidden;
}
// Toolbar button styling
.x-toolbar .x-button {
margin: 0 .2em;
padding: .3em .6em;
.x-button-label {
font-size: .7em;
}
.x-button-label, .x-hasbadge .x-badge {
line-height: 1.6em;
}
}
.x-button-small, .x-toolbar .x-button-small {
@if $include-border-radius { @include border-radius(.3em); }
padding: .2em .4em;
min-height: 0;
.x-button-label {
font-size: .6em;
}
.x-button-icon {
width: .75em;
height: .75em;
&.x-icon-mask {
-webkit-mask-size: .75em;
}
}
}
// Back/Forward buttons
$shadow-width: .045em; // Space between tip and its shadow
$overlap-width: .2em; // how far the mask is clipped
// $mask-height: $button-height + $button-stroke-weight * 2; // Ugh, this is non-specific... borders?
$mask-height: $button-height;
$mask-width: $mask-height/2.23;
$mask-offset: $button-radius - $overlap-width - $button-stroke-weight + $shadow-width - .02;
$tip-width: $mask-width - $mask-offset + $shadow-width;
.x-button-forward, .x-button-back {
position: relative;
overflow: visible;
height: $button-height - 0.1;
z-index: 1;
&:before, &:after {
@include insertion($mask-width, $mask-height, -$button-stroke-weight, auto);
z-index: 2;
-webkit-mask: $mask-offset 0 theme_image($theme-name, "tip2_left.png") no-repeat;
-webkit-mask-size: $mask-width $mask-height;
overflow: hidden;
}
}
.x-button-back,
.x-toolbar .x-button-back {
margin-left: $tip-width - $shadow-width + $toolbar-spacing - 0.01;
padding-left: .4em;
&:before {
left: - $tip-width;
}
&:after {
left: - $tip-width + $shadow-width;
}
}
.x-button-forward,
.x-toolbar .x-button-forward {
margin-right: $tip-width - $shadow-width + $toolbar-spacing;
padding-right: .4em;
&:before, &:after {
-webkit-mask: -$mask-offset 0 theme_image($theme-name, "tip2_right.png") no-repeat;
}
&:before {
right: - $tip-width;
}
&:after {
right: - $tip-width + $shadow-width;
}
}
// Plain buttons automatically use a margin trick to have a
// wide gradial glow for pressed state.
.x-button.x-button-plain,
.x-toolbar .x-button.x-button-plain {
background: none;
border: 0 none;
@if $include-border-radius { @include border-radius(none); }
min-height: 0;
text-shadow: none;
line-height: auto;
height: 1.9em;
padding: 0em 0.5em;
& > * {
overflow: visible;
}
.x-button-icon {
-webkit-mask-size: $toolbar-icon-size;
width: $toolbar-icon-size;
height: $toolbar-icon-size;
}
&.x-button-pressing, &.x-button-pressed {
background: none;
$mask-radial-glow: lighten($active-color, 50%);
@include background-image(radial-gradient(fade-out($mask-radial-glow, .3), fade-out($mask-radial-glow, 1) 24px));
.x-button-icon.x-button-mask {
@include background-gradient(#fff, 'recessed');
}
}
}
// SegmentedButtons
.x-segmentedbutton .x-button {
margin: 0;
@if $include-border-radius {
@include border-radius(0);
&.x-first {
@include border-left-radius($button-radius);
}
&.x-last {
@include border-right-radius($button-radius);
}
}
&:not(.x-first) {
border-left: 0;
}
}
// Badges
$badge-size: 2em !default;
$badge-radius: .2em !default;
$badge-bg-color: darken($alert-color, 10%) !default;
$badge-bg-gradient: $base-gradient !default;
.x-hasbadge {
overflow: visible;
.x-badge {
@extend .x-button-label;
@include background-clip(padding-box);
@if $include-border-radius { @include border-radius($badge-radius); }
padding: .1em .3em;
z-index: 2;
@if $include-button-highlights {
@include bevel-by-background($badge-bg-color);
@include box-shadow(rgba(#000, .5) 0 .1em .1em);
}
overflow: hidden;
@include color-by-background($badge-bg-color, $contrast: 50%);
border: 1px solid darken($badge-bg-color, 10%);
position: absolute;
width: auto;
min-width: $badge-size;
line-height: 1.2em;
font-size: .6em;
right: 0px;
top: -.2em;
max-width: 95%;
@include background-gradient($badge-bg-color, $badge-bg-gradient);
display: inline-block;
}
}
@if $include-default-icons {
@include pictos-iconmask('action');
@include pictos-iconmask('add');
@include pictos-iconmask('arrow_down');
@include pictos-iconmask('arrow_left');
@include pictos-iconmask('arrow_right');
@include pictos-iconmask('arrow_up');
@include pictos-iconmask('compose');
@include pictos-iconmask('delete');
@include pictos-iconmask('organize');
@include pictos-iconmask('refresh');
@include pictos-iconmask('reply');
@include pictos-iconmask('search');
@include pictos-iconmask('settings');
@include pictos-iconmask('star');
@include pictos-iconmask('trash');
@include pictos-iconmask('maps');
@include pictos-iconmask('locate');
@include pictos-iconmask('home');
}
@if $include-button-uis {
@include sencha-button-ui('action', $active-color);
@include sencha-button-ui('confirm', desaturate(darken($confirm-color, 10%), 5%));
@include sencha-button-ui('decline', desaturate(darken($alert-color, 10%), 5%));
}
}
/**
* Creates a theme UI for buttons.
* Also automatically generates UIs for {ui-label}-round and {ui-label}-small.
*
* // SCSS
* @include sencha-button-ui('secondary', #99A4AE, 'glossy');
*
* // JS
* var cancelBtn = new Ext.Button({text: 'Cancel', ui: 'secondary'});
*
* @param {string} $ui-label The name of the UI being created.
* Can not included spaces or special punctuation (used in class names)
* @param {color} $color Base color for the UI.
* @param {string} $gradient Default gradient for the UI.
*/
@mixin sencha-button-ui($ui-label, $color, $gradient: $button-gradient) {
.x-button.x-button-#{$ui-label}, .x-button.x-button-#{$ui-label}-round, .x-button.x-button-#{$ui-label}-small {
@include toolbar-button($color, $gradient);
}
@if $include-border-radius {
.x-button.x-button-#{$ui-label}-round {
@extend .x-button-round;
}
}
.x-button.x-button-#{$ui-label}-small {
@extend .x-button-small;
}
}

View File

@@ -0,0 +1,113 @@
@import '../global';
/**
* @class Ext.carousel.Indicator
*/
/**
* @var {measurement} $carousel-indicator-size Size (width/height) of carousel indicator dots.
*/
$carousel-indicator-size: .5em !default;
/**
* @var {measurement} $carousel-indicator-spacing
* Amount of space between carousel indicator dots.
*/
$carousel-indicator-spacing: .2em !default;
/**
* @var {measurement} $carousel-track-size Size of the track the carousel indicator dots are in.
*/
$carousel-track-size: 1.5em !default;
/**
* Creates a theme UI for carousel indicator components.
*
* @param {string} $ui-label The name of the UI being created.
* Can not included spaces or special punctuation (used in class names)
* @param {color} $color Base color for the UI.
* @param {string} $gradient Default gradient for the UI.
* @param {color} $active-color Active color for the UI.
* @param {string} $active-gradient Active gradient for the UI.
*/
@mixin sencha-carousel-indicator-ui($ui-label, $color, $gradient, $active-color, $active-gradient) {
.x-carousel-indicator-#{$ui-label} span {
@include background-gradient($color, $gradient);
&.x-carousel-indicator-active {
@include background-gradient($active-color, $active-gradient)
}
}
}
/**
* @class Ext.carousel.Carousel
*/
/**
* Includes basic carousel formatting.
*/
@mixin sencha-carousel {
.x-carousel-inner {
position: relative;
overflow: hidden;
}
.x-carousel-item {
position: absolute !important;
width: 100%;
height: 100%;
> * {
position: absolute !important;
width: 100%;
height: 100%;
}
}
.x-carousel-indicator {
// @TODO: we should not have to cancel out the x-floating styling
padding: 0;
-webkit-border-radius: 0;
border-radius: 0;
@include box-shadow(none);
background-color: transparent;
background-image: none;
}
.x-carousel-indicator {
-webkit-box-flex: 1;
@include display-box;
@include box-pack(center);
@include box-align(center);
span {
display: block;
width: $carousel-indicator-size;
height: $carousel-indicator-size;
@if $include-border-radius { @include border-radius($carousel-indicator-size / 2); }
margin: $carousel-indicator-spacing;
}
}
.x-carousel-indicator-horizontal {
height: $carousel-track-size;
width: 100%;
}
.x-carousel-indicator-vertical {
@include box-orient(vertical);
width: $carousel-track-size;
height: 100%;
}
$indicator-light: rgba(#fff, .1);
$indicator-light-active: rgba(#fff, .3);
$indicator-dark: rgba(#000, .1);
$indicator-dark-active: rgba(#000, .3);
@include sencha-carousel-indicator-ui('light', $indicator-light, 'flat', $indicator-light-active, 'flat');
@include sencha-carousel-indicator-ui('dark', $indicator-dark, 'flat', $indicator-dark-active, 'flat');
}

View File

@@ -0,0 +1,134 @@
@import '../global';
@mixin sencha-charts {
@include sencha-draw;
$legend-border-color: #ccc !default;
$legend-border: 1px solid $legend-border-color !default;
$legend-background-color: #fff !default;
$legend-z-index: 10 !default;
$legend-item-border: 1px solid rgba($legend-border-color, .5) !default;
$legend-item-background: rgba(#fff, 0) !default;
$legend-item-color: #333 !default;
$marker-size: .8em !default;
.x-legend {
.x-legend-inner {
.x-legend-container {
@include border-radius(5px);
border: $legend-border;
background: $legend-background-color;
//@if (lightness($legend-background-color) > 30) {
// @include box-shadow(rgba(#fff, .6) 0 1px 1px);
//} @else {
// @include box-shadow(rgba(#fff, .2) 0 1px 0);
//}
.x-legend-item {
padding: .8em 1em .8em $marker-size + 1em;
color: $legend-item-color;
background: $legend-item-background;
max-width: 20em;
min-width: 0;
font-size: 14px;
line-height: 14px;
font-weight: bold;
white-space: nowrap;
position: relative;
.x-legend-inactive {
@include opacity(.3);
}
.x-legend-item-marker {
position: absolute;
width: $marker-size;
height: $marker-size;
@include border-radius($marker-size/2);
@include box-shadow(rgba(#fff, .3) 0 1px 0, rgba(#000, .4) 0 1px 0 inset);
left: .7em;
top: 1em;
}
}
}
}
&.x-docked-top, &.x-docked-bottom {
.x-legend-item {
border-right: $legend-item-border;
&:last-child {
border-right: 0;
}
}
}
&.x-docked-left, &.x-docked-right {
.x-legend-inner {
display: -webkit-box;
-webkit-box-align: center;
-webkit-box-pack: center;
}
}
}
.x-legend-button-icon {
-webkit-mask-image: theme-image('default', 'pictos/list.png');
}
.x-panzoom-toggle-icon {
-webkit-mask-image: theme-image('default', 'pictos/move.png');
}
.x-zooming > .x-panzoom-toggle-icon {
-webkit-mask-image: theme-image('default', 'pictos/resize.png');
}
.x-chart-toolbar {
position: absolute;
z-index: 9;
@include display-box;
padding: .6em;
.x-button {
margin: .2em;
}
&[data-side=left], &[data-side=right] {
top: 0;
@include box-orient(vertical);
}
&[data-side=left] {
left: 0;
}
&[data-side=right] {
right: 0;
}
&[data-side=top], &[data-side=bottom] {
@include box-orient(horizontal);
right: 0;
}
&[data-side=top] {
top: 0;
}
&[data-side=bottom] {
bottom: 0;
@include box-orient(horizontal);
}
}
@if $include-default-icons {
@include pictos-iconmask('bookmarks');
@include pictos-iconmask('download');
@include pictos-iconmask('favorites');
@include pictos-iconmask('info');
@include pictos-iconmask('more');
@include pictos-iconmask('time');
@include pictos-iconmask('user');
@include pictos-iconmask('team');
}
}

View File

@@ -0,0 +1,34 @@
@import '../global';
@mixin sencha-draw {
.x-android-3 .x-surface-wrap, .x-android-3 .x-surface-wrap > * {
-webkit-perspective: 1;
}
.x-draw-component {
position: relative;
.x-inner {
overflow: hidden;
}
}
.x-surface {
position: absolute;
}
.x-chart-watermark {
opacity: 0.5;
z-index: 9;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
color: white;
padding: 4px 6px;
font-family: "Helvetica";
font-size: 12px;
position: absolute;
border-top-left-radius: 4px;
white-space:nowrap;
-webkit-border-top-left-radius: 4px;
}
}

View File

@@ -0,0 +1,102 @@
@import '../global';
/*
* Includes basic form slider styles.
*/
@mixin sencha-form-sliders {
.x-slider {
position: relative;
height: $form-thumb-size;
margin: $form-spacing;
min-height: 0;
}
.x-thumb {
position: absolute;
height: $form-thumb-size;
width: $form-thumb-size;
border: 1px solid red;
&.x-dragging {
background-color: red;
}
}
.x-input-slider {
width: auto;
background-color: #000;
}
.x-field-toggle, .x-field-slider {
background-color: #fff;
// @extend .x-input-el;
}
.x-field-toggle .x-slider {
width: $form-thumb-size * 2;
@if $include-border-radius { @include border-radius($form-thumb-size/2); }
overflow: hidden;
border: .1em solid darken($form-light, 15%);
// -webkit-transform: translate3d(0px, 0px, 0px);
@include background-gradient($form-light, 'recessed');
z-index: 2;
// Masking the slider doesn't work in iOS 3, so we're fake-masking the outer area
// UPDATED: Doesnt fly on Android...
// &:after {
// @include insertion($form-thumb-size*2, $form-thumb-size, 0, 0);
// -webkit-mask: theme_image($theme-name, "trackmask_outer.png");
// background-color: white;
// -webkit-mask-size: $form-thumb-size*2 $form-thumb-size;
// pointer-events: none;
// z-index: 4;
// }
.x-thumb {
.x-toggle-thumb-off, .x-toggle-thumb-on {
display: none;
}
&.x-dragging {
opacity: 1;
}
&:before {
top: ($form-thumb-size - $form-toggle-size) / 2;
}
// Actual thumb
// &:after {
// @include insertion($form-thumb-size, $form-thumb-size, 0, 0);
// @include box-shadow(rgba(0,0,0,.5) 0 0 .15em);
// @if $include-border-radius { @include border-radius($form-thumb-size/2); }
// -webkit-transform: scale(.65);
// @include background-gradient($complement_light, 'glossy');
// border: 1px solid $complement;
// overflow: visible;
// z-index: 2;
// }
// &.x-dragging {
// &:after {
// -webkit-transform: scale(.75);
// }
// }
//
// Used to animate the thumb. class added/removed by javascript when needed.
// &.x-animate {
// -webkit-transition: left .2s ease-in-out;
// }
}
&.x-toggle-on {
@include background-gradient($confirm-color, 'recessed');
}
}
.x-android .x-field-toggle .x-slider {
//-webkit-transform: translate(0px, 0px);
}
}

View File

@@ -0,0 +1,149 @@
@import '../global';
/**
* Includes default form slider styles.
*
* @member Ext.field.Slider
*/
@mixin sencha-form-sliders {
.x-slider-field, .x-toggle-field {
.x-component-outer {
padding: $form-spacing;
}
}
.x-slider,
.x-toggle {
position: relative;
height: $form-thumb-size;
min-height: 0;
min-width: 0;
> * {
position: absolute;
width: 100%;
height: 100%;
}
}
.x-slider.x-item-disabled {
opacity: .6;
}
@if $basic-slider {
.x-thumb {
position: absolute;
height: $form-thumb-size;
width: $form-thumb-size;
border: #000;
background-color: #777;
&.x-dragging {
background-color: #AAA;
}
}
// Create the slider track
.x-slider:after {
@include insertion(auto, $form-slider-size, $form-toggle-size / 2 - $form-slider-size/2 + $form-spacing/2 - $form-thumb-space / 2, 0);
right: 0;
margin: 0 $form-toggle-size/2;
border: .1em solid rgba(#000, .1);
border-bottom: 0;
background-color: $form-light;
}
} @else {
.x-thumb {
position: absolute;
height: $form-thumb-size;
width: $form-thumb-size;
// The actual thumb
&:after {
@include insertion($form-toggle-size, $form-toggle-size, $form-thumb-space, $form-thumb-space);
border: 1px solid darken($form-light, 30%);
@if $include-border-radius { @include border-radius($form-toggle-size/2); }
// overflow: visible;
@include background-gradient($form-light);
@include background-clip(padding-box);
}
&.x-dragging {
&:after {
@include background-gradient(darken($form-light, 5%));
}
opacity: 1;
}
}
// Create the slider track
.x-slider:after {
@include insertion(auto, $form-slider-size, $form-toggle-size / 2 - $form-slider-size/2 + $form-spacing/2 - $form-thumb-space / 2, 0);
right: 0;
margin: 0 $form-toggle-size/2;
@include background-gradient($form-light, 'recessed');
border: .1em solid rgba(#000, .1);
border-bottom: 0;
@include box-shadow(rgba(#fff,.7) 0 .1em 0);
@if $include-border-radius { @include border-radius($form-slider-size/2); }
}
}
.x-toggle {
width: $form-thumb-size * 2;
@if $include-border-radius { @include border-radius($form-thumb-size/2); }
overflow: hidden;
border: 1px solid darken($form-light, 15%);
@include background-gradient($form-light, 'recessed');
-webkit-box-flex: 0;
// Masking the slider doesn't work in iOS 3, so we're fake-masking the outer area
// UPDATED: Doesnt fly on Android...
// &:after {
// @include insertion($form-thumb-size*2, $form-thumb-size, 0, 0);
// -webkit-mask: theme_image($theme-name, "trackmask_outer.png");
// background-color: white;
// -webkit-mask-size: $form-thumb-size*2 $form-thumb-size;
// pointer-events: none;
// z-index: 4;
// }
.x-thumb {
&.x-dragging {
opacity: 1;
}
&:before {
top: ($form-thumb-size - $form-toggle-size) / 2;
}
// Actual thumb
// &:after {
// @include insertion($form-thumb-size, $form-thumb-size, 0, 0);
// -webkit-box-shadow: rgba(0,0,0,.5) 0 0 .15em;
// @if $include-border-radius { @include border-radius($form-thumb-size/2); }
// -webkit-transform: scale(.65);
// @include background-gradient($complement_light, 'glossy');
// border: 1px solid $complement;
// overflow: visible;
// z-index: 2;
// }
// &.x-dragging {
// &:after {
// -webkit-transform: scale(.75);
// }
// }
//
// Used to animate the thumb. class added/removed by javascript when needed.
// &.x-animate {
// -webkit-transition: left .2s ease-in-out;
// }
}
}
.x-toggle-on {
@include background-gradient($confirm-color, 'recessed');
}
}

View File

@@ -0,0 +1,654 @@
@import '../global';
@import 'form-sliders';
/**
* @var {color} $form-bg-color
* Default background-color for forms.
*
* @member Ext.form.Panel
*/
$form-bg-color: #eee !default;
/**
* @class Ext.field.Field
*/
/**
* @var {color} $form-field-bg-color
* Default background-color for form fields.
*/
$form-field-bg-color: #fff !default;
/**
* @var {color} $form-light
* Light color for form fields, mostly used on field borders.
*/
$form-light: #ddd !default;
/**
* @var {color} $form-dark
* Dark color for form fields, mostly used on labels/text.
*/
$form-dark: #333 !default;
/**
* @var {measurement} $form-label-width
* Default width for form labels.
*/
$form-label-width: 6em !default;
/**
* @var {color} $form-label-background-color
* The default background color for labels
*/
$form-label-background-color: lighten($form-light, 10%);
/**
* @var {measurement} $form-field-height
* Default height for form fields.
*/
$form-field-height: 2.5em !default;
/**
* @var {measurement} $form-spacing
* Default spacing for form fields, used for padding, etc.
*/
$form-spacing: .6em !default;
/**
* @var {measurement} $form-textarea-height
* Default height for form textareas.
*
* @member Ext.field.TextArea
*/
$form-textarea-height: 6em !default;
/**
* @var {measurement} $form-thumb-size
* Default size of "thumbs" for form sliders/toggles.
*
* @member Ext.field.Slider
*/
$form-thumb-size: 2.2em !default;
/**
* @var {measurement} $form-toggle-size
* Thumb size minus padding for inset thumbs like in a Toggle element.
*
* @member Ext.field.Toggle
*/
$form-toggle-size: $form-thumb-size - .35em;
/**
* @var {measurement} $form-fieldset-radius
* Default border-radius for form fieldsets.
*
* @member Ext.form.FieldSet
*/
$form-fieldset-radius: .4em !default;
/**
* @var {measurement} $form-slider-size
* Height of the slider "track."
*
* @member Ext.field.Slider
*/
$form-slider-size: .8em !default;
$form-spinner-button-width: 3em !default;
// Private utility vars & mixins
$form-thumb-space: ( $form-thumb-size - $form-toggle-size ) / 2;
$form-input-fields: '.x-field-text, .x-input-text, .x-input, .x-input-number, .x-spinner-body, .x-input-radio, .x-input-checkbox, .x-input-email, .x-input-url, .x-input-password, .x-input-slider';
$form-scrollable-fields: '.x-field-slider, .x-field-toggle';
@mixin label {
text-shadow: #fff 0 1px 1px;
color: $form-dark;
}
@mixin checkmark($color: #000){
@extend .x-checkmark-base;
background-color: $color;
}
@mixin radiomark($color: #000){
@extend .x-radiomark-base;
background-color: $color;
}
@mixin selectmark($color: #000){
@extend .x-selectmark-base;
background-color: $color;
}
/**
* Includes default form styles.
*
* @member Ext.form.Panel
*/
@mixin sencha-form($include-sliders: $include-form-sliders) {
// Ext.form.Panel
.x-form {
.x-scroll-container {
background-color: $form-bg-color;
> .x-inner {
padding: 1em;
}
}
}
// Label
.x-form-label {
@include label;
@include bevel-text('light');
padding: $form-spacing;
display: none !important;
background-color: $form-label-background-color;
span {
font-size: .8em;
font-weight: bold;
}
.x-form-label-nowrap & {
@include ellipsis;
}
}
// Ext.field.Field
.x-field {
@include display-box;
min-height: $form-field-height;
background: #fff;
.x-field-input {
position: relative;
min-width: 3.7em;
}
.x-field-input,
.x-input-el {
width: 100%;
}
&.x-field-labeled {
.x-form-label {
display: block !important;
}
}
&:last-child {
border-bottom: 0;
}
}
.x-label-align-left,
.x-label-align-right {
.x-component-outer {
@include box-flex(1);
}
}
.x-label-align-left {
&:first-child {
.x-form-label {
@if $include-border-radius { @include border-top-left-radius($form-fieldset-radius); }
}
}
&:last-child {
.x-form-label {
@if $include-border-radius { @include border-bottom-left-radius($form-fieldset-radius); }
}
}
.x-form-label {
}
}
.x-label-align-right {
@include box-direction(reverse);
&:first-child {
.x-form-label {
@if $include-border-radius { @include border-top-right-radius($form-fieldset-radius); }
}
}
&:last-child {
border-bottom: 0;
.x-form-label {
@if $include-border-radius { @include border-bottom-right-radius($form-fieldset-radius); }
}
}
.x-form-label {
}
}
.x-label-align-left,
.x-label-align-right {
@include box-orient(horizontal !important);
}
.x-label-align-top,
.x-label-align-bottom {
@include box-orient(vertical !important);
.x-form-label {
}
}
.x-label-align-top {
&:first-child {
.x-form-label {
@if $include-border-radius { @include border-top-radius($form-fieldset-radius); }
}
}
// Needed so that the arrow icon in selectfield's only fit to the size of the field. TOUCH-2672
.x-component-outer {
position: relative;
}
}
.x-label-align-bottom {
@include box-direction(reverse);
&:last-child {
.x-form-label {
@if $include-border-radius { @include border-bottom-radius($form-fieldset-radius); }
}
}
}
.x-input-el {
padding: .4em;
min-height: $form-field-height;
display: block;
border-width: 0;
background: transparent;
-webkit-appearance: none;
}
.x-field-mask {
@include stretch;
}
// Required fields
.x-field-required {
label:after,
.x-form-label:after {
content: "*";
display: inline;
}
}
.x-item-disabled {
label:after,
.x-form-label:after {
color: #666 !important;
}
}
// Ext.field.TextArea
.x-field-textarea {
textarea {
min-height: $form-textarea-height;
padding-top: .5em;
}
}
// Ext.field.Hidden
.x-field-hidden {
@extend .x-hidden-display;
}
// Ext.field.Checkbox
.x-checkmark-base {
@include insertion(1.4em, 1.4em, 50%, auto);
right: ($form-spacing + .5em);
-webkit-mask-size: 1.4em;
-webkit-mask-image: theme_image('default', "pictos/check2.png");
margin-top: -.7em;
}
// Ext.field.Radio
.x-radiomark-base {
@include insertion(1.4em, 1.4em, 50%, auto);
right: ($form-spacing + .5em);
margin-top: -0.7em;
-webkit-mask-size: 1.4em;
-webkit-mask-image: theme_image('default', "pictos/circle4.png");
}
.x-field-checkbox .x-input-el {
position: relative;
&:after {
@include checkmark($form-light);
}
&:checked:after {
@include checkmark($active-color);
}
}
.x-field-radio .x-input-el {
position: relative;
&:before {
@include radiomark(darken($form-light, 5));
}
&:after {
@include radiomark($form-light);
-webkit-mask-image: theme_image('default', "pictos/circle3.png");
}
&:checked:before {
background-color: $active-color;
}
}
.x-item-disabled {
&.x-field-radio {
.x-input-el:checked:before {
background: mix($form-light, $active-color, 60);
}
.x-input-el:after {
background: #eee;
}
}
&.x-field-checkbox {
.x-input-el {
&:checked:after {
background: mix($form-light, $active-color, 60);
}
}
}
}
// Ext.field.Spinner
.x-spinner {
.x-component-outer {
@include display-box;
> * {
width: auto;
}
}
.x-field-input {
-webkit-box-flex: 1;
.x-input-el {
-webkit-text-fill-color: #000;
width: 100%;
text-align: center;
}
//http://stackoverflow.com/questions/3790935/can-i-hide-the-html5-number-inputs-spin-box
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
&.x-item-disabled {
.x-input-el {
-webkit-text-fill-color: #B3B3B3;
}
.x-spinner-button {
@include toolbar-button(lighten($form-light, 10), matte);
color: #aaa !important;
}
}
.x-spinner-button {
margin-top: .25em;
margin-bottom: .25em;
width: 2em;
padding: .23em 0 .27em;
font-weight: bold;
text-align: center;
border: 1px solid $form-light !important;
@include border-radius(1em);
@include toolbar-button(lighten($form-light, 5), matte);
}
.x-spinner-button-down {
margin-left: .25em;
}
.x-spinner-button-up {
margin-right: .25em;
}
&.x-field-grouped-buttons {
.x-input-el {
text-align: left;
}
.x-spinner-button-down {
margin-right: .5em;
}
}
}
.x-android {
.x-spinner-button {
padding: .40em 0 .11em !important;
}
}
// Ext.field.Select
.x-select-overlay {
.x-list-item-label {
height: 2.6em;
}
.x-list-label {
@include ellipsis;
display: block;
}
.x-item-selected {
.x-list-label {
margin-right: 2.6em;
}
.x-list-item-inner {
&:before {
@include checkmark(rgba(0,0,0,.3));
margin-top: -.8em;
}
&:after {
@include checkmark($form-light);
}
}
}
}
@if $include-sliders {
@include sencha-form-sliders;
}
//remove browser styling
input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none;
}
.x-field-number {
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
.x-field-search {
.x-field-input {
position: relative;
&:before {
@include insertion(.86em, .86em, 50%, .5em);
-webkit-mask-image: theme_image('default', "pictos/search.png");
-webkit-mask-size: .86em;
background-color: #ccc;
-webkit-mask-repeat: no-repeat;
margin-top: -0.43em;
}
.x-form-field {
margin-left: $toolbar-search-left-padding - 0.67em;
}
}
}
//clear icon
$form-clear-size: 2.2em;
.x-field-input {
.x-clear-icon {
display: none;
background: theme_image('default', "clear_icon.png") no-repeat;
background-position: center center;
background-size: 55% 55%;
width: $form-clear-size;
height: $form-clear-size;
margin: .5em;
margin-top: -($form-clear-size/2);
position: absolute;
top: 50%;
right: -.5em;
}
}
.x-field-clearable {
.x-clear-icon {
display: block;
}
.x-field-input {
padding-right: $form-clear-size;
}
}
.x-android .x-input-el {
-webkit-text-fill-color: #000;
}
.x-android .x-empty .x-input-el {
-webkit-text-fill-color: #A9A9A9;
}
//disabled fields
.x-item-disabled .x-form-label span,
.x-item-disabled input,
.x-item-disabled .x-input-el,
.x-item-disabled .x-spinner-body,
.x-item-disabled select,
.x-item-disabled textarea,
.x-item-disabled .x-field-clear-container {
color: lighten($form-dark, 50%);
-webkit-text-fill-color: lighten($form-dark, 50%);
pointer-events: none;
}
// Ext.form.FieldSet
.x-form-fieldset {
margin: 0 0 1.5em;
.x-form-label {
border-top: 1px solid lighten($form-light, 20%);
}
.x-form-fieldset-inner {
border: 1px solid $form-light;
background: #fff;
padding: 0;
@if $include-border-radius { @include border-radius($form-fieldset-radius); }
overflow: hidden;
}
//Ext.field.Field
.x-field {
border-bottom: 1px solid $form-light;
background: transparent;
&:first-child {
@if $include-border-radius {
@include border-top-radius($form-fieldset-radius);
}
}
&:last-child {
border-bottom: 0;
@if $include-border-radius {
@include border-bottom-radius($form-fieldset-radius);
}
}
}
}
.x-form-fieldset-title {
@include label;
margin: 1em ( $form-spacing + .1em ) .3em;
color: $form-dark;
font-weight: bold;
.x-innerhtml {
@include ellipsis;
}
}
.x-form-fieldset-instructions {
@include label;
color: lighten($form-dark, 30%);
margin: 1em ( $form-spacing + .1em ) .3em;
font-size: .8em;
text-align: center;
}
// Ext.field.Select
.x-selectmark-base {
@include insertion(1em, 1em, 50%, auto);
right: ($form-spacing + .1em);
-webkit-mask-size: 1em;
-webkit-mask-image: theme_image('default', "pictos/arrow_down.png");
margin-top: -.5em;
}
// Create the dropdown arrow
// for select fields
.x-field-select {
position: relative;
z-index: 1;
.x-component-outer {
&:after {
@include selectmark($form-light);
}
&:before,
&:after {
pointer-events: none;
position: absolute;
display: block;
}
&:before {
@include insertion(4em,auto,0,auto);
right: 0;
bottom: 0;
@if $include-border-radius { @include border-right-radius($form-fieldset-radius); }
@if $include-highlights { background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(rgba($form-field-bg-color, 0)), color-stop(.5, rgba($form-field-bg-color, 1))); }
}
}
}
}

View File

@@ -0,0 +1,18 @@
@import '../global';
.x-img {
&.x-img-image {
text-align: center;
img {
width: auto;
height: 100%;
}
}
&.x-img-background {
background-repeat: no-repeat;
background-position: center;
background-size: auto 100%;
}
}

View File

@@ -0,0 +1,76 @@
@import '../global';
/**
* @class Ext.dataview.IndexBar
*/
/**
* @var {measurement} $index-bar-width
* Width of the index bar.
*/
$index-bar-width: 1.1em !default;
/**
* @var {color} $index-bar-bg-color
* Background-color of the index bar.
*/
$index-bar-bg-color: hsla(hue($base-color), 10%, 60%, .8) !default;
/**
* @var {color} $index-bar-color
* Text color of the index bar.
*/
$index-bar-color: darken(desaturate($base-color, 5%), 15%) !default;
/**
* Includes default index bar styles.
*/
@mixin sencha-indexbar {
.x-indexbar-wrapper {
-webkit-box-pack: end !important;
box-pack: end !important;
pointer-events: none;
}
.x-indexbar-vertical {
width: $index-bar-width;
@include box-orient(vertical);
margin-right: 8px;
}
.x-indexbar-horizontal {
height: $index-bar-width;
@include box-orient(horizontal);
margin-bottom: 8px;
}
.x-indexbar {
pointer-events: auto;
z-index: 2;
padding: .3em 0;
min-height: 0 !important;
height: auto !important;
-webkit-box-flex: 0 !important;
> div {
color: $index-bar-color;
font-size: 0.6em;
text-align: center;
line-height: 1.1em;
font-weight: bold;
display: block;
}
}
.x-phone.x-landscape .x-indexbar {
> div {
font-size: 0.38em;
line-height: 1em;
}
}
.x-indexbar-pressed {
@include border-radius(($index-bar-width)/2);
background-color: $index-bar-bg-color;
}
}

View File

@@ -0,0 +1,464 @@
@import '../global';
/**
* @class Ext.dataview.List
*/
/**
* @var {color} $list-color
* Text color for list rows.
*/
$list-color: #000 !default;
/**
* @var {color} $list-bg-color
* Background-color for list rows.
*/
$list-bg-color: #f7f7f7 !default;
/**
* @var {color} $include-list-highlights
* Optionally disable all list gradients, text-shadows, and box-shadows. Useful for CSS debugging,
* non-performant browsers, or minimalist designs.
*/
$include-list-highlights: $include-highlights !default;
/**
* @var {boolean} $list-zebrastripe
* Optionally zebra-stripe the list (alternating background colors).
*/
$list-zebrastripe: false !default;
/**
* @var {color} $list-pressed-color
* Background-color for pressed list rows.
*/
$list-pressed-color: lighten($active-color, 50%) !default;
/**
* @var {color} $list-active-color
* Background-color for selected list rows.
*/
$list-active-color: $active-color !default;
/**
* @var {string} $list-active-gradient
* Gradient style for selected list rows.
*/
$list-active-gradient: $base-gradient !default;
/**
* @var {color} $list-header-bg-color
* Background-color for list header rows (in grouped lists).
*/
$list-header-bg-color: lighten(saturate($base-color, 10%), 20%) !default;
/**
* @var {string} $list-header-gradient
* Gradient style for list header rows (in grouped lists).
*/
$list-header-gradient: $base-gradient !default;
/**
* @var {measurement} $list-disclosure-size
* Default size (width/height) for disclosure icons.
*/
$list-disclosure-size: 1.7em;
/**
* @var {measurement} $list-disclosure-round-size
* Default size (width/height) for disclosure icons in a list with a `round` ui.
*/
$list-disclosure-round-size: 1.5em;
/**
* @var {measurement} $list-round-padding
* Default padding for lists with a `round` ui.
*/
$list-round-padding: 13px !default;
/**
* Includes default list styles.
*/
@mixin sencha-list {
.x-list {
position: relative;
background-color: $list-bg-color;
overflow: hidden;
.x-list-inner {
width: 100% !important;
}
.x-list-disclosure {
overflow: visible;
-webkit-mask: 0 0 theme_image($theme-name, "disclosure.png") no-repeat;
-webkit-mask-size: $list-disclosure-size;
@include background-gradient(saturate($active-color, 10%));
width: $list-disclosure-size;
height: $list-disclosure-size;
margin: 0.5em 0.5em 0 0;
}
&.x-list-indexed .x-list-disclosure {
margin-right: 1.8em;
}
.x-item-selected .x-list-disclosure {
background: #fff none;
}
.x-list-scrolldock-hidden {
display: none;
}
.x-list-item {
position: absolute !important;
left: 0;
top: 0;
color: $list-color;
width: 100%;
&.x-item-pressed {
.x-dock-horizontal {
background: $list-pressed-color none;
}
}
&.x-item-selected .x-dock-horizontal {
@include background-gradient($list-active-color, $list-active-gradient);
@include color-by-background($list-active-color);
@include bevel-by-background($list-active-color);
}
> .x-dock {
height: auto;
}
}
}
.x-list-item-body {
min-height: $global-list-height;
padding: 0.65em 0.8em;
}
.x-list-header-swap {
position: absolute;
left: 0;
width: 100%;
z-index: 2 !important;
}
.x-ios .x-list-header-swap {
@include transform(translate3d(0, 0, 0));
}
.x-list-item .x-list-header {
display: none;
}
.x-list-grouped .x-list-header-wrap .x-list-header {
position: absolute;
top: 0;
left: 0;
width: 100%;
display: block;
}
.x-list-normal {
&.x-list-grouped .x-list-header-wrap .x-dock-horizontal {
padding-top: 26px;
}
.x-list-header-wrap .x-item-header,
.x-list-header {
@include background-gradient($list-header-bg-color, $list-header-gradient);
@include color-by-background($list-header-bg-color, 30%);
@include bevel-by-background($list-header-bg-color);
border-top: 1px solid $list-header-bg-color;
border-bottom: 1px solid darken($list-header-bg-color, 20%);
font-weight: bold;
font-size: 0.8em;
padding: 0.2em 1.02em;
@include bevel-by-background($list-header-bg-color);
}
@if $list-zebrastripe {
.x-list-item {
.x-dock-horizontal {
border-top: 1px solid transparent;
}
&:nth-child(even) .x-dock-horizontal {
background-color: darken($list-bg-color, 5%);
}
&.x-list-footer-wrap:nth-child(odd) .x-dock-horizontal {
border-bottom: 1px solid darken($list-bg-color, 5%);
}
}
} @else {
.x-list-item {
.x-dock-horizontal {
border-top: 1px solid darken($list-bg-color, 10%);
}
&.x-list-footer-wrap .x-dock-horizontal {
border-bottom: 1px solid darken($list-bg-color, 10%);
}
}
}
.x-list-item {
@if $include-list-highlights {
&.x-item-pressed .x-dock-horizontal {
border-top-color: $list-pressed-color;
background-color: $list-pressed-color;
}
&.x-item-selected .x-dock-horizontal {
border-top-color: $list-active-color;
border-bottom: 1px solid darken($list-active-color, 15%);
}
}
}
}
.x-list-normal.x-list-grouped .x-list-item.x-list-header-wrap .x-dock-horizontal {
border-top: 0;
}
.x-list-round {
&.x-list-grouped .x-list-header-wrap .x-dock-horizontal {
padding-top: 31px;
}
.x-scroll-view {
background-color: #eee !important;
// @todo No !important plz
}
.x-list-header-swap {
padding-right: $list-round-padding;
}
.x-list-inner .x-scroll-container {
top: $list-round-padding;
left: $list-round-padding;
bottom: $list-round-padding;
right: $list-round-padding;
width: auto !important;
height: auto !important;
}
.x-list-disclosure {
overflow: hidden;
-webkit-mask: 0 0 theme_image($theme-name, "disclosure2.png") no-repeat;
-webkit-mask-size: $list-disclosure-round-size;
@include background-gradient(lighten(desaturate($base-color, 10), 10));
width: $list-disclosure-round-size;
height: $list-disclosure-round-size;
margin: 0.5em 0.5em 0 0;
}
.x-list-header {
color: #777;
font-size: 1em;
font-weight: bold;
padding-left: 26px;
line-height: 1.7em;
// background: rgba(238,238,238,.8);
@include background-image(linear-gradient(top, rgba(238, 238, 238, 1), rgba(238, 238, 238, .9) 30%, rgba(238, 238, 238, .4)));
}
.x-list-container {
padding: $list-round-padding $list-round-padding 0 $list-round-padding;
.x-list-header {
padding-left: $list-round-padding;
background-image: none;
}
}
&.x-list-ungrouped,
&.x-list-grouped {
.x-list-item .x-dock-horizontal {
//border: solid #DDDDDD;
border: 1px solid darken($list-bg-color, 10%);
border-width: 1px 1px 0 1px;
background: $list-bg-color;
}
}
&.x-list-ungrouped {
.x-list-item {
&:first-child {
@if $include-border-radius { @include border-top-radius($form-fieldset-radius); }
}
&:last-child {
@if $include-border-radius { @include border-bottom-radius($form-fieldset-radius); }
border-width: 1px;
margin-bottom: $list-round-padding;
}
}
}
&.x-list-grouped {
.x-list-header-wrap {
.x-dock-horizontal {
@if $include-border-radius { @include border-top-radius($form-fieldset-radius); }
}
.x-list-header {
border: 1px solid darken($list-bg-color, 10%);
border-width: 1px 1px 0 1px;
@if $include-border-radius { @include border-top-radius($form-fieldset-radius); }
}
}
.x-list-footer-wrap {
background: transparent;
.x-dock-horizontal {
border: none;
background: transparent;
padding-bottom: $list-round-padding;
> .x-dock-body {
border: 1px solid darken($list-bg-color, 10%);
background: $list-bg-color;
@if $include-border-radius { @include border-bottom-radius($form-fieldset-radius); }
}
}
}
}
}
.x-dataview-inlineblock {
.x-dataview-item, .x-data-item {
display: inline-block !important;
}
}
.x-dataview-nowrap {
.x-dataview-container {
white-space: nowrap !important;
}
}
.x-list-inlineblock {
.x-list-item {
display: inline-block !important;
}
}
.x-list-nowrap {
.x-list-inner {
width: auto;
}
.x-list-container {
white-space: nowrap !important;
}
}
}
@mixin sencha-list-paging {
.x-list-paging {
padding: 1em 0;
.x-loading-spinner {
display: none;
margin: auto;
}
.x-list-paging-msg {
text-align: center;
color: $active-color;
clear: both;
@if $include-border-radius { @include border-radius(6px); }
}
&.x-loading {
padding: 0.5em;
.x-loading-spinner {
display: block;
}
.x-list-paging-msg {
display: none;
}
}
}
}
@mixin sencha-list-pullrefresh {
.x-list-pullrefresh {
@include display-box;
@include box-orient(horizontal);
@include box-align(center);
@include box-pack(center);
position: absolute;
top: -5em;
left: 0;
width: 100%;
height: 4.5em;
.x-loading-spinner {
display: none;
}
}
.x-list-pullrefresh-arrow {
width: 2.5em;
height: 4.5em;
background: center center theme_image($theme-name, "pullarrow.png") no-repeat;
background-size: 2em 3em;
-webkit-transition-property: -webkit-transform;
-webkit-transition-duration: 200ms;
@include rotate(0deg);
}
.x-android-2 .x-list-pullrefresh-arrow {
-webkit-transition-property: none;
-webkit-transition-duration: 0;
}
.x-list-pullrefresh-release .x-list-pullrefresh-arrow {
@include rotate(-180deg);
}
.x-list-pullrefresh-wrap {
width: 20em;
font-size: 0.7em;
}
.x-list-pullrefresh-message {
font-weight: bold;
font-size: 1.3em;
margin-bottom: 0.1em;
text-align: center;
}
.x-list-pullrefresh-updated {
text-align: center;
}
.x-list-pullrefresh-loading {
*.x-loading-spinner {
display: block;
}
.x-list-pullrefresh-arrow {
display: none;
}
}
.x-android-2 .x-list-pullrefresh-loading {
*.x-loading-spinner {
display: none;
}
}
}

View File

@@ -0,0 +1,121 @@
/**
* @class Ext.LoadMask
*/
/**
* @var {color} $loading-spinner-color
* Background-color for the bars in the loading spinner.
*/
$loading-spinner-color: #aaa !default;
// Private
$loading-spinner-size: 1em;
$loading-spinner-bar-width: .1em;
$loading-spinner-bar-height: .25em;
/**
* Includes default loading spinner styles (for dataviews).
*/
@mixin sencha-loading-spinner {
.x-loading-spinner {
font-size: 250%;
height: $loading-spinner-size;
width: $loading-spinner-size;
position: relative;
-webkit-transform-origin: $loading-spinner-size/2 $loading-spinner-size/2;
/* Shared Properties for all the bars */
& > span, & > span:before, & > span:after {
display: block;
position: absolute;
width: $loading-spinner-bar-width;
height: $loading-spinner-bar-height;
top: 0;
-webkit-transform-origin: $loading-spinner-bar-width/2 $loading-spinner-size/2;
@if $include-border-radius { @include border-radius($loading-spinner-bar-width/2); }
content: " ";
}
& > span {
&.x-loading-top { background-color: rgba($loading-spinner-color,0.99); }
&.x-loading-top::after { background-color: rgba($loading-spinner-color,0.90); }
&.x-loading-left::before { background-color: rgba($loading-spinner-color,0.80); }
&.x-loading-left { background-color: rgba($loading-spinner-color,0.70); }
&.x-loading-left::after { background-color: rgba($loading-spinner-color,0.60); }
&.x-loading-bottom::before{ background-color: rgba($loading-spinner-color,0.50); }
&.x-loading-bottom { background-color: rgba($loading-spinner-color,0.40); }
&.x-loading-bottom::after { background-color: rgba($loading-spinner-color,0.35); }
&.x-loading-right::before { background-color: rgba($loading-spinner-color,0.30); }
&.x-loading-right { background-color: rgba($loading-spinner-color,0.25); }
&.x-loading-right::after { background-color: rgba($loading-spinner-color,0.20); }
&.x-loading-top::before { background-color: rgba($loading-spinner-color,0.15); }
}
}
.x-loading-spinner > span {
left: 50%;
margin-left: -0.05em;
}
// .x-loading-spinner > span::before, .x-loading-spinner > span::after{ content: " "; }
/* Rotate each of the 4 Spans */
.x-loading-spinner > span.x-loading-top{ -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); }
.x-loading-spinner > span.x-loading-right{ -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); }
.x-loading-spinner > span.x-loading-bottom{ -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); }
.x-loading-spinner > span.x-loading-left{ -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); }
/* These are the two lines that surround each of the 4 Span lines */
.x-loading-spinner > span::before{-webkit-transform: rotate(30deg); -moz-transform: rotate(30deg); }
.x-loading-spinner > span::after{ -webkit-transform: rotate(-30deg); -moz-transform: rotate(-30deg); }
/* Set Animation */
.x-loading-spinner {
-webkit-animation-name: x-loading-spinner-rotate;
-webkit-animation-duration: .5s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}
@-webkit-keyframes x-loading-spinner-rotate{
0%{ -webkit-transform: rotate(0deg); }
8.32%{ -webkit-transform: rotate(0deg); }
8.33%{ -webkit-transform: rotate(30deg); }
16.65%{ -webkit-transform: rotate(30deg); }
16.66%{ -webkit-transform: rotate(60deg); }
24.99%{ -webkit-transform: rotate(60deg); }
25%{ -webkit-transform: rotate(90deg); }
33.32%{ -webkit-transform: rotate(90deg); }
33.33%{ -webkit-transform: rotate(120deg); }
41.65%{ -webkit-transform: rotate(120deg); }
41.66%{ -webkit-transform: rotate(150deg); }
49.99%{ -webkit-transform: rotate(150deg); }
50%{ -webkit-transform: rotate(180deg); }
58.32%{ -webkit-transform: rotate(180deg); }
58.33%{ -webkit-transform: rotate(210deg); }
66.65%{ -webkit-transform: rotate(210deg); }
66.66%{ -webkit-transform: rotate(240deg); }
74.99%{ -webkit-transform: rotate(240deg); }
75%{ -webkit-transform: rotate(270deg); }
83.32%{ -webkit-transform: rotate(270deg); }
83.33%{ -webkit-transform: rotate(300deg); }
91.65%{ -webkit-transform: rotate(300deg); }
91.66%{ -webkit-transform: rotate(330deg); }
100%{ -webkit-transform: rotate(330deg); }
}
}

View File

@@ -0,0 +1,19 @@
.x-map {
background-color: #edeae2; //GMap tan background
* {
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
}
.x-mask-map {
background: transparent !important;
}
.x-map-container {
position: absolute !important;
top: 0;
left: 0;
right: 0;
bottom: 0;
}

View File

@@ -0,0 +1,21 @@
@import '../global';
.x-video {
height: 100%;
width: 100%;
}
.x-video > * {
height: 100%;
width: 100%;
position: absolute;
}
.x-video-ghost {
-webkit-background-size: 100% auto;
background: #000 url() center center no-repeat;
}
audio {
width: 100%;
}

View File

@@ -0,0 +1,118 @@
/**
* Includes default message box styles.
*
* @member Ext.MessageBox
*/
@mixin sencha-msgbox {
.x-msgbox {
min-width: 15em;
max-width: 20em;
max-height: 90%;
margin: .5em;
@include box-shadow(rgba(#000, .4) 0 .1em .5em);
@if $include-border-radius { @include border-radius($panel-border-radius); }
border: .15em solid $base-color;
// to hide content that is too large (vertically)
.x-docking-vertical {
overflow: hidden;
}
//icons
.x-icon {
margin: 0 0.8em 0 0.5em;
background: #fff;
-webkit-mask-size: 100%;
}
.x-msgbox-info {
-webkit-mask-image: theme_image('default', "pictos/info.png");
}
.x-msgbox-warning {
-webkit-mask-image: theme_image('default', "pictos/warning_black.png");
}
.x-msgbox-question {
-webkit-mask-image: theme_image('default', "pictos/help.png");
}
.x-msgbox-error {
-webkit-mask-image: theme_image('default', "pictos/minus_black2.png");
}
.x-title {
font-size: .9em;
line-height: 1.4em;
}
.x-body {
background: transparent !important;
}
.x-toolbar {
background: transparent none;
@include box-shadow(none);
&.x-docked-top {
border-bottom: 0;
height: 1.3em;
}
&.x-docked-bottom {
border-top: 0;
}
}
.x-field {
min-height: 2em;
background: #fff;
@if $include-border-radius { @include border-radius(.2em); }
}
.x-form-field {
min-height:1.5em;
padding-right: 0 !important;
-webkit-appearance: none;
}
.x-field-input {
padding-right: 2.2em;
}
}
.x-msgbox-text {
text-align: center;
padding: 6px 0;
line-height: 1.4em;
}
.x-msgbox-buttons {
padding: 0.4em 0;
height: auto;
.x-button {
min-width: 4.5em;
}
.x-button-normal span {
opacity: .7;
}
}
// TODO: Refactor along with Sheet
@include msgbox-ui('dark');
}
@mixin msgbox-ui($ui-label) {
.x-msgbox-#{$ui-label} {
.x-msgbox-text {
@include color-by-background($sheet-bg-color, 80%);
@include bevel-by-background($sheet-bg-color);
}
.x-msgbox-input {
@include background-gradient(lighten($sheet-bg-color, 80%), 'recessed');
border: .1em solid lighten($sheet-bg-color, 40%);
}
}
}

View File

@@ -0,0 +1,98 @@
@import '../global';
$panel-border-radius: .3em;
@mixin sencha-panel($include-floating: $include-floating-panels) {
.x-panel,
.x-msgbox,
.x-panel-body {
position: relative;
}
@if $include-floating {
.x-panel.x-floating,
.x-msgbox,
.x-form.x-floating {
padding: 6px;
@if $include-border-radius { @include border-radius($panel-border-radius); }
@include box-shadow(rgba(0,0,0,.8) 0 .2em .6em);
@include background-gradient(darken($base-color, 40%), 'flat');
&.x-floating-light {
@include background-gradient($base-color, 'flat');
}
.x-panel-inner,
> .x-body {
z-index: 1;
background-color: #fff;
@if $include-border-radius { @include border_radius($panel-border-radius); }
}
}
.x-panel.x-floating > .x-dock,
.x-msgbox > .x-dock,
.x-form.x-floating > .x-dock {
z-index: 1;
}
.x-panel.x-floating > .x-dock.x-sized,
.x-msgbox > .x-dock.x-sized,
.x-form.x-floating > .x-dock.x-sized {
margin: 6px;
}
$anchor-height: .7em;
$anchor-width: $anchor-height*2.33;
.x-anchor {
position: absolute;
overflow: hidden;
//z-index: 1;
&.x-anchor-top {
margin-top: -$anchor-height + 0.02em;
margin-left: -$anchor-width / 2;
width: $anchor-width;
height: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_top.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
background-color: darken($base-color, 40%);
}
&.x-anchor-bottom {
margin-left: -$anchor-width / 2;
width: $anchor-width;
height: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_bottom.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
background-color: darken($base-color, 40%);
}
&.x-anchor-left {
margin-left: -$anchor-width / 2 + 0.15em;
margin-top: -$anchor-height / 2;
height: $anchor-width;
width: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_left.png") no-repeat;
-webkit-mask-size: $anchor-height $anchor-width;
background-color: darken($base-color, 40%);
}
&.x-anchor-right {
margin-top: -$anchor-height / 2;
height: $anchor-width;
width: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_right.png") no-repeat;
-webkit-mask-size: $anchor-height $anchor-width;
background-color: darken($base-color, 40%);
}
}
.x-floating.x-panel-light {
&:after {
background-color: $base-color;
}
}
}
}

View File

@@ -0,0 +1,157 @@
@import '../global';
$picker-row-height: 2.5em !default;
$picker-active-border: .12em solid $active-color !default;
$picker-sheet-radius: .4em !default;
$picker-title-color: darken(desaturate($base-color, 10%), 25%) !default;
$picker-title-bg-color: lighten(saturate($base-color, 10%), 5%) !default;
$picker-title-bg-gradient: $base-gradient !default;
$include-picker-highlights: $include-highlights !default;
$picker-bar-gradient: $base-gradient !default;
@mixin sencha-picker {
.x-sheet.x-picker {
padding: 0;
}
.x-sheet.x-picker .x-sheet-inner {
position: relative;
background-color: #fff;
@if $include-border-radius { @include border-radius($picker-sheet-radius); }
@include background-clip(padding-box);
overflow: hidden;
margin: $sheet-padding;
@if $include-picker-highlights {
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bbbbbb), color-stop(30%,#ffffff), color-stop(70%,#ffffff), color-stop(100%,#bbbbbb));
background: -webkit-linear-gradient(top, #bbbbbb 0%,#ffffff 30%,#ffffff 70%,#bbbbbb 100%);
// &:before, &:after {
// z-index: 1;
// @include insertion(100%, 30%, 0, 0);
// }
//
// &:before {
// top: auto;
// @if $include-border-radius { @include border-bottom-radius($picker-sheet-radius); }
// bottom: 0;
// @include background-image(linear-gradient(color-stops(#fff, #bbb)));
// }
// &:after {
// @if $include-border-radius { @include border-top-radius($picker-sheet-radius); }
// @include background-image(linear-gradient(color-stops(#bbb, #fff)));
// }
}
.x-picker-slot {
.x-body {
border-left: 1px solid #999999;
border-right: 1px solid #ACACAC;
}
&.x-first {
.x-body {
border-left: 0;
}
}
&.x-last {
.x-body {
border-left: 0;
border-right: 0;
}
}
}
}
.x-picker-slot .x-scroll-view {
z-index: 2;
position: relative;
@if $include-highlights {
@include box-shadow(rgba(#000,.4) -1px 0 1px);
}
&:first-child {
@include box-shadow(none);
}
}
.x-picker-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 3;
@include display-box;
@include box-align(stretch);
@include box-orient(vertical);
@include box-pack(center);
pointer-events: none;
}
.x-picker-bar {
border-top: $picker-active-border;
border-bottom: $picker-active-border;
height: $picker-row-height;
@include background-gradient(hsla(hue($active-color), 90, 50, .3), $picker-bar-gradient);
@if $include-highlights {
@include box-shadow(rgba(#000,0.2) 0 .2em .2em);
}
}
.x-use-titles {
.x-picker-bar {
margin-top: 1.5em;
}
}
.x-picker-slot-title {
height: 1.5em;
position:relative;
z-index: 2;
@include background-gradient($picker-title-bg-color, $picker-title-bg-gradient);
border-top: 1px solid $picker-title-bg-color;
border-bottom: 1px solid darken($picker-title-bg-color, 20%);
@include box-shadow(rgba(0, 0, 0, 0.3) 0px .1em .3em);
padding: 0.2em 1.02em;
> div {
font-weight: bold;
font-size: 0.8em;
color: $picker-title-color;
@if $include-picker-highlights {
@include bevel-text('light');
}
}
}
.x-picker-slot {
.x-dataview-inner {
width: 100% !important;
}
.x-dataview-item {
vertical-align: middle;
height: $picker-row-height;
line-height: $picker-row-height;
font-weight: bold;
padding: 0 10px;
}
.x-picker-item {
@include ellipsis;
}
}
.x-picker-right {
text-align: right;
}
.x-picker-center {
text-align: center;
}
.x-picker-left {
text-align: left;
}
}

View File

@@ -0,0 +1,52 @@
@import '../global';
/**
* @class Ext.Sheet
*/
/**
* @var {color} $sheet-bg-color
* Background-color for action sheets and message boxes.
*/
$sheet-bg-color: transparentize(darken($base-color, 40%), .1) !default;
/**
* @var {color} $sheet-bg-gradient
* Background gradient style for action sheets and message boxes.
*/
$sheet-bg-gradient: $base-gradient !default;
/**
* @var {measurement} $sheet-button-spacing
* Vertical spacing between sheet buttons.
*/
$sheet-button-spacing: .5em !default;
/**
* @var {measurement} $sheet-padding
* Overall padding in a sheet.
*/
$sheet-padding: .7em !default;
/**
* Includes default sheet styles (also required for message box).
*/
@mixin sencha-sheet {
.x-sheet, .x-sheet-action {
padding: $sheet-padding;
border-top: 1px solid darken($base-color, 30%);
height: auto;
@include background-gradient($sheet-bg-color, $sheet-bg-gradient);
@include border-radius(0);
}
.x-sheet-inner, .x-sheet-action-inner {
> .x-button {
margin-bottom: $sheet-button-spacing;
&:last-child {
margin-bottom: 0;
}
}
}
}

View File

@@ -0,0 +1,312 @@
// Tab icons used with permission from Drew Wilson
// http://pictos.drewwilson.com/
// Pictos icons are (c) 2010 Drew Wilson
@import '../global';
/**
* @class Ext.tab.Bar
*/
/**
* @var {boolean} $include-tabbar-uis Optionally disable separate tabbar UIs (light and dark).
*/
$include-tabbar-uis: $include-default-uis !default;
/**
* @var {boolean} $include-top-tabs
* Optionally exclude top tab styles by setting to false.
*/
$include-top-tabs: true !default;
/**
* @var {boolean} $include-bottom-tabs
* Optionally exclude bottom tab styles by setting to false.
*/
$include-bottom-tabs: true !default;
/**
* @var {color} $tabs-light
* Base color for "light" UI tabs.
*/
$tabs-light: desaturate($base-color, 10%) !default;
/**
* @var {color} $tabs-light-active
* Active color for "light" UI tabs.
*/
$tabs-light-active: lighten(saturate($active-color, 20%), 20%) !default;
/**
* @var {color} $tabs-dark
* Base color for "dark" UI tabs.
*/
$tabs-dark: darken($base-color, 20%) !default;
/**
* @var {color} $tabs-dark-active
* Active color for "dark" UI tabs.
*/
$tabs-dark-active-color: saturate(lighten($active-color, 30%), 70%) !default;
/**
* @var {string} $tabs-bar-gradient
* Background gradient style for tab bars.
*/
$tabs-bar-gradient: $base-gradient !default;
/**
* @class Ext.tab.Tab
*/
/**
* @var {string} $tabs-bottom-radius
* Border-radius for bottom tabs.
*/
$tabs-bottom-radius: .25em !default;
/**
* @var {string} $tabs-bottom-icon-size
* Icon size for bottom tabs
*/
$tabs-bottom-icon-size: 1.65em !default;
/**
* @var {string} $tabs-bottom-active-gradient
* Background gradient style for active bottom tabs.
*/
$tabs-bottom-active-gradient: $base-gradient !default;
/**
* @var {boolean} $include-tab-highlights
* Optionally disable all gradients, text-shadows, and box-shadows. Useful for CSS debugging,
* non-performant browsers, or minimalist designs.
*/
$include-tab-highlights: $include-highlights !default;
// Private
$tabs-top-height: $global-row-height - .8em;
$tabs-top-icon-size: $tabs-top-height - .6em;
/**
* Includes default tab styles.
*
* @member Ext.tab.Bar
*/
@mixin sencha-tabs {
@if $include-top-tabs {
@include sencha-top-tabs;
}
@if $include-bottom-tabs {
@include sencha-bottom-tabs;
}
@if $include-tabbar-uis {
@include sencha-tabbar-ui('light', $tabs-light, $tabs-bar-gradient, $tabs-light-active);
@include sencha-tabbar-ui('dark', $tabs-dark, $tabs-bar-gradient, $tabs-dark-active-color);
@include sencha-tabbar-ui('neutral', $neutral-color, $tabs-bar-gradient, darken($neutral-color, 40));
}
// Rules for all tabs
.x-tab.x-item-disabled span.x-button-label, .x-tab.x-item-disabled .x-button-icon {
@include opacity(.5);
}
.x-tab.x-draggable {
@include opacity(.7);
}
.x-tab {
z-index: 1;
-webkit-user-select: none;
overflow: visible !important;
.x-button-label {
overflow: visible !important;
}
}
}
@mixin sencha-top-tabs {
.x-tabbar.x-docked-top {
border-bottom-width: .1em;
border-bottom-style: solid;
height: $global-row-height;
padding: 0 .8em;
.x-tab {
position: relative;
padding: (($tabs-top-height - 1em) / 2) .8em;
height: $tabs-top-height;
min-width : 3.3em;
@if $include-border-radius { @include border-radius($tabs-top-height / 2); }
.x-button-label {
font-size : .8em;
line-height : 1.2em;
text-rendering : optimizeLegibility;
-webkit-font-smoothing : antialiased;
}
.x-badge {
font-size : .6em !important;
top : -0.5em;
}
&.x-tab-icon {
padding : (($tabs-top-height - 1em) / 2) - .1em .8em;
.x-button-icon {
-webkit-mask-size : $tabs-top-icon-size;
width : $tabs-top-icon-size;
height : $tabs-top-icon-size;
display : inline-block;
margin : 0 auto;
position : relative;
}
.x-button-label {
margin : 0;
margin-left : .3em;
padding : .1em 0 .2em 0;
display : inline-block;
position : relative;
top : -.4em;
}
}
}
}
}
@mixin sencha-bottom-tabs {
.x-tabbar.x-docked-bottom {
border-top-width: .1em;
border-top-style: solid;
height: 3em;
padding: 0;
.x-tab {
@if $include-border-radius { @include border-radius($tabs-bottom-radius); }
min-width: 3.3em;
position: relative;
padding-top: .2em;
@include box-orient(vertical);
.x-button-icon {
-webkit-mask-size: $tabs-bottom-icon-size;
width: $tabs-bottom-icon-size;
height: $tabs-bottom-icon-size;
display: block;
margin: 0 auto;
position: relative;
}
.x-button-label {
margin: 0;
padding: .1em 0 .2em 0;
font-size: 9px;
line-height: 12px;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
}
}
@if $include-default-icons {
@include pictos-iconmask('bookmarks');
@include pictos-iconmask('download');
@include pictos-iconmask('favorites');
@include pictos-iconmask('info');
@include pictos-iconmask('more');
@include pictos-iconmask('time');
@include pictos-iconmask('user');
@include pictos-iconmask('team');
}
}
/**
* Creates a theme UI for tabbar/tab components.
*
* // SCSS
* @include sencha-button-ui('pink', #333, 'matte', #AE537A);
*
* // JS
* var tabs = new Ext.tab.Panel({
* tabBar: {
* ui: 'pink',
* dock: 'bottom',
* layout: { pack: 'center' }
* },
* ...
* });
*
* @param {string} $ui-label The name of the UI being created.
* Can not included spaces or special punctuation (used in class names)
* @param {color} $bar-color Base color for the tab bar.
* @param {string} $bar-gradient Background gradient style for the tab bar.
* @param {color} $tab-active-color Background-color for active tab icons.
*
* @member Ext.tab.Bar
*/
@mixin sencha-tabbar-ui($ui-label, $bar-color, $bar-gradient, $tab-active-color) {
.x-tabbar-#{$ui-label} {
@include background-gradient($bar-color, $bar-gradient);
border-top-color: darken($bar-color, 5%);
border-bottom-color: darken($bar-color, 15%);
.x-tab {
@include color-by-background($bar-color, 40%);
border-bottom: 1px solid transparent;
}
.x-tab-active {
@include color-by-background($bar-color, 90%);
border-bottom-color: lighten($bar-color, 3%);
}
.x-tab-pressed {
@include color-by-background($bar-color, 100%);
}
}
@if $include-bottom-tabs {
.x-tabbar-#{$ui-label}.x-docked-bottom {
.x-tab {
@include bevel-by-background($bar-color);
.x-button-icon {
@include mask-by-background($bar-color, 20%, $tabs-bar-gradient);
}
}
.x-tab-active {
@include background-gradient(darken($bar-color, 5%), recessed);
@include bevel-by-background(lighten($bar-color, 10%));
@if ($include-tab-highlights) {
@include box-shadow(darken($bar-color, 10%) 0 0 .25em inset);
}
.x-button-icon {
@include background-gradient($tab-active-color, $tabs-bottom-active-gradient);
}
}
}
}
@if $include-top-tabs {
.x-tabbar-#{$ui-label}.x-docked-top {
.x-tab-active {
@include background-gradient(darken($bar-color, 5%), 'recessed');
@include color-by-background(darken($bar-color, 5%));
}
.x-tab {
.x-button-icon {
@include mask-by-background($bar-color, 20%, $tabs-bar-gradient);
}
}
}
}
}

View File

@@ -0,0 +1,182 @@
@import '../global';
/**
* @class Ext.field.Field
*/
/**
* @var {color} $toolbar-input-bg
* Background-color for toolbar form fields.
*/
$toolbar-input-bg: #fff !default;
/**
* @var {color} $toolbar-input-color
* Text color for toolbar form fields.
*/
$toolbar-input-color: #000 !default;
/**
* @var {measurement} $toolbar-input-height
* Text color for toolbar form fields.
*/
$toolbar-input-height: 1.6em !default;
/**
* @var {color} $toolbar-input-border-color
* Border color for toolbar form fields.
*/
$toolbar-input-border-color: rgba(#000, .5) !default;
// Private
$toolbar-select-overflow-mask-width: 3em;
$toolbar-search-left-padding: 1.67em;
/**
* Includes default toolbar form field styles.
*
* @member Ext.tab.Bar
*/
@mixin sencha-toolbar-forms {
//so disabled fields are still dark
.x-spinner .x-input-el,
.x-field-select .x-input-el {
-webkit-text-fill-color: #000;
-webkit-opacity: 1;
}
.x-spinner.x-item-disabled .x-input-el,
.x-field-select.x-item-disabled .x-input-el {
-webkit-text-fill-color: currentcolor;
}
//and inside toolbars
.x-toolbar .x-field-select .x-input-el {
-webkit-text-fill-color: #fff;
}
.x-toolbar .x-field-select.x-item-disabled .x-input-el {
-webkit-text-fill-color: rgba(255,255,255,.6);
}
.x-toolbar {
.x-form-field-container {
@if $include-border-radius { padding: 0 .3em; }
}
.x-field {
width: 13em;
margin: .5em;
min-height: 0;
border-bottom: 0;
background: transparent;
.x-clear-icon {
background-size: 50% 50%;
right: -0.8em;
margin-top: -1.06em;
}
}
.x-field-input {
padding-right: 1.6em !important;
}
.x-field-textarea,
.x-field-text,
.x-field-number,
.x-field-search {
.x-component-outer {
@if $include-border-radius { @include border-radius(.3em); }
background-color: $toolbar-input-bg;
@if $include-highlights {
@include box-shadow($toolbar-input-border-color 0 .1em 0 inset, $toolbar-input-border-color 0 -.1em 0 inset, $toolbar-input-border-color .1em 0 0 inset, $toolbar-input-border-color -.1em 0 0 inset, rgba(#000, .5) 0 .15em .4em inset);
}
}
}
.x-form-label {
background: transparent;
border: 0;
padding: 0;
line-height: 1.4em;
}
.x-form-field {
height: $toolbar-input-height;
color: lighten($toolbar-input-color, 43%);
background: transparent;
min-height: 0;
-webkit-appearance: none;
padding: 0em .3em;
margin: 0;
&:focus {
color: $toolbar-input-color;
}
}
.x-field-select,
.x-field-search {
.x-component-outer {
@if $include-border-radius { @include border-radius($toolbar-input-height/2); }
}
}
.x-field-search {
.x-field-input {
background-position: .5em 50%;
}
}
.x-field-select {
-webkit-box-shadow: none;
.x-form-field {
height: 1.4em;
}
}
.x-field-select {
background: transparent;
.x-component-outer {
&:after {
right: .4em;
}
}
&.x-item-disabled {
.x-component-outer:after {
opacity: .6;
}
}
// Background is set in _toolbar file
.x-component-outer:before {
width: $toolbar-select-overflow-mask-width;
border-left: none;
@if $include-border-radius { @include border-right-radius($toolbar-input-height/2); }
@if $include-highlights {
-webkit-mask: theme_image($theme-name, "select_mask.png");
-webkit-mask-position: right top;
-webkit-mask-repeat: repeat-y;
-webkit-mask-size: $toolbar-select-overflow-mask-width .05em;
}
@else {
width: 0.5em !important;
}
}
.x-input-text {
color: #fff;
}
}
}
.x-android .x-field-search .x-field-input {
padding-left: .2em !important;
padding-right: 2.2em !important;
}
}

View File

@@ -0,0 +1,166 @@
@import '../global';
/**
* @class Ext.Toolbar
*/
/**
* @var {color} $toolbar-base-color
* The primary color variable from which toolbars derive their light and dark UIs.
*/
$toolbar-base-color: $base-color !default;
/**
* @var {measurement} $toolbar-spacing
* Space between items in a toolbar (like buttons and fields)
*/
$toolbar-spacing: .2em !default;
/**
* @var {string} $toolbar-gradient
* Background gradient style for toolbars.
*/
$toolbar-gradient: $base-gradient !default;
/**
* @var {boolean} $include-toolbar-uis
* Optionally disable separate toolbar UIs (light and dark).
*/
$include-toolbar-uis: $include-default-uis !default;
/**
* Includes default toolbar styles.
*/
@mixin sencha-toolbar {
.x-toolbar {
padding: 0 $toolbar-spacing;
//overflow: hidden;
position: relative;
//height: $global-row-height;
//& > * {
// z-index: 1;
//}
&.x-docked-top {
border-bottom: .1em solid;
}
&.x-docked-bottom {
border-top: .1em solid;
}
&.x-docked-left {
width: 7em;
height: auto;
padding: $toolbar-spacing;
border-right: .1em solid;
}
&.x-docked-right {
width: 7em;
height: auto;
padding: $toolbar-spacing;
border-left: .1em solid;
}
}
.x-title {
line-height: $global-row-height - .5em;
font-size: 1.2em;
text-align: center;
font-weight: bold;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin: 0 0.3em;
padding: 0 .3em;
max-width: 100%;
.x-innerhtml {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
@if $include-toolbar-uis {
@include sencha-toolbar-ui('dark', darken($toolbar-base-color, 10%));
@include sencha-toolbar-ui('light', $toolbar-base-color);
@include sencha-toolbar-ui('neutral', $neutral-color);
.x-toolbar.x-toolbar-neutral .x-toolbar-inner .x-button.x-button-pressing {
$mask-radial-glow: lighten($base-color, 25);
@include background-image(radial-gradient(fade-out($mask-radial-glow, .3), fade-out($mask-radial-glow, 1) 24px));
.x-button-icon.x-button-mask {
@include background-gradient(#fff, 'recessed');
}
}
}
.x-navigation-bar {
.x-container {
overflow: visible;
}
}
}
/**
* Creates a theme UI for toolbars.
*
* // SCSS
* @include sencha-toolbar-ui('sub', #58710D, 'glossy');
*
* // JS
* var myTb = new Ext.Toolbar({title: 'My Green Glossy Toolbar', ui: 'sub'})
*
* @param {string} $ui-label The name of the UI being created.
* Can not included spaces or special punctuation (used in class names)
* @param {color} $color Base color for the UI.
* @param {string} $gradient: $toolbar-gradien Background gradient style for the UI.
*/
@mixin sencha-toolbar-ui($ui-label, $color, $gradient: $toolbar-gradient) {
$toolbar-border-color: darken($color, 50%);
$toolbar-button-color: darken($color, 5%);
.x-toolbar-#{$ui-label} {
@include background-gradient($color, $gradient);
border-color: $toolbar-border-color;
.x-title {
@include color-by-background($color);
@include bevel-by-background($color);
}
&.x-docked-top {
border-bottom-color: $toolbar-border-color;
}
&.x-docked-bottom {
border-top-color: $toolbar-border-color;
}
&.x-docked-left {
border-right-color: $toolbar-border-color;
}
&.x-docked-right {
border-left-color: $toolbar-border-color;
}
.x-button,
.x-field-select .x-component-outer,
.x-field-select .x-component-outer:before {
@include toolbar-button($toolbar-button-color, $gradient);
}
.x-label,
.x-form-label {
font-weight: bold;
@include color-by-background($color);
@include bevel-by-background($color);
}
}
}