open-nomad/ui/app/components/list-accordion.js
Buck Doyle 9b2fb14e51
UI: Update Ember to 3.12 LTS (#6419)
This is mostly deprecation fixes and blueprint changes. There
are some dependency updates too; the changes to Ember
Basic Dropdown necessitated changing it to angle bracket
component invocation. The conversion of the rest of the
templates will happen separately.
2019-10-15 13:32:58 -05:00

36 lines
980 B
JavaScript

import Component from '@ember/component';
import { computed, get } from '@ember/object';
import { computed as overridable } from 'ember-overridable-computed';
export default Component.extend({
classNames: ['accordion'],
key: 'id',
source: overridable(() => []),
onToggle(/* item, isOpen */) {},
startExpanded: false,
decoratedSource: computed('source.[]', function() {
const stateCache = this.stateCache;
const key = this.key;
const deepKey = `item.${key}`;
const startExpanded = this.startExpanded;
const decoratedSource = this.source.map(item => {
const cacheItem = stateCache.findBy(deepKey, get(item, key));
return {
item,
isOpen: cacheItem ? !!cacheItem.isOpen : startExpanded,
};
});
this.set('stateCache', decoratedSource);
return decoratedSource;
}),
// When source updates come in, the state cache is used to preserve
// open/close state.
stateCache: overridable(() => []),
});