From d2ce5bf6063ba278011b5347185e740ef71c7082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Fri, 22 Sep 2017 15:07:03 +0800 Subject: [PATCH 01/18] add Address edit component --- docs/examples-docs/address-edit.md | 96 +++++++++++ docs/src/doc.config.js | 4 + packages/address-edit/Detail.vue | 104 +++++++++++ packages/address-edit/index.vue | 229 +++++++++++++++++++++++++ packages/index.js | 3 + packages/vant-css/src/address-edit.css | 60 +++++++ packages/vant-css/src/index.css | 1 + 7 files changed, 497 insertions(+) create mode 100644 docs/examples-docs/address-edit.md create mode 100644 packages/address-edit/Detail.vue create mode 100644 packages/address-edit/index.vue create mode 100644 packages/vant-css/src/address-edit.css diff --git a/docs/examples-docs/address-edit.md b/docs/examples-docs/address-edit.md new file mode 100644 index 000000000..a5786cd0d --- /dev/null +++ b/docs/examples-docs/address-edit.md @@ -0,0 +1,96 @@ + + +## AddressEdit 地址编辑 + +### 使用指南 +``` javascript +import { AddressEdit } from 'vant'; + +Vue.component(AddressEdit.name, AddressEdit); +``` + +### 代码演示 + +#### 基础用法 + +:::demo 基础用法 +```html + +``` + +```javascript +export default { + +} +``` +::: + +### API + +| 参数 | 说明 | 类型 | 默认值 | 可选值 | +|-----------|-----------|-----------|-------------|-------------| +| v-model | 当前选中地址的 id | String | - | - | +| list | 地址列表 | Array | `[]` | - | +| addButtonText | 底部按钮文字 | String | `新增收货地址` | - | + +### Event + +| 事件名 | 说明 | 参数 | +|-----------|-----------|-----------| +| add | 点击新增按钮时触发 | - | +| edit | 点击编辑按钮时触发 | item: 当前地址对象,index: 索引 | +| change | 切换选中的地址时触发 | item: 当前地址对象,index: 索引 | + +### 数据格式 +#### 地址列表字段说明 +| key | 说明 | 类型 | +|-----------|-----------|-----------| +| id | 每条地址的唯一标识 | `String | Number` | +| name | 收货人姓名 | `String` | +| tel | 收货人手机号 | `String` | +| address | 收货地址 | `String` | diff --git a/docs/src/doc.config.js b/docs/src/doc.config.js index 619899742..1302676f1 100644 --- a/docs/src/doc.config.js +++ b/docs/src/doc.config.js @@ -214,6 +214,10 @@ module.exports = { { "groupName": "业务组件", "list": [ + { + "path": "/address-edit", + "title": "AddressEdit 地址编辑" + }, { "path": "/address-list", "title": "AddressList 地址列表" diff --git a/packages/address-edit/Detail.vue b/packages/address-edit/Detail.vue new file mode 100644 index 000000000..611409ee7 --- /dev/null +++ b/packages/address-edit/Detail.vue @@ -0,0 +1,104 @@ + + + diff --git a/packages/address-edit/index.vue b/packages/address-edit/index.vue new file mode 100644 index 000000000..24c8c1bfd --- /dev/null +++ b/packages/address-edit/index.vue @@ -0,0 +1,229 @@ + + + diff --git a/packages/index.js b/packages/index.js index 8b96fd8b8..83a94d62a 100644 --- a/packages/index.js +++ b/packages/index.js @@ -1,4 +1,5 @@ import Actionsheet from './actionsheet'; +import AddressEdit from './address-edit'; import AddressList from './address-list'; import Area from './area'; import Badge from './badge'; @@ -56,6 +57,7 @@ import Waterfall from './waterfall'; const version = '0.9.7'; const components = [ Actionsheet, + AddressEdit, AddressList, Area, Badge, @@ -123,6 +125,7 @@ export { install, version, Actionsheet, + AddressEdit, AddressList, Area, Badge, diff --git a/packages/vant-css/src/address-edit.css b/packages/vant-css/src/address-edit.css new file mode 100644 index 000000000..f7dce207c --- /dev/null +++ b/packages/vant-css/src/address-edit.css @@ -0,0 +1,60 @@ +@import './common/var.css'; + +.van-address-edit { + &__buttons { + padding: 20px 10px; + } + + &__area { + .van-cell__title { + width: 90px; + } + + .van-cell__value { + text-align: left; + + span { + margin-right: 20px; + } + } + } + + .van-button { + margin-bottom: 10px; + } + + &-detail { + &__finish-edit { + color: $blue; + } + + &__suggest-list { + margin-left: -15px; + + &::after { + border-top-width: 0; + } + } + + &__location { + float: left; + font-size: 18px; + color: #666; + } + + &__item-info { + margin-left: 26px; + line-height: 1.6; + } + + &__title { + font-size: 14px; + margin-bottom: 4px; + } + + &__subtitle { + font-size: 12px; + color: #666; + } + } +} diff --git a/packages/vant-css/src/index.css b/packages/vant-css/src/index.css index 7a008ee7f..cee46fcaa 100644 --- a/packages/vant-css/src/index.css +++ b/packages/vant-css/src/index.css @@ -50,6 +50,7 @@ @import './tree-select.css'; /* business components */ +@import './address-edit.css'; @import './address-list.css'; @import './coupon-list.css'; @import './goods-action.css'; From be6331ad2150f6e413a3b976fda1d1e90ddba522 Mon Sep 17 00:00:00 2001 From: wny Date: Tue, 26 Sep 2017 07:11:59 -0500 Subject: [PATCH 02/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E7=A6=81=E7=94=A8stepper=20input=E5=8A=9F=E8=83=BD=20(#146)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: sku message key * fix: 改用goods_id当key * fix: 漏改一处 * feat: 增加单独禁用stepper input功能 * fix: update doc * fix: rename spec file --- docs/examples-docs/sku.md | 7 +++++-- docs/examples-docs/stepper.md | 3 ++- packages/sku/components/SkuStepper.vue | 13 +++++++++++- packages/sku/containers/SkuContainer.vue | 2 ++ packages/stepper/index.vue | 14 +++++++++---- .../specs/{stepper.js => stepper.spec.js} | 20 ++++++++++++++++++- .../{submit-bar.js => submit-bar.spec.js} | 0 7 files changed, 50 insertions(+), 9 deletions(-) rename test/unit/specs/{stepper.js => stepper.spec.js} (85%) rename test/unit/specs/{submit-bar.js => submit-bar.spec.js} (100%) diff --git a/docs/examples-docs/sku.md b/docs/examples-docs/sku.md index e01db13ab..2eee8971f 100644 --- a/docs/examples-docs/sku.md +++ b/docs/examples-docs/sku.md @@ -16,6 +16,8 @@ export default { goodsId: data.goods_id, quota: data.quota, quotaUsed: data.quota_used, + disableStepperInput: true, + resetStepperOnHide: true, initialSku: { s1: '30349', s2: '1193' @@ -62,10 +64,10 @@ Vue.component(Sku.name, Sku); :goods="goods" :goods-id="goodsId" :hide-stock="sku.hide_stock" - :show-add-cart-btn="true" :quota="quota" :quota-used="quotaUsed" - :reset-stepper-on-hide="true" + :reset-stepper-on-hide="resetStepperOnHide" + :disable-stepper-input="disableStepperInput" @buy-clicked="handleBuyClicked" @add-cart="handleAddCartClicked" > @@ -130,6 +132,7 @@ Vue.component(Sku.name, Sku); | quota | 限购数(0表示不限购) | Number | 0 | 否 | | quotaUsed | 已经购买过的数量 | Number | 0 | 否 | | resetStepperOnHide | 窗口隐藏时重置选择的商品数量 | Boolean | false | 否 | +| disableStepperInput | 是否禁用sku中stepper的input框 | Boolean | false | 否 | | stepperTitle | 数量选择组件左侧文案 | String | '购买数量' | 否 | | add-cart | 点击添加购物车回调 | Function(skuData: Object) | - | 否 | | buy-clicked | 点击购买回调 | Function(skuData: Object) | - | 否 | diff --git a/docs/examples-docs/stepper.md b/docs/examples-docs/stepper.md index ce48e7804..19cee1d97 100644 --- a/docs/examples-docs/stepper.md +++ b/docs/examples-docs/stepper.md @@ -69,7 +69,8 @@ Vue.component(Stepper.name, Stepper); | max | 最大值 | `String | Number` | - | - | | defaultValue | 默认值 | `String | Number` | `1` | - | | step | 步数 | `String | Number` | `1` | - | -| disabled | 是否禁用 | `Boolean` | `false` | - | +| disabled | 是否禁用 | `Boolean` | `false` | - | +| disableInput | 是否禁用input框 | `Boolean` | `false` | - | ### Event diff --git a/packages/sku/components/SkuStepper.vue b/packages/sku/components/SkuStepper.vue index 892c235f9..c15be326f 100644 --- a/packages/sku/components/SkuStepper.vue +++ b/packages/sku/components/SkuStepper.vue @@ -2,7 +2,14 @@
{{ stepperTitle }}:
- + +
剩余{{ stock }}件
每人限购{{ quota }}件
@@ -34,6 +41,10 @@ export default { type: Boolean, default: false }, + disableStepperInput: { + type: Boolean, + default: false + }, stepperTitle: { type: String, default: DEFAULT_BUY_TEXT diff --git a/packages/sku/containers/SkuContainer.vue b/packages/sku/containers/SkuContainer.vue index 2d36faa0a..b79a0c3f2 100644 --- a/packages/sku/containers/SkuContainer.vue +++ b/packages/sku/containers/SkuContainer.vue @@ -45,6 +45,7 @@ :skuStockNum="sku.stock_num" :quota="quota" :quotaUsed="quotaUsed" + :disableStepperInput="disableStepperInput" :hideStock="hideStock"> @@ -133,6 +134,7 @@ export default { default: 200 }, resetStepperOnHide: Boolean, + disableStepperInput: Boolean, messagePlaceholderMap: { type: Object, default() { diff --git a/packages/stepper/index.vue b/packages/stepper/index.vue index adc61b2e4..cf8bb9a78 100644 --- a/packages/stepper/index.vue +++ b/packages/stepper/index.vue @@ -8,11 +8,11 @@ }"> + :disabled="disabled || disableInput">