From 8789555c8c028e95753f6b404b7b47fa029d5cbd Mon Sep 17 00:00:00 2001 From: lwl <1181102955@qq.com> Date: Thu, 14 Oct 2021 22:12:47 +0800 Subject: [PATCH 01/18] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0click=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=A4=84=E7=90=86=EF=BC=8C=E5=8C=BA=E5=88=86hover?= =?UTF-8?q?=E4=B8=8Eclick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cascader/components/cascader-item/index.tsx | 16 ++++++++++------ .../cascader-list/cascader-list-types.ts | 8 ++++++-- .../cascader/components/cascader-list/index.tsx | 4 ++-- devui/cascader/hooks/use-cascader-item.ts | 9 +++++++++ devui/cascader/src/cascader-types.ts | 8 +++++++- devui/cascader/src/cascader.tsx | 8 +++++--- docs/components/cascader/index.md | 1 + 7 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 devui/cascader/hooks/use-cascader-item.ts diff --git a/devui/cascader/components/cascader-item/index.tsx b/devui/cascader/components/cascader-item/index.tsx index 5182dd22..59cdebde 100644 --- a/devui/cascader/components/cascader-item/index.tsx +++ b/devui/cascader/components/cascader-item/index.tsx @@ -2,19 +2,23 @@ import { getRootClass } from './use-class' import { optionsHandles } from '../../hooks/use-cascader-options' import './index.scss' export const DCascaderItem = (props) => { - const { cascaderli, ulIndex } = props + // console.log(props) + const { cascaderItem, ulIndex } = props const { changeCascaderIndexs } = optionsHandles() const rootClasses = getRootClass() - const mouseHover = () => { - changeCascaderIndexs(cascaderli, ulIndex) + const mouseEvent = () => { + changeCascaderIndexs(cascaderItem, ulIndex) } + const onMouseEvent = { + [props.cascaderItemNeedProps.trigger === 'hover' ? 'onMouseenter' : 'onClick']: mouseEvent + } return ( -
  • +
  • { - cascaderli?.children?.length > 0 && + cascaderItem?.children?.length > 0 && }
  • ) diff --git a/devui/cascader/components/cascader-list/cascader-list-types.ts b/devui/cascader/components/cascader-list/cascader-list-types.ts index 85e2152d..f1fd8fed 100644 --- a/devui/cascader/components/cascader-list/cascader-list-types.ts +++ b/devui/cascader/components/cascader-list/cascader-list-types.ts @@ -1,12 +1,12 @@ import type { PropType, ExtractPropTypes } from 'vue' -import { CascaderItem } from '../../src/cascader-types' +import { CascaderItem, PickCascader } from '../../src/cascader-types' export const cascaderulProps = { /** * 每个ul中的li * @type {CascaderItem[]} * @default [] */ - cascaderlis: { + cascaderItems: { type: Array as PropType, default: [], }, @@ -18,6 +18,10 @@ export const cascaderulProps = { ulIndex: { type: Number, default: 0 + }, + cascaderItemNeedProps: { + type: Object as PropType, + default: {} } } export type CascaderulProps = ExtractPropTypes diff --git a/devui/cascader/components/cascader-list/index.tsx b/devui/cascader/components/cascader-list/index.tsx index 4fa19244..562bd5c3 100644 --- a/devui/cascader/components/cascader-list/index.tsx +++ b/devui/cascader/components/cascader-list/index.tsx @@ -10,8 +10,8 @@ export default defineComponent({ const rootClasses = getRootClass() return () => (
      - {props.cascaderlis.map((item, index) => { - return + {props.cascaderItems.map((item, index) => { + return })}
    ) diff --git a/devui/cascader/hooks/use-cascader-item.ts b/devui/cascader/hooks/use-cascader-item.ts new file mode 100644 index 00000000..b8b688ee --- /dev/null +++ b/devui/cascader/hooks/use-cascader-item.ts @@ -0,0 +1,9 @@ +import { CascaderProps, UseCascaderItemCallback } from '../src/cascader-types' +export const userCascaderItem = (props: CascaderProps): UseCascaderItemCallback => { + const cascaderItemNeedProps = { + trigger: props.trigger + } + return { + cascaderItemNeedProps + } +} \ No newline at end of file diff --git a/devui/cascader/src/cascader-types.ts b/devui/cascader/src/cascader-types.ts index 13abc1af..6d287bab 100644 --- a/devui/cascader/src/cascader-types.ts +++ b/devui/cascader/src/cascader-types.ts @@ -67,4 +67,10 @@ export interface PopupTypes { export interface OptionsCallback { cascaderOptions: never | UnwrapNestedRefs<[CascaderItem[]]> changeCascaderIndexs: (optionItem: CascaderItem, ulIndex: number) => void -} \ No newline at end of file +} + +type cascaderItemExtendsProps = 'trigger' +export type PickCascader = Pick +export interface UseCascaderItemCallback { + cascaderItemNeedProps: PickCascader +} diff --git a/devui/cascader/src/cascader.tsx b/devui/cascader/src/cascader.tsx index d0565e61..bf0523d6 100644 --- a/devui/cascader/src/cascader.tsx +++ b/devui/cascader/src/cascader.tsx @@ -6,7 +6,7 @@ import { getRootClass } from '../hooks/use-cascader-class' import { popupHandles } from '../hooks/use-cascader-popup' import DCascaderList from '../components/cascader-list' import { optionsHandles } from '../hooks/use-cascader-options' - +import { userCascaderItem } from '../hooks/use-cascader-item' export default defineComponent({ name: 'DCascader', @@ -25,9 +25,11 @@ export default defineComponent({ const rootClasses = getRootClass(props, menuShow) // 级联菜单操作,变换ul、li等 const { cascaderOptions } = optionsHandles(props.options) + // 传递给cascaderItem的props + const { cascaderItemNeedProps } = userCascaderItem(props) return () => ( <> -
    +
    {cascaderOptions.map((item, index) => { - return + return })}
    diff --git a/docs/components/cascader/index.md b/docs/components/cascader/index.md index 88e98169..cb35e239 100644 --- a/docs/components/cascader/index.md +++ b/docs/components/cascader/index.md @@ -7,6 +7,7 @@ ```vue +``` + +::: +