Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / resources / themes / stylesheets / ext4 / default / mixins / _btn.scss
diff --git a/resources/themes/stylesheets/ext4/default/mixins/_btn.scss b/resources/themes/stylesheets/ext4/default/mixins/_btn.scss
new file mode 100644 (file)
index 0000000..650ab9f
--- /dev/null
@@ -0,0 +1,386 @@
+@mixin x-btn(
+    $ui,  
+    
+    $border-radius: null,
+    
+    $border-width: null,
+            
+    $border-color: null,
+    $border-color-over: null,
+    $border-color-focus: null,
+    $border-color-pressed: null,
+    $border-color-disabled: null,
+    
+    $padding: null,
+    $text-padding: null,
+    
+    $background-color: null,
+    $background-color-over: null,
+    $background-color-focus: null,
+    $background-color-pressed: null,
+    $background-color-disabled: null,
+    
+    $background-gradient: null,
+    $background-gradient-over: null,
+    $background-gradient-focus: null,
+    $background-gradient-pressed: null,
+    $background-gradient-disabled: null,
+    
+    $color: null,
+    $color-over: null,
+    $color-focus: null,
+    $color-pressed: null,
+    $color-disabled: null,
+    
+    $font-size: null,
+    $font-size-over: null,
+    $font-size-focus: null,
+    $font-size-pressed: null,
+    $font-size-disabled: null,
+    
+    $font-weight: null,
+    $font-weight-over: null,
+    $font-weight-focus: null,
+    $font-weight-pressed: null,
+    $font-weight-disabled: null,
+    
+    $font-family: null,
+    $font-family-over: null,
+    $font-family-focus: null,
+    $font-family-pressed: null,
+    $font-family-disabled: null,
+    
+    $icon-size: null
+) {
+    .#{$prefix}btn-#{$ui} {
+        border-color: $border-color;
+    }
+    
+    @include x-frame('btn', $ui, $border-radius, $border-width, $padding, $background-color, $background-gradient, true);
+    
+    .#{$prefix}btn-#{$ui} .#{$prefix}btn-inner {
+        font-size: $font-size;
+        font-weight: $font-weight;
+        font-family: $font-family;
+        color: $color;
+        background-repeat: no-repeat;
+        padding: 0 $text-padding;
+    }
+    
+    .#{$prefix}btn-#{$ui}-icon,
+    .#{$prefix}btn-#{$ui}-noicon {
+        button,
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+        }
+    }
+
+    //icons
+    .#{$prefix}btn-#{$ui}-icon {
+        .#{$prefix}btn-inner {
+            padding: 0;
+            width: $icon-size !important;
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-icon-text-left {
+        button {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-left: $icon-size + 4px;
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-right {
+        button {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-right: $icon-size + 4px !important;
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-icon-text-top {
+        .#{$prefix}btn-inner {
+            padding-top: $icon-size + 4px;
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-icon-text-bottom {
+        .#{$prefix}btn-inner {
+            padding-bottom: $icon-size + 4px;
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-over {
+        @if $border-color-over != $border-color {
+            border-color: $border-color-over;
+        }
+        @if $background-color-over != null {
+            @if $background-gradient-over != $background-gradient {
+                @include background-gradient($background-color-over, $background-gradient-over);
+            }
+            @else if $background-color-over != $background-color {
+                background-color: $background-color-over;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-over != $color {
+                color: $color-over;
+            }
+            @if $font-weight-over != $font-weight {
+                font-weight: $font-weight-over;
+            }
+            @if $font-size-over != $font-size {
+                font-size: $font-size-over;
+            }
+            @if $font-family-over != $font-family {
+                font-family: $font-family-over;
+            } 
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-focus {
+        @if $border-color-focus != $border-color {
+            border-color: $border-color-focus;
+        }
+        @if $background-color-focus != null {
+            @if $background-gradient-focus != $background-gradient {
+                @include background-gradient($background-color-focus, $background-gradient-focus);
+            }
+            @else if $background-color-focus != $background-color {
+                background-color: $background-color-focus;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-focus != $color {
+                color: $color-focus;
+            }
+            @if $font-weight-focus != $font-weight {
+                font-weight: $font-weight-focus;
+            }
+            @if $font-size-focus != $font-size {
+                font-size: $font-size-focus;
+            }
+            @if $font-family-focus != $font-family {
+                font-family: $font-family-focus;
+            } 
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-menu-active,
+    .#{$prefix}btn-#{$ui}-pressed {
+        @if $border-color-pressed != $border-color {
+            border-color: $border-color-pressed;
+        }
+        @if $background-color-pressed != null {
+            @if $background-gradient-pressed != $background-gradient {
+                @include background-gradient($background-color-pressed, $background-gradient-pressed);
+            }
+            @else if $background-color-pressed != $background-color {
+                background-color: $background-color-pressed;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-pressed != $color {
+                color: $color-pressed;
+            }
+            @if $font-weight-pressed != $font-weight {
+                font-weight: $font-weight-pressed;
+            }
+            @if $font-size-pressed != $font-size {
+                font-size: $font-size-pressed;
+            }
+            @if $font-family-pressed != $font-family {
+                font-family: $font-family-pressed;
+            } 
+        }
+    }
+    
+    .#{$prefix}btn-#{$ui}-disabled {
+        @if $border-color-disabled != $border-color {
+            border-color: $border-color-disabled;
+        }
+        @if $background-color-disabled != null {
+            @if $background-gradient-disabled != $background-gradient {
+                @include background-gradient($background-color-disabled, $background-gradient-disabled);
+            }
+            @else if $background-color-disabled != $background-color {
+                background-color: $background-color-disabled;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: $color !important;
+            }
+            @if $font-weight-disabled != $font-weight {
+                font-weight: $font-weight-disabled;
+            }
+            @if $font-size-disabled != $font-size {
+                font-size: $font-size-disabled;
+            }
+            @if $font-family-disabled != $font-family {
+                font-family: $font-family-disabled;
+            } 
+        }
+    }
+    
+    .#{$prefix}ie .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            color: darken($color-disabled, 20) !important;
+        }
+    }
+    
+    .#{$prefix}ie6 .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            color: $color-disabled !important;
+        }
+    }
+    
+    @if not $supports-border-radius or $compile-all {    
+        .#{$prefix}nbr { 
+            .#{$prefix}btn-#{$ui}-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-over;
+                    @if $background-gradient-over {
+                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                    }
+                }
+            }
+            
+            .#{$prefix}btn-#{$ui}-focus {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-focus;
+                    @if $background-gradient-focus {
+                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                    }
+                }
+            }
+            
+            .#{$prefix}btn-#{$ui}-menu-active,
+            .#{$prefix}btn-#{$ui}-pressed {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-pressed;
+                    @if $background-gradient-pressed {
+                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                    }
+                }
+            }
+            
+            .#{$prefix}btn-#{$ui}-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-disabled;
+                    @if $background-gradient-disabled {
+                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                    }
+                }  
+            }
+        }
+    }
+    
+    @if not $supports-gradients or $compile-all {
+        @if $background-gradient != null {
+            .#{$prefix}nlg { 
+                .#{$prefix}btn-#{$ui} {
+                    background-repeat: repeat-x;
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-bg.gif');
+                }
+            }
+        }
+        
+        @if $background-gradient-over != null {
+            .#{$prefix}nlg { 
+                .#{$prefix}btn-#{$ui}-over {
+                    background-repeat: repeat-x;
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                }
+            }
+        }
+        
+        @if $background-gradient-focus != null {
+            .#{$prefix}nlg { 
+                .#{$prefix}btn-#{$ui}-focus {
+                    background-repeat: repeat-x;
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-pressed != null {
+            .#{$prefix}nlg { 
+                .#{$prefix}btn-#{$ui}-menu-active,
+                .#{$prefix}btn-#{$ui}-pressed {
+                    background-repeat: repeat-x;
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                }
+            }
+        }
+        
+        @if $background-gradient-disabled != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-disabled {
+                    background-repeat: repeat-x;
+                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                }
+            }
+        }
+    }
+};
\ No newline at end of file