soiz1's picture
Upload folder using huggingface_hub
4d70170 verified
raw
history blame
2.42 kB
<script lang="ts">
import type { PropType } from 'vue'
import { computed, defineComponent } from 'vue'
import type { PluginSettingsItem } from '@vue/devtools-api'
import type { Plugin } from '.'
export default defineComponent({
props: {
plugin: {
type: Object as PropType<Plugin>,
required: true,
},
id: {
type: String,
required: true,
},
schema: {
type: Object as PropType<PluginSettingsItem>,
required: true,
},
value: {
required: true,
},
},
emits: ['update:value'],
setup(props, { emit }) {
const model = computed({
get() {
return props.value
},
set(value) {
emit('update:value', value)
},
})
function onLabelClick() {
if (props.schema.type === 'boolean') {
model.value = !model.value
}
}
return {
model,
onLabelClick,
}
},
})
</script>
<template>
<div
class="flex items-start px-6 py-2 hover:bg-green-50 dark:hover:bg-green-900"
@click="onLabelClick()"
>
<div class="flex-1 select-none text-sm py-1.5">
<div>{{ schema.label }}</div>
<div
v-if="schema.description"
class="opacity-75 text-xs"
>
{{ schema.description }}
</div>
</div>
<div class="w-1/2">
<div
v-if="schema.type === 'boolean'"
class="my-2 w-full h-[max-content]"
@click.stop
>
<VueSwitch
v-model="model"
class="w-full extend-left"
/>
</div>
<template v-else-if="schema.type === 'choice'">
<VueGroup
v-if="schema.component === 'button-group'"
v-model="model"
class="extend w-full"
>
<VueGroupButton
v-for="(option, index) of schema.options"
:key="index"
:value="option.value"
:label="option.label"
/>
</VueGroup>
<VueSelect
v-else
v-model="model"
class="w-full"
>
<VueSelectButton
v-for="(option, index) of schema.options"
:key="index"
:value="option.value"
:label="option.label"
/>
</VueSelect>
</template>
<VueInput
v-else-if="schema.type === 'text'"
v-model="model"
class="w-full"
/>
</div>
</div>
</template>