Sha256: 456707c3f80d3f892d916f06523d37a25a601413078187bab872a9b239411fcc

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

export default class CollapsePreferences {
    constructor(component) {
        this.component = component;
        this.collapsePreferences = JSON.parse(localStorage.getItem('collapsePreferences')) || [];
    }

    toggleCollapse() {
        let currentlyCollapsed = this.component.state.collapsed;

        this.component.setState({ collapsed: !currentlyCollapsed });

        let collapsePreferences = JSON.parse(localStorage.getItem('collapsePreferences')) || [];

        if (currentlyCollapsed) {
            localStorage.setItem('collapsePreferences', JSON.stringify(collapsePreferences.filter((name) => name !== this.component.name)));
        } else {
            let uniqueCollapsePreferences = [... new Set(collapsePreferences.concat([this.component.name]))];
            localStorage.setItem('collapsePreferences', JSON.stringify(uniqueCollapsePreferences));
        }
    }

    preferenceStoredAsCollapsed() {
        return this.collapsePreferences.includes(this.component.name);
    }

    renderCollapseIcon() {
        return this.component.state.collapsed ? this.plusIcon() : this.minusIcon();
    }

    minusIcon() {
        return <i className="fa fa-minus-square-o"></i>;
    }

    plusIcon() {
        return <i className="fa fa-plus-square-o"></i>;
    }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sequenceserver-3.1.3 public/js/collapse_preferences.js
sequenceserver-3.1.2 public/js/collapse_preferences.js
sequenceserver-3.1.1 public/js/collapse_preferences.js
sequenceserver-3.1.0 public/js/collapse_preferences.js