Component: The Rest of the PrimeVue buttons (#7649)

## Summary

Automated initial change, cleaned up manually.

Please check the screenshot changes.

Includes a11y updates to icon buttons.

Doesn't hit the buttons in Desktop.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7649-WIP-Component-The-Rest-of-the-PrimeVue-buttons-2ce6d73d365081d68e06f200f1321267)
by [Unito](https://www.unito.io)

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
Alexander Brown
2025-12-29 15:03:34 -08:00
committed by GitHub
parent ea96c71818
commit 7b68b19f11
159 changed files with 1330 additions and 1359 deletions

View File

@@ -2,16 +2,17 @@
<div class="flex flex-col">
<div class="show-export-formats relative">
<Button
class="p-button-rounded p-button-text"
v-tooltip.right="{
value: $t('load3d.exportModel'),
showDelay: 300
}"
size="icon"
variant="textonly"
class="rounded-full"
:aria-label="$t('load3d.exportModel')"
@click="toggleExportFormats"
>
<i
v-tooltip.right="{
value: $t('load3d.exportModel'),
showDelay: 300
}"
class="pi pi-download text-lg text-white"
/>
<i class="pi pi-download text-lg text-white" />
</Button>
<div
v-show="showExportFormats"
@@ -21,7 +22,8 @@
<Button
v-for="format in exportFormats"
:key="format.value"
class="p-button-text text-white"
variant="textonly"
class="text-white"
@click="exportModel(format.value)"
>
{{ format.label }}
@@ -33,9 +35,10 @@
</template>
<script setup lang="ts">
import Button from 'primevue/button'
import { onMounted, onUnmounted, ref } from 'vue'
import Button from '@/components/ui/button/Button.vue'
const emit = defineEmits<{
(e: 'exportModel', format: string): void
}>()
@@ -48,17 +51,17 @@ const exportFormats = [
{ label: 'STL', value: 'stl' }
]
const toggleExportFormats = () => {
function toggleExportFormats() {
showExportFormats.value = !showExportFormats.value
}
const exportModel = (format: string) => {
function exportModel(format: string) {
emit('exportModel', format)
showExportFormats.value = false
}
const closeExportFormatsList = (e: MouseEvent) => {
function closeExportFormatsList(e: MouseEvent) {
const target = e.target as HTMLElement
if (!target.closest('.show-export-formats')) {