Sha256: 75f7f79b60bb61c641f1f2fc6a80120d2a2c0560af3da285f874ab3bec0a13c8

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

var FilterableShopList = React.createClass({

    getDefaultProps: function() {
        return {
            filterTabs: [
                { label: 'All Shops', filter: {} },
                { label: 'Installed', filter: { 'filter[status]': 'installed' } },
                { label: 'Uninstalled', filter: { 'filter[status]': 'uninstalled' } }
            ],
            availableFilters: {
                'filter[status]': {
                    getLabel: function(value) {
                        return 'Status is ' + value;
                    }
                }
            }
        }
    },

    getInitialState: function() {
        return {
            filter: {}
        };
    },

    onFilterReplace: function(filter) {
        this.setState({
            filter: filter
        });
    },

    onFilterSet: function(name, value) {
        this.onFiltersSet([{
            name: name,
            value: value
        }]);
    },

    onFiltersSet: function(filters) {
        var nextFilter = $.extend({}, this.state.filter);
        filters.forEach(function(filter) {
            if(!filter.value) {
                delete nextFilter[filter.name];
            } else {
                nextFilter[filter.name] = filter.value;
            }
        });
        this.onFilterReplace(nextFilter);
    },

    render: function() {
        return (
            <div className="next-card">
              <ShopFilterTabs filterTabs={this.props.filterTabs} filter={this.state.filter} onFilterReplace={this.onFilterReplace} />
              <ShopList shopsUrl={this.props.shopsUrl} editShopUrl={this.props.editShopUrl} filter={this.state.filter} />
            </div>
        );
    }

});

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
disco_app-0.8.9 app/assets/javascripts/disco_app/components/filterable_shop_list.js.jsx