UNPKG

nutui-uniapp

Version:

京东风格的轻量级移动端 Uniapp、Vue3 组件库(支持小程序开发)

105 lines (86 loc) 2.75 kB
import type { ExtractPropTypes } from 'vue' import { CHANGE_EVENT, CLOSE_EVENT, SELECTED_EVENT, UPDATE_MODEL_EVENT, UPDATE_VISIBLE_EVENT } from '../_constants' import { commonProps, isBoolean, makeArrayProp, makeNumericProp, makeStringProp, truthProp } from '../_utils' import { popupProps } from '../popup' import type { AddressExistRegionData, AddressRegionData, AddressType } from './type' export const addressProps = { ...popupProps, ...commonProps, /** * @description 设置默认选中值 */ modelValue: makeArrayProp<any>([]), /** * @description 是否打开地址选择 */ visible: Boolean, /** * @description 地址选择类型:'exist' | 'custom' | 'custom2' */ type: makeStringProp<AddressType>('custom'), /** * @description 自定义地址选择标题 */ customAddressTitle: makeStringProp(''), /** * @description 省份数据 */ province: makeArrayProp<AddressRegionData>([]), /** * @description 城市数据 */ city: makeArrayProp<AddressRegionData>([]), /** * @description 县区数据 */ country: makeArrayProp<AddressRegionData>([]), /** * @description 乡镇数据 */ town: makeArrayProp<AddressRegionData>([]), /** * @description 是否显示 '选择其他地区' 按钮。仅在类型为 'exist' 时生效 */ isShowCustomAddress: truthProp, /** * @description 现存地址列表 */ existAddress: makeArrayProp<AddressExistRegionData>([]), /** * @description 已有地址标题 */ existAddressTitle: makeStringProp(''), /** * @description 切换自定义地址和已有地址的按钮标题 */ customAndExistTitle: makeStringProp(''), /** * @description 弹层中内容容器的高度 */ height: makeNumericProp('200'), /** * @description 列提示文字 */ columnsPlaceholder: { type: [String, Array], default: '', }, } export type AddressProps = ExtractPropTypes<typeof addressProps> export const addressEmits = { [UPDATE_VISIBLE_EVENT]: (val: boolean) => isBoolean(val), [UPDATE_MODEL_EVENT]: () => true, [CLOSE_EVENT]: (val: { data: any type: string }) => val instanceof Object, [CHANGE_EVENT]: (val: { next?: string value?: AddressRegionData custom: string }) => val instanceof Object, switchModule: (val: { type: AddressType }) => val instanceof Object, closeMask: (val: { closeWay: 'self' | 'mask' | 'cross' }) => val instanceof Object, [SELECTED_EVENT]: (prevExistAdd: AddressExistRegionData, item: AddressExistRegionData, copyExistAdd: AddressExistRegionData[]) => prevExistAdd instanceof Object && item instanceof Object && copyExistAdd instanceof Object, } export type AddressEmits = typeof addressEmits