UNPKG

@offensichtbar-codestock/es6-flex-masonry-grid

Version:
80 lines (69 loc) 1.82 kB
import {ObserveSizing} from "./observer"; export default class Card { /** * Represents the grid element * @constructor * @param {Node} el - card * @param {number} index - index of card * @param {boolean} animate - card animation enabled / disabled */ constructor(el, index, animate) { this._domelement = el; this._offset = 0; this._cardindex = index; this._init(animate); this._observeCard(); } get height() { return this._domelement.offsetHeight; } get width() { return this._domelement.offsetWidth; } get offset() { return this._offset; } get cardindex() { return this._cardindex; } set cardindex(index) { this._cardindex = index; } /** * Add class to card * If animation is set true, wrap card content in div.osb_griditem-inner * @param {boolean} animate - card animation enabled / disabled */ _init(animate) { this._domelement.classList.add('osb_griditem'); if(animate) { this._domelement.innerHTML = `<div class='osb_griditem-inner'>${this._domelement.innerHTML}</div>`; } } /** * Set element translateY * @param {number} offset */ translate(offset) { this._domelement.style.transform = `translateY(-${offset}px)`; this._offset = offset; } /** * Initial card animation */ animate() { this._domelement.classList.add('osb_animation-complete'); } /** * Reset classList */ reset() { this._domelement.classList.remove('osb_animation-complete'); } /** * Observes height changes cards */ _observeCard(){ new ObserveSizing(this._domelement, this); } }