summaryrefslogtreecommitdiffstats
path: root/layout/style/res/forms.css
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/res/forms.css')
-rw-r--r--layout/style/res/forms.css1137
1 files changed, 1137 insertions, 0 deletions
diff --git a/layout/style/res/forms.css b/layout/style/res/forms.css
new file mode 100644
index 000000000..f045540b1
--- /dev/null
+++ b/layout/style/res/forms.css
@@ -0,0 +1,1137 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ Styles for old GFX form widgets
+ **/
+
+
+@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
+@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
+
+*|*::-moz-fieldset-content {
+ display: block; /* nsRuleNode::ComputeDisplayData overrules this in some cases */
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+ overflow: inherit;
+ overflow-clip-box: inherit;
+ padding: inherit;
+ block-size: 100%; /* Need this so percentage block-sizes of kids work right */
+ /* Please keep the Multicol/Flex/Grid/Align sections below in sync with
+ ::-moz-scrolled-content in ua.css and ::-moz-button-content below. */
+ /* Multicol container */
+ -moz-column-count: inherit;
+ -moz-column-width: inherit;
+ -moz-column-gap: inherit;
+ -moz-column-rule: inherit;
+ -moz-column-fill: inherit;
+ /* Flex container */
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ /* -webkit-box container (aliased from -webkit versions to -moz versions) */
+ -moz-box-orient: inherit;
+ -moz-box-direction: inherit;
+ -moz-box-pack: inherit;
+ -moz-box-align: inherit;
+ /* Grid container */
+ grid-auto-columns: inherit;
+ grid-auto-rows: inherit;
+ grid-auto-flow: inherit;
+ grid-column-gap: inherit;
+ grid-row-gap: inherit;
+ grid-template-areas: inherit;
+ grid-template-columns: inherit;
+ grid-template-rows: inherit;
+ /* CSS Align */
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ justify-items: inherit;
+}
+
+/* miscellaneous form elements */
+
+fieldset > legend {
+ padding-inline-start: 2px;
+ padding-inline-end: 2px;
+ inline-size: -moz-fit-content;
+}
+
+legend {
+ display: block;
+}
+
+fieldset {
+ display: block;
+ margin-inline-start: 2px;
+ margin-inline-end: 2px;
+ padding-block-start: 0.35em;
+ padding-block-end: 0.75em;
+ padding-inline-start: 0.625em;
+ padding-inline-end: 0.625em;
+ border: 2px groove ThreeDLightShadow;
+}
+
+label {
+ cursor: default;
+}
+
+/* default inputs, text inputs, and selects */
+
+/* Note: Values in nsNativeTheme IsWidgetStyled function
+ need to match textfield background/border values here */
+
+input {
+ -moz-appearance: textfield;
+ /* The sum of border and padding on block-start and block-end
+ must be the same here, for buttons, and for <select> (including its
+ internal padding magic) */
+ padding: 1px;
+ border: 2px inset ThreeDLightShadow;
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ font: -moz-field;
+ text-rendering: optimizeLegibility;
+ line-height: normal;
+ text-align: start;
+ text-transform: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ cursor: text;
+ -moz-binding: url("chrome://global/content/platformHTMLBindings.xml#inputFields");
+ text-indent: 0;
+ -moz-user-select: text;
+ text-shadow: none;
+ overflow-clip-box: content-box;
+}
+
+input > .anonymous-div,
+input::placeholder {
+ word-wrap: normal !important;
+ /* Make the line-height equal to the available height */
+ line-height: -moz-block-height;
+}
+
+@-moz-document url-prefix(chrome://) {
+ input.uri-element-right-align:-moz-locale-dir(rtl) {
+ direction: ltr !important;
+ text-align: right !important;
+ }
+
+ /* Make sure that the location bar's alignment in RTL mode changes according
+ to the input box direction if the user switches the text direction using
+ cmd_switchTextDirection (which applies a dir attribute to the <input>). */
+ input.uri-element-right-align[dir=ltr]:-moz-locale-dir(rtl) {
+ text-align: left !important;
+ }
+}
+
+textarea {
+ margin-block-start: 1px;
+ margin-block-end: 1px;
+ border: 2px inset ThreeDLightShadow;
+ /* The 1px inline padding is for parity with Win/IE */
+ padding-inline-start: 1px;
+ padding-inline-end: 1px;
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ font: medium -moz-fixed;
+ text-rendering: optimizeLegibility;
+ text-align: start;
+ text-transform: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ vertical-align: text-bottom;
+ cursor: text;
+ resize: both;
+ -moz-binding: url("chrome://global/content/platformHTMLBindings.xml#textAreas");
+ -moz-appearance: textfield-multiline;
+ text-indent: 0;
+ -moz-user-select: text;
+ text-shadow: none;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ overflow-clip-box: content-box;
+}
+
+textarea > scrollbar {
+ cursor: default;
+}
+
+textarea > .anonymous-div,
+input > .anonymous-div,
+input::placeholder,
+textarea::placeholder {
+ overflow: auto;
+ border: 0px !important;
+ padding: inherit !important;
+ margin: 0px;
+ text-decoration: inherit;
+ text-decoration-color: inherit;
+ text-decoration-style: inherit;
+ display: inline-block;
+ ime-mode: inherit;
+ resize: inherit;
+ -moz-control-character-visibility: visible;
+ overflow-clip-box: inherit;
+}
+
+input > .anonymous-div,
+input::placeholder {
+ white-space: pre;
+}
+
+input > .anonymous-div.wrap {
+ white-space: pre-wrap;
+}
+textarea > .anonymous-div.inherit-overflow,
+input > .anonymous-div.inherit-overflow {
+ overflow: inherit;
+}
+
+input::placeholder,
+textarea::placeholder {
+ /*
+ * Changing display to inline can leads to broken behaviour and will assert.
+ */
+ display: inline-block !important;
+
+ /*
+ * Changing resize would display a broken behaviour and will assert.
+ */
+ resize: none !important;
+
+ overflow: hidden !important;
+
+ /*
+ * The placeholder should be ignored by pointer otherwise, we might have some
+ * unexpected behavior like the resize handle not being selectable.
+ */
+ pointer-events: none !important;
+
+ opacity: 0.54;
+}
+
+textarea::placeholder {
+ white-space: pre-wrap !important;
+}
+
+input:-moz-read-write,
+textarea:-moz-read-write {
+ -moz-user-modify: read-write !important;
+}
+
+select {
+ margin: 0;
+ border-color: ThreeDLightShadow;
+ background-color: -moz-Combobox;
+ color: -moz-ComboboxText;
+ font: -moz-list;
+ /*
+ * Note that the "UA !important" tests in
+ * layout/style/test/test_animations.html depend on this rule, because
+ * they need some UA !important rule to test. If this changes, use a
+ * different one there.
+ */
+ line-height: normal !important;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+ text-align: start;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-user-select: none;
+ -moz-appearance: menulist;
+ border-width: 2px;
+ border-style: inset;
+ text-indent: 0;
+ overflow: -moz-hidden-unscrollable;
+ text-shadow: none;
+ /* No text-decoration reaching inside, by default */
+ display: inline-block;
+ page-break-inside: avoid;
+ overflow-clip-box: padding-box !important; /* bug 992447 */
+}
+
+/* Need the "select[size][multiple]" selector to override the settings on
+ 'select[size="1"]', eg if one has <select size="1" multiple> */
+
+select[size],
+select[multiple],
+select[size][multiple] {
+ /* Different alignment and padding for listbox vs combobox */
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ vertical-align: text-bottom;
+ padding-block-start: 1px;
+ padding-block-end: 1px;
+ padding-inline-start: 0;
+ padding-inline-end: 0;
+ -moz-appearance: listbox;
+}
+
+select[size="0"],
+select[size="1"] {
+ /* Except this is not a listbox */
+ background-color: -moz-Combobox;
+ color: -moz-ComboboxText;
+ vertical-align: baseline;
+ padding: 0;
+ -moz-appearance: menulist;
+}
+
+select > button {
+ inline-size: 12px;
+ white-space: nowrap;
+ position: static !important;
+ background-image: url("arrow.gif") !important;
+ background-repeat: no-repeat !important;
+ background-position: center !important;
+ -moz-appearance: menulist-button;
+
+ /* Make sure to size correctly if the combobox has a non-auto height. */
+ block-size: 100% ! important;
+ box-sizing: border-box ! important;
+
+ /*
+ Make sure to align properly with the display frame. Note that we
+ want the baseline of the combobox to match the baseline of the
+ display frame, so the dropmarker is what gets the vertical-align.
+ */
+ vertical-align: top !important;
+}
+
+select > button:active {
+ background-image: url("arrowd.gif") !important;
+}
+
+select > button[orientation="left"] {
+ background-image: url("arrow-left.gif") !important;
+}
+
+select > button[orientation="right"] {
+ background-image: url("arrow-right.gif") !important;
+}
+
+select > button[orientation="left"]:active {
+ background-image: url("arrowd-left.gif") !important;
+}
+
+select > button[orientation="right"]:active {
+ background-image: url("arrowd-right.gif") !important;
+}
+
+select:empty {
+ inline-size: 2.5em;
+}
+
+*|*::-moz-display-comboboxcontrol-frame {
+ overflow: -moz-hidden-unscrollable;
+ /* This block-start/end padding plus the combobox block-start/end border need to
+ add up to the block-start/end borderpadding of text inputs and buttons */
+ padding-block-start: 1px;
+ padding-block-end: 1px;
+ padding-inline-start: 4px;
+ padding-inline-end: 0;
+ color: inherit;
+ white-space: nowrap;
+ text-align: inherit;
+ -moz-user-select: none;
+ /* Make sure to size correctly if the combobox has a non-auto block-size. */
+ block-size: 100% ! important;
+ box-sizing: border-box ! important;
+ line-height: -moz-block-height;
+}
+
+option {
+ display: block;
+ float: none !important;
+ position: static !important;
+ min-block-size: 1em;
+ line-height: normal !important;
+ -moz-user-select: none;
+ text-indent: 0;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+ text-align: match-parent;
+}
+
+select > option {
+ padding-block-start : 0;
+ padding-block-end: 0;
+ padding-inline-start: 3px;
+ padding-inline-end: 5px;
+}
+
+option:checked {
+ background-color: -moz-html-cellhighlight !important;
+ color: -moz-html-cellhighlighttext !important;
+}
+
+select:focus > option:checked,
+select:focus > optgroup > option:checked {
+ background-color: Highlight ! important;
+ color: HighlightText ! important;
+}
+
+optgroup {
+ display: block;
+ float: none !important;
+ position: static !important;
+ font: -moz-list;
+ line-height: normal !important;
+ font-style: italic;
+ font-weight: bold;
+ font-size: inherit;
+ -moz-user-select: none;
+ text-indent: 0;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+}
+
+optgroup > option {
+ padding-inline-start: 20px;
+ font-style: normal;
+ font-weight: normal;
+}
+
+optgroup:before {
+ display: block;
+ content: attr(label);
+}
+
+*|*::-moz-dropdown-list {
+ z-index: 2147483647;
+ background-color: inherit;
+ -moz-user-select: none;
+ position: static !important;
+ float: none !important;
+
+ /*
+ * We can't change the padding here, because that would affect our
+ * intrinsic inline-size, since we scroll. But at the same time, we want
+ * to make sure that our inline-start border+padding matches the inline-start
+ * border+padding of a combobox so that our scrollbar will line up
+ * with the dropmarker. So set our inline-start border to 2px.
+ */
+ border: 1px outset black !important;
+ border-inline-start-width: 2px ! important;
+}
+
+input:disabled,
+textarea:disabled,
+option:disabled,
+optgroup:disabled,
+select:disabled:disabled /* Need the pseudo-class twice to have the specificity
+ be at least the same as select[size][multiple] above */
+{
+ -moz-user-input: disabled;
+ color: GrayText;
+ background-color: ThreeDLightShadow;
+ cursor: inherit;
+}
+
+input:disabled,
+textarea:disabled {
+ cursor: default;
+}
+
+option:disabled,
+optgroup:disabled {
+ background-color: transparent;
+}
+
+/* hidden inputs */
+input[type="hidden"] {
+ -moz-appearance: none;
+ display: none !important;
+ padding: 0;
+ border: 0;
+ cursor: auto;
+ -moz-user-focus: ignore;
+ -moz-binding: none;
+}
+
+/* image buttons */
+input[type="image"] {
+ -moz-appearance: none;
+ padding: 0;
+ border: none;
+ background-color: transparent;
+ font-family: sans-serif;
+ font-size: small;
+ cursor: pointer;
+ -moz-binding: none;
+}
+
+input[type="image"]:disabled {
+ cursor: inherit;
+}
+
+input[type="image"]:-moz-focusring {
+ /* Don't specify the outline-color, we should always use initial value. */
+ outline: 1px dotted;
+}
+
+/* file selector */
+input[type="file"] {
+ display: inline-block;
+ white-space: nowrap;
+ overflow: hidden;
+ overflow-clip-box: padding-box;
+ color: inherit;
+
+ /* Revert rules which apply on all inputs. */
+ -moz-appearance: none;
+ -moz-binding: none;
+ cursor: default;
+
+ border: none;
+ background-color: transparent;
+ padding: 0;
+}
+
+input[type="file"] > xul|label {
+ min-inline-size: 12em;
+ padding-inline-start: 5px;
+ text-align: match-parent;
+
+ color: inherit;
+ font-size: inherit;
+ letter-spacing: inherit;
+
+ /*
+ * Force the text to have LTR directionality. Otherwise filenames containing
+ * RTL characters will be reordered with chaotic results.
+ */
+ direction: ltr !important;
+}
+
+/* button part of file selector */
+input[type="file"] > button[type="button"] {
+ block-size: inherit;
+ font-size: inherit;
+ letter-spacing: inherit;
+ cursor: inherit;
+}
+
+/* colored part of the color selector button */
+input[type="color"]:-moz-system-metric(color-picker-available)::-moz-color-swatch {
+ width: 100%;
+ height: 100%;
+ min-width: 3px;
+ min-height: 3px;
+ margin-inline-start: auto;
+ margin-inline-end: auto;
+ box-sizing: border-box;
+ border: 1px solid grey;
+ display: block;
+}
+
+/* Try to make RTL <input type='file'> look nicer. */
+/* TODO: find a better solution than forcing direction: ltr on all file
+ input labels and remove this override -- bug 1161482 */
+input[type="file"]:dir(rtl) > xul|label {
+ padding-inline-start: 0px;
+ padding-inline-end: 5px;
+}
+
+/* radio buttons */
+input[type="radio"] {
+ -moz-appearance: radio;
+ margin-block-start: 3px;
+ margin-block-end: 0px;
+ margin-inline-start: 5px;
+ margin-inline-end: 3px;
+ border-radius: 100% !important;
+}
+
+/* check boxes */
+input[type="checkbox"] {
+ -moz-appearance: checkbox;
+ margin-block-start: 3px;
+ margin-block-end: 3px;
+ margin-inline-start: 4px;
+ margin-inline-end: 3px;
+ border-radius: 0 !important;
+}
+
+/* common features of radio buttons and check boxes */
+
+/* NOTE: The width, height, border-width, and padding here must all
+ add up the way nsFormControlFrame::GetIntrinsic(Width|Height)
+ expects them to, or they will not come out with total width equal
+ to total height on sites that set their 'width' or 'height' to 'auto'.
+ (Should we maybe set !important on width and height, then?) */
+input[type="radio"],
+input[type="checkbox"] {
+ box-sizing: border-box;
+ inline-size: 13px;
+ block-size: 13px;
+ cursor: default;
+ padding: 0 !important;
+ -moz-binding: none;
+ /* same colors as |input| rule, but |!important| this time. */
+ background-color: -moz-Field ! important;
+ color: -moz-FieldText ! important;
+ border: 2px inset ThreeDLightShadow ! important;
+}
+
+input[type="radio"]:disabled,
+input[type="radio"]:disabled:active,
+input[type="radio"]:disabled:hover,
+input[type="radio"]:disabled:hover:active,
+input[type="checkbox"]:disabled,
+input[type="checkbox"]:disabled:active,
+input[type="checkbox"]:disabled:hover,
+input[type="checkbox"]:disabled:hover:active {
+ padding: 1px;
+ border: 1px inset ThreeDShadow ! important;
+ /* same as above, but !important */
+ color: GrayText ! important;
+ background-color: ThreeDFace ! important;
+ cursor: inherit;
+}
+
+% On Mac, the native theme takes care of this.
+% See nsNativeThemeCocoa::ThemeDrawsFocusForWidget.
+%ifndef XP_MACOSX
+input[type="checkbox"]:-moz-focusring,
+input[type="radio"]:-moz-focusring {
+ /* Don't specify the outline-color, we should always use initial value. */
+ outline: 1px dotted;
+}
+%endif
+
+input[type="checkbox"]:hover:active,
+input[type="radio"]:hover:active {
+ background-color: ThreeDFace ! important;
+ border-style: inset !important;
+}
+
+input[type="search"] {
+ box-sizing: border-box;
+}
+
+/* buttons */
+
+/* Note: Values in nsNativeTheme IsWidgetStyled function
+ need to match button background/border values here */
+
+/* Non text-related properties for buttons: these ones are shared with
+ input[type="color"] */
+button,
+input[type="color"]:-moz-system-metric(color-picker-available),
+input[type="reset"],
+input[type="button"],
+input[type="submit"] {
+ -moz-appearance: button;
+ /* The sum of border and padding on block-start and block-end
+ must be the same here, for text inputs, and for <select>. For
+ buttons, make sure to include the -moz-focus-inner border/padding. */
+ padding-block-start: 0px;
+ padding-inline-end: 6px;
+ padding-block-end: 0px;
+ padding-inline-start: 6px;
+ border: 2px outset ThreeDLightShadow;
+ background-color: ButtonFace;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-user-select: none;
+ -moz-binding: none;
+}
+
+/* Text-related properties for buttons: these ones are not shared with
+ input[type="color"] */
+button,
+input[type="reset"],
+input[type="button"],
+input[type="submit"] {
+ color: ButtonText;
+ font: -moz-button;
+ line-height: normal;
+ white-space: pre;
+ text-align: center;
+ text-shadow: none;
+ overflow-clip-box: padding-box;
+}
+
+input[type="color"]:-moz-system-metric(color-picker-available) {
+ inline-size: 64px;
+ block-size: 23px;
+}
+
+button {
+ /* Buttons should lay out like "normal" html, mostly */
+ white-space: inherit;
+ text-indent: 0;
+ /* But no text-decoration reaching inside, by default */
+ display: inline-block;
+}
+
+*|*::-moz-button-content {
+ display: block;
+ /* Please keep the Multicol/Flex/Grid/Align sections below in sync with
+ ::-moz-scrolled-content in ua.css and ::-moz-fieldset-content above. */
+ /* Multicol container */
+ -moz-column-count: inherit;
+ -moz-column-width: inherit;
+ -moz-column-gap: inherit;
+ -moz-column-rule: inherit;
+ -moz-column-fill: inherit;
+ /* Flex container */
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ /* -webkit-box container (aliased from -webkit versions to -moz versions) */
+ -moz-box-orient: inherit;
+ -moz-box-direction: inherit;
+ -moz-box-pack: inherit;
+ -moz-box-align: inherit;
+ /* Grid container */
+ grid-auto-columns: inherit;
+ grid-auto-rows: inherit;
+ grid-auto-flow: inherit;
+ grid-column-gap: inherit;
+ grid-row-gap: inherit;
+ grid-template-areas: inherit;
+ grid-template-columns: inherit;
+ grid-template-rows: inherit;
+ /* CSS Align */
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ justify-items: inherit;
+}
+
+button:hover,
+input[type="color"]:-moz-system-metric(color-picker-available):hover,
+input[type="reset"]:hover,
+input[type="button"]:hover,
+input[type="submit"]:hover {
+ background-color: -moz-buttonhoverface;
+}
+
+button:hover,
+input[type="reset"]:hover,
+input[type="button"]:hover,
+input[type="submit"]:hover {
+ color: -moz-buttonhovertext;
+}
+
+button:active:hover,
+input[type="color"]:-moz-system-metric(color-picker-available):active:hover,
+input[type="reset"]:active:hover,
+input[type="button"]:active:hover,
+input[type="submit"]:active:hover {
+%ifndef XP_MACOSX
+ padding-block-start: 0px;
+ padding-inline-end: 5px;
+ padding-block-end: 0px;
+ padding-inline-start: 7px;
+%endif
+ border-style: inset;
+ background-color: ButtonFace;
+}
+
+button:active:hover,
+input[type="reset"]:active:hover,
+input[type="button"]:active:hover,
+input[type="submit"]:active:hover {
+ color: ButtonText;
+}
+
+button::-moz-focus-inner,
+input[type="color"]:-moz-system-metric(color-picker-available)::-moz-focus-inner,
+input[type="reset"]::-moz-focus-inner,
+input[type="button"]::-moz-focus-inner,
+input[type="submit"]::-moz-focus-inner,
+input[type="file"] > button[type="button"]::-moz-focus-inner {
+ padding-block-start: 0px;
+ padding-inline-end: 2px;
+ padding-block-end: 0px;
+ padding-inline-start: 2px;
+ border: 1px dotted transparent;
+}
+
+button:-moz-focusring::-moz-focus-inner,
+input[type="color"]:-moz-system-metric(color-picker-available):-moz-focusring::-moz-focus-inner,
+input[type="reset"]:-moz-focusring::-moz-focus-inner,
+input[type="button"]:-moz-focusring::-moz-focus-inner,
+input[type="submit"]:-moz-focusring::-moz-focus-inner,
+input[type="file"] > button[type="button"]:-moz-focusring::-moz-focus-inner {
+ border-color: ButtonText;
+}
+
+button:disabled:active, button:disabled,
+input[type="color"]:-moz-system-metric(color-picker-available):disabled:active,
+input[type="color"]:-moz-system-metric(color-picker-available):disabled,
+input[type="reset"]:disabled:active,
+input[type="reset"]:disabled,
+input[type="button"]:disabled:active,
+input[type="button"]:disabled,
+select:disabled > button,
+select:disabled > button,
+input[type="submit"]:disabled:active,
+input[type="submit"]:disabled {
+ /* The sum of border and padding on block-start and block-end
+ must be the same here and for text inputs */
+ padding-block-start: 0px;
+ padding-inline-end: 6px;
+ padding-block-end: 0px;
+ padding-inline-start: 6px;
+ border: 2px outset ThreeDLightShadow;
+ cursor: inherit;
+}
+
+button:disabled:active, button:disabled,
+input[type="reset"]:disabled:active,
+input[type="reset"]:disabled,
+input[type="button"]:disabled:active,
+input[type="button"]:disabled,
+select:disabled > button,
+select:disabled > button,
+input[type="submit"]:disabled:active,
+input[type="submit"]:disabled {
+ color: GrayText;
+}
+
+ /*
+ * Make form controls inherit 'unicode-bidi' transparently as required by
+ * their various anonymous descendants and pseudo-elements:
+ *
+ * <textarea> and <input type="text">:
+ * inherit into the XULScroll frame with class 'anonymous-div' which is a
+ * child of the text control.
+ *
+ * Buttons (either <button>, <input type="submit">, <input type="button">
+ * or <input type="reset">)
+ * inherit into the ':-moz-button-content' pseudo-element.
+ *
+ * <select>:
+ * inherit into the ':-moz-display-comboboxcontrol-frame' pseudo-element and
+ * the <optgroup>'s ':before' pseudo-element, which is where the label of
+ * the <optgroup> gets displayed. The <option>s don't use anonymous boxes,
+ * so they need no special rules.
+ */
+textarea > .anonymous-div,
+input > .anonymous-div,
+input::placeholder,
+textarea::placeholder,
+*|*::-moz-button-content,
+*|*::-moz-display-comboboxcontrol-frame,
+optgroup:before {
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+}
+
+/**
+ * Set default style for invalid elements.
+ */
+:not(output):-moz-ui-invalid {
+ box-shadow: 0 0 1.5px 1px red;
+}
+
+:not(output):-moz-ui-invalid:-moz-focusring {
+ box-shadow: 0 0 2px 2px rgba(255,0,0,0.4);
+}
+
+output:-moz-ui-invalid {
+ color: red;
+}
+
+@media print {
+ input, textarea, select, button {
+ -moz-user-input: none !important;
+ }
+
+ input[type="file"] { height: 2em; }
+}
+
+progress {
+ -moz-appearance: progressbar;
+ display: inline-block;
+ vertical-align: -0.2em;
+
+ /* Default style in case of there is -moz-appearance: none; */
+ border: 2px solid;
+ /* #e6e6e6 is a light gray. */
+ -moz-border-top-colors: ThreeDShadow #e6e6e6;
+ -moz-border-right-colors: ThreeDHighlight #e6e6e6;
+ -moz-border-bottom-colors: ThreeDHighlight #e6e6e6;
+ -moz-border-left-colors: ThreeDShadow #e6e6e6;
+ background-color: #e6e6e6;
+}
+
+::-moz-progress-bar {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: inline-block ! important;
+ float: none ! important;
+ position: static ! important;
+ overflow: visible ! important;
+ box-sizing: border-box ! important;
+
+ -moz-appearance: progresschunk;
+ height: 100%;
+ width: 100%;
+
+ /* Default style in case of there is -moz-appearance: none; */
+ background-color: #0064b4; /* blue */
+}
+
+meter {
+ -moz-appearance: meterbar;
+ display: inline-block;
+ vertical-align: -0.2em;
+
+ background: linear-gradient(#e6e6e6, #e6e6e6, #eeeeee 20%, #cccccc 45%, #cccccc 55%);
+}
+
+::-moz-meter-bar {
+ /* Block styles that would change the type of frame we construct. */
+ display: inline-block ! important;
+ float: none ! important;
+ position: static ! important;
+ overflow: visible ! important;
+
+ -moz-appearance: meterchunk;
+ height: 100%;
+ width: 100%;
+}
+
+:-moz-meter-optimum::-moz-meter-bar {
+ /* green. */
+ background: linear-gradient(#ad7, #ad7, #cea 20%, #7a3 45%, #7a3 55%);
+}
+:-moz-meter-sub-optimum::-moz-meter-bar {
+ /* orange. */
+ background: linear-gradient(#fe7, #fe7, #ffc 20%, #db3 45%, #db3 55%);
+}
+:-moz-meter-sub-sub-optimum::-moz-meter-bar {
+ /* red. */
+ background: linear-gradient(#f77, #f77, #fcc 20%, #d44 45%, #d44 55%);
+}
+
+input[type=range] {
+ -moz-appearance: range;
+ display: inline-block;
+ inline-size: 12em;
+ block-size: 1.3em;
+ margin-inline-start: 0.7em;
+ margin-inline-end: 0.7em;
+ margin-block-start: 0;
+ margin-block-end: 0;
+ /* Override some rules that apply on all input types: */
+ cursor: default;
+ background: none;
+ border: none;
+ -moz-binding: none; /* we don't want any of platformHTMLBindings.xml#inputFields */
+ /* Prevent nsFrame::HandlePress setting mouse capture to this element. */
+ -moz-user-select: none ! important;
+}
+
+input[type=range][orient=block] {
+ inline-size: 1.3em;
+ block-size: 12em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ margin-block-start: 0.7em;
+ margin-block-end: 0.7em;
+}
+
+input[type=range][orient=horizontal] {
+ width: 12em;
+ height: 1.3em;
+ margin: 0 0.7em;
+}
+
+input[type=range][orient=vertical] {
+ width: 1.3em;
+ height: 12em;
+ margin: 0.7em 0;
+}
+
+/**
+ * Ideally we'd also require :-moz-focusring here, but that doesn't currently
+ * work. Instead we only use the -moz-focus-outer border style if
+ * NS_EVENT_STATE_FOCUSRING is set (the check is in
+ * nsRangeFrame::BuildDisplayList).
+ */
+input[type=range]::-moz-focus-outer {
+ border: 1px dotted black;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling the thumb without worrying about the
+ * logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored.
+ *
+ * If content authors want to have a vertical range, they will also need to
+ * set the width/height of this pseudo-element.
+ */
+input[type=range]::-moz-range-track {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: inline-block !important;
+ float: none !important;
+ position: static !important;
+ border: none;
+ background-color: #999;
+ inline-size: 100%;
+ block-size: 0.2em;
+ /* Prevent nsFrame::HandlePress setting mouse capture to this element. */
+ -moz-user-select: none ! important;
+}
+
+input[type=range][orient=block]::-moz-range-track {
+ inline-size: 0.2em;
+ block-size: 100%;
+}
+
+input[type=range][orient=horizontal]::-moz-range-track {
+ width: 100%;
+ height: 0.2em;
+}
+
+input[type=range][orient=vertical]::-moz-range-track {
+ width: 0.2em;
+ height: 100%;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling this pseudo-element without worrying
+ * about the logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored. Additionally, if the range is horizontal, the width
+ * property is ignored, and if the range range is vertical, the height property
+ * is ignored.
+ */
+input[type=range]::-moz-range-progress {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: inline-block !important;
+ float: none !important;
+ position: static !important;
+ /* Since one of width/height will be ignored, this just sets the "other"
+ dimension.
+ */
+ width: 0.2em;
+ height: 0.2em;
+ /* Prevent nsFrame::HandlePress setting mouse capture to this element. */
+ -moz-user-select: none ! important;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling the thumb without worrying about the
+ * logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored.
+ */
+input[type=range]::-moz-range-thumb {
+ /* Native theming is atomic for range. Set -moz-appearance on the range
+ * to get rid of it. The thumb's -moz-appearance is fixed.
+ */
+ -moz-appearance: range-thumb !important;
+ /* Prevent styling that would change the type of frame we construct. */
+ display: inline-block !important;
+ float: none !important;
+ position: static !important;
+ width: 1em;
+ height: 1em;
+ border: 0.1em solid #999;
+ border-radius: 0.5em;
+ background-color: #F0F0F0;
+ /* Prevent nsFrame::HandlePress setting mouse capture to this element. */
+ -moz-user-select: none ! important;
+}
+
+/* As a temporary workaround until bug 677302 the rule for input[type=number]
+ * has moved to number-control.css
+ */
+
+input[type=number]::-moz-number-wrapper {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: flex;
+ float: none !important;
+ position: static !important;
+ block-size: 100%;
+}
+
+input[type=number]::-moz-number-text {
+ display: block; /* Flex items must be block-level. Normally we do fixup in
+ the style system to ensure this, but that fixup is disabled
+ inside of form controls. So, we hardcode display here. */
+ -moz-appearance: none;
+ /* work around autofocus bug 939248 on initial load */
+ -moz-user-modify: read-write;
+ /* This pseudo-element is also an 'input' element (nested inside and
+ * distinct from the <input type=number> element) so we need to prevent the
+ * explicit setting of 'text-align' by the general CSS rule for 'input'
+ * above. We want to inherit its value from its <input type=number>
+ * ancestor, not have that general CSS rule reset it.
+ */
+ text-align: inherit;
+ flex: 1;
+ min-inline-size: 0;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+input[type=number]::-moz-number-spin-box {
+ writing-mode: horizontal-tb;
+ display: flex;
+ flex-direction: column;
+%ifdef XP_WIN
+ /* The Window's Theme's spin buttons have a very narrow minimum width, so
+ * make it something reasonable:
+ */
+ width: 16px;
+%endif
+ /* If the spin-box has auto height, it ends up enlarging the default height
+ * of the control, so we limit it to 1em here. The height doesn't affect
+ * the rendering of the spinner-buttons; it's only for layout purposes.
+ *
+ * This is a temporary hack until we implement better positioning for the
+ * spin-box in vertical mode; it works OK at default size but less well
+ * if the font-size is made substantially larger or smaller. (Bug 1175074.)
+ */
+ max-height: 1em;
+ align-self: center;
+ justify-content: center;
+}
+
+input[type=number]::-moz-number-spin-up {
+ -moz-appearance: spinner-upbutton;
+ display: block; /* bug 926670 */
+ flex: none;
+ cursor: default;
+ /* Style for when native theming is off: */
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="6" height="5"><path d="M1,4 L3,0 5,4" fill="dimgrey"/></svg>');
+ background-repeat: no-repeat;
+ background-position: center bottom;
+ border: 1px solid darkgray;
+ border-bottom: none;
+ /* [JK] I think the border-*-*-radius properties here can remain physical,
+ as we probably don't want to turn the spinner sideways in vertical writing mode */
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+input[type=number]::-moz-number-spin-down {
+ -moz-appearance: spinner-downbutton;
+ display: block; /* bug 926670 */
+ flex: none;
+ cursor: default;
+ /* Style for when native theming is off: */
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="6" height="5"><path d="M1,1 L3,5 5,1" fill="dimgrey"/></svg>');
+ background-repeat: no-repeat;
+ background-position: center top;
+ border: 1px solid darkgray;
+ border-top: none;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+input[type="number"] > div > div > div:hover {
+ /* give some indication of hover state for the up/down buttons */
+ background-color: lightblue;
+}