all files / src/controller/ controller.abstract.js

85.71% Statements 6/7
66.67% Branches 4/6
100% Functions 2/2
85.71% Lines 6/7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40                                                                   
/**
 * Class represents ControllerAbstract
 * @abstract
 */
class ControllerAbstract {
 
    /**
     * Create a new ControllerAbstract instance
     * @param {HTMLElement} element
     * @param {DataObserver} data
     * @param {ElementBuilder} elements
     */
    constructor(element, data, elements) {
        this._element = element;
        this._data = data;
        this._elements = elements;
 
        let elementReadyClass = (
            typeof elements === `object` &&
            typeof elements.getElementReadyClass === 'function'
        )
            ? elements.getElementReadyClass()
            : null;
 
        Iif(elementReadyClass) {
            this._element.classList.add(elementReadyClass);
        }
    }
 
    /**
     * Callback when HTMLElement removed from DOM
     */
    destruct() {
        this._data.unsubscribe(this);
    }
}
 
export {
    ControllerAbstract,
};