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.label }
+ { cascaderItem.label }
{
- 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 () => (
<>
-
+
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
+
+```
+
+:::
+