Skip to content

Commit 15fb0c2

Browse files
Fix #23: Added to vue instance the plugin name without $.
1 parent 1d5f04f commit 15fb0c2

File tree

2 files changed

+73
-48
lines changed

2 files changed

+73
-48
lines changed

src/types/index.d.ts

Lines changed: 61 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,74 @@
11
import Vue, { PluginFunction } from 'vue';
22

33
export class VueIzitoast {
4-
constructor(options?: VueIzitoastOptions);
5-
6-
static install(): PluginFunction<any>;
7-
static init(Vue: Vue): void;
8-
9-
public show(message: string, title: string, options: VueIzitoastOptions): void;
10-
public hide(toast: string | HTMLDivElement | null, options: VueIzitoastOptions): void;
11-
public progress(toast: string | HTMLDivElement | null, options: VueIzitoastOptions, callback: () => void): void;
12-
public destroy(): void;
13-
public info(message: string, title: string, options: VueIzitoastOptions): void;
14-
public success(message: string, title: string, options: VueIzitoastOptions): void;
15-
public warning(message: string, title: string, options: VueIzitoastOptions): void;
16-
public error(message: string, title: string, options: VueIzitoastOptions): void;
17-
public question(message: string, title: string, options: VueIzitoastOptions): void;
18-
public on<CB>(eventName: string, callback: CB): void;
19-
public off<CB>(eventName: string, callback: CB): void;
4+
constructor(options?: VueIzitoastOptions);
5+
6+
static install(): PluginFunction<any>;
7+
8+
static init(Vue: Vue): void;
9+
10+
public show(message: string, title: string, options: VueIzitoastOptions): void;
11+
12+
public hide(toast: string | HTMLDivElement | null, options: VueIzitoastOptions): void;
13+
14+
public progress(toast: string | HTMLDivElement | null, options: VueIzitoastOptions, callback: () => void): void;
15+
16+
public destroy(): void;
17+
18+
public info(message: string, title: string, options: VueIzitoastOptions): void;
19+
20+
public success(message: string, title: string, options: VueIzitoastOptions): void;
21+
22+
public warning(message: string, title: string, options: VueIzitoastOptions): void;
23+
24+
public error(message: string, title: string, options: VueIzitoastOptions): void;
25+
26+
public question(message: string, title: string, options: VueIzitoastOptions): void;
27+
28+
public on<CB>(eventName: string, callback: CB): void;
29+
30+
public off<CB>(eventName: string, callback: CB): void;
2031
}
2132

2233
export interface VueIzitoastOptions {
23-
zindex: number;
24-
layout: number;
25-
balloon: boolean;
26-
close: boolean;
27-
closeOnEscape: boolean;
28-
rtl: boolean;
29-
position: string;
30-
timeout: number;
31-
animateInside: boolean;
32-
drag: boolean;
33-
pauseOnHover: boolean;
34-
resetOnHover: boolean;
35-
transitionIn: string;
36-
transitionOut: string;
37-
transitionInMobile: string;
38-
transitionOutMobile: string;
39-
buttons: unknown;
40-
inputs: unknown;
41-
onOpening: () => void;
42-
onOpened: () => void;
43-
onClosing: () => void;
44-
onClosed: () => void;
34+
zindex: number;
35+
layout: number;
36+
balloon: boolean;
37+
close: boolean;
38+
closeOnEscape: boolean;
39+
rtl: boolean;
40+
position: string;
41+
timeout: number;
42+
animateInside: boolean;
43+
drag: boolean;
44+
pauseOnHover: boolean;
45+
resetOnHover: boolean;
46+
transitionIn: string;
47+
transitionOut: string;
48+
transitionInMobile: string;
49+
transitionOutMobile: string;
50+
buttons: unknown;
51+
inputs: unknown;
52+
onOpening: () => void;
53+
onOpened: () => void;
54+
onClosing: () => void;
55+
onClosed: () => void;
4556
}
4657

58+
// https://vuejs.org/v2/guide/typescript.html#Augmenting-Types-for-Use-with-Plugins
4759
declare module 'vue/types/vue' {
48-
interface Vue {
49-
$toast: VueIzitoast;
50-
__$VueIzitoastInstance: VueIzitoast;
51-
}
60+
interface Vue {
61+
$toast: VueIzitoast;
62+
__$VueIzitoastInstance: VueIzitoast;
63+
}
64+
65+
interface VueConstructor {
66+
toast: VueIzitoast;
67+
}
5268
}
5369

5470
declare module 'vue/types/options' {
55-
interface ComponentOptions<V extends Vue> {
56-
vueIzitoastSettings?: VueIzitoastOptions | VueIzitoast
57-
}
71+
interface ComponentOptions<V extends Vue> {
72+
vueIzitoastSettings?: VueIzitoastOptions | VueIzitoast
73+
}
5874
}

src/vue-izitoast.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export default class VueIziToast {
6161
_izi = iziToast;
6262

6363
// Public Variables
64-
accessorName = '$toast';
64+
accessorName = 'toast';
6565
initialized = false;
6666

6767
constructor(options = {}) {
@@ -188,6 +188,15 @@ export function install(Vue, options = {}) {
188188
return;
189189
}
190190

191+
const newInstance = new VueIziToast(options);
192+
193+
/**
194+
* VueIziToast set 'toast' at Vue protoype object.
195+
*/
196+
Object.defineProperty(Vue.prototype, newInstance.accessorName, {
197+
get() { return newInstance; }
198+
});
199+
191200
Vue.mixin({
192201
/**
193202
* VueIziToast init hook, injected into each instances init hooks list.
@@ -200,13 +209,13 @@ export function install(Vue, options = {}) {
200209
instance = parent.__$VueIziToastInstance;
201210
instance.init(Vue);
202211
} else {
203-
instance = new VueIziToast(options);
212+
instance = newInstance;
204213
}
205214

206215
if (instance) {
207216
// Store helper for internal use
208217
this.__$VueIziToastInstance = instance;
209-
this[instance.accessorName] = instance;
218+
this[`$${instance.accessorName}`] = instance;
210219
}
211220
}
212221
});

0 commit comments

Comments
 (0)