soiz1's picture
Upload folder using huggingface_hub
4d70170 verified
raw
history blame
1.78 kB
<script lang="ts">
import { computed, defineComponent, provide, reactive } from 'vue'
const statusIcons = {
danger: 'error',
warning: 'warning',
info: 'info',
success: 'check_circle',
} as const
export default defineComponent({
props: {
subtitle: {
type: String,
default: undefined,
},
subtitleIcon: {
type: String,
default: undefined,
},
statusIcon: {
type: Boolean,
default: false,
},
title: {
type: String,
default: undefined,
},
},
setup(props) {
const injectedData = reactive({
focused: false,
status: null,
})
provide('VueFormField', {
data: injectedData,
})
const subtitleIconId = computed(() => {
if (props.subtitleIcon) {
return props.subtitleIcon
}
if (props.statusIcon) {
const status = injectedData.status
if (status) {
return statusIcons[status]
}
}
return ''
})
return {
injectedData,
subtitleIconId,
}
},
})
</script>
<template>
<div
class="vue-ui-form-field"
:class="{
focused: injectedData.focused,
[`status-${injectedData.status}`]: injectedData.status,
}"
>
<div class="wrapper">
<div class="title">
<slot name="title">
<span v-html="title" />
</slot>
</div>
<div class="content">
<slot />
</div>
<div
class="subtitle"
:class="{
[`vue-ui-text ${injectedData.status}`]: injectedData.status,
}"
>
<VueIcon v-if="subtitleIconId" :icon="subtitleIconId" />
<slot name="subtitle">
<span v-html="subtitle" />
</slot>
</div>
</div>
</div>
</template>