blob: 555594553435c62cd4c9d62b0c04ff122d35cbae [file] [log] [blame]
Faris Ansari019bfd392018-08-26 20:08:40 +05301import Vue from 'vue/dist/vue.js';
2Vue.prototype.__ = window.__;
3Vue.prototype.frappe = window.frappe;
4
5Vue.directive('route', {
6 bind(el, binding) {
7 const route = binding.value;
8 el.classList.add('cursor-pointer');
9 el.addEventListener('click', () => frappe.set_route(route));
10 },
11 unbind(el) {
12 el.classList.remove('cursor-pointer');
13 }
14});
15
16const handleImage = (el, src) => {
17 let img = new Image();
18 // add loading class
19 el.src = '';
20 el.classList.add('img-loading');
21
22 img.onload = () => {
23 // image loaded, remove loading class
24 el.classList.remove('img-loading');
25 // set src
26 el.src = src;
27 }
28 img.onerror = () => {
29 el.classList.remove('img-loading');
30 el.classList.add('no-image');
31 el.src = null;
32 }
33 img.src = src;
34}
35
36Vue.directive('img-src', {
37 bind(el, binding) {
38 handleImage(el, binding.value);
39 },
40 update(el, binding) {
41 if (binding.value === binding.oldValue) return;
42 handleImage(el, binding.value);
43 }
44});