tiny-vue/examples/sites/demos/pc/app/select/allow-create-composition-ap...

103 lines
2.8 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<div>场景1allow-create + filterable点击创建条目</div>
<br />
<tiny-select v-model="value" allow-create filterable>
<tiny-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </tiny-option>
</tiny-select>
<br />
<br />
<div>场景2allow-create + filterable + default-first-optionEnter 键创建条目</div>
<br />
<tiny-select v-model="value" allow-create filterable default-first-option>
<tiny-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </tiny-option>
</tiny-select>
<br />
<br />
<div>场景3下拉框显示新增按钮</div>
<br />
<tiny-select
v-model="value"
placeholder="请选择"
@top-create-click="handleAddOption"
automatic-dropdown
top-create
ref="selectDom"
>
<tiny-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </tiny-option>
</tiny-select>
<tiny-dialog-box :visible="boxVisibility" @update:visible="boxVisibility = $event" title="新建" width="30%">
<div>
<div>
<span>label</span>
<br />
<br />
<tiny-input v-model="optionLabel"></tiny-input>
</div>
<br />
<div>
<span>value</span>
<br />
<br />
<tiny-input v-model="optionValue"></tiny-input>
</div>
</div>
<template #footer>
<tiny-button @click="boxVisibility = false">取消</tiny-button>
<tiny-button type="primary" @click="handleConfirm"> 确定 </tiny-button>
</template>
</tiny-dialog-box>
</div>
</template>
<script setup>
import { ref } from 'vue'
import {
Select as TinySelect,
Option as TinyOption,
Input as TinyInput,
Button as TinyButton,
DialogBox as TinyDialogBox,
Modal
} from '@opentiny/vue'
const options = ref([
{ value: '选项1', label: '黄金糕' },
{ value: '选项2', label: '双皮奶' },
{ value: '选项3', label: '蚵仔煎' },
{ value: '选项4', label: '龙须面' },
{ value: '选项5', label: '北京烤鸭' }
])
const selectDom = ref(null)
const value = ref('')
const boxVisibility = ref(false)
const optionLabel = ref('')
const optionValue = ref('')
const handleAddOption = () => {
optionValue.value = ''
optionLabel.value = ''
boxVisibility.value = true
}
const handleConfirm = () => {
if (!optionLabel.value || !optionValue.value) {
Modal.message({ message: '选项不能为空!', status: 'warning' })
return
}
boxVisibility.value = false
options.value.unshift({
value: optionValue,
label: optionLabel
})
selectDom.value.focus()
}
</script>
<style lang="less" scoped>
.tiny-select {
width: 280px;
}
</style>