81 lines
2.6 KiB
JavaScript
81 lines
2.6 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = _default;
|
||
|
|
||
|
var _helpers = require("../../util/helpers");
|
||
|
|
||
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||
|
|
||
|
function _default() {
|
||
|
var expandedParentClass = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
||
|
var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||
|
var sizeProperty = x ? 'width' : 'height';
|
||
|
var offsetProperty = "offset".concat((0, _helpers.upperFirst)(sizeProperty));
|
||
|
return {
|
||
|
beforeEnter: function beforeEnter(el) {
|
||
|
el._parent = el.parentNode;
|
||
|
el._initialStyle = _defineProperty({
|
||
|
transition: el.style.transition,
|
||
|
visibility: el.style.visibility,
|
||
|
overflow: el.style.overflow
|
||
|
}, sizeProperty, el.style[sizeProperty]);
|
||
|
},
|
||
|
enter: function enter(el) {
|
||
|
var initialStyle = el._initialStyle;
|
||
|
var offset = "".concat(el[offsetProperty], "px");
|
||
|
el.style.setProperty('transition', 'none', 'important');
|
||
|
el.style.visibility = 'hidden';
|
||
|
el.style.visibility = initialStyle.visibility;
|
||
|
el.style.overflow = 'hidden';
|
||
|
el.style[sizeProperty] = '0';
|
||
|
void el.offsetHeight; // force reflow
|
||
|
|
||
|
el.style.transition = initialStyle.transition;
|
||
|
|
||
|
if (expandedParentClass && el._parent) {
|
||
|
el._parent.classList.add(expandedParentClass);
|
||
|
}
|
||
|
|
||
|
requestAnimationFrame(function () {
|
||
|
el.style[sizeProperty] = offset;
|
||
|
});
|
||
|
},
|
||
|
afterEnter: resetStyles,
|
||
|
enterCancelled: resetStyles,
|
||
|
leave: function leave(el) {
|
||
|
el._initialStyle = _defineProperty({
|
||
|
transition: '',
|
||
|
visibility: '',
|
||
|
overflow: el.style.overflow
|
||
|
}, sizeProperty, el.style[sizeProperty]);
|
||
|
el.style.overflow = 'hidden';
|
||
|
el.style[sizeProperty] = "".concat(el[offsetProperty], "px");
|
||
|
void el.offsetHeight; // force reflow
|
||
|
|
||
|
requestAnimationFrame(function () {
|
||
|
return el.style[sizeProperty] = '0';
|
||
|
});
|
||
|
},
|
||
|
afterLeave: afterLeave,
|
||
|
leaveCancelled: afterLeave
|
||
|
};
|
||
|
|
||
|
function afterLeave(el) {
|
||
|
if (expandedParentClass && el._parent) {
|
||
|
el._parent.classList.remove(expandedParentClass);
|
||
|
}
|
||
|
|
||
|
resetStyles(el);
|
||
|
}
|
||
|
|
||
|
function resetStyles(el) {
|
||
|
var size = el._initialStyle[sizeProperty];
|
||
|
el.style.overflow = el._initialStyle.overflow;
|
||
|
if (size != null) el.style[sizeProperty] = size;
|
||
|
delete el._initialStyle;
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=expand-transition.js.map
|