Browse Source

[ADD] doc: new theme

Pretty much completely rewritten theme with custom HTML translator and a
few parts of the old theme extracted to their own extensions.

Banner images thought not to be that huge after all, and not worth the
hassle of them living in a different repository.

co-authored with @stefanorigano
master
Xavier Morel 6 years ago
parent
commit
95e56a109d
  1. 5
      doc/Makefile
  2. 17
      doc/_extensions/exercise_admonition.py
  3. 31
      doc/_extensions/github_link.py
  4. 11
      doc/_extensions/html_domain.py
  5. 100
      doc/_extensions/odoo/__init__.py
  6. 135
      doc/_extensions/odoo/layout.html
  7. 20
      doc/_extensions/odoo/pygments_override.py
  8. 59
      doc/_extensions/odoo/static/animations.less
  9. 5
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/alerts.less
  10. 15
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/badges.less
  11. 50
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/bootstrap.less
  12. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/breadcrumbs.less
  13. 33
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/button-groups.less
  14. 13
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/buttons.less
  15. 26
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/carousel.less
  16. 1
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/close.less
  17. 1
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/code.less
  18. 4
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/component-animations.less
  19. 13
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/dropdowns.less
  20. 124
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/forms.less
  21. 74
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/glyphicons.less
  22. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/grid.less
  23. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/input-groups.less
  24. 12
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/jumbotron.less
  25. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/labels.less
  26. 9
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/list-group.less
  27. 61
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/media.less
  28. 39
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins.less
  29. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/alerts.less
  30. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/background-variant.less
  31. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/border-radius.less
  32. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/buttons.less
  33. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/center-block.less
  34. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/clearfix.less
  35. 6
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/forms.less
  36. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/gradients.less
  37. 4
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/grid-framework.less
  38. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/grid.less
  39. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/hide-text.less
  40. 1
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/image.less
  41. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/labels.less
  42. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/list-group.less
  43. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/nav-divider.less
  44. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/nav-vertical-align.less
  45. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/opacity.less
  46. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/pagination.less
  47. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/panels.less
  48. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/progress-bar.less
  49. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/reset-filter.less
  50. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/resize.less
  51. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/responsive-visibility.less
  52. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/size.less
  53. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/tab-focus.less
  54. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/table-row.less
  55. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/text-emphasis.less
  56. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/text-overflow.less
  57. 9
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/vendor-prefixes.less
  58. 4
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/modals.less
  59. 55
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/navbar.less
  60. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/navs.less
  61. 8
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/normalize.less
  62. 3
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/pager.less
  63. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/pagination.less
  64. 30
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/panels.less
  65. 10
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/popovers.less
  66. 107
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/print.less
  67. 20
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/progress-bars.less
  68. 19
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/responsive-embed.less
  69. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/responsive-utilities.less
  70. 14
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/scaffolding.less
  71. 27
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/tables.less
  72. 41
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/theme.less
  73. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/thumbnails.less
  74. 17
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/tooltip.less
  75. 13
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/type.less
  76. 2
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/utilities.less
  77. 55
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/variables.less
  78. 0
      doc/_extensions/odoo/static/bootstrap-3.3.4/less/wells.less
  79. 1
      doc/_extensions/odoo/static/bootstrap.css.map
  80. 2317
      doc/_extensions/odoo/static/bootstrap.js
  81. 333
      doc/_extensions/odoo/static/doc.js
  82. BIN
      doc/_extensions/odoo/static/fonts/Material-Design-Icons.eot
  83. 769
      doc/_extensions/odoo/static/fonts/Material-Design-Icons.svg
  84. BIN
      doc/_extensions/odoo/static/fonts/Material-Design-Icons.ttf
  85. BIN
      doc/_extensions/odoo/static/fonts/Material-Design-Icons.woff
  86. BIN
      doc/_extensions/odoo/static/img/geometric_gradient.png
  87. BIN
      doc/_extensions/odoo/static/img/github-square_32.png
  88. 0
      doc/_extensions/odoo/static/img/odoo_logo_rgb.png
  89. BIN
      doc/_extensions/odoo/static/img/odoo_logo_white.png
  90. 4
      doc/_extensions/odoo/static/jquery.min.js
  91. 1
      doc/_extensions/odoo/static/jquery.noconflict.js
  92. 245
      doc/_extensions/odoo/static/layout.less
  93. 2381
      doc/_extensions/odoo/static/mdi.less
  94. 56
      doc/_extensions/odoo/static/mixins.less
  95. 6143
      doc/_extensions/odoo/static/style.css
  96. 989
      doc/_extensions/odoo/static/style.less
  97. 187
      doc/_extensions/odoo/static/typography.less
  98. 88
      doc/_extensions/odoo/static/variables.less
  99. 44
      doc/_extensions/odoo/switcher.py
  100. 2
      doc/_extensions/odoo/theme.conf

5
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."

17
doc/_themes/odoodoc/__init__.py → 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 <?php
from sphinx.highlighting import lexers
from pygments.lexers.web import PhpLexer
lexers['php'] = PhpLexer(startinline=True)

31
doc/_themes/odoodoc/github.py → doc/_extensions/github_link.py

@ -3,6 +3,27 @@ import importlib
import os.path
from urlparse import urlunsplit
"""
* adds github_link(mode) context variable: provides URL (in relevant mode) of
current document on github
* if sphinx.ext.linkcode is enabled, automatically generates github linkcode
links (by setting config.linkcode_resolve)
Settings
========
* ``github_user``, username/organisation under which the project lives
* ``github_project``, name of the project on github
* (optional) ``version``, github branch to link to (default: master)
Notes
=====
* provided ``linkcode_resolve`` only supports Python domain
* generates https github links
* explicitly imports ``openerp``, so useless for anyone else
"""
def setup(app):
app.add_config_value('github_user', None, 'env')
app.add_config_value('github_project', None, 'env')
@ -42,6 +63,7 @@ def setup(app):
return None
import openerp
# FIXME: make finding project root project-independent
project_root = os.path.join(os.path.dirname(openerp.__file__), '..')
return make_github_link(
app,
@ -72,6 +94,11 @@ def add_doc_link(app, pagename, templatename, context, doctree):
if not app.config.github_user and app.config.github_project:
return
# FIXME: find other way to recover current document's source suffix
# in Sphinx 1.3 it's possible to have mutliple source suffixes and that
# may be useful in the future
source_suffix = app.config.source_suffix
source_suffix = source_suffix if isinstance(source_suffix, basestring) else source_suffix[0]
# can't use functools.partial because 3rd positional is line not mode
context['github_link'] = lambda mode='mode': make_github_link(
app, 'doc/%s%s' % (pagename, app.config.source_suffix), mode=mode)
context['github_link'] = lambda mode='edit': make_github_link(
app, 'doc/%s%s' % (pagename, source_suffix), mode=mode)

11
doc/_themes/odoodoc/html_domain.py → doc/_extensions/html_domain.py

@ -1,7 +1,16 @@
# -*- coding: utf-8 -*-
"""
Defines a "raw HTML" domain with a ``div[classes]`` and a number of roles
rendered more or less directly to HTML.
.. warning::
the purpose of this domain is *not* to document HTML or components
"""
from docutils import nodes, utils
from docutils.parsers.rst import Directive, directives, docutils
from docutils.parsers.rst import Directive, directives
from docutils.parsers.rst.directives.body import LineBlock
import sphinx.roles

100
doc/_extensions/odoo/__init__.py

@ -0,0 +1,100 @@
# -*- coding: utf-8 -*-
from . import switcher
from . import pygments_override
import collections
import sphinx.environment
import sphinx.builders.html
from docutils import nodes
def setup(app):
switcher.setup(app)
app.add_config_value('odoo_cover_default', None, 'env')
app.add_config_value('odoo_cover_external', {}, 'env')
app.add_config_value('odoo_cover_default_external', lambda conf: conf.odoo_cover_default, 'env')
app.connect('html-page-context', update_meta)
def update_meta(app, pagename, templatename, context, doctree):
meta = context.setdefault('meta', {})
meta.setdefault('banner', app.config.odoo_cover_default)
def navbarify(node, navbar=None):
"""
:param node: toctree node to navbarify
:param navbar: Whether this toctree is a 'main' navbar, a 'side' navbar or
not a navbar at all
"""
if navbar == 'main':
# add classes to just toplevel
node['classes'].extend(['nav', 'navbar-nav', 'navbar-right'])
for list_item in node.children:
# bullet_list
# list_item
# compact_paragraph
# reference
# bullet_list
# list_item
# compact_paragraph
# reference
# no bullet_list.list_item -> 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)

135
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 -%}
<!doctype html>
{%- endblock -%}
{%- block htmltitle -%}
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ super() }}
{%- endblock -%}
{%- block sidebar1 -%}{%- endblock -%}
{%- block sidebar2 -%}{%- endblock -%}
{%- block relbar1 -%}{%- endblock -%}
{%- block relbar2 -%}{%- endblock -%}
{%- block footer -%}
{%- if google_analytics_key -%}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ google_analytics_key }}', 'auto');
ga('send','pageview');
</script>
{%- endif -%}
{%- endblock -%}
{%- block header -%}
<header class="{{ ' '.join(classes) }}">
<figure class="card top">
<span class="card-img" style="background-image: url('{{ pathto('_static/' + meta['banner'], True) }}');"></span>
</figure>
</header>
<nav id="main_navbar" class="navbar {{ ' '.join(classes) }}">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".navbar-main">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<nav class="nav navbar-nav navbar-left">
<li id="main-back"><a href="{{ pathto(master_doc) }}" class="mdi-navigation-arrow-back"></a></li>
<li>
<h1 id="main_title">{{ meta.get('main-title', title) }}</h1>
</li>
</nav>
</div>
<nav class="collapse navbar-collapse navbar-main navbar-right" role="navigation">
{% if versions %}
<ul class="navbar-nav navbar-right nav">
<li class="versions">
<a class="dropdown-toggle" data-toggle="dropdown">
{{ version }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
{% for name, url in versions %}
<li><a href="{{ url }}">{{ name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
{% endif %}
{{ toctree(titles_only=True, maxdepth=2, includehidden=True,
collapse=False, navbar='main') }}
</nav>
</div>
</nav>
{%- endblock -%}
{%- block content -%}
<main class="container {{ ' '.join(classes) }}">
{% if pagename != master_doc %}
<div class="row">
<aside>
<div class="navbar-aside text-center">
<div class="logo_box">
<span class="logo"></span>
Documentation
</div>
<h3 class="muted">Contents</h3>
{{ toc }}
{% if github_link %}
<p class="gith-container"><a href="{{ github_link(mode='edit') }}" class="gith-link">
Edit on GitHub
</a></p>
{% endif %}
</div>
</aside>
<article class="doc-body">
{% endif %}
{% block body %} {% endblock %}
{% if pagename != master_doc %}</article>
</div>
{% endif %}
<div id="mask"></div>
</main>
<div class="floating_action_container">
<a id="floating_action" class="ripple" href="#">
<i class="mdi-action-explore"></i>
</a>
<div id="floating_action_menu">
<span class="bubble"></span>
<ul class="list-group content">
<li class="list-group-item ripple"><a>Cras justo odio</a></li>
<li class="list-group-item ripple"><a>Dapibus ac facilisis in</a></li>
<li class="list-group-item ripple"><a>Morbi leo risus</a></li>
<li class="list-group-item ripple"><a>Porta ac consectetur ac</a></li>
<li class="list-group-item ripple"><a>Vestibulum at eros</a></li>
</ul>
</div>
</div>
{%- endblock -%}

20
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

59
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);
}

5
doc/_themes/odoodoc/static/bootstrap/less/alerts.less → 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);
}

15
doc/_themes/odoodoc/static/bootstrap/less/badges.less → 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;
}

50
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";

0
doc/_themes/odoodoc/static/bootstrap/less/breadcrumbs.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/breadcrumbs.less

33
doc/_themes/odoodoc/static/bootstrap/less/button-groups.less → 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;
}
}
}

13
doc/_themes/odoodoc/static/bootstrap/less/buttons.less → 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],

26
doc/_themes/odoodoc/static/bootstrap/less/carousel.less → 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.

1
doc/_themes/odoodoc/static/bootstrap/less/close.less → 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;

1
doc/_themes/odoodoc/static/bootstrap/less/code.less → 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;
}
}

4
doc/_themes/odoodoc/static/bootstrap/less/component-animations.less → 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);
}

13
doc/_themes/odoodoc/static/bootstrap/less/dropdowns.less → 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 @@
}
}
}

124
doc/_themes/odoodoc/static/bootstrap/less/forms.less → 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 <select>s in some browsers, due to the limited stylability of <select>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.
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";
// 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
@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,
.input-group-sm & {
line-height: @input-height-small;
}
&.input-sm {
line-height: @input-height-small;
}
&.input-lg {
line-height: @input-height-large;
&.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 <label>s
@ -266,7 +273,7 @@ input[type="checkbox"] {
.checkbox-inline {
&.disabled,
fieldset[disabled] & {
cursor: not-allowed;
cursor: @cursor-disabled;
}
}
// These classes are used on elements with <label> descendants
@ -275,7 +282,7 @@ input[type="checkbox"] {
&.disabled,
fieldset[disabled] & {
label {
cursor: not-allowed;
cursor: @cursor-disabled;
}
}
}
@ -292,6 +299,7 @@ input[type="checkbox"] {
padding-bottom: (@padding-base-vertical + 1);
// Remove default margin from `p`
margin-bottom: 0;
min-height: (@line-height-computed + @font-size-base);
&.input-lg,
&.input-sm {
@ -305,13 +313,40 @@ input[type="checkbox"] {
//
// Build on `.form-control` with modifier classes to decrease or increase the
// height and font-size of form controls.
//
// The `.form-group-* form-control` variations are sadly duplicated to avoid the
// issue documented in https://github.com/twbs/bootstrap/issues/15074.
.input-sm {
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
}
.form-group-sm {
.form-control {
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
}
.form-control-static {
height: @input-height-small;
padding: @padding-small-vertical @padding-small-horizontal;
font-size: @font-size-small;
line-height: @line-height-small;
min-height: (@line-height-computed + @font-size-small);
}
}
.input-lg {
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
}
.form-group-lg {
.form-control {
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
}
.form-control-static {
height: @input-height-large;
padding: @padding-large-vertical @padding-large-horizontal;
font-size: @font-size-large;
line-height: @line-height-large;
min-height: (@line-height-computed + @font-size-large);
}
}
@ -331,7 +366,7 @@ input[type="checkbox"] {
// Feedback icon (requires .glyphicon classes)
.form-control-feedback {
position: absolute;
top: (@line-height-computed + 5); // Height of the `label` and its margin
top: 0;
right: 0;
z-index: 2; // Ensure icon is above input groups
display: block;
@ -339,6 +374,7 @@ input[type="checkbox"] {
height: @input-height-base;
line-height: @input-height-base;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback {
width: @input-height-large;
@ -362,10 +398,15 @@ input[type="checkbox"] {
.form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
}
// Reposition feedback icon if input has visible label above
.has-feedback label {
// Reposition feedback icon if label is hidden with "screenreader only" state
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
& ~ .form-control-feedback {
top: (@line-height-computed + 5); // Height of the `label` and its margin
}
&.sr-only ~ .form-control-feedback {
top: 0;
}
}
@ -382,7 +423,6 @@ input[type="checkbox"] {
}
// Inline forms
//
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
@ -412,6 +452,11 @@ input[type="checkbox"] {
vertical-align: middle;
}
// Make static controls behave like regular ones
.form-control-static {
display: inline-block;
}
.input-group {
display: inline-table;
vertical-align: middle;
@ -434,8 +479,7 @@ input[type="checkbox"] {
}
// Remove default margin on radios/checkboxes that were used for stacking, and
// then undo the floating of radios and checkboxes to match (which also avoids
// a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
// then undo the floating of radios and checkboxes to match.
.radio,
.checkbox {
display: inline-block;
@ -453,10 +497,7 @@ input[type="checkbox"] {
margin-left: 0;
}
// Validation states
//
// Reposition the icon because it's now within a grid column and columns have
// `position: relative;` on them. Also accounts for the grid gutter padding.
// Re-override the feedback icon.
.has-feedback .form-control-feedback {
top: 0;
}
@ -509,7 +550,6 @@ input[type="checkbox"] {
// Reposition the icon because it's now within a grid column and columns have
// `position: relative;` on them. Also accounts for the grid gutter padding.
.has-feedback .form-control-feedback {
top: 0;
right: (@grid-gutter-width / 2);
}
@ -523,9 +563,6 @@ input[type="checkbox"] {
padding-top: ((@padding-large-vertical * @line-height-large) + 1);
}
}
.form-control {
&:extend(.input-lg);
}
}
.form-group-sm {
@media (min-width: @screen-sm-min) {
@ -533,8 +570,5 @@ input[type="checkbox"] {
padding-top: (@padding-small-vertical + 1);
}
}
.form-control {
&:extend(.input-sm);
}
}
}

74
doc/_themes/odoodoc/static/bootstrap/less/glyphicons.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/glyphicons.less

@ -12,6 +12,7 @@
font-family: 'Glyphicons Halflings';
src: url('@{icon-font-path}@{icon-font-name}.eot');
src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),
url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),
url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),
url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),
url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');
@ -33,7 +34,8 @@
// Individual icons
.glyphicon-asterisk { &:before { content: "\2a"; } }
.glyphicon-plus { &:before { content: "\2b"; } }
.glyphicon-euro { &:before { content: "\20ac"; } }
.glyphicon-euro,
.glyphicon-eur { &:before { content: "\20ac"; } }
.glyphicon-minus { &:before { content: "\2212"; } }
.glyphicon-cloud { &:before { content: "\2601"; } }
.glyphicon-envelope { &:before { content: "\2709"; } }
@ -231,3 +233,73 @@
.glyphicon-cloud-upload { &:before { content: "\e198"; } }
.glyphicon-tree-conifer { &:before { content: "\e199"; } }
.glyphicon-tree-deciduous { &:before { content: "\e200"; } }
.glyphicon-cd { &:before { content: "\e201"; } }
.glyphicon-save-file { &:before { content: "\e202"; } }
.glyphicon-open-file { &:before { content: "\e203"; } }
.glyphicon-level-up { &:before { content: "\e204"; } }
.glyphicon-copy { &:before { content: "\e205"; } }
.glyphicon-paste { &:before { content: "\e206"; } }
// The following 2 Glyphicons are omitted for the time being because
// they currently use Unicode codepoints that are outside the
// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
// Notably, the bug affects some older versions of the Android Browser.
// More info: https://github.com/twbs/bootstrap/issues/10106
// .glyphicon-door { &:before { content: "\1f6aa"; } }
// .glyphicon-key { &:before { content: "\1f511"; } }
.glyphicon-alert { &:before { content: "\e209"; } }
.glyphicon-equalizer { &:before { content: "\e210"; } }
.glyphicon-king { &:before { content: "\e211"; } }
.glyphicon-queen { &:before { content: "\e212"; } }
.glyphicon-pawn { &:before { content: "\e213"; } }
.glyphicon-bishop { &:before { content: "\e214"; } }
.glyphicon-knight { &:before { content: "\e215"; } }
.glyphicon-baby-formula { &:before { content: "\e216"; } }
.glyphicon-tent { &:before { content: "\26fa"; } }
.glyphicon-blackboard { &:before { content: "\e218"; } }
.glyphicon-bed { &:before { content: "\e219"; } }
.glyphicon-apple { &:before { content: "\f8ff"; } }
.glyphicon-erase { &:before { content: "\e221"; } }
.glyphicon-hourglass { &:before { content: "\231b"; } }
.glyphicon-lamp { &:before { content: "\e223"; } }
.glyphicon-duplicate { &:before { content: "\e224"; } }
.glyphicon-piggy-bank { &:before { content: "\e225"; } }
.glyphicon-scissors { &:before { content: "\e226"; } }
.glyphicon-bitcoin { &:before { content: "\e227"; } }
.glyphicon-btc { &:before { content: "\e227"; } }
.glyphicon-xbt { &:before { content: "\e227"; } }
.glyphicon-yen { &:before { content: "\00a5"; } }
.glyphicon-jpy { &:before { content: "\00a5"; } }
.glyphicon-ruble { &:before { content: "\20bd"; } }
.glyphicon-rub { &:before { content: "\20bd"; } }
.glyphicon-scale { &:before { content: "\e230"; } }
.glyphicon-ice-lolly { &:before { content: "\e231"; } }
.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } }
.glyphicon-education { &:before { content: "\e233"; } }
.glyphicon-option-horizontal { &:before { content: "\e234"; } }
.glyphicon-option-vertical { &:before { content: "\e235"; } }
.glyphicon-menu-hamburger { &:before { content: "\e236"; } }
.glyphicon-modal-window { &:before { content: "\e237"; } }
.glyphicon-oil { &:before { content: "\e238"; } }
.glyphicon-grain { &:before { content: "\e239"; } }
.glyphicon-sunglasses { &:before { content: "\e240"; } }
.glyphicon-text-size { &:before { content: "\e241"; } }
.glyphicon-text-color { &:before { content: "\e242"; } }
.glyphicon-text-background { &:before { content: "\e243"; } }
.glyphicon-object-align-top { &:before { content: "\e244"; } }
.glyphicon-object-align-bottom { &:before { content: "\e245"; } }
.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
.glyphicon-object-align-left { &:before { content: "\e247"; } }
.glyphicon-object-align-vertical { &:before { content: "\e248"; } }
.glyphicon-object-align-right { &:before { content: "\e249"; } }
.glyphicon-triangle-right { &:before { content: "\e250"; } }
.glyphicon-triangle-left { &:before { content: "\e251"; } }
.glyphicon-triangle-bottom { &:before { content: "\e252"; } }
.glyphicon-triangle-top { &:before { content: "\e253"; } }
.glyphicon-console { &:before { content: "\e254"; } }
.glyphicon-superscript { &:before { content: "\e255"; } }
.glyphicon-subscript { &:before { content: "\e256"; } }
.glyphicon-menu-left { &:before { content: "\e257"; } }
.glyphicon-menu-right { &:before { content: "\e258"; } }
.glyphicon-menu-down { &:before { content: "\e259"; } }
.glyphicon-menu-up { &:before { content: "\e260"; } }

0
doc/_themes/odoodoc/static/bootstrap/less/grid.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/grid.less

0
doc/_themes/odoodoc/static/bootstrap/less/input-groups.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/input-groups.less

12
doc/_themes/odoodoc/static/bootstrap/less/jumbotron.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/jumbotron.less

@ -4,7 +4,7 @@
.jumbotron {
padding: @jumbotron-padding;
padding: @jumbotron-padding (@jumbotron-padding / 2);
margin-bottom: @jumbotron-padding;
color: @jumbotron-color;
background-color: @jumbotron-bg;
@ -13,6 +13,7 @@
.h1 {
color: @jumbotron-heading-color;
}
p {
margin-bottom: (@jumbotron-padding / 2);
font-size: @jumbotron-font-size;
@ -23,7 +24,8 @@
border-top-color: darken(@jumbotron-bg, 10%);
}
.container & {
.container &,
.container-fluid & {
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
}
@ -32,10 +34,10 @@
}
@media screen and (min-width: @screen-sm-min) {
padding-top: (@jumbotron-padding * 1.6);
padding-bottom: (@jumbotron-padding * 1.6);
padding: (@jumbotron-padding * 1.6) 0;
.container & {
.container &,
.container-fluid & {
padding-left: (@jumbotron-padding * 2);
padding-right: (@jumbotron-padding * 2);
}

0
doc/_themes/odoodoc/static/bootstrap/less/labels.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/labels.less

9
doc/_themes/odoodoc/static/bootstrap/less/list-group.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/list-group.less

@ -35,14 +35,6 @@
margin-bottom: 0;
.border-bottom-radius(@list-group-border-radius);
}
// Align badges within list items
> .badge {
float: right;
}
> .badge + .badge {
margin-right: 5px;
}
}
@ -74,6 +66,7 @@ a.list-group-item {
&.disabled:focus {
background-color: @list-group-disabled-bg;
color: @list-group-disabled-color;
cursor: @cursor-disabled;
// Force color to inherit for custom content
.list-group-item-heading {

61
doc/_extensions/odoo/static/bootstrap-3.3.4/less/media.less

@ -0,0 +1,61 @@
.media {
// Proper spacing between instances of .media
margin-top: 15px;
&:first-child {
margin-top: 0;
}
}
.media,
.media-body {
zoom: 1;
overflow: hidden;
}
.media-body {
width: 10000px;
}
.media-object {
display: block;
}
.media-right,
.media > .pull-right {
padding-left: 10px;
}
.media-left,
.media > .pull-left {
padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
display: table-cell;
vertical-align: top;
}
.media-middle {
vertical-align: middle;
}
.media-bottom {
vertical-align: bottom;
}
// Reset margins on headings for tighter default spacing
.media-heading {
margin-top: 0;
margin-bottom: 5px;
}
// Media list variation
//
// Undo default ul/ol styles
.media-list {
padding-left: 0;
list-style: none;
}

39
doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins.less

@ -0,0 +1,39 @@
// Mixins
// --------------------------------------------------
// Utilities
@import "mixins/hide-text.less";
@import "mixins/opacity.less";
@import "mixins/image.less";
@import "mixins/labels.less";
@import "mixins/reset-filter.less";
@import "mixins/resize.less";
@import "mixins/responsive-visibility.less";
@import "mixins/size.less";
@import "mixins/tab-focus.less";
@import "mixins/text-emphasis.less";
@import "mixins/text-overflow.less";
@import "mixins/vendor-prefixes.less";
// Components
@import "mixins/alerts.less";
@import "mixins/buttons.less";
@import "mixins/panels.less";
@import "mixins/pagination.less";
@import "mixins/list-group.less";
@import "mixins/nav-divider.less";
@import "mixins/forms.less";
@import "mixins/progress-bar.less";
@import "mixins/table-row.less";
// Skins
@import "mixins/background-variant.less";
@import "mixins/border-radius.less";
@import "mixins/gradients.less";
// Layout
@import "mixins/clearfix.less";
@import "mixins/center-block.less";
@import "mixins/nav-vertical-align.less";
@import "mixins/grid-framework.less";
@import "mixins/grid.less";

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/alerts.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/alerts.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/background-variant.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/background-variant.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/border-radius.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/border-radius.less

2
doc/_themes/odoodoc/static/bootstrap/less/mixins/buttons.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/buttons.less

@ -10,6 +10,7 @@
&:hover,
&:focus,
&.focus,
&:active,
&.active,
.open > .dropdown-toggle& {
@ -28,6 +29,7 @@
&,
&:hover,
&:focus,
&.focus,
&:active,
&.active {
background-color: @background;

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/center-block.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/center-block.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/clearfix.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/clearfix.less

6
doc/_themes/odoodoc/static/bootstrap/less/mixins/forms.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/forms.less

@ -10,7 +10,11 @@
.radio,
.checkbox,
.radio-inline,
.checkbox-inline {
.checkbox-inline,
&.radio label,
&.checkbox label,
&.radio-inline label,
&.checkbox-inline label {
color: @text-color;
}
// Set the border and box shadow on specific inputs to match

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/gradients.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/gradients.less

4
doc/_themes/odoodoc/static/bootstrap/less/mixins/grid-framework.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/grid-framework.less

@ -5,7 +5,7 @@
.make-grid-columns() {
// Common styles for all sizes of grid columns, widths 1-12
.col(@index) when (@index = 1) { // initial
.col(@index) { // initial
@item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
.col((@index + 1), @item);
}
@ -27,7 +27,7 @@
}
.float-grid-columns(@class) {
.col(@index) when (@index = 1) { // initial
.col(@index) { // initial
@item: ~".col-@{class}-@{index}";
.col((@index + 1), @item);
}

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/grid.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/grid.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/hide-text.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/hide-text.less

1
doc/_themes/odoodoc/static/bootstrap/less/mixins/image.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/image.less

@ -8,7 +8,6 @@
// Keep images from scaling beyond the width of their parents.
.img-responsive(@display: block) {
display: @display;
width: 100% \9; // Force IE10 and below to size SVG images correctly
max-width: 100%; // Part 1: Set a maximum relative to the parent
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
}

2
doc/_themes/odoodoc/static/bootstrap/less/mixins/labels.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/labels.less

@ -2,7 +2,7 @@
.label-variant(@color) {
background-color: @color;
&[href] {
&:hover,
&:focus {

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/list-group.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/list-group.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/nav-divider.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/nav-divider.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/nav-vertical-align.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/nav-vertical-align.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/opacity.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/opacity.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/pagination.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/pagination.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/panels.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/panels.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/progress-bar.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/progress-bar.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/reset-filter.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/reset-filter.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/resize.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/resize.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/responsive-visibility.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/responsive-visibility.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/size.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/size.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/tab-focus.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/tab-focus.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/table-row.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/table-row.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/text-emphasis.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/text-emphasis.less

0
doc/_themes/odoodoc/static/bootstrap/less/mixins/text-overflow.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/text-overflow.less

9
doc/_themes/odoodoc/static/bootstrap/less/mixins/vendor-prefixes.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/mixins/vendor-prefixes.less

@ -99,9 +99,12 @@
// Placeholder text
.placeholder(@color: @input-color-placeholder) {
&::-moz-placeholder { color: @color; // Firefox
opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526
&:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
// Firefox
&::-moz-placeholder {
color: @color;
opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
}
&:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
&::-webkit-input-placeholder { color: @color; } // Safari and Chrome
}

4
doc/_themes/odoodoc/static/bootstrap/less/modals.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/modals.less

@ -30,10 +30,10 @@
// When fading in the modal, animate it to slide down
&.fade .modal-dialog {
.translate3d(0, -25%, 0);
.translate(0, -25%);
.transition-transform(~"0.3s ease-out");
}
&.in .modal-dialog { .translate3d(0, 0, 0) }
&.in .modal-dialog { .translate(0, 0) }
}
.modal-open .modal {
overflow-x: hidden;

55
doc/_themes/odoodoc/static/bootstrap/less/navbar.less → doc/_extensions/odoo/static/bootstrap-3.3.4/less/navbar.less

@ -92,7 +92,7 @@
.navbar-collapse {
max-height: @navbar-collapse-max-height;
@media (max-width: @screen-xs-min) and (orientation: landscape) {
@media (max-device-width: @screen-xs-min) and (orientation: landscape) {
max-height: 200px;
}
}