chore: 拆分 dropdown 为 dropdown 与 dropdown-menu
This commit is contained in:
@@ -17,7 +17,8 @@
|
||||
}
|
||||
|
||||
.layui-dropdown dl > .layui-dropdown-menu {
|
||||
border: 1px solid @global-neutral-color-3;
|
||||
border: 1px solid #e4e7ed;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
|
||||
border-radius: @global-border-radius;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,34 +44,17 @@ defineExpose({ open, hide, toggle });
|
||||
|
||||
<template>
|
||||
<div
|
||||
v-if="trigger === 'click'"
|
||||
ref="dropdownRef"
|
||||
class="layui-dropdown"
|
||||
:class="[openState ? 'layui-dropdown-up' : '']"
|
||||
@mouseenter="trigger === 'hover' && open()"
|
||||
@mouseleave="trigger === 'hover' && hide()"
|
||||
:class="{'layui-dropdown-up' : openState}"
|
||||
>
|
||||
<div @click="toggle">
|
||||
<div @click="trigger === 'click' && toggle()">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<dl class="layui-anim layui-anim-upbit">
|
||||
<ul class="layui-menu layui-dropdown-menu">
|
||||
<slot name="content"></slot>
|
||||
</ul>
|
||||
</dl>
|
||||
</div>
|
||||
<div
|
||||
v-if="trigger === 'hover'"
|
||||
class="layui-dropdown"
|
||||
:class="[openState ? 'layui-dropdown-up' : '']"
|
||||
@mouseenter="open"
|
||||
@mouseleave="hide"
|
||||
>
|
||||
<div>
|
||||
<slot></slot>
|
||||
</div>
|
||||
<dl class="layui-anim layui-anim-upbit">
|
||||
<ul class="layui-menu layui-dropdown-menu">
|
||||
<slot name="content"></slot>
|
||||
</ul>
|
||||
<slot name="content"></slot>
|
||||
</dl>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
11
src/component/dropdownMenu/index.vue
Normal file
11
src/component/dropdownMenu/index.vue
Normal file
@@ -0,0 +1,11 @@
|
||||
<template>
|
||||
<ul class="layui-menu layui-dropdown-menu">
|
||||
<slot></slot>
|
||||
</ul>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "LayDropdownMenu"
|
||||
}
|
||||
</script>
|
||||
8
src/component/dropdownMenuItem/index.ts
Normal file
8
src/component/dropdownMenuItem/index.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import type { App } from "vue";
|
||||
import Component from "./index.vue";
|
||||
|
||||
Component.install = (app: App) => {
|
||||
app.component(Component.name, Component);
|
||||
};
|
||||
|
||||
export default Component;
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "LayDropdownItem",
|
||||
name: "LayDropdownMenuItem",
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -197,4 +197,4 @@ const searchList = function (str: string, container: any) {
|
||||
</div>
|
||||
</template>
|
||||
</lay-dropdown>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
@@ -17,6 +17,7 @@ import {
|
||||
toRefs,
|
||||
Ref,
|
||||
} from "vue";
|
||||
import LayScroll from "../scroll";
|
||||
import { onClickOutside } from "@vueuse/core";
|
||||
import { SelectItem } from "../../types";
|
||||
|
||||
@@ -141,8 +142,8 @@ const selectItemPush = function (p: SelectItem) {
|
||||
}
|
||||
};
|
||||
provide("selectItemHandle", selectItemHandle);
|
||||
provide("selectItem", selectItem);
|
||||
provide("selectItemPush", selectItemPush);
|
||||
provide("selectItem", selectItem);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -210,12 +211,14 @@ provide("selectItemPush", selectItemPush);
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下拉内容 -->
|
||||
<dl class="layui-anim layui-anim-upbit">
|
||||
<!-- 多选不支持空提示 -->
|
||||
<template v-if="!multiple && showEmpty">
|
||||
<lay-select-option :value="null" :label="emptyMessage ?? placeholder" />
|
||||
</template>
|
||||
<slot></slot>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -54,7 +54,8 @@ import LayEmpty from "./component/empty/index";
|
||||
import LayFormItem from "./component/formItem/index";
|
||||
import LayRate from "./component/rate/index";
|
||||
import LayDropdown from "./component/dropdown/index";
|
||||
import LayDropdownItem from "./component/dropdownItem/index";
|
||||
import LayDropdownMenu from "./component/dropdownMenu/index";
|
||||
import LayDropdownMenuItem from "./component/dropdownMenuItem/index";
|
||||
import LayTab from "./component/tab/index";
|
||||
import LayTabItem from "./component/tabItem/index";
|
||||
import LayTree from "./component/tree/index";
|
||||
@@ -129,7 +130,8 @@ const components: Record<string, Component> = {
|
||||
LayFormItem,
|
||||
LayRate,
|
||||
LayDropdown,
|
||||
LayDropdownItem,
|
||||
LayDropdownMenu,
|
||||
LayDropdownMenuItem,
|
||||
LayTab,
|
||||
LayTabItem,
|
||||
LayIconPicker,
|
||||
@@ -214,7 +216,8 @@ export {
|
||||
LayFormItem,
|
||||
LayRate,
|
||||
LayDropdown,
|
||||
LayDropdownItem,
|
||||
LayDropdownMenu,
|
||||
LayDropdownMenuItem,
|
||||
LayTab,
|
||||
LayTabItem,
|
||||
LayIconPicker,
|
||||
|
||||
Reference in New Issue
Block a user