Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
import Vue from 'vue'; |
|
|
|
import ContextPopup from '../components/ContextPopup.vue'; |
|
import {parseIssueHref} from '../utils.js'; |
|
|
|
export default function initContextPopups() { |
|
const refIssues = $('.ref-issue'); |
|
if (!refIssues.length) return; |
|
|
|
refIssues.each(function () { |
|
if ($(this).hasClass('ref-external-issue')) { |
|
return; |
|
} |
|
|
|
const {owner, repo, index} = parseIssueHref($(this).attr('href')); |
|
if (!owner) return; |
|
|
|
const el = document.createElement('div'); |
|
el.className = 'ui custom popup hidden'; |
|
el.innerHTML = '<div></div>'; |
|
this.parentNode.insertBefore(el, this.nextSibling); |
|
|
|
const View = Vue.extend({ |
|
render: (createElement) => createElement(ContextPopup), |
|
}); |
|
|
|
const view = new View(); |
|
|
|
try { |
|
view.$mount(el.firstChild); |
|
} catch (err) { |
|
console.error(err); |
|
el.textContent = 'ContextPopup failed to load'; |
|
} |
|
|
|
$(this).popup({ |
|
variation: 'wide', |
|
delay: { |
|
show: 250 |
|
}, |
|
onShow: () => { |
|
view.$emit('load-context-popup', {owner, repo, index}, () => { |
|
$(this).popup('reposition'); |
|
}); |
|
}, |
|
popup: $(el), |
|
}); |
|
}); |
|
}
|
|
|