diff --git a/packages/design/aurora/src/dropdown-item/index.ts b/packages/design/aurora/src/dropdown-item/index.ts index cdb9b4ee86..e42d87a3e5 100644 --- a/packages/design/aurora/src/dropdown-item/index.ts +++ b/packages/design/aurora/src/dropdown-item/index.ts @@ -30,6 +30,7 @@ export default { dispatch('TinyDropdown', 'selected-index', [dataStore.currentIndex]) + emit('click', dataStore.itemData, event) dispatch('TinyDropdownMenu', 'menu-item-click', [ dataStore.itemData, vm, @@ -47,6 +48,7 @@ export default { emit('item-click', [props.itemData, vm, props.disabled]) } + emit('click', props.itemData, event) dispatch('TinyDropdown', 'menu-item-click', [props.itemData, vm, props.disabled]) dispatch('TinyDropdown', 'is-disabled', [props.disabled]) dispatch('TinyDropdown', 'selected-index', [state.currentIndex]) diff --git a/packages/renderless/src/tabs-mf/index.ts b/packages/renderless/src/tabs-mf/index.ts index b7e49c2127..3d6aafa719 100644 --- a/packages/renderless/src/tabs-mf/index.ts +++ b/packages/renderless/src/tabs-mf/index.ts @@ -288,7 +288,10 @@ export const wheelListener = ({ vm, api, tabs, state }) => export const getBoundRect = (vm) => () => vm.$el.getBoundingClientRect() -export const handleClickDropdownItem = (tabs) => (name) => tabs.clickMore(name) +export const handleClickDropdownItem = (tabs) => (navItem, event) => { + tabs.$emit('click', navItem, event) + tabs.clickMore(navItem.name) +} export const scrollToLeft = (tabs) => () => { tabs.scrollTo(tabs.state.navs[0].name) diff --git a/packages/vue/src/dropdown-item/src/mobile-first.vue b/packages/vue/src/dropdown-item/src/mobile-first.vue index cec067832a..cadd7ca4bf 100644 --- a/packages/vue/src/dropdown-item/src/mobile-first.vue +++ b/packages/vue/src/dropdown-item/src/mobile-first.vue @@ -40,7 +40,7 @@ import { props, setup, defineComponent } from '@opentiny/vue-common' import { renderless, api } from '@opentiny/vue-renderless/dropdown-item/mf' export default defineComponent({ - emits: ['update:modelValue', 'change', 'closed', 'open', 'opened', 'close', 'confirm', 'reset'], + emits: ['update:modelValue', 'change', 'closed', 'open', 'opened', 'close', 'confirm', 'reset', 'click'], props: [...props, 'disabled', 'icon', 'itemData', 'selected', 'label', 'level', 'currentIndex', 'tooltipContent'], setup(props, context): any { return setup({ props, context, renderless, api }) diff --git a/packages/vue/src/tabs/src/mobile-first/tab-bar.vue b/packages/vue/src/tabs/src/mobile-first/tab-bar.vue index b519ee0320..891545ff9a 100644 --- a/packages/vue/src/tabs/src/mobile-first/tab-bar.vue +++ b/packages/vue/src/tabs/src/mobile-first/tab-bar.vue @@ -81,7 +81,7 @@ export default defineComponent({ state.moreList.length ? h('div', { class: 'hidden sm:inline-block w-11 h-11 sm:h-10 text-sm cursor-pointer' }, [ h('span', { class: 'inline-flex w-full h-full flex-col justify-center items-center' }, [ - h(Dropdown, { on: { 'item-click': handleClickDropdownItem }, props: { showIcon: false } }, [ + h(Dropdown, { props: { showIcon: false } }, [ h('span', {}, [h(IconPopup(), { class: 'fill-color-icon-focus text-base' })]), h( DropdownMenu, @@ -90,9 +90,11 @@ export default defineComponent({ props: { popperClass: 'max-h-[theme(spacing.80)] overflow-x-hidden overflow-y-auto' } }, state.moreOptions.map((opt: NavItem) => - h(DropdownItem, { key: key(opt), props: { itemData: opt.name } }, [ - opt.slotTitle ? opt.slotTitle() : opt.title - ]) + h( + DropdownItem, + { key: key(opt), on: { click: handleClickDropdownItem }, props: { itemData: opt } }, + [opt.slotTitle ? opt.slotTitle() : opt.title] + ) ) ) ])

AltStyle によって変換されたページ (->オリジナル) /