|
1 | 1 | <script> |
2 | | - import { computed } from 'vue'; |
3 | | - import { useStore } from 'vuex'; |
4 | | - import { FILTERS } from '../../constants/filter'; |
| 2 | +import { computed } from 'vue'; |
| 3 | +import { useStore } from 'vuex'; |
| 4 | +import { FILTERS } from '../../constants/filter'; |
5 | 5 |
|
6 | | - export default { |
7 | | - setup() { |
8 | | - const store = useStore(); |
| 6 | +export default { |
| 7 | + setup() { |
| 8 | + const store = useStore(); |
9 | 9 |
|
10 | | - const filterTitles = [ |
11 | | - { key: FILTERS.all, value: 'All' }, |
12 | | - { key: FILTERS.active, value: 'Active' }, |
13 | | - { key: FILTERS.completed, value: 'Completed' } |
14 | | - ]; |
15 | | - const onClearCompleted = () => store.dispatch('onClearCompleted'); |
16 | | - const onFilterSelect = filter => store.dispatch('onFilterSelect', filter); |
| 10 | + const filterTitles = [ |
| 11 | + { key: FILTERS.all, value: 'All' }, |
| 12 | + { key: FILTERS.active, value: 'Active' }, |
| 13 | + { key: FILTERS.completed, value: 'Completed' } |
| 14 | + ]; |
| 15 | + const onClearCompleted = () => store.dispatch('onClearCompleted'); |
| 16 | + const onFilterSelect = filter => store.dispatch('onFilterSelect', filter); |
17 | 17 |
|
18 | | - return { |
19 | | - filterTitles, |
20 | | - filter: computed(() => store.state.filter), |
21 | | - itemsLeft: computed(() => store.getters.itemsLeft), |
22 | | - completedCount: computed(() => store.getters.completedCount), |
23 | | - itemText: computed(() => store.getters.itemsLeft === 1 ? ' item' : ' items'), |
24 | | - onClearCompleted, |
25 | | - onFilterSelect |
26 | | - }; |
27 | | - } |
28 | | - }; |
| 18 | + return { |
| 19 | + filterTitles, |
| 20 | + filter: computed(() => store.state.filter), |
| 21 | + itemsLeft: computed(() => store.getters.itemsLeft), |
| 22 | + completedCount: computed(() => store.getters.completedCount), |
| 23 | + itemText: computed(() => (store.getters.itemsLeft === 1 ? ' item' : ' items')), |
| 24 | + onClearCompleted, |
| 25 | + onFilterSelect |
| 26 | + }; |
| 27 | + } |
| 28 | +}; |
29 | 29 | </script> |
30 | 30 | <template> |
31 | 31 | <footer class="footer"> |
32 | | - <span class="todo-count"><strong>{{ itemsLeft }}</strong><span> {{ itemText }} left</span></span> |
| 32 | + <span class="todo-count" |
| 33 | + ><strong>{{ itemsLeft }}</strong |
| 34 | + ><span> {{ itemText }} left</span></span |
| 35 | + > |
33 | 36 | <ul class="filters"> |
34 | 37 | <li v-for="filterTitle in filterTitles" :key="filterTitle.key"> |
35 | | - <a |
36 | | - href="#" |
37 | | - :class="{ selected: filterTitle.key === filter }" |
38 | | - @click="onFilterSelect(filterTitle.key)" |
39 | | - > |
| 38 | + <a href="#" :class="{ selected: filterTitle.key === filter }" @click="onFilterSelect(filterTitle.key)"> |
40 | 39 | {{ filterTitle.value }} |
41 | 40 | </a> |
42 | 41 | </li> |
|
0 commit comments