UNPKG

894 BJavaScriptView Raw
1/**
2 * Bind after-leave event for vue instance. Make sure after-leave is called in any browsers.
3 *
4 * @param {Vue} instance Vue instance.
5 * @param {Function} callback callback of after-leave event
6 * @param {Number} speed the speed of transition, default value is 300ms
7 * @param {Boolean} once weather bind after-leave once. default value is false.
8 */
9export default function(instance, callback, speed = 300, once = false) {
10 if (!instance || !callback) throw new Error('instance & callback is required');
11 let called = false;
12 const afterLeaveCallback = function() {
13 if (called) return;
14 called = true;
15 if (callback) {
16 callback.apply(null, arguments);
17 }
18 };
19 if (once) {
20 instance.$once('after-leave', afterLeaveCallback);
21 } else {
22 instance.$on('after-leave', afterLeaveCallback);
23 }
24 setTimeout(() => {
25 afterLeaveCallback();
26 }, speed + 100);
27};