blob: 439c1f24e21c2cf9dc40b70ed794834834e8462d [file] [log] [blame]
Faris Ansari019bfd392018-08-26 20:08:40 +05301import Vue from 'vue/dist/vue.js';
Prateeksha Singhd0a952b2018-08-27 10:12:45 +05302
3// Global components
4import ItemCardsContainer from './components/ItemCardsContainer.vue';
5import SectionHeader from './components/SectionHeader.vue';
6import SearchInput from './components/SearchInput.vue';
7import DetailView from './components/DetailView.vue';
8import DetailHeaderItem from './components/DetailHeaderItem.vue';
9import EmptyState from './components/EmptyState.vue';
10
Faris Ansari019bfd392018-08-26 20:08:40 +053011Vue.prototype.__ = window.__;
12Vue.prototype.frappe = window.frappe;
13
Prateeksha Singhd0a952b2018-08-27 10:12:45 +053014Vue.component('item-cards-container', ItemCardsContainer);
15Vue.component('section-header', SectionHeader);
16Vue.component('search-input', SearchInput);
17Vue.component('detail-view', DetailView);
18Vue.component('detail-header-item', DetailHeaderItem);
19Vue.component('empty-state', EmptyState);
20
Faris Ansari019bfd392018-08-26 20:08:40 +053021Vue.directive('route', {
22 bind(el, binding) {
23 const route = binding.value;
Faris Ansarif089dad2018-08-26 22:20:16 +053024 if (!route) return;
Faris Ansari019bfd392018-08-26 20:08:40 +053025 el.classList.add('cursor-pointer');
Faris Ansarif089dad2018-08-26 22:20:16 +053026 el.dataset.route = route;
Faris Ansari019bfd392018-08-26 20:08:40 +053027 el.addEventListener('click', () => frappe.set_route(route));
28 },
29 unbind(el) {
30 el.classList.remove('cursor-pointer');
31 }
32});
33
34const handleImage = (el, src) => {
35 let img = new Image();
36 // add loading class
37 el.src = '';
38 el.classList.add('img-loading');
39
40 img.onload = () => {
41 // image loaded, remove loading class
42 el.classList.remove('img-loading');
43 // set src
44 el.src = src;
45 }
46 img.onerror = () => {
47 el.classList.remove('img-loading');
48 el.classList.add('no-image');
49 el.src = null;
50 }
51 img.src = src;
52}
53
54Vue.directive('img-src', {
55 bind(el, binding) {
56 handleImage(el, binding.value);
57 },
58 update(el, binding) {
59 if (binding.value === binding.oldValue) return;
60 handleImage(el, binding.value);
61 }
62});
Suraj Shetty49c37d52018-08-27 20:31:29 +053063
64Vue.filter('striphtml', function (text) {
Faris Ansariad0be6a2018-09-03 15:42:00 +053065 return strip_html(text || '');
Suraj Shetty49c37d52018-08-27 20:31:29 +053066});