_buttons.scss 2.58 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
1
// stylelint-disable selector-no-qualifying-type
Mark Otto's avatar
Mark Otto committed
2

Mark Otto's avatar
Mark Otto committed
3
//
4
// Base styles
Mark Otto's avatar
Mark Otto committed
5
//
6

Mark Otto's avatar
Mark Otto committed
7
8
.btn {
  display: inline-block;
Mark Otto's avatar
Mark Otto committed
9
  font-weight: $btn-font-weight;
Mark Otto's avatar
Mark Otto committed
10
  text-align: center;
11
  white-space: nowrap;
Mark Otto's avatar
Mark Otto committed
12
  vertical-align: middle;
13
  user-select: none;
14
  border: $input-btn-border-width solid transparent;
15
  @include button-size($input-btn-padding-y, $input-btn-padding-x, $font-size-base, $input-btn-line-height, $btn-border-radius);
16
  @include transition($btn-transition);
Mark Otto's avatar
Mark Otto committed
17

Mark Otto's avatar
Mark Otto committed
18
  // Share hover and focus styles
19
20
21
  @include hover-focus {
    text-decoration: none;
  }
Mark Otto's avatar
Mark Otto committed
22
  &:focus,
23
  &.focus {
Mark Otto's avatar
Mark Otto committed
24
    outline: 0;
Mark Otto's avatar
Mark Otto committed
25
    box-shadow: $input-btn-focus-box-shadow;
26
27
  }

Mark Otto's avatar
Mark Otto committed
28
  // Disabled comes first so active can properly restyle
29
  &.disabled,
30
  &:disabled {
31
    opacity: .65;
Mark Otto's avatar
Mark Otto committed
32
    @include box-shadow(none);
33
  }
Mark Otto's avatar
Mark Otto committed
34

35
36
  &:not([disabled]):not(.disabled):active,
  &:not([disabled]):not(.disabled).active {
Mark Otto's avatar
Mark Otto committed
37
    background-image: none;
Mark Otto's avatar
Mark Otto committed
38
    @include box-shadow($input-btn-focus-box-shadow, $btn-active-box-shadow);
Mark Otto's avatar
Mark Otto committed
39
  }
Mark Otto's avatar
fixes    
Mark Otto committed
40
}
41

Mark Otto's avatar
fixes    
Mark Otto committed
42
// Future-proof disabling of clicks on `<a>` elements
Sid Roberts's avatar
Sid Roberts committed
43
a.btn.disabled,
Mark Otto's avatar
fixes    
Mark Otto committed
44
45
fieldset[disabled] a.btn {
  pointer-events: none;
Mark Otto's avatar
Mark Otto committed
46
47
}

Mark Otto's avatar
Mark Otto committed
48

Mark Otto's avatar
Mark Otto committed
49
//
Mark Otto's avatar
Mark Otto committed
50
// Alternate buttons
Mark Otto's avatar
Mark Otto committed
51
//
Mark Otto's avatar
Mark Otto committed
52

53
54
55
56
@each $color, $value in $theme-colors {
  .btn-#{$color} {
    @include button-variant($value, $value);
  }
Mark Otto's avatar
Mark Otto committed
57
58
}

59
60
@each $color, $value in $theme-colors {
  .btn-outline-#{$color} {
61
62
63
64
65
    @if $color == "light" {
      @include button-outline-variant($value, $gray-900);
    } @else {
      @include button-outline-variant($value, $white);
    }
66
  }
Mark Otto's avatar
Mark Otto committed
67
68
}

69

Mark Otto's avatar
Mark Otto committed
70
//
71
// Link buttons
Mark Otto's avatar
Mark Otto committed
72
//
73
74

// Make a button look and behave like a link
75
.btn-link {
76
  font-weight: $font-weight-normal;
77
  color: $link-color;
Mark Otto's avatar
Mark Otto committed
78
  background-color: transparent;
Chris Rebert's avatar
Chris Rebert committed
79

Mark Otto's avatar
Mark Otto committed
80
81
82
  @include hover {
    color: $link-hover-color;
    text-decoration: $link-hover-decoration;
Chris Rebert's avatar
Chris Rebert committed
83
    background-color: transparent;
Mark Otto's avatar
Mark Otto committed
84
    border-color: transparent;
Chris Rebert's avatar
Chris Rebert committed
85
  }
Mark Otto's avatar
Mark Otto committed
86

Chris Rebert's avatar
Chris Rebert committed
87
  &:focus,
Mark Otto's avatar
Mark Otto committed
88
  &.focus {
Chris Rebert's avatar
Chris Rebert committed
89
    border-color: transparent;
90
    box-shadow: none;
Chris Rebert's avatar
Chris Rebert committed
91
  }
92

Mark Otto's avatar
Mark Otto committed
93
94
95
  &:disabled,
  &.disabled {
    color: $btn-link-disabled-color;
96
  }
Mark Otto's avatar
Mark Otto committed
97
98

  // No need for an active state here
99
}
100
101


Mark Otto's avatar
Mark Otto committed
102
//
103
// Button Sizes
Mark Otto's avatar
Mark Otto committed
104
//
105

106
.btn-lg {
107
  @include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $input-btn-line-height-lg, $btn-border-radius-lg);
108
}
109

110
.btn-sm {
111
  @include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $input-btn-line-height-sm, $btn-border-radius-sm);
Mark Otto's avatar
Mark Otto committed
112
}
113
114


Mark Otto's avatar
Mark Otto committed
115
//
116
// Block button
Mark Otto's avatar
Mark Otto committed
117
//
118
119
120
121
122
123
124
125

.btn-block {
  display: block;
  width: 100%;
}

// Vertically space out multiple block buttons
.btn-block + .btn-block {
126
  margin-top: $btn-block-spacing-y;
127
128
129
130
131
132
133
134
135
136
}

// Specificity overrides
input[type="submit"],
input[type="reset"],
input[type="button"] {
  &.btn-block {
    width: 100%;
  }
}