diff --git a/packages/devui-vue/devui/accordion/src/accordion-item.tsx b/packages/devui-vue/devui/accordion/src/accordion-item.tsx index 77389aa8537918cf67f72656a0f211d425e647a7..92e00773701f34cd5ccaa63aad35ff0c993b7946 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-item.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-item.tsx @@ -1,13 +1,92 @@ -import { defineComponent } from 'vue' +import { defineComponent, toRefs, computed, inject } from 'vue' +import { accordionProps } from './accordion-types' +import { AccordionItemClickEvent, AccordionMenuItem } from './accordion.type' +import { getRootSlots } from '../src/utils' export default defineComponent({ name: 'DAccordionItem', props: { - + item: Object as () => AccordionMenuItem, + deepth: { + type: Number, + default: 0 + }, + parent: { + type: Object as () => AccordionMenuItem, + default: null + }, + ...accordionProps }, - setup() { + setup(props) { + const { + item, + deepth, + parent, + titleKey, + activeKey, + disabledKey, + } = toRefs(props) + + const rootSlots = getRootSlots() + const accordionCtx = inject('accordionContext') as any + + let parentValue = parent.value + let deepValue = deepth.value + + const disabled = computed(() => { + return item.value && item.value[disabledKey.value] + }) + const title = computed(() => { + return item.value && item.value[titleKey.value] + }) + const active = computed(() => { + return item.value && item.value[activeKey.value] + }) + + const childActived = computed(() => { + return active.value + }) + + const itemClick = (itemEvent: AccordionItemClickEvent) => { + if (item.value && !disabled.value) { + accordionCtx.itemClickFn(itemEvent) + } + } + return () => { - return