2025-12-18 17:04:01 +01:00
|
|
|
<script setup>
|
|
|
|
|
|
|
|
|
|
import { computed, useTemplateRef } from 'vue';
|
2025-12-19 10:25:37 +01:00
|
|
|
import { Menu, Button, ButtonGroup } from '@cloudron/pankow';
|
2025-12-18 17:04:01 +01:00
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
actions: {
|
|
|
|
|
type: Array,
|
|
|
|
|
default: () => [],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const quickActions = computed(() => {
|
|
|
|
|
return props.actions.filter(a => a.quickAction && !(typeof a.visible !== 'undefined' && !a.visible));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const menuElement = useTemplateRef('menuElement');
|
|
|
|
|
function onMenu(event) {
|
|
|
|
|
menuElement.value.open(event, event.currentTarget);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<div class="action-bar">
|
|
|
|
|
<Menu ref="menuElement" :model="actions" />
|
2025-12-19 10:25:37 +01:00
|
|
|
<ButtonGroup class="quick-action-group">
|
|
|
|
|
<Button tool secondary v-for="quickAction in quickActions" :key="quickAction" :icon="quickAction.icon" @click="quickAction.action()"/>
|
|
|
|
|
<Button tool secondary @click.capture="onMenu($event)" icon="fa-solid fa-ellipsis" v-if="actions.length > 0"/>
|
|
|
|
|
</ButtonGroup>
|
|
|
|
|
<Button tool plain secondary @click.capture="onMenu($event)" icon="fa-solid fa-ellipsis" v-if="actions.length > 0" class="menu-action" />
|
2025-12-18 17:04:01 +01:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
|
|
|
|
.action-bar {
|
|
|
|
|
display: flex;
|
|
|
|
|
gap: 5px;
|
|
|
|
|
justify-content: end;
|
|
|
|
|
min-height: 30.5px;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-19 10:25:37 +01:00
|
|
|
.menu-action {
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tr:hover .menu-action {
|
2025-12-18 17:04:01 +01:00
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-19 10:25:37 +01:00
|
|
|
.quick-action-group {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tr:hover .quick-action-group {
|
2025-12-18 17:04:01 +01:00
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-19 10:25:37 +01:00
|
|
|
|
2025-12-18 17:04:01 +01:00
|
|
|
</style>
|