PluginProbe ʕ •ᴥ•ʔ
Hostinger Tools / 3.0.71
Hostinger Tools v3.0.71
3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.4 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.2 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 3.0.0 3.0.10 3.0.11 3.0.12 3.0.13 3.0.14 3.0.15 3.0.16 3.0.17 3.0.18 3.0.19 3.0.2 3.0.20 3.0.21 3.0.22 3.0.23 3.0.24 3.0.25 3.0.26 3.0.27 3.0.28 3.0.29 3.0.3 3.0.30 3.0.31 3.0.32 3.0.33 3.0.34 3.0.35 3.0.36 3.0.37 3.0.38 3.0.39 3.0.4 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.0.46 3.0.47 3.0.48 3.0.49 3.0.5 3.0.50 3.0.51 3.0.52 3.0.53 3.0.54 3.0.55 3.0.56 3.0.57 3.0.58 3.0.59 3.0.6 3.0.60 3.0.61 3.0.62 3.0.65 3.0.7 3.0.8 3.0.9 trunk 1.8.0
hostinger / vue-frontend / src / components / OverheadButton.vue
hostinger / vue-frontend / src / components Last commit date
Button 9 months ago HostingerTools 9 months ago Icon 9 months ago Loaders 9 months ago Modals 9 months ago AccordionCard.vue 9 months ago Card.vue 9 months ago CircleLoader.vue 9 months ago CopyField.vue 9 months ago Label.vue 9 months ago NoResults.vue 9 months ago Notice.vue 1 year ago OverheadButton.vue 9 months ago PluginSplitNotice.vue 9 months ago Stepper.vue 9 months ago Toggle.vue 9 months ago
OverheadButton.vue
85 lines
1 <script setup lang="ts">
2 import { computed } from "vue";
3 import { type RouteLocationNamedRaw, useRouter } from "vue-router";
4
5 type Props = {
6 text: string;
7 route?: RouteLocationNamedRaw;
8 to?: string;
9 action?: () => void;
10 };
11
12 type Emits = {
13 click: [];
14 };
15
16 const props = defineProps<Props>();
17 const emit = defineEmits<Emits>();
18 const router = useRouter();
19
20 const buttonText = computed(() => props?.text || "");
21
22 const onButtonClick = () => {
23 emit("click");
24 (props?.action || redirectToRoute)();
25 };
26
27 const tag = computed(() => {
28 if (typeof props.to === "string") {
29 return "a";
30 }
31
32 if (props.to) {
33 return "router-link";
34 }
35
36 return "button";
37 });
38
39 const redirectToRoute = () => {
40 const { name, query } = props?.route || {};
41
42 if (!name) return;
43
44 router.push({
45 name,
46 query
47 });
48 };
49 </script>
50
51 <template>
52 <Teleport
53 :key="buttonText"
54 to="#overhead-button"
55 >
56 <component
57 :is="tag"
58 class="overhead-button text-button-2"
59 @click="onButtonClick"
60 >
61 {{ buttonText }}
62 </component>
63 <slot />
64 </Teleport>
65 </template>
66
67 <style scoped lang="scss">
68 .overhead-button {
69 display: inline-flex;
70 padding: 12px 32px;
71 align-items: flex-start;
72 gap: 12px;
73 color: var(--primary);
74 border-radius: 8px;
75 border: 1px solid var(--gray-border);
76 background: var(--light);
77
78 &:hover {
79 cursor: pointer;
80 transition: 0.3s;
81 opacity: 0.7;
82 }
83 }
84 </style>
85