feat: filterable autocomplete
This commit is contained in:
parent
f0fae04018
commit
e9bbd2fba7
@ -10,6 +10,7 @@
|
|||||||
:size="attrs.size || 'sm'"
|
:size="attrs.size || 'sm'"
|
||||||
:variant="attrs.variant"
|
:variant="attrs.variant"
|
||||||
:placeholder="attrs.placeholder"
|
:placeholder="attrs.placeholder"
|
||||||
|
:filterable="false"
|
||||||
>
|
>
|
||||||
<template #target="{ open, togglePopover }">
|
<template #target="{ open, togglePopover }">
|
||||||
<slot name="target" v-bind="{ open, togglePopover }" />
|
<slot name="target" v-bind="{ open, togglePopover }" />
|
||||||
|
|||||||
@ -121,14 +121,36 @@ import {
|
|||||||
import { Popover, Button, FeatherIcon } from 'frappe-ui'
|
import { Popover, Button, FeatherIcon } from 'frappe-ui'
|
||||||
import { ref, computed, useAttrs, useSlots, watch, nextTick } from 'vue'
|
import { ref, computed, useAttrs, useSlots, watch, nextTick } from 'vue'
|
||||||
|
|
||||||
const props = defineProps([
|
const props = defineProps({
|
||||||
'modelValue',
|
modelValue: {
|
||||||
'options',
|
type: String,
|
||||||
'placeholder',
|
default: '',
|
||||||
'variant',
|
},
|
||||||
'size',
|
options: {
|
||||||
'disabled',
|
type: Array,
|
||||||
])
|
default: () => [],
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
default: 'md',
|
||||||
|
},
|
||||||
|
variant: {
|
||||||
|
type: String,
|
||||||
|
default: 'subtle',
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
filterable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
const emit = defineEmits(['update:modelValue', 'update:query', 'change'])
|
const emit = defineEmits(['update:modelValue', 'update:query', 'change'])
|
||||||
|
|
||||||
const query = ref('')
|
const query = ref('')
|
||||||
@ -170,7 +192,7 @@ const groups = computed(() => {
|
|||||||
key: i,
|
key: i,
|
||||||
group: group.group,
|
group: group.group,
|
||||||
hideLabel: group.hideLabel || false,
|
hideLabel: group.hideLabel || false,
|
||||||
items: filterOptions(group.items),
|
items: props.filterable ? filterOptions(group.items) : group.items,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.filter((group) => group.items.length > 0)
|
.filter((group) => group.items.length > 0)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user