✨ feature: Link component added
This commit is contained in:
parent
709fdac141
commit
47212b1688
50
src/components/button/VLink.vue
Normal file
50
src/components/button/VLink.vue
Normal file
|
@ -0,0 +1,50 @@
|
|||
<script setup lang="ts">
|
||||
import Button from 'primevue/button';
|
||||
import type IVLink from '@/components/button/IVLink.type';
|
||||
import { computed } from 'vue';
|
||||
import styles from '@/assets/typography.module.css'
|
||||
|
||||
const props = defineProps<IVLink>();
|
||||
|
||||
// Icon position computed
|
||||
const iconPos = computed<string>(() => {
|
||||
return props.iconRight ? 'right': 'left'
|
||||
})
|
||||
|
||||
// Change the html tag of root element
|
||||
const htmlTag = computed(() => { return props.to ? 'RouterLink' : props.href ? 'a' : 'button'})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Button
|
||||
variant="link"
|
||||
role="link"
|
||||
:label="props.label"
|
||||
:aria-label="props.label"
|
||||
:icon="props.icon"
|
||||
:disabled="props.disabled"
|
||||
:aria-disabled="props.disabled"
|
||||
:icon-pos="iconPos"
|
||||
:as="htmlTag"
|
||||
:href="props.href"
|
||||
:target="props.target"
|
||||
:to="props.to"
|
||||
:tabindex="props.disabled ? -1 : 0"
|
||||
@click="props.disabled && $event.preventDefault()"
|
||||
class="p-button"
|
||||
:class="[styles['text-body-MD-standard-text-Regular']]"
|
||||
:style="props.disabled ? { pointerEvents: 'none' } : {}"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<style lang="css" scoped>
|
||||
*{
|
||||
text-decoration: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.p-button.p-button-link:hover{
|
||||
border: 2px solid var(--p-button-link-color);
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user