diff --git a/packages/vant-cli/src/common/index.ts b/packages/vant-cli/src/common/index.ts index d204361ed..8a20b9b9c 100644 --- a/packages/vant-cli/src/common/index.ts +++ b/packages/vant-cli/src/common/index.ts @@ -109,7 +109,7 @@ export function getWebpackConfig(defaultConfig: WebpackConfig): WebpackConfig { // 如果是函数形式,可能并不仅仅是添加额外的处理流程,而是在原有流程上进行修改 // 比如修改markdown-loader,添加options.enableMetaData if (typeof config === 'function') { - return config(defaultConfig); + return merge(defaultConfig, config(defaultConfig)); } return merge(defaultConfig, config); diff --git a/src/form/README.md b/src/form/README.md index 1bb719627..cb61f8db9 100644 --- a/src/form/README.md +++ b/src/form/README.md @@ -379,7 +379,10 @@ export default { }, methods: { onConfirm(values) { - this.value = values.map((item) => item.name).join('/'); + this.value = values + .filter((item) => !!item) + .map((item) => item.name) + .join('/'); this.showArea = false; }, }, @@ -447,6 +450,14 @@ export default { | trigger `v2.5.2` | When to validate the form,can be set to `onChange`、`onBlur` | _string_ | | formatter `v2.5.3` | Format value before validate | _(value, rule) => any_ | +### validate-trigger + +| Value | Description | +| -------- | --------------------------------------------------------------- | +| onSubmit | Trigger validation after submiting form | +| onBlur | Trigger validation after submiting form or bluring input | +| onChange | Trigger validation after submiting form or changing input value | + ### Events | Event | Description | Arguments | diff --git a/src/form/README.zh-CN.md b/src/form/README.zh-CN.md index ecff249d3..fa87665a8 100644 --- a/src/form/README.zh-CN.md +++ b/src/form/README.zh-CN.md @@ -18,7 +18,7 @@ app.use(Form); ### 基础用法 -在表单中,每个 [Field 组件](#/zh-CN/field) 代表一个表单项,使用 Field 的`rules`属性定义校验规则 +在表单中,每个 [Field 组件](#/zh-CN/field) 代表一个表单项,使用 Field 的 `rules` 属性定义校验规则。 ```html @@ -63,7 +63,7 @@ export default { ### 校验规则 -通过`rules`定义表单校验规则,可用字段见[下方表格](#/zh-CN/form#rule-shu-ju-jie-gou) +通过 `rules` 定义表单校验规则,可用字段见[下方表格](#/zh-CN/form#rule-shu-ju-jie-gou)。 ```html @@ -133,7 +133,7 @@ export default { ### 表单项类型 - 开关 -在表单中使用 [Switch 组件](#/zh-CN/switch) +在表单中使用 [Switch 组件](#/zh-CN/switch)。 ```html @@ -155,7 +155,7 @@ export default { ### 表单项类型 - 复选框 -在表单中使用 [Checkbox 组件](#/zh-CN/checkbox) +在表单中使用 [Checkbox 组件](#/zh-CN/checkbox)。 ```html @@ -186,7 +186,7 @@ export default { ### 表单项类型 - 单选框 -在表单中使用 [Radio 组件](#/zh-CN/radio) +在表单中使用 [Radio 组件](#/zh-CN/radio)。 ```html @@ -211,7 +211,7 @@ export default { ### 表单项类型 - 步进器 -在表单中使用 [Stepper 组件](#/zh-CN/stepper) +在表单中使用 [Stepper 组件](#/zh-CN/stepper)。 ```html @@ -233,7 +233,7 @@ export default { ### 表单项类型 - 评分 -在表单中使用 [Rate 组件](#/zh-CN/rate) +在表单中使用 [Rate 组件](#/zh-CN/rate)。 ```html @@ -255,7 +255,7 @@ export default { ### 表单项类型 - 滑块 -在表单中使用 [Slider 组件](#/zh-CN/slider) +在表单中使用 [Slider 组件](#/zh-CN/slider)。 ```html @@ -277,7 +277,7 @@ export default { ### 表单项类型 - 文件上传 -在表单中使用 [Uploader 组件](#/zh-CN/uploader) +在表单中使用 [Uploader 组件](#/zh-CN/uploader)。 ```html @@ -299,7 +299,7 @@ export default { ### 表单项类型 - 选择器 -在表单中使用 [Picker 组件](#/zh-CN/picker) +在表单中使用 [Picker 组件](#/zh-CN/picker)。 ```html item.name).join('/'); + this.value = values + .filter((item) => !!item) + .map((item) => item.name) + .join('/'); this.showArea = false; }, }, @@ -421,7 +424,7 @@ export default { ### 表单项类型 - 日历 -在表单中使用 [Calendar 组件](#/zh-CN/calendar) +在表单中使用 [Calendar 组件](#/zh-CN/calendar)。 ```html any_ | +### validate-trigger  可选值 + +通过 `validate-trigger` 属性可以自定义表单校验的触发时机。 + +| 值 | 描述 | +| -------- | ------------------------------------ | +| onSubmit | 仅在提交表单时触发校验 | +| onBlur | 在提交表单和输入框失焦时触发校验 | +| onChange | 在提交表单和输入框内容变化时触发校验 | + ### Events | 事件名 | 说明 | 回调参数 | diff --git a/src/form/demo/FieldTypeArea.vue b/src/form/demo/FieldTypeArea.vue index cbc7f3d65..ec100b854 100644 --- a/src/form/demo/FieldTypeArea.vue +++ b/src/form/demo/FieldTypeArea.vue @@ -52,7 +52,10 @@ export default { methods: { onConfirm(values) { - this.value = values.map((item) => item.name).join('/'); + this.value = values + .filter((item) => !!item) + .map((item) => item.name) + .join('/'); this.showArea = false; }, diff --git a/src/locale/README.md b/src/locale/README.md index e7de47270..b2844ed7b 100644 --- a/src/locale/README.md +++ b/src/locale/README.md @@ -37,16 +37,18 @@ Locale.add(messages); Current supported languages: -| Language | Filename | -| ------------------------ | -------- | -| Chinese | zh-CN | -| Traditional Chinese (HK) | zh-HK | -| Traditional Chinese (TW) | zh-TW | -| English | en-US | -| Turkish | tr-TR | -| Spanish (Spain) | es-ES | -| Japanese | ja-JP | -| Romanian | ro-RO | -| Norwegian | nb-NO | +| Language | Filename | +| ------------------------ | ------------ | +| Chinese | zh-CN | +| Traditional Chinese (HK) | zh-HK | +| Traditional Chinese (TW) | zh-TW | +| English | en-US | +| German | de-DE | +| German (formal) | de-DE-formal | +| Norwegian | nb-NO | +| Japanese | ja-JP | +| Romanian | ro-RO | +| Spanish (Spain) | es-ES | +| Turkish | tr-TR | > View all language configs [Here](https://github.com/youzan/vant/tree/dev/src/locale/lang). diff --git a/src/locale/README.zh-CN.md b/src/locale/README.zh-CN.md index 70e553401..7b4b64e44 100644 --- a/src/locale/README.zh-CN.md +++ b/src/locale/README.zh-CN.md @@ -37,17 +37,19 @@ Locale.add(messages); 目前支持的语言: -| 语言 | 文件名 | -| -------------- | ------ | -| 简体中文 | zh-CN | -| 繁體中文(港) | zh-HK | -| 繁體中文(台) | zh-TW | -| 英语 | en-US | -| 土耳其语 | tr-TR | -| 西班牙语 | es-ES | -| 日语 | ja-JP | -| 罗马尼亚语 | ro-RO | -| 挪威语 | nb-NO | +| 语言 | 文件名 | +| -------------- | ------------ | +| 简体中文 | zh-CN | +| 繁體中文(港) | zh-HK | +| 繁體中文(台) | zh-TW | +| 英语 | en-US | +| 德语 | de-DE | +| 德语 (正式) | de-DE-formal | +| 土耳其语 | tr-TR | +| 西班牙语 | es-ES | +| 日语 | ja-JP | +| 罗马尼亚语 | ro-RO | +| 挪威语 | nb-NO | > 在 [这里](https://github.com/youzan/vant/tree/dev/src/locale/lang) 查看所有的 i18n 配置文件。 diff --git a/src/locale/lang/de-DE-formal.ts b/src/locale/lang/de-DE-formal.ts new file mode 100644 index 000000000..38d1d1c25 --- /dev/null +++ b/src/locale/lang/de-DE-formal.ts @@ -0,0 +1,77 @@ +export default { + name: 'Name', + tel: 'Telefon', + save: 'Speichern', + confirm: 'Bestätigen', + cancel: 'Abbrechen', + delete: 'Löschen', + complete: 'Complete', + loading: 'Laden...', + telEmpty: 'Bitte füllen Sie das Telefon aus', + nameEmpty: 'Bitte geben Sie den Name an', + nameInvalid: 'Ungültiger Name', + confirmDelete: 'Sind Sie sicher, dass Sie löschen möchten?', + telInvalid: 'Ungültige Telefonnummer', + vanCalendar: { + end: 'Ende', + start: 'Start', + title: 'Kalender', + startEnd: 'Start/Ende', + weekdays: ['So', 'Mo', 'Di', 'Mo', 'Do', 'Fr', 'Sa'], + monthTitle: (year: number, month: number) => `${year}/${month}`, + rangePrompt: (maxRange: number) => `Wähle nicht mehr als ${maxRange} Tage`, + }, + vanContactCard: { + addText: 'Kontaktinformationen hinzufügen', + }, + vanContactList: { + addText: 'Neuen Kontakt hinzufügen', + }, + vanPagination: { + prev: 'Vorherige', + next: 'Nächste', + }, + vanPullRefresh: { + pulling: 'Zum Aktualisieren herunterziehen...', + loosing: 'Loslassen zum Aktualisieren...', + }, + vanSubmitBar: { + label: 'Total:', + }, + vanCoupon: { + unlimited: 'Unbegrenzt', + discount: (discount: number) => `${discount * 10}% Rabatt`, + condition: (condition: number) => `Mindestens ${condition}`, + }, + vanCouponCell: { + title: 'Coupon', + tips: 'Keine Coupons', + count: (count: number) => `Sie haben ${count} Coupons`, + }, + vanCouponList: { + empty: 'Keine Coupons', + exchange: 'Austauschen', + close: 'Schließen', + enable: 'Verfügbar', + disabled: 'Nicht verfügbar', + placeholder: 'Couponcode', + }, + vanAddressEdit: { + area: 'Standort', + postal: 'PLZ', + areaEmpty: 'Bitte geben Sie Ihren Standort an', + addressEmpty: 'Adresse darf nicht leer sein', + postalEmpty: 'Falsche Postleitzahl', + defaultAddress: 'Als Standardadresse festgelegen', + telPlaceholder: 'Telefon', + namePlaceholder: 'Name', + areaPlaceholder: 'Ort', + }, + vanAddressEditDetail: { + label: 'Adresse', + placeholder: 'Adresse', + }, + vanAddressList: { + add: 'Neue Adresse hinzufügen', + }, +}; diff --git a/src/locale/lang/de-DE.ts b/src/locale/lang/de-DE.ts new file mode 100644 index 000000000..2acd455ae --- /dev/null +++ b/src/locale/lang/de-DE.ts @@ -0,0 +1,77 @@ +export default { + name: 'Name', + tel: 'Telefon', + save: 'Speichern', + confirm: 'Bestätigen', + cancel: 'Abbrechen', + delete: 'Löschen', + complete: 'Complete', + loading: 'Laden...', + telEmpty: 'Bitte das Telefon ausfüllen', + nameEmpty: 'Bitte den Name angeben', + nameInvalid: 'Ungültiger Name', + confirmDelete: 'Bist du sicher, dass du löschen möchtest?', + telInvalid: 'Ungültige Telefonnummer', + vanCalendar: { + end: 'Ende', + start: 'Start', + title: 'Kalender', + startEnd: 'Start/Ende', + weekdays: ['So', 'Mo', 'Di', 'Mo', 'Do', 'Fr', 'Sa'], + monthTitle: (year: number, month: number) => `${year}/${month}`, + rangePrompt: (maxRange: number) => `Wähle nicht mehr als ${maxRange} Tage`, + }, + vanContactCard: { + addText: 'Kontaktinformationen hinzufügen', + }, + vanContactList: { + addText: 'Neuen Kontakt hinzufügen', + }, + vanPagination: { + prev: 'Vorherige', + next: 'Nächste', + }, + vanPullRefresh: { + pulling: 'Zum Aktualisieren herunterziehen...', + loosing: 'Loslassen zum Aktualisieren...', + }, + vanSubmitBar: { + label: 'Total:', + }, + vanCoupon: { + unlimited: 'Unbegrenzt', + discount: (discount: number) => `${discount * 10}% Rabatt`, + condition: (condition: number) => `Mindestens ${condition}`, + }, + vanCouponCell: { + title: 'Coupon', + tips: 'Keine Coupons', + count: (count: number) => `Du hast ${count} Coupons`, + }, + vanCouponList: { + empty: 'Keine Coupons', + exchange: 'Austauschen', + close: 'Schließen', + enable: 'Verfügbar', + disabled: 'Nicht verfügbar', + placeholder: 'Couponcode', + }, + vanAddressEdit: { + area: 'Standort', + postal: 'PLZ', + areaEmpty: 'Bitte deinen Ort angeben', + addressEmpty: 'Adresse darf nicht leer sein', + postalEmpty: 'Falsche Postleitzahl', + defaultAddress: 'Als Standardadresse festgelegen', + telPlaceholder: 'Telefon', + namePlaceholder: 'Name', + areaPlaceholder: 'Ort', + }, + vanAddressEditDetail: { + label: 'Adresse', + placeholder: 'Adresse', + }, + vanAddressList: { + add: 'Neue Adresse hinzufügen', + }, +}; diff --git a/src/pull-refresh/README.zh-CN.md b/src/pull-refresh/README.zh-CN.md index b4dbc3e6d..e0ef5036b 100644 --- a/src/pull-refresh/README.zh-CN.md +++ b/src/pull-refresh/README.zh-CN.md @@ -130,6 +130,14 @@ export default { ## 常见问题 +### PullReresh 的内容未填满屏幕时,只有一部分区域可以下拉? + +默认情况下,下拉区域的高度是和内容高度保持一致的,如果需要让下拉区域始终为全屏,可以给 PullRefresh 设置一个与屏幕大小相等的最小高度: + +```html + +``` + ### 在桌面端无法操作组件? 参见[在桌面端使用](#/zh-CN/quickstart#zai-zhuo-mian-duan-shi-yong)。