From cf2c411db34953e65c186e214bd9bae44073c881 Mon Sep 17 00:00:00 2001 From: taehoon Date: Thu, 4 Apr 2019 04:32:36 -0400 Subject: add header to selectable-list component --- src/components/selectable_list/selectable_list.js | 30 ++++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/components/selectable_list/selectable_list.js') diff --git a/src/components/selectable_list/selectable_list.js b/src/components/selectable_list/selectable_list.js index 93efa840..809133f5 100644 --- a/src/components/selectable_list/selectable_list.js +++ b/src/components/selectable_list/selectable_list.js @@ -6,14 +6,32 @@ const SelectableList = { List, Checkbox }, - props: List.props, + props: { + items: { + type: Array, + default: () => [] + }, + getKey: { + type: Function, + default: item => item.id + } + }, data () { return { selected: [] } }, + computed: { + allSelected () { + return !this.items.find(item => !this.isSelected(item)) + } + }, methods: { - toggle (checked, key) { + isSelected (item) { + return this.selected.indexOf(this.getKey(item)) !== -1 + }, + toggle (checked, item) { + const key = this.getKey(item) const oldChecked = this.isSelected(key) if (checked !== oldChecked) { if (checked) { @@ -23,8 +41,12 @@ const SelectableList = { } } }, - isSelected (key) { - return this.selected.indexOf(key) !== -1 + toggleAll (value) { + if (value) { + this.selected = this.items.map(this.getKey) + } else { + this.selected = [] + } } } } -- cgit v1.2.3-70-g09d2