v-region
Version:
Provide Chinese administrative division data selection
118 lines (109 loc) • 2.79 kB
TypeScript
import { AllowedComponentProps, ComponentCustomProps, VNodeProps } from 'vue'
/**
* 区域元素基本模型
*/
export declare interface RegionItem {
key: string
value: string
}
export declare interface RegionModel {
/** 省份模型 */
province?: RegionItem
/** 城市模型 */
city?: RegionItem
/** 区域模型 */
area?: RegionItem
/** 村镇模型 */
town?: RegionItem
}
interface InternalLevel {
key: string
name: string
list: RegionItem[]
}
export declare interface InternalModel {
province: InternalLevel
city: InternalLevel
area: InternalLevel
town: InternalLevel
}
/**
* 用户输入模型
*/
export declare interface RegionValues {
/** 省份编码 */
province?: string
/** 城市编码 */
city?: string
/** 区域编码 */
area?: string
/** 村镇编码 */
town?: string
}
export declare interface RegionTriggerSlotData {
/**
* 当前选择的行政区域数据模型
*/
data?: RegionModel
/**
* 当前选择器是否可见
*/
visible?: boolean
}
export declare interface ComponentProps extends AllowedComponentProps, ComponentCustomProps, VNodeProps {}
export type RegionLanguages = 'cn' | 'en'
export declare interface BaseProps extends ComponentProps {
/** 输入区域模型 */
modelValue?: RegionValues
/**
* 启用城市级别
* @default true
*/
city?: boolean
/**
* 启用区、县级别
* @default true
*/
area?: boolean
/**
* 启用村、镇级别
* @default false
*/
town?: boolean
/**
* 语言
* @default `cn`
*/
language?: RegionLanguages
/**
* 自动选择低级别列表中的第一个项目
* @default false
*/
autoSelectFirst?: boolean
}
export declare interface DropdownProps {
/**
* 语言
* @default `cn`
*/
language?: RegionLanguages
/**
* 禁用组件
* @default false
*/
disabled?: boolean
}
export declare interface SelectorProps extends BaseProps, DropdownProps {}
/** 更新选中区域的键值 */
export declare type EmitUpdateModelValue = (event: "update:modelValue", value: RegionValues) => void
/** 更新选择中区域的名称列表 */
export declare type EmitUpdateNames = (event: "update:names", value: string[]) => void
/** 内容修改后的响应事件 */
export declare type EmitChange = (event: "change", value: RegionModel) => void
/** 选择完成 */
export declare type EmitComplete = (event: 'complete') => void
/** 下拉层显示状态 */
export declare type EmitVisibleChange = (event: 'visible-change', value: boolean) => void
export declare type BaseEmits = EmitUpdateModelValue & EmitUpdateNames & EmitChange
export declare type CoreModuleEmits = BaseEmits & EmitComplete
export declare type DropdownEmits = BaseEmits & EmitComplete & EmitVisibleChange