Files
ctms/frontend/src/components/PermissionAction.vue
T
2025-12-17 15:11:02 +08:00

38 lines
817 B
Vue

<template>
<el-tooltip v-if="!allowed && tooltip" :content="reason" placement="top">
<span class="perm-wrapper perm-disabled">
<slot />
</span>
</el-tooltip>
<span v-else-if="!allowed" class="perm-wrapper perm-disabled">
<slot />
</span>
<span v-else class="perm-wrapper">
<slot />
</span>
</template>
<script setup lang="ts">
import { computed } from "vue";
import { usePermission } from "../utils/permission";
const props = defineProps<{
action: string;
tooltip?: boolean;
}>();
const { can, reason: reasonFn } = usePermission();
const allowed = computed(() => can(props.action));
const reason = computed(() => reasonFn(props.action));
</script>
<style scoped>
.perm-wrapper {
display: inline-block;
}
.perm-disabled {
opacity: 0.55;
pointer-events: none;
}
</style>