diff --git a/docs/markdown/contribution.zh-CN.md b/docs/markdown/contribution.zh-CN.md index 326336137..6ec67e4c9 100644 --- a/docs/markdown/contribution.zh-CN.md +++ b/docs/markdown/contribution.zh-CN.md @@ -15,6 +15,32 @@ - 当新增组件或者修改原有组件时,记得增加或者修改测试代码,保证代码的稳定 - 在 PR 中请添加合适的描述,并关联相关的 Issue +### Pull Request 流程 + +1. fork 主仓库,如果已经 fork 过,请同步主仓库的最新代码 +2. 基于 fork 后仓库的 dev 分支新建一个分支,比如`feature/button_color` +3. 在新分支上进行开发,开发完成后,提 Pull Request 到主仓库的 dev 分支 +4. Pull Request 会在 Review 通过后被合并到主仓库 +5. 等待 Vant 发布版本,一般是每周一次 + +### 同步教程 + +提 Pull Request 前,请依照下面的流程同步主仓库的最新代码 + +```bash +# 添加主仓库到 remote,作为 fork 后仓库的上游仓库 +git remote add upstream https://github.com/youzan/vant.git + +# 拉取主仓库最新代码 +git fetch upstream + +# 切换至 dev 分支 +git checkout dev + +# 合并主仓库代码 +git merge upstream/dev +``` + ### 初始化项目 ```bash diff --git a/package.json b/package.json index eb56ba36a..a068abae9 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,8 @@ "@babel/runtime": "^7.4.4", "@vant/icons": "1.1.7", "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3", - "vue-lazyload": "1.2.3" + "vue-lazyload": "1.2.3", + "webpack-dev-server": "^3.3.1" }, "peerDependencies": { "vue": ">= 2.5.0" diff --git a/packages/checkbox/index.js b/packages/checkbox/index.js index 8eaad0f1d..0589fc450 100644 --- a/packages/checkbox/index.js +++ b/packages/checkbox/index.js @@ -30,7 +30,15 @@ export default sfc({ methods: { toggle() { - this.checked = !this.checked; + const checked = !this.checked; + + // When toggle method is called multiple times at the same time, + // only the last call is valid. + // This is a hack for usage inside Cell. + clearTimeout(this.toggleTask); + this.toggleTask = setTimeout(() => { + this.checked = checked; + }); }, onClickIcon() { diff --git a/packages/checkbox/test/index.spec.js b/packages/checkbox/test/index.spec.js index 5c2572b60..5920d5899 100644 --- a/packages/checkbox/test/index.spec.js +++ b/packages/checkbox/test/index.spec.js @@ -1,8 +1,8 @@ import Checkbox from '..'; import CheckboxGroup from '../../checkbox-group'; -import { mount } from '../../../test/utils'; +import { mount, later } from '../../../test/utils'; -test('switch checkbox', () => { +test('switch checkbox', async () => { const wrapper = mount(Checkbox); wrapper.vm.$on('input', value => { @@ -11,8 +11,9 @@ test('switch checkbox', () => { const icon = wrapper.find('.van-checkbox__icon'); icon.trigger('click'); + await later(); icon.trigger('click'); - + await later(); expect(wrapper.emitted('input')).toEqual([[true], [false]]); expect(wrapper.emitted('change')).toEqual([[true], [false]]); }); @@ -42,7 +43,7 @@ test('label disabled', () => { expect(wrapper.emitted('input')).toBeFalsy(); }); -test('checkbox group', () => { +test('checkbox group', async () => { const wrapper = mount({ template: ` @@ -63,11 +64,15 @@ test('checkbox group', () => { const icons = wrapper.findAll('.van-checkbox__icon'); icons.at(0).trigger('click'); + await later(); icons.at(1).trigger('click'); + await later(); icons.at(2).trigger('click'); expect(wrapper.vm.result).toEqual(['a', 'b']); + await later(); icons.at(0).trigger('click'); + await later(); expect(wrapper.vm.result).toEqual(['b']); }); diff --git a/packages/mixins/checkbox.js b/packages/mixins/checkbox.js index a9412c67f..38eb353fd 100644 --- a/packages/mixins/checkbox.js +++ b/packages/mixins/checkbox.js @@ -56,7 +56,6 @@ export const CheckboxMixin = (parent, bem) => ({
{ - event.stopPropagation(); this.$emit('click', event); }} > diff --git a/packages/pull-refresh/index.js b/packages/pull-refresh/index.js index 90d07ca89..9baab8cbd 100644 --- a/packages/pull-refresh/index.js +++ b/packages/pull-refresh/index.js @@ -144,7 +144,7 @@ export default sfc({ const text = this[`${status}Text`] || t(status); const style = { transition: `${this.duration}ms`, - transform: `translate3d(0,${this.height}px, 0)` + transform: this.height ? `translate3d(0,${this.height}px, 0)` : '' }; const Status = this.slots(status) || [ diff --git a/packages/pull-refresh/test/__snapshots__/demo.spec.js.snap b/packages/pull-refresh/test/__snapshots__/demo.spec.js.snap index d2b343f62..b83f947f5 100644 --- a/packages/pull-refresh/test/__snapshots__/demo.spec.js.snap +++ b/packages/pull-refresh/test/__snapshots__/demo.spec.js.snap @@ -3,7 +3,7 @@ exports[`renders demo correctly 1`] = `
-
+

刷新次数: 0

diff --git a/packages/pull-refresh/test/__snapshots__/index.spec.js.snap b/packages/pull-refresh/test/__snapshots__/index.spec.js.snap index 42f860fa5..c2a9e28c5 100644 --- a/packages/pull-refresh/test/__snapshots__/index.spec.js.snap +++ b/packages/pull-refresh/test/__snapshots__/index.spec.js.snap @@ -46,7 +46,7 @@ exports[`change head content when pulling down 4`] = ` exports[`change head content when pulling down 5`] = `
-
+
@@ -54,7 +54,7 @@ exports[`change head content when pulling down 5`] = ` exports[`not in page top 1`] = `
-
+
diff --git a/yarn.lock b/yarn.lock index 1de631553..e6b689b02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5218,7 +5218,7 @@ jest-changed-files@^24.8.0: execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.8.0: +jest-cli@^24.7.1: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==