Skip to content

Allow items to be in multiple groups#159

Open
dmorgan81 wants to merge 2 commits into
pebble:masterfrom
dmorgan81:master
Open

Allow items to be in multiple groups#159
dmorgan81 wants to merge 2 commits into
pebble:masterfrom
dmorgan81:master

Conversation

@dmorgan81

@dmorgan81 dmorgan81 commented Aug 9, 2017

Copy link
Copy Markdown

If items are in multiple groups interesting custom function
possibilities are opened up. For example, a section could have a toggle
that shows/hides all other items in that section. With multiple groups
attaching that behavior to all special toggles becomes something like
this:

Clay.getItemsByGroup('section-toggle').forEach(function(toggle) {
    var groups = toggle.config.groups;
    if (!groups) return;
    groups = groups.filter(function(group) { return group !== 'section-toggle'; });
    toggle.on('change', function() {
        var enabled = this.get();
        groups.forEach(function(group) {
            Clay.getItemsByGroup(group)
                .filter(function(item) { return item !== toggle; })
                .forEach(function(item) {
                    if (enabled) item.show();
                    else item.hide();
            });
        });
    }).trigger('change');
});

Resolves #160

If items are in multiple groups interesting custom function
possibilities are opened up. For example, a section could have a toggle
that shows/hides all other items in that section. With multiple groups
attaching that behavior to all special toggles becomes something like
this:

Clay.getItemsByGroup('section-toggle').forEach(function(toggle) {
    var groups = toggle.config.groups;
    if (!groups) return;
    groups = groups.filter(function(group) { return group !== 'section-toggle'; });
    toggle.on('change', function() {
        var enabled = this.get();
        groups.forEach(function(group) {
            Clay.getItemsByGroup(group)
                .filter(function(item) { return item !== toggle; })
                .forEach(function(item) {
                    if (enabled) item.show();
                    else item.hide();
            });
        });
    }).trigger('change');
});
Array.includes() isn't supported on versions of Chrome older than 47.
Travis CI uses Chrome 37.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant