Add an option to start expanded and an onToggle action to list-accordion

This commit is contained in:
Michael Lange
2018-07-12 12:05:51 -07:00
parent 129923ad38
commit a58e591910
2 changed files with 15 additions and 3 deletions

View File

@@ -7,16 +7,20 @@ export default Component.extend({
key: 'id',
source: computed(() => []),
onToggle(/* item, isOpen */) {},
startExpanded: false,
decoratedSource: computed('source.[]', function() {
const stateCache = this.get('stateCache');
const key = this.get('key');
const deepKey = `item.${key}`;
const startExpanded = this.get('startExpanded');
const decoratedSource = this.get('source').map(item => {
const cacheItem = stateCache.findBy(deepKey, get(item, key));
return {
item,
isOpen: cacheItem ? !!cacheItem.isOpen : false,
isOpen: cacheItem ? !!cacheItem.isOpen : startExpanded,
};
});

View File

@@ -2,9 +2,17 @@
{{yield (hash
head=(component "list-accordion/accordion-head"
isOpen=item.isOpen
onOpen=(action (mut item.isOpen) true)
onClose=(action (mut item.isOpen) false))
onOpen=(action (queue
(action (mut item.isOpen) true)
(action onToggle item.item item.isOpen)
))
onClose=(action (queue
(action (mut item.isOpen) false)
(action onToggle item.item item.isOpen)
))
)
body=(component "list-accordion/accordion-body" isOpen=item.isOpen)
item=item.item
isOpen=item.isOpen
)}}
{{/each}}