Merge "DatabaseMssql: Don't duplicate body of makeList()"
[mediawiki.git] / resources / src / mediawiki.ui / components / inputs.less
blobb16570a3d5be4d99823a61c2ed9bbef5e6533d0f
1 // Inputs
3 @import "mediawiki.mixins";
4 @import "mediawiki.ui/variables";
5 @import "mediawiki.ui/mixins";
7 // Placeholder text styling helper
8 .field-placeholder-styling() {
9         font-style: italic;
10         font-weight: normal;
12 // Text inputs
14 // Apply the mw-ui-input class to input and textarea fields.
16 // Styleguide 1.
18 // mw-ui-input
20 // Style an input using MediaWiki UI.
21 // Currently in draft status and subject to change.
22 // When focused a progressive highlight appears to the left of the field.
24 // Markup:
25 // <input class="mw-ui-input" placeholder="Enter your name">
26 // <textarea class="mw-ui-input">Text here</textarea>
28 // Styleguide 1.1.
29 .mw-ui-input {
30         // turn off default input styling for input[type="search"] fields
31         -webkit-appearance: none;
32         border: 1px solid @colorFieldBorder;
33         .box-sizing(border-box);
34         width: 100%;
35         padding: .3em .3em .3em .6em;
36         display: block;
37         vertical-align: middle;
38         border-radius: @borderRadius;
39         font-family: inherit;
40         font-size: inherit;
41         line-height: inherit;
42         .transition(~"border linear .2s, box-shadow linear .2s");
44         // Placeholder text styling must be set individually for each browser @winter
45         &::-webkit-input-placeholder { // webkit
46                 .field-placeholder-styling;
47         }
48         &::-moz-placeholder { // FF 4-18
49                 .field-placeholder-styling;
50         }
51         &:-moz-placeholder { // FF >= 19
52                 .field-placeholder-styling;
53         }
54         &:-ms-input-placeholder { // IE >= 10
55                 .field-placeholder-styling;
56         }
58         // Remove red outline from inputs which have required field and invalid content.
59         // This is a Firefox only issue
60         // See https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid
61         // This should be above :focus so focus behaviour takes preference
62         &:invalid {
63                 box-shadow: none;
64         }
66         &:focus {
67                 box-shadow: inset .45em 0 0 @colorProgressive;
68                 border-color: @colorGrayDark;
69                 // Remove focus glow on input[type="search"]
70                 outline: 0;
71         }
73         &:disabled {
74                 border-color: @colorGray14;
75                 color: @colorGray12;
76         }
79 textarea.mw-ui-input {
80         min-height: 8em;
83 // mw-ui-input-inline
85 // Use mw-ui-input-inline with mw-ui-input in cases where you want a button to line up with the input.
87 // Markup:
88 // <input class="mw-ui-input mw-ui-input-inline">
89 // <button class="mw-ui-button mw-ui-constructive">Submit</button>
91 // Styleguide 1.2.
92 input[type="number"],
93 .mw-ui-input-inline {
94         display: inline-block;
95         width: auto;
98 // mw-ui-input-large
100 // Use mw-ui-input-large with mw-ui-input in cases where there are multiple inputs on a screen and you
101 // want to draw attention to one instance. For example, replying with a subject line and more text.
102 // Currently in draft status and subject to change. When used on an input field, the text is styled
103 // in a large font. When used alongside another mw-ui-input large they are pushed together to form one
104 // contiguous block.
106 // Markup:
107 // <input value="input" class="mw-ui-input mw-ui-input-large" value="input" placeholder="Enter subject">
108 // <textarea class="mw-ui-input mw-ui-input-large" placeholder="Provide additional details"></textarea>
110 // Styleguide 1.3.
111 .mw-ui-input-large {
112         margin-top: 0;
113         margin-bottom: 0;
115         // When two large inputs are together, we make them flush by hiding one of the borders
116         & + .mw-ui-input-large {
117                 margin-top: -1px;
118         }
119         // When focusing, make the input relative to raise it above any attached inputs to unhide its borders
120         &:focus {
121                 position: relative;
122         }
125 input.mw-ui-input-large {
126         font-size: 1.75em;
127         font-weight: bold;
128         line-height: 1.25em;
131 // Tablet and desktop specific styling tweaks.
132 @media all and (min-width: 768px) {
133         // Make inline elements take up a sensible amount of the screen on wider devices.
134         .mw-ui-input-inline {
135                 min-width: 320px;
136         }