Commit bf599f39 authored by JC Brand's avatar JC Brand

emoji-views: reinitialize intersection observer upon rerender

parent 42ec0037
...@@ -153,7 +153,6 @@ converse.plugins.add('converse-emoji-views', { ...@@ -153,7 +153,6 @@ converse.plugins.add('converse-emoji-views', {
this.model.on('change:current_category', this.render, this); this.model.on('change:current_category', this.render, this);
await _converse.api.waitUntil('emojisInitialized'); await _converse.api.waitUntil('emojisInitialized');
this.render(); this.render();
this.initIntersectionObserver();
_converse.api.trigger('emojiPickerViewInitialized'); _converse.api.trigger('emojiPickerViewInitialized');
}, },
...@@ -176,6 +175,10 @@ converse.plugins.add('converse-emoji-views', { ...@@ -176,6 +175,10 @@ converse.plugins.add('converse-emoji-views', {
return html; return html;
}, },
afterRender () {
this.initIntersectionObserver();
},
filter (value, set_property) { filter (value, set_property) {
this.model.set({'query': value}); this.model.set({'query': value});
if (set_property) { if (set_property) {
...@@ -212,14 +215,18 @@ converse.plugins.add('converse-emoji-views', { ...@@ -212,14 +215,18 @@ converse.plugins.add('converse-emoji-views', {
if (!window.IntersectionObserver) { if (!window.IntersectionObserver) {
return; return;
} }
const options = { if (this.observer) {
root: this.el.querySelector('.emoji-picker__lists'), this.observer.disconnect();
rootMargin: '0px', } else {
threshold: [0.1, 0.2, 0.3, 0.4, 0.5] const options = {
root: this.el.querySelector('.emoji-picker__lists'),
rootMargin: '0px',
threshold: [0.1, 0.2, 0.3, 0.4, 0.5]
}
const handler = debounce((ev) => this.setCategoryOnVisibilityChange(ev), 200);
this.observer = new IntersectionObserver(handler, options);
} }
const handler = debounce((ev) => this.setCategoryOnVisibilityChange(ev), 200); sizzle('.emoji-picker', this.el).forEach(a => this.observer.observe(a));
const observer = new IntersectionObserver(handler, options);
sizzle('.emoji-picker', this.el).forEach(a => observer.observe(a));
}, },
onKeyDown (ev) { onKeyDown (ev) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment