Download dashboard/src/components/extension/PluginSortControl.vue from qa1145/astrbbbb: direct link, hf CLI and curl.
- Browser
- Download file 1.97 kB
-
https://huggingface.co/spaces/qa1145/astrbbbb/resolve/main/dashboard/src/components/extension/PluginSortControl.vue
- Command line
-
hf download hf://spaces/qa1145/astrbbbb/dashboard/src/components/extension/PluginSortControl.vue
-
curl -L -o PluginSortControl.vue https://huggingface.co/spaces/qa1145/astrbbbb/resolve/main/dashboard/src/components/extension/PluginSortControl.vue
1.97 kB
| <script setup> | |
| const props = defineProps({ | |
| modelValue: { | |
| type: String, | |
| required: true, | |
| }, | |
| items: { | |
| type: Array, | |
| required: true, | |
| }, | |
| label: { | |
| type: String, | |
| required: true, | |
| }, | |
| order: { | |
| type: String, | |
| default: "desc", | |
| }, | |
| ascendingLabel: { | |
| type: String, | |
| default: "Ascending", | |
| }, | |
| descendingLabel: { | |
| type: String, | |
| default: "Descending", | |
| }, | |
| showOrder: { | |
| type: Boolean, | |
| default: false, | |
| }, | |
| }); | |
| const emit = defineEmits(["update:modelValue", "update:order"]); | |
| const updateSortBy = (value) => { | |
| emit("update:modelValue", value); | |
| }; | |
| const toggleOrder = () => { | |
| emit("update:order", props.order === "desc" ? "asc" : "desc"); | |
| }; | |
| </script> | |
| <template> | |
| <div class="plugin-sort-control"> | |
| <v-select | |
| :model-value="modelValue" | |
| :items="items" | |
| density="compact" | |
| variant="outlined" | |
| hide-details | |
| :label="label" | |
| class="plugin-sort-control__select" | |
| @update:model-value="updateSortBy" | |
| > | |
| <template #prepend-inner> | |
| <v-icon size="small">mdi-sort</v-icon> | |
| </template> | |
| </v-select> | |
| <v-btn | |
| v-if="showOrder" | |
| icon | |
| variant="text" | |
| density="compact" | |
| @click="toggleOrder" | |
| > | |
| <v-icon>{{ | |
| order === "desc" ? "mdi-arrow-down-thin" : "mdi-arrow-up-thin" | |
| }}</v-icon> | |
| <v-tooltip activator="parent" location="top"> | |
| {{ order === "desc" ? descendingLabel : ascendingLabel }} | |
| </v-tooltip> | |
| </v-btn> | |
| </div> | |
| </template> | |
| <style scoped> | |
| .plugin-sort-control { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .plugin-sort-control__select { | |
| min-width: 180px; | |
| max-width: 220px; | |
| } | |
| .plugin-sort-control__select :deep(.v-field__input), | |
| .plugin-sort-control__select :deep(.v-field-label), | |
| .plugin-sort-control__select :deep(.v-select__selection-text), | |
| .plugin-sort-control__select :deep(.v-field__prepend-inner) { | |
| font-size: 0.875rem; | |
| } | |
| </style> | |