Переглянути джерело

emoji: Listen for clicks on a larger surface area

JC Brand 8 роки тому
батько
коміт
8c4f6ffe03
2 змінених файлів з 9 додано та 5 видалено
  1. 8 4
      src/converse-chatview.js
  2. 1 1
      src/templates/emojis.html

+ 8 - 4
src/converse-chatview.js

@@ -125,8 +125,8 @@
             _converse.EmojiPickerView = Backbone.View.extend({
             _converse.EmojiPickerView = Backbone.View.extend({
                 className: 'emoji-picker-container toolbar-menu collapsed',
                 className: 'emoji-picker-container toolbar-menu collapsed',
                 events: {
                 events: {
-                    'click .emoji-category-picker li a.pick-category': 'chooseCategory',
-                    'click .emoji-category-picker li a.pick-skintone': 'chooseSkinTone'
+                    'click .emoji-category-picker li.emoji-category': 'chooseCategory',
+                    'click .emoji-category-picker li.emoji-skintone': 'chooseSkinTone'
                 },
                 },
 
 
                 initialize () {
                 initialize () {
@@ -191,7 +191,9 @@
                 chooseSkinTone (ev) {
                 chooseSkinTone (ev) {
                     ev.preventDefault();
                     ev.preventDefault();
                     ev.stopPropagation();
                     ev.stopPropagation();
-                    const skintone = ev.target.parentElement.getAttribute("data-skintone").trim();
+                    const target = ev.target.nodeName === 'IMG' ?
+                        ev.target.parentElement : ev.target;
+                    const skintone = target.getAttribute("data-skintone").trim();
                     if (this.model.get('current_skintone') === skintone) {
                     if (this.model.get('current_skintone') === skintone) {
                         this.model.set({'current_skintone': ''});
                         this.model.set({'current_skintone': ''});
                     } else {
                     } else {
@@ -202,7 +204,9 @@
                 chooseCategory (ev) {
                 chooseCategory (ev) {
                     ev.preventDefault();
                     ev.preventDefault();
                     ev.stopPropagation();
                     ev.stopPropagation();
-                    const category = ev.target.parentElement.getAttribute("data-category").trim();
+                    const target = ev.target.nodeName === 'IMG' ?
+                        ev.target.parentElement : ev.target;
+                    const category = target.getAttribute("data-category").trim();
                     this.model.set({
                     this.model.set({
                         'current_category': category,
                         'current_category': category,
                         'scroll_position': 0
                         'scroll_position': 0

+ 1 - 1
src/templates/emojis.html

@@ -16,7 +16,7 @@
     {[ }); ]}
     {[ }); ]}
 
 
     {[ _.forEach(skintones, function (skintone) { ]}
     {[ _.forEach(skintones, function (skintone) { ]}
-        <li data-category="{{{skintone}}}" class="emoji-skintone {[ if (current_skintone === skintone) { ]} picked {[ } ]}">
+        <li data-skintone="{{{skintone}}}" class="emoji-skintone {[ if (current_skintone === skintone) { ]} picked {[ } ]}">
             <a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ transform(':'+skintone+':') }} </a>
             <a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ transform(':'+skintone+':') }} </a>
         </li>
         </li>
     {[ }); ]}
     {[ }); ]}