summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2018-08-27 11:01:30 +0530
committerqsm-odoo <qsm@odoo.com>2018-08-27 17:12:56 +0200
commitd5786447567b05e85edd43dbefe8e82f22dc2129 (patch)
treeb5f5e45eb5aa58c42967f1ade50714dcb77aeb02 /addons/web/static/src
parent8ba517bfa8cce4e3f6f72ea68b24e23cdc5eb095 (diff)
[FIX] web, *: use correct DOM for m2m tags
* mail, calendar - Fix traceback when clicking on a tag without color field (introduced in recent changes) - Properly allow to delete tags on firefox (a button obviously cannot contain another button) Closes https://github.com/odoo/odoo/pull/26547 Thanks to @hbh-odoo
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js12
-rw-r--r--addons/web/static/src/scss/fields.scss16
-rw-r--r--addons/web/static/src/xml/base.xml16
3 files changed, 31 insertions, 13 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 7683cd6db94..9f958ec57e0 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -1841,6 +1841,7 @@ var FieldMany2ManyTags = AbstractField.extend({
* @param {MouseEvent} event
*/
_onDeleteTag: function (event) {
+ event.preventDefault();
event.stopPropagation();
this._removeTag($(event.target).parent().data('id'));
},
@@ -1886,7 +1887,7 @@ var FieldMany2ManyTags = AbstractField.extend({
var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({
events: _.extend({}, FieldMany2ManyTags.prototype.events, {
- 'click .badge': '_onOpenColorPicker',
+ 'click .dropdown-toggle': '_onOpenColorPicker',
'mousedown .o_colorpicker a': '_onUpdateColor',
'mousedown .o_colorpicker .o_hide_in_kanban': '_onUpdateColor',
'focusout .o_colorpicker': '_onCloseColorPicker',
@@ -1907,8 +1908,9 @@ var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({
* @param {MouseEvent} ev
*/
_onOpenColorPicker: function (ev) {
- var tagID = $(ev.currentTarget).data('id');
- var tagColor = $(ev.currentTarget).data('color');
+ ev.preventDefault();
+ var tagID = $(ev.currentTarget).parent().data('id');
+ var tagColor = $(ev.currentTarget).parent().data('color');
var tag = _.findWhere(this.value.data, { res_id: tagID });
if (tag && this.colorField in tag.data) { // if there is a color field on the related model
this.$color_picker = $(qweb.render('FieldMany2ManyTag.colorpicker', {
@@ -1937,8 +1939,8 @@ var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({
var $target = $(ev.currentTarget);
var color = $target.data('color');
var id = $target.data('id');
- var tag = this.$("button.badge[data-id='" + id + "']");
- var currentColor = tag.data('color');
+ var $tag = this.$(".badge[data-id='" + id + "']");
+ var currentColor = $tag.data('color');
var changes = {};
if ($target.is('.o_hide_in_kanban')) {
diff --git a/addons/web/static/src/scss/fields.scss b/addons/web/static/src/scss/fields.scss
index 3681c38eb47..f85fd04d505 100644
--- a/addons/web/static/src/scss/fields.scss
+++ b/addons/web/static/src/scss/fields.scss
@@ -99,15 +99,21 @@
flex: 0 0 auto;
border: 0;
font-size: 12px;
- color: white;
cursor: pointer;
+ user-select: none;
+
+ a {
+ color: inherit;
+ }
- > .o_badge_text {
+ .o_badge_text {
@include o-text-overflow(inline-block);
max-width: 200px;
+ color: inherit;
}
.o_delete {
+ color: inherit;
cursor: pointer;
}
}
@@ -168,13 +174,15 @@
} @else {
&, &::after {
background-color: nth($o-colors, $size);
+ color: $white;
}
}
}
}
- > .o_tag_error{
+ .o_tag_error {
box-shadow: inset 0 0 0 2px #FF0000;
- > .o_delete {
+
+ .o_delete {
color: #FF0000;
}
}
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 9b6ef0099d5..e1c74db4645 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -833,11 +833,19 @@
<t t-foreach="elements" t-as="el">
<t t-set="color" t-value="el[colorField] || 0"/>
<t t-set="colornames" t-value="['No color', 'Red', 'Orange', 'Yellow', 'Light blue', 'Dark purple', 'Salmon pink', 'Medium blue', 'Dark blue', 'Fushia', 'Green', 'Purple']"/>
- <div class="dropdown">
- <button t-attf-class="badge badge-pill dropdown-toggle o-no-caret o_tag_color_#{color}" data-toggle="dropdown" t-att-data-color="color" t-att-data-index="el_index" t-att-data-id="el.id" t-attf-title="Tag color: #{colornames[color]}">
+ <div t-attf-class="badge badge-pill dropdown o_tag_color_#{color}" t-att-data-color="color" t-att-data-index="el_index" t-att-data-id="el.id" t-attf-title="Tag color: #{colornames[color]}">
+ <t t-set="_badge_text">
<span class="o_badge_text" t-att-title="el.display_name"><span role="img" t-attf-aria-label="Tag color: #{colornames[color]}"/><t t-esc="el.display_name"/></span>
- <a t-if="!readonly" class="fa fa-times o_delete" title="Delete" aria-label="Delete"/>
- </button>
+ </t>
+ <t t-if="colorField">
+ <a href="#" class="dropdown-toggle o-no-caret" data-toggle="dropdown">
+ <t t-raw="_badge_text"/>
+ </a>
+ </t>
+ <t t-else="">
+ <t t-raw="_badge_text"/>
+ </t>
+ <a t-if="!readonly" href="#" class="fa fa-times o_delete" title="Delete" aria-label="Delete"/>
</div>
</t>
</t>