summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2018-08-23 12:17:01 +0200
committerqsm-odoo <qsm@odoo.com>2018-08-23 16:45:40 +0200
commit9fc771dd5d1e023978d7b4691126ba3bcedc19d8 (patch)
tree00cfb849370827d78ef78b5a0ee30d89bd27918c /addons/web/static/src
parent6fd68c28cde6e2cf4994de5893bb004cc0476690 (diff)
[FIX] web: BS4, restore slider checkboxes
Take advantage of the new BS4 checkbox structure to simplify the widget too.
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js25
-rw-r--r--addons/web/static/src/scss/webclient.scss64
2 files changed, 33 insertions, 56 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 3bc6cfe4b84..d56aa02c03d 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -2006,32 +2006,10 @@ var FieldBooleanButton = AbstractField.extend({
});
var BooleanToggle = FieldBoolean.extend({
+ className: FieldBoolean.prototype.className + ' o_boolean_toggle',
events: {
'click': '_onClick'
},
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * @override
- * @private
- */
- _render: function () {
- this._super.apply(this, arguments);
- this._renderToggleSwitch();
- },
-
- /**
- * Display toggle switch
- *
- * @private
- */
- _renderToggleSwitch: function () {
- this.$el.addClass("o_boolean_toggle");
- var $div = $('<div class="slider"></div>');
- $div.insertAfter(this.$("input[type=checkbox]"));
- },
//--------------------------------------------------------------------------
// Handlers
@@ -2048,7 +2026,6 @@ var BooleanToggle = FieldBoolean.extend({
this._setValue(!this.value);
this.$el.closest(".o_data_row").toggleClass('text-muted', this.value);
},
-
});
var StatInfo = AbstractField.extend({
diff --git a/addons/web/static/src/scss/webclient.scss b/addons/web/static/src/scss/webclient.scss
index 7b7162d986a..3c8df0c912b 100644
--- a/addons/web/static/src/scss/webclient.scss
+++ b/addons/web/static/src/scss/webclient.scss
@@ -73,43 +73,43 @@
}
// Boolean Toggle widget
-div.o_boolean_toggle {
- position: relative;
- display: inline-block;
- width: 32px !important;
- height: 18px;
+div.o_boolean_toggle.custom-control.custom-checkbox {
+ $line-height-computed: $line-height-base * $font-size-base;
+ $slider-width: $line-height-computed * 1.5;
+ $circle-width: $line-height-computed * 0.6;
- > input {
- display: none;
- }
+ display: inline-block;
+ padding-left: $slider-width + 0.25rem;
- .slider {
- position: absolute;
- cursor: pointer;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: #a0a0a0;
- border-radius: 24px;
-
- &:before {
- position: absolute;
+ > label.custom-control-label {
+ &::before, &::after {
content: "";
- height: 12px;
- width: 12px;
- left: 3px;
- bottom: 3px;
- background-color: white;
- border-radius: 50%;
+ top: 0;
+ left: -($slider-width + 0.25rem);
+ }
+ &::before {
+ width: $slider-width;
+ height: 100%;
+ background-color: #a0a0a0 !important;
+ border-radius: 100px;
+ outline: none !important;
+ }
+ &::after {
+ transform: translate($line-height-computed * 0.2, $line-height-computed * 0.2);
+ width: ceil($circle-width / 1rem * $o-root-font-size);
+ height: ceil($circle-width / 1rem * $o-root-font-size);
+ border-radius: 100px;
+ background-color: $white;
+ cursor: pointer;
}
}
-
- > input:checked + .slider {
- background-color: $o-brand-primary;
-
- &:before {
- transform: translate(14px, 0px);
+ > input.custom-control-input:checked + label.custom-control-label {
+ &::before {
+ background-color: $o-brand-primary !important;
+ }
+ &::after {
+ transform: translate($slider-width - $circle-width - $line-height-computed * 0.2, $line-height-computed * 0.2);
+ background-image: none;
}
}
}