45 lines
1.5 KiB
Vue
45 lines
1.5 KiB
Vue
<script setup>
|
|
import { ref, computed } from 'vue'
|
|
|
|
const props = defineProps({
|
|
title: String,
|
|
height: Number,
|
|
width: Number,
|
|
})
|
|
|
|
// variables
|
|
const heightNumber = ref(24)
|
|
const widthNumber = ref(24)
|
|
|
|
if (!Number.isNaN(props.height) && typeof props.height !== "undefined") {
|
|
heightNumber.value = Number.parseInt(props.height)
|
|
} else if (typeof props.height === "undefined" && (!Number.isNaN(props.width) && typeof props.width !== "undefined")) {
|
|
heightNumber.value = Number.parseInt(props.width)
|
|
}
|
|
|
|
if (!Number.isNaN(props.width) && typeof props.width !== "undefined") {
|
|
widthNumber.value = Number.parseInt(props.width)
|
|
} else if (typeof props.width === "undefined" && (!Number.isNaN(props.height) && typeof props.height !== "undefined")) {
|
|
widthNumber.value = Number.parseInt(props.height)
|
|
}
|
|
|
|
// computed
|
|
const titleString = computed(() => {
|
|
if (typeof props.title === "string" && props.title.trim().length > 0) {
|
|
return props.title.trim()
|
|
}
|
|
return ""
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<svg viewBox="0 0 24 24" :height="heightNumber" :width="widthNumber" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" preserveAspectRatio="xMidYMid meet">
|
|
<title v-if="titleString.length > 0" v-html="title"></title>
|
|
<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path>
|
|
<path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path>
|
|
<line x1="6" y1="1" x2="6" y2="4"></line>
|
|
<line x1="10" y1="1" x2="10" y2="4"></line>
|
|
<line x1="14" y1="1" x2="14" y2="4"></line>
|
|
</svg>
|
|
</template>
|