diff --git a/packages/vant/src/area/README.md b/packages/vant/src/area/README.md index e24e1cd21..8c96b812a 100644 --- a/packages/vant/src/area/README.md +++ b/packages/vant/src/area/README.md @@ -50,9 +50,9 @@ export default { }; ``` -### @vant/area-data +### China Area Data -Vant officially provides a default China area data, which can be imported through [@vant/area-data](https://github.com/vant-ui/vant/tree/main/packages/vant-area-data): +Vant officially provides a default china area data, which can be imported through [@vant/area-data](https://github.com/vant-ui/vant/tree/main/packages/vant-area-data): ```bash # with npm diff --git a/packages/vant/src/area/README.zh-CN.md b/packages/vant/src/area/README.zh-CN.md index 85690ae37..f912f1abe 100644 --- a/packages/vant/src/area/README.zh-CN.md +++ b/packages/vant/src/area/README.zh-CN.md @@ -52,9 +52,9 @@ const areaList = { }; ``` -### @vant/area-data +### 中国省市区数据 -Vant 官方提供了一份默认的中国省市区数据,可以通过 [@vant/area-data](https://github.com/vant-ui/vant/tree/main/packages/vant-area-data) 引入: +Vant 提供了一份中国省市区数据,你可以安装 [@vant/area-data](https://github.com/vant-ui/vant/tree/main/packages/vant-area-data) npm 包来引入: ```bash # 通过 npm diff --git a/packages/vant/src/cascader/README.md b/packages/vant/src/cascader/README.md index adef0d795..9526d67c0 100644 --- a/packages/vant/src/cascader/README.md +++ b/packages/vant/src/cascader/README.md @@ -202,13 +202,15 @@ export default { ```html ``` diff --git a/packages/vant/src/cascader/README.zh-CN.md b/packages/vant/src/cascader/README.zh-CN.md index e1e48ea9c..2518d5185 100644 --- a/packages/vant/src/cascader/README.zh-CN.md +++ b/packages/vant/src/cascader/README.zh-CN.md @@ -80,6 +80,68 @@ export default { }; ``` +### 中国省市区数据 + +Cascader 组件常用于选择省市区,Vant 提供了一份中国省市区数据,你可以安装 [@vant/area-data](https://github.com/vant-ui/vant/tree/main/packages/vant-area-data) npm 包来引入: + +```bash +# 通过 npm +npm i @vant/area-data + +# 通过 yarn +yarn add @vant/area-data + +# 通过 pnpm +pnpm add @vant/area-data +``` + +```html + + + + +``` + +```js +import { ref } from 'vue'; +import { useCascaderAreaData } from '@vant/area-data'; + +export default { + setup() { + const show = ref(false); + const fieldValue = ref(''); + const cascaderValue = ref(''); + const options = useCascaderAreaData(); + const onFinish = ({ selectedOptions }) => { + show.value = false; + fieldValue.value = selectedOptions.map((option) => option.text).join('/'); + }; + return { + show, + options, + onFinish, + fieldValue, + cascaderValue, + }; + }, +}; +``` + +> Tips: 中国的行政区划每年都会有变动,如果发现省市区数据未及时更新,欢迎提 Pull Request 帮助我们更新。你可以在[「国家统计局 - 全国区划代码」](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/) 和[「民政部 - 行政区划代码」](https://www.mca.gov.cn/article/sj/xzqh/1980/)上查询到最新数据,请根据官方数据进行核实。 + ### 自定义颜色 通过 `active-color` 属性来设置选中状态的高亮颜色。 @@ -212,13 +274,15 @@ export default { ```html ``` diff --git a/packages/vant/src/cascader/demo/index.vue b/packages/vant/src/cascader/demo/index.vue index ce140661b..a8ba98eac 100644 --- a/packages/vant/src/cascader/demo/index.vue +++ b/packages/vant/src/cascader/demo/index.vue @@ -7,8 +7,14 @@ import { useTranslate } from '../../../docs/site'; import { deepClone } from '../../utils/deep-clone'; import zhCNOptions from './area-zh-CN'; import enUSOptions from './area-en-US'; +import { useCurrentLang } from '../../locale'; +import { useCascaderAreaData } from '@vant/area-data'; import type { Numeric } from '../../utils'; +const lang = useCurrentLang(); + +const cascaderAreaData = useCascaderAreaData(); + const t = useTranslate({ 'zh-CN': { area: '地区', @@ -28,6 +34,7 @@ const t = useTranslate({ { text: '宁波市', value: '330200' }, ], currentLevel: (level: number) => `当前为第 ${level} 级`, + chinaAreaData: '中国省市区数据', customContent: '自定义选项上方内容', customFieldNames: '自定义字段名', }, @@ -49,6 +56,7 @@ const t = useTranslate({ { text: 'Ningbo', value: '330200' }, ], currentLevel: (level: number) => `Current level is ${level}`, + chinaAreaData: 'China Area Data', customContent: 'Custom Content', customFieldNames: 'Custom Field Names', }, @@ -67,6 +75,11 @@ const baseState = reactive({ value: '', result: '', }); +const chinaAreaDataState = reactive({ + show: false, + value: '', + result: '', +}); const customColorState = reactive({ show: false, value: undefined, @@ -168,6 +181,31 @@ const onFinish = ( + + + + + + + @@ -281,6 +319,8 @@ const onFinish = (