refactor(Dropdown): move item click logic to a proper function

This commit is contained in:
Benjamin Canac
2023-11-16 12:32:41 +01:00
parent 9b976a0b68
commit e1e5fa902b

View File

@@ -29,7 +29,7 @@
:rel="rel" :rel="rel"
:target="target" :target="target"
:class="[ui.item.base, ui.item.padding, ui.item.size, ui.item.rounded, active ? ui.item.active : ui.item.inactive, itemDisabled && ui.item.disabled]" :class="[ui.item.base, ui.item.padding, ui.item.size, ui.item.rounded, active ? ui.item.active : ui.item.inactive, itemDisabled && ui.item.disabled]"
@click="(e) => [!!item.click && item.click(e), !!href && !isExternal && navigate(e), close()]" @click="onClick($event, item, { href, navigate, close, isExternal })"
> >
<slot :name="item.slot || 'item'" :item="item"> <slot :name="item.slot || 'item'" :item="item">
<UIcon v-if="item.icon" :name="item.icon" :class="[ui.item.icon.base, active ? ui.item.icon.active : ui.item.icon.inactive, item.iconClass]" /> <UIcon v-if="item.icon" :name="item.icon" :class="[ui.item.icon.base, active ? ui.item.icon.active : ui.item.icon.inactive, item.iconClass]" />
@@ -187,6 +187,18 @@ export default defineComponent({
}, props.closeDelay) }, props.closeDelay)
} }
function onClick (e, item, { href, navigate, close, isExternal }) {
if (item.click) {
item.click(e)
}
if (href && !isExternal) {
navigate(e)
close()
}
}
const NuxtLink = resolveComponent('NuxtLink') const NuxtLink = resolveComponent('NuxtLink')
return { return {
@@ -200,6 +212,7 @@ export default defineComponent({
containerStyle, containerStyle,
onMouseOver, onMouseOver,
onMouseLeave, onMouseLeave,
onClick,
omit, omit,
NuxtLink NuxtLink
} }