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

@ophiuchus/cascader

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/cascader

### 介绍

latest
npmnpm
Version
1.0.1
Version published
Weekly downloads
2
-81.82%
Maintainers
1
Weekly downloads
 
Created
Source

Cascader 级联选择

介绍

级联选择框,用于多层级数据的选择,典型场景为省市区选择。

引入

import Vue from 'vue';
import Cascader from '@ophiuchus/cascader';

Vue.use(Cascader);

代码演示

基础用法

级联选择组件可以搭配 Field 和 Popup 组件使用,示例如下:

<sf-field
  v-model="fieldValue"
  is-link
  readonly
  label="地区"
  placeholder="请选择所在地区"
  @click="show = true"
/>
<sf-popup v-model="show" round position="bottom">
  <sf-cascader
    v-model="cascaderValue"
    title="请选择所在地区"
    :options="options"
    @close="show = false"
    @finish="onFinish"
  />
</sf-popup>
export default {
  data() {
    return {
      show: false,
      fieldValue: '',
      cascaderValue: '',
      // 选项列表,children 代表子选项,支持多级嵌套
      options: [
        {
          text: '浙江省',
          value: '330000',
          children: [{ text: '杭州市', value: '330100' }],
        },
        {
          text: '江苏省',
          value: '320000',
          children: [{ text: '南京市', value: '320100' }],
        },
      ],
    };
  },
  methods: {
    // 全部选项选择完毕后,会触发 finish 事件
    onFinish({ selectedOptions }) {
      this.show = false;
      this.fieldValue = selectedOptions.map((option) => option.text).join('/');
    },
  },
};

自定义颜色

通过 active-color 属性来设置选中状态的高亮颜色。

<sf-cascader
  v-model="cascaderValue"
  title="请选择所在地区"
  :options="options"
  active-color="#1989fa"
  @close="show = false"
  @finish="onFinish"
/>

异步加载选项

可以监听 change 事件并动态设置 options,实现异步加载选项。

<sf-field
  v-model="fieldValue"
  is-link
  readonly
  label="地区"
  placeholder="请选择所在地区"
  @click="show = true"
/>
<sf-popup v-model="show" round position="bottom">
  <sf-cascader
    v-model="cascaderValue"
    title="请选择所在地区"
    :options="options"
    @close="show = false"
    @change="onChange"
    @finish="onFinish"
  />
</sf-popup>
export default {
  data() {
    return {
      show: false,
      fieldValue: '',
      cascaderValue: '',
      options: [
        {
          text: '浙江省',
          value: '330000',
          children: [],
        },
      ],
    };
  },
  methods: {
    onChange({ value }) {
      if (value === this.options[0].value) {
        setTimeout(() => {
          this.options[0].children = [
            { text: '杭州市', value: '330100' },
            { text: '宁波市', value: '330200' },
          ];
        }, 500);
      }
    },
    onFinish({ selectedOptions }) {
      this.show = false;
      this.fieldValue = selectedOptions.map((option) => option.text).join('/');
    },
  },
};

自定义字段名

通过 field-names 属性可以自定义 options 里的字段名称。

<sf-cascader
  v-model="cascaderValue"
  title="请选择所在地区"
  :options="options"
  :field-names="fieldNames"
/>
export default {
  data() {
    return {
      cascaderValue: '',
      fieldNames: {
        text: 'name',
        value: 'code',
        children: 'items',
      },
      options: [
        {
          name: '浙江省',
          code: '330000',
          items: [{ name: '杭州市', code: '330100' }],
        },
        {
          name: '江苏省',
          code: '320000',
          items: [{ name: '南京市', code: '320100' }],
        },
      ],
    };
  },
};

API

Props

参数说明类型默认值
title顶部标题string-
value选中项的值string | number-
options可选项数据源Option[][]
placeholder未选中时的提示文案string请选择
active-color选中状态的高亮颜色string#ee0a24
closeable是否显示关闭图标booleantrue
field-names自定义 options 结构中的字段object{ text: 'text', value: 'value', children: 'children' }

Events

事件说明回调参数
change选中项变化时触发{ value, selectedOptions, tabIndex }
finish全部选项选择完成后触发{ value, selectedOptions, tabIndex }
close点击关闭图标时触发-

Slots

名称说明
title自定义顶部标题

样式变量

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

名称默认值描述
@cascader-header-height48px-
@cascader-title-font-size@font-size-lg-
@cascader-title-line-height20px-
@cascader-close-icon-size22px-
@cascader-close-icon-color@gray-5-
@cascader-close-icon-active-color@gray-6-
@cascader-selected-icon-size18px-
@cascader-tabs-height48px-
@cascader-active-color@red-
@cascader-options-height384px-
@cascader-tab-color@text-color-
@cascader-unselected-tab-color@gray-6-

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