From c9f8c896e654f074a34acaf612a8d79a826c4623 Mon Sep 17 00:00:00 2001 From: doutatsu <doutatsu@gmail.com> Date: Thu, 21 Sep 2023 11:45:56 +0300 Subject: [PATCH] Allow setting a destroy delay Destroying a carousel can appear as a visual bug in certain situations, due to transitions and the likes. By providing an ability to delay carousel destroy, users can wait for whatever is interfering to finish it's work and then destroy the carousel --- dist/js/vue-splide.cjs.js | 6 ++++-- dist/js/vue-splide.esm.js | 6 ++++-- src/js/components/Splide/Splide.vue | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/dist/js/vue-splide.cjs.js b/dist/js/vue-splide.cjs.js index 78ca348..4dbd7cb 100644 --- a/dist/js/vue-splide.cjs.js +++ b/dist/js/vue-splide.cjs.js @@ -2689,8 +2689,10 @@ const _sfc_main$1 = vue.defineComponent({ } }); vue.onBeforeUnmount(() => { - var _a; - (_a = splide.value) == null ? void 0 : _a.destroy(); + setTimeout(() => { + var _a; + (_a = splide.value) == null ? void 0 : _a.destroy(); + }, props.options.destroyDelay || 0); }); vue.watch(() => merge({}, props.options), (options) => { if (splide.value) { diff --git a/dist/js/vue-splide.esm.js b/dist/js/vue-splide.esm.js index 72c24de..42ca56f 100644 --- a/dist/js/vue-splide.esm.js +++ b/dist/js/vue-splide.esm.js @@ -2687,8 +2687,10 @@ const _sfc_main$1 = defineComponent({ } }); onBeforeUnmount(() => { - var _a; - (_a = splide.value) == null ? void 0 : _a.destroy(); + setTimeout(() => { + var _a; + (_a = splide.value) == null ? void 0 : _a.destroy(); + }, props.options.destroyDelay || 0); }); watch(() => merge({}, props.options), (options) => { if (splide.value) { diff --git a/src/js/components/Splide/Splide.vue b/src/js/components/Splide/Splide.vue index adf982b..ae72004 100644 --- a/src/js/components/Splide/Splide.vue +++ b/src/js/components/Splide/Splide.vue @@ -76,7 +76,9 @@ export default defineComponent( { } ); onBeforeUnmount( () => { - splide.value?.destroy(); + setTimeout(() => { + splide.value?.destroy(); + }, props.options.destroyDelay || 0); } ); watch( () => merge( {}, props.options ), options => {