]> git.proxmox.com Git - extjs.git/blame - extjs/classic/theme-base/sass/src/button/Button.scss
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / theme-base / sass / src / button / Button.scss
CommitLineData
6527f429
DM
1/**\r
2 * generates base style rules for both tabs and buttons\r
3 *\r
4 * @param {string} [$base-cls='button']\r
5 *\r
6 * @param {boolean} [$include-arrows=true]\r
7 *\r
8 * @member Ext.button.Button\r
9 * @private\r
10 */\r
11@mixin extjs-button-base(\r
12 $base-cls: 'btn',\r
13 $btn-display: inline-block,\r
14 $include-arrows: true,\r
15 $flexbox: true\r
16) {\r
17 .#{$prefix}#{$base-cls} {\r
18 display: $btn-display;\r
19 outline: 0;\r
20 cursor: pointer;\r
21 white-space: nowrap;\r
22 text-decoration: none;\r
23 vertical-align: top;\r
24 overflow: hidden;\r
25 // buttons are position:relative because they may contain an absolutely positioned\r
26 // pseudo element for imitating box-shadow in IE8 when used in a segmented button\r
27 // see extjs-button-ui\r
28 position: relative;\r
29 > .#{$prefix}frame {\r
30 height: 100%;\r
31 width: 100%;\r
32 }\r
33 }\r
34\r
35 .#{$prefix}#{$base-cls}-wrap {\r
36 height: 100%;\r
37 width: 100%;\r
38\r
39 @if $flexbox {\r
40 @include ext-box;\r
41 @include ext-box-align(stretch);\r
42\r
43 &.#{$prefix}btn-arrow-bottom,\r
44 &.#{$prefix}btn-split-bottom {\r
45 @include ext-box-orient(vertical);\r
46 }\r
47\r
48 @if $include-ie {\r
49 .#{$prefix}ie9m & {\r
50 display: table;\r
51 border-spacing: 0;\r
52 }\r
53 }\r
54 } @else {\r
55 display: table;\r
56 border-spacing: 0;\r
57 }\r
58 }\r
59\r
60 .#{$prefix}#{$base-cls}-button {\r
61 white-space: nowrap;\r
62 line-height: 0;\r
63 // this element must be position:relative so that the split line can be absolutely\r
64 // positioned inside of it\r
65 position: relative;\r
66\r
67 @if $flexbox {\r
68 @include ext-box;\r
69 @include ext-box-align(center);\r
70 @include ext-box-flex;\r
71\r
72 &.#{$prefix}#{$base-cls}-icon-top,\r
73 &.#{$prefix}#{$base-cls}-icon-bottom {\r
74 @include ext-box-orient(vertical);\r
75 @include ext-box-align(stretch);\r
76 @include ext-box-pack(center);\r
77 }\r
78\r
79 @if $include-ie {\r
80 .#{$prefix}ie9m & {\r
81 display: table-cell;\r
82 vertical-align: middle;\r
83 }\r
84 }\r
85 } @else {\r
86 display: table-cell;\r
87 vertical-align: middle;\r
88 }\r
89 }\r
90\r
91 .#{$prefix}#{$base-cls}-inner {\r
92 overflow: hidden;\r
93 text-overflow: ellipsis;\r
94\r
95 @if $flexbox {\r
96 -ms-flex-negative: 1;\r
97 display: block;\r
98\r
99 @if $include-ie {\r
100 .#{$prefix}ie9m & {\r
101 display: inline-block;\r
102 vertical-align: middle;\r
103 }\r
104 }\r
105 } @else {\r
106 display: inline-block;\r
107 vertical-align: middle;\r
108 }\r
109\r
110 .#{$prefix}#{$base-cls}-icon.#{$prefix}#{$base-cls}-no-text > & {\r
111 display: none;\r
112 }\r
113 }\r
114\r
115 .#{$prefix}#{$base-cls}-icon-el {\r
116 display: none;\r
117 vertical-align: middle;\r
118 text-align: center;\r
119 background-position: center center;\r
120 background-repeat: no-repeat;\r
121\r
122 @if $flexbox {\r
123 .#{$prefix}#{$base-cls}-icon > & {\r
124 display: block;\r
125 }\r
126\r
127 @if $include-ie {\r
128 .#{$prefix}ie9m .#{$prefix}#{$base-cls}-icon-left > &,\r
129 .#{$prefix}ie9m .#{$prefix}#{$base-cls}-icon-right > & {\r
130 display: inline-block;\r
131 }\r
132 }\r
133 } @else {\r
134 .#{$prefix}#{$base-cls}-icon > & {\r
135 display: inline-block;\r
136 }\r
137\r
138 .#{$prefix}#{$base-cls}-icon-top > &,\r
139 .#{$prefix}#{$base-cls}-icon-bottom > & {\r
140 display: block;\r
141 }\r
142 }\r
143 }\r
144\r
145 .#{$prefix}#{$base-cls}-button-center {\r
146 text-align: center;\r
147 @if $flexbox {\r
148 @include ext-box-pack(center);\r
149 }\r
150 }\r
151\r
152 .#{$prefix}#{$base-cls}-button-left {\r
153 text-align: left;\r
154 @if $flexbox {\r
155 @include ext-box-pack(start);\r
156 }\r
157 }\r
158\r
159 @if $include-rtl {\r
160 .#{$prefix}rtl.#{$prefix}#{$base-cls}-button-left {\r
161 text-align: right;\r
162 }\r
163 }\r
164\r
165 .#{$prefix}#{$base-cls}-button-right {\r
166 text-align: right;\r
167 @if $flexbox {\r
168 @include ext-box-pack(end);\r
169 }\r
170 }\r
171\r
172 @if $include-rtl {\r
173 .#{$prefix}rtl.#{$prefix}#{$base-cls}-button-right {\r
174 text-align: left;\r
175 }\r
176 }\r
177\r
178 @if $include-arrows {\r
179 .#{$prefix}#{$base-cls}-arrow:after,\r
180 .#{$prefix}#{$base-cls}-split:after {\r
181 display: block;\r
182 background-repeat: no-repeat;\r
183 content: '';\r
184 // pseudo elements don't match wildcard selectors, so ".x-border-box *" will not apply\r
185 // to this element\r
186 box-sizing: border-box;\r
187 -moz-box-sizing: border-box;\r
188 -ms-box-sizing: border-box;\r
189 -webkit-box-sizing: border-box;\r
190 text-align: center;\r
191 }\r
192\r
193 .#{$prefix}#{$base-cls}-arrow-right:after,\r
194 .#{$prefix}#{$base-cls}-split-right:after {\r
195 background-position: right center;\r
196\r
197 @if $flexbox {\r
198 @include ext-box;\r
199 @include ext-box-align(center);\r
200 @include ext-box-pack(center);\r
201\r
202 @if $include-ie {\r
203 .#{$prefix}ie9m & {\r
204 display: table-cell;\r
205 vertical-align: middle;\r
206 }\r
207 }\r
208 } @else {\r
209 display: table-cell;\r
210 vertical-align: middle;\r
211 }\r
212 }\r
213\r
214 @if $include-rtl {\r
215 .#{$prefix}rtl {\r
216 &.#{$prefix}#{$base-cls}-arrow-right:after,\r
217 &.#{$prefix}#{$base-cls}-split-right:after {\r
218 background-position: left center;\r
219 }\r
220 }\r
221 }\r
222\r
223 .#{$prefix}#{$base-cls}-arrow-bottom:after,\r
224 .#{$prefix}#{$base-cls}-split-bottom:after {\r
225 background-position: center bottom;\r
226 // when this pseudo el is display:table-row (with no table-cell inside) in needs\r
227 // content other than emtpy or space in order to render in some browsers (IE8-11),\r
228 // so use non-breaking space\r
229 content: '\00a0';\r
230 // line-height:0 prevents the pseudo el from inheriting line-height and being\r
231 // taller than specified by $icon-size.\r
232 line-height: 0;\r
233\r
234 @if $flexbox {\r
235 @if $include-ie {\r
236 .#{$prefix}ie9m & {\r
237 display: table-row;\r
238 }\r
239 }\r
240 } @else {\r
241 display: table-row;\r
242 }\r
243 }\r
244\r
245 // placeholder pseudo element for split line when line is not contained in arrow image\r
246 .#{$prefix}#{$base-cls}-split-right > .#{$prefix}btn-button:after {\r
247 position: absolute;\r
248 display: block;\r
249 top: -100%;\r
250 right: 0;\r
251 height: 300%;\r
252 content: '';\r
253 }\r
254\r
255 @if $include-rtl {\r
256 .#{$prefix}rtl.#{$prefix}#{$base-cls}-split-right > .#{$prefix}btn-button:after {\r
257 left: 0;\r
258 right: auto;\r
259 }\r
260 }\r
261\r
262 // placeholder pseudo element for split line when line is not contained in arrow image\r
263 .#{$prefix}#{$base-cls}-split-bottom > .#{$prefix}btn-button:after {\r
264 position: absolute;\r
265 display: block;\r
266 bottom: 0;\r
267 left: -100%;\r
268 font-size: 0;\r
269 width: 300%;\r
270 content: '';\r
271 }\r
272 }\r
273\r
274 .#{$prefix}#{$base-cls}-mc {\r
275 // buttons and tabs can have a focus outline on the btnWrap element. The default\r
276 // overflow:hidden styling of the frame body hides the outline, so override it to\r
277 // overflow:visible.\r
278 overflow: visible;\r
279 }\r
280}\r
281\r
282@include extjs-button-base();\r