@luohc92/vue3-area-selector
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

@luohc92/vue3-area-selector

a area selector for vue3.x

一款 vue3.0 的地址选择器,默认支持三级地址选择,可动态添加四级地址选择,支持双向绑定

Install 安装

npm install @luohc92/vue3-area-selector

Usage 按需使用方法

import {
 AreaSelector,
} from "@luohc92/vue3-area-selector";
import "@luohc92/vue3-area-selector/dist/style.css";

Usage 全局使用方法

在main.js中引入

import AreaSelector from "@luohc92/vue3-area-selector";
import "@luohc92/vue3-area-selector/dist/style.css";
const app = createApp(App);
app.use(AreaSelector);

Example 示例

<template>
  <div class="app">
    <AreaSelector
      @change="change"
      @open="open"
      @close="close"
      :props="areaSelectProps"
      v-model="area"
    >
    </AreaSelector>
  </div>
</template>

<script setup lang="ts">
import { reactive, ref } from "vue";
import {
  AreaSelector,
  AreaDataDto,
  AreaSelectorPropsDto,
  AreaSelectorResultDto,
  Resolve,
} from "@luohc92/vue3-area-selector";
import "@luohc92/vue3-area-selector/dist/style.css";
const areaSelectProps = reactive<AreaSelectorPropsDto>({
  popperClass: "my-area-popup",
  townLazy: true,
  level: 0,
  showAllLevels: true,
  disabled: [],
  lazyLoad: (node: AreaDataDto, resolve: Resolve) => {
    return setTimeout(() => {
      if (node.code === "110101") {
        const data: AreaDataDto[] = [{ code: "110101001", name: "东华门街道" }];
        resolve(data);
      } else if (node.code === "110102") {
        const data: AreaDataDto[] = [{ code: "110101002", name: "西华门街道" }];
        resolve(data);
      } else {
        resolve();
      }
    }, 2000);
  },
});
const area = ref<AreaSelectorResultDto>({
  town: "东华门街道",
  district: "东城区",
  code: "110101001",
  city: "市辖区",
  province: "北京市",
});

const change = (data: AreaSelectorResultDto) => {
  console.log(data);
};
const open = () => {
  console.log("open");
};
const close = (data: AreaSelectorResultDto) => {
  console.log("close", data);
};
</script>

Attributes 属性

Name Type Required Description Default
v-model AreaSelectorResultDto true binding value 选中项绑定值
clearable Boolean false 是否可以清空选项 false
disable Boolean false 是否禁用 false
placeholder String false 占位文字 '请选择'
props 具体见下表 false

Props 属性

Keyboard Type Required Description Default
level Number false selection level 选择器级别: 1 省 / 2 市 / 3 区县 / 0 不限制 0
showAllLevels Boolean false display only the last level 显示路径 true 完整路径 / false 显示最后一级 true
popperClass String false popup class 自定义浮层类名
zIndex number false popup zindex 浮层zIndex 1001
disabled Number[] false disabled array 禁用对象数组
townLazy Boolean false dynamic load towns nodes 加载动态四级乡镇数据 false
lazyLoad Function(node, resolve) false method for loading towns nodes data, only works when townLazy is true 加载动态四级乡镇的方法,仅在 townLazy 为 true 时有效,node 为当前点击的节点,resolve 为数据加载完成的回调(必须调用)
areaData AreaDataDto[] false 自定义区域数据,最多四 级

Events

Name Description Parameters
change change function callback 当选中节点变化时触发 chang node value 选中节点的值
open when popup open callback 当选择窗打开时触发
close when popup close callback 当选择窗关闭时触发
clearable when clear callback 当清空时触发

Slot

Name Description
HTML element that triggers area selector 触发地址选择器显示的 HTML 元素

css var

  --area-selector-panel-bg: #ffffff;
  --area-selector-panel-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
  --area-selector-input-border-color: #dcdfe6;
  --area-selector-input-bg: #ffffff;
  --area-selector-border-color: #dcdfe6;
  --area-selector-disable-bg: #f5f7fa;
  --area-selector-placeholder-color: #a8abb2;
  --area-selector-active-color: #409eff;
  --area-selector-text-color: #606266;
  --area-selector-list-item-hover-color: #f5f5f5;
  --area-selector-list-item-disabled-color: #aaaaaa;
  --area-selector-clearable-color: #aaaaaa;

Readme

Keywords

none

Package Sidebar

Install

npm i @luohc92/vue3-area-selector

Weekly Downloads

1

Version

1.0.7

License

MIT

Unpacked Size

397 kB

Total Files

13

Last publish

Collaborators

  • luohc92