From 9ca25218c200efbe226d4e2da83762d221dcc7e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Sun, 21 Apr 2019 23:00:06 +0800 Subject: [PATCH 01/14] [improvement] Circle: add less var --- packages/circle/index.less | 2 +- packages/style/var.less | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/circle/index.less b/packages/circle/index.less index 485692fe2..0be72694e 100644 --- a/packages/circle/index.less +++ b/packages/circle/index.less @@ -28,7 +28,7 @@ top: 50%; left: 0; width: 100%; - color: @text-color; + color: @circle-text-color; position: absolute; transform: translateY(-50%); } diff --git a/packages/style/var.less b/packages/style/var.less index f470ee6f6..3e7ddf3a6 100644 --- a/packages/style/var.less +++ b/packages/style/var.less @@ -139,6 +139,9 @@ @checkbox-disabled-label-color: @gray; @checkbox-disabled-background-color: @border-color; +// Circle +@circle-text-color: @text-color; + // Collapse @collapse-item-transition-duration: .3s; @collapse-item-content-padding: 15px; From c9d6222ab1a5a0a2deec9dadb8001a7158f4fd2f Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 22 Apr 2019 19:24:51 +0800 Subject: [PATCH 02/14] [new feature] Step: add active-icon slot (#3193) --- packages/step/index.js | 4 +++- packages/steps/en-US.md | 6 +----- packages/steps/zh-CN.md | 8 ++------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/step/index.js b/packages/step/index.js index cfbcfbeae..33eae2f5f 100644 --- a/packages/step/index.js +++ b/packages/step/index.js @@ -43,7 +43,9 @@ export default sfc({ {status !== 'process' ? ( ) : ( - + this.slots('active-icon') || ( + + ) )}
diff --git a/packages/steps/en-US.md b/packages/steps/en-US.md index c1f6bf576..4894ed225 100644 --- a/packages/steps/en-US.md +++ b/packages/steps/en-US.md @@ -69,17 +69,13 @@ export default { | Attribute | Description | Type | Default | |------|------|------|------| | active | Active step | `Number` | 0 | -| icon | Action step icon | `String` | - | -| icon-class | Icon class | `String` | - | -| title | Title | `String` | - | | description | Description | `String` | - | | direction | Can be set to `vertical` | `String` | `horizontal` | | active-icon | Active icon name | `String` | `checked` | | active-color | Active step color | `String` | `#07c160` | -### Steps Slot +### Step Slot | Name | Description | |------|------| | icon | Custom icon | -| message-extra | Extra content | diff --git a/packages/steps/zh-CN.md b/packages/steps/zh-CN.md index cc012267e..dad4b5fae 100644 --- a/packages/steps/zh-CN.md +++ b/packages/steps/zh-CN.md @@ -74,16 +74,12 @@ export default { |------|------|------|------|------| | active | 当前步骤 | `Number` | 0 | - | | title | 顶部描述栏标题 | `String` | - | - | -| description | 顶部描述栏文字 | `String` | - | - | -| icon | 顶部描述栏图标 | `String` | - | - | -| icon-class | 顶部描述栏图标额外类名 | `String` | - | - | | direction | 显示方向,可选值为 `vertical` | `String` | `horizontal` | - | | active-icon | 激活状态底部图标,可选值见 Icon 组件 | `String` | `checked` | 1.6.9 | | active-color | 激活状态颜色 | `String` | `#07c160` | - | -### Steps Slot +### Step Slot | 名称 | 说明 | |------|------| -| icon | 自定义icon区域 | -| message-extra | 状态栏添加额外的元素 | +| active-icon | 自定义激活状态图标 | From 493860134a32763ac8aa5be0133f278fa875b1a3 Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 22 Apr 2019 19:51:42 +0800 Subject: [PATCH 03/14] [new feature] NumberKeyboard: add title-left slot (#3194) --- packages/number-keyboard/en-US.md | 6 ++++++ packages/number-keyboard/index.js | 14 +++++++++++--- packages/number-keyboard/index.less | 5 +++++ .../test/__snapshots__/demo.spec.js.snap | 2 +- .../test/__snapshots__/index.spec.js.snap | 8 ++++++++ packages/number-keyboard/test/index.spec.js | 16 ++++++++++++++++ packages/number-keyboard/zh-CN.md | 6 ++++++ packages/panel/en-US.md | 1 - 8 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 packages/number-keyboard/test/__snapshots__/index.spec.js.snap diff --git a/packages/number-keyboard/en-US.md b/packages/number-keyboard/en-US.md index c1ec3bb82..8af9c83fb 100644 --- a/packages/number-keyboard/en-US.md +++ b/packages/number-keyboard/en-US.md @@ -85,3 +85,9 @@ export default { | blur | Triggered when click close button or blur keyboard | - | | show | Triggered when keyboard is fully displayed. | - | | hide | Triggered when keyboard is fully hidden. | - | + +### Slot + +| name | Description | +|------|------| +| title-left | Custom title left content | diff --git a/packages/number-keyboard/index.js b/packages/number-keyboard/index.js index 9a8b925cf..88b219927 100644 --- a/packages/number-keyboard/index.js +++ b/packages/number-keyboard/index.js @@ -133,8 +133,11 @@ export default sfc({ }, render(h) { - const { theme, onPress, closeButtonText } = this; + const { title, theme, onPress, closeButtonText } = this; + + const titleLeftSlot = this.slots('title-left'); const showTitleClose = closeButtonText && theme === 'default'; + const showTitle = title || showTitleClose || titleLeftSlot; return ( @@ -146,9 +149,14 @@ export default sfc({ onAnimationend={this.onAnimationEnd} onWebkitAnimationEnd={this.onAnimationEnd} > - {(this.title || showTitleClose) && ( + {showTitle && (
- {this.title} + {titleLeftSlot && ( + + {titleLeftSlot} + + )} + {title && {title}} {showTitleClose && ( {closeButtonText} diff --git a/packages/number-keyboard/index.less b/packages/number-keyboard/index.less index 4e30e5528..e79a5d6b3 100644 --- a/packages/number-keyboard/index.less +++ b/packages/number-keyboard/index.less @@ -16,6 +16,11 @@ text-align: center; position: relative; color: @gray-darker; + + &-left { + left: 0; + position: absolute; + } } &__body { diff --git a/packages/number-keyboard/test/__snapshots__/demo.spec.js.snap b/packages/number-keyboard/test/__snapshots__/demo.spec.js.snap index 492986d42..9777e905a 100644 --- a/packages/number-keyboard/test/__snapshots__/demo.spec.js.snap +++ b/packages/number-keyboard/test/__snapshots__/demo.spec.js.snap @@ -6,7 +6,7 @@ exports[`renders demo correctly 1`] = ` 弹出默认键盘
-
完成
+
完成
123456789.0删除
diff --git a/packages/number-keyboard/test/__snapshots__/index.spec.js.snap b/packages/number-keyboard/test/__snapshots__/index.spec.js.snap new file mode 100644 index 000000000..6748029d4 --- /dev/null +++ b/packages/number-keyboard/test/__snapshots__/index.spec.js.snap @@ -0,0 +1,8 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`title-left slot 1`] = ` +
+
Custom Title Left
+
1234567890删除
+
+`; diff --git a/packages/number-keyboard/test/index.spec.js b/packages/number-keyboard/test/index.spec.js index f29596fe4..e5299bffd 100644 --- a/packages/number-keyboard/test/index.spec.js +++ b/packages/number-keyboard/test/index.spec.js @@ -83,3 +83,19 @@ test('listen to show event when no transtion', () => { expect(wrapper.emitted('show')).toBeTruthy(); expect(wrapper.emitted('hide')).toBeTruthy(); }); + +test('title-left slot', () => { + const wrapper = mount({ + template: ` + + + + ` + }, { + components: { + NumberKeyboard + } + }); + + expect(wrapper).toMatchSnapshot(); +}); diff --git a/packages/number-keyboard/zh-CN.md b/packages/number-keyboard/zh-CN.md index 4d8b5eccb..c2972db12 100644 --- a/packages/number-keyboard/zh-CN.md +++ b/packages/number-keyboard/zh-CN.md @@ -85,3 +85,9 @@ export default { | blur | 点击关闭按钮或非键盘区域时触发 | - | | show | 键盘完全弹出时触发 | - | | hide | 键盘完全收起时触发 | - | + +### Slot + +| 名称 | 说明 | +|------|------| +| title-left | 自定义标题栏左侧内容 | diff --git a/packages/panel/en-US.md b/packages/panel/en-US.md index a71b68dcb..32b34f9a5 100644 --- a/packages/panel/en-US.md +++ b/packages/panel/en-US.md @@ -38,7 +38,6 @@ Vue.use(Panel); | desc | Description | `String` | - | | status | Status | `String` | - | - ### Slot | name | Description | From aaaa60aeabe83b0b1f09f346989e3e55e615d385 Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 22 Apr 2019 19:58:24 +0800 Subject: [PATCH 04/14] [Doc] remove outdated contribution guide (#3195) --- .github/CONTRIBUTING.md | 7 ++----- docs/markdown/contribution.zh-CN.md | 30 ++--------------------------- 2 files changed, 4 insertions(+), 33 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index dbf811bb7..30912f933 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -5,11 +5,13 @@ The following is a set of guidelines for contributing to Vant. Please spend seve Anyway, these are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request. ## Opening an Issue + If you think you have found a bug, or have a new feature idea, please start by making sure it hasn't already been reported or fixed. You can search through existing issues and PRs to see if someone has reported one similar to yours. Next, create a new issue that briefly explains the problem, and provides a bit of background as to the circumstances that triggered it, and steps to reproduce it. ## Submitting a Pull Request + It's welcomed to pull request, And there are some tips about that: - Before working on a large change, it is best to open an issue first to discuss it with the maintainers. @@ -35,8 +37,3 @@ npm run dev # open http://localhost:8080 ``` - -## Component Developing Guidelines -- Create new directory under `packages` for a new component. -- Refer to `Sku` for nested components. -- Refer to `Button` for components that depend on other components. diff --git a/docs/markdown/contribution.zh-CN.md b/docs/markdown/contribution.zh-CN.md index 139922d60..326336137 100644 --- a/docs/markdown/contribution.zh-CN.md +++ b/docs/markdown/contribution.zh-CN.md @@ -103,11 +103,11 @@ export default { #### 5. API 说明 -组件的 API 说明,请以表格的形式书写,表格包含以下列: +组件的 API 说明以表格的形式书写,表格包含以下列: | 参数 | 说明 | 类型 | 默认值 | | ------------ | ------------- | -------- | ---------- | -| visible | 是否可见 | bool | `false` | +| visible | 是否可见 | `Boolean` | `false` | #### 6. Event 说明 @@ -116,29 +116,3 @@ export default { | 事件名 | 说明 | 参数 | |-----------|-----------|-----------| | click | 点击按钮时触发 | event:事件对象 | - -### 实用技巧 - -#### 组件互相引用 - -比如说 `Dialog` 里面引用了 `Button` 组件,直接写相对路径引用即可。 - -```js -import Button from '../button'; -``` - -#### 组件创建 - -Vant 中的组件会通过 `create` 方法统一创建,`create` 方法会在选项文件中注入基本的依赖和方法。 - -```js -import create from '../utils/create'; - -export default create({ - name: 'button' -}); -``` - -#### 样式 - -组件样式使用 `precss 3.0` 作为预处理器,具体语法请参考 [precss 文档](https://github.com/jonathantneal/precss). From 14ceda09f7d5c174b995d8130371c01b733b350a Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 22 Apr 2019 20:05:43 +0800 Subject: [PATCH 05/14] [Doc] update PULL_REQUEST_TEMPLATE.md (#3196) --- .github/PULL_REQUEST_TEMPLATE.md | 37 ++++++-------------------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 33f4ae89a..0b56ff18e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,39 +1,16 @@ ### Before submitting a pull request, please make sure the following is done: -### 提交 PR 前请确保完成以下内容: - 1. Fork [the repository](https://github.com/youzan/vant) and create your branch from `dev`. 2. Follow the [contributing guide](./CONTRIBUTING.md) to setup your develop environment. -2. If you've added code that should be tested, add tests! +2. If you've added code that should be tested, add tests. 3. If you've changed APIs, update the documentation. 4. Ensure the test suite passes (`npm test`). -5. Make sure your code lints (`npm run lint`). -6. Describe your pull request. -### 请认真写 PR 的标题,会用于生成 change log。 +#### Title Format -#### 标题规则 -[bug fix / breaking change / new feature] 组件名字:修改内容描述 +[bugfix / new feature / improvement] ComponentName:content -说明: -* 前面方括号用来区分 Issue / PR 的 类型:bug fix - 改 bug;breaking change: 不兼容的改动;new feature:新功能 -* 修改内容尽可能言简意赅,总结 PR 的改动或者描述 Issue -* 描述请用中文 -* 组件名字请用英文,首字母大写 - -示例: -* [bug fix] Button: 修改颜色 -* [breaking change] Loading: 删除 `static` 属性 -* [new feature] Form: 增加 `FormSelection` 支持 -* [new feature] 新增 Abc 组件 - -### Please remove the above lines when you submit this pull request, also please fill in the changes you've made in this pull request. - -### 提交 PR 前 请把以上内容删除,并填写以下内容。 - -Fixes #xx(issue number here), remove this line if no related issue. - -Changes you made in this pull request: - -- some change -- another change +Example: +* [bugfix] Button: color prop not work +* [new feature] Button: add color prop +* [improvement] Button: optimize performance From 5f2b027070c8c18f3716b84a1953ed9846fb9536 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 23 Apr 2019 15:51:44 +0800 Subject: [PATCH 06/14] [improvement] Icon: update new icon & hot icon (#3203) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 23fd5b631..619174292 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "license": "MIT", "dependencies": { "@babel/runtime": "^7.4.3", - "@vant/icons": "1.1.5", + "@vant/icons": "1.1.6", "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3", "vue-lazyload": "1.2.3" }, diff --git a/yarn.lock b/yarn.lock index e3177bc7e..f65c5d4be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1123,10 +1123,10 @@ eslint-plugin-import "^2.16.0" eslint-plugin-vue "^5.2.1" -"@vant/icons@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@vant/icons/-/icons-1.1.5.tgz#632e41138eca6482a65c3c9289bb78e55d1162a7" - integrity sha512-LfWD0RG8FuquHg6vMGZLoYWPJCb3W4mBt+fbgwGYgPPFLsFL7mNP3Hh13Dp7oYDpK7qkYYsyR/Tu/qTTzUWt6w== +"@vant/icons@1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@vant/icons/-/icons-1.1.6.tgz#6714656ca69d303936020a6b483e1ebaf5f0b1e8" + integrity sha512-gpdk+rPsbwjI23QmEnNumYVxwNgvgKKh1dBmkkcXPTlRDtsfrCE02FQn3CVijOdwTovUo4zGUCDKKMLyxl+hPA== "@vant/markdown-loader@^1.0.3": version "1.0.3" From 2190b3402841e4ba0afea52c3262753eb2525977 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 23 Apr 2019 19:32:33 +0800 Subject: [PATCH 07/14] [bugfix] Field: add hack for iOS 12 scroll position (#3204) --- packages/field/index.js | 9 ++++++++- packages/sku/components/SkuMessages.js | 12 +----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/field/index.js b/packages/field/index.js index 3b7d0fa22..485254359 100644 --- a/packages/field/index.js +++ b/packages/field/index.js @@ -1,4 +1,4 @@ -import { use, isObj, isDef } from '../utils'; +import { use, isObj, isDef, isIOS } from '../utils'; import Icon from '../icon'; import Cell from '../cell'; import { cellProps } from '../cell/shared'; @@ -102,6 +102,13 @@ export default sfc({ onBlur(event) { this.focused = false; this.$emit('blur', event); + + // Hack for iOS12 page scroll + // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 + /* istanbul ignore next */ + if (isIOS()) { + window.scrollTo(0, window.pageYOffset); + } }, onClickLeftIcon() { diff --git a/packages/sku/components/SkuMessages.js b/packages/sku/components/SkuMessages.js index 63931cdaa..22fdabebc 100644 --- a/packages/sku/components/SkuMessages.js +++ b/packages/sku/components/SkuMessages.js @@ -1,4 +1,4 @@ -import { use, isIOS } from '../../utils'; +import { use } from '../../utils'; import Cell from '../../cell'; import CellGroup from '../../cell-group'; import Field from '../../field'; @@ -118,15 +118,6 @@ export default sfc({ } } } - }, - - onBlur() { - // 修复 ios12 键盘弹起后点击错位的问题 - // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 - /* istanbul ignore next */ - if (isIOS()) { - window.scrollTo(0, 0); - } } }, @@ -156,7 +147,6 @@ export default sfc({ required={String(message.required) === '1'} placeholder={this.getPlaceholder(message)} type={this.getType(message)} - onBlur={this.onBlur} /> )))} From 38820373bc94d72fe24bf1af316d6276609bbad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=95=8F?= Date: Wed, 24 Apr 2019 14:05:02 +0800 Subject: [PATCH 08/14] [bugfix] Slider: fix slider drag and `value` props change at the same time can not drag success (#3206) --- packages/slider/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/slider/index.js b/packages/slider/index.js index b2e83ecf3..f307e1505 100644 --- a/packages/slider/index.js +++ b/packages/slider/index.js @@ -48,12 +48,13 @@ export default sfc({ const total = this.vertical ? rect.height : rect.width; const diff = (delta / total) * 100; - this.updateValue(this.startValue + diff); + this.newValue = this.startValue + diff; + this.updateValue(this.newValue); }, onTouchEnd() { if (this.disabled) return; - this.updateValue(this.value, true); + this.updateValue(this.newValue, true); }, onClick(event) { From c480b67dc4a69d526a9ef9ced87ea39ce7cbada6 Mon Sep 17 00:00:00 2001 From: Victor Borisov <12663045+vd3v@users.noreply.github.com> Date: Thu, 25 Apr 2019 03:23:30 +0200 Subject: [PATCH 09/14] English link to MIT License (#3208) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 610ad318c..7b2d9bd23 100644 --- a/README.md +++ b/README.md @@ -141,4 +141,4 @@ Scan the qrcode to join our wechat discussion group, please note that you want t ## LICENSE -[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) +[MIT](https://en.wikipedia.org/wiki/MIT_License) From 62d012e541000cd2003756ee3b94ed18faecce7a Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 25 Apr 2019 10:12:56 +0800 Subject: [PATCH 10/14] [bugfix] Row: align bottom not work (#3209) --- packages/row/index.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/row/index.less b/packages/row/index.less index a5d4190cf..df0a1c591 100644 --- a/packages/row/index.less +++ b/packages/row/index.less @@ -36,6 +36,6 @@ } &--align-bottom { - align-items: bottom; + align-items: flex-end; } } From 76a1b94951f748385033f62a357f7e95ca3ce815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Thu, 25 Apr 2019 10:28:13 +0800 Subject: [PATCH 11/14] [Doc] update quickstart --- docs/markdown/quickstart.zh-CN.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/markdown/quickstart.zh-CN.md b/docs/markdown/quickstart.zh-CN.md index 804223ced..79297c475 100644 --- a/docs/markdown/quickstart.zh-CN.md +++ b/docs/markdown/quickstart.zh-CN.md @@ -29,7 +29,8 @@ vue ui - 基于 vant 搭建单页面应用 - 配置 rem 适配方案 -- 自定义主题色方案 +- 配置 TypeScript 工程 +- 配置自定义主题色方案 ### 安装 @@ -121,7 +122,6 @@ Vue.use(Vant); > 注意:配置 babel-plugin-import 插件后将不允许导入所有组件 - ### Rem 适配 Vant 中的样式默认使用`px`作为单位,如果需要使用`rem`单位,推荐使用以下两个工具 From 6fbdc4ffc39fd70267e4dbdc1d3b0a0face710b0 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 26 Apr 2019 09:25:57 +0800 Subject: [PATCH 12/14] [bugfix] AddressList: not trigger select event when click radio icon (#3214) --- packages/address-list/Item.tsx | 20 +++++++++++++------- packages/address-list/test/index.spec.js | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/packages/address-list/Item.tsx b/packages/address-list/Item.tsx index 80219b6e7..a3ddeab34 100644 --- a/packages/address-list/Item.tsx +++ b/packages/address-list/Item.tsx @@ -36,6 +36,12 @@ function AddressItem( ) { const { disabled, switchable } = props; + const onSelect = () => { + if (props.switchable) { + emit(ctx, 'select'); + } + }; + const renderRightIcon = () => ( {data.address}
]; - return props.switchable ? {Info} : Info; - }; - - const onSelect = () => { - if (props.switchable) { - emit(ctx, 'select'); - } + return props.switchable ? ( + + {Info} + + ) : ( + Info + ); }; return ( diff --git a/packages/address-list/test/index.spec.js b/packages/address-list/test/index.spec.js index f6cee8ffc..bec569b01 100644 --- a/packages/address-list/test/index.spec.js +++ b/packages/address-list/test/index.spec.js @@ -26,3 +26,21 @@ test('unswitchable', () => { expect(wrapper).toMatchSnapshot(); }); + +test('select event', () => { + const onSelect = jest.fn(); + const wrapper = mount(AddressList, { + propsData: { + list + }, + context: { + on: { + select: onSelect + } + } + }); + + wrapper.find('.van-radio__icon').trigger('click'); + + expect(onSelect).toHaveBeenCalled(); +}); From 5ae6d3aabcb0396fcf8c366440223410109401ef Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 26 Apr 2019 11:15:33 +0800 Subject: [PATCH 13/14] [bugfix] ContactList: not trigger select event when click radio icon (#3218) --- .../test/__snapshots__/index.spec.js.snap | 12 +++- packages/contact-card/test/index.spec.js | 24 ++++++- packages/contact-list/index.tsx | 62 ++++++++++--------- packages/mixins/checkbox.js | 7 +-- 4 files changed, 69 insertions(+), 36 deletions(-) diff --git a/packages/contact-card/test/__snapshots__/index.spec.js.snap b/packages/contact-card/test/__snapshots__/index.spec.js.snap index dba0ecbae..bcae6ce42 100644 --- a/packages/contact-card/test/__snapshots__/index.spec.js.snap +++ b/packages/contact-card/test/__snapshots__/index.spec.js.snap @@ -2,6 +2,16 @@ exports[`ContactList render 1`] = `
-
+
+
+
+
+
+
test,123123213
+
+
+ +
+
`; diff --git a/packages/contact-card/test/index.spec.js b/packages/contact-card/test/index.spec.js index 158e249ef..81802cd43 100644 --- a/packages/contact-card/test/index.spec.js +++ b/packages/contact-card/test/index.spec.js @@ -43,9 +43,31 @@ describe('ContactCard', () => { describe('ContactList', () => { test('render', () => { - const wrapper = mount(ContactList); + const wrapper = mount(ContactList, { + propsData: { + list: [contactInfo] + } + }); expect(wrapper).toMatchSnapshot(); }); + + test('select event', () => { + const onSelect = jest.fn(); + const wrapper = mount(ContactList, { + propsData: { + list: [contactInfo] + }, + context: { + on: { + select: onSelect + } + } + }); + + wrapper.find('.van-radio__icon').trigger('click'); + + expect(onSelect).toHaveBeenCalled(); + }); }); describe('ContactEdit', () => { diff --git a/packages/contact-list/index.tsx b/packages/contact-list/index.tsx index 5f57e71cd..cae9b2e73 100644 --- a/packages/contact-list/index.tsx +++ b/packages/contact-list/index.tsx @@ -30,35 +30,39 @@ function ContactList( slots: DefaultSlots, ctx: RenderContext ) { - const List = props.list.map((item, index) => ( - ( - -
{`${item.name},${item.tel}`}
-
- ), - 'right-icon': () => ( - { - event.stopPropagation(); - emit(ctx, 'edit', item, index); - }} - /> - ) - }} - onClick={() => { - emit(ctx, 'input', item.id); - emit(ctx, 'select', item, index); - }} - /> - )); + const List = props.list.map((item, index) => { + const onClick = () => { + emit(ctx, 'input', item.id); + emit(ctx, 'select', item, index); + }; + + return ( + ( + +
{`${item.name},${item.tel}`}
+
+ ), + 'right-icon': () => ( + { + event.stopPropagation(); + emit(ctx, 'edit', item, index); + }} + /> + ) + }} + onClick={onClick} + /> + ); + }); return (
diff --git a/packages/mixins/checkbox.js b/packages/mixins/checkbox.js index d2e136a31..6d8ea11a6 100644 --- a/packages/mixins/checkbox.js +++ b/packages/mixins/checkbox.js @@ -60,16 +60,13 @@ export const CheckboxMixin = (parent, bem) => ({
{ + event.stopPropagation(); this.$emit('click', event); }} >
{ - event.stopPropagation(); - this.onClickIcon(); - this.$emit('click', event); - }} + onClick={this.onClickIcon} > {CheckIcon}
From 377060e11ab97deb08eb252f334dd96140c814af Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 26 Apr 2019 11:36:25 +0800 Subject: [PATCH 14/14] [bugfix] Area: change event values incorrect (#3219) --- packages/area/index.js | 2 +- packages/area/test/index.spec.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/area/index.js b/packages/area/index.js index b2848f545..0829b466a 100644 --- a/packages/area/index.js +++ b/packages/area/index.js @@ -110,7 +110,7 @@ export default sfc({ onChange(picker, values, index) { this.code = values[index].code; this.setValues(); - this.$emit('change', picker, values, index); + this.$emit('change', picker, picker.getValues(), index); }, setValues() { diff --git a/packages/area/test/index.spec.js b/packages/area/test/index.spec.js index b56fde89a..052f4b8d8 100644 --- a/packages/area/test/index.spec.js +++ b/packages/area/test/index.spec.js @@ -8,6 +8,12 @@ const firstOption = [ { code: '110101', name: '东城区' } ]; +const secondOption = [ + { code: '120000', name: '天津市' }, + { code: '120100', name: '天津市' }, + { code: '120101', name: '和平区' } +]; + test('confirm & cancel event', async () => { const onConfirm = jest.fn(); const onCancel = jest.fn(); @@ -50,9 +56,13 @@ test('watch areaList & code', async () => { }); test('change option', () => { + const onChange = jest.fn(); const wrapper = mount(Area, { propsData: { areaList + }, + listeners: { + change: onChange } }); @@ -62,6 +72,7 @@ test('change option', () => { expect(wrapper).toMatchSnapshot(); triggerDrag(columns.at(2), 0, -100); expect(wrapper).toMatchSnapshot(); + expect(onChange.mock.calls[0][1]).toEqual(secondOption); }); test('getValues method', () => {