dile-slide-down-mixin
Version:
Mixin function to create slidedown / slideup effects in Web Components
42 lines (39 loc) • 1.08 kB
JavaScript
export const DileSlideDownMixin = (SuperClass) => {
return class extends SuperClass {
_getElementHeight(elem, targetHeight = '0px') {
let height = 300;
elem.style.opacity = 0;
elem.style.height = 'auto';
if(elem.offsetHeight) {
height = elem.offsetHeight;
}
elem.style.height = targetHeight;
elem.style.opacity = 1;
return height;
}
slideShow(elem, targetHeight = '0px') {
if(elem) {
let height = this._getElementHeight(elem, targetHeight);
setTimeout(() => {
elem.style.height = height + 'px';
}, 50);
setTimeout(() => {
elem.style.height = 'auto';
elem.style.overflow = 'visible';
}, 600);
}
}
slideHide(elem, targetHeight='0px') {
if (elem) {
let height = elem.offsetHeight;
elem.style.overflow = 'hidden';
if(height) {
elem.style.height = height + 'px';
}
setTimeout(() => {
elem.style.height = targetHeight;
}, 50);
}
}
}
}