diff options
| author | qsm-odoo <qsm@odoo.com> | 2018-08-27 11:01:30 +0530 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2018-08-27 17:12:56 +0200 |
| commit | d5786447567b05e85edd43dbefe8e82f22dc2129 (patch) | |
| tree | b5f5e45eb5aa58c42967f1ade50714dcb77aeb02 /addons/web/static/src | |
| parent | 8ba517bfa8cce4e3f6f72ea68b24e23cdc5eb095 (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.js | 12 | ||||
| -rw-r--r-- | addons/web/static/src/scss/fields.scss | 16 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 16 |
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> |
