Customize default bootstrap theme
The bootstrap rules are imported from sao less file to override some variables. We embed a stripped version of the bootswatch paper theme. We also try to import an option custom.less file. issue9427 review294011002
This commit is contained in:
1 parent
41232df6bc
commit
b36da567df
13 files changed
+738
-55
No files matched your search
@@ -1,3 +1,4 @@
|
||||
* Customize bootstrap default style
|
||||
* Set field's name as input's name attribute
|
||||
* Position copied records based on order
|
||||
* Sanitize translated RichtText fields content (issue9453)
|
||||
|
||||
@@ -3,6 +3,7 @@ Copyright (C) 2012-2020 Cédric Krier.
|
||||
Copyright (C) 2012-2014 Bertrand Chenal.
|
||||
Copyright (C) 2012-2020 B2CK SPRL.
|
||||
Copyright (C) 2019 Jitbit.
|
||||
Copyright (C) 2013 Thomas Park
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
+17
-4
@@ -100,19 +100,32 @@ module.exports = function(grunt) {
|
||||
less: {
|
||||
dev: {
|
||||
options: {
|
||||
paths: ['src', 'bower_components/bootstrap/less']
|
||||
paths: [
|
||||
'src',
|
||||
'bower_components',
|
||||
'bower_components/bootstrap',
|
||||
'bower_components/bootstrap/less',
|
||||
'bower_components/bootstrap-rtl-ondemand/less',
|
||||
'bower_components/eonasdan-bootstrap-datetimepicker/src/less',
|
||||
]
|
||||
},
|
||||
files: {
|
||||
'dist/<%= pkg.name %>.css': 'src/*.less'
|
||||
'dist/<%= pkg.name %>.css': 'src/sao.less'
|
||||
}
|
||||
},
|
||||
'default': {
|
||||
options: {
|
||||
paths: ['src', 'bower_components/bootstrap/less'],
|
||||
paths: [
|
||||
'src',
|
||||
'bower_components',
|
||||
'bower_components/bootstrap/less',
|
||||
'bower_components/bootstrap-rtl-ondemand/less',
|
||||
'bower_components/eonasdan-bootstrap-datetimepicker/src/less',
|
||||
],
|
||||
yuicompress: true
|
||||
},
|
||||
files: {
|
||||
'dist/<%= pkg.name %>.min.css': 'src/*.less'
|
||||
'dist/<%= pkg.name %>.min.css': 'src/sao.less'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+21
-8
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<html style="overflow: auto;" lang="en">
|
||||
<html style="overflow: auto;" lang="en" theme="default">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
@@ -23,9 +23,6 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<script type="text/javascript" src="bower_components/mousetrap/mousetrap.min.js"></script>
|
||||
<script type="text/javascript" src="bower_components/Sortable/Sortable.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="bower_components/bootstrap-rtl-ondemand/dist/css/bootstrap-rtl-ondemand.min.css">
|
||||
<link rel="stylesheet" href="bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css">
|
||||
<link rel="stylesheet" href="bower_components/c3/c3.min.css">
|
||||
<link rel="stylesheet" href="bower_components/fullcalendar/dist/fullcalendar.min.css">
|
||||
|
||||
@@ -42,7 +39,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<link rel="stylesheet" type="text/css" href="custom.css" media="screen"/>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0px;">
|
||||
<nav class="navbar navbar-inverse navbar-static-top" role="navigation" style="margin-bottom: 0px;">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed"
|
||||
@@ -50,7 +47,12 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="javascript:void(0)" data-toggle="offcanvas">
|
||||
<img class="icon" style="display:inline;" src="images/tryton-menu.svg"></img>
|
||||
<span class="icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span id="title">Tryton</span>
|
||||
</a>
|
||||
</div>
|
||||
@@ -59,9 +61,20 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</form>
|
||||
<ul class="nav navbar-nav navbar-right flip">
|
||||
<li id="user-preferences"></li>
|
||||
<li id="user-logout"></li>
|
||||
<li id="user-logout">
|
||||
<a href="#">
|
||||
<span class="icon hidden-xs">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="visible-xs">
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul id="tablist" class="nav navbar-nav nav-tabs nav-tabs-justified" role="tablist">
|
||||
<ul id="tablist" class="nav navbar-nav nav-pills" role="tablist">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+2
-3
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Input icons
|
||||
*/
|
||||
/* This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. */
|
||||
@import "variables";
|
||||
|
||||
.input-icon {
|
||||
|
||||
+2
-4
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* Off Canvas
|
||||
* --------------------------------------------------
|
||||
*/
|
||||
/* This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. */
|
||||
@import "variables";
|
||||
|
||||
@offcanvas-md: @screen-md-max;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/* This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. */
|
||||
@brand-primary: #267f82;
|
||||
@brand-success: #32ad52;
|
||||
@brand-info: #71bdc1;
|
||||
@brand-warning: #e78e42;
|
||||
@brand-danger: #e74842;
|
||||
|
||||
@state-selected-text: lighten(@brand-primary, 25%);
|
||||
@state-selected-bg: lighten(@brand-primary, 50%);
|
||||
@state-selected-border: darken(spin(@state-selected-bg, -10), 5%);
|
||||
|
||||
@input-border-focus: lighten(@brand-primary, 25%);
|
||||
|
||||
@navbar-inverse-bg: @brand-primary;
|
||||
|
||||
@navbar-inverse-link-color: lighten(@brand-primary, 30%);
|
||||
|
||||
@navbar-inverse-toggle-hover-bg: rgba(0,0,0,0.5);
|
||||
@navbar-inverse-toggle-icon-bar-bg: rgba(0,0,0,0.5);
|
||||
|
||||
@nav-tabs-justified-link-border-color: @nav-tabs-border-color;
|
||||
|
||||
@panel-default-text: #fff;
|
||||
@panel-default-heading-bg: @brand-primary;
|
||||
|
||||
@icon-font-path: "../bower_components/bootstrap/fonts/";
|
||||
|
||||
@font-size-small: @font-size-base;
|
||||
+9
-21
@@ -281,9 +281,9 @@ var Sao = {};
|
||||
Sao.config.display_size = 20;
|
||||
Sao.config.bug_url = 'https://bugs.tryton.org/';
|
||||
Sao.config.title = 'Tryton';
|
||||
Sao.config.icon_colors = '#3465a4,#555753,#cc0000'.split(',');
|
||||
Sao.config.calendar_colors = '#fff,#3465a4'.split(',');
|
||||
Sao.config.graph_color = '#3465a4';
|
||||
Sao.config.icon_colors = '#267f82,#3e4950,#e78e42'.split(',');
|
||||
Sao.config.calendar_colors = '#fff,#267f82'.split(',');
|
||||
Sao.config.graph_color = '#267f82';
|
||||
Sao.config.bus_timeout = 10 * 60 * 1000;
|
||||
|
||||
Sao.i18n = i18n();
|
||||
@@ -350,10 +350,6 @@ var Sao = {};
|
||||
Sao.Action.execute(action_id, {}, null, {});
|
||||
});
|
||||
Sao.set_title();
|
||||
Sao.common.ICONFACTORY.get_icon_url('tryton-menu')
|
||||
.then(function(url) {
|
||||
jQuery('.navbar-brand > img').attr('src', url);
|
||||
});
|
||||
var new_lang = preferences.language != Sao.i18n.getLocale();
|
||||
var prm = jQuery.Deferred();
|
||||
Sao.i18n.setlang(preferences.language).always(function() {
|
||||
@@ -572,7 +568,6 @@ var Sao = {};
|
||||
var session = Sao.Session.current_session;
|
||||
Sao.Tab.tabs.close(true).done(function() {
|
||||
jQuery('#user-preferences').empty();
|
||||
jQuery('#user-logout').empty();
|
||||
jQuery('#user-favorites').empty();
|
||||
jQuery('#global-search').empty();
|
||||
jQuery('#menu').empty();
|
||||
@@ -585,7 +580,6 @@ var Sao = {};
|
||||
Sao.Tab.tabs.close(true).done(function() {
|
||||
jQuery('#user-preferences').empty();
|
||||
jQuery('#user-favorites').empty();
|
||||
jQuery('#user-logout').empty();
|
||||
jQuery('#menu').empty();
|
||||
new Sao.Window.Preferences(function() {
|
||||
Sao.Session.current_session.reset_context();
|
||||
@@ -665,7 +659,6 @@ var Sao = {};
|
||||
Sao.user_menu = function(preferences) {
|
||||
jQuery('#user-preferences').empty();
|
||||
jQuery('#user-favorites').empty();
|
||||
jQuery('#user-logout').empty();
|
||||
jQuery('#user-preferences').append(jQuery('<a/>', {
|
||||
'href': '#',
|
||||
'title': preferences.status_bar,
|
||||
@@ -674,17 +667,12 @@ var Sao = {};
|
||||
Sao.preferences();
|
||||
}).text(preferences.status_bar));
|
||||
var title = Sao.i18n.gettext("Logout");
|
||||
jQuery('#user-logout').append(jQuery('<a/>', {
|
||||
'href': '#',
|
||||
'title': title,
|
||||
'aria-label': title,
|
||||
}).click(Sao.logout).append(
|
||||
Sao.common.ICONFACTORY.get_icon_img('tryton-exit', {
|
||||
'class': 'icon hidden-xs',
|
||||
'aria-hidden': true,
|
||||
})).append(jQuery('<span/>', {
|
||||
'class': 'visible-xs',
|
||||
}).text(title)));
|
||||
jQuery('#user-logout > a')
|
||||
.attr('title', title)
|
||||
.attr('aria-label', title)
|
||||
.off()
|
||||
.click(Sao.logout)
|
||||
.find('span:not(.icon)').text(title);
|
||||
};
|
||||
|
||||
Sao.main_menu_row_activate = function() {
|
||||
|
||||
+84
-12
@@ -1,5 +1,76 @@
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
/* This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. */
|
||||
@import "bootstrap";
|
||||
@import "bootstrap-rtl";
|
||||
@import "bootstrap-datetimepicker-build";
|
||||
@import "sao-variables";
|
||||
html[theme="default"] {
|
||||
@import "theme";
|
||||
}
|
||||
|
||||
// Fix double rtl prefix
|
||||
.float-rtl-grid-columns(@class, @rtl-prefix) {
|
||||
.col(@index) { // initial
|
||||
@item: ~".col-@{class}-@{index}";
|
||||
.col((@index + 1), @item);
|
||||
}
|
||||
.col(@index, @list) when (@index =< @grid-columns) { // general
|
||||
@item: ~".col-@{class}-@{index}";
|
||||
.col((@index + 1), ~"@{list}, @{item}");
|
||||
}
|
||||
.col(@index, @list) when (@index > @grid-columns) { // terminal
|
||||
@{list} {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.col(1); // kickstart it
|
||||
}
|
||||
|
||||
|
||||
.navbar-inverse {
|
||||
.close {
|
||||
color: @navbar-inverse-link-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-inverse-link-hover-color;
|
||||
background-color: @navbar-inverse-link-hover-bg;
|
||||
}
|
||||
}
|
||||
.active .close {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-inverse-link-active-color;
|
||||
background-color: @navbar-inverse-link-active-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar {
|
||||
.icon {
|
||||
display: inline-block;
|
||||
height: unit(@line-height-base, em);
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
.icon {
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
background-color: @brand-primary;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#tablist > li > a {
|
||||
> span {
|
||||
@@ -73,8 +144,8 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.list-group-item-variant(selected; @state-info-bg; @state-info-text);
|
||||
.table-row-variant(selected; @state-info-bg);
|
||||
.list-group-item-variant(selected; @state-selected-bg; @state-selected-text);
|
||||
.table-row-variant(selected; @state-selected-bg);
|
||||
/* Duplicate bootstrap variant to have precedence over selected */
|
||||
.table-row-variant(success; @state-success-bg);
|
||||
.table-row-variant(warning; @state-warning-bg);
|
||||
@@ -400,7 +471,7 @@ img.icon {
|
||||
display: inline-table;
|
||||
}
|
||||
table.form-container > tbody > tr > td {
|
||||
padding: 1px;
|
||||
padding: 2px;
|
||||
}
|
||||
table.form-hcontainer > tbody > tr > td {
|
||||
padding-top: 0px;
|
||||
@@ -523,6 +594,7 @@ img.icon {
|
||||
label {
|
||||
font-weight: normal;
|
||||
display: inline;
|
||||
padding: 0 5px;
|
||||
&.required {
|
||||
font-weight: bold;
|
||||
}
|
||||
@@ -534,7 +606,7 @@ img.icon {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.panel-heading {
|
||||
padding: 1px 1px;
|
||||
padding: 2px 2px;
|
||||
}
|
||||
fieldset.form-group_ {
|
||||
overflow: auto;
|
||||
@@ -573,12 +645,6 @@ input.column-boolean {
|
||||
.center-block();
|
||||
}
|
||||
|
||||
.form-boolean, .dict-boolean, .editabletree-boolean {
|
||||
input[type=checkbox] {
|
||||
width: initial;
|
||||
}
|
||||
}
|
||||
|
||||
.dict-label {
|
||||
text-align: right;
|
||||
text-align: end;
|
||||
@@ -756,6 +822,8 @@ input.column-boolean {
|
||||
transform: translateX(-50%);
|
||||
z-index: 1000;
|
||||
min-width: 50%;
|
||||
text-align: center;
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
|
||||
img.global-search-icon {
|
||||
@@ -767,3 +835,7 @@ img.favorite-icon {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
@import "input-icon";
|
||||
@import "offcanvas";
|
||||
@import (optional) "custom.less";
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
this.el.append(this.filter_box);
|
||||
this.filter_button = jQuery('<button/>', {
|
||||
type: 'button',
|
||||
'class': 'btn btn-default'
|
||||
'class': 'btn btn-link'
|
||||
}).text(Sao.i18n.gettext('Filters'));
|
||||
this.filter_button.click(this.search_box.bind(this));
|
||||
this.search_entry = jQuery('<input/>', {
|
||||
|
||||
+2
-1
@@ -164,7 +164,7 @@
|
||||
'class': 'toolbar panel-heading',
|
||||
'role': 'toolbar'
|
||||
}).append(jQuery('<div/>', {
|
||||
'class': 'container-fluid'
|
||||
'class': 'container-fluid navbar-inverse'
|
||||
}).append(jQuery('<div/>', {
|
||||
'class': 'dropdown navbar-header navbar-left flip'
|
||||
}).append(jQuery('<a/>', {
|
||||
@@ -1204,6 +1204,7 @@
|
||||
color = '';
|
||||
}
|
||||
badge.css('background-color', color);
|
||||
badge.css('color', '#fff');
|
||||
badge.text(text);
|
||||
button.attr('title', title);
|
||||
button.prop('disabled', disabled);
|
||||
|
||||
+568
@@ -0,0 +1,568 @@
|
||||
/* This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. */
|
||||
/* The MIT License (MIT)
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
@input-border-radius: 0;
|
||||
@input-border-radius-large: 0;
|
||||
@input-border-radius-small: 0;
|
||||
@input-bg-disabled: transparent;
|
||||
|
||||
.navbar {
|
||||
border: none;
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.3));
|
||||
}
|
||||
|
||||
#btn(@class, @bg) {
|
||||
.btn-@{class} {
|
||||
|
||||
&:focus,
|
||||
&:hover,
|
||||
&:active:hover {
|
||||
background-color: darken(@bg, 6%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: darken(@bg, 12%);
|
||||
#gradient > .radial(darken(@bg, 12%) 10%, @bg 11%);
|
||||
background-size: 1000% 1000%;
|
||||
.box-shadow(2px 2px 4px rgba(0,0,0,.4));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#btn(default, @btn-default-bg);
|
||||
#btn(primary, @btn-primary-bg);
|
||||
#btn(success, @btn-success-bg);
|
||||
#btn(info, @btn-info-bg);
|
||||
#btn(warning, @btn-warning-bg);
|
||||
#btn(danger, @btn-danger-bg);
|
||||
#btn(link, #fff);
|
||||
|
||||
.btn {
|
||||
text-transform: uppercase;
|
||||
border: none;
|
||||
.box-shadow(1px 1px 4px rgba(0,0,0,.4));
|
||||
.transition(all 0.4s);
|
||||
|
||||
&-link {
|
||||
border-radius: @btn-border-radius-base;
|
||||
.box-shadow(none);
|
||||
color: @btn-default-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
.box-shadow(none);
|
||||
color: @btn-default-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
&-default {
|
||||
|
||||
&.disabled {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-hover {
|
||||
> tbody > tr,
|
||||
> tbody > tr > th,
|
||||
> tbody > tr > td {
|
||||
.transition(all 0.2s);
|
||||
}
|
||||
}
|
||||
|
||||
textarea,
|
||||
textarea.form-control,
|
||||
input.form-control,
|
||||
input[type=text],
|
||||
input[type=password],
|
||||
input[type=email],
|
||||
input[type=number],
|
||||
[type=text].form-control,
|
||||
[type=password].form-control,
|
||||
[type=email].form-control,
|
||||
[type=tel].form-control,
|
||||
[contenteditable].form-control {
|
||||
padding: 0 5px;
|
||||
border: none;
|
||||
-webkit-appearance: none;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
|
||||
&:focus {
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
}
|
||||
|
||||
&[disabled],
|
||||
&[readonly] {
|
||||
.box-shadow(none);
|
||||
border-bottom: 2px dotted #ddd;
|
||||
}
|
||||
|
||||
&.input {
|
||||
&-sm {
|
||||
font-size: @font-size-small;
|
||||
}
|
||||
|
||||
&-lg {
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.input-group-lg > .form-control,
|
||||
.input-group-lg > .input-group-addon {
|
||||
padding: 0 5px;
|
||||
}
|
||||
.input-group-sm > .form-control,
|
||||
.input-group-sm > .input-group-addon {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
select,
|
||||
select.form-control {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
|
||||
background-size: 13px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
|
||||
&::-ms-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.input {
|
||||
&-sm {
|
||||
font-size: @font-size-small;
|
||||
}
|
||||
|
||||
&-lg {
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
&[multiple] {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
.radio,
|
||||
.radio-inline,
|
||||
.checkbox,
|
||||
.checkbox-inline {
|
||||
label {
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin-left: -25px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
.radio input[type="radio"],
|
||||
.radio-inline input[type="radio"] {
|
||||
position: relative;
|
||||
border: none;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
left: 50%;
|
||||
margin: auto;
|
||||
margin-left: -9px;
|
||||
border-radius: 50%;
|
||||
.transition(240ms);
|
||||
}
|
||||
|
||||
&.form-control:before,
|
||||
&.form-control:after {
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
background-color: @brand-primary;
|
||||
.scale(0);
|
||||
}
|
||||
|
||||
&:after {
|
||||
position: relative;
|
||||
border: 2px solid @gray;
|
||||
}
|
||||
|
||||
&:checked:before {
|
||||
.scale(0.5);
|
||||
}
|
||||
|
||||
&:disabled:checked:before {
|
||||
background-color: @gray-light;
|
||||
}
|
||||
|
||||
&:checked:after {
|
||||
border-color: @brand-primary;
|
||||
}
|
||||
|
||||
&:disabled:after,
|
||||
&[readonly]:after,
|
||||
&:disabled:checked:after,
|
||||
&[readonly]:checked:after {
|
||||
border-color: @gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
.checkbox input[type="checkbox"],
|
||||
.checkbox-inline input[type="checkbox"] {
|
||||
position: relative;
|
||||
border: none;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:focus:before {
|
||||
border-color: @brand-primary;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: auto;
|
||||
border: 2px solid @gray;
|
||||
border-radius: 2px;
|
||||
.transition(240ms);
|
||||
}
|
||||
|
||||
&.form-control:before {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
&:checked:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 50%;
|
||||
display: table;
|
||||
width: 6px;
|
||||
height: 12px;
|
||||
margin: auto;
|
||||
margin-left: -3px;
|
||||
border: 2px solid #fff;
|
||||
border-top-width: 0;
|
||||
border-left-width: 0;
|
||||
.rotate(45deg);
|
||||
}
|
||||
|
||||
&.form-control:after {
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
&:indeterminate:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -7px;
|
||||
transform: translate(0, -50%);
|
||||
width: 14px;
|
||||
height: 2px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
&:checked:before,
|
||||
&:indeterminate:before {
|
||||
background-color: @brand-primary;
|
||||
border-color: @brand-primary;
|
||||
}
|
||||
|
||||
&:disabled:before,
|
||||
&[readonly]:before {
|
||||
border-color: @gray-light;
|
||||
}
|
||||
|
||||
&:disabled:checked:before,
|
||||
&[readonly]:checked:before {
|
||||
background-color: @gray-light;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.form-boolean, .dict-boolean, .editabletree-boolean {
|
||||
input[type=checkbox] {
|
||||
width: default;
|
||||
}
|
||||
}
|
||||
|
||||
.has-warning {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-warning);
|
||||
}
|
||||
}
|
||||
|
||||
.has-error {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-danger);
|
||||
}
|
||||
}
|
||||
|
||||
.has-success {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-success);
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
> li > a,
|
||||
> li > a:focus {
|
||||
margin-right: 0;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
color: @navbar-default-link-color;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
.transition(all 0.2s);
|
||||
|
||||
&:hover {
|
||||
background-color: transparent;
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
& > li.active > a,
|
||||
& > li.active > a:focus {
|
||||
border: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
color: @brand-primary;
|
||||
|
||||
&:hover {
|
||||
border: none;
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
& > li.disabled > a {
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
}
|
||||
|
||||
&.nav-justified {
|
||||
|
||||
& > li > a,
|
||||
& > li > a:hover,
|
||||
& > li > a:focus,
|
||||
& > .active > a,
|
||||
& > .active > a:hover,
|
||||
& > .active > a:focus {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
margin-top: 0;
|
||||
border: none;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
}
|
||||
|
||||
.alert {
|
||||
border: none;
|
||||
color: #fff;
|
||||
|
||||
&-success {
|
||||
background-color: @brand-success;
|
||||
}
|
||||
|
||||
&-info {
|
||||
background-color: @brand-info;
|
||||
}
|
||||
|
||||
&-warning {
|
||||
background-color: @brand-warning;
|
||||
}
|
||||
|
||||
&-danger {
|
||||
background-color: @brand-danger;
|
||||
}
|
||||
|
||||
a:not(.close):not(.btn),
|
||||
.alert-link {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.close {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 4px 6px 4px;
|
||||
}
|
||||
|
||||
.progress {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 0;
|
||||
|
||||
.box-shadow(none);
|
||||
|
||||
&-bar {
|
||||
.box-shadow(none);
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&:before {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: -1;
|
||||
background-color: lighten(@progress-bar-bg, 35%);
|
||||
}
|
||||
}
|
||||
|
||||
&-success:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-success, 35%);
|
||||
}
|
||||
|
||||
&-info:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-info, 45%);
|
||||
}
|
||||
&-warning:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-warning, 35%);
|
||||
}
|
||||
|
||||
&-danger:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-danger, 25%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.close {
|
||||
font-size: 34px;
|
||||
font-weight: 300;
|
||||
line-height: inherit;
|
||||
opacity: 0.6;
|
||||
.transition(all 0.2s);
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.well {
|
||||
border-radius: 0;
|
||||
.box-shadow(none);
|
||||
}
|
||||
|
||||
.panel {
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
|
||||
&-heading {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&-footer {
|
||||
border-top: none;
|
||||
}
|
||||
}
|
||||
|
||||
.popover {
|
||||
border: none;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
}
|
||||
|
||||
.carousel {
|
||||
&-caption {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -695,7 +695,7 @@
|
||||
'selection': 9,
|
||||
'one2many': 5,
|
||||
'many2many': 5,
|
||||
'boolean': 2,
|
||||
'boolean': 3,
|
||||
'binary': 20,
|
||||
}[column.attributes.widget] || 10;
|
||||
var factor = 1;
|
||||
|
||||
Reference in new issue
Block a user