From df4439e9f6759a446b522652233703601093e99d Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 1 Mar 2020 20:01:56 +0800 Subject: [PATCH 001/240] types(Form): fix missing scrollToField method --- types/form.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/form.d.ts b/types/form.d.ts index 4d5859ef7..df0742623 100644 --- a/types/form.d.ts +++ b/types/form.d.ts @@ -6,4 +6,6 @@ export class Form extends VanComponent { validate(name?: string): Promise; resetValidation(name?: string): void; + + scrollToField(name: string): void; } From 5d3333ca8cc9d94e54dce4966c0973a19d378c0a Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 1 Mar 2020 20:17:48 +0800 Subject: [PATCH 002/240] chore(Switch): remove inline style --- src/switch-cell/test/__snapshots__/demo.spec.js.snap | 2 +- src/switch/index.js | 6 +----- src/switch/index.less | 4 ++++ src/switch/test/__snapshots__/demo.spec.js.snap | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/switch-cell/test/__snapshots__/demo.spec.js.snap b/src/switch-cell/test/__snapshots__/demo.spec.js.snap index ae0ddee04..70a597bc1 100644 --- a/src/switch-cell/test/__snapshots__/demo.spec.js.snap +++ b/src/switch-cell/test/__snapshots__/demo.spec.js.snap @@ -33,7 +33,7 @@ exports[`renders demo correctly 1`] = `
-
+
diff --git a/src/switch/index.js b/src/switch/index.js index c9b1e02d7..a705ef5dd 100644 --- a/src/switch/index.js +++ b/src/switch/index.js @@ -1,6 +1,5 @@ // Utils import { createNamespace, addUnit } from '../utils'; -import { BLUE } from '../utils/constant'; import { switchProps } from './shared'; // Mixins @@ -42,10 +41,7 @@ export default createComponent({ genLoading() { if (this.loading) { - const color = this.checked - ? this.activeColor || BLUE - : this.inactiveColor || ''; - + const color = this.checked ? this.activeColor : this.inactiveColor; return ; } }, diff --git a/src/switch/index.less b/src/switch/index.less index b3b8c88db..8baa7a43a 100644 --- a/src/switch/index.less +++ b/src/switch/index.less @@ -41,6 +41,10 @@ .van-switch__node { transform: translateX(@switch-width - @switch-node-size); } + + .van-switch__loading { + color: @switch-on-background-color; + } } &--disabled { diff --git a/src/switch/test/__snapshots__/demo.spec.js.snap b/src/switch/test/__snapshots__/demo.spec.js.snap index a47434536..c05490ce5 100644 --- a/src/switch/test/__snapshots__/demo.spec.js.snap +++ b/src/switch/test/__snapshots__/demo.spec.js.snap @@ -15,7 +15,7 @@ exports[`renders demo correctly 1`] = `
-
+
From 65bdc75ca6159bdfe4342e43e8c7d36ae507ae4b Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 1 Mar 2020 20:29:03 +0800 Subject: [PATCH 003/240] chore: code review --- src/coupon/index.js | 2 +- src/icon/index.tsx | 2 +- src/index-bar/index.js | 14 +++++--------- src/utils/constant.ts | 2 -- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/coupon/index.js b/src/coupon/index.js index 24235ed73..e8e1da53e 100644 --- a/src/coupon/index.js +++ b/src/coupon/index.js @@ -85,7 +85,7 @@ export default createComponent({ value={this.chosen} class={bem('corner')} size={18} - checked-color={RED} + checkedColor={RED} /> )} diff --git a/src/icon/index.tsx b/src/icon/index.tsx index ecfd1c4d8..b863bd25c 100644 --- a/src/icon/index.tsx +++ b/src/icon/index.tsx @@ -14,8 +14,8 @@ export type IconProps = { tag: keyof HTMLElementTagNameMap | string; name?: string; size?: string | number; - color?: string; info?: string | number; + color?: string; classPrefix: string; }; diff --git a/src/index-bar/index.js b/src/index-bar/index.js index ee11f6e52..4046a8bd2 100644 --- a/src/index-bar/index.js +++ b/src/index-bar/index.js @@ -76,7 +76,6 @@ export default createComponent({ highlightStyle() { const { highlightColor } = this; if (highlightColor) { - /* istanbul ignore else */ return { color: highlightColor, }; @@ -135,17 +134,14 @@ export default createComponent({ }, getScrollerRect() { - const { scroller } = this; - let scrollerRect = { + if (this.scroller.getBoundingClientRect) { + return this.scroller.getBoundingClientRect(); + } + + return { top: 0, left: 0, }; - - if (scroller.getBoundingClientRect) { - scrollerRect = scroller.getBoundingClientRect(); - } - - return scrollerRect; }, getElementTop(ele, scrollerRect) { diff --git a/src/utils/constant.ts b/src/utils/constant.ts index 165806dd4..25628c550 100644 --- a/src/utils/constant.ts +++ b/src/utils/constant.ts @@ -1,14 +1,12 @@ // color export const RED = '#ee0a24'; export const BLUE = '#1989fa'; -export const GREEN = '#07c160'; export const WHITE = '#fff'; // border export const BORDER = 'van-hairline'; export const BORDER_TOP = `${BORDER}--top`; export const BORDER_LEFT = `${BORDER}--left`; -export const BORDER_RIGHT = `${BORDER}--right`; export const BORDER_BOTTOM = `${BORDER}--bottom`; export const BORDER_SURROUND = `${BORDER}--surround`; export const BORDER_TOP_BOTTOM = `${BORDER}--top-bottom`; From de128b97193834eae6dc1c6e3d7f28b7b0a9acd4 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 1 Mar 2020 20:38:16 +0800 Subject: [PATCH 004/240] docs(Field): remove unused CellGroup wrapper --- src/coupon/index.js | 8 +- src/field/README.zh-CN.md | 2 +- src/field/demo/Autosize.vue | 18 +- src/field/demo/CustomType.vue | 60 +++-- src/field/demo/Disabled.vue | 6 +- src/field/demo/ErrorInfo.vue | 30 ++- src/field/demo/FormatValue.vue | 14 +- src/field/demo/InputAlign.vue | 14 +- src/field/demo/InsertButton.vue | 28 ++- src/field/demo/ShowIcon.vue | 30 ++- src/field/demo/ShowWordLimit.vue | 22 +- .../test/__snapshots__/demo.spec.js.snap | 220 ++++++++---------- 12 files changed, 208 insertions(+), 244 deletions(-) diff --git a/src/coupon/index.js b/src/coupon/index.js index e8e1da53e..e40a6b447 100644 --- a/src/coupon/index.js +++ b/src/coupon/index.js @@ -40,19 +40,19 @@ export default createComponent({ }, faceAmount() { - const { coupon } = this; + const { coupon } = this.coupon; if (coupon.valueDesc) { return `${coupon.valueDesc}${coupon.unitDesc || ''}`; } if (coupon.denominations) { - const denominations = formatAmount(this.coupon.denominations); + const denominations = formatAmount(coupon.denominations); return `${this.currency} ${denominations}`; } if (coupon.discount) { - return t('discount', formatDiscount(this.coupon.discount)); + return t('discount', formatDiscount(coupon.discount)); } return ''; @@ -82,9 +82,9 @@ export default createComponent({

{this.validPeriod}

{!this.disabled && ( )} diff --git a/src/field/README.zh-CN.md b/src/field/README.zh-CN.md index eda9b6ccc..feba7015e 100644 --- a/src/field/README.zh-CN.md +++ b/src/field/README.zh-CN.md @@ -20,7 +20,7 @@ Vue.use(Field); 可以通过`v-model`双向绑定输入框的值,通过`placeholder`设置占位提示文字 ```html - + diff --git a/src/field/demo/Autosize.vue b/src/field/demo/Autosize.vue index 8744064f8..96d391799 100644 --- a/src/field/demo/Autosize.vue +++ b/src/field/demo/Autosize.vue @@ -1,15 +1,13 @@ diff --git a/src/field/demo/CustomType.vue b/src/field/demo/CustomType.vue index 523059a60..a23faabc2 100644 --- a/src/field/demo/CustomType.vue +++ b/src/field/demo/CustomType.vue @@ -1,36 +1,34 @@ diff --git a/src/field/demo/Disabled.vue b/src/field/demo/Disabled.vue index 48e52298a..9910c63de 100644 --- a/src/field/demo/Disabled.vue +++ b/src/field/demo/Disabled.vue @@ -1,9 +1,7 @@ diff --git a/src/field/demo/ErrorInfo.vue b/src/field/demo/ErrorInfo.vue index 669198d71..d50d3f71e 100644 --- a/src/field/demo/ErrorInfo.vue +++ b/src/field/demo/ErrorInfo.vue @@ -1,21 +1,19 @@ diff --git a/src/field/demo/FormatValue.vue b/src/field/demo/FormatValue.vue index ef149f913..901fd1f92 100644 --- a/src/field/demo/FormatValue.vue +++ b/src/field/demo/FormatValue.vue @@ -1,13 +1,11 @@ diff --git a/src/field/demo/InputAlign.vue b/src/field/demo/InputAlign.vue index df0cc0191..28d48353e 100644 --- a/src/field/demo/InputAlign.vue +++ b/src/field/demo/InputAlign.vue @@ -1,13 +1,11 @@ diff --git a/src/field/demo/InsertButton.vue b/src/field/demo/InsertButton.vue index c9f95058b..ffef2b00c 100644 --- a/src/field/demo/InsertButton.vue +++ b/src/field/demo/InsertButton.vue @@ -1,20 +1,18 @@ diff --git a/src/field/demo/ShowIcon.vue b/src/field/demo/ShowIcon.vue index ea42fa861..e3529ab0c 100644 --- a/src/field/demo/ShowIcon.vue +++ b/src/field/demo/ShowIcon.vue @@ -1,21 +1,19 @@ diff --git a/src/field/demo/ShowWordLimit.vue b/src/field/demo/ShowWordLimit.vue index 7f73fd46f..c51189ecf 100644 --- a/src/field/demo/ShowWordLimit.vue +++ b/src/field/demo/ShowWordLimit.vue @@ -1,17 +1,15 @@ diff --git a/src/field/test/__snapshots__/demo.spec.js.snap b/src/field/test/__snapshots__/demo.spec.js.snap index 79b388856..9db4863cc 100644 --- a/src/field/test/__snapshots__/demo.spec.js.snap +++ b/src/field/test/__snapshots__/demo.spec.js.snap @@ -12,147 +12,129 @@ exports[`renders demo correctly 1`] = `
-
-
-
文本
-
-
+
+
文本
+
+
+
+
+
+
手机号
+
+
+
+
+
+
整数
+
+
+
+
+
+
数字
+
+
+
+
+
+
密码
+
+
+
+
+
+
+
+
文本
+
+
+
+
+
+
文本
+
+
+
+
+
+
+
+
+
+
文本
+
+
+
+
-
-
手机号
-
-
-
+
+
+
+
+
文本
+
+
-
-
整数
-
-
-
+
+
+
+
+
用户名
+
+
-
-
数字
-
-
-
+
+
+
手机号
+
+
+
手机号格式错误
-
-
密码
-
-
+
+
+
+
+
短信验证码
+
+
+
-
-
-
文本
-
-
-
-
-
-
文本
-
-
-
+
+
文本
+
+
-
-
-
-
-
文本
-
-
-
-
-
-
-
-
-
-
-
文本
-
-
-
+
+
留言
+
+
-
-
-
用户名
-
-
-
-
-
-
手机号
-
-
-
手机号格式错误
-
+
+
留言
+
+
+
0/50
-
-
-
短信验证码
-
-
-
-
-
-
-
-
-
-
-
-
文本
-
-
-
-
-
-
-
-
-
-
留言
-
-
-
-
-
-
-
-
-
-
留言
-
-
-
0/50
-
-
-
-
-
-
-
-
文本
-
-
-
+
+
文本
+
+
From f88bdb55da82385b5440a301ea284560245a8ea3 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 2 Mar 2020 09:37:07 +0800 Subject: [PATCH 005/240] docs: fix action-sheet demo --- src/utils/constant.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/constant.ts b/src/utils/constant.ts index 25628c550..eb6563daf 100644 --- a/src/utils/constant.ts +++ b/src/utils/constant.ts @@ -1,6 +1,7 @@ // color export const RED = '#ee0a24'; export const BLUE = '#1989fa'; +export const GREEN = '#07c160'; export const WHITE = '#fff'; // border From c401b8d7af5df38ebe158d0cd3695845e0ef3496 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 2 Mar 2020 19:25:39 +0800 Subject: [PATCH 006/240] fix(Coupon): incorrect destruction --- src/coupon/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coupon/index.js b/src/coupon/index.js index e40a6b447..a7740c145 100644 --- a/src/coupon/index.js +++ b/src/coupon/index.js @@ -40,7 +40,7 @@ export default createComponent({ }, faceAmount() { - const { coupon } = this.coupon; + const { coupon } = this; if (coupon.valueDesc) { return `${coupon.valueDesc}${coupon.unitDesc || ''}`; From c4be70c4e8343f925dc6acefccaca413c280b588 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 2 Mar 2020 19:41:07 +0800 Subject: [PATCH 007/240] fix(Tabs): lock scroll not work when using scrollspy (#5727) --- src/tabs/index.js | 6 +++--- src/tabs/utils.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tabs/index.js b/src/tabs/index.js index c11d02585..d8978f775 100644 --- a/src/tabs/index.js +++ b/src/tabs/index.js @@ -306,16 +306,16 @@ export default createComponent({ if (el) { const to = getElementTop(el, this.scroller) - this.scrollOffset; - this.clickedScroll = true; + this.lockScroll = true; scrollTopTo(this.scroller, to, +this.duration, () => { - this.clickedScroll = false; + this.lockScroll = false; }); } } }, onScroll() { - if (this.scrollspy && !this.clickedScroll) { + if (this.scrollspy && !this.lockScroll) { const index = this.getCurrentIndexOnScroll(); this.setCurrentIndex(index); } diff --git a/src/tabs/utils.ts b/src/tabs/utils.ts index 815193bfc..26c8ef2d3 100644 --- a/src/tabs/utils.ts +++ b/src/tabs/utils.ts @@ -49,7 +49,7 @@ export function scrollTopTo( if ((isDown && current < to) || (!isDown && current > to)) { raf(animate); } else if (callback) { - callback(); + raf(callback as FrameRequestCallback); } } From 6d19ad590bf905463120a961acac350561cfa9f2 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 3 Mar 2020 21:02:00 +0800 Subject: [PATCH 008/240] feat(Calendar): add multiple type (#5705) --- src/calendar/README.md | 26 ++++- src/calendar/README.zh-CN.md | 28 ++++- src/calendar/components/Month.js | 101 ++++++++++++------ src/calendar/demo/index.vue | 18 ++++ src/calendar/index.js | 53 ++++++--- src/calendar/index.less | 8 +- .../test/__snapshots__/demo.spec.js.snap | 4 + src/calendar/test/index.spec.js | 34 ++++++ src/calendar/utils.ts | 26 ++++- 9 files changed, 249 insertions(+), 49 deletions(-) diff --git a/src/calendar/README.md b/src/calendar/README.md index 7a7fa10e2..597c09de9 100644 --- a/src/calendar/README.md +++ b/src/calendar/README.md @@ -44,6 +44,30 @@ export default { }; ``` +### Select Multiple Date + +```html + + +``` + +```js +export default { + data() { + return { + text: '', + show: false + }; + }, + methods: { + onConfirm(date) { + this.show = false; + this.text = `${date.length} dates selected`; + } + } +}; +``` + ### Select Date Range You can select a date range after setting `type` to` range`. In range mode, the date returned by the `confirm` event is an array, the first item in the array is the start time and the second item is the end time. @@ -212,7 +236,7 @@ Set `poppable` to `false`, the calendar will be displayed directly on the page i | Attribute | Description | Type | Default | |------|------|------|------| | v-model | Whether to show calendar | *boolean* | `false` | -| type | Type,can be set to `single` `range` | *string* | `single` | +| type `v2.5.4` | Type,can be set to `range` `multiple` | *string* | `single` | | title | Title of calendar | *string* | `Calendar` | | color | Color for the bottom button and selected date | *string* | `#ee0a24` | | min-date | Min date | *Date* | Today | diff --git a/src/calendar/README.zh-CN.md b/src/calendar/README.zh-CN.md index 0d536ba49..cf750bc2e 100644 --- a/src/calendar/README.zh-CN.md +++ b/src/calendar/README.zh-CN.md @@ -44,6 +44,32 @@ export default { }; ``` +### 选择多个日期 + +设置`type`为`multiple`后可以选择多个日期,此时`confirm`事件返回的 date 为数组结构,数组包含若干个选中的日期。 + +```html + + +``` + +```js +export default { + data() { + return { + text: '', + show: false + }; + }, + methods: { + onConfirm(date) { + this.show = false; + this.text = `选择了 ${date.length} 个日期`; + } + } +}; +``` + ### 选择日期区间 设置`type`为`range`后可以选择日期区间,此时`confirm`事件返回的 date 为数组结构,数组第一项为开始时间,第二项为结束时间。 @@ -212,7 +238,7 @@ export default { | 参数 | 说明 | 类型 | 默认值 | |------|------|------|------| | v-model | 是否显示日历弹窗 | *boolean* | `false` | -| type | 选择类型,`single`表示选择单个日期,
`range`表示选择日期区间 | *string* | `single` | +| type `v2.5.4` | 选择类型:
`single`表示选择单个日期,
`multiple`表示选择多个日期,
`range`表示选择日期区间 | *string* | `single` | | title | 日历标题 | *string* | `日期选择` | | color | 颜色,对底部按钮和选中日期生效 | *string* | `#ee0a24` | | min-date | 最小日期 | *Date* | 当前日期 | diff --git a/src/calendar/components/Month.js b/src/calendar/components/Month.js index e290df1a4..cf46a4987 100644 --- a/src/calendar/components/Month.js +++ b/src/calendar/components/Month.js @@ -1,5 +1,13 @@ import { createNamespace } from '../../utils'; -import { t, bem, compareDay, formatMonthTitle, ROW_HEIGHT } from '../utils'; +import { + t, + bem, + compareDay, + ROW_HEIGHT, + getPrevDay, + getNextDay, + formatMonthTitle, +} from '../utils'; import { getMonthEndDay } from '../../datetime-picker/utils'; const [createComponent] = createNamespace('calendar-month'); @@ -84,6 +92,56 @@ export default createComponent({ this.$refs.days.scrollIntoView(); }, + getMultipleDayType(day) { + const isSelected = date => + this.currentDate.some(item => compareDay(item, date) === 0); + + if (isSelected(day)) { + const prevDay = getPrevDay(day); + const nextDay = getNextDay(day); + const prevSelected = isSelected(prevDay); + const nextSelected = isSelected(nextDay); + + if (prevSelected && nextSelected) { + return 'multiple-middle'; + } + + if (prevSelected) { + return 'end'; + } + + return nextSelected ? 'start' : 'multiple-selected'; + } + + return ''; + }, + + getRangeDayType(day) { + const [startDay, endDay] = this.currentDate; + + if (!startDay) { + return; + } + + const compareToStart = compareDay(day, startDay); + if (compareToStart === 0) { + return 'start'; + } + + if (!endDay) { + return; + } + + const compareToEnd = compareDay(day, endDay); + if (compareToEnd === 0) { + return 'end'; + } + + if (compareToStart > 0 && compareToEnd < 0) { + return 'middle'; + } + }, + getDayType(day) { const { type, minDate, maxDate, currentDate } = this; @@ -95,41 +153,24 @@ export default createComponent({ return compareDay(day, currentDate) === 0 ? 'selected' : ''; } + if (type === 'multiple') { + return this.getMultipleDayType(day); + } + /* istanbul ignore else */ if (type === 'range') { - const [startDay, endDay] = this.currentDate; - - if (!startDay) { - return; - } - - const compareToStart = compareDay(day, startDay); - if (compareToStart === 0) { - return 'start'; - } - - if (!endDay) { - return; - } - - const compareToEnd = compareDay(day, endDay); - if (compareToEnd === 0) { - return 'end'; - } - - if (compareToStart > 0 && compareToEnd < 0) { - return 'middle'; - } + return this.getRangeDayType(day); } }, getBottomInfo(type) { - if (type === 'start') { - return t('start'); - } - - if (type === 'end') { - return t('end'); + if (this.type === 'range') { + if (type === 'start') { + return t('start'); + } + if (type === 'end') { + return t('end'); + } } }, diff --git a/src/calendar/demo/index.vue b/src/calendar/demo/index.vue index 8637f11c0..adbf52224 100644 --- a/src/calendar/demo/index.vue +++ b/src/calendar/demo/index.vue @@ -8,6 +8,13 @@ @click="show('single', 'selectSingle')" /> + + `选择了 ${count} 个日期`, selectSingle: '选择单个日期', + selectMultiple: '选择多个日期', selectRange: '选择日期区间', quickSelect: '快捷选择', confirmText: '完成', @@ -139,7 +148,9 @@ export default { youthDay: 'Youth Day', calendar: 'Calendar', maxRange: 'Max Range', + selectCount: count => `${count} dates selected`, selectSingle: 'Select Single Date', + selectMultiple: 'Select Multiple Date', selectRange: 'Select Date Range', quickSelect: 'Quick Select', confirmText: 'OK', @@ -160,6 +171,7 @@ export default { maxRange: [], selectSingle: null, selectRange: [], + selectMultiple: [], quickSelect1: null, quickSelect2: [], customColor: [], @@ -271,6 +283,12 @@ export default { } }, + formatMultiple(dates) { + if (dates.length) { + return this.$t('selectCount', dates.length); + } + }, + formatRange(dateRange) { if (dateRange.length) { const [start, end] = dateRange; diff --git a/src/calendar/index.js b/src/calendar/index.js index 7cb06c4d5..6363cd851 100644 --- a/src/calendar/index.js +++ b/src/calendar/index.js @@ -4,6 +4,7 @@ import { getScrollTop } from '../utils/dom/scroll'; import { t, bem, + copyDates, getNextDay, compareDay, compareMonth, @@ -94,10 +95,6 @@ export default createComponent({ }, computed: { - range() { - return this.type === 'range'; - }, - months() { const months = []; const cursor = new Date(this.minDate); @@ -113,11 +110,17 @@ export default createComponent({ }, buttonDisabled() { - if (this.range) { - return !this.currentDate[0] || !this.currentDate[1]; + const { type, currentDate } = this; + + if (type === 'range') { + return !currentDate[0] || !currentDate[1]; } - return !this.currentDate; + if (type === 'multiple') { + return !currentDate.length; + } + + return !currentDate; }, }, @@ -165,7 +168,8 @@ export default createComponent({ scrollIntoView() { this.$nextTick(() => { const { currentDate } = this; - const targetDate = this.range ? currentDate[0] : currentDate; + const targetDate = + this.type === 'single' ? currentDate : currentDate[0]; const displayed = this.value || !this.poppable; /* istanbul ignore if */ @@ -192,6 +196,10 @@ export default createComponent({ return [startDay || minDate, endDay || getNextDay(minDate)]; } + if (type === 'multiple') { + return [defaultDate || minDate]; + } + return defaultDate || minDate; }, @@ -232,9 +240,10 @@ export default createComponent({ onClickDay(item) { const { date } = item; + const { type, currentDate } = this; - if (this.range) { - const [startDay, endDay] = this.currentDate; + if (type === 'range') { + const [startDay, endDay] = currentDate; if (startDay && !endDay) { const compareToStart = compareDay(date, startDay); @@ -247,6 +256,22 @@ export default createComponent({ } else { this.select([date, null]); } + } else if (type === 'multiple') { + let selectedIndex; + + const selected = this.currentDate.some((dateItem, index) => { + const equal = compareDay(dateItem, date) === 0; + if (equal) { + selectedIndex = index; + } + return equal; + }); + + if (selected) { + currentDate.splice(selectedIndex, 1); + } else { + this.select([...currentDate, date]); + } } else { this.select(date, true); } @@ -258,9 +283,9 @@ export default createComponent({ select(date, complete) { this.currentDate = date; - this.$emit('select', this.currentDate); + this.$emit('select', copyDates(this.currentDate)); - if (complete && this.range) { + if (complete && this.type === 'range') { const valid = this.checkRange(); if (!valid) { @@ -285,11 +310,11 @@ export default createComponent({ }, onConfirm() { - if (this.range && !this.checkRange()) { + if (this.type === 'range' && !this.checkRange()) { return; } - this.$emit('confirm', this.currentDate); + this.$emit('confirm', copyDates(this.currentDate)); }, genMonth(date, index) { diff --git a/src/calendar/index.less b/src/calendar/index.less index 6b75c348e..e505670c5 100644 --- a/src/calendar/index.less +++ b/src/calendar/index.less @@ -94,7 +94,9 @@ cursor: pointer; &--end, - &--start { + &--start, + &--multiple-middle, + &--multiple-selected { color: @calendar-range-edge-color; background-color: @calendar-range-edge-background-color; } @@ -107,6 +109,10 @@ border-radius: 0 @border-radius-md @border-radius-md 0; } + &--multiple-selected { + border-radius: @border-radius-md; + } + &--middle { color: @calendar-range-middle-color; diff --git a/src/calendar/test/__snapshots__/demo.spec.js.snap b/src/calendar/test/__snapshots__/demo.spec.js.snap index 40e4ffea5..276d4abad 100644 --- a/src/calendar/test/__snapshots__/demo.spec.js.snap +++ b/src/calendar/test/__snapshots__/demo.spec.js.snap @@ -7,6 +7,10 @@ exports[`renders demo correctly 1`] = `
选择单个日期
+
+
选择多个日期
+ +
选择日期区间
diff --git a/src/calendar/test/index.spec.js b/src/calendar/test/index.spec.js index 0799e95e4..1fa7c6f8c 100644 --- a/src/calendar/test/index.spec.js +++ b/src/calendar/test/index.spec.js @@ -18,6 +18,10 @@ function formatRange([start, end]) { return `${formatDate(start)}-${formatDate(end)}`; } +function formatMultiple(dates) { + return dates.map(formatDate).join(','); +} + test('select event when type is single', async () => { const wrapper = mount(Calendar, { propsData: { @@ -63,6 +67,36 @@ test('select event when type is range', async () => { expect(formatRange(emittedSelect[3][0])).toEqual('2010/1/13-'); }); +test('select event when type is multiple', async () => { + const wrapper = mount(Calendar, { + propsData: { + type: 'multiple', + minDate, + maxDate, + poppable: false, + }, + }); + + await later(); + + const days = wrapper.findAll('.van-calendar__day'); + days.at(15).trigger('click'); + days.at(16).trigger('click'); + + await later(); + days.at(15).trigger('click'); + days.at(12).trigger('click'); + + const emittedSelect = wrapper.emitted('select'); + expect(formatMultiple(emittedSelect[0][0])).toEqual('2010/1/10,2010/1/16'); + expect(formatMultiple(emittedSelect[1][0])).toEqual( + '2010/1/10,2010/1/16,2010/1/17' + ); + expect(formatMultiple(emittedSelect[2][0])).toEqual( + '2010/1/10,2010/1/17,2010/1/13' + ); +}); + test('should not trigger select event when click disabled day', async () => { const wrapper = mount(Calendar, { propsData: { diff --git a/src/calendar/utils.ts b/src/calendar/utils.ts index 4cd606c25..3c469438a 100644 --- a/src/calendar/utils.ts +++ b/src/calendar/utils.ts @@ -36,15 +36,37 @@ export function compareDay(day1: Date, day2: Date) { return compareMonthResult; } -export function getNextDay(date: Date) { +function getDayByOffset(date: Date, offset: number) { date = new Date(date); - date.setDate(date.getDate() + 1); + date.setDate(date.getDate() + offset); return date; } +export function getPrevDay(date: Date) { + return getDayByOffset(date, -1); +} + +export function getNextDay(date: Date) { + return getDayByOffset(date, 1); +} + export function calcDateNum(date: [Date, Date]) { const day1 = date[0].getTime(); const day2 = date[1].getTime(); return (day2 - day1) / (1000 * 60 * 60 * 24) + 1; } + +export function copyDates(dates: Date | Date[]) { + if (Array.isArray(dates)) { + return dates.map(date => { + if (date === null) { + return date; + } + + return new Date(date); + }); + } + + return new Date(dates); +} From b8ce2ac6d6e986ca8d2b933f182bc7845a060371 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Wed, 4 Mar 2020 09:41:30 +0800 Subject: [PATCH 009/240] docs(Checkbox): add direction usage document (#5748) --- src/checkbox/README.md | 20 +++++++++++++++++++- src/checkbox/README.zh-CN.md | 22 +++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/checkbox/README.md b/src/checkbox/README.md index 87e2d661a..52d32589e 100644 --- a/src/checkbox/README.md +++ b/src/checkbox/README.md @@ -93,7 +93,6 @@ When Checkboxes are inside a CheckboxGroup, the checked checkboxes's name is an Checkbox a Checkbox b - Checkbox c ``` @@ -107,6 +106,25 @@ export default { }; ``` +### Horizontal + +```html + + Checkbox a + Checkbox b + +``` + +```js +export default { + data() { + return { + result: [] + }; + } +}; +``` + ### Maximum amount of checked options ```html diff --git a/src/checkbox/README.zh-CN.md b/src/checkbox/README.zh-CN.md index f9c81e133..b573554ba 100644 --- a/src/checkbox/README.zh-CN.md +++ b/src/checkbox/README.zh-CN.md @@ -103,7 +103,6 @@ export default { 复选框 a 复选框 b - 复选框 c ``` @@ -117,6 +116,27 @@ export default { }; ``` +### 水平排列 + +将`direction`属性设置为`horizontal`后,复选框组会变成水平排列 + +```html + + 复选框 a + 复选框 b + +``` + +```js +export default { + data() { + return { + result: [] + }; + } +}; +``` + ### 限制最大可选数 通过`max`属性可以限制复选框组的最大可选数 From c086073da1de157eca8c64ac2685257a52f78510 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Wed, 4 Mar 2020 15:23:33 +0800 Subject: [PATCH 010/240] docs: update cdn version to 2.5 --- docs/markdown/quickstart.en-US.md | 4 ++-- docs/markdown/quickstart.zh-CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/markdown/quickstart.en-US.md b/docs/markdown/quickstart.en-US.md index 9c6ee6368..fd647220c 100644 --- a/docs/markdown/quickstart.en-US.md +++ b/docs/markdown/quickstart.en-US.md @@ -97,11 +97,11 @@ The easiest way to use Vant is to include a CDN link in the html file, after whi ```html - + - + - + + + diff --git a/src/form/test/__snapshots__/demo.spec.js.snap b/src/form/test/__snapshots__/demo.spec.js.snap index f1a25ca54..57d86d5a2 100644 --- a/src/form/test/__snapshots__/demo.spec.js.snap +++ b/src/form/test/__snapshots__/demo.spec.js.snap @@ -184,8 +184,8 @@ exports[`renders demo correctly 1`] = `
-
-
+
+
选择器
@@ -193,8 +193,8 @@ exports[`renders demo correctly 1`] = `
-
-
+
+
时间选择
@@ -202,8 +202,8 @@ exports[`renders demo correctly 1`] = `
-
-
+
+
地区选择
From 3c727fe413f6e26767cc175f5dbb901353ddcc83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2020 12:41:23 +0800 Subject: [PATCH 051/240] chore(deps): bump acorn in /packages/vant-eslint-config (#5819) Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 7.1.1. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](https://github.com/acornjs/acorn/compare/6.4.0...7.1.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/vant-eslint-config/yarn.lock | 128 ++++++++++---------------- 1 file changed, 50 insertions(+), 78 deletions(-) diff --git a/packages/vant-eslint-config/yarn.lock b/packages/vant-eslint-config/yarn.lock index f90ff3bfd..788e09350 100644 --- a/packages/vant-eslint-config/yarn.lock +++ b/packages/vant-eslint-config/yarn.lock @@ -28,67 +28,58 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== -"@typescript-eslint/eslint-plugin@^2.12.0": - version "2.12.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.12.0.tgz?cache=0&sync_timestamp=1576629441087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Feslint-plugin%2Fdownload%2F%40typescript-eslint%2Feslint-plugin-2.12.0.tgz#0da7cbca7b24f4c6919e9eb31c704bfb126f90ad" - integrity sha1-DafLynsk9MaRnp6zHHBL+xJvkK0= +"@typescript-eslint/eslint-plugin@^2.16.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz#aa7133bfb7b685379d9eafe4ae9e08b9037e129d" + integrity sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw== dependencies: - "@typescript-eslint/experimental-utils" "2.12.0" + "@typescript-eslint/experimental-utils" "2.23.0" eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.12.0": - version "2.12.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fexperimental-utils%2Fdownload%2F%40typescript-eslint%2Fexperimental-utils-2.12.0.tgz#e0a76ffb6293e058748408a191921e453c31d40d" - integrity sha1-4Kdv+2KT4Fh0hAihkZIeRTwx1A0= +"@typescript-eslint/experimental-utils@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz#5d2261c8038ec1698ca4435a8da479c661dc9242" + integrity sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.12.0" + "@typescript-eslint/typescript-estree" "2.23.0" eslint-scope "^5.0.0" -"@typescript-eslint/parser@^2.12.0": - version "2.12.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.12.0.tgz?cache=0&sync_timestamp=1576629583072&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fparser%2Fdownload%2F%40typescript-eslint%2Fparser-2.12.0.tgz#393f1604943a4ca570bb1a45bc8834e9b9158884" - integrity sha1-OT8WBJQ6TKVwuxpFvIg06bkViIQ= +"@typescript-eslint/parser@^2.16.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.23.0.tgz#f3d4e2928ff647fe77fc2fcef1a3534fee6a3212" + integrity sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.12.0" - "@typescript-eslint/typescript-estree" "2.12.0" + "@typescript-eslint/experimental-utils" "2.23.0" + "@typescript-eslint/typescript-estree" "2.23.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.12.0": - version "2.12.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Ftypescript-estree%2Fdownload%2F%40typescript-eslint%2Ftypescript-estree-2.12.0.tgz#bd9e547ccffd17dfab0c3ab0947c80c8e2eb914c" - integrity sha1-vZ5UfM/9F9+rDDqwlHyAyOLrkUw= +"@typescript-eslint/typescript-estree@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz#d355960fab96bd550855488dcc34b9a4acac8d36" + integrity sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" - lodash.unescape "4.0.1" + lodash "^4.17.15" semver "^6.3.0" tsutils "^3.17.1" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - acorn-jsx@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== -acorn@^6.0.7: - version "6.4.0" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha1-tlnS/7r6JLr12xzbsslKmD7NJ4Q= - acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== ajv@^6.10.0, ajv@^6.10.2: version "6.10.2" @@ -363,10 +354,10 @@ eslint-module-utils@^2.4.1: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.19.1: - version "2.19.1" - resolved "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448" - integrity sha1-VlThC3g50GTdDUbNG4jsITOhFEg= +eslint-plugin-import@^2.20.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== dependencies: array-includes "^3.0.3" array.prototype.flat "^1.2.1" @@ -381,19 +372,14 @@ eslint-plugin-import@^2.19.1: read-pkg-up "^2.0.0" resolve "^1.12.0" -eslint-plugin-vue@^6.0.1: - version "6.0.1" - resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.0.1.tgz#166d3eb24cf290f3ff24d44fe9fca496f3924fc2" - integrity sha1-Fm0+skzykPP/JNRP6fyklvOST8I= +eslint-plugin-vue@^6.1.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== dependencies: - vue-eslint-parser "^6.0.5" - -eslint-scope@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + natural-compare "^1.4.0" + semver "^5.6.0" + vue-eslint-parser "^7.0.0" eslint-scope@^5.0.0: version "5.0.0" @@ -410,15 +396,15 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.7.2: - version "6.7.2" - resolved "https://registry.npm.taobao.org/eslint/download/eslint-6.7.2.tgz#c17707ca4ad7b2d8af986a33feba71e18a9fecd1" - integrity sha1-wXcHykrXstivmGoz/rpx4Yqf7NE= +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -458,15 +444,6 @@ eslint@^6.7.2: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^5.0.0: - version "5.0.1" - resolved "https://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz?cache=0&sync_timestamp=1571624368510&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o= - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" @@ -816,12 +793,7 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -1117,7 +1089,7 @@ rxjs@^6.4.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" -semver@^5.5.0: +semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -1312,17 +1284,17 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vue-eslint-parser@^6.0.5: - version "6.0.5" - resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-6.0.5.tgz?cache=0&sync_timestamp=1573306349811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-6.0.5.tgz#c1c067c2755748e28f3872cd42e8c1c4c1a8059f" - integrity sha1-wcBnwnVXSOKPOHLNQujBxMGoBZ8= +vue-eslint-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz#a4ed2669f87179dedd06afdd8736acbb3a3864d6" + integrity sha512-yR0dLxsTT7JfD2YQo9BhnQ6bUTLsZouuzt9SKRP7XNaZJV459gvlsJo4vT2nhZ/2dH9j3c53bIx9dnqU2prM9g== dependencies: debug "^4.1.1" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" - espree "^5.0.0" + eslint-scope "^5.0.0" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" - lodash "^4.17.11" + lodash "^4.17.15" which@^1.2.9: version "1.3.1" From 7bfc1a66169bfb1911301c7d9602ede3434aadaa Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sat, 14 Mar 2020 18:32:28 +0800 Subject: [PATCH 052/240] docs(Form): fix missing quote (#5820) --- src/form/README.md | 6 +++--- src/form/README.zh-CN.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/form/README.md b/src/form/README.md index 17c826f0d..73ba4e16d 100644 --- a/src/form/README.md +++ b/src/form/README.md @@ -62,19 +62,19 @@ export default { v-model="value1" name="pattern" placeholder="USe pattern" - :rules="[{ pattern, message: 'Error message }]" + :rules="[{ pattern, message: 'Error message' }]" />
diff --git a/src/form/README.zh-CN.md b/src/form/README.zh-CN.md index a58dfb604..00570c8f5 100644 --- a/src/form/README.zh-CN.md +++ b/src/form/README.zh-CN.md @@ -71,21 +71,21 @@ export default { v-model="value1" name="pattern" placeholder="正则校验" - :rules="[{ pattern, message: '请输入正确内容 }]" + :rules="[{ pattern, message: '请输入正确内容' }]" />
From 637f2de35e5c6f779d6cf290a0673aa3ad9de2ce Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sat, 14 Mar 2020 18:53:44 +0800 Subject: [PATCH 053/240] chore(cli): update changelog tpl --- packages/vant-cli/template/changelog-commit.hbs | 2 +- packages/vant-cli/template/changelog-header.hbs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vant-cli/template/changelog-commit.hbs b/packages/vant-cli/template/changelog-commit.hbs index 6c885fe84..a05524abc 100644 --- a/packages/vant-cli/template/changelog-commit.hbs +++ b/packages/vant-cli/template/changelog-commit.hbs @@ -1,4 +1,4 @@ -*{{#if scope}} {{scope}}: +-{{#if scope}} {{scope}}: {{~/if}} {{#if subject}} {{~subject}} {{~else}} diff --git a/packages/vant-cli/template/changelog-header.hbs b/packages/vant-cli/template/changelog-header.hbs index 335c7f541..bd0a517f9 100644 --- a/packages/vant-cli/template/changelog-header.hbs +++ b/packages/vant-cli/template/changelog-header.hbs @@ -1,2 +1,3 @@ ### [v{{version}}]({{~@root.repoUrl}}/compare/{{previousTag}}...{{currentTag}}) + `{{date}}` From a9e94a29c6498a7d0e13dd6d9dad84dde88abc52 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sat, 14 Mar 2020 19:00:19 +0800 Subject: [PATCH 054/240] types(cli): reduce ts-ignore --- packages/vant-cli/package.json | 2 - packages/vant-cli/src/commands/changelog.ts | 1 - packages/vant-cli/src/commands/lint.ts | 1 - packages/vant-cli/src/commands/release.ts | 1 - packages/vant-cli/src/common/manager.ts | 1 - .../vant-cli/src/compiler/compile-less.ts | 1 - .../vant-cli/src/compiler/gen-vetur-config.ts | 1 - .../src/compiler/vant-cli-release-plugin.ts | 1 - packages/vant-cli/src/config/webpack.base.ts | 3 +- .../vant-cli/src/config/webpack.site.dev.ts | 3 +- packages/vant-cli/src/module.d.ts | 11 + packages/vant-cli/yarn.lock | 206 +----------------- 12 files changed, 25 insertions(+), 207 deletions(-) create mode 100644 packages/vant-cli/src/module.d.ts diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 2b12d69d0..973d2bc01 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -34,10 +34,8 @@ }, "devDependencies": { "@types/fs-extra": "^8.1.0", - "@types/html-webpack-plugin": "^3.2.2", "@types/lodash": "^4.14.149", "@types/postcss-load-config": "^2.0.1", - "@types/sass": "^1.16.0", "@types/shelljs": "^0.8.6", "@types/webpack": "^4.41.7", "@types/webpack-dev-server": "^3.10.0", diff --git a/packages/vant-cli/src/commands/changelog.ts b/packages/vant-cli/src/commands/changelog.ts index 5370fef87..1cb02e9d2 100644 --- a/packages/vant-cli/src/commands/changelog.ts +++ b/packages/vant-cli/src/commands/changelog.ts @@ -2,7 +2,6 @@ import { join } from 'path'; import { ROOT } from '../common/constant'; import { ora, slimPath } from '../common/logger'; import { createWriteStream, readFileSync } from 'fs-extra'; -// @ts-ignore import conventionalChangelog from 'conventional-changelog'; const DIST_FILE = join(ROOT, './changelog.generated.md'); diff --git a/packages/vant-cli/src/commands/lint.ts b/packages/vant-cli/src/commands/lint.ts index 2f54a5098..ee1aacd2d 100644 --- a/packages/vant-cli/src/commands/lint.ts +++ b/packages/vant-cli/src/commands/lint.ts @@ -1,4 +1,3 @@ -// @ts-ignore import execa from 'execa'; import { ora } from '../common/logger'; import { SCRIPT_EXTS } from '../common/constant'; diff --git a/packages/vant-cli/src/commands/release.ts b/packages/vant-cli/src/commands/release.ts index e6270ace3..32c3babd9 100644 --- a/packages/vant-cli/src/commands/release.ts +++ b/packages/vant-cli/src/commands/release.ts @@ -1,5 +1,4 @@ /* eslint-disable no-template-curly-in-string */ -// @ts-ignore import releaseIt from 'release-it'; import { join } from 'path'; diff --git a/packages/vant-cli/src/common/manager.ts b/packages/vant-cli/src/common/manager.ts index 22ea1be29..d055f5fb1 100644 --- a/packages/vant-cli/src/common/manager.ts +++ b/packages/vant-cli/src/common/manager.ts @@ -1,4 +1,3 @@ -// @ts-ignore import execa from 'execa'; import { consola } from './logger'; import { execSync } from 'child_process'; diff --git a/packages/vant-cli/src/compiler/compile-less.ts b/packages/vant-cli/src/compiler/compile-less.ts index 1c548fc3f..3d71adb66 100644 --- a/packages/vant-cli/src/compiler/compile-less.ts +++ b/packages/vant-cli/src/compiler/compile-less.ts @@ -1,4 +1,3 @@ -// @ts-ignore import { render, FileManager } from 'less'; import { readFileSync } from 'fs-extra'; diff --git a/packages/vant-cli/src/compiler/gen-vetur-config.ts b/packages/vant-cli/src/compiler/gen-vetur-config.ts index 92f6eb267..d7226a1ec 100644 --- a/packages/vant-cli/src/compiler/gen-vetur-config.ts +++ b/packages/vant-cli/src/compiler/gen-vetur-config.ts @@ -1,4 +1,3 @@ -// @ts-ignore import markdownVetur from '@vant/markdown-vetur'; import { join } from 'path'; import { get } from 'lodash'; diff --git a/packages/vant-cli/src/compiler/vant-cli-release-plugin.ts b/packages/vant-cli/src/compiler/vant-cli-release-plugin.ts index dd841964c..385cf7755 100644 --- a/packages/vant-cli/src/compiler/vant-cli-release-plugin.ts +++ b/packages/vant-cli/src/compiler/vant-cli-release-plugin.ts @@ -1,4 +1,3 @@ -// @ts-ignore import releaseIt from 'release-it'; import { build } from '../commands/build'; import { changelog } from '../commands/changelog'; diff --git a/packages/vant-cli/src/config/webpack.base.ts b/packages/vant-cli/src/config/webpack.base.ts index 952c94b95..a15173df4 100644 --- a/packages/vant-cli/src/config/webpack.base.ts +++ b/packages/vant-cli/src/config/webpack.base.ts @@ -1,6 +1,5 @@ -// @ts-ignore -import FriendlyErrorsPlugin from '@nuxt/friendly-errors-webpack-plugin'; import sass from 'sass'; +import FriendlyErrorsPlugin from '@nuxt/friendly-errors-webpack-plugin'; import { VueLoaderPlugin } from 'vue-loader'; import { CACHE_DIR, diff --git a/packages/vant-cli/src/config/webpack.site.dev.ts b/packages/vant-cli/src/config/webpack.site.dev.ts index 0c503a285..408f19c74 100644 --- a/packages/vant-cli/src/config/webpack.site.dev.ts +++ b/packages/vant-cli/src/config/webpack.site.dev.ts @@ -1,7 +1,6 @@ import merge from 'webpack-merge'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -// @ts-ignore import WebpackBar from 'webpackbar'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; import { get } from 'lodash'; import { join } from 'path'; import { baseConfig } from './webpack.base'; diff --git a/packages/vant-cli/src/module.d.ts b/packages/vant-cli/src/module.d.ts new file mode 100644 index 000000000..ca3ef7e5d --- /dev/null +++ b/packages/vant-cli/src/module.d.ts @@ -0,0 +1,11 @@ +// some modules with missing type definitions +declare module 'less'; +declare module 'sass'; +declare module 'execa'; +declare module 'clean-css'; +declare module 'webpackbar'; +declare module 'release-it'; +declare module 'html-webpack-plugin'; +declare module 'conventional-changelog'; +declare module '@vant/markdown-vetur'; +declare module '@nuxt/friendly-errors-webpack-plugin'; diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index e4a8e685c..48d2c5698 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -1216,13 +1216,6 @@ "@types/node" "*" "@types/responselike" "*" -"@types/clean-css@*": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d" - integrity sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ== - dependencies: - "@types/node" "*" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -1286,24 +1279,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/html-minifier@*": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f" - integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg== - dependencies: - "@types/clean-css" "*" - "@types/relateurl" "*" - "@types/uglify-js" "*" - -"@types/html-webpack-plugin@^3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.2.tgz#f552121f3c0a3972dda9a425de1e0029069b2907" - integrity sha512-KsL5cHtNWhOQF9Cu+Dpn7GemzQRxdKhe1/LgZUSku33B5L4Cx2/p3DX6YbeRNOoI552MNbB/VNbCDNEYU//iAw== - dependencies: - "@types/html-minifier" "*" - "@types/tapable" "*" - "@types/webpack" "*" - "@types/http-cache-semantics@*": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" @@ -1413,11 +1388,6 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/relateurl@*": - version "0.2.28" - resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" - integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= - "@types/responselike@*": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -1425,13 +1395,6 @@ dependencies: "@types/node" "*" -"@types/sass@^1.16.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.16.0.tgz#b41ac1c17fa68ffb57d43e2360486ef526b3d57d" - integrity sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA== - dependencies: - "@types/node" "*" - "@types/serve-static@*": version "1.13.3" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" @@ -2071,19 +2034,11 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3267,11 +3222,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" @@ -3729,7 +3679,7 @@ debug@4, debug@4.1.1, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3867,11 +3817,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3903,11 +3848,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -4966,13 +4906,6 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -5011,20 +4944,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -5380,11 +5299,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5674,7 +5588,7 @@ husky@^4.2.3: slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5698,7 +5612,7 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@3.0.3, ignore-walk@^3.0.1: +ignore-walk@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== @@ -7692,21 +7606,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7815,15 +7714,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7906,22 +7796,6 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.50: version "1.1.50" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" @@ -7929,7 +7803,7 @@ node-releases@^1.1.50: dependencies: semver "^6.3.0" -nopt@^4.0.1, nopt@~4.0.1: +nopt@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= @@ -7989,27 +7863,6 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -8024,16 +7877,6 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -9162,7 +9005,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7, rc@^1.2.8: +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -9247,7 +9090,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9702,7 +9545,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9810,11 +9653,6 @@ sass@^1.26.2: dependencies: chokidar ">=2.0.0 <4.0.0" -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - saxes@^3.1.9: version "3.1.11" resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" @@ -9868,7 +9706,7 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9935,7 +9773,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -10366,7 +10204,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10771,19 +10609,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - teeny-request@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.1.tgz#9b1f512cef152945827ba7e34f62523a4ce2c5b0" @@ -11806,13 +11631,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -11946,7 +11764,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From c40a14278baaa01986d6124db01f4cb591cc2df3 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sat, 14 Mar 2020 19:04:04 +0800 Subject: [PATCH 055/240] chore(cli): bump commander 5 --- packages/vant-cli/package.json | 4 +--- packages/vant-cli/src/index.ts | 2 +- packages/vant-cli/yarn.lock | 19 ++++++++----------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 973d2bc01..9a36ff3c7 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -36,7 +36,6 @@ "@types/fs-extra": "^8.1.0", "@types/lodash": "^4.14.149", "@types/postcss-load-config": "^2.0.1", - "@types/shelljs": "^0.8.6", "@types/webpack": "^4.41.7", "@types/webpack-dev-server": "^3.10.0", "@types/webpack-merge": "^4.1.5" @@ -67,7 +66,7 @@ "chokidar": "^3.3.1", "clean-css": "^4.2.3", "codecov": "^3.6.5", - "commander": "^4.1.1", + "commander": "^5.0.0", "consola": "^2.11.3", "conventional-changelog": "^3.1.18", "cross-env": "^7.0.2", @@ -91,7 +90,6 @@ "release-it": "^13.0.0", "sass": "^1.26.2", "sass-loader": "^8.0.2", - "shelljs": "^0.8.3", "style-loader": "^1.1.3", "stylelint": "^13.2.0", "typescript": "^3.8.3", diff --git a/packages/vant-cli/src/index.ts b/packages/vant-cli/src/index.ts index 8d4060791..d1310cc83 100755 --- a/packages/vant-cli/src/index.ts +++ b/packages/vant-cli/src/index.ts @@ -62,4 +62,4 @@ command('commit-lint') .description('Lint commit message') .action(commitLint); -parse(process.argv); +parse(); diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index 48d2c5698..4397346ef 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -1270,7 +1270,7 @@ dependencies: "@types/node" "*" -"@types/glob@*", "@types/glob@^7.1.1": +"@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== @@ -1403,14 +1403,6 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/shelljs@^0.8.6": - version "0.8.6" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.6.tgz#45193a51df99e0f00513c39a2152832399783221" - integrity sha512-svx2eQS268awlppL/P8wgDLBrsDXdKznABHJcuqXyWpSKJgE1s2clXlBvAwbO/lehTmG06NtEWJRkAk4tAgenA== - dependencies: - "@types/glob" "*" - "@types/node" "*" - "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -3105,11 +3097,16 @@ commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1, commander@^4.1.1: +commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/commander/download/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" + integrity sha1-2/GQm0nlBE+P2vCtyAnwwHIr39A= + commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" @@ -9842,7 +9839,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.3, shelljs@^0.8.3: +shelljs@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== From ad9d8a7649fbd4af9e7e8d15609c8584d1f9b313 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 15 Mar 2020 10:46:03 +0800 Subject: [PATCH 056/240] chore(deps): bump acorn from 6.4.0 to 6.4.1 in /packages/vant-cli (#5821) Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/vant-cli/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index 4397346ef..b983e0c47 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -1885,9 +1885,9 @@ acorn-walk@^6.0.1: integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn@^6.0.1, acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.1.0: version "7.1.1" From 66c0b3c1b7d101f242071cf90e5c0b2b899edbdd Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 15 Mar 2020 11:00:45 +0800 Subject: [PATCH 057/240] feat(Uploader): add show-upload prop --- src/uploader/README.md | 1 + src/uploader/README.zh-CN.md | 1 + src/uploader/index.js | 6 +++++- src/uploader/test/index.spec.js | 7 +++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/uploader/README.md b/src/uploader/README.md index a89d3a3c9..0bed95ecf 100644 --- a/src/uploader/README.md +++ b/src/uploader/README.md @@ -165,6 +165,7 @@ export default { | multiple | Whether to enable multiple selection pictures | *boolean* | `false` | | disabled | Whether to disabled the upload | *boolean* | `false` | | deletable `v2.2.12` | Whether to show delete icon | *boolean* | `true` | +| show-upload `v2.5.6` | Whether to show upload area | *boolean* | `true` | | capture | Capture,can be set to `camera` | *string* | - | | after-read | Hook after reading the file | *Function* | - | | before-read | Hook before reading the file, return false to stop reading the file, can return Promise | *Function* | - | diff --git a/src/uploader/README.zh-CN.md b/src/uploader/README.zh-CN.md index 2f6e78453..069124b76 100644 --- a/src/uploader/README.zh-CN.md +++ b/src/uploader/README.zh-CN.md @@ -186,6 +186,7 @@ export default { | multiple | 是否开启图片多选,部分安卓机型不支持 | *boolean* | `false` | | disabled | 是否禁用文件上传 | *boolean* | `false` | | deletable `v2.2.12` | 是否展示删除按钮 | *boolean* | `true` | +| show-upload `v2.5.6` | 是否展示上传区域 | *boolean* | `true` | | capture | 图片选取模式,可选值为`camera`(直接调起摄像头) | *string* | - | | after-read | 文件读取完成后的回调函数 | *Function* | - | | before-read | 文件读取前的回调函数,返回`false`可终止文件读取,
支持返回`Promise` | *Function* | - | diff --git a/src/uploader/index.js b/src/uploader/index.js index 5a8bdfdf7..61efd07f7 100644 --- a/src/uploader/index.js +++ b/src/uploader/index.js @@ -53,6 +53,10 @@ export default createComponent({ type: Boolean, default: true, }, + showUpload: { + type: Boolean, + default: true, + }, previewImage: { type: Boolean, default: true, @@ -326,7 +330,7 @@ export default createComponent({ }, genUpload() { - if (this.fileList.length >= this.maxCount) { + if (this.fileList.length >= this.maxCount || !this.showUpload) { return; } diff --git a/src/uploader/test/index.spec.js b/src/uploader/test/index.spec.js index c52314892..db00cfd8f 100644 --- a/src/uploader/test/index.spec.js +++ b/src/uploader/test/index.spec.js @@ -454,3 +454,10 @@ it('close-preview event', async () => { await later(300); expect(wrapper.emitted('close-preview')).toBeTruthy(); }); + +it('show-upload prop', () => { + const wrapper = mount(Uploader); + expect(wrapper.contains('.van-uploader__upload')).toBeTruthy(); + wrapper.setProps({ showUpload: false }); + expect(wrapper.contains('.van-uploader__upload')).toBeFalsy(); +}); From c7e51158aa5789f6493c10fa5f1a16bd06f32697 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 15 Mar 2020 11:04:29 +0800 Subject: [PATCH 058/240] chore: format test cases --- src/address-edit/test/index.spec.js | 6 +-- src/contact-card/test/index.spec.js | 2 +- src/number-keyboard/test/index.spec.js | 4 +- src/slider/test/index.spec.js | 12 +++--- src/toast/test/index.spec.js | 2 +- src/uploader/test/index.spec.js | 52 +++++++++++++------------- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/address-edit/test/index.spec.js b/src/address-edit/test/index.spec.js index ce5e5a3c9..68dad3541 100644 --- a/src/address-edit/test/index.spec.js +++ b/src/address-edit/test/index.spec.js @@ -123,7 +123,7 @@ test('valid name', () => { expect(errorInfo.name).toBeFalsy(); }); -it('valid tel', () => { +test('valid tel', () => { const { data, field, button, errorInfo } = createComponent(); data.tel = ''; button.trigger('click'); @@ -132,7 +132,7 @@ it('valid tel', () => { expect(errorInfo.tel).toBeFalsy(); }); -it('valid areaCode', () => { +test('valid areaCode', () => { const { data, button, errorInfo } = createComponent(); // areaCode empty data.areaCode = ''; @@ -145,7 +145,7 @@ it('valid areaCode', () => { expect(errorInfo.areaCode).toBeTruthy(); }); -it('valid addressDetail', () => { +test('valid addressDetail', () => { const { data, field, button, errorInfo } = createComponent(); data.addressDetail = ''; button.trigger('click'); diff --git a/src/contact-card/test/index.spec.js b/src/contact-card/test/index.spec.js index 3166c5518..7fb160c7a 100644 --- a/src/contact-card/test/index.spec.js +++ b/src/contact-card/test/index.spec.js @@ -101,7 +101,7 @@ describe('ContactEdit', () => { expect(errorInfo.name).toBeFalsy(); }); - it('valid tel', () => { + test('valid tel', () => { const { data, field, button, errorInfo, wrapper } = createComponent(); data.tel = ''; button.trigger('click'); diff --git a/src/number-keyboard/test/index.spec.js b/src/number-keyboard/test/index.spec.js index d17aa0d89..d6f36ff1e 100644 --- a/src/number-keyboard/test/index.spec.js +++ b/src/number-keyboard/test/index.spec.js @@ -20,14 +20,14 @@ test('click number key', () => { wrapper.destroy(); }); -it('click delete key', () => { +test('click delete key', () => { const wrapper = mount(NumberKeyboard); clickKey(wrapper.findAll('.van-key').at(11)); expect(wrapper.emitted('delete')).toBeTruthy(); }); -it('click empty key', () => { +test('click empty key', () => { const wrapper = mount(NumberKeyboard); clickKey(wrapper.findAll('.van-key').at(9)); expect(wrapper.emitted('input')).toBeFalsy(); diff --git a/src/slider/test/index.spec.js b/src/slider/test/index.spec.js index b81c5a7ac..70587a4c8 100644 --- a/src/slider/test/index.spec.js +++ b/src/slider/test/index.spec.js @@ -46,7 +46,7 @@ test('drag button', () => { restoreMock(); }); -it('click bar', () => { +test('click bar', () => { const restoreMock = mockRect(); const wrapper = mount(Slider, { @@ -91,7 +91,7 @@ test('drag button vertical', () => { restoreMock(); }); -it('click vertical', () => { +test('click vertical', () => { const restoreMock = mockRect(true); const wrapper = mount(Slider, { @@ -111,7 +111,7 @@ it('click vertical', () => { restoreMock(); }); -it('bar-height prop', () => { +test('bar-height prop', () => { const wrapper = mount(Slider, { propsData: { value: 50, @@ -122,7 +122,7 @@ it('bar-height prop', () => { expect(wrapper).toMatchSnapshot(); }); -it('button-size prop', () => { +test('button-size prop', () => { const wrapper = mount(Slider, { propsData: { value: 50, @@ -133,7 +133,7 @@ it('button-size prop', () => { expect(wrapper).toMatchSnapshot(); }); -it('should not emit change event when value not changed', () => { +test('should not emit change event when value not changed', () => { const wrapper = mount(Slider, { propsData: { value: 50, @@ -151,7 +151,7 @@ it('should not emit change event when value not changed', () => { expect(wrapper.emitted('change').length).toEqual(1); }); -it('should format initial value', done => { +test('should format initial value', done => { mount(Slider, { propsData: { value: null, diff --git a/src/toast/test/index.spec.js b/src/toast/test/index.spec.js index 549fb0f9d..88da44408 100644 --- a/src/toast/test/index.spec.js +++ b/src/toast/test/index.spec.js @@ -25,7 +25,7 @@ test('create a forbidClick toast', async () => { ).toBeFalsy(); }); -it('toast disappeared after duration', async () => { +test('toast disappeared after duration', async () => { const toast = Toast({ duration: 10, }); diff --git a/src/uploader/test/index.spec.js b/src/uploader/test/index.spec.js index db00cfd8f..ca79464ac 100644 --- a/src/uploader/test/index.spec.js +++ b/src/uploader/test/index.spec.js @@ -37,7 +37,7 @@ test('disabled', () => { expect(afterRead).toHaveBeenCalledTimes(0); }); -it('result-type as text', done => { +test('result-type as text', done => { const wrapper = mount(Uploader, { propsData: { resultType: 'text', @@ -51,7 +51,7 @@ it('result-type as text', done => { wrapper.vm.onChange(file); }); -it('result-type as file', done => { +test('result-type as file', done => { const wrapper = mount(Uploader, { propsData: { resultType: 'file', @@ -66,7 +66,7 @@ it('result-type as file', done => { wrapper.vm.onChange(file); }); -it('set input name', done => { +test('set input name', done => { const wrapper = mount(Uploader, { propsData: { name: 'uploader', @@ -84,7 +84,7 @@ it('set input name', done => { wrapper.vm.onChange(file); }); -it('unknown resultType', () => { +test('unknown resultType', () => { const afterRead = jest.fn(); const wrapper = mount(Uploader, { propsData: { @@ -96,7 +96,7 @@ it('unknown resultType', () => { expect(afterRead).toHaveBeenCalledTimes(0); }); -it('before read return false', () => { +test('before read return false', () => { const afterRead = jest.fn(); const wrapper = mount(Uploader, { propsData: { @@ -112,7 +112,7 @@ it('before read return false', () => { expect(input.element.value).toEqual(''); }); -it('before read return promise and resolve', async () => { +test('before read return promise and resolve', async () => { const afterRead = jest.fn(); const wrapper = mount(Uploader, { propsData: { @@ -130,7 +130,7 @@ it('before read return promise and resolve', async () => { expect(afterRead).toHaveBeenCalledTimes(1); }); -it('before read return promise and resolve no value', async () => { +test('before read return promise and resolve no value', async () => { const afterRead = jest.fn(); const wrapper = mount(Uploader, { propsData: { @@ -149,7 +149,7 @@ it('before read return promise and resolve no value', async () => { expect(input.element.value).toEqual(''); }); -it('before read return promise and reject', async () => { +test('before read return promise and reject', async () => { const afterRead = jest.fn(); const wrapper = mount(Uploader, { propsData: { @@ -189,7 +189,7 @@ test('file size overlimit', async () => { expect(wrapper.emitted('oversize')[2]).toBeFalsy(); }); -it('render upload-text', () => { +test('render upload-text', () => { const wrapper = mount(Uploader, { propsData: { uploadText: 'Text', @@ -199,7 +199,7 @@ it('render upload-text', () => { expect(wrapper).toMatchSnapshot(); }); -it('render preview image', async () => { +test('render preview image', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [ @@ -221,7 +221,7 @@ it('render preview image', async () => { expect(wrapper).toMatchSnapshot(); }); -it('image-fit prop', () => { +test('image-fit prop', () => { const wrapper = mount(Uploader, { propsData: { imageFit: 'contain', @@ -232,7 +232,7 @@ it('image-fit prop', () => { expect(wrapper).toMatchSnapshot(); }); -it('upload-icon prop', () => { +test('upload-icon prop', () => { const wrapper = mount(Uploader, { propsData: { uploadIcon: 'add', @@ -242,7 +242,7 @@ it('upload-icon prop', () => { expect(wrapper).toMatchSnapshot(); }); -it('disable preview image', async () => { +test('disable preview image', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [], @@ -261,7 +261,7 @@ it('disable preview image', async () => { expect(wrapper).toMatchSnapshot(); }); -it('max-count prop', async () => { +test('max-count prop', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [], @@ -280,7 +280,7 @@ it('max-count prop', async () => { expect(wrapper).toMatchSnapshot(); }); -it('preview-size prop', async () => { +test('preview-size prop', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [], @@ -299,7 +299,7 @@ it('preview-size prop', async () => { expect(wrapper).toMatchSnapshot(); }); -it('deletable prop', () => { +test('deletable prop', () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -312,7 +312,7 @@ it('deletable prop', () => { expect(wrapper.find('.van-uploader__preview-delete').element).toBeFalsy(); }); -it('delete preview image', () => { +test('delete preview image', () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -332,7 +332,7 @@ it('delete preview image', () => { expect(wrapper.emitted('delete')[0]).toBeTruthy(); }); -it('before-delete prop return false', () => { +test('before-delete prop return false', () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -344,7 +344,7 @@ it('before-delete prop return false', () => { expect(wrapper.emitted('delete')).toBeFalsy(); }); -it('before-delete prop return true', () => { +test('before-delete prop return true', () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -356,7 +356,7 @@ it('before-delete prop return true', () => { expect(wrapper.emitted('delete')).toBeTruthy(); }); -it('before-delete prop resolved', async () => { +test('before-delete prop resolved', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -369,7 +369,7 @@ it('before-delete prop resolved', async () => { expect(wrapper.emitted('delete')).toBeTruthy(); }); -it('before-delete prop rejected', async () => { +test('before-delete prop rejected', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -382,7 +382,7 @@ it('before-delete prop rejected', async () => { expect(wrapper.emitted('delete')).toBeFalsy(); }); -it('click to preview image', () => { +test('click to preview image', () => { const wrapper = mount(Uploader, { propsData: { previewFullImage: false, @@ -404,7 +404,7 @@ it('click to preview image', () => { expect(images.length).toEqual(1); }); -it('closeImagePreview method', () => { +test('closeImagePreview method', () => { const close = jest.fn(); const wrapper = mount(Uploader, { mocks: { @@ -422,7 +422,7 @@ it('closeImagePreview method', () => { wrapper2.vm.closeImagePreview(); }); -it('click-preview event', () => { +test('click-preview event', () => { const wrapper = mount(Uploader, { propsData: { previewFullImage: false, @@ -438,7 +438,7 @@ it('click-preview event', () => { }); }); -it('close-preview event', async () => { +test('close-preview event', async () => { const wrapper = mount(Uploader, { propsData: { fileList: [{ url: IMAGE }], @@ -455,7 +455,7 @@ it('close-preview event', async () => { expect(wrapper.emitted('close-preview')).toBeTruthy(); }); -it('show-upload prop', () => { +test('show-upload prop', () => { const wrapper = mount(Uploader); expect(wrapper.contains('.van-uploader__upload')).toBeTruthy(); wrapper.setProps({ showUpload: false }); From 4695dc29b943d53caeebf32cf893241bd16750a9 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 15 Mar 2020 11:14:38 +0800 Subject: [PATCH 059/240] docs(Calendar): split props --- src/calendar/README.md | 26 ++++++++++++++++++++------ src/calendar/README.zh-CN.md | 26 ++++++++++++++++++++------ src/datetime-picker/README.zh-CN.md | 4 ++-- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/calendar/README.md b/src/calendar/README.md index 634c3f56a..f05556bdf 100644 --- a/src/calendar/README.md +++ b/src/calendar/README.md @@ -235,7 +235,6 @@ Set `poppable` to `false`, the calendar will be displayed directly on the page i | Attribute | Description | Type | Default | |------|------|------|------| -| v-model | Whether to show calendar | *boolean* | `false` | | type `v2.5.4` | Type,can be set to `range` `multiple` | *string* | `single` | | title | Title of calendar | *string* | `Calendar` | | color | Color for the bottom button and selected date | *string* | `#ee0a24` | @@ -244,21 +243,36 @@ Set `poppable` to `false`, the calendar will be displayed directly on the page i | default-date | Default selected date | *Date \| Date[]* | Today | | row-height | Row height | *number \| string* | `64` | | formatter | Day formatter | *(day: Day) => Day* | - | -| position | Popup position, can be set to `top` `right` `left` | *string* | `bottom` | | poppable | Whether to show the calendar inside a popup | *boolean* | `true` | -| round | Whether to show round corner | *boolean* | `true` | | show-mark | Whether to show background month mark | *boolean* | `true` | | show-title `v2.5.5` | Whether to show title | *boolean* | `true` | | show-subtitle `v2.5.5` | Whether to show subtitle | *boolean* | `true` | | show-confirm | Whether to show confirm button | *boolean* | `true` | +| confirm-text | Confirm button text | *string* | `Confirm` | +| confirm-disabled-text | Confirm button text when disabled | *string* | `Confirm` | + +### Poppable Props + +Following props are supported when the poppable is true + +| Attribute | Description | Type | Default | +|------|------|------|------| +| v-model | Whether to show calendar | *boolean* | `false` | +| position | Popup position, can be set to `top` `right` `left` | *string* | `bottom` | +| round | Whether to show round corner | *boolean* | `true` | | close-on-popstate `v2.4.4` | Whether to close when popstate | *boolean* | `false` | | close-on-click-overlay | Whether to close when click overlay | *boolean* | `true` | | safe-area-inset-bottom | Whether to enable bottom safe area adaptation | *boolean* | `true` | -| confirm-text | Confirm button text | *string* | `Confirm` | -| confirm-disabled-text | Confirm button text when disabled | *string* | `Confirm` | +| get-container `v2.4.4` | Return the mount node for Calendar | _string \| () => Element_ | - | + +### Range Props + +Following props are supported when the type is range + +| Attribute | Description | Type | Default | +|------|------|------|------| | max-range `v2.4.3` | Number of selectable days | *number \| string* | - | | range-prompt `v2.4.3` | Error message when exceeded max range | *string* | `Choose no more than xx days` | -| get-container `v2.4.4` | Return the mount node for Calendar | _string \| () => Element_ | - | ### Data Structure of Day diff --git a/src/calendar/README.zh-CN.md b/src/calendar/README.zh-CN.md index bac44258e..959e111ce 100644 --- a/src/calendar/README.zh-CN.md +++ b/src/calendar/README.zh-CN.md @@ -237,7 +237,6 @@ export default { | 参数 | 说明 | 类型 | 默认值 | |------|------|------|------| -| v-model | 是否显示日历弹窗 | *boolean* | `false` | | type `v2.5.4` | 选择类型:
`single`表示选择单个日期,
`multiple`表示选择多个日期,
`range`表示选择日期区间 | *string* | `single` | | title | 日历标题 | *string* | `日期选择` | | color | 主题色,对底部按钮和选中日期生效 | *string* | `#ee0a24` | @@ -246,21 +245,36 @@ export default { | default-date | 默认选中的日期,`type`为`multiple`或`range`时为数组 | *Date \| Date[]* | 今天 | | row-height | 日期行高 | *number \| string* | `64` | | formatter | 日期格式化函数 | *(day: Day) => Day* | - | -| position | 弹出位置,可选值为 `top` `right` `left` | *string* | `bottom` | | poppable | 是否以弹层的形式展示日历 | *boolean* | `true` | -| round | 是否显示圆角弹窗 | *boolean* | `true` | | show-mark | 是否显示月份背景水印 | *boolean* | `true` | | show-title `v2.5.5` | 是否展示日历标题 | *boolean* | `true` | | show-subtitle `v2.5.5` | 是否展示日历副标题(年月) | *boolean* | `true` | | show-confirm | 是否展示确认按钮 | *boolean* | `true` | +| confirm-text | 确认按钮的文字 | *string* | `确定` | +| confirm-disabled-text | 确认按钮处于禁用状态时的文字 | *string* | `确定` | + +### Poppable Props + +当 Canlendar 的 `poppable` 为 `true` 时,支持以下 props: + +| 参数 | 说明 | 类型 | 默认值 | +|------|------|------|------| +| v-model | 是否显示日历弹窗 | *boolean* | `false` | +| position | 弹出位置,可选值为 `top` `right` `left` | *string* | `bottom` | +| round | 是否显示圆角弹窗 | *boolean* | `true` | | close-on-popstate `v2.4.4` | 是否在页面回退时自动关闭 | *boolean* | `false` | | close-on-click-overlay | 是否在点击遮罩层后关闭 | *boolean* | `true` | | safe-area-inset-bottom | 是否开启[底部安全区适配](#/zh-CN/quickstart#di-bu-an-quan-qu-gua-pei) | *boolean* | `true` | -| confirm-text | 确认按钮的文字 | *string* | `确定` | -| confirm-disabled-text | 确认按钮处于禁用状态时的文字 | *string* | `确定` | +| get-container `v2.4.4` | 指定挂载的节点,[用法示例](#/zh-CN/popup#zhi-ding-gua-zai-wei-zhi) | *string \| () => Element* | - | + +### Range Props + +当 Canlendar 的 `type` 为 `range` 时,支持以下 props: + +| 参数 | 说明 | 类型 | 默认值 | +|------|------|------|------| | max-range `v2.4.3` | 日期区间最多可选天数,默认无限制 | *number \| string* | - | | range-prompt `v2.4.3` | 范围选择超过最多可选天数时的提示文案 | *string* | `选择天数不能超过 xx 天` | -| get-container `v2.4.4` | 指定挂载的节点,[用法示例](#/zh-CN/popup#zhi-ding-gua-zai-wei-zhi) | *string \| () => Element* | - | ### Day 数据结构 diff --git a/src/datetime-picker/README.zh-CN.md b/src/datetime-picker/README.zh-CN.md index d48f9bff2..87cba26c6 100644 --- a/src/datetime-picker/README.zh-CN.md +++ b/src/datetime-picker/README.zh-CN.md @@ -169,7 +169,7 @@ export default { ### DatePicker Props -当时间选择器类型为 date 或 datetime 时,支持以下 props +当时间选择器类型为 date 或 datetime 时,支持以下 props: | 参数 | 说明 | 类型 | 默认值 | |------|------|------|------| @@ -178,7 +178,7 @@ export default { ### TimePicker Props -当时间选择器类型为 time 时,支持以下 props +当时间选择器类型为 time 时,支持以下 props: | 参数 | 说明 | 类型 | 默认值 | |------|------|------|------| From f5e79dabb522e78885db0ef3c530f9f2b2ed7f03 Mon Sep 17 00:00:00 2001 From: Pingren Nie Date: Mon, 16 Mar 2020 09:39:42 +0800 Subject: [PATCH 060/240] feat(Uploader): add chooseFile method (#5818) --- src/uploader/README.md | 1 + src/uploader/README.zh-CN.md | 1 + src/uploader/index.js | 11 +++++++++++ types/uploader.d.ts | 2 ++ 4 files changed, 15 insertions(+) diff --git a/src/uploader/README.md b/src/uploader/README.md index 0bed95ecf..98de96e78 100644 --- a/src/uploader/README.md +++ b/src/uploader/README.md @@ -214,3 +214,4 @@ Use [ref](https://vuejs.org/v2/api/#ref) to get Uploader instance and call insta | Name | Description | Attribute | Return value | |------|------|------|------| | closeImagePreview | Close full screen image preview | - | - | +| chooseFile | Trigger choosing files, works with the user action context only because of browser security | - | - | diff --git a/src/uploader/README.zh-CN.md b/src/uploader/README.zh-CN.md index 069124b76..bd8ade664 100644 --- a/src/uploader/README.zh-CN.md +++ b/src/uploader/README.zh-CN.md @@ -239,3 +239,4 @@ before-read、after-read、before-delete 执行时会传递以下回调参数: | 方法名 | 说明 | 参数 | 返回值 | |------|------|------|------| | closeImagePreview | 关闭全屏的图片预览 | - | - | +| chooseFile | 主动调起文件选择,由于浏览器安全限制,只有在用户触发操作的上下文中调用才有效 | - | - | diff --git a/src/uploader/index.js b/src/uploader/index.js index 61efd07f7..280398633 100644 --- a/src/uploader/index.js +++ b/src/uploader/index.js @@ -247,6 +247,17 @@ export default createComponent({ } }, + // @exposed-api + chooseFile() { + if (this.disabled) { + return; + } + /* istanbul ignore else */ + if (this.$refs.input) { + this.$refs.input.click(); + } + }, + genPreviewMask(item) { const { status } = item; diff --git a/types/uploader.d.ts b/types/uploader.d.ts index e31434eca..e518ed97b 100644 --- a/types/uploader.d.ts +++ b/types/uploader.d.ts @@ -2,4 +2,6 @@ import { VanComponent } from './component'; export class Uploader extends VanComponent { closeImagePreview(): void; + + chooseFile(): void; } From 7eb17ec8158c97c718bde3781d9c789c52b71b59 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 16 Mar 2020 16:44:43 +0800 Subject: [PATCH 061/240] chore: fix @vant/waterfall dev deps --- packages/vant-waterfall/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vant-waterfall/package.json b/packages/vant-waterfall/package.json index 3f7a4fc45..1c53ac215 100644 --- a/packages/vant-waterfall/package.json +++ b/packages/vant-waterfall/package.json @@ -1,6 +1,6 @@ { "name": "@vant/waterfall", - "version": "1.0.0", + "version": "1.0.1", "description": "vant waterfall component", "main": "lib/index.js", "publishConfig": { @@ -12,7 +12,7 @@ }, "license": "MIT", "repository": "https://github.com/youzan/vant/tree/dev/packages/vant-waterfall", - "dependencies": { + "devDependencies": { "@babel/cli": "^7.4.4", "@babel/core": "^7.4.4", "@babel/plugin-transform-object-assign": "^7.2.0", From 477e29e3412ae9d32f342baef9978add965cb094 Mon Sep 17 00:00:00 2001 From: lmx-Hexagram <52130356+lmx-Hexagram@users.noreply.github.com> Date: Mon, 16 Mar 2020 17:14:39 +0800 Subject: [PATCH 062/240] docs: update theme.zh-CN.md (#5829) --- docs/markdown/theme.zh-CN.md | 37 ++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/docs/markdown/theme.zh-CN.md b/docs/markdown/theme.zh-CN.md index d7afbdc1e..e44ef8d92 100644 --- a/docs/markdown/theme.zh-CN.md +++ b/docs/markdown/theme.zh-CN.md @@ -78,14 +78,35 @@ module.exports = { modifyVars: { // 直接覆盖变量 'text-color': '#111', - 'border-color': '#eee' + 'border-color': '#eee', // 或者可以通过 less 文件覆盖(文件路径为绝对路径) - 'hack': `true; @import "your-less-file-path.less";` - } - } - } - ] - } - ] + hack: `true; @import "your-less-file-path.less";`, + }, + }, + }, + ], + }, + ], +}; +``` + +如果 vue-cli 搭建的项目,可以在 `vue.config.js` 中进行配置。 + +```js +// vue.config.js +module.exports = { + css: { + loaderOptions: { + less: { + modifyVars: { + // 直接覆盖变量 + 'text-color': '#111', + 'border-color': '#eee', + // 或者可以通过 less 文件覆盖(文件路径为绝对路径) + hack: `true; @import "your-less-file-path.less";`, + }, + }, + }, + }, }; ``` From a98100d3005a65d12931c285e3184c7783305f71 Mon Sep 17 00:00:00 2001 From: lmx-Hexagram <52130356+lmx-Hexagram@users.noreply.github.com> Date: Mon, 16 Mar 2020 20:08:10 +0800 Subject: [PATCH 063/240] docs: update theme.en-US.md (#5833) --- docs/markdown/theme.en-US.md | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/docs/markdown/theme.en-US.md b/docs/markdown/theme.en-US.md index d1e7e72e0..5639bdc0a 100644 --- a/docs/markdown/theme.en-US.md +++ b/docs/markdown/theme.en-US.md @@ -78,11 +78,33 @@ module.exports = { 'border-color': '#eee' // or override with less file 'hack': `true; @import "your-less-file-path.less";` - } - } - } - ] - } - ] + }, + }, + }, + ], + }, + ], }; ``` + +If you build a project by vue-cli,it can be configured in `vue.config.js`: + +```js +// vue.config.js +module.exports = { + css: { + loaderOptions: { + less: { + modifyVars: { + // overide with less vars + 'text-color': '#111', + 'border-color': '#eee', + // or override with less file + hack: `true; @import "your-less-file-path.less";`, + }, + }, + }, + }, +}; +``` + From 31790bf08f904a807787f1865ce3947d9eb86bfb Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 16 Mar 2020 20:23:27 +0800 Subject: [PATCH 064/240] docs(cli): add commands intro --- packages/vant-cli/README.md | 24 +-------------- packages/vant-cli/docs/commands.md | 48 ++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 23 deletions(-) create mode 100644 packages/vant-cli/docs/commands.md diff --git a/packages/vant-cli/README.md b/packages/vant-cli/README.md index ffa75564a..b5bf3e37e 100644 --- a/packages/vant-cli/README.md +++ b/packages/vant-cli/README.md @@ -70,29 +70,7 @@ yarn add @vant/cli --dev ## 命令 -### dev - -本地开发,dev 命令会启动一个本地服务器,用于在开发过程中对文档和示例进行预览 - -### build - -构建组件库,在`es`和`lib`目录生成可用于生产环境的组件代码 - -### build-site - -构建文档站点,在`site`目录生成可用于生产环境的文档站点代码 - -### release - -发布组件库,发布前会自动执行 build 和 changelog 命令 - -### changelog - -基于 commit 记录生成更新日志 - -### commit-lint - -校验 commit message 的格式是否符合规范,需要配合`husky`在提交 commit 时触发 +参见[命令](https://github.com/youzan/vant/tree/dev/packages/vant-cli/docs/commands.md)。 ## 配置 diff --git a/packages/vant-cli/docs/commands.md b/packages/vant-cli/docs/commands.md new file mode 100644 index 000000000..bfed5489f --- /dev/null +++ b/packages/vant-cli/docs/commands.md @@ -0,0 +1,48 @@ +# 命令 + +Vant Cli 中内置了一系列的命令,可以将命令添加到 npm scripts 中进行使用。 + +```json +// package.json +{ + "scripts": { + "dev": "vant-cli dev", + "test": "vant-cli test", + "lint": "vant-cli lint", + "release": "vant-cli release", + "build-site": "vant-cli build-site" + } +} +``` + +也可以通过 npm 自带的 [npx](https://github.com/npm/npx) 直接执行某个命令: + +```bash +npx vant-cli dev +``` + +### dev + +运行本地开发环境。 + +运行 dev 命令时,Vant Cli 会通过 [webpack-dev-server](https://github.com/webpack/webpack-dev-server) 启动一个本地服务器,用于在开发过程中对文档和示例进行预览。 + +### build + +构建组件库,在 `es` 和 `lib` 目录生成可用于生产环境的组件代码。 + +### build-site + +构建文档站点,在 `site` 目录生成可用于生产环境的文档站点代码。 + +### release + +发布组件库,发布前会自动执行 build 和 changelog 命令。 + +## changelog + +基于 commit 记录生成更新日志。 + +## commit-lint + +校验 commit message 的格式是否符合规范,需要配合`husky`在提交 commit 时触发。 From b9a238b9f79070dfb24f736d1408edf53e2fbd2a Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 16 Mar 2020 20:41:37 +0800 Subject: [PATCH 065/240] docs(cli): add build command detail --- packages/vant-cli/docs/commands.md | 44 +++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/packages/vant-cli/docs/commands.md b/packages/vant-cli/docs/commands.md index bfed5489f..251120626 100644 --- a/packages/vant-cli/docs/commands.md +++ b/packages/vant-cli/docs/commands.md @@ -29,7 +29,49 @@ npx vant-cli dev ### build -构建组件库,在 `es` 和 `lib` 目录生成可用于生产环境的组件代码。 +构建组件库。 + +运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码,结构如下: + +``` +project +├─ es # es 目录下的代码遵循 esmodule 规范 +│ ├─ button # button 组件编译后的代码目录 +│ ├─ dialog # dialog 组件编译后的代码目录 +│ └─ index.js # 通过 esmodule 引入所有组件的入口,支持 tree shaking +│ +└─ lib # lib 目录下的代码遵循 commonjs 规范 + ├─ button # button 组件编译后的代码目录 + ├─ dialog # dialog 组件编译后的代码目录 + ├─ index.js # 通过 commonjs 引入所有组件的入口,支持 tree shaking + ├─ index.less # 所有组件未编译的样式 + ├─ index.css # 所有组件打包后的样式,用于 CDN 引入 + ├─ name.js # 所有组件打包后的脚本,未压缩,用于 CDN 引入 + └─ name.min.js # 所有组件打包后的脚本,已压缩,用于 CDN 引入 +``` + +单个组件编译后的目录如下: + +``` +button +├─ index.js # 组件编译后的 JS 文件 +├─ index.css # 组件编译后的 CSS 文件 +├─ index.less # 组件编译前的 CSS 文件 +└─ style # 按需引入样式的入口 + ├─ index.js # 按需引入编译后的样式 + └─ less.js # 按需引入未编译的样式,可用于主题定制 +``` + +发布 npm 时,请将以下配置加入到 `package.json` 中,使 npm 包能被正确识别: + +```json +// package.json +{ + "main": "lib/index.js", + "module": "es/index.js", + "files": ["es", "lib"] +} +``` ### build-site From 1fcb8cea32d7470c44f59a5148c81fdbfc1f0793 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Mon, 16 Mar 2020 20:44:56 +0800 Subject: [PATCH 066/240] docs(cli): update commands.md --- packages/vant-cli/docs/commands.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/vant-cli/docs/commands.md b/packages/vant-cli/docs/commands.md index 251120626..11d72cfe0 100644 --- a/packages/vant-cli/docs/commands.md +++ b/packages/vant-cli/docs/commands.md @@ -38,12 +38,12 @@ project ├─ es # es 目录下的代码遵循 esmodule 规范 │ ├─ button # button 组件编译后的代码目录 │ ├─ dialog # dialog 组件编译后的代码目录 -│ └─ index.js # 通过 esmodule 引入所有组件的入口,支持 tree shaking +│ └─ index.js # 引入所有组件的入口,支持 tree shaking │ └─ lib # lib 目录下的代码遵循 commonjs 规范 ├─ button # button 组件编译后的代码目录 ├─ dialog # dialog 组件编译后的代码目录 - ├─ index.js # 通过 commonjs 引入所有组件的入口,支持 tree shaking + ├─ index.js # 引入所有组件的入口 ├─ index.less # 所有组件未编译的样式 ├─ index.css # 所有组件打包后的样式,用于 CDN 引入 ├─ name.js # 所有组件打包后的脚本,未压缩,用于 CDN 引入 @@ -79,12 +79,12 @@ button ### release -发布组件库,发布前会自动执行 build 和 changelog 命令。 +发布组件库,发布前会自动执行 build 和 changelog 命令,并通过 [release-it](https://github.com/release-it/release-it) 发布 npm 包。 ## changelog -基于 commit 记录生成更新日志。 +基于 commit 记录生成更新日志,基于 [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog) 实现。 ## commit-lint -校验 commit message 的格式是否符合规范,需要配合`husky`在提交 commit 时触发。 +校验 commit message 的格式是否符合规范,需要配合 `husky` 在提交 commit 时触发。 From 8d6adce9a2f049fbd14799fbb9357f69dc99fe97 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 09:38:51 +0800 Subject: [PATCH 067/240] docs(NumberKeyboard): fix extra quotes (#5835) --- src/number-keyboard/README.md | 4 ++-- src/number-keyboard/README.zh-CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/number-keyboard/README.md b/src/number-keyboard/README.md index a33d61f56..4ecfa7802 100644 --- a/src/number-keyboard/README.md +++ b/src/number-keyboard/README.md @@ -95,7 +95,7 @@ export default { Use `extra-key` prop to set the content of bottom left button ```html - + Show Id Card Number Keyboard @@ -114,7 +114,7 @@ Use `extra-key` prop to set the content of bottom left button Use `title` prop to set keyboard title ```html - + Show Custom Title Keyboard diff --git a/src/number-keyboard/README.zh-CN.md b/src/number-keyboard/README.zh-CN.md index f38fe8b4d..e854397b4 100644 --- a/src/number-keyboard/README.zh-CN.md +++ b/src/number-keyboard/README.zh-CN.md @@ -101,7 +101,7 @@ export default { 通过`extra-key`属性可以设置左下角按键内容 ```html - + 弹出身份证号码键盘 @@ -120,7 +120,7 @@ export default { 通过`title`属性可以设置键盘标题 ```html - + 弹出自定义标题键盘 From 0a3ed531873bd76cd14ff643b7a7e0e468b2bbd7 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 19:37:12 +0800 Subject: [PATCH 068/240] feat(Calendar): add allow-same-day prop (#5688) --- src/calendar/README.md | 1 + src/calendar/README.zh-CN.md | 1 + src/calendar/components/Month.js | 29 ++++++++++++++++++----------- src/calendar/index.js | 4 ++++ src/calendar/index.less | 2 ++ src/calendar/test/index.spec.js | 6 +++++- src/calendar/test/prop.spec.js | 30 ++++++++++++++++++++++++++++++ src/locale/lang/en-US.ts | 1 + src/locale/lang/es-ES.ts | 3 ++- src/locale/lang/tr-TR.ts | 1 + src/locale/lang/zh-CN.ts | 1 + src/locale/lang/zh-HK.ts | 1 + src/locale/lang/zh-TW.ts | 1 + 13 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/calendar/README.md b/src/calendar/README.md index f05556bdf..28e4defd3 100644 --- a/src/calendar/README.md +++ b/src/calendar/README.md @@ -273,6 +273,7 @@ Following props are supported when the type is range |------|------|------|------| | max-range `v2.4.3` | Number of selectable days | *number \| string* | - | | range-prompt `v2.4.3` | Error message when exceeded max range | *string* | `Choose no more than xx days` | +| allow-same-day `v2.5.6` | Whether the start and end time of the range is allowed on the same day | *boolean* | `fasle` | ### Data Structure of Day diff --git a/src/calendar/README.zh-CN.md b/src/calendar/README.zh-CN.md index 959e111ce..14504c0be 100644 --- a/src/calendar/README.zh-CN.md +++ b/src/calendar/README.zh-CN.md @@ -275,6 +275,7 @@ export default { |------|------|------|------| | max-range `v2.4.3` | 日期区间最多可选天数,默认无限制 | *number \| string* | - | | range-prompt `v2.4.3` | 范围选择超过最多可选天数时的提示文案 | *string* | `选择天数不能超过 xx 天` | +| allow-same-day `v2.5.6` | 是否允许日期范围的起止时间为同一天 | *boolean* | `fasle` | ### Day 数据结构 diff --git a/src/calendar/components/Month.js b/src/calendar/components/Month.js index 05d6ad792..c38573fb0 100644 --- a/src/calendar/components/Month.js +++ b/src/calendar/components/Month.js @@ -23,6 +23,7 @@ export default createComponent({ rowHeight: [Number, String], formatter: Function, currentDate: [Date, Array], + allowSameDay: Boolean, showSubtitle: Boolean, showMonthTitle: Boolean, }, @@ -125,19 +126,25 @@ export default createComponent({ const [startDay, endDay] = this.currentDate; if (!startDay) { - return; + return ''; } const compareToStart = compareDay(day, startDay); + + if (!endDay) { + return compareToStart === 0 ? 'start' : ''; + } + + const compareToEnd = compareDay(day, endDay); + + if (compareToStart === 0 && compareToEnd === 0 && this.allowSameDay) { + return 'start-end'; + } + if (compareToStart === 0) { return 'start'; } - if (!endDay) { - return; - } - - const compareToEnd = compareDay(day, endDay); if (compareToEnd === 0) { return 'end'; } @@ -170,11 +177,11 @@ export default createComponent({ getBottomInfo(type) { if (this.type === 'range') { - if (type === 'start') { - return t('start'); + if (type === 'start' || type === 'end') { + return t(type); } - if (type === 'end') { - return t('end'); + if (type === 'start-end') { + return t('startEnd'); } } }, @@ -254,7 +261,7 @@ export default createComponent({ role="gridcell" style={style} class={[bem('day'), item.className]} - tabindex={disabled ? null : -1} + tabindex={-1} onClick={onClick} >
diff --git a/src/calendar/index.js b/src/calendar/index.js index 468da160b..7f271d7aa 100644 --- a/src/calendar/index.js +++ b/src/calendar/index.js @@ -30,6 +30,7 @@ export default createComponent({ rangePrompt: String, defaultDate: [Date, Array], getContainer: [String, Function], + allowSameDay: Boolean, closeOnPopstate: Boolean, confirmDisabledText: String, type: { @@ -261,6 +262,8 @@ export default createComponent({ this.select([startDay, date], true); } else if (compareToStart === -1) { this.select([date, null]); + } else if (this.allowSameDay) { + this.select([date, date]); } } else { this.select([date, null]); @@ -342,6 +345,7 @@ export default createComponent({ rowHeight={this.rowHeight} currentDate={this.currentDate} showSubtitle={this.showSubtitle} + allowSameDay={this.allowSameDay} showMonthTitle={showMonthTitle} onClick={this.onClickDay} /> diff --git a/src/calendar/index.less b/src/calendar/index.less index 800f81b94..ca67a4c1f 100644 --- a/src/calendar/index.less +++ b/src/calendar/index.less @@ -100,6 +100,7 @@ &--end, &--start, + &--start-end, &--multiple-middle, &--multiple-selected { color: @calendar-range-edge-color; @@ -114,6 +115,7 @@ border-radius: 0 @border-radius-md @border-radius-md 0; } + &--start-end, &--multiple-selected { border-radius: @border-radius-md; } diff --git a/src/calendar/test/index.spec.js b/src/calendar/test/index.spec.js index 765574a09..49d97e6de 100644 --- a/src/calendar/test/index.spec.js +++ b/src/calendar/test/index.spec.js @@ -82,6 +82,7 @@ test('select event when type is multiple', async () => { const days = wrapper.findAll('.van-calendar__day'); days.at(15).trigger('click'); days.at(16).trigger('click'); + days.at(17).trigger('click'); await later(); days.at(15).trigger('click'); @@ -93,7 +94,10 @@ test('select event when type is multiple', async () => { '2010/1/10,2010/1/16,2010/1/17' ); expect(formatMultiple(emittedSelect[2][0])).toEqual( - '2010/1/10,2010/1/17,2010/1/13' + '2010/1/10,2010/1/16,2010/1/17,2010/1/18' + ); + expect(formatMultiple(emittedSelect[3][0])).toEqual( + '2010/1/10,2010/1/17,2010/1/18,2010/1/13' ); }); diff --git a/src/calendar/test/prop.spec.js b/src/calendar/test/prop.spec.js index 91797c59d..8bbf7d801 100644 --- a/src/calendar/test/prop.spec.js +++ b/src/calendar/test/prop.spec.js @@ -64,3 +64,33 @@ test('hide close icon when there is no title', () => { }); expect(wrapper.contains('.van-popup__close-icon')).toBeFalsy(); }); + +test('allow-same-day prop', async () => { + const select = jest.fn(); + const wrapper = mount(Calendar, { + propsData: { + type: 'range', + minDate, + maxDate, + poppable: false, + }, + listeners: { + select, + }, + }); + + await later(); + + const days = wrapper.findAll('.van-calendar__day'); + days.at(9).trigger('click'); + days.at(9).trigger('click'); + + expect(select).toHaveBeenLastCalledWith([minDate, null]); + + wrapper.setProps({ + allowSameDay: true, + }); + + days.at(9).trigger('click'); + expect(select).toHaveBeenLastCalledWith([minDate, minDate]); +}); diff --git a/src/locale/lang/en-US.ts b/src/locale/lang/en-US.ts index 49010945a..99268eae0 100644 --- a/src/locale/lang/en-US.ts +++ b/src/locale/lang/en-US.ts @@ -16,6 +16,7 @@ export default { end: 'End', start: 'Start', title: 'Calendar', + startEnd: 'Start/End', weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], monthTitle: (year: number, month: number) => `${year}/${month}`, rangePrompt: (maxRange: number) => `Choose no more than ${maxRange} days`, diff --git a/src/locale/lang/es-ES.ts b/src/locale/lang/es-ES.ts index 5521e969a..85dc38d7f 100644 --- a/src/locale/lang/es-ES.ts +++ b/src/locale/lang/es-ES.ts @@ -14,8 +14,9 @@ export default { telInvalid: 'Teléfono inválido', vanCalendar: { end: 'Fin', - start: 'Comienzo', + start: 'Inicio', title: 'Calendario', + startEnd: 'Inicio/Fin', weekdays: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'], monthTitle: (year: number, month: number) => `${year}/${month}`, rangePrompt: (maxRange: number) => `Elija no más de ${maxRange} días`, diff --git a/src/locale/lang/tr-TR.ts b/src/locale/lang/tr-TR.ts index aad4bde69..76218b8fa 100644 --- a/src/locale/lang/tr-TR.ts +++ b/src/locale/lang/tr-TR.ts @@ -16,6 +16,7 @@ export default { end: 'Son', start: 'Başlat', title: 'Takvim', + startEnd: 'Başlat/Son', weekdays: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], monthTitle: (year: number, month: number) => `${year}/${month}`, rangePrompt: (maxRange: number) => `En fazla ${maxRange} gün seçin`, diff --git a/src/locale/lang/zh-CN.ts b/src/locale/lang/zh-CN.ts index a6aa2c12b..c9010ff82 100644 --- a/src/locale/lang/zh-CN.ts +++ b/src/locale/lang/zh-CN.ts @@ -17,6 +17,7 @@ export default { start: '开始', title: '日期选择', confirm: '确定', + startEnd: '开始/结束', weekdays: ['日', '一', '二', '三', '四', '五', '六'], monthTitle: (year: number, month: number) => `${year}年${month}月`, rangePrompt: (maxRange: number) => `选择天数不能超过 ${maxRange} 天`, diff --git a/src/locale/lang/zh-HK.ts b/src/locale/lang/zh-HK.ts index 78d912fa1..3d567b08f 100644 --- a/src/locale/lang/zh-HK.ts +++ b/src/locale/lang/zh-HK.ts @@ -17,6 +17,7 @@ export default { start: '開始', title: '日期選擇', confirm: '確定', + startEnd: '開始/結束', weekdays: ['日', '壹', '二', '三', '四', '五', '六'], monthTitle: (year: number, month: number) => `${year}年${month}月`, rangePrompt: (maxRange: number) => `選擇天數不能超過 ${maxRange} 天`, diff --git a/src/locale/lang/zh-TW.ts b/src/locale/lang/zh-TW.ts index 2992dba8b..aecda17ec 100644 --- a/src/locale/lang/zh-TW.ts +++ b/src/locale/lang/zh-TW.ts @@ -17,6 +17,7 @@ export default { start: '開始', title: '日期選擇', confirm: '確定', + startEnd: '開始/結束', weekdays: ['日', '壹', '二', '三', '四', '五', '六'], monthTitle: (year: number, month: number) => `${year}年${month}月`, rangePrompt: (maxRange: number) => `選擇天數不能超過 ${maxRange} 天`, From 9c55056b0ac5c81d854f36798be024926638060c Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 19:52:55 +0800 Subject: [PATCH 069/240] fix(Picker): update cascade after setColumnValue (#5807) --- src/picker/index.js | 9 ++++- src/picker/test/cascade.spec.js | 59 +++++++++++++++++++++++++++++++++ src/picker/test/index.spec.js | 32 ------------------ 3 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 src/picker/test/cascade.spec.js diff --git a/src/picker/index.js b/src/picker/index.js index 180dd149f..07d88de91 100644 --- a/src/picker/index.js +++ b/src/picker/index.js @@ -156,7 +156,14 @@ export default createComponent({ // set column value by index setColumnValue(index, value) { const column = this.getColumn(index); - column && column.setValue(value); + + if (column) { + column.setValue(value); + + if (this.dataType === 'cascade') { + this.onCascadeChange(index); + } + } }, // @exposed-api diff --git a/src/picker/test/cascade.spec.js b/src/picker/test/cascade.spec.js new file mode 100644 index 000000000..02bd3966d --- /dev/null +++ b/src/picker/test/cascade.spec.js @@ -0,0 +1,59 @@ +import Picker from '..'; +import { mount, triggerDrag } from '../../../test'; +import { cascadeColumns } from '../demo/data'; + +test('cascade columns', () => { + const wrapper = mount(Picker, { + propsData: { + showToolbar: true, + columns: cascadeColumns['en-US'], + }, + }); + + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual([ + 'Zhejiang', + 'Hangzhou', + 'Xihu', + ]); + + triggerDrag(wrapper.find('.van-picker-column'), 0, -100); + wrapper.find('.van-picker-column ul').trigger('transitionend'); + expect(wrapper.emitted('change')[0][1]).toEqual([ + 'Fujian', + 'Fuzhou', + 'Gulou', + ]); + + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[1][0]).toEqual([ + 'Fujian', + 'Fuzhou', + 'Gulou', + ]); +}); + +test('setColumnValue of cascade columns', () => { + const wrapper = mount(Picker, { + propsData: { + showToolbar: true, + columns: cascadeColumns['en-US'], + }, + }); + + wrapper.vm.setColumnValue(0, 'Fujian'); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual([ + 'Fujian', + 'Fuzhou', + 'Gulou', + ]); + + wrapper.vm.setColumnValue(1, 'Xiamen'); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[1][0]).toEqual([ + 'Fujian', + 'Xiamen', + 'Siming', + ]); +}); diff --git a/src/picker/test/index.spec.js b/src/picker/test/index.spec.js index 542644f96..6e7664d2f 100644 --- a/src/picker/test/index.spec.js +++ b/src/picker/test/index.spec.js @@ -1,6 +1,5 @@ import Picker from '..'; import PickerColumn from '../PickerColumn'; -import { cascadeColumns } from '../demo/data'; import { mount, triggerDrag, later } from '../../../test'; const simpleColumn = ['1990', '1991', '1992', '1993', '1994', '1995']; @@ -232,37 +231,6 @@ test('columns-top、columns-bottom prop', () => { expect(wrapper).toMatchSnapshot(); }); -test('cascade columns', () => { - const wrapper = mount(Picker, { - propsData: { - showToolbar: true, - columns: cascadeColumns['en-US'], - }, - }); - - wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[0][0]).toEqual([ - 'Zhejiang', - 'Hangzhou', - 'Xihu', - ]); - - triggerDrag(wrapper.find('.van-picker-column'), 0, -100); - wrapper.find('.van-picker-column ul').trigger('transitionend'); - expect(wrapper.emitted('change')[0][1]).toEqual([ - 'Fujian', - 'Fuzhou', - 'Gulou', - ]); - - wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[1][0]).toEqual([ - 'Fujian', - 'Fuzhou', - 'Gulou', - ]); -}); - test('watch columns change', () => { const wrapper = mount(Picker, { propsData: { From 68f5d3d69b8724a587cdcbe0b1506c236fa17f37 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 20:01:15 +0800 Subject: [PATCH 070/240] fix(Picker): update cascade after setColumnIndex (#5807) --- src/picker/index.js | 9 +++- src/picker/test/cascade.spec.js | 85 +++++++++++++++++++++------------ 2 files changed, 63 insertions(+), 31 deletions(-) diff --git a/src/picker/index.js b/src/picker/index.js index 07d88de91..3ac2b7df1 100644 --- a/src/picker/index.js +++ b/src/picker/index.js @@ -176,7 +176,14 @@ export default createComponent({ // set column option index by column index setColumnIndex(columnIndex, optionIndex) { const column = this.getColumn(columnIndex); - column && column.setIndex(optionIndex); + + if (column) { + column.setIndex(optionIndex); + + if (this.dataType === 'cascade') { + this.onCascadeChange(columnIndex); + } + } }, // @exposed-api diff --git a/src/picker/test/cascade.spec.js b/src/picker/test/cascade.spec.js index 02bd3966d..5bc60a418 100644 --- a/src/picker/test/cascade.spec.js +++ b/src/picker/test/cascade.spec.js @@ -1,59 +1,84 @@ import Picker from '..'; import { mount, triggerDrag } from '../../../test'; -import { cascadeColumns } from '../demo/data'; + +const COLUMNS = [ + { + text: 'A1', + children: [ + { + text: 'B1', + children: [{ text: 'C1' }, { text: 'C2' }], + }, + { + text: 'B2', + children: [{ text: 'C3' }, { text: 'C4' }], + }, + ], + }, + { + text: 'A2', + children: [ + { + text: 'B3', + children: [{ text: 'C5' }, { text: 'C6' }], + }, + { + text: 'B4', + children: [{ text: 'C7' }, { text: 'C8' }], + }, + ], + }, +]; test('cascade columns', () => { const wrapper = mount(Picker, { propsData: { showToolbar: true, - columns: cascadeColumns['en-US'], + columns: COLUMNS, }, }); wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[0][0]).toEqual([ - 'Zhejiang', - 'Hangzhou', - 'Xihu', - ]); + expect(wrapper.emitted('confirm')[0][0]).toEqual(['A1', 'B1', 'C1']); triggerDrag(wrapper.find('.van-picker-column'), 0, -100); wrapper.find('.van-picker-column ul').trigger('transitionend'); - expect(wrapper.emitted('change')[0][1]).toEqual([ - 'Fujian', - 'Fuzhou', - 'Gulou', - ]); + expect(wrapper.emitted('change')[0][1]).toEqual(['A2', 'B3', 'C5']); wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[1][0]).toEqual([ - 'Fujian', - 'Fuzhou', - 'Gulou', - ]); + expect(wrapper.emitted('confirm')[1][0]).toEqual(['A2', 'B3', 'C5']); }); test('setColumnValue of cascade columns', () => { const wrapper = mount(Picker, { propsData: { showToolbar: true, - columns: cascadeColumns['en-US'], + columns: COLUMNS, }, }); - wrapper.vm.setColumnValue(0, 'Fujian'); + wrapper.vm.setColumnValue(0, 'A2'); wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[0][0]).toEqual([ - 'Fujian', - 'Fuzhou', - 'Gulou', - ]); + expect(wrapper.emitted('confirm')[0][0]).toEqual(['A2', 'B3', 'C5']); - wrapper.vm.setColumnValue(1, 'Xiamen'); + wrapper.vm.setColumnValue(1, 'B4'); wrapper.find('.van-picker__confirm').trigger('click'); - expect(wrapper.emitted('confirm')[1][0]).toEqual([ - 'Fujian', - 'Xiamen', - 'Siming', - ]); + expect(wrapper.emitted('confirm')[1][0]).toEqual(['A2', 'B4', 'C7']); +}); + +test('setColumnIndex of cascade columns', () => { + const wrapper = mount(Picker, { + propsData: { + showToolbar: true, + columns: COLUMNS, + }, + }); + + wrapper.vm.setColumnIndex(0, 1); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(['A2', 'B3', 'C5']); + + wrapper.vm.setColumnIndex(1, 1); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[1][0]).toEqual(['A2', 'B4', 'C7']); }); From 1b965be25e5fee87056856d2326cc06520460a03 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 20:07:14 +0800 Subject: [PATCH 071/240] test(Picker): add test cases of cascade --- src/picker/test/cascade.spec.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/picker/test/cascade.spec.js b/src/picker/test/cascade.spec.js index 5bc60a418..f574626b7 100644 --- a/src/picker/test/cascade.spec.js +++ b/src/picker/test/cascade.spec.js @@ -66,6 +66,19 @@ test('setColumnValue of cascade columns', () => { expect(wrapper.emitted('confirm')[1][0]).toEqual(['A2', 'B4', 'C7']); }); +test('setValues of cascade columns', () => { + const wrapper = mount(Picker, { + propsData: { + showToolbar: true, + columns: COLUMNS, + }, + }); + + wrapper.vm.setValues(['A2', 'B4', 'C8']); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(['A2', 'B4', 'C8']); +}); + test('setColumnIndex of cascade columns', () => { const wrapper = mount(Picker, { propsData: { @@ -82,3 +95,16 @@ test('setColumnIndex of cascade columns', () => { wrapper.find('.van-picker__confirm').trigger('click'); expect(wrapper.emitted('confirm')[1][0]).toEqual(['A2', 'B4', 'C7']); }); + +test('setIndexes of cascade columns', () => { + const wrapper = mount(Picker, { + propsData: { + showToolbar: true, + columns: COLUMNS, + }, + }); + + wrapper.vm.setIndexes([1, 0, 1]); + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(['A2', 'B3', 'C6']); +}); From c1f36ebb19b3298ed5c5c06bd18eefb0935dc29b Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 20:13:25 +0800 Subject: [PATCH 072/240] chore(Search): improve round style --- src/search/index.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/search/index.less b/src/search/index.less index 27abf3e1d..f24bedc8f 100644 --- a/src/search/index.less +++ b/src/search/index.less @@ -15,7 +15,7 @@ border-radius: @border-radius-sm; &--round { - border-radius: @search-input-height / 2; + border-radius: @border-radius-max; } } From 575577ed58a1e6daa36ffba7db8054556aa0d24d Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 20:42:12 +0800 Subject: [PATCH 073/240] feat(Icon): add badge prop, mark info prop deprecated --- src/icon/README.md | 10 +++++----- src/icon/README.zh-CN.md | 11 ++++++----- src/icon/demo/index.vue | 18 +++++++++--------- src/icon/index.tsx | 11 +++++++++-- src/info/index.tsx | 1 + 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/icon/README.md b/src/icon/README.md index 63da9842e..5717b8597 100644 --- a/src/icon/README.md +++ b/src/icon/README.md @@ -20,16 +20,16 @@ Use `name` prop to set icon name or icon URL ``` -### Show Info +### Show Badge Use `dot` prop, a small red dot will be displayed in the upper right corner of the icon. -Use `info` prop, the info will be displayed in the upper right corner of the icon. +Use `badge` prop, the badge will be displayed in the upper right corner of the icon. ```html - - + + ``` ### Icon Color @@ -87,7 +87,7 @@ import 'vant/lib/icon/local.css'; |------|------|------|------| | name | Icon name or URL | *string* | `''` | | dot `v2.2.1` | Whether to show red dot | *boolean* | `false` | -| info | Content of the badge | *number \| string* | `''` | +| badge `v2.5.6` | Content of the badge | *number \| string* | `''` | | color | Icon color | *string* | `inherit` | | size | Icon size | *number \| string* | `inherit` | | class-prefix | ClassName prefix | *string* | `van-icon` | diff --git a/src/icon/README.zh-CN.md b/src/icon/README.zh-CN.md index 338c435b4..a315dc817 100644 --- a/src/icon/README.zh-CN.md +++ b/src/icon/README.zh-CN.md @@ -24,14 +24,14 @@ Vue.use(Icon); ``` -### 提示信息 +### 徽标提示 -设置`dot`属性后,会在图标右上角展示一个小红点。设置`info`属性后,会在图标右上角展示相应的徽标 +设置`dot`属性后,会在图标右上角展示一个小红点。设置`badge`属性后,会在图标右上角展示相应的徽标 ```html - - + + ``` ### 图标颜色 @@ -93,7 +93,8 @@ import 'vant/lib/icon/local.css'; |------|------|------|------| | name | 图标名称或图片链接 | *string* | - | | dot `v2.2.1` | 是否显示图标右上角小红点 | *boolean* | `false` | -| info | 图标右上角徽标的内容 | *number \| string* | - | +| badge `v2.5.6` | 图标右上角徽标的内容 | *number \| string* | - | +| info | 图标右上角徽标的内容(已废弃,请使用 badge 属性) | *number \| string* | - | | color | 图标颜色 | *string* | `inherit` | | size | 图标大小,如 `20px` `2em`,默认单位为`px` | *number \| string* | `inherit` | | class-prefix | 类名前缀,用于使用自定义图标 | *string* | `van-icon` | diff --git a/src/icon/demo/index.vue b/src/icon/demo/index.vue index 4771be549..e25cffc59 100644 --- a/src/icon/demo/index.vue +++ b/src/icon/demo/index.vue @@ -11,15 +11,15 @@ - + - - + + - - + + @@ -113,7 +113,7 @@ export default { i18n: { 'zh-CN': { title: '图标列表', - info: '提示信息', + badge: '徽标提示', basic: '基础图标', copied: '复制成功', outline: '线框风格', @@ -124,7 +124,7 @@ export default { }, 'en-US': { title: 'Icon List', - info: 'Show Info', + badge: 'Show Badge', basic: 'Basic', copied: 'Copied', outline: 'Outline', @@ -152,8 +152,8 @@ export default { if ('dot' in option) { tag = `${tag} ${option.dot ? 'dot' : ''}`; } - if ('info' in option) { - tag = `${tag} info="${option.info}"`; + if ('badge' in option) { + tag = `${tag} badge="${option.badge}"`; } if ('color' in option) { tag = `${tag} color="${option.color}"`; diff --git a/src/icon/index.tsx b/src/icon/index.tsx index b863bd25c..ba8ccd29f 100644 --- a/src/icon/index.tsx +++ b/src/icon/index.tsx @@ -1,5 +1,5 @@ // Utils -import { createNamespace, addUnit } from '../utils'; +import { createNamespace, addUnit, isDef } from '../utils'; import { inherit } from '../utils/functional'; // Components @@ -15,6 +15,7 @@ export type IconProps = { name?: string; size?: string | number; info?: string | number; + badge?: string | number; color?: string; classPrefix: string; }; @@ -62,7 +63,10 @@ function Icon( > {slots.default && slots.default()} {imageIcon && } - + ); } @@ -71,7 +75,10 @@ Icon.props = { dot: Boolean, name: String, size: [Number, String], + // @deprecated + // should be removed in next major version info: [Number, String], + badge: [Number, String], color: String, tag: { type: String, diff --git a/src/info/index.tsx b/src/info/index.tsx index 400826de4..192c0b26d 100644 --- a/src/info/index.tsx +++ b/src/info/index.tsx @@ -9,6 +9,7 @@ import { DefaultSlots } from '../utils/types'; export type InfoProps = { dot?: boolean; info?: string | number; + badge?: string | number; }; const [createComponent, bem] = createNamespace('info'); From d61cbdd086c9050fa467803be676a1eb14d50f16 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Tue, 17 Mar 2020 20:49:08 +0800 Subject: [PATCH 074/240] feat(TabbarItem): add badge prop, mark info prop as deprecated --- src/tabbar-item/index.js | 6 +++++- src/tabbar/README.md | 8 ++++---- src/tabbar/README.zh-CN.md | 13 +++++++------ src/tabbar/demo/index.vue | 8 ++++---- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/tabbar-item/index.js b/src/tabbar-item/index.js index 95190c94e..80b273532 100644 --- a/src/tabbar-item/index.js +++ b/src/tabbar-item/index.js @@ -20,6 +20,7 @@ export default createComponent({ icon: String, name: [Number, String], info: [Number, String], + badge: [Number, String], iconPrefix: String, }, @@ -70,7 +71,10 @@ export default createComponent({
{this.genIcon(active)} - +
{this.slots('default', { active })}
diff --git a/src/tabbar/README.md b/src/tabbar/README.md index 6da4777e8..fd49ea700 100644 --- a/src/tabbar/README.md +++ b/src/tabbar/README.md @@ -60,8 +60,8 @@ export default { Tab Tab - Tab - Tab + Tab + Tab ``` @@ -71,7 +71,7 @@ Use `icon` slot to custom icon ```html - + Custom 标签 标签 - 标签 - 标签 + 标签 + 标签 ``` @@ -77,7 +77,7 @@ export default { ```html - + 自定义 {{ $t('tab') }} {{ $t('tab') }} - + {{ $t('tab') }} - + {{ $t('tab') }} @@ -41,7 +41,7 @@ - + {{ $t('custom') }}