Sha256: 3696401ca21538802e487c4f716c585e675b39fef5f2538b37768c8f9ed7a27c

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

function createSelectAllHandler(component, target, listElements) {
    return function() {
        for (let element of listElements) {
            element.checked = target.checked;
        }
    }
}

function createTableRowSelectHandler(component, listElements, selectAll) {
    return function() {
        let checked = 0;
        let unchecked = 0;
        for (let element of listElements) {
            element.checked ? checked++ : unchecked++;
        }
        selectAll.indeterminate = (checked && unchecked);
        selectAll.checked = (checked && !unchecked);
    }
}

export function initTables() {
    console.log('\tTables');
    let components = document.querySelectorAll('.mdl-data-table');
    if (components) {
        for (let component of components) {
            let selectAllRow = component.querySelector('.v-checkbox--select-control');
            let selectableRows = component.querySelectorAll('.v-table-item--selectable-checkbox');
            if (selectAllRow && selectableRows) {
                selectAllRow.addEventListener('change', createSelectAllHandler(component, selectAllRow, selectableRows));

                for (let element of selectableRows) {
                    element.addEventListener('change', createTableRowSelectHandler(component, selectableRows, selectAllRow));
                }
            }
        }
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
voom-presenters-0.2.0 views/mdc/assets/js/components/data-tables.js