/
githubmirror
/
vuetify
Обзор
Документация
Войти
/
githubmirror
/
vuetify
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/docs/src/examples/v-data-table/misc-external-sort.vue
247 строк
5 KB
John Leider
chore: add vue/attributes-order eslint rule
29 фев 2024, 07:06
29 фев 2024, 07:06
65aff8f
Код
Авторство
О чём код?
<template> <div> <v-data-table v-model:sort-by="sortBy" :headers="headers" :items="desserts" class="elevation-1" ></v-data-table> <div class="text-center pt-2"> <v-btn class="me-2" color="primary" @click="toggleOrder" > Toggle sort order </v-btn> <v-btn color="primary" @click="nextSort" > Sort next column </v-btn> </div> </div> </template> <script setup> import { ref } from 'vue' const sortBy = ref([{ key: 'fat', order: 'asc' }]) const headers = ref([ { title: 'Dessert (100g serving)', align: 'start', key: 'name', }, { title: 'Calories', key: 'calories' }, { title: 'Fat (g)', key: 'fat' }, { title: 'Carbs (g)', key: 'carbs' }, { title: 'Protein (g)', key: 'protein' }, { title: 'Iron (%)', key: 'iron' }, ]) const desserts = ref([ { name: 'Frozen Yogurt', calories: 159, fat: 6, carbs: 24, protein: 4, iron: 1, }, { name: 'Ice cream sandwich', calories: 237, fat: 9, carbs: 37, protein: 4.3, iron: 1, }, { name: 'Eclair', calories: 262, fat: 16, carbs: 23, protein: 6, iron: 7, }, { name: 'Cupcake', calories: 305, fat: 3.7, carbs: 67, protein: 4.3, iron: 8, }, { name: 'Gingerbread', calories: 356, fat: 16, carbs: 49, protein: 3.9, iron: 16, }, { name: 'Jelly bean', calories: 375, fat: 0, carbs: 94, protein: 0, iron: 0, }, { name: 'Lollipop', calories: 392, fat: 0.2, carbs: 98, protein: 0, iron: 2, }, { name: 'Honeycomb', calories: 408, fat: 3.2, carbs: 87, protein: 6.5, iron: 45, }, { name: 'Donut', calories: 452, fat: 25, carbs: 51, protein: 4.9, iron: 22, }, { name: 'KitKat', calories: 518, fat: 26, carbs: 65, protein: 7, iron: 6, }, ]) function toggleOrder () { sortBy.value = [{ key: sortBy.value[0].key, order: sortBy.value[0].order === 'asc' ? 'desc' : 'asc' }] } function nextSort () { let index = headers.value.findIndex(h => h.key === sortBy.value[0].key) index = (index + 1) % headers.value.length sortBy.value = [{ key: headers.value[index].key, order: 'asc' }] } </script> <script> export default { data () { return { sortBy: [{ key: 'fat', order: 'asc' }], headers: [ { title: 'Dessert (100g serving)', align: 'start', key: 'name', }, { title: 'Calories', key: 'calories' }, { title: 'Fat (g)', key: 'fat' }, { title: 'Carbs (g)', key: 'carbs' }, { title: 'Protein (g)', key: 'protein' }, { title: 'Iron (%)', key: 'iron' }, ], desserts: [ { name: 'Frozen Yogurt', calories: 159, fat: 6.0, carbs: 24, protein: 4.0, iron: 1, }, { name: 'Ice cream sandwich', calories: 237, fat: 9.0, carbs: 37, protein: 4.3, iron: 1, }, { name: 'Eclair', calories: 262, fat: 16.0, carbs: 23, protein: 6.0, iron: 7, }, { name: 'Cupcake', calories: 305, fat: 3.7, carbs: 67, protein: 4.3, iron: 8, }, { name: 'Gingerbread', calories: 356, fat: 16.0, carbs: 49, protein: 3.9, iron: 16, }, { name: 'Jelly bean', calories: 375, fat: 0.0, carbs: 94, protein: 0.0, iron: 0, }, { name: 'Lollipop', calories: 392, fat: 0.2, carbs: 98, protein: 0, iron: 2, }, { name: 'Honeycomb', calories: 408, fat: 3.2, carbs: 87, protein: 6.5, iron: 45, }, { name: 'Donut', calories: 452, fat: 25.0, carbs: 51, protein: 4.9, iron: 22, }, { name: 'KitKat', calories: 518, fat: 26.0, carbs: 65, protein: 7, iron: 6, }, ], } }, methods: { toggleOrder () { this.sortBy = [{ key: this.sortBy[0].key, order: this.sortBy[0].order === 'asc' ? 'desc' : 'asc' }] }, nextSort () { let index = this.headers.findIndex(h => h.key === this.sortBy[0].key) index = (index + 1) % this.headers.length this.sortBy = [{ key: this.headers[index].key, order: 'asc' }] }, }, } </script>