🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@ophiuchus/dropdown

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ophiuchus/dropdown

### 介绍

latest
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

DropdownMenu 下拉菜单

介绍

向下弹出的菜单列表。

引入

// 方式1(推荐)
import Vue from 'vue';
import Dropdown from '@ophiuchus/dropdown';

Vue.use(Dropdown);

// 方式2
import Vue from 'vue';
import { DropdownMenu, DropdownItem } from '@ophiuchus/dropdown';

Vue.component(DropdownMenu.name, DropdownMenu);
Vue.component(DropdownItem.name, DropdownItem);

代码演示

基础用法

<sf-dropdown-menu>
  <sf-dropdown-item v-model="value1" :options="option1" />
  <sf-dropdown-item v-model="value2" :options="option2" />
</sf-dropdown-menu>
export default {
  data() {
    return {
      value1: 0,
      value2: 'a',
      option1: [
        { text: '全部商品', value: 0 },
        { text: '新款商品', value: 1 },
        { text: '活动商品', value: 2 },
      ],
      option2: [
        { text: '默认排序', value: 'a' },
        { text: '好评排序', value: 'b' },
        { text: '销量排序', value: 'c' },
      ],
    };
  },
};

自定义菜单内容

通过插槽可以自定义 DropdownItem 的内容,此时需要使用实例上的 toggle 方法手动控制菜单的显示。

<sf-dropdown-menu>
  <sf-dropdown-item v-model="value" :options="option" />
  <sf-dropdown-item title="筛选" ref="item">
    <sf-cell center title="包邮">
      <template #right-icon>
        <sf-switch v-model="switch1" size="24" active-color="#ee0a24" />
      </template>
    </sf-cell>
    <sf-cell center title="团购">
      <template #right-icon>
        <sf-switch v-model="switch2" size="24" active-color="#ee0a24" />
      </template>
    </sf-cell>
    <div style="padding: 5px 16px;">
      <sf-button type="danger" block round @click="onConfirm">
        确认
      </sf-button>
    </div>
  </sf-dropdown-item>
</sf-dropdown-menu>
export default {
  data() {
    return {
      value: 0,
      switch1: false,
      switch2: false,
      option: [
        { text: '全部商品', value: 0 },
        { text: '新款商品', value: 1 },
        { text: '活动商品', value: 2 },
      ],
    };
  },
  methods: {
    onConfirm() {
      this.$refs.item.toggle();
    },
  },
};

自定义选中态颜色

通过 active-color 属性可以自定义菜单标题和选项的选中态颜色。

<sf-dropdown-menu active-color="#1989fa">
  <sf-dropdown-item v-model="value1" :options="option1" />
  <sf-dropdown-item v-model="value2" :options="option2" />
</sf-dropdown-menu>

向上展开

direction 属性值设置为 up,菜单即可向上展开。

<sf-dropdown-menu direction="up">
  <sf-dropdown-item v-model="value1" :options="option1" />
  <sf-dropdown-item v-model="value2" :options="option2" />
</sf-dropdown-menu>

禁用菜单

<sf-dropdown-menu>
  <sf-dropdown-item v-model="value1" disabled :options="option1" />
  <sf-dropdown-item v-model="value2" disabled :options="option2" />
</sf-dropdown-menu>

API

DropdownMenu Props

参数说明类型默认值
active-color菜单标题和选项的选中态颜色string#ee0a24
direction菜单展开方向,可选值为upstringdown
z-index菜单栏 z-index 层级number | string10
duration动画时长,单位秒number | string0.2
overlay是否显示遮罩层booleantrue
close-on-click-overlay是否在点击遮罩层后关闭菜单booleantrue
close-on-click-outside是否在点击外部元素后关闭菜单booleantrue

DropdownItem Props

参数说明类型默认值
value当前选中项对应的 value,可以通过v-model双向绑定number | string-
title菜单项标题string当前选中项文字
options选项数组Option[][]
disabled是否禁用菜单booleanfalse
lazy-render是否在首次展开时才渲染菜单内容booleantrue
title-class标题额外类名string-
get-container指定挂载的节点,用法示例string | () => Element-

DropdownItem Events

事件名说明回调参数
change点击选项导致 value 变化时触发value
open打开菜单栏时触发-
close关闭菜单栏时触发-
opened打开菜单栏且动画结束后触发-
closed关闭菜单栏且动画结束后触发-

DropdownItem Slots

名称说明
default菜单内容
title自定义菜单项标题

DropdownItem 方法

通过 ref 可以获取到 DropdownItem 实例并调用实例方法,详见组件实例方法

方法名说明参数返回值
toggle切换菜单展示状态,传 true 为显示,false 为隐藏,不传参为取反show?: boolean-

Option 数据结构

键名说明类型
text文字string
value标识符number | string
icon左侧图标名称或图片链接string

样式变量

组件提供了下列 Less 变量,可用于自定义样式,使用方法请参考主题定制

名称默认值描述
@dropdown-menu-height48px-
@dropdown-menu-background-color@white-
@dropdown-menu-box-shadow0 2px 12px fade(@gray-7, 12)-
@dropdown-menu-title-font-size15px-
@dropdown-menu-title-text-color@text-color-
@dropdown-menu-title-active-text-color@red-
@dropdown-menu-title-disabled-text-color@gray-6-
@dropdown-menu-title-padding0 @padding-xs-
@dropdown-menu-title-line-height@line-height-lg-
@dropdown-menu-option-active-color@red-
@dropdown-menu-content-max-height80%-
@dropdown-item-z-index10-

常见问题

父元素设置 transform 后,下拉菜单的位置错误?

DropdownMenu 嵌套在 Tabs 等组件内部使用时,可能会遇到下拉菜单位置错误的问题。这是因为在 Chrome 浏览器中,transform 元素内部的 fixed 布局会降级成 absolute 布局,导致下拉菜单的布局异常。

DropdownItemget-container 属性设置为 body 即可避免此问题:

<sf-dropdown-menu>
  <sf-dropdown-item get-container="body" />
  <sf-dropdown-item get-container="body" />
</sf-dropdown-menu>

Keywords

ui

FAQs

Package last updated on 26 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts