From 1e836bf461281dd058d559c299c58950dfe022be Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 22 Nov 2019 15:19:27 +0800 Subject: [PATCH 01/18] docs: remove vant-demo pages (#5084) --- docs/markdown/quickstart.zh-CN.md | 11 +++ docs/site/components/DemoPages.vue | 136 ----------------------------- docs/site/doc.config.js | 4 - docs/site/router.js | 5 +- 4 files changed, 12 insertions(+), 144 deletions(-) delete mode 100644 docs/site/components/DemoPages.vue diff --git a/docs/markdown/quickstart.zh-CN.md b/docs/markdown/quickstart.zh-CN.md index 224cbb6e6..f7b91e797 100644 --- a/docs/markdown/quickstart.zh-CN.md +++ b/docs/markdown/quickstart.zh-CN.md @@ -29,6 +29,17 @@ npm i vant -S yarn add vant ``` +### 示例工程 + +我们提供了一个基于 Vue Cli 的[示例工程](https://github.com/youzan/vant-demo),示例工程会帮助你了解如下内容: + +- 基于 Vant 搭建单页面应用,配置按需引入组件 +- 配置基于 Rem 的适配方案 +- 配置基于 Viewport 的适配方案 +- 配置基于 TypeScript 的工程 +- 配置自定义主题色方案 + + ## 引入组件 ### 方式一. 自动按需引入组件 (推荐) diff --git a/docs/site/components/DemoPages.vue b/docs/site/components/DemoPages.vue deleted file mode 100644 index 218de7a87..000000000 --- a/docs/site/components/DemoPages.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - - - diff --git a/docs/site/doc.config.js b/docs/site/doc.config.js index 5ac86cacb..40044c6d7 100644 --- a/docs/site/doc.config.js +++ b/docs/site/doc.config.js @@ -75,10 +75,6 @@ export default { path: '/style-guide', title: '风格指南' }, - { - path: '/demo', - title: '示例工程' - }, { path: '/locale', title: '国际化' diff --git a/docs/site/router.js b/docs/site/router.js index 1c8ee0456..223b5ff01 100644 --- a/docs/site/router.js +++ b/docs/site/router.js @@ -1,7 +1,6 @@ import Vue from 'vue'; import docConfig from './doc.config'; import DemoList from './components/DemoList'; -import DemoPages from './components/DemoPages'; import { demoWrapper } from './mobile/demo-common'; import { initIframeRouter } from './utils/iframe-router'; @@ -35,9 +34,7 @@ const registerRoute = ({ mobile, componentMap }) => { path = path.replace('/', ''); let component; - if (path === 'demo') { - component = DemoPages; - } else if (mobile) { + if (mobile) { const module = componentMap[`./${path}/demo/index.vue`]; if (module) { From 23c419973a0198a43e3cb99a952eeae6d59cf8b8 Mon Sep 17 00:00:00 2001 From: rex Date: Fri, 22 Nov 2019 17:14:11 +0800 Subject: [PATCH 02/18] feat(ContactCard): refactor style & add new prop show-set-default (#5083) --- src/contact-card/README.md | 2 + src/contact-card/README.zh-CN.md | 2 + src/contact-card/demo/index.vue | 8 ++- .../test/__snapshots__/demo.spec.js.snap | 26 +++++--- src/contact-edit/index.js | 66 +++++++++++++------ src/contact-edit/index.less | 32 +++++++-- src/style/var.less | 5 +- 7 files changed, 107 insertions(+), 34 deletions(-) diff --git a/src/contact-card/README.md b/src/contact-card/README.md index fc82742af..7c4f95b5b 100644 --- a/src/contact-card/README.md +++ b/src/contact-card/README.md @@ -173,6 +173,8 @@ export default { | is-saving | Whether to show save button loading status | *boolean* | `false` | - | | is-deleting | Whether to show delete button loading status | *boolean* | `false` | - | | tel-validator | The method to validate tel | *(tel: string) => boolean* | - | - | +| show-set-default | Whether to show default contact switch | *boolean* | `false` | - | +| set-default-label | default contact switch label | *string* | - | - | ### ContactEdit Events diff --git a/src/contact-card/README.zh-CN.md b/src/contact-card/README.zh-CN.md index 218ce4137..8ddb795be 100644 --- a/src/contact-card/README.zh-CN.md +++ b/src/contact-card/README.zh-CN.md @@ -177,6 +177,8 @@ export default { | is-saving | 是否显示保存按钮加载动画 | *boolean* | `false` | - | | is-deleting | 是否显示删除按钮加载动画 | *boolean* | `false` | - | | tel-validator | 手机号格式校验函数 | *(tel: string) => boolean* | - | - | +| show-set-default | 是否显示默认联系人栏 | *boolean* | `false` | - | +| set-default-label | 默认联系人栏文案 | *string* | - | - | ### ContactEdit Events diff --git a/src/contact-card/demo/index.vue b/src/contact-card/demo/index.vue index fe2d7800a..cef09488e 100644 --- a/src/contact-card/demo/index.vue +++ b/src/contact-card/demo/index.vue @@ -28,6 +28,8 @@ :lazy-render="false" > `; + +exports[`stroke-linecap prop 1`] = ` +
+ + +
+`; diff --git a/src/circle/test/index.spec.js b/src/circle/test/index.spec.js index 2d37e250f..17349e8db 100644 --- a/src/circle/test/index.spec.js +++ b/src/circle/test/index.spec.js @@ -47,3 +47,13 @@ test('size prop', () => { expect(wrapper).toMatchSnapshot(); }); + +test('stroke-linecap prop', () => { + const wrapper = mount(Circle, { + propsData: { + strokeLinecap: 'square' + } + }); + + expect(wrapper).toMatchSnapshot(); +}); From 9b01cac23fddfc06063f5cf7057014cf0df49aa2 Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 25 Nov 2019 08:27:40 +0800 Subject: [PATCH 05/18] docs(Swipe): add api version tip (#5091) --- src/swipe/README.md | 30 +++++++++++++++--------------- src/swipe/README.zh-CN.md | 28 ++++++++++++++-------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/swipe/README.md b/src/swipe/README.md index 1b67035aa..c9b572a6a 100644 --- a/src/swipe/README.md +++ b/src/swipe/README.md @@ -144,34 +144,34 @@ export default { ### Swipe Events -| Event | Description | Arguments | -|------|------|------| -| change | Triggered when current swipe change | index: index of current swipe | +| Event | Description | Arguments | Version | +|------|------|------|------| +| change | Triggered when current swipe change | index: index of current swipe | - | ### SwipeItem Events -| Event | Description | Arguments | -|------|------|------| -| click | Triggered when clicked | event: Event | +| Event | Description | Arguments | Version | +|------|------|------|------| +| click | Triggered when clicked | event: Event | - | ### Swipe Methods Use [ref](https://vuejs.org/v2/api/#ref) to get Swipe instance and call instance methods -| Name | Description | Attribute | Return value | -|------|------|------|------| -| swipeTo | Swipe to target index | index: target index, options: Options | void | -| resize | Resize Swipe when container element resized | - | void | +| Name | Description | Attribute | Return value | Version | +|------|------|------|------|------| +| swipeTo | Swipe to target index | index: target index, options: Options | void | - | +| resize | Resize Swipe when container element resized | - | void | 2.2.14 | ### swipeTo Options | Name | Description | Type | -|------|------|------| +|------|------|------|------| | immediate | Whether to skip animation | *boolean* | ### Swipe Slots -| Name | Description | -|------|------| -| default | Content | -| indicator | Custom indicator | +| Name | Description | Version | +|------|------|------| +| default | Content | - | +| indicator | Custom indicator | - | diff --git a/src/swipe/README.zh-CN.md b/src/swipe/README.zh-CN.md index 541414496..27721b226 100644 --- a/src/swipe/README.zh-CN.md +++ b/src/swipe/README.zh-CN.md @@ -150,24 +150,24 @@ export default { ### Swipe Events -| 事件名 | 说明 | 回调参数 | -|------|------|------| -| change | 每一页轮播结束后触发 | index, 当前页的索引 | +| 事件名 | 说明 | 回调参数 | 版本 | +|------|------|------|------| +| change | 每一页轮播结束后触发 | index, 当前页的索引 | - | ### SwipeItem Events -| 事件名 | 说明 | 回调参数 | -|------|------|------| -| click | 点击时触发 | event: Event | +| 事件名 | 说明 | 回调参数 | 版本 | +|------|------|------|------| +| click | 点击时触发 | event: Event | - | ### Swipe 方法 通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 Swipe 实例并调用实例方法 -| 方法名 | 说明 | 参数 | 返回值 | -|------|------|------|------| -| swipeTo | 滚动到目标位置 | index: number, options: Options | void | -| resize | 外层元素大小变化后,可以调用此方法来触发重绘 | - | void | +| 方法名 | 说明 | 参数 | 返回值 | 版本 | +|------|------|------|------|------| +| swipeTo | 滚动到目标位置 | index: number, options: Options | void | - | +| resize | 外层元素大小变化后,可以调用此方法来触发重绘 | - | void | 2.2.14 | ### swipeTo Options 格式 @@ -177,7 +177,7 @@ export default { ### Swipe Slots -| 名称 | 说明 | -|------|------| -| default | 轮播内容 | -| indicator | 自定义指示器 | +| 名称 | 说明 | 版本 | +|------|------|------| +| default | 轮播内容 | - | +| indicator | 自定义指示器 | - | From a6a431e8c76bc85ec5deb87aa755b19cd205332f Mon Sep 17 00:00:00 2001 From: rex Date: Tue, 26 Nov 2019 11:57:26 +0800 Subject: [PATCH 06/18] feat(AddressList): refactor style & add new prop default-tag-text (#5106) --- src/address-list/Item.tsx | 16 ++++++- src/address-list/README.md | 2 + src/address-list/README.zh-CN.md | 2 + src/address-list/demo/index.vue | 13 +++-- src/address-list/index.less | 48 +++++++++++++++---- src/address-list/index.tsx | 27 ++++++----- .../test/__snapshots__/demo.spec.js.snap | 45 +++++++++-------- .../test/__snapshots__/index.spec.js.snap | 11 +++-- src/style/var.less | 18 +++---- 9 files changed, 123 insertions(+), 59 deletions(-) diff --git a/src/address-list/Item.tsx b/src/address-list/Item.tsx index c5792e6c6..1ac884c32 100644 --- a/src/address-list/Item.tsx +++ b/src/address-list/Item.tsx @@ -3,6 +3,7 @@ import { emit, inherit } from '../utils/functional'; import Icon from '../icon'; import Cell from '../cell'; import Radio from '../radio'; +import Tag from '../tag'; // Types import { CreateElement, RenderContext } from 'vue/types'; @@ -13,12 +14,14 @@ export type AddressItemData = { tel: string | number; name: string; address: string; + isDefault: boolean; }; export type AddressItemProps = { data: AddressItemData; disabled?: boolean; switchable?: boolean; + defaultTagText?: string; }; export type AddressItemEvents = { @@ -60,7 +63,14 @@ function AddressItem( const genContent = () => { const { data } = props; const Info = [ -
{`${data.name},${data.tel}`}
, +
+ {`${data.name} ${data.tel}`} + {data.isDefault && props.defaultTagText && ( + + {props.defaultTagText} + + )} +
,
{data.address}
]; @@ -77,6 +87,7 @@ function AddressItem( (AddressItem); diff --git a/src/address-list/README.md b/src/address-list/README.md index 95bb6a10b..7187257af 100644 --- a/src/address-list/README.md +++ b/src/address-list/README.md @@ -77,6 +77,7 @@ export default { | disabled-text | Disabled text | *string* | - | - | | switchable | Whether to allow switch address | *boolean* | `true` | - | | add-button-text | Add button text | *string* | `Add new address` | - | +| default-tag-text | Default tag text | *string* | - | - | ### Events @@ -97,6 +98,7 @@ export default { | name | Name | *string* | | tel | Phone | *string \| number* | | address | Address | *string* | +| isDefault | Is default address | *boolean* | ### Slots diff --git a/src/address-list/README.zh-CN.md b/src/address-list/README.zh-CN.md index f1e0e9a18..1bdc323bb 100644 --- a/src/address-list/README.zh-CN.md +++ b/src/address-list/README.zh-CN.md @@ -78,6 +78,7 @@ export default { | disabled-text | 不可配送提示文案 | *string* | - | - | | switchable | 是否允许切换地址 | *boolean* | `true` | - | | add-button-text | 底部按钮文字 | *string* | `新增地址` | - | +| default-tag-text | 默认地址标签文字 | *string* | - | - | ### Events @@ -98,6 +99,7 @@ export default { | name | 收货人姓名 | *string* | | tel | 收货人手机号 | *string \| number* | | address | 收货地址 | *string* | +| isDefault | 是否为默认地址 | *boolean* | ### Slots diff --git a/src/address-list/demo/index.vue b/src/address-list/demo/index.vue index 662900167..d1982cba2 100644 --- a/src/address-list/demo/index.vue +++ b/src/address-list/demo/index.vue @@ -3,6 +3,7 @@ { emit(ctx, disabled ? 'select-disabled' : 'select', item, index); @@ -67,16 +69,18 @@ function AddressList( {props.disabledText &&
{props.disabledText}
} {DisabledList} {slots.default && slots.default()} - + +
+
+ +
+ +
+
以下地址超出配送范围
+
+
+
王五 1320000000
+
浙江省杭州市滨江区江南大道 15 号
+
+ +
+
+ `; diff --git a/src/address-list/test/__snapshots__/index.spec.js.snap b/src/address-list/test/__snapshots__/index.spec.js.snap index e11f36c3a..867138aca 100644 --- a/src/address-list/test/__snapshots__/index.spec.js.snap +++ b/src/address-list/test/__snapshots__/index.spec.js.snap @@ -3,20 +3,21 @@ exports[`unswitchable 1`] = `
-
+
-
张三,13000000000
+
张三 13000000000
浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室
-
+
-
李四,1310000000
+
李四 1310000000
浙江省杭州市拱墅区莫干山路 50 号
-
+
+
`; diff --git a/src/style/var.less b/src/style/var.less index 10e91b82b..4197e5a9d 100644 --- a/src/style/var.less +++ b/src/style/var.less @@ -77,17 +77,19 @@ @address-edit-detail-finish-font-size: @font-size-sm; // AddressList +@address-list-padding: 12px 7px 100px 17px; @address-list-disabled-text-color: @gray-dark; -@address-list-disabled-text-font-size: @font-size-sm; -@address-list-disabled-text-line-height: 30px; +@address-list-disabled-text-padding: @padding-base * 5 0 @padding-md; +@address-list-disabled-text-font-size: @font-size-md; +@address-list-disabled-text-line-height: 20px; @address-list-add-button-z-index: 999; -@address-list-item-padding: @padding-md; -@address-list-item-text-color: @gray-darker; -@address-list-item-disabled-text-color: @gray-dark; -@address-list-item-font-size: @font-size-sm; -@address-list-item-line-height: 16px; +@address-list-item-padding: @padding-sm; +@address-list-item-text-color: @text-color; +@address-list-item-disabled-text-color: @gray; +@address-list-item-font-size: 13px; +@address-list-item-line-height: 18px; @address-list-item-radio-icon-color: @red; -@address-list-edit-icon-size: 16px; +@address-list-edit-icon-size: 18px; // Button @button-mini-height: 22px; From a6490ed7f527527bd39c9fd944e777a4cd17c64e Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 17:05:14 +0800 Subject: [PATCH 07/18] docs: add desc of autofocus prop (#5111) --- src/field/README.md | 1 + src/field/README.zh-CN.md | 1 + src/search/README.md | 1 + src/search/README.zh-CN.md | 1 + 4 files changed, 4 insertions(+) diff --git a/src/field/README.md b/src/field/README.md index 88d198148..c9f694505 100644 --- a/src/field/README.md +++ b/src/field/README.md @@ -152,6 +152,7 @@ Textarea Field can be auto resize when has `autosize` prop | clearable | Whether to be clearable | *boolean* | `false` | - | | clickable | Whether to show click feedback when clicked | *boolean* | `false` | - | | is-link | Whether to show link icon | *boolean* | `false` | - | +| autofocus | Whether to auto focus, unsupported in iOS | *boolean* | `false` | - | | show-word-limit | Whether to show word limit, need to set the `maxlength` prop | *boolean* | `false` | 2.2.8 | | error | Whether to show error info | *boolean* | `false` | - | | arrow-direction | Can be set to `left` `up` `down` | *string* | - | 2.0.4 | diff --git a/src/field/README.zh-CN.md b/src/field/README.zh-CN.md index e608206ce..54c81d89a 100644 --- a/src/field/README.zh-CN.md +++ b/src/field/README.zh-CN.md @@ -158,6 +158,7 @@ Vue.use(Field); | clearable | 是否启用清除控件 | *boolean* | `false` | - | | clickable | 是否开启点击反馈 | *boolean* | `false` | - | | is-link | 是否展示右侧箭头并开启点击反馈 | *boolean* | `false` | - | +| autofocus | 是否自动聚焦,iOS 系统不支持该属性 | *boolean* | `false` | - | | show-word-limit | 是否显示字数统计,需要设置`maxlength`属性 | *boolean* | `false` | 2.2.8 | | error | 是否将输入内容标红 | *boolean* | `false` | - | | arrow-direction | 箭头方向,可选值为 `left` `up` `down` | *string* | - | 2.0.4 | diff --git a/src/search/README.md b/src/search/README.md index 4216b5066..924c1086a 100644 --- a/src/search/README.md +++ b/src/search/README.md @@ -70,6 +70,7 @@ Use `action` slot to custom right button, `cancel` event will no longer be trigg | maxlength | Max length of value | *string \| number* | - | - | | placeholder | Placeholder | *string* | - | - | | clearable | Whether to be clearable | *boolean* | `true` | - | +| autofocus | Whether to auto focus, unsupported in iOS | *boolean* | `false` | - | | show-action | Whether to show right action button | *boolean* | `false` | - | | action-text | Text of action button | *boolean* | `Cancel` | 2.2.2 | | disabled | Whether to disable field | *boolean* | `false` | - | diff --git a/src/search/README.zh-CN.md b/src/search/README.zh-CN.md index 02f3c4f1e..6d84c66c1 100644 --- a/src/search/README.zh-CN.md +++ b/src/search/README.zh-CN.md @@ -65,6 +65,7 @@ Search 组件提供了`search`和`cancel`事件,`search`事件在点击键盘 | maxlength | 输入的最大字符数 | *string \| number* | - | - | | placeholder | 占位提示文字 | *string* | - | - | | clearable | 是否启用清除控件 | *boolean* | `true` | - | +| autofocus | 是否自动聚焦,iOS 系统不支持该属性 | *boolean* | `false` | - | | show-action | 是否在搜索框右侧显示取消按钮 | *boolean* | `false` | - | | action-text | 取消按钮文字 | *boolean* | `取消` | 2.2.2 | | disabled | 是否禁用输入框 | *boolean* | `false` | - | From f525abbf11d33c6ebb18d648b5731caca1c9ac7c Mon Sep 17 00:00:00 2001 From: NoahSun <934937054@qq.com> Date: Tue, 26 Nov 2019 17:55:16 +0800 Subject: [PATCH 08/18] fix(NumberKeyboard): shouldn't trigger blur event when hidden (#5110) --- src/number-keyboard/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/number-keyboard/index.js b/src/number-keyboard/index.js index 851280672..408d5fe69 100644 --- a/src/number-keyboard/index.js +++ b/src/number-keyboard/index.js @@ -105,7 +105,7 @@ export default createComponent({ methods: { onBlur() { - this.$emit('blur'); + this.show && this.$emit('blur'); }, onClose() { From ab3ccbed8f60b66286ab43299b808d41d2ccaa03 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 17:55:45 +0800 Subject: [PATCH 09/18] feat(style): add background-color var (#5112) --- docs/markdown/theme.en-US.md | 2 +- docs/markdown/theme.zh-CN.md | 2 +- docs/site/mobile/App.vue | 2 +- src/style/var.less | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/markdown/theme.en-US.md b/docs/markdown/theme.en-US.md index dfeeae732..d1e7e72e0 100644 --- a/docs/markdown/theme.en-US.md +++ b/docs/markdown/theme.en-US.md @@ -15,7 +15,7 @@ There are some basic variables below, all available variables could be found in @text-color: #323233; @border-color: #ebedf0; @active-color: #f2f3f5; -@background-color: #f8f8f8; +@background-color: #f7f8fa; @background-color-light: #fafafa; ``` diff --git a/docs/markdown/theme.zh-CN.md b/docs/markdown/theme.zh-CN.md index 0cf53fd5a..b9f96e1fd 100644 --- a/docs/markdown/theme.zh-CN.md +++ b/docs/markdown/theme.zh-CN.md @@ -19,7 +19,7 @@ Vant 使用了 [Less](http://lesscss.org/) 对样式进行预处理,并内置 @text-color: #323233; @border-color: #ebedf0; @active-color: #f2f3f5; -@background-color: #f8f8f8; +@background-color: #f7f8fa; @background-color-light: #fafafa; ``` diff --git a/docs/site/mobile/App.vue b/docs/site/mobile/App.vue index 3a0d2915b..2b360fa7a 100644 --- a/docs/site/mobile/App.vue +++ b/docs/site/mobile/App.vue @@ -70,7 +70,7 @@ body { color: @text-color; font-family: 'PingFang SC', Helvetica, 'STHeiti STXihei', 'Microsoft YaHei', Tohoma, Arial, sans-serif; line-height: 1; - background-color: #f8f8f8; + background-color: #f7f8fa; -webkit-font-smoothing: antialiased; } diff --git a/src/style/var.less b/src/style/var.less index 4197e5a9d..4a887851a 100644 --- a/src/style/var.less +++ b/src/style/var.less @@ -21,7 +21,7 @@ @active-color: #f2f3f5; @active-opacity: .7; @disabled-opacity: .5; -@background-color: #f8f8f8; +@background-color: #f7f8fa; @background-color-light: #fafafa; // Padding From e36561457bf8be5593b411e4849facd8fd6736be Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 17:59:26 +0800 Subject: [PATCH 10/18] fix(ActionSheet): reset button padding (#5113) --- src/action-sheet/index.less | 1 + 1 file changed, 1 insertion(+) diff --git a/src/action-sheet/index.less b/src/action-sheet/index.less index a2d3637c2..6e54ae3aa 100644 --- a/src/action-sheet/index.less +++ b/src/action-sheet/index.less @@ -8,6 +8,7 @@ &__cancel { display: block; width: 100%; + padding: 0; font-size: @action-sheet-item-font-size; line-height: @action-sheet-item-height; text-align: center; From f59beb9787616ca2ce4de558c9dfbb129858dfcf Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 19:19:41 +0800 Subject: [PATCH 11/18] feat(Card): allow use bottom slot without price or num (#5116) --- src/card/index.tsx | 2 +- src/card/test/__snapshots__/index.spec.js.snap | 4 +--- src/card/test/index.spec.js | 3 --- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/card/index.tsx b/src/card/index.tsx index c671dcfce..17e981e0d 100644 --- a/src/card/index.tsx +++ b/src/card/index.tsx @@ -51,7 +51,7 @@ function Card( const showNum = slots.num || isDef(props.num); const showPrice = slots.price || isDef(props.price); const showOriginPrice = slots['origin-price'] || isDef(props.originPrice); - const showBottom = showNum || showPrice || showOriginPrice; + const showBottom = showNum || showPrice || showOriginPrice || slots.bottom; function onThumbClick(event: MouseEvent) { emit(ctx, 'click-thumb', event); diff --git a/src/card/test/__snapshots__/index.spec.js.snap b/src/card/test/__snapshots__/index.spec.js.snap index 091a7af08..d4de2d22d 100644 --- a/src/card/test/__snapshots__/index.spec.js.snap +++ b/src/card/test/__snapshots__/index.spec.js.snap @@ -4,9 +4,7 @@ exports[`render bottom slot 1`] = `
-
-
¥ 100
Custom Bottom -
+
Custom Bottom
diff --git a/src/card/test/index.spec.js b/src/card/test/index.spec.js index bbcea88cb..fcef9663e 100644 --- a/src/card/test/index.spec.js +++ b/src/card/test/index.spec.js @@ -65,9 +65,6 @@ test('render origin-price slot', () => { test('render bottom slot', () => { const wrapper = mount(Card, { - propsData: { - price: 100 - }, scopedSlots: { bottom: () => 'Custom Bottom' } From b2c53396efbf5d2caa649b43c942f013b4ff21be Mon Sep 17 00:00:00 2001 From: iam2r Date: Tue, 26 Nov 2019 20:24:55 +0800 Subject: [PATCH 12/18] fix(touch-emulator): incorrect function (#5118) --- packages/vant-touch-emulator/index.js | 33 ++++++++++++--------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/vant-touch-emulator/index.js b/packages/vant-touch-emulator/index.js index e35532983..b1f754978 100644 --- a/packages/vant-touch-emulator/index.js +++ b/packages/vant-touch-emulator/index.js @@ -78,36 +78,33 @@ function TouchList() { return touchList; } -/** - * Simple trick to fake touch event support - * this is enough for most libraries like Modernizr and Hammer - */ -function fakeTouchSupport() { - var objs = [window, document.documentElement]; - var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend']; - for (var o = 0; o < objs.length; o++) { - for (var p = 0; p < props.length; p++) { - if (objs[o] && objs[o][props[p]] === undefined) { - objs[o][props[p]] = null; - } - } - } -} /** * only trigger touches when the left mousebutton has been pressed * @param touchType * @returns {Function} */ + + +var initiated = false; function onMouse(touchType) { return function(ev) { // prevent mouse events - if (ev.which !== 1) { - return; + if (ev.type === 'mousedown') { + initiated = true; } + if (ev.type === 'mouseup') { + initiated = false; + } + + if (ev.type === 'mousemove' && !initiated) { + return + } + + // The EventTarget on which the touch point started when it was first placed on the surface, // even if the touch point has since moved outside the interactive area of that element. // also, when the target doesnt exist anymore, we update it @@ -173,8 +170,6 @@ function getActiveTouches(mouseEv) { * TouchEmulator initializer */ function TouchEmulator() { - fakeTouchSupport(); - window.addEventListener('mousedown', onMouse('touchstart'), true); window.addEventListener('mousemove', onMouse('touchmove'), true); window.addEventListener('mouseup', onMouse('touchend'), true); From fe0e930ed07370d330629984fcfc269e34f4abf7 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 20:26:07 +0800 Subject: [PATCH 13/18] feat: add color paletee of neutral color (#5119) --- docs/site/mobile/App.vue | 2 +- src/address-list/index.less | 2 +- src/coupon/index.less | 2 +- src/icon/demo/index.vue | 2 +- src/image/demo/index.vue | 2 +- src/list/demo/index.vue | 4 +- src/sidebar/demo/index.vue | 2 +- src/sku/index.less | 10 +-- src/style/var.less | 150 ++++++++++++++++++------------------ src/switch/index.tsx | 4 +- src/utils/constant.ts | 2 - 11 files changed, 92 insertions(+), 90 deletions(-) diff --git a/docs/site/mobile/App.vue b/docs/site/mobile/App.vue index 2b360fa7a..33a0fc5d6 100644 --- a/docs/site/mobile/App.vue +++ b/docs/site/mobile/App.vue @@ -89,7 +89,7 @@ body { } .van-icon { - color: @gray-dark; + color: @gray-6; font-size: 24px; cursor: pointer; } diff --git a/src/address-list/index.less b/src/address-list/index.less index 7531910d5..1b839f909 100644 --- a/src/address-list/index.less +++ b/src/address-list/index.less @@ -74,7 +74,7 @@ position: absolute; top: 50%; right: @padding-md; - color: @gray-dark; + color: @gray-6; font-size: @address-list-edit-icon-size; transform: translate(0, -50%); } diff --git a/src/coupon/index.less b/src/coupon/index.less index 620a748a3..63441440b 100644 --- a/src/coupon/index.less +++ b/src/coupon/index.less @@ -33,7 +33,7 @@ } p { - color: @gray-dark; + color: @gray-6; font-size: @font-size-sm; line-height: 16px; } diff --git a/src/icon/demo/index.vue b/src/icon/demo/index.vue index 33ff94594..846d1d9c4 100644 --- a/src/icon/demo/index.vue +++ b/src/icon/demo/index.vue @@ -123,7 +123,7 @@ export default { span { display: block; padding: 0 5px; - color: @gray-darker; + color: @gray-7; font-size: 12px; line-height: 18px; } diff --git a/src/image/demo/index.vue b/src/image/demo/index.vue index 91e69828f..5a9fccef4 100644 --- a/src/image/demo/index.vue +++ b/src/image/demo/index.vue @@ -149,7 +149,7 @@ export default { .text { margin-top: 5px; - color: @gray-darker; + color: @gray-7; font-size: 14px; text-align: center; } diff --git a/src/list/demo/index.vue b/src/list/demo/index.vue index a7fd5482f..c21d77acd 100644 --- a/src/list/demo/index.vue +++ b/src/list/demo/index.vue @@ -130,7 +130,7 @@ export default { .page-desc { margin: 0; padding: 5px 0; - color: @gray-darker; + color: @gray-7; font-size: 14px; text-align: center; @@ -144,7 +144,7 @@ export default { } .van-checkbox__label { - color: @gray-darker; + color: @gray-7; } } diff --git a/src/sidebar/demo/index.vue b/src/sidebar/demo/index.vue index b0f3ece59..e69e78ed6 100644 --- a/src/sidebar/demo/index.vue +++ b/src/sidebar/demo/index.vue @@ -67,7 +67,7 @@ export default { &-title { margin-bottom: 16px; - color: @gray-dark; + color: @gray-6; font-weight: normal; font-size: 14px; } diff --git a/src/sku/index.less b/src/sku/index.less index 181838505..3ea21726d 100644 --- a/src/sku/index.less +++ b/src/sku/index.less @@ -62,7 +62,7 @@ &-header-item { margin-top: @padding-xs; - color: @gray-dark; + color: @gray-6; font-size: @font-size-sm; line-height: 16px; } @@ -178,7 +178,7 @@ } &--disabled { - color: @gray; + color: @gray-5; background: @active-color; .van-sku-row__item-img { @@ -213,7 +213,7 @@ &__stock { display: inline-block; margin-right: @padding-xs; - color: @gray-dark; + color: @gray-6; font-size: @font-size-sm; &-num--highlight { @@ -334,11 +334,11 @@ } &--warning { - background: linear-gradient(to right, #ffd01e, #ff8917); + background: @gradient-orange; } &--danger { - background: linear-gradient(to right, #ff6034, #ee0a24); + background: @gradient-red; } } } diff --git a/src/style/var.less b/src/style/var.less index 4a887851a..b339968d1 100644 --- a/src/style/var.less +++ b/src/style/var.less @@ -1,27 +1,31 @@ -// Basic Colors +// Color Palette @black: #000; @white: #fff; +@gray-1: #f7f8fa; +@gray-2: #f2f3f5; +@gray-3: #ebedf0; +@gray-4: #dcdee0; +@gray-5: #c8c9cc; +@gray-6: #969799; +@gray-7: #646566; +@gray-8: #323233; @red: #ee0a24; @blue: #1989fa; @orange: #ff976a; @orange-dark: #ed6a0c; @orange-light: #fffbe8; @green: #07c160; -@gray: #c8c9cc; -@gray-light: #e5e5e5; -@gray-darker: #7d7e80; -@gray-dark: #969799; // Gradient Colors @gradient-red: linear-gradient(to right, #ff6034, #ee0a24); @gradient-orange: linear-gradient(to right, #ffd01e, #ff8917); // Component Colors -@text-color: #323233; -@active-color: #f2f3f5; +@text-color: @gray-8; +@active-color: @gray-2; @active-opacity: .7; @disabled-opacity: .5; -@background-color: #f7f8fa; +@background-color: @gray-1; @background-color-light: #fafafa; // Padding @@ -44,7 +48,7 @@ @animation-duration-fast: .2s; // Border -@border-color: #ebedf0; +@border-color: @gray-3; @border-width-base: 1px; @border-radius-sm: 2px; @border-radius-md: 4px; @@ -54,18 +58,18 @@ @action-sheet-max-height: 90%; @action-sheet-header-height: 44px; @action-sheet-header-font-size: @font-size-lg; -@action-sheet-description-color: @gray-darker; +@action-sheet-description-color: @gray-7; @action-sheet-description-font-size: @font-size-md; @action-sheet-description-line-height: 20px; @action-sheet-item-height: 50px; @action-sheet-item-background: @white; @action-sheet-item-font-size: @font-size-lg; @action-sheet-item-text-color: @text-color; -@action-sheet-item-disabled-text-color: @gray; -@action-sheet-subname-color: @gray-darker; +@action-sheet-item-disabled-text-color: @gray-5; +@action-sheet-subname-color: @gray-7; @action-sheet-subname-font-size: @font-size-sm; @action-sheet-close-icon-size: 18px; -@action-sheet-close-icon-color: @gray-dark; +@action-sheet-close-icon-color: @gray-6; @action-sheet-close-icon-padding: 0 @padding-sm; @action-sheet-cancel-padding-top: @padding-xs; @action-sheet-cancel-padding-color: @background-color; @@ -78,14 +82,14 @@ // AddressList @address-list-padding: 12px 7px 100px 17px; -@address-list-disabled-text-color: @gray-dark; +@address-list-disabled-text-color: @gray-6; @address-list-disabled-text-padding: @padding-base * 5 0 @padding-md; @address-list-disabled-text-font-size: @font-size-md; @address-list-disabled-text-line-height: 20px; @address-list-add-button-z-index: 999; @address-list-item-padding: @padding-sm; @address-list-item-text-color: @text-color; -@address-list-item-disabled-text-color: @gray; +@address-list-item-disabled-text-color: @gray-5; @address-list-item-font-size: 13px; @address-list-item-line-height: 18px; @address-list-item-radio-icon-color: @red; @@ -134,10 +138,10 @@ @card-background-color: @background-color-light; @card-thumb-size: 90px; @card-title-line-height: 16px; -@card-desc-color: @gray-darker; +@card-desc-color: @gray-7; @card-desc-line-height: 20px; @card-price-color: @red; -@card-origin-price-color: @gray-darker; +@card-origin-price-color: @gray-7; @card-origin-price-font-size: @font-size-xs; // Cell @@ -150,33 +154,33 @@ @cell-border-color: @border-color; @cell-active-color: @active-color; @cell-required-color: @red; -@cell-label-color: @gray-dark; +@cell-label-color: @gray-6; @cell-label-font-size: @font-size-sm; @cell-label-line-height: 18px; @cell-label-margin-top: 3px; -@cell-value-color: @gray-dark; +@cell-value-color: @gray-6; @cell-icon-size: 16px; -@cell-right-icon-color: @gray-dark; +@cell-right-icon-color: @gray-6; @cell-large-vertical-padding: @padding-sm; @cell-large-title-font-size: @font-size-lg; @cell-large-label-font-size: @font-size-md; // CellGroup @cell-group-background-color: @white; -@cell-group-title-color: @gray-dark; +@cell-group-title-color: @gray-6; @cell-group-title-padding: @padding-md @padding-md @padding-xs; @cell-group-title-font-size: @font-size-md; @cell-group-title-line-height: 16px; // Checkbox @checkbox-size: 20px; -@checkbox-border-color: @gray-light; +@checkbox-border-color: @gray-5; @checkbox-transition-duration: @animation-duration-fast; @checkbox-label-margin: @padding-xs; @checkbox-label-color: @text-color; @checkbox-checked-icon-color: @blue; -@checkbox-disabled-icon-color: @gray; -@checkbox-disabled-label-color: @gray; +@checkbox-disabled-icon-color: @gray-5; +@checkbox-disabled-label-color: @gray-5; @checkbox-disabled-background-color: @border-color; // Circle @@ -190,9 +194,9 @@ @collapse-item-content-padding: @padding-md; @collapse-item-content-font-size: 13px; @collapse-item-content-line-height: 1.5; -@collapse-item-content-text-color: @gray-dark; +@collapse-item-content-text-color: @gray-6; @collapse-item-content-background-color: @white; -@collapse-item-title-disabled-color: @gray; +@collapse-item-title-disabled-color: @gray-5; // ContactCard @contact-card-padding: @padding-md; @@ -231,7 +235,7 @@ @coupon-amount-font-size: 24px; @coupon-currency-font-size: 50%; @coupon-name-font-size: @font-size-lg; -@coupon-disabled-text-color: @gray-dark; +@coupon-disabled-text-color: @gray-6; @coupon-description-padding: @padding-xs @padding-md; @coupon-description-background-color: @background-color-light; @coupon-description-border-color: @border-color; @@ -244,7 +248,7 @@ @coupon-list-field-padding: @padding-xs @padding-md; @coupon-list-exchange-button-height: 32px; @coupon-list-empty-image-size: 200px; -@coupon-list-empty-tip-color: @gray-dark; +@coupon-list-empty-tip-color: @gray-6; @coupon-list-empty-tip-font-size: @font-size-md; @coupon-list-empty-tip-line-height: 20px; @@ -263,13 +267,13 @@ @dialog-message-font-size: @font-size-md; @dialog-message-line-height: 20px; @dialog-message-max-height: 60vh; -@dialog-has-title-message-text-color: @gray-darker; +@dialog-has-title-message-text-color: @gray-7; @dialog-has-title-message-padding-top: @padding-sm; @dialog-confirm-button-text-color: @blue; // Divider @divider-margin: @padding-md 0; -@divider-text-color: @gray-dark; +@divider-text-color: @gray-6; @divider-font-size: @font-size-md; @divider-line-height: 24px; @divider-border-color: @border-color; @@ -283,7 +287,7 @@ @dropdown-menu-title-font-size: 15px; @dropdown-menu-title-text-color: @text-color; @dropdown-menu-title-active-text-color: @blue; -@dropdown-menu-title-disabled-text-color: @gray-dark; +@dropdown-menu-title-disabled-text-color: @gray-6; @dropdown-menu-title-padding: 0 @padding-xs; @dropdown-menu-title-line-height: 18px; @dropdown-menu-option-active-color: @blue; @@ -293,16 +297,16 @@ @field-label-width: 90px; @field-input-text-color: @text-color; @field-input-error-text-color: @red; -@field-input-disabled-text-color: @gray-dark; -@field-placeholder-text-color: @gray-dark; +@field-input-disabled-text-color: @gray-6; +@field-placeholder-text-color: @gray-6; @field-icon-size: 16px; @field-clear-icon-size: 16px; -@field-clear-icon-color: @gray; -@field-right-icon-color: @gray-dark; +@field-clear-icon-color: @gray-5; +@field-right-icon-color: @gray-6; @field-error-message-color: @red; @field-error-message-text-color: 12px; @field-text-area-min-height: 60px; -@field-word-limit-color: @gray-darker; +@field-word-limit-color: @gray-7; @field-word-limit-font-size: @font-size-sm; @field-word-limit-line-height: 16px; @@ -311,7 +315,7 @@ @grid-item-content-background-color: @white; @grid-item-content-active-color: @active-color; @grid-item-icon-size: 28px; -@grid-item-text-color: @gray-darker; +@grid-item-text-color: @gray-7; @grid-item-text-font-size: @font-size-sm; // GoodsAction @@ -322,7 +326,7 @@ @goods-action-icon-size: 18px; @goods-action-icon-font-size: @font-size-xs; @goods-action-icon-active-color: @active-color; -@goods-action-icon-text-color: @gray-darker; +@goods-action-icon-text-color: @gray-7; @goods-action-button-height: 40px; @goods-action-button-warning-color: @gradient-orange; @goods-action-button-danger-color: @gradient-red; @@ -353,7 +357,7 @@ @info-font-family: PingFang SC, Helvetica Neue, Arial, sans-serif; // Image -@image-placeholder-text-color: @gray-dark; +@image-placeholder-text-color: @gray-6; @image-placeholder-font-size: @font-size-md; @image-placeholder-background-color: @background-color; @@ -364,14 +368,14 @@ // List @list-icon-margin-right: 5px; -@list-text-color: @gray-dark; +@list-text-color: @gray-6; @list-text-font-size: @font-size-md; @list-text-line-height: 50px; // Loading -@loading-text-color: @gray-dark; +@loading-text-color: @gray-6; @loading-text-font-size: @font-size-md; -@loading-spinner-color: @gray; +@loading-spinner-color: @gray-5; @loading-spinner-size: 30px; @loading-spinner-animation-duration: .8s; @@ -407,11 +411,11 @@ // NumberKeyboard @number-keyboard-background-color: @white; @number-keyboard-key-height: 54px; -@number-keyboard-key-background: #ebedf0; +@number-keyboard-key-background: @gray-3; @number-keyboard-key-font-size: 24px; @number-keyboard-key-active-color: @active-color; @number-keyboard-delete-font-size: @font-size-lg; -@number-keyboard-title-color: @gray-darker; +@number-keyboard-title-color: @gray-7; @number-keyboard-title-height: 30px; @number-keyboard-title-font-size: @font-size-md; @number-keyboard-close-padding: 0 @padding-md; @@ -432,10 +436,10 @@ @pagination-font-size: @font-size-md; @pagination-item-width: 36px; @pagination-item-default-color: @blue; -@pagination-item-disabled-color: @gray-darker; +@pagination-item-disabled-color: @gray-7; @pagination-item-disabled-background-color: @background-color; @pagination-background-color: @white; -@pagination-desc-color: @gray-darker; +@pagination-desc-color: @gray-7; @pagination-disabled-opacity: @disabled-opacity; // Panel @@ -449,7 +453,7 @@ @password-input-font-size: 20px; @password-input-border-radius: 6px; @password-input-background-color: @white; -@password-input-info-color: @gray-dark; +@password-input-info-color: @gray-6; @password-input-info-font-size: @font-size-md; @password-input-error-info-color: @red; @password-input-dot-size: 10px; @@ -474,14 +478,14 @@ @popup-transition: transform @animation-duration-base ease-out; @popup-round-border-radius: 20px; @popup-close-icon-size: 18px; -@popup-close-icon-color: @gray-dark; +@popup-close-icon-color: @gray-6; @popup-close-icon-margin: 16px; @popup-close-icon-z-index: 1; // Progress @progress-height: 4px; @progress-color: @blue; -@progress-background-color: @gray-light; +@progress-background-color: @gray-3; @progress-pivot-padding: 0 5px; @progress-pivot-text-color: @white; @progress-pivot-font-size: @font-size-xs; @@ -491,17 +495,17 @@ // PullRefresh @pull-refresh-head-height: 50px; @pull-refresh-head-font-size: @font-size-md; -@pull-refresh-head-text-color: @gray-dark; +@pull-refresh-head-text-color: @gray-6; // Radio @radio-size: 20px; -@radio-border-color: @gray-light; +@radio-border-color: @gray-5; @radio-transition-duration: @animation-duration-fast; @radio-label-margin: @padding-xs; @radio-label-color: @text-color; @radio-checked-icon-color: @blue; -@radio-disabled-icon-color: @gray; -@radio-disabled-label-color: @gray; +@radio-disabled-icon-color: @gray-5; +@radio-disabled-label-color: @gray-5; @radio-disabled-background-color: @border-color; // Rate @@ -515,7 +519,7 @@ @search-label-padding: 0 5px; @search-label-color: @text-color; @search-label-font-size: @font-size-md; -@search-left-icon-color: @gray-dark; +@search-left-icon-color: @gray-6; @search-action-padding: 0 @padding-xs; @search-action-text-color: @text-color; @search-action-font-size: @font-size-md; @@ -527,7 +531,7 @@ @sidebar-font-size: @font-size-md; @sidebar-line-height: 20px; @sidebar-text-color: @text-color; -@sidebar-disabled-text-color: @gray; +@sidebar-disabled-text-color: @gray-5; @sidebar-padding: 20px @padding-sm 20px @padding-xs; @sidebar-active-color: @active-color; @sidebar-background-color: @background-color-light; @@ -545,7 +549,7 @@ // Slider @slider-active-background-color: @blue; -@slider-inactive-background-color: @gray-light; +@slider-inactive-background-color: @gray-3; @slider-disabled-opacity: @disabled-opacity; @slider-button-width: 24px; @slider-button-height: 24px; @@ -554,7 +558,7 @@ @slider-button-box-shadow: 0 1px 2px rgba(0, 0, 0, .5); // Step -@step-text-color: @gray-dark; +@step-text-color: @gray-6; @step-process-text-color: @text-color; @step-font-size: @font-size-md; @step-line-color: @border-color; @@ -562,7 +566,7 @@ @step-finish-text-color: @text-color; @step-icon-size: 12px; @step-circle-size: 5px; -@step-circle-color: @gray-dark; +@step-circle-color: @gray-6; @step-horizontal-title-font-size: @font-size-sm; // Steps @@ -575,13 +579,13 @@ @stepper-active-color: #e8e8e8; @stepper-background-color: @active-color; @stepper-button-icon-color: @text-color; -@stepper-button-disabled-color: #f7f8fa; -@stepper-button-disabled-icon-color: @gray; +@stepper-button-disabled-color: @background-color; +@stepper-button-disabled-icon-color: @gray-5; @stepper-input-width: 32px; @stepper-input-height: 28px; @stepper-input-font-size: @font-size-md; @stepper-input-text-color: @text-color; -@stepper-input-disabled-text-color: @gray; +@stepper-input-disabled-text-color: @gray-5; @stepper-input-disabled-background-color: @active-color; @stepper-border-radius: @border-radius-md; @@ -636,16 +640,16 @@ // TabbarItem @tabbar-item-font-size: @font-size-sm; -@tabbar-item-text-color: @gray-darker; +@tabbar-item-text-color: @gray-7; @tabbar-item-active-color: @blue; @tabbar-item-line-height: 1; @tabbar-item-icon-size: 18px; @tabbar-item-margin-bottom: 5px; // Tab -@tab-text-color: @gray-darker; +@tab-text-color: @gray-7; @tab-active-text-color: @text-color; -@tab-disabled-text-color: @gray; +@tab-disabled-text-color: @gray-5; @tab-font-size: @font-size-md; // Tabs @@ -668,7 +672,7 @@ @tag-primary-color: @blue; @tag-success-color: @green; @tag-warning-color: @orange; -@tag-default-color: @gray-dark; +@tag-default-color: @gray-6; @tag-plain-background-color: @white; // Toast @@ -695,29 +699,29 @@ @tree-select-nav-item-padding: @padding-sm @padding-xs @padding-sm @padding-sm; @tree-select-item-height: 44px; @tree-select-item-active-color: @red; -@tree-select-item-disabled-color: @gray; +@tree-select-item-disabled-color: @gray-5; // Uploader @uploader-size: 80px; @uploader-icon-size: 24px; -@uploader-icon-color: @gray-dark; -@uploader-text-color: @gray-dark; +@uploader-icon-color: @gray-6; +@uploader-text-color: @gray-6; @uploader-text-font-size: @font-size-sm; -@uploader-upload-border-color: @gray-light; +@uploader-upload-border-color: @gray-3; @uploader-upload-border-radius: 4px; @uploader-upload-background-color: @white; -@uploader-delete-color: @gray-dark; +@uploader-delete-color: @gray-6; @uploader-delete-icon-size: 18px; @uploader-delete-background-color: @white; @uploader-file-background-color: @background-color; @uploader-file-icon-size: 20px; -@uploader-file-icon-color: @gray-darker; +@uploader-file-icon-color: @gray-7; @uploader-file-name-padding: 0 @padding-base; @uploader-file-name-margin-top: @padding-xs; @uploader-file-name-font-size: @font-size-sm; -@uploader-file-name-text-color: @gray-darker; +@uploader-file-name-text-color: @gray-7; // Sku -@sku-item-background-color: #f7f8fa; +@sku-item-background-color: @background-color; @sku-icon-gray-color: #dcdde0; @sku-upload-mask-color: rgba(50, 50, 51, .8); diff --git a/src/switch/index.tsx b/src/switch/index.tsx index 66c163b92..ac1ddc894 100644 --- a/src/switch/index.tsx +++ b/src/switch/index.tsx @@ -1,5 +1,5 @@ import { createNamespace, addUnit } from '../utils'; -import { BLUE, GRAY_DARK } from '../utils/constant'; +import { BLUE } from '../utils/constant'; import { switchProps, SharedSwitchProps } from './shared'; import { emit, inherit } from '../utils/functional'; import Loading from '../loading'; @@ -38,7 +38,7 @@ function Switch( backgroundColor: checked ? activeColor : inactiveColor }; - const loadingColor = checked ? activeColor || BLUE : inactiveColor || GRAY_DARK; + const loadingColor = checked ? activeColor || BLUE : inactiveColor || ''; function onClick(event: PointerEvent) { emit(ctx, 'click', event); diff --git a/src/utils/constant.ts b/src/utils/constant.ts index 43bf62eb9..165806dd4 100644 --- a/src/utils/constant.ts +++ b/src/utils/constant.ts @@ -3,8 +3,6 @@ export const RED = '#ee0a24'; export const BLUE = '#1989fa'; export const GREEN = '#07c160'; export const WHITE = '#fff'; -export const GRAY = '#c9c9c9'; -export const GRAY_DARK = '#969799'; // border export const BORDER = 'van-hairline'; From a08d7357f31b633dd1f2eeeb63becc5292dcb5a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Tue, 26 Nov 2019 20:29:45 +0800 Subject: [PATCH 14/18] chore(touch-emulator): release 1.2.0 --- packages/vant-touch-emulator/index.js | 1 - packages/vant-touch-emulator/package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/vant-touch-emulator/index.js b/packages/vant-touch-emulator/index.js index b1f754978..92674603c 100644 --- a/packages/vant-touch-emulator/index.js +++ b/packages/vant-touch-emulator/index.js @@ -104,7 +104,6 @@ function onMouse(touchType) { return } - // The EventTarget on which the touch point started when it was first placed on the surface, // even if the touch point has since moved outside the interactive area of that element. // also, when the target doesnt exist anymore, we update it diff --git a/packages/vant-touch-emulator/package.json b/packages/vant-touch-emulator/package.json index cd89a4e20..5a0e56734 100644 --- a/packages/vant-touch-emulator/package.json +++ b/packages/vant-touch-emulator/package.json @@ -1,6 +1,6 @@ { "name": "@vant/touch-emulator", - "version": "1.1.0", + "version": "1.2.0", "description": "Vant touch emulator", "main": "index.js", "publishConfig": { From 68fef3d72a1f2a7d6a2f2103ba0047667d7b7b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Tue, 26 Nov 2019 20:39:31 +0800 Subject: [PATCH 15/18] docs(touch-emulator): add changelog --- packages/vant-touch-emulator/changelog.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 packages/vant-touch-emulator/changelog.md diff --git a/packages/vant-touch-emulator/changelog.md b/packages/vant-touch-emulator/changelog.md new file mode 100644 index 000000000..6434ef05a --- /dev/null +++ b/packages/vant-touch-emulator/changelog.md @@ -0,0 +1,16 @@ +# Changelog + +### [v1.2.0] +`2019-11-22` + +- fix incorrect touchmove behaviour in Firefox [\#5118](https://github.com/youzan/vant/pull/5118) + +### [v1.1.0] +`2019-06-03` + +- skip emulator when browser support touch event + +### [v1.0.0] +`2019-05-28` + +- initial release From c58f8e54baa64769bd7ce881e2bd803dd512391a Mon Sep 17 00:00:00 2001 From: rex Date: Tue, 26 Nov 2019 20:44:15 +0800 Subject: [PATCH 16/18] feat(AddressEdit): refactor style (#5117) --- src/address-edit/Detail.js | 26 +- src/address-edit/index.js | 114 +++--- src/address-edit/index.less | 21 ++ .../test/__snapshots__/demo.spec.js.snap | 63 ++-- .../test/__snapshots__/index.spec.js.snap | 350 ++++++++++-------- src/style/var.less | 3 +- 6 files changed, 329 insertions(+), 248 deletions(-) diff --git a/src/address-edit/Detail.js b/src/address-edit/Detail.js index 8d8485682..f2c10d4ba 100644 --- a/src/address-edit/Detail.js +++ b/src/address-edit/Detail.js @@ -17,6 +17,12 @@ export default createComponent({ showSearchResult: Boolean }, + computed: { + shouldShowSearchResult() { + return this.focused && this.searchResult && this.showSearchResult; + } + }, + methods: { onSelect(express) { this.$emit('select-search', express); @@ -42,19 +48,30 @@ export default createComponent({ }, genSearchResult() { - const { searchResult } = this; - const show = this.focused && searchResult && this.showSearchResult; - if (show) { + const { value, shouldShowSearchResult, searchResult } = this; + if (shouldShowSearchResult) { return searchResult.map(express => ( { this.onSelect(express); }} + scopedSlots={{ + title: () => + express.name && ( +
${value}` + )} + /> + ) + }} /> )); } @@ -72,6 +89,7 @@ export default createComponent({ type="textarea" value={this.value} error={this.error} + border={!this.shouldShowSearchResult} label={t('label')} maxlength={this.detailMaxlength} placeholder={t('placeholder')} diff --git a/src/address-edit/index.js b/src/address-edit/index.js index 55d35a196..2d85422fc 100644 --- a/src/address-edit/index.js +++ b/src/address-edit/index.js @@ -251,64 +251,68 @@ export default createComponent({ return (
- - - { - this.showAreaPopup = true; - }} - /> - { - this.$emit('select-search', event); - }} - /> - {this.showPostal && ( +
- )} - {this.slots()} + + { + this.showAreaPopup = true; + }} + /> + { + this.$emit('select-search', event); + }} + /> + {this.showPostal && ( + + )} + {this.slots()} +
{this.showSetDefault && (
+
diff --git a/src/address-edit/test/__snapshots__/index.spec.js.snap b/src/address-edit/test/__snapshots__/index.spec.js.snap index 4d3906873..462c99692 100644 --- a/src/address-edit/test/__snapshots__/index.spec.js.snap +++ b/src/address-edit/test/__snapshots__/index.spec.js.snap @@ -2,75 +2,85 @@ exports[`create a AddressEdit 1`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
+
+
地区
+
+
+
+
+
+
-
-
-
-
-
详细地址
-
-
+
+
+
+
详细地址
+
+
+
-
+
`; exports[`create a AddressEdit with props 1`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
-
-
-
-
-
-
详细地址
-
-
+
+
地区
+
+
+
+
-
-
-
邮政编码
-
-
+
+
+
+
详细地址
+
+
+
+
+
+
+
+
邮政编码
+
+
+
-
+
设为默认收货地址
@@ -78,47 +88,52 @@ exports[`create a AddressEdit with props 1`] = `
-
+
`; exports[`set-default 1`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
-
-
-
-
-
-
详细地址
-
-
+
+
地区
+
+
+
+
-
-
-
邮政编码
-
-
+
+
+
+
详细地址
+
+
+
+
+
+
+
+
邮政编码
+
+
+
-
+
设为默认收货地址
@@ -126,47 +141,52 @@ exports[`set-default 1`] = `
-
+
`; exports[`show area component 1`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
-
-
-
-
-
-
详细地址
-
-
+
+
地区
+
+
+
+
-
-
-
邮政编码
-
-
+
+
+
+
详细地址
+
+
+
+
+
+
+
+
邮政编码
+
+
+
-
+
设为默认收货地址
@@ -174,47 +194,52 @@ exports[`show area component 1`] = `
-
+
`; exports[`show area component 2`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
-
-
-
-
-
-
详细地址
-
-
+
+
地区
+
+
+
+
-
-
-
邮政编码
-
-
+
+
+
+
详细地址
+
+
+
+
+
+
+
+
邮政编码
+
+
+
-
+
设为默认收货地址
@@ -222,40 +247,45 @@ exports[`show area component 2`] = `
-
+
`; exports[`valid area placeholder confirm 1`] = `
-
-
姓名
-
-
+
+
+
姓名
+
+
+
-
-
-
电话
-
-
+
+
电话
+
+
+
-
-
-
地区
-
-
+
+
地区
+
+
+
+
+
+
-
-
-
-
-
详细地址
-
-
+
+
+
+
详细地址
+
+
+
-
+
`; diff --git a/src/style/var.less b/src/style/var.less index b339968d1..94d63ba5f 100644 --- a/src/style/var.less +++ b/src/style/var.less @@ -75,7 +75,8 @@ @action-sheet-cancel-padding-color: @background-color; // AddressEdit -@address-edit-buttons-padding: @padding-xl @padding-md; +@address-edit-padding: @padding-sm; +@address-edit-buttons-padding: @padding-xl @padding-base; @address-edit-button-margin-bottom: @padding-sm; @address-edit-detail-finish-color: @blue; @address-edit-detail-finish-font-size: @font-size-sm; From 592bcafda04e56f10c922be5dc902de54ee2cd65 Mon Sep 17 00:00:00 2001 From: rex Date: Tue, 26 Nov 2019 20:44:35 +0800 Subject: [PATCH 17/18] feat(ContactList): refactor style & add new prop defaultTagText (#5089) --- src/contact-card/README.md | 3 + src/contact-card/README.zh-CN.md | 2 + src/contact-card/demo/index.vue | 10 +++- .../test/__snapshots__/demo.spec.js.snap | 16 +++--- .../test/__snapshots__/index.spec.js.snap | 16 +++--- src/contact-list/index.less | 31 ++++++---- src/contact-list/index.tsx | 57 +++++++++++++------ 7 files changed, 88 insertions(+), 47 deletions(-) diff --git a/src/contact-card/README.md b/src/contact-card/README.md index 7c4f95b5b..e1e2d3e1e 100644 --- a/src/contact-card/README.md +++ b/src/contact-card/README.md @@ -155,6 +155,7 @@ export default { | v-model | Id of chosen contact | *string \| number* | - | - | | list | Contact list | *Contact[]* | `[]` | - | | add-text | Add button text | *string* | `Add new contact` | - | +| default-tag-text | Default tag text | *string* | - | - | ### ContactList Events @@ -164,6 +165,7 @@ export default { | edit | Triggered when click edit button | item: contact object,index | | select | Triggered when select contact | item: contact object | + ### ContactEdit Props | Attribute | Description | Type | Default | Version | @@ -190,3 +192,4 @@ export default { | id | ID | *string \| number* | | name | Name | *string* | | tel | Phone | *string* | +| isDefault | Is default contact | *boolean* | diff --git a/src/contact-card/README.zh-CN.md b/src/contact-card/README.zh-CN.md index 8ddb795be..c5883b390 100644 --- a/src/contact-card/README.zh-CN.md +++ b/src/contact-card/README.zh-CN.md @@ -159,6 +159,7 @@ export default { | v-model | 当前选中联系人的 id | *string \| number* | - | - | | list | 联系人列表 | *Contact[]* | `[]` | - | | add-text | 新建按钮文案 | *string* | `新建联系人` | - | +| default-tag-text | 默认联系人标签文案 | *string* | - | - | ### ContactList Events @@ -194,3 +195,4 @@ export default { | id | 每位联系人的唯一标识 | *string \| number* | | name | 联系人姓名 | *string* | | tel | 联系人手机号 | *string \| number* | +| isDefault | 是否为默认联系人 | *boolean* | diff --git a/src/contact-card/demo/index.vue b/src/contact-card/demo/index.vue index cef09488e..98a912098 100644 --- a/src/contact-card/demo/index.vue +++ b/src/contact-card/demo/index.vue @@ -16,6 +16,7 @@
); } @@ -97,7 +119,8 @@ function ContactList( ContactList.props = { value: null as any, list: Array, - addText: String + addText: String, + defaultTagText: String }; export default createComponent(ContactList); From d8e30bdcacb1553ebfcf64f8423a64d65e1eb8c3 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 26 Nov 2019 20:59:47 +0800 Subject: [PATCH 18/18] feat(AddressEdit): add click feedback of area cell (#5120) --- src/address-edit/Detail.js | 25 ++++++++++--------- src/address-edit/index.js | 1 + src/address-edit/index.less | 2 +- .../test/__snapshots__/demo.spec.js.snap | 2 +- .../test/__snapshots__/index.spec.js.snap | 12 ++++----- src/contact-list/index.less | 2 +- src/contact-list/index.tsx | 18 +++++++------ 7 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/address-edit/Detail.js b/src/address-edit/Detail.js index f2c10d4ba..0ecf36720 100644 --- a/src/address-edit/Detail.js +++ b/src/address-edit/Detail.js @@ -53,24 +53,25 @@ export default createComponent({ return searchResult.map(express => ( { this.onSelect(express); }} scopedSlots={{ - title: () => - express.name && ( -
${value}` - )} - /> - ) + title: () => { + if (express.name) { + const text = express.name.replace( + value, + `${value}` + ); + + return
; + } + } }} /> )); diff --git a/src/address-edit/index.js b/src/address-edit/index.js index 2d85422fc..f26643071 100644 --- a/src/address-edit/index.js +++ b/src/address-edit/index.js @@ -272,6 +272,7 @@ export default createComponent({
-
+
地区
diff --git a/src/address-edit/test/__snapshots__/index.spec.js.snap b/src/address-edit/test/__snapshots__/index.spec.js.snap index 462c99692..1e0659574 100644 --- a/src/address-edit/test/__snapshots__/index.spec.js.snap +++ b/src/address-edit/test/__snapshots__/index.spec.js.snap @@ -15,7 +15,7 @@ exports[`create a AddressEdit 1`] = `
-
+
地区
@@ -54,7 +54,7 @@ exports[`create a AddressEdit with props 1`] = `
-
+
地区
@@ -107,7 +107,7 @@ exports[`set-default 1`] = `
-
+
地区
@@ -160,7 +160,7 @@ exports[`show area component 1`] = `
-
+
地区
@@ -213,7 +213,7 @@ exports[`show area component 2`] = `
-
+
地区
@@ -266,7 +266,7 @@ exports[`valid area placeholder confirm 1`] = `
-
+
地区
diff --git a/src/contact-list/index.less b/src/contact-list/index.less index ddaa26716..2a6058c0c 100644 --- a/src/contact-list/index.less +++ b/src/contact-list/index.less @@ -42,7 +42,7 @@ left: 0; z-index: @contact-list-add-button-z-index; padding: 5px 16px; - background-color: #fff; + background-color: @white; } &__add { diff --git a/src/contact-list/index.tsx b/src/contact-list/index.tsx index 4d8066856..9027d47bc 100644 --- a/src/contact-list/index.tsx +++ b/src/contact-list/index.tsx @@ -9,7 +9,7 @@ import Radio from '../radio'; import RadioGroup from '../radio-group'; // Types -import { CreateElement, RenderContext } from 'vue/types'; +import { CreateElement, RenderContext, VNode } from 'vue/types'; import { DefaultSlots } from '../utils/types'; export type ContactListItem = { @@ -67,14 +67,17 @@ function ContactList( } function Content() { - return [ - `${item.name},${item.tel}`, - item.isDefault && props.defaultTagText && ( + const nodes = ([`${item.name},${item.tel}`] as unknown[]) as VNode[]; + + if (item.isDefault && props.defaultTagText) { + nodes.push( {props.defaultTagText} - ) - ]; + ); + } + + return nodes; } return ( @@ -84,11 +87,10 @@ function ContactList( center class={bem('item')} valueClass={bem('item-value')} - // @ts-ignore scopedSlots={{ + icon: LeftIcon, default: Content, 'right-icon': RightIcon, - icon: LeftIcon }} onClick={onClick} />