174 lines
3.4 KiB
Vue
174 lines
3.4 KiB
Vue
<template>
|
|
<div class="columns label">
|
|
<p>{{ label }}</p>
|
|
<button :v-tooltip="tooltip">
|
|
<svg
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<circle cx="12" cy="12" r="10"></circle>
|
|
<line x1="12" y1="16" x2="12" y2="12"></line>
|
|
<line x1="12" y1="8" x2="12.01" y2="8"></line>
|
|
</svg>
|
|
</button>
|
|
<svg
|
|
v-if="required"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<circle cx="12" cy="12" r="10"></circle>
|
|
<line x1="12" y1="8" x2="12" y2="12"></line>
|
|
<line x1="12" y1="16" x2="12.01" y2="16"></line>
|
|
</svg>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'InputLabel',
|
|
props: {
|
|
label: {
|
|
type: String,
|
|
default: 'Label',
|
|
},
|
|
tooltip: {
|
|
type: String,
|
|
default: null,
|
|
},
|
|
required: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.label {
|
|
color: var(--color-text);
|
|
height: 24px;
|
|
font-size: 24px;
|
|
p {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
.tooltip {
|
|
display: block !important;
|
|
z-index: 10000;
|
|
|
|
.tooltip-inner {
|
|
background: black;
|
|
color: white;
|
|
border-radius: 16px;
|
|
padding: 5px 10px 4px;
|
|
}
|
|
|
|
.tooltip-arrow {
|
|
width: 0;
|
|
height: 0;
|
|
border-style: solid;
|
|
position: absolute;
|
|
margin: 5px;
|
|
border-color: black;
|
|
z-index: 1;
|
|
}
|
|
|
|
&[x-placement^='top'] {
|
|
margin-bottom: 5px;
|
|
|
|
.tooltip-arrow {
|
|
border-width: 5px 5px 0 5px;
|
|
border-left-color: transparent !important;
|
|
border-right-color: transparent !important;
|
|
border-bottom-color: transparent !important;
|
|
bottom: -5px;
|
|
left: calc(50% - 5px);
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
&[x-placement^='bottom'] {
|
|
margin-top: 5px;
|
|
|
|
.tooltip-arrow {
|
|
border-width: 0 5px 5px 5px;
|
|
border-left-color: transparent !important;
|
|
border-right-color: transparent !important;
|
|
border-top-color: transparent !important;
|
|
top: -5px;
|
|
left: calc(50% - 5px);
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
&[x-placement^='right'] {
|
|
margin-left: 5px;
|
|
|
|
.tooltip-arrow {
|
|
border-width: 5px 5px 5px 0;
|
|
border-left-color: transparent !important;
|
|
border-top-color: transparent !important;
|
|
border-bottom-color: transparent !important;
|
|
left: -5px;
|
|
top: calc(50% - 5px);
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
&[x-placement^='left'] {
|
|
margin-right: 5px;
|
|
|
|
.tooltip-arrow {
|
|
border-width: 5px 0 5px 5px;
|
|
border-top-color: transparent !important;
|
|
border-right-color: transparent !important;
|
|
border-bottom-color: transparent !important;
|
|
right: -5px;
|
|
top: calc(50% - 5px);
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
&.popover {
|
|
$color: #f9f9f9;
|
|
|
|
.popover-inner {
|
|
background: $color;
|
|
color: black;
|
|
padding: 24px;
|
|
border-radius: 5px;
|
|
box-shadow: 0 5px 30px rgba(black, 0.1);
|
|
}
|
|
|
|
.popover-arrow {
|
|
border-color: $color;
|
|
}
|
|
}
|
|
|
|
&[aria-hidden='true'] {
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
transition: opacity 0.15s, visibility 0.15s;
|
|
}
|
|
|
|
&[aria-hidden='false'] {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition: opacity 0.15s;
|
|
}
|
|
}
|
|
</style>
|