open-orchestra/open-orchestra-cms-bundle

View on GitHub
GroupBundle/Resources/public/ecmascript/OpenOrchestra/Service/Form/Behavior/TreeCheck.js

Summary

Maintainability
A
0 mins
Test Coverage
import AbstractBehavior   from 'OpenOrchestra/Service/Form/Behavior/AbstractBehavior'

/**
 * @class TreeCheck
 */
class TreeCheck extends AbstractBehavior
{
    /**
     * get extra events
     *
     * @return {Object}
     */
    getExtraEvents() {
        return {
            'click input[type="checkbox"]': '_changeCheckbox',
            'click .toggle-tree' : '_toggleChildrenTree'
        }
    }

    /**
     * return selector
     *
     * @return {String}
     */
    getSelector() {
        return '.perimeter-tree';
    }

    /**
     * change checked status
     *
     * @param {Object} event - event object
     */
    _changeCheckbox(event) {
        let checkbox = $(event.target);
        let checked = checkbox.is(':checked');
        if (!checked) {
            checkbox.parents("ul").prev('div').find('input[type="checkbox"]').prop('checked', false);
        } else {
            checkbox.closest('li').find('input[type="checkbox"]').prop('checked', true);
        }
    }

    /**
     * @param {Object} event
     * @private
     */
    _toggleChildrenTree(event) {
        $(event.target).toggleClass('closed').parents("div").next('ul').slideToggle();
    }
}

// unique instance of TreeCheck
export default (new TreeCheck);