UNPKG

bootstrap-vue

Version:

BootstrapVue, with over 40 plugins and more than 80 custom components, custom directives, and over 300 icons, provides one of the most comprehensive implementations of Bootstrap v4 components and grid system for Vue.js. With extensive and automated WAI-AR

82 lines (73 loc) 2.15 kB
// Generic collapse transion helper component // // Note: // Applies the classes `collapse`, `show` and `collapsing` // during the enter/leave transition phases only // Although it appears that Vue may be leaving the classes // in-place after the transition completes import Vue from './vue'; import { mergeData } from 'vue-functional-data-merge'; import { getBCR, reflow, requestAF } from './dom'; // Transition event handler helpers var onEnter = function onEnter(el) { el.style.height = 0; // Animaton frame delay neeeded for `appear` to work requestAF(function () { reflow(el); el.style.height = "".concat(el.scrollHeight, "px"); }); }; var onAfterEnter = function onAfterEnter(el) { el.style.height = null; }; var onLeave = function onLeave(el) { el.style.height = 'auto'; el.style.display = 'block'; el.style.height = "".concat(getBCR(el).height, "px"); reflow(el); el.style.height = 0; }; var onAfterLeave = function onAfterLeave(el) { el.style.height = null; }; // Default transition props // `appear` will use the enter classes var TRANSITION_PROPS = { css: true, enterClass: '', enterActiveClass: 'collapsing', enterToClass: 'collapse show', leaveClass: 'collapse show', leaveActiveClass: 'collapsing', leaveToClass: 'collapse' }; // Default transition handlers // `appear` will use the enter handlers var TRANSITION_HANDLERS = { enter: onEnter, afterEnter: onAfterEnter, leave: onLeave, afterLeave: onAfterLeave }; // @vue/component export var BVCollapse = /*#__PURE__*/ Vue.extend({ name: 'BVCollapse', functional: true, props: { appear: { // If `true` (and `visible` is `true` on mount), animate initially visible type: Boolean, default: false } }, render: function render(h, _ref) { var props = _ref.props, data = _ref.data, children = _ref.children; return h('transition', // We merge in the `appear` prop last mergeData(data, { props: TRANSITION_PROPS, on: TRANSITION_HANDLERS }, { props: props }), // Note: `<tranition>` supports a single root element only children); } });