From d1030754628b5ad777137c708a7c6c5399741388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Sat, 4 May 2019 01:11:01 +0200 Subject: [PATCH] [12.0][IMP] web_widget_color: Allow non-required fields --- web_widget_color/static/src/js/widget.js | 26 ++++++++++++++++------ web_widget_color/static/src/xml/widget.xml | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/web_widget_color/static/src/js/widget.js b/web_widget_color/static/src/js/widget.js index 64d8a22e..625ea175 100644 --- a/web_widget_color/static/src/js/widget.js +++ b/web_widget_color/static/src/js/widget.js @@ -1,10 +1,11 @@ -/* Global jscolor */ -odoo.define('web.web_widget_color', function(require) { +/* global jscolor */ +odoo.define('web.web_widget_color', function (require) { "use strict"; var basic_fields = require('web.basic_fields'); var field_registry = require('web.field_registry'); var ListRenderer = require('web.ListRenderer'); + var pyUtils = require('web.py_utils'); var FieldColor = basic_fields.FieldChar.extend({ template: 'FieldColor', @@ -14,9 +15,19 @@ odoo.define('web.web_widget_color', function(require) { // Do Nothing }, - _renderEdit: function() { + _renderEdit: function () { + var isRequired = false; + if ('required' in this.attrs) { + isRequired = pyUtils.py_eval(this.attrs.required); + } else { + isRequired = this.field.required; + } this.$input = this.$el.find('input'); - this.jscolor = new jscolor(this.$input[0], {hash:true, zIndex: 2000}); + this.jscolor = new jscolor(this.$input[0], { + hash: true, + zIndex: 2000, + required: isRequired, + }); }, }); field_registry.add('color', FieldColor); @@ -30,15 +41,16 @@ odoo.define('web.web_widget_color', function(require) { var recordWidgets = this.allFieldWidgets[record.id]; canUnselect = !_.some(recordWidgets, function (widget) { var $el = widget.getFocusableElement(); - return ($el instanceof jQuery && $el.hasClass('jscolor-active')); + return $el instanceof jQuery && + $el.hasClass('jscolor-active'); }); } if (canUnselect) { return this._super.apply(this, arguments); - } else { - return $.Deferred().resolve(); } + + return $.Deferred().resolve(); }, }); diff --git a/web_widget_color/static/src/xml/widget.xml b/web_widget_color/static/src/xml/widget.xml index d7cd7e57..ecc7fdfc 100644 --- a/web_widget_color/static/src/xml/widget.xml +++ b/web_widget_color/static/src/xml/widget.xml @@ -8,7 +8,7 @@ t-att-autofocus="widget.attrs.autofocus" t-att-placeholder="widget.attrs.placeholder" t-att-maxlength="widget.field.size" - t-att-value="widget.value" + t-att-value="widget.value or ''" class="o_input" t-if="widget.mode !== 'readonly'"/>