diff --git a/demo/components/demos/peeking/cloning.vue b/demo/components/demos/peeking/cloning.vue index 71c496d..6be68dd 100644 --- a/demo/components/demos/peeking/cloning.vue +++ b/demo/components/demos/peeking/cloning.vue @@ -1,10 +1,12 @@ diff --git a/demo/content/peeking.md b/demo/content/peeking.md index 50afd4a..61730ea 100644 --- a/demo/content/peeking.md +++ b/demo/content/peeking.md @@ -41,10 +41,12 @@ Note how there is only one more slide than the amount we're showing per page. Th ```vue - - - - + + diff --git a/index.js b/index.js index a6a1074..3736e3a 100644 --- a/index.js +++ b/index.js @@ -671,6 +671,11 @@ interactiveSelector = 'a, button, input, textarea, select'; if (isPeekingClone || indexOf.call(this.activeSlides, index) < 0) { vnode.data.attrs['aria-hidden'] = 'true'; + } // Prevent duplicate keys on clones + + + if (isPeekingClone && vnode.key) { + vnode.key += '-clone-' + index; } // Return modified vnode @@ -762,10 +767,10 @@ interactiveSelector = 'a, button, input, textarea, select'; }); // CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=script&lang=coffee& /* harmony default export */ var src_ssr_carousel_trackvue_type_script_lang_coffee_ = (ssr_carousel_trackvue_type_script_lang_coffee_); -// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src!./node_modules/stylus-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/ssr-carousel-track.vue?vue&type=style&index=0&id=d4be1c2a&prod&lang=stylus& +// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src!./node_modules/stylus-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/ssr-carousel-track.vue?vue&type=style&index=0&id=b3a34fb0&prod&lang=stylus& // extracted by mini-css-extract-plugin -// CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=style&index=0&id=d4be1c2a&prod&lang=stylus& +// CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=style&index=0&id=b3a34fb0&prod&lang=stylus& // CONCATENATED MODULE: ./src/ssr-carousel-track.vue var ssr_carousel_track_render, ssr_carousel_track_staticRenderFns diff --git a/src/ssr-carousel-track.vue b/src/ssr-carousel-track.vue index dd686b0..54fbaee 100644 --- a/src/ssr-carousel-track.vue +++ b/src/ssr-carousel-track.vue @@ -82,6 +82,10 @@ export default if isPeekingClone or index not in @activeSlides then vnode.data.attrs['aria-hidden'] = 'true' + # Prevent duplicate keys on clones + if isPeekingClone and vnode.key + then vnode.key += '-clone-' + index + # Return modified vnode return vnode