diff --git a/app.json b/app.json
index 7f1dbd7e..eb026ef7 100644
--- a/app.json
+++ b/app.json
@@ -8,6 +8,7 @@
"pages/loadmore/index",
"pages/panel/index",
"pages/tab/index",
+ "pages/quantity/index",
"pages/toptips/index",
"pages/steps/index"
],
diff --git a/pages/dashboard/index.wxml b/pages/dashboard/index.wxml
index 96d9705a..75747d91 100644
--- a/pages/dashboard/index.wxml
+++ b/pages/dashboard/index.wxml
@@ -29,6 +29,10 @@
Label
+
+ Quantity
+
+
Toptips
diff --git a/pages/quantity/index.js b/pages/quantity/index.js
new file mode 100644
index 00000000..93fa3fcb
--- /dev/null
+++ b/pages/quantity/index.js
@@ -0,0 +1,25 @@
+var ZUI = require('../../zui/index');
+
+Page(Object.assign({}, ZUI.Quantity, {
+ data: {
+ quantity1: {
+ quantity: 1,
+ min: 1,
+ max: 20
+ },
+ quantity2: {
+ quantity: 1,
+ min: 1,
+ max: 1
+ }
+ },
+
+ handleZuiQuantityChange(e) {
+ var componentId = e.componentId;
+ var quantity = e.quantity;
+
+ this.setData({
+ [`${componentId}.quantity`]: quantity
+ });
+ }
+}));
diff --git a/pages/quantity/index.wxml b/pages/quantity/index.wxml
new file mode 100644
index 00000000..2a680321
--- /dev/null
+++ b/pages/quantity/index.wxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/tab/index.js b/pages/tab/index.js
index 2d08749c..925f8d72 100644
--- a/pages/tab/index.js
+++ b/pages/tab/index.js
@@ -48,7 +48,6 @@ Page(Object.assign({}, ZUI.Tab, {
},
handleZuiTabChange(e) {
- console.info('[ZUI:Tab:Change]', e);
var componentId = e.componentId;
var selectedId = e.selectedId;
diff --git a/zui/index.js b/zui/index.js
index 1ac441de..02c92dc0 100644
--- a/zui/index.js
+++ b/zui/index.js
@@ -1 +1,2 @@
exports.Tab = require('./tab/index');
+exports.Quantity = require('./quantity/index');
diff --git a/zui/quantity/index.js b/zui/quantity/index.js
new file mode 100644
index 00000000..592285a4
--- /dev/null
+++ b/zui/quantity/index.js
@@ -0,0 +1,58 @@
+function handle(e, num) {
+ var dataset = e.currentTarget.dataset;
+ var componentId = dataset.componentId;
+ var disabled = dataset.disabled;
+ var quantity = +dataset.quantity;
+
+ if (disabled == 'true') return null;
+
+ callback.call(this, componentId, quantity + num);
+}
+
+function callback(componentId, quantity) {
+ if (this.handleZuiQuantityChange) {
+ quantity = +quantity;
+ var e = { componentId, quantity };
+ console.info('[ZUI:Quantity:Change]', e);
+ this.handleZuiQuantityChange(e);
+ }
+}
+
+var ComponentQuantity = {
+ _handleZuiQuantityMinus(e) {
+ handle.call(this, e, -1);
+ },
+
+ _handleZuiQuantityPlus(e) {
+ handle.call(this, e, +1);
+ },
+
+ _handleZuiQuantityBlur(e) {
+ var dataset = e.currentTarget.dataset;
+ var componentId = dataset.componentId;
+ var max = +dataset.max;
+ var min = +dataset.min;
+ var value = e.detail.value;
+
+ if (!value) {
+ setTimeout(() => {
+ callback.call(this, componentId, min);
+ }, 16);
+ callback.call(this, componentId, value);
+ return '' + value;
+ }
+
+ value = +value;
+ if (value > max) {
+ value = max;
+ } else if (value < min) {
+ value = min;
+ }
+
+ callback.call(this, componentId, value);
+
+ return '' + value;
+ }
+};
+
+module.exports = ComponentQuantity;
diff --git a/zui/quantity/index.wxml b/zui/quantity/index.wxml
new file mode 100644
index 00000000..dc4f4c59
--- /dev/null
+++ b/zui/quantity/index.wxml
@@ -0,0 +1,28 @@
+
+
+ -
+
+ +
+
+
diff --git a/zui/tab/index.js b/zui/tab/index.js
index 1482339c..dc4d70b8 100644
--- a/zui/tab/index.js
+++ b/zui/tab/index.js
@@ -5,6 +5,10 @@ var Tab = {
var selectedId = dataset.itemId;
if (this.handleZuiTabChange) {
+ console.info('[ZUI:Tab:Change]', {
+ componentId,
+ selectedId
+ });
this.handleZuiTabChange({
componentId,
selectedId