From 411884ab0c6dc87cae3bff8e697d0c14010735c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=BF=9C=E6=88=90?= Date: Tue, 23 Nov 2021 00:15:23 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=8F=8A=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devui/accordion/src/accordion-item.tsx | 84 ++++++++++++++- .../devui/accordion/src/accordion-list.tsx | 102 +++++++++--------- .../devui/accordion/src/accordion-menu.tsx | 66 +++++++++--- .../accordion/src/accordion-open-icon.tsx | 20 ++++ .../devui/accordion/src/accordion.tsx | 15 ++- .../docs/components/accordion/index.md | 17 +-- 6 files changed, 220 insertions(+), 84 deletions(-) create mode 100644 packages/devui-vue/devui/accordion/src/accordion-open-icon.tsx diff --git a/packages/devui-vue/devui/accordion/src/accordion-item.tsx b/packages/devui-vue/devui/accordion/src/accordion-item.tsx index 77389aa8..897f2191 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-item.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-item.tsx @@ -1,13 +1,87 @@ -import { defineComponent } from 'vue' +import { defineComponent, toRefs, Fragment, computed, inject } from 'vue' +import { accordionProps } from './accordion-types' +import { AccordionItemClickEvent, AccordionMenuItem } from './accordion.type' 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, {slots}) { + const { + item, + deepth, + parent, + openKey, + menuItemTemplate, + activeKey, + autoOpenActiveMenu, + disabledKey, + itemTemplate + } = toRefs(props) + + const accordionCtx = inject('accordionContext') as any + + const itemClick = (itemEvent: AccordionItemClickEvent) => { + if(item.value && !item.value.disabled) { + accordionCtx.itemClickFn(itemEvent) + } + } + + const childActived = computed(() => { + return item.value.active + }) + return () => { - return
  • d-accordion-item
  • + + return ( + <> +
    + itemClick({ + item: item.value, + parent: parent.value, + event: e + }) + } + > +
    + {!itemTemplate.value && {item.value.title}} + { + itemTemplate.value && + + {slots.itemTemplate()} + + } +
    + + // + ) } } -}) \ No newline at end of file +}) diff --git a/packages/devui-vue/devui/accordion/src/accordion-list.tsx b/packages/devui-vue/devui/accordion/src/accordion-list.tsx index 3fba7abb..7e622671 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-list.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-list.tsx @@ -1,14 +1,16 @@ -import { defineComponent, toRefs } from 'vue' +import { computed, defineComponent, inject, toRefs, Fragment } from 'vue' import type { AccordionMenuItem } from './accordion.type' import DAccordionMenu from './accordion-menu' +import DAccordionItem from './accordion-item' import { accordionProps } from './accordion-types' - +import './accordion.scss' export default defineComponent({ name: 'DAccordionList', inheritAttrs: false, components: { - DAccordionMenu + DAccordionMenu, + DAccordionItem }, props: { data: { @@ -24,61 +26,61 @@ export default defineComponent({ default: null }, innerListTemplate: Boolean, - ...accordionProps, + ...accordionProps }, - setup(props, {attrs, slots}) { - const { - childrenKey, - innerListTemplate, - deepth - } = toRefs(props) + setup(props, { attrs, slots }) { + const { childrenKey, innerListTemplate, deepth, parent, data, linkType } = toRefs(props) + + const accordionCtx = inject('accordionContext') as any + return () => { return ( <> - { - !innerListTemplate.value && -