diff --git a/doc/Makefile b/doc/Makefile index c456284fcfb..0808b6736b5 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -152,3 +152,8 @@ doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/_themes/odoodoc/__init__.py b/doc/_extensions/exercise_admonition.py similarity index 63% rename from doc/_themes/odoodoc/__init__.py rename to doc/_extensions/exercise_admonition.py index dd825ca1586..4256ca73b78 100644 --- a/doc/_themes/odoodoc/__init__.py +++ b/doc/_extensions/exercise_admonition.py @@ -1,16 +1,10 @@ # -*- coding: utf-8 -*- -from . import html_domain -from . import github -# add Odoo style to pygments -from . import odoo_pygments -from . import sphinx_monkeypatch -sphinx_monkeypatch.patch() +""" +Adds a new "exercise" admonition type +""" def setup(app): - html_domain.setup(app) - github.setup(app) - app.add_directive('exercise', Exercise) app.add_node(exercise, html=( lambda self, node: self.visit_admonition(node, 'exercise'), @@ -28,8 +22,3 @@ class Exercise(admonitions.BaseAdmonition): from sphinx.locale import admonitionlabels, l_ admonitionlabels['exercise'] = l_('Exercise') - -# monkeypatch PHP lexer to not require don't dropdownify + if len(list_item.children) < 2 or not list_item.children[1].children: + continue + + list_item['classes'].append('dropdown') + # list_item.compact_paragraph.reference + link = list_item.children[0].children[0] + link['classes'].append('dropdown-toggle') + link.attributes['data-toggle'] = 'dropdown' + # list_item.bullet_list + list_item.children[1]['classes'].append('dropdown-menu') + +def resolve_content_toctree( + environment, docname, builder, toctree, prune=True, maxdepth=0, + titles_only=False, collapse=False, includehidden=False): + """Alternative toctree resolution for main content: don't resolve the + toctree, just handle it as a normal node, in the translator + """ + return toctree + +class monkey(object): + def __init__(self, obj): + self.obj = obj + def __call__(self, fn): + name = fn.__name__ + old = getattr(self.obj, name) + setattr(self.obj, name, lambda self_, *args, **kwargs: \ + fn(old, self_, *args, **kwargs)) + +@monkey(sphinx.environment.BuildEnvironment) +def resolve_toctree(old_resolve, self, docname, *args, **kwargs): + """ If navbar, bootstrapify TOC to yield a navbar + + """ + navbar = kwargs.pop('navbar', None) + if docname == self.config.master_doc and not navbar: + return resolve_content_toctree(self, docname, *args, **kwargs) + toc = old_resolve(self, docname, *args, **kwargs) + if toc is None: + return None + + navbarify(toc[0], navbar=navbar) + return toc + +@monkey(sphinx.builders.html.StandaloneHTMLBuilder) +def render_partial(old_partial, self, node): + if isinstance(node, nodes.bullet_list) and node.children: + # side nav? + # remove single top-level item + # bullet_list/0(list_item)/1(bullet_list) + level1 = node.children[0].children + if len(level1) > 1: + node = level1[1] + node['classes'].extend(['list-group', 'nav', 'text-left']) + for n in node.traverse(): + if isinstance(n, nodes.list_item): + n['classes'].append('list-group-item') + elif isinstance(n, nodes.reference): + n['classes'].append('ripple') + else: + node.clear() + return old_partial(self, node) diff --git a/doc/_extensions/odoo/layout.html b/doc/_extensions/odoo/layout.html new file mode 100644 index 00000000000..699170d3e5c --- /dev/null +++ b/doc/_extensions/odoo/layout.html @@ -0,0 +1,135 @@ +{% extends "basic/layout.html" %} + +{% set script_files = script_files + [ +'_static/jquery.min.js', +'_static/bootstrap.js', +'_static/doc.js', +'_static/jquery.noconflict.js', +] %} + +{% set classes = [] %} +{% if pagename == master_doc %} +{% set classes = classes + ['index'] %} +{% endif %} +{% if 'code-column' in meta %} +{% set classes = classes + ['has_code_col'] %} +{% endif %} + +{%- block doctype -%} + +{%- endblock -%} +{%- block htmltitle -%} + + + {{ super() }} +{%- endblock -%} + +{%- block sidebar1 -%}{%- endblock -%} +{%- block sidebar2 -%}{%- endblock -%} +{%- block relbar1 -%}{%- endblock -%} +{%- block relbar2 -%}{%- endblock -%} + +{%- block footer -%} + {%- if google_analytics_key -%} + + {%- endif -%} +{%- endblock -%} + +{%- block header -%} +
+
+ +
+
+ +{%- endblock -%} + +{%- block content -%} +
+ {% if pagename != master_doc %} +
+ +
+ {% endif %} + {% block body %} {% endblock %} + {% if pagename != master_doc %}
+
+ {% endif %} +
+
+ +
+ + + +
+ + +
+
+{%- endblock -%} diff --git a/doc/_extensions/odoo/pygments_override.py b/doc/_extensions/odoo/pygments_override.py new file mode 100644 index 00000000000..58458f417e1 --- /dev/null +++ b/doc/_extensions/odoo/pygments_override.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from pygments.style import Style +from pygments.styles.paraiso_dark import ParaisoDarkStyle +from pygments.token import * + +# extracted from getbootstrap.com +class OdooStyle(Style): + background_color = '#272727' + highlight_color = ParaisoDarkStyle.highlight_color + + styles = dict(ParaisoDarkStyle.styles) + styles[Keyword] = '#cb49a8' + styles[Name.Tag] = '#21b799' + +import imp +import sys +modname = 'pygments.styles.odoo' +m = imp.new_module(modname) +m.OdooStyle = OdooStyle +sys.modules[modname] = m diff --git a/doc/_extensions/odoo/static/animations.less b/doc/_extensions/odoo/static/animations.less new file mode 100644 index 00000000000..c95cd342322 --- /dev/null +++ b/doc/_extensions/odoo/static/animations.less @@ -0,0 +1,59 @@ + +// Animations + +.keyframes(ripple; { + 100% { + opacity: 0; + .scale(2.5); + } +}); + +.keyframes(fadeInUp; { + 0% { + opacity: 0; + .translate(0; 60px); + } + 40% { opacity: 1} + 100% { + opacity: 1; + .translate(none; none); + } +}); + +.keyframes(fadeIn; { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +}); + + +.fadeInUp { + .animation(fadeInUp 1s); +} + +.fadeIn { + .animation(fadeIn 1s); +} + + +// Ripple Buttons + +.ripple { + z-index: 2; +} +.inner-ripple { + display: block; + position: absolute; + border-radius: 100%; + opacity: 1.3; + z-index: -1; + background: rgba(0, 0, 0, .2); + pointer-events: none; + .scale(0); +} +.inner-ripple-animated { + .animation(ripple 0.35s ease-in); +} \ No newline at end of file diff --git a/doc/_themes/odoodoc/static/bootstrap/less/alerts.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/alerts.less old mode 100644 new mode 100755 similarity index 99% rename from doc/_themes/odoodoc/static/bootstrap/less/alerts.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/alerts.less index df070b8ab23..c4199db927e --- a/doc/_themes/odoodoc/static/bootstrap/less/alerts.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/alerts.less @@ -18,6 +18,7 @@ // Specified for the h4 to prevent conflicts of changing @headings-color color: inherit; } + // Provide class for links that match alerts .alert-link { font-weight: @alert-link-font-weight; @@ -28,6 +29,7 @@ > ul { margin-bottom: 0; } + > p + p { margin-top: 5px; } @@ -57,12 +59,15 @@ .alert-success { .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); } + .alert-info { .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); } + .alert-warning { .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); } + .alert-danger { .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); } diff --git a/doc/_themes/odoodoc/static/bootstrap/less/badges.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/badges.less old mode 100644 new mode 100755 similarity index 85% rename from doc/_themes/odoodoc/static/bootstrap/less/badges.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/badges.less index 20624f30db6..c70bb939ebe --- a/doc/_themes/odoodoc/static/bootstrap/less/badges.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/badges.less @@ -28,7 +28,9 @@ position: relative; top: -1px; } - .btn-xs & { + + .btn-xs &, + .btn-group-xs > .btn & { top: 0; padding: 1px 5px; } @@ -44,11 +46,20 @@ } // Account for badges in navs - a.list-group-item.active > &, + .list-group-item.active > &, .nav-pills > .active > a > & { color: @badge-active-color; background-color: @badge-active-bg; } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + .nav-pills > li > a > & { margin-left: 3px; } diff --git a/doc/_extensions/odoo/static/bootstrap-3.3.4/less/bootstrap.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/bootstrap.less new file mode 100755 index 00000000000..10cad64fac8 --- /dev/null +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/bootstrap.less @@ -0,0 +1,50 @@ +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset and dependencies +@import "normalize.less"; +@import "print.less"; +//@import "glyphicons.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components +@import "component-animations.less"; +@import "dropdowns.less"; +@import "button-groups.less"; +@import "input-groups.less"; +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; +@import "labels.less"; +@import "badges.less"; +@import "jumbotron.less"; +@import "thumbnails.less"; +@import "alerts.less"; +@import "progress-bars.less"; +@import "media.less"; +@import "list-group.less"; +@import "panels.less"; +@import "responsive-embed.less"; +@import "wells.less"; +@import "close.less"; + +// Components w/ JavaScript +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; +@import "carousel.less"; + +// Utility classes +@import "utilities.less"; +@import "responsive-utilities.less"; diff --git a/doc/_themes/odoodoc/static/bootstrap/less/breadcrumbs.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/breadcrumbs.less old mode 100644 new mode 100755 similarity index 100% rename from doc/_themes/odoodoc/static/bootstrap/less/breadcrumbs.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/breadcrumbs.less diff --git a/doc/_themes/odoodoc/static/bootstrap/less/button-groups.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/button-groups.less old mode 100644 new mode 100755 similarity index 86% rename from doc/_themes/odoodoc/static/bootstrap/less/button-groups.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/button-groups.less index 7021ecd1712..13c1800deaa --- a/doc/_themes/odoodoc/static/bootstrap/less/button-groups.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/button-groups.less @@ -18,10 +18,6 @@ &.active { z-index: 2; } - &:focus { - // Remove focus outline when dropdown JS adds it after closing the menu - outline: 0; - } } } @@ -75,13 +71,13 @@ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } -.btn-group > .btn-group:first-child { +.btn-group > .btn-group:first-child:not(:last-child) { > .btn:last-child, > .dropdown-toggle { .border-right-radius(0); } } -.btn-group > .btn-group:last-child > .btn:first-child { +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { .border-left-radius(0); } @@ -198,7 +194,6 @@ } - // Justified button groups // ---------------------- @@ -226,15 +221,23 @@ // Checkbox and radio options // // In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `opacity`. We cannot -// use `display: none;` or `visibility: hidden;` as that also hides the popover. +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. // This way, we ensure a DOM element is visible to position the popover from. // -// See https://github.com/twbs/bootstrap/pull/12794 for more. +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - position: absolute; - z-index: -1; - .opacity(0); +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } } diff --git a/doc/_themes/odoodoc/static/bootstrap/less/buttons.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/buttons.less old mode 100644 new mode 100755 similarity index 95% rename from doc/_themes/odoodoc/static/bootstrap/less/buttons.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/buttons.less index 492bdc65ae8..5a746049e3c --- a/doc/_themes/odoodoc/static/bootstrap/less/buttons.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/buttons.less @@ -12,6 +12,7 @@ font-weight: @btn-font-weight; text-align: center; vertical-align: middle; + touch-action: manipulation; cursor: pointer; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid transparent; @@ -22,13 +23,15 @@ &, &:active, &.active { - &:focus { + &:focus, + &.focus { .tab-focus(); } } &:hover, - &:focus { + &:focus, + &.focus { color: @btn-default-color; text-decoration: none; } @@ -43,7 +46,7 @@ &.disabled, &[disabled], fieldset[disabled] & { - cursor: not-allowed; + cursor: @cursor-disabled; pointer-events: none; // Future-proof disabling of clicks .opacity(.65); .box-shadow(none); @@ -85,11 +88,11 @@ .btn-link { color: @link-color; font-weight: normal; - cursor: pointer; border-radius: 0; &, &:active, + &.active, &[disabled], fieldset[disabled] & { background-color: transparent; @@ -104,7 +107,7 @@ &:hover, &:focus { color: @link-hover-color; - text-decoration: underline; + text-decoration: @link-hover-decoration; background-color: transparent; } &[disabled], diff --git a/doc/_themes/odoodoc/static/bootstrap/less/carousel.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/carousel.less old mode 100644 new mode 100755 similarity index 88% rename from doc/_themes/odoodoc/static/bootstrap/less/carousel.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/carousel.less index 1644ddf7f53..4bbe946d3aa --- a/doc/_themes/odoodoc/static/bootstrap/less/carousel.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/carousel.less @@ -24,6 +24,30 @@ &:extend(.img-responsive); line-height: 1; } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + .transition-transform(~'0.6s ease-in-out'); + .backface-visibility(~'hidden'); + .perspective(1000); + + &.next, + &.active.right { + .translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + .translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + .translate3d(0, 0, 0); + left: 0; + } + } } > .active, @@ -124,6 +148,7 @@ width: 20px; height: 20px; margin-top: -10px; + line-height: 1; font-family: serif; } @@ -171,6 +196,7 @@ // Internet Explorer 8-9 does not support clicks on elements without a set // `background-color`. We cannot use `filter` since that's not viewed as a // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer // // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we // set alpha transparency for the best results possible. diff --git a/doc/_themes/odoodoc/static/bootstrap/less/close.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/close.less old mode 100644 new mode 100755 similarity index 89% rename from doc/_themes/odoodoc/static/bootstrap/less/close.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/close.less index 9b4e74f2b82..6d5bfe087ae --- a/doc/_themes/odoodoc/static/bootstrap/less/close.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/close.less @@ -23,6 +23,7 @@ // Additional properties for button version // iOS requires the button element instead of an anchor tag. // If you want the anchor version, it requires `href="#"`. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile button& { padding: 0; cursor: pointer; diff --git a/doc/_themes/odoodoc/static/bootstrap/less/code.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/code.less old mode 100644 new mode 100755 similarity index 98% rename from doc/_themes/odoodoc/static/bootstrap/less/code.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/code.less index baa13df613b..a08b4d48c4c --- a/doc/_themes/odoodoc/static/bootstrap/less/code.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/code.less @@ -32,6 +32,7 @@ kbd { kbd { padding: 0; font-size: 100%; + font-weight: bold; box-shadow: none; } } diff --git a/doc/_themes/odoodoc/static/bootstrap/less/component-animations.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/component-animations.less old mode 100644 new mode 100755 similarity index 82% rename from doc/_themes/odoodoc/static/bootstrap/less/component-animations.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/component-animations.less index 9400a0d32f3..0bcee910ac5 --- a/doc/_themes/odoodoc/static/bootstrap/less/component-animations.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/component-animations.less @@ -27,5 +27,7 @@ position: relative; height: 0; overflow: hidden; - .transition(height .35s ease); + .transition-property(~"height, visibility"); + .transition-duration(.35s); + .transition-timing-function(ease); } diff --git a/doc/_themes/odoodoc/static/bootstrap/less/dropdowns.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/dropdowns.less old mode 100644 new mode 100755 similarity index 96% rename from doc/_themes/odoodoc/static/bootstrap/less/dropdowns.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/dropdowns.less index 3eb7fc05c44..af344607bd9 --- a/doc/_themes/odoodoc/static/bootstrap/less/dropdowns.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/dropdowns.less @@ -10,12 +10,13 @@ height: 0; margin-left: 2px; vertical-align: middle; - border-top: @caret-width-base solid; + border-top: @caret-width-base dashed; border-right: @caret-width-base solid transparent; border-left: @caret-width-base solid transparent; } // The dropdown wrapper (div) +.dropup, .dropdown { position: relative; } @@ -103,16 +104,15 @@ &:focus { color: @dropdown-link-disabled-color; } -} -// Nuke hover/focus effects -.dropdown-menu > .disabled > a { + + // Nuke hover/focus effects &:hover, &:focus { text-decoration: none; background-color: transparent; background-image: none; // Remove CSS gradient .reset-filter(); - cursor: not-allowed; + cursor: @cursor-disabled; } } @@ -191,7 +191,7 @@ .dropdown-menu { top: auto; bottom: 100%; - margin-bottom: 1px; + margin-bottom: 2px; } } @@ -212,4 +212,3 @@ } } } - diff --git a/doc/_themes/odoodoc/static/bootstrap/less/forms.less b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/forms.less old mode 100644 new mode 100755 similarity index 80% rename from doc/_themes/odoodoc/static/bootstrap/less/forms.less rename to doc/_extensions/odoo/static/bootstrap-3.3.4/less/forms.less index 2c5e9bfa931..e4b50629e97 --- a/doc/_themes/odoodoc/static/bootstrap/less/forms.less +++ b/doc/_extensions/odoo/static/bootstrap-3.3.4/less/forms.less @@ -123,7 +123,7 @@ output { background-color: @input-bg; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid @input-border; - border-radius: @input-border-radius; + border-radius: @input-border-radius; // Note: This has no effect on s in CSS. .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); @@ -141,9 +141,13 @@ output { &[disabled], &[readonly], fieldset[disabled] & { - cursor: not-allowed; background-color: @input-bg-disabled; - opacity: 1; // iOS fix for unreadable disabled content + opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 + } + + &[disabled], + fieldset[disabled] & { + cursor: @cursor-disabled; } // Reset height for `textarea`s @@ -168,24 +172,26 @@ input[type="search"] { // Special styles for iOS temporal inputs // // In Mobile Safari, setting `display: block` on temporal inputs causes the -// text within the input to become vertically misaligned. -// As a workaround, we set a pixel line-height that matches the -// given height of the input. Since this fucks up everything else, we have to -// appropriately reset it for Internet Explorer and the size variations. +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - line-height: @input-height-base; - // IE8+ misaligns the text within date inputs, so we reset - line-height: @line-height-base ~"\0"; +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: @input-height-base; - &.input-sm { - line-height: @input-height-small; - } - &.input-lg { - line-height: @input-height-large; + &.input-sm, + .input-group-sm & { + line-height: @input-height-small; + } + + &.input-lg, + .input-group-lg & { + line-height: @input-height-large; + } } } @@ -196,7 +202,7 @@ input[type="month"] { // horizontal forms, use the predefined grid classes. .form-group { - margin-bottom: 15px; + margin-bottom: @form-group-margin-bottom; } @@ -208,11 +214,11 @@ input[type="month"] { .checkbox { position: relative; display: block; - min-height: @line-height-computed; // clear the floating input if there is no label text margin-top: 10px; margin-bottom: 10px; label { + min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text padding-left: 20px; margin-bottom: 0; font-weight: normal; @@ -236,6 +242,7 @@ input[type="month"] { // Radios and checkboxes on same line .radio-inline, .checkbox-inline { + position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; @@ -258,7 +265,7 @@ input[type="checkbox"] { &[disabled], &.disabled, fieldset[disabled] & { - cursor: not-allowed; + cursor: @cursor-disabled; } } // These classes are used directly on