You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/04/10 06:21:10 UTC

[1/9] incubator-weex git commit: * [example] add demo for list & scroller with onScroll event

Repository: incubator-weex
Updated Branches:
  refs/heads/0.12-dev 219cd30a5 -> d882c8bcc


* [example] add demo for list & scroller with onScroll event


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/7f606216
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/7f606216
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/7f606216

Branch: refs/heads/0.12-dev
Commit: 7f606216b1b6239749c56100d65f1d067ff9e9fd
Parents: d81b16a
Author: moxun.ljf <mo...@alibaba-inc.com>
Authored: Thu Mar 23 13:45:38 2017 +0800
Committer: moxun.ljf <mo...@alibaba-inc.com>
Committed: Thu Mar 23 13:45:38 2017 +0800

----------------------------------------------------------------------
 examples/component/list/list-basic.we | 75 +++++++++++++++++++++---------
 examples/component/scroller-demo.we   | 64 +++++++++++++++++--------
 2 files changed, 97 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7f606216/examples/component/list/list-basic.we
----------------------------------------------------------------------
diff --git a/examples/component/list/list-basic.we b/examples/component/list/list-basic.we
index f7e0efc..37f9c25 100644
--- a/examples/component/list/list-basic.we
+++ b/examples/component/list/list-basic.we
@@ -1,8 +1,15 @@
 <template>
   <div>
-    <list class="list">
-      <refresh  class = "refresh-view" display="{{refresh_display}}" onrefresh="onrefresh">
-        <text if="{{(refresh_display==='hide')}}"> \u2193 pull to refresh </text>
+    <div style="background-color: #eeeeee">
+      <text class="count">Appear items:{{appearMin}} - {{appearMax}}</text>
+      <div style="height: 20px;width: 750px;border-color: black;border-width: 2px;justify-content: center">
+        <div style="height: 14px;width: {{progress_width}};margin-left:{{progress}};background-color: gray"></div>
+      </div>
+      <text style="width: 750px">{{event}}</text>
+    </div>
+    <list id="list" class="list" onscroll="{{onScroll}}" offset-accuracy="5">
+      <refresh class="refresh-view" display="{{refresh_display}}" onrefresh="onrefresh">
+        <text if="{{(refresh_display==='hide')}}"> \u2193 pull to refresh</text>
         <loading-indicator class="indicator"></loading-indicator>
       </refresh>
       <cell onappear="onappear" ondisappear="ondisappear" class="row" repeat="{{rows}}" index="{{$index}}">
@@ -11,26 +18,27 @@
         </div>
       </cell>
       <loading class="loading-view" display="{{loading_display}}" onloading="onloading">
-        <text if="{{(loading_display==='hide')}}">\u2191 Loadmore </text>
+        <text if="{{(loading_display==='hide')}}">\u2191 Loadmore</text>
         <loading-indicator class="indicator"></loading-indicator>
       </loading>
     </list>
-    <text class="count">Appear items:{{appearMin}} - {{appearMax}}</text>
   </div>
 </template>
 
 <style>
   .list {
-    height:850
+
   }
+
   .count {
     font-size: 48;
-    margin:10;
+    margin: 10;
   }
+
   .indicator {
     height: 40;
     width: 40;
-    color:#45b5f0;
+    color: #45b5f0;
   }
 
   .refresh-arrow {
@@ -41,16 +49,18 @@
   .row {
     width: 750;
   }
-  
+
   .item {
     justify-content: center;
     border-bottom-width: 2;
     border-bottom-color: #c0c0c0;
     height: 100;
-    padding:20;
+    padding: 20;
   }
+
   .item-title {
   }
+
   .refresh-view {
     width: 750;
     height: 100;
@@ -62,6 +72,7 @@
     -webkit-box-align: center;
     align-items: center;
   }
+
   .loading-view {
     width: 750;
     height: 100;
@@ -73,6 +84,7 @@
     -webkit-box-align: center;
     align-items: center;
   }
+
   .indicator {
     height: 60;
     width: 60;
@@ -81,7 +93,8 @@
 </style>
 
 <script>
-
+  var dom = weex.requireModule('dom');
+  var isFirst = true;
   module.exports = {
     methods: {
       onappear: function (e) {
@@ -91,7 +104,7 @@
         appearIds.push(appearId);
         this.getMinAndMaxIds(appearIds);
       },
-      ondisappear:function (e) {
+      ondisappear: function (e) {
         var disAppearId = this.rows[e.target.attr.index].id;
         nativeLog('+++++', disAppearId);
         var appearIds = this.appearIds;
@@ -101,15 +114,15 @@
         }
         this.getMinAndMaxIds(appearIds);
       },
-      getMinAndMaxIds:function (appearIds) {
-        appearIds.sort(function(a, b) {
+      getMinAndMaxIds: function (appearIds) {
+        appearIds.sort(function (a, b) {
           return a - b;
         });
         this.appearIds = appearIds;
         this.appearMax = appearIds[appearIds.length - 1];
         this.appearMin = appearIds[0];
       },
-      onrefresh: function(e) {
+      onrefresh: function (e) {
         var self = this;
         self.refresh_display = 'show';
         self.$call('modal', 'toast', {
@@ -121,7 +134,7 @@
         }, 3000);
       },
 
-      onloading: function() {
+      onloading: function () {
         var self = this;
         self.loading_display = 'show';
         self.$call('modal', 'toast', {
@@ -130,19 +143,37 @@
 
         this.$call('timer', 'setTimeout', function () {
           if (self.rows.length <= 33) {
-              self.rows.push(self.moreRows[self.rows.length - 29]);
-            }
+            self.rows.push(self.moreRows[self.rows.length - 29]);
+          }
           self.loading_display = 'hide';
         }, 3000);
       },
+
+      onScroll: function (e) {
+        var self = this;
+        this.event = 'contentOffset: ' + JSON.stringify(e.contentOffset) + '\ncontentSize: ' + JSON.stringify(e.contentSize);
+        dom.getComponentRect(this.$el('list'), function (ret) {
+          if (e.contentOffset.x == 0 && e.contentOffset.y == 0 && isFirst) {
+            isFirst = false;
+            return;
+          }
+          var listHeight = ret.size.height;
+          self.progress_width = (listHeight / e.contentSize.height) * 750;
+          var offsetY = e.contentOffset.y > 0 ? 0 : Math.abs(e.contentOffset.y);
+          self.progress = (offsetY / (e.contentSize.height - listHeight)) * (750 - self.progress_width);
+        });
+      }
     },
     data: {
+      progress_width: 0,
+      progress:0,
+      event:'-',
       refresh_display: 'hide',
       loading_display: 'hide',
-      appearMin:1,
-      appearMax:1,
-      appearIds:[],
-      rows:[
+      appearMin: 1,
+      appearMax: 1,
+      appearIds: [],
+      rows: [
         {id: 1},
         {id: 2},
         {id: 3},

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7f606216/examples/component/scroller-demo.we
----------------------------------------------------------------------
diff --git a/examples/component/scroller-demo.we b/examples/component/scroller-demo.we
index 750fd78..a484bb0 100644
--- a/examples/component/scroller-demo.we
+++ b/examples/component/scroller-demo.we
@@ -1,25 +1,34 @@
 <template>
-  <scroller class="list" append="tree">
+  <div>
+    <div style="height: 20px;width: 750px;border-color: black;border-width: 2px;justify-content: center">
+      <div style="height: 14px;width: {{progress_width}};margin-left:{{progress}};background-color: gray"></div>
+    </div>
+    <text style="width: 750px">{{event}}</text>
 
-    <refresh class="refresh-view" display="{{refresh_display}}" onrefresh="onrefresh">
-      <loading-indicator class="indicator" ></loading-indicator>
-      <text class="refresh-arrow" style="text-align: center; color:rgb(238, 162, 54)" if="{{(refresh_display==='hide')}}">Pull To Refresh</text>
-    </refresh>
+    <scroller id="scroller" onscroll="{{onScroll}}">
 
-    <div class="section" repeat="{{sections}}">
-      <div class="header">
-        <text class="header-title">{{title}}</text>
-      </div>
-      <div class="item" repeat="{{items}}">
-        <text class="item-title">row {{id}}</text>
+      <refresh class="refresh-view" display="{{refresh_display}}" onrefresh="onrefresh">
+        <loading-indicator class="indicator"></loading-indicator>
+        <text class="refresh-arrow" style="text-align: center; color:rgb(238, 162, 54)"
+              if="{{(refresh_display==='hide')}}">Pull To Refresh
+        </text>
+      </refresh>
+
+      <div class="section" repeat="{{sections}}">
+        <div class="header">
+          <text class="header-title">{{title}}</text>
+        </div>
+        <div class="item" repeat="{{items}}">
+          <text class="item-title">row {{id}}</text>
+        </div>
       </div>
-    </div>
 
-    <loading class="loading-view" display="{{loading_display}}" onloading="onloading">
-      <loading-indicator class="indicator" ></loading-indicator>
-    </loading>
+      <loading class="loading-view" display="{{loading_display}}" onloading="onloading">
+        <loading-indicator class="indicator"></loading-indicator>
+      </loading>
 
-  </scroller>
+    </scroller>
+  </div>
 </template>
 
 <style>
@@ -85,33 +94,48 @@
 
 <script>
   require('weex-components');
+  var dom = weex.requireModule('dom');
   module.exports = {
     methods: {
-      onrefresh: function(e) {
+      onrefresh: function (e) {
         var self = this;
         self.refresh_display = 'show';
         self.$call('modal', 'toast', {
           'message': 'onrefresh'
         });
-        this.$call('timer', 'setTimeout', function() {
+        this.$call('timer', 'setTimeout', function () {
           self.refresh_display = 'hide';
         }, 3000);
       },
-      onloading: function(e) {
+      onloading: function (e) {
         var self = this;
         self.loading_display = 'show';
         self.$call('modal', 'toast', {
           'message': 'onloading'
         });
-        this.$call('timer', 'setTimeout', function() {
+        this.$call('timer', 'setTimeout', function () {
           if (self.sections.length <= 6) {
             self.sections.push(self.moreSections[self.sections.length - 2]);
           }
           self.loading_display = 'hide';
         }, 3000);
+      },
+      onScroll: function (e) {
+        var self = this;
+        this.event = 'contentOffset: ' + JSON.stringify(e.contentOffset) + '\ncontentSize: ' + JSON.stringify(e.contentSize);
+        dom.getComponentRect(this.$el('scroller'), function (ret) {
+          console.log(ret.size.height);
+          var listHeight = ret.size.height;
+          self.progress_width = (listHeight / e.contentSize.height) * 750;
+          var offsetY = e.contentOffset.y > 0 ? 0 : Math.abs(e.contentOffset.y);
+          self.progress = (offsetY / (e.contentSize.height - listHeight)) * (750 - self.progress_width);
+        });
       }
     },
     data: {
+      event: '-',
+      progress_width: 0,
+      progress:0,
       refresh_display: 'hide',
       loading_display: 'hide',
       sections: [


[5/9] incubator-weex git commit: Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

Posted by so...@apache.org.
Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9fe32be6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9fe32be6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9fe32be6

Branch: refs/heads/0.12-dev
Commit: 9fe32be6fefc32de38b3f2aa4ad1a49011886109
Parents: 8f62317 288b6e1
Author: moxun.ljf <fu...@foxmail.com>
Authored: Wed Apr 5 11:39:06 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Wed Apr 5 11:39:06 2017 +0800

----------------------------------------------------------------------
 .eslintrc                                       |   16 +-
 .flowconfig                                     |   16 +
 README.md                                       |   50 +-
 android/commons/build.gradle                    |    3 +-
 .../weex/commons/AbstractWeexActivity.java      |   24 +
 android/playground/app/build.gradle             |    3 +-
 .../playground/app/src/main/assets/animation.js |   11 +-
 .../app/src/main/assets/component/a-demo.js     |   11 +-
 .../src/main/assets/component/countdown-demo.js |   11 +-
 .../app/src/main/assets/component/image-demo.js |   11 +-
 .../app/src/main/assets/component/input-demo.js |   11 +-
 .../main/assets/component/list/list-basic.js    |    8 +
 .../assets/component/list/list-demo-horizon.js  |    8 +
 .../src/main/assets/component/list/list-demo.js |    8 +
 .../src/main/assets/component/marquee-demo.js   |   11 +-
 .../src/main/assets/component/navigator-demo.js |   15 +-
 .../main/assets/component/process-bar-demo.js   |   11 +-
 .../src/main/assets/component/scroller-demo.js  |   11 +-
 .../slider-neighbor/slider-neighbor-item.js     |    8 +
 .../slider-neighbor/slider-neighbor-page.js     |    8 +
 .../src/main/assets/component/slider/index.js   |   11 +-
 .../main/assets/component/slider/slider-item.js |    8 +
 .../main/assets/component/slider/slider-page.js |    8 +
 .../main/assets/component/tabbar/tabbar-demo.js |   15 +-
 .../main/assets/component/tabbar/tabbar-item.js |    8 +
 .../app/src/main/assets/component/text-demo.js  |   11 +-
 .../app/src/main/assets/component/video-demo.js |   11 +-
 .../app/src/main/assets/component/web-demo.js   |   11 +-
 android/playground/app/src/main/assets/hello.js |    8 +
 .../playground/app/src/main/assets/iconfont.js  |    8 +
 .../app/src/main/assets/module/clipboard.js     |   11 +-
 .../java/com/alibaba/weex/IndexActivity.java    |    6 +
 .../src/main/java/com/alibaba/weex/Utility.java |  277 +
 .../java/com/alibaba/weex/WXApplication.java    |    4 +
 .../java/com/alibaba/weex/WXPageActivity.java   |   58 +
 .../extend/WXInstanceStatisticsListener.java    |  268 +
 .../app/src/main/res/layout/id_stub.xml         |   57 +
 android/sdk/build.gradle                        |    2 +
 android/sdk/libs/armeabi/libweexv8.so           |  Bin 3583820 -> 3563544 bytes
 android/sdk/libs/x86/libweexv8.so               |  Bin 4336768 -> 4545544 bytes
 .../com/taobao/weex/IWXStatisticsListener.java  |  252 +
 .../main/java/com/taobao/weex/InitConfig.java   |   14 +
 .../java/com/taobao/weex/WXEnvironment.java     |   18 +
 .../main/java/com/taobao/weex/WXSDKEngine.java  |    5 +-
 .../java/com/taobao/weex/WXSDKInstance.java     |   77 +-
 .../main/java/com/taobao/weex/WXSDKManager.java |   79 +-
 .../taobao/weex/adapter/IWXSoLoaderAdapter.java |  236 +
 .../java/com/taobao/weex/bridge/WXBridge.java   |    6 +
 .../com/taobao/weex/bridge/WXBridgeManager.java |   59 +-
 .../java/com/taobao/weex/bridge/WXParams.java   |   13 +
 .../java/com/taobao/weex/common/Constants.java  |    8 +
 .../java/com/taobao/weex/common/IWXBridge.java  |    7 +
 .../taobao/weex/common/WXJSBridgeMsgType.java   |    1 +
 .../taobao/weex/ui/IExternalMoudleGetter.java   |  215 +
 .../taobao/weex/ui/component/WXComponent.java   |    7 +-
 .../com/taobao/weex/ui/component/WXImage.java   |    6 +
 .../java/com/taobao/weex/utils/OsVersion.java   |  233 +
 .../main/java/com/taobao/weex/utils/Trace.java  |  301 +
 .../taobao/weex/utils/WXSoInstallMgrSdk.java    |   51 +-
 .../java/com/taobao/weex/utils/WXUtils.java     |   84 +-
 .../taobao/weex/bridge/WXWebsocketBridge.java   |    3 +
 bin/dist-vue.sh                                 |   42 +
 build/build.js                                  |    2 +
 build/config.js                                 |    9 +-
 build/examples-banner-plugin.js                 |   65 +
 build/karma.vue.conf.js                         |   64 +-
 build/webpack.examples.config.js                |    3 +-
 build/webpack.examples.web.config.js            |   24 +-
 dangerfile.js                                   |   30 +
 examples/vue/animation.vue                      |    4 +-
 examples/vue/components/countdown.vue           |    2 +-
 examples/vue/components/image.vue               |    2 +-
 examples/vue/components/list.vue                |   19 +-
 examples/vue/components/marquee.vue             |    3 +-
 examples/vue/components/navigator.vue           |    7 +-
 examples/vue/components/scroller.vue            |   34 +-
 examples/vue/components/slider.vue              |   22 +-
 examples/vue/components/text.vue                |    2 +-
 examples/vue/components/textarea.vue            |   57 +
 examples/vue/components/video.vue               |    2 +-
 examples/vue/components/web.vue                 |    2 +-
 examples/vue/iconfont.vue                       |    2 +-
 examples/vue/include/base-url.js                |    4 +-
 examples/vue/include/button.vue                 |    2 +-
 examples/vue/include/countdown.vue              |    2 +-
 examples/vue/include/example-list-item.vue      |    2 +-
 examples/vue/include/example-list.vue           |    2 +-
 examples/vue/include/h1.vue                     |    2 +-
 examples/vue/include/h2.vue                     |    2 +-
 examples/vue/include/h3.vue                     |    2 +-
 examples/vue/include/hn.vue                     |    2 +-
 examples/vue/include/list-item.vue              |    2 +-
 examples/vue/include/marquee.vue                |    4 +-
 examples/vue/include/navbar.vue                 |    2 +-
 examples/vue/include/navpage.vue                |    2 +-
 examples/vue/include/panel.vue                  |   10 +-
 examples/vue/include/slider-item.vue            |    2 +-
 examples/vue/include/slider-page.vue            |    5 +-
 examples/vue/include/tabbar.vue                 |    6 +-
 examples/vue/include/tabitem.vue                |    2 +-
 examples/vue/include/tip.vue                    |    2 +-
 examples/vue/include/wxc-list-item.vue          |    2 +-
 examples/vue/modules/stream.vue                 |    2 +-
 examples/vue/showcase/calculator.vue            |    2 +-
 examples/vue/showcase/include/banners.vue       |    4 +-
 examples/vue/showcase/include/brand.vue         |    2 +-
 examples/vue/showcase/include/category.vue      |    8 +-
 examples/vue/showcase/include/coupon.vue        |    2 +-
 examples/vue/showcase/include/goods.vue         |    4 +-
 examples/vue/showcase/include/headlines.vue     |    2 +-
 examples/vue/showcase/include/match.vue         |    4 +-
 examples/vue/showcase/include/resource.vue      |    2 +-
 examples/vue/showcase/include/scene.vue         |    4 +-
 examples/vue/showcase/itemlist.vue              |  246 +-
 examples/vue/showcase/new-fashion.vue           |    2 +-
 examples/vue/style/index.vue                    |    2 +-
 examples/vue/style/style-box.vue                |    2 +-
 examples/vue/style/style-flex.vue               |    2 +-
 examples/vue/style/style-item.vue               |    2 +-
 examples/vue/syntax/hello-world-3.vue           |    4 +-
 examples/vue/syntax/hello-world-4.vue           |    4 +-
 examples/vue/syntax/hello-world-5.vue           |    4 +-
 examples/vue/syntax/hello-world.vue             |    4 +-
 examples/vue/syntax/include/btn.vue             |    2 +-
 examples/vue/syntax/include/sub.vue             |    2 +-
 examples/vue/syntax/script-component.vue        |    2 +-
 examples/vue/syntax/script-data.vue             |    2 +-
 examples/vue/syntax/script-events.vue           |    4 +-
 examples/vue/syntax/script-instance.vue         |    2 +-
 examples/vue/syntax/script-lifecycle.vue        |    4 +-
 examples/vue/syntax/script-module.vue           |    2 +-
 examples/vue/syntax/script-options.vue          |    2 +-
 examples/vue/syntax/template-class.vue          |    2 +-
 examples/vue/syntax/template-event.vue          |    2 +-
 examples/vue/syntax/template-if.vue             |    2 +-
 examples/vue/syntax/template-repeat-update.vue  |    2 +-
 examples/vue/syntax/template-repeat.vue         |    8 +-
 flow-typed/npm/animationjs_vx.x.x.js            |   60 +
 flow-typed/npm/babel-core_vx.x.x.js             |  227 +
 flow-typed/npm/babel-eslint_vx.x.x.js           |   73 +
 flow-typed/npm/babel-istanbul_vx.x.x.js         |  353 +
 flow-typed/npm/babel-loader_vx.x.x.js           |   67 +
 flow-typed/npm/babel-plugin-coverage_vx.x.x.js  |   32 +
 flow-typed/npm/babel-preset-es2015_vx.x.x.js    |   32 +
 flow-typed/npm/babel-runtime_vx.x.x.js          | 1691 ++++
 flow-typed/npm/chai_v3.5.x.js                   |  212 +
 flow-typed/npm/chromedriver_vx.x.x.js           |   46 +
 flow-typed/npm/core-js_vx.x.x.js                | 9390 ++++++++++++++++++
 flow-typed/npm/cross-spawn_vx.x.x.js            |   59 +
 flow-typed/npm/css-loader_vx.x.x.js             |   87 +
 flow-typed/npm/cubicbezier_vx.x.x.js            |  109 +
 flow-typed/npm/danger_vx.x.x.js                 |  284 +
 flow-typed/npm/envd_vx.x.x.js                   |  109 +
 flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js |  319 +
 flow-typed/npm/eslint_vx.x.x.js                 | 1978 ++++
 flow-typed/npm/flow-bin_v0.x.x.js               |    6 +
 flow-typed/npm/fs-extra_vx.x.x.js               |  221 +
 flow-typed/npm/http-server_vx.x.x.js            |   39 +
 flow-typed/npm/httpurl_vx.x.x.js                |   67 +
 flow-typed/npm/inline-style-prefixer_vx.x.x.js  |  347 +
 flow-typed/npm/json-loader_vx.x.x.js            |   33 +
 flow-typed/npm/karma-coverage_vx.x.x.js         |   81 +
 flow-typed/npm/karma-mocha-reporter_vx.x.x.js   |   38 +
 flow-typed/npm/karma-mocha_vx.x.x.js            |   53 +
 .../npm/karma-phantomjs-launcher_vx.x.x.js      |   59 +
 flow-typed/npm/karma-sourcemap-loader_vx.x.x.js |   33 +
 flow-typed/npm/karma-webpack_vx.x.x.js          |   45 +
 flow-typed/npm/karma_vx.x.x.js                  |  445 +
 flow-typed/npm/lazyimg_vx.x.x.js                |   32 +
 flow-typed/npm/macaca-cli_vx.x.x.js             |  123 +
 flow-typed/npm/macaca-utils_vx.x.x.js           |   39 +
 flow-typed/npm/mocha_v2.4.x.js                  |   25 +
 flow-typed/npm/modals_vx.x.x.js                 |   81 +
 flow-typed/npm/nightwatch_vx.x.x.js             |  633 ++
 flow-typed/npm/phantomjs-prebuilt_vx.x.x.js     |  389 +
 flow-typed/npm/query-string_vx.x.x.js           |   33 +
 flow-typed/npm/reify_vx.x.x.js                  |   95 +
 flow-typed/npm/rollup-plugin-buble_vx.x.x.js    |   39 +
 flow-typed/npm/rollup-plugin-commonjs_vx.x.x.js |   81 +
 flow-typed/npm/rollup-plugin-eslint_vx.x.x.js   |   39 +
 .../rollup-plugin-flow-no-whitespace_vx.x.x.js  |   33 +
 flow-typed/npm/rollup-plugin-flow_vx.x.x.js     |   33 +
 flow-typed/npm/rollup-plugin-json_vx.x.x.js     |   46 +
 .../npm/rollup-plugin-node-resolve_vx.x.x.js    |   53 +
 flow-typed/npm/rollup-plugin-postcss_vx.x.x.js  |   38 +
 flow-typed/npm/rollup-plugin-replace_vx.x.x.js  |   46 +
 flow-typed/npm/rollup-plugin-uglify_vx.x.x.js   |   32 +
 flow-typed/npm/rollup-watch_vx.x.x.js           |   67 +
 flow-typed/npm/rollup_vx.x.x.js                 |   46 +
 flow-typed/npm/scroll-to_vx.x.x.js              |   33 +
 flow-typed/npm/selenium-server_vx.x.x.js        |   39 +
 flow-typed/npm/semver_v5.1.x.js                 |   81 +
 flow-typed/npm/serve_vx.x.x.js                  |   18 +
 flow-typed/npm/sinon-chai_vx.x.x.js             |   32 +
 flow-typed/npm/sinon_vx.x.x.js                  |  263 +
 flow-typed/npm/uglify-js_vx.x.x.js              |  116 +
 flow-typed/npm/vue-loader_vx.x.x.js             |  122 +
 flow-typed/npm/vue-template-compiler_vx.x.x.js  |   38 +
 flow-typed/npm/vue_vx.x.x.js                    | 1089 ++
 flow-typed/npm/webdriver-client_vx.x.x.js       |  129 +
 flow-typed/npm/webpack_vx.x.x.js                | 1523 +++
 flow-typed/npm/weex-components_vx.x.x.js        |   33 +
 flow-typed/npm/weex-loader_vx.x.x.js            |  108 +
 flow-typed/npm/weex-picker_vx.x.x.js            |   81 +
 flow-typed/npm/weex-rax-framework_vx.x.x.js     |  165 +
 flow-typed/npm/weex-styler_vx.x.x.js            |   66 +
 flow-typed/npm/weex-vdom-tester_vx.x.x.js       |  108 +
 flow-typed/npm/weex-vue-framework_vx.x.x.js     |   33 +
 flow-typed/npm/weex-wd_vx.x.x.js                |   38 +
 flow-typed/npm/wwp_vx.x.x.js                    |   39 +
 flow-typed/npm/xml2map_vx.x.x.js                |   45 +
 html5/frameworks/legacy/app/ctrl/init.js        |   55 +-
 html5/frameworks/legacy/static/create.js        |    5 +-
 html5/frameworks/legacy/static/life.js          |   17 +
 html5/render/browser/extend/api/stream.js       |    2 +-
 html5/render/browser/extend/components/input.js |   33 +
 .../browser/extend/components/textarea.js       |   32 +
 html5/render/browser/utils/index.js             |    9 +
 html5/render/vue/README.md                      |   51 +-
 html5/render/vue/components/a.js                |   18 +-
 html5/render/vue/components/div.js              |   25 +-
 html5/render/vue/components/image.js            |   81 +-
 html5/render/vue/components/index.js            |    9 +-
 html5/render/vue/components/input.js            |   31 +-
 .../render/vue/components/scrollable/header.js  |   40 +-
 .../vue/components/scrollable/list/cell.js      |   15 +-
 .../vue/components/scrollable/list/index.js     |   32 +-
 .../vue/components/scrollable/list/listMixin.js |  118 +-
 .../components/scrollable/loading-indicator.js  |    3 +-
 .../render/vue/components/scrollable/loading.js |   55 +-
 .../render/vue/components/scrollable/refresh.js |   64 +-
 .../vue/components/scrollable/scroller.js       |   30 +-
 .../render/vue/components/scrollable/shared.js  |   22 -
 html5/render/vue/components/slider/index.js     |   40 +-
 html5/render/vue/components/slider/indicator.js |  115 +-
 .../render/vue/components/slider/slideMixin.js  |  141 +-
 html5/render/vue/components/switch.js           |   11 +-
 html5/render/vue/components/text.js             |   45 +-
 html5/render/vue/components/textarea.js         |   29 +-
 html5/render/vue/components/video.js            |   14 +-
 html5/render/vue/components/web.js              |   19 +-
 html5/render/vue/env/WXEnvironment.js           |   39 -
 html5/render/vue/env/index.js                   |   17 +-
 html5/render/vue/env/viewport.js                |   56 +-
 html5/render/vue/env/weex.js                    |   30 +-
 html5/render/vue/env/wx-env.js                  |   48 +
 html5/render/vue/index.js                       |   64 +-
 html5/render/vue/mixins/base.js                 |  110 +-
 html5/render/vue/mixins/event.js                |   76 -
 html5/render/vue/mixins/index.js                |    8 +-
 html5/render/vue/mixins/input-common.js         |   47 +
 html5/render/vue/mixins/scrollable.js           |  110 +
 html5/render/vue/mixins/style.js                |  265 +-
 html5/render/vue/modules/dom.js                 |   69 +-
 html5/render/vue/modules/index.js               |   42 +-
 html5/render/vue/styles/components.css          |  225 +-
 html5/render/vue/styles/reset.css               |   44 +-
 html5/render/vue/utils/component.js             |   83 +-
 html5/render/vue/utils/event.js                 |   91 +-
 html5/render/vue/utils/func.js                  |   81 +-
 html5/render/vue/utils/index.js                 |   55 +-
 html5/render/vue/utils/lazyload.js              |  102 +
 html5/render/vue/utils/perf.js                  |  170 +
 html5/render/vue/utils/style.js                 |   21 +
 html5/render/vue/utils/type.js                  |   20 +
 html5/test/render/index.js                      |    3 -
 html5/test/render/vue/components/a.js           |   38 +
 html5/test/render/vue/components/div.js         |   29 +
 html5/test/render/vue/components/image.js       |   44 +-
 html5/test/render/vue/components/list.js        |   21 +-
 html5/test/render/vue/components/switch.js      |   35 +-
 html5/test/render/vue/components/text.js        |   42 +-
 html5/test/render/vue/components/web.js         |   14 +-
 html5/test/render/vue/examples/list-cell.js     |   16 +-
 html5/test/render/vue/helper.js                 |  157 +-
 html5/test/render/vue/utils.js                  |    1 -
 html5/test/render/vue/validator/check.js        |    1 -
 html5/test/render/vue/validator/index.js        |    1 -
 html5/test/render/vue/validator/prop.js         |    1 -
 html5/test/render/vue/validator/style.js        |    1 -
 index.html                                      |    3 +-
 .../Recycler/WXRecyclerDataController.m         |    2 +-
 .../Component/WXComponent+GradientColor.h       |    3 -
 .../Sources/Display/WXComponent+BoxShadow.h     |    2 +-
 .../Sources/Display/WXComponent+BoxShadow.m     |   10 +-
 ios/sdk/WeexSDK/Sources/Display/WXInnerLayer.h  |    2 +-
 ios/sdk/WeexSDK/Sources/Display/WXInnerLayer.m  |    4 +-
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |    2 +-
 .../Sources/Manager/WXComponentManager.m        |    4 +-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h   |    2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m   |   19 +-
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |    1 +
 package.json                                    |   24 +-
 packages/weex-vue-render/README.md              |   51 +-
 packages/weex-vue-render/package.json           |   13 +-
 test/ci-funcs.sh                                |    3 +
 test/pages/image-onload.vue                     |    2 +-
 test/pages/index.vue                            |   10 +-
 test/scripts/index.test.js                      |   14 +-
 vue.html                                        |   53 +-
 300 files changed, 28453 insertions(+), 1520 deletions(-)
----------------------------------------------------------------------



[4/9] incubator-weex git commit: Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

Posted by so...@apache.org.
Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

# Conflicts:
#	examples/component/list/list-basic.we


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8f62317a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8f62317a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8f62317a

Branch: refs/heads/0.12-dev
Commit: 8f62317a2edb67f972f6e7cfb84a1ed9182b4b87
Parents: e7656e7 80df1aa
Author: moxun.ljf <fu...@foxmail.com>
Authored: Thu Mar 30 16:19:24 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Thu Mar 30 16:19:24 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/common/Constants.java  |    2 +
 .../taobao/weex/dom/WXRecyclerDomObject.java    |    4 +-
 .../taobao/weex/ui/component/WXComponent.java   |   25 +
 .../com/taobao/weex/ui/component/WXText.java    |    8 +
 .../com/taobao/weex/ui/view/WXTextView.java     |   18 +-
 build/webpack.deprecatedmacacatest.config.js    |    6 +-
 examples/accessibilitySupport.we                |   57 +
 examples/component/input-demo.we                |  253 +-
 examples/component/list/list-basic.we           |    6 +-
 examples/component/slider-tab.we                |  100 +
 examples/include/example-list-item.we           |   30 +-
 examples/index.we                               |    4 +-
 examples/linear-gradient.we                     |    3 +
 examples/module/chatroom-demo.we                |  227 ++
 examples/module/websocket-demo.we               |   50 +-
 examples/showcase/boxshadow.we                  |   46 +
 examples/vue/components/input.vue               |  203 +-
 examples/vue/components/list.vue                |    3 +
 examples/vue/index.vue                          |    1 +
 examples/vue/showcase/boxshadow.vue             |   39 +
 ios/playground/bundlejs/component/image-demo.js |    2 +-
 ios/playground/bundlejs/component/input-demo.js | 2683 ++++--------------
 .../bundlejs/component/lengthunitwx-demo.js     |  329 +++
 .../bundlejs/component/list/list-basic.js       |  132 +-
 .../component/list/list-demo-horizon.js         |   12 +-
 .../bundlejs/component/list/list-demo.js        |   12 +-
 .../bundlejs/component/list/waterfall.js        |  877 ++++++
 .../bundlejs/component/marquee-demo.js          |   13 +-
 .../bundlejs/component/process-bar-demo.js      |   17 +-
 .../bundlejs/component/scroller-demo.js         |  219 +-
 .../bundlejs/component/slider-neighbor/index.js |    8 +-
 .../slider-neighbor/slider-neighbor-item.js     |   12 +-
 .../slider-neighbor/slider-neighbor-page.js     |   28 +-
 ios/playground/bundlejs/component/slider-tab.js |  633 +++++
 .../bundlejs/component/slider/index.js          |   56 +-
 .../bundlejs/component/slider/slider-item.js    |   12 +-
 .../bundlejs/component/slider/slider-page.js    |   28 +-
 ios/playground/bundlejs/component/text-demo.js  |   24 +-
 ios/playground/bundlejs/component/video-demo.js |   24 +-
 ios/playground/bundlejs/component/web-demo.js   |   25 +-
 ios/playground/bundlejs/error.js                |   20 +-
 ios/playground/bundlejs/geolocation.js          |   46 +-
 ios/playground/bundlejs/hello.js                |    4 +-
 ios/playground/bundlejs/iconfont.js             |   12 +-
 ios/playground/bundlejs/index.js                |  270 +-
 ios/playground/bundlejs/linear-gradient.js      |    8 +-
 ios/playground/bundlejs/module/chatroom-demo.js |  370 +++
 ios/playground/bundlejs/module/clipboard.js     |   61 +-
 ios/playground/bundlejs/module/componentRect.js |   28 +-
 ios/playground/bundlejs/module/instance-api.js  |   61 +-
 ios/playground/bundlejs/module/modal.js         |   27 +-
 ios/playground/bundlejs/module/picker-demo.js   |   27 +-
 ios/playground/bundlejs/module/storage-demo.js  |   61 +-
 ios/playground/bundlejs/module/stream-demo.js   |   61 +-
 .../bundlejs/module/websocket-demo.js           | 2661 +++++++----------
 ios/playground/bundlejs/showcase/boxshadow.js   |  269 ++
 ios/playground/bundlejs/showcase/calculator.js  |   30 +-
 .../bundlejs/showcase/dropdown/dropdown-demo.js |   38 +-
 .../bundlejs/showcase/dropdown/we-dropdown.js   |   12 +-
 ios/playground/bundlejs/showcase/minesweeper.js |   12 +-
 .../bundlejs/showcase/pseudo-class.js           |   30 +-
 ios/playground/bundlejs/showcase/ui.js          |   30 +-
 ios/playground/bundlejs/style/index.js          |   82 +-
 ios/playground/bundlejs/style/style-box.js      |   46 +-
 ios/playground/bundlejs/style/style-flex.js     |   54 +-
 ios/playground/bundlejs/style/style-item.js     |   12 +-
 ios/playground/bundlejs/syntax/hello-world-1.js |    4 +-
 ios/playground/bundlejs/syntax/hello-world-2.js |    4 +-
 ios/playground/bundlejs/syntax/hello-world-3.js |    8 +-
 ios/playground/bundlejs/syntax/hello-world-4.js |   12 +-
 ios/playground/bundlejs/syntax/hello-world-5.js |   12 +-
 ios/playground/bundlejs/syntax/hello-world.js   |   12 +-
 ios/playground/bundlejs/syntax/index.js         |  296 +-
 .../bundlejs/syntax/script-component.js         |   24 +-
 ios/playground/bundlejs/syntax/script-data.js   |   12 +-
 ios/playground/bundlejs/syntax/script-events.js |   20 +-
 .../bundlejs/syntax/script-instance.js          |   12 +-
 .../bundlejs/syntax/script-lifecycle.js         |   12 +-
 ios/playground/bundlejs/syntax/script-module.js |   12 +-
 .../bundlejs/syntax/script-options.js           |   12 +-
 .../bundlejs/syntax/template-class.js           |   12 +-
 .../bundlejs/syntax/template-content.js         |   20 +-
 .../bundlejs/syntax/template-event.js           |   12 +-
 ios/playground/bundlejs/syntax/template-if.js   |   12 +-
 .../bundlejs/syntax/template-repeat-update.js   |   12 +-
 .../bundlejs/syntax/template-repeat.js          |   12 +-
 .../bundlejs/syntax/template-style.js           |    8 +-
 ios/playground/bundlejs/template.js             |   12 +-
 ios/playground/bundlejs/test.js                 |    8 +-
 ios/playground/bundlejs/vue/animation.js        |  120 +-
 ios/playground/bundlejs/vue/components/a.js     |   97 +-
 .../bundlejs/vue/components/countdown.js        |  122 +-
 ios/playground/bundlejs/vue/components/image.js |  142 +-
 ios/playground/bundlejs/vue/components/input.js |  735 +++--
 ios/playground/bundlejs/vue/components/list.js  |   44 +-
 .../bundlejs/vue/components/marquee.js          |  105 +-
 .../bundlejs/vue/components/navigator.js        |  187 +-
 .../bundlejs/vue/components/scroller.js         |   48 +-
 .../bundlejs/vue/components/slider.js           |  341 +--
 .../bundlejs/vue/components/tabbar.js           |  133 +-
 ios/playground/bundlejs/vue/components/text.js  |  132 +-
 ios/playground/bundlejs/vue/components/video.js |   72 +-
 .../bundlejs/vue/components/waterfall.js        |  877 ++++++
 ios/playground/bundlejs/vue/components/web.js   |   74 +-
 ios/playground/bundlejs/vue/hello.js            |   19 +-
 ios/playground/bundlejs/vue/iconfont.js         |   36 +-
 ios/playground/bundlejs/vue/index.js            |  139 +-
 .../bundlejs/vue/modules/clipboard.js           |  147 +-
 .../bundlejs/vue/modules/instance-api.js        |   59 +-
 ios/playground/bundlejs/vue/modules/modal.js    |  105 +-
 ios/playground/bundlejs/vue/modules/storage.js  |   71 +-
 ios/playground/bundlejs/vue/modules/stream.js   |   95 +-
 .../bundlejs/vue/showcase/boxshadow.js          |  244 ++
 .../bundlejs/vue/showcase/calculator.js         |   72 +-
 .../bundlejs/vue/showcase/itemlist.js           |  166 +-
 .../bundlejs/vue/showcase/new-fashion.js        |  557 ++--
 .../bundlejs/vue/showcase/progress.js           |   63 +-
 ios/playground/bundlejs/vue/style/index.js      |  418 +--
 ios/playground/bundlejs/vue/style/style-box.js  |  180 +-
 ios/playground/bundlejs/vue/style/style-flex.js |  238 +-
 ios/playground/bundlejs/vue/style/style-item.js |   26 +-
 .../bundlejs/vue/syntax/hello-world-1.js        |   17 +-
 .../bundlejs/vue/syntax/hello-world-2.js        |   23 +-
 .../bundlejs/vue/syntax/hello-world-3.js        |   28 +-
 .../bundlejs/vue/syntax/hello-world-4.js        |   32 +-
 .../bundlejs/vue/syntax/hello-world-5.js        |   32 +-
 .../bundlejs/vue/syntax/hello-world.js          |   32 +-
 .../bundlejs/vue/syntax/script-component.js     |   64 +-
 .../bundlejs/vue/syntax/script-data.js          |   36 +-
 .../bundlejs/vue/syntax/script-events.js        |   32 +-
 .../bundlejs/vue/syntax/script-instance.js      |   30 +-
 .../bundlejs/vue/syntax/script-lifecycle.js     |   32 +-
 .../bundlejs/vue/syntax/script-module.js        |   30 +-
 .../bundlejs/vue/syntax/script-options.js       |   28 +-
 .../bundlejs/vue/syntax/template-class.js       |   34 +-
 .../bundlejs/vue/syntax/template-content.js     |   49 +-
 .../bundlejs/vue/syntax/template-event.js       |   36 +-
 .../bundlejs/vue/syntax/template-if.js          |   32 +-
 .../vue/syntax/template-repeat-update.js        |   40 +-
 .../bundlejs/vue/syntax/template-repeat.js      |   50 +-
 .../bundlejs/vue/syntax/template-style.js       |   27 +-
 ios/playground/bundlejs/vue/template.js         |  181 +-
 .../Component/Recycler/WXMultiColumnLayout.h    |    2 +
 .../Component/Recycler/WXMultiColumnLayout.m    |    5 +-
 .../Component/Recycler/WXRecyclerComponent.m    |   45 +-
 .../Recycler/WXRecyclerDataController.h         |    4 +
 .../Recycler/WXRecyclerDataController.m         |   18 +
 .../Component/WXComponent+GradientColor.m       |   56 +-
 .../Sources/Component/WXComponent_internal.h    |    9 +
 .../WeexSDK/Sources/Component/WXListComponent.m |    7 +-
 .../Sources/Component/WXScrollerComponent.m     |   10 +-
 .../WeexSDK/Sources/Component/WXTextComponent.m |    5 +
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |    2 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |   29 +
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m   |   40 +-
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.h     |    1 +
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.m     |   22 +
 test/pages/components/recycler.vue              |  487 ++++
 test/scripts/components/recycler.test.js        |  412 +++
 159 files changed, 11814 insertions(+), 7192 deletions(-)
----------------------------------------------------------------------



[2/9] incubator-weex git commit: Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

Posted by so...@apache.org.
Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9076095f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9076095f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9076095f

Branch: refs/heads/0.12-dev
Commit: 9076095f84cbc8b886ecba10ec8a74d70ad92d8e
Parents: 7f60621 e1be952
Author: moxun.ljf <fu...@foxmail.com>
Authored: Mon Mar 27 10:53:23 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Mon Mar 27 10:53:23 2017 +0800

----------------------------------------------------------------------
 android/sdk/assets/main.js                      | 14 ++--
 .../ui/component/list/BasicListComponent.java   |  2 +-
 build/webpack.ci.config.js                      | 53 +++++++++++++++
 build/webpack.ci.web.config.js                  | 68 ++++++++++++++++++++
 build/webpack.deprecatedmacacatest.config.js    | 57 ++++++++++++++++
 build/webpack.macacatest.config.js              | 57 ----------------
 html5/frameworks/legacy/app/ctrl/init.js        |  2 +
 html5/shared/freeze.js                          | 47 ++++++++------
 ios/sdk/WeexSDK/Resources/main.js               | 14 ++--
 ios/sdk/WeexSDK/Sources/Bridge/WXBridgeMethod.h |  2 +-
 ios/sdk/WeexSDK/Sources/Bridge/WXBridgeMethod.m |  2 +-
 .../WeexSDK/Sources/Component/WXEditComponent.m | 30 ++++++++-
 .../Sources/Component/WXRefreshComponent.m      |  2 +-
 .../Sources/Component/WXSliderComponent.m       |  6 +-
 package.json                                    | 12 ++--
 test/.gitignore                                 |  2 +
 test/pages/components/scroller-fixed.vue        | 64 ++++++++++++++++++
 test/pages/components/scroller-fixed.we         | 62 ------------------
 test/pages/components/textarea-maxlength.vue    | 50 ++++++++++++++
 test/pages/dom-operation.vue                    | 37 +++++++++++
 test/pages/dom-operation.we                     | 35 ----------
 test/pages/image-onload.vue                     | 21 ++++++
 test/pages/image-onload.we                      | 19 ------
 test/pages/index.vue                            | 30 +++++++++
 test/pages/index.we                             | 27 --------
 test/pages/list-scroll.vue                      | 34 ++++++++++
 test/pages/list-scroll.we                       | 31 ---------
 test/pages/scroller-scroll.vue                  | 33 ++++++++++
 test/pages/scroller-scroll.we                   | 31 ---------
 test/run.sh                                     | 10 ++-
 test/scripts/components/image-onload.test.js    |  2 +-
 test/scripts/components/scroll-event.test.js    |  4 +-
 test/scripts/components/scroller-fixed.test.js  |  2 +-
 .../components/textarea-maxlength.test.js       | 36 +++++++++++
 test/scripts/dom.test.js                        |  2 +-
 test/scripts/index.test.js                      |  2 +-
 test/scripts/util.js                            | 24 +++++++
 test/serve.sh                                   |  6 +-
 38 files changed, 615 insertions(+), 317 deletions(-)
----------------------------------------------------------------------



[9/9] incubator-weex git commit: Merge branch 'android-feature-picker-improvement' of github.com:misakuo/incubator-weex into 0.12-dev This closes #234

Posted by so...@apache.org.
Merge branch 'android-feature-picker-improvement' of github.com:misakuo/incubator-weex into 0.12-dev
This closes #234


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d882c8bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d882c8bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d882c8bc

Branch: refs/heads/0.12-dev
Commit: d882c8bccce59d9079096611e4e3a7030b9d3f60
Parents: 219cd30 094ade0
Author: sospartan <so...@apache.org>
Authored: Mon Apr 10 14:20:45 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Mon Apr 10 14:20:45 2017 +0800

----------------------------------------------------------------------
 .../weex/appfram/pickers/WXPickersModule.java   | 172 +++++++++++++++++--
 1 file changed, 158 insertions(+), 14 deletions(-)
----------------------------------------------------------------------



[6/9] incubator-weex git commit: Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

Posted by so...@apache.org.
Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c86d15e6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c86d15e6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c86d15e6

Branch: refs/heads/0.12-dev
Commit: c86d15e68a4d9da094b12631bc4ebfad82d1d267
Parents: 9fe32be c597a05
Author: moxun.ljf <fu...@foxmail.com>
Authored: Fri Apr 7 10:32:29 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Fri Apr 7 10:32:29 2017 +0800

----------------------------------------------------------------------
 android/sdk/assets/main.js                      |  14 +--
 .../java/com/taobao/weex/WXSDKInstance.java     |  15 +--
 build/config.js                                 |   8 +-
 build/karma.vue.conf.js                         |  15 ++-
 build/webpack.examples.config.js                |   4 +-
 doc/source/cn/references/modules/dom.md         |   3 +-
 doc/source/references/modules/dom.md            |   3 +-
 examples/module/componentRect.we                |   4 +-
 html5/frameworks/legacy/app/ctrl/init.js        |  42 ++++++-
 html5/frameworks/legacy/static/life.js          |   8 +-
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |   8 --
 ios/sdk/WeexSDK/Resources/main.js               |  14 +--
 .../Component/WXComponent+GradientColor.h       |  18 ---
 .../Component/WXComponent+GradientColor.m       | 124 -------------------
 .../Sources/Component/WXComponent_internal.h    |   3 +
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |   1 -
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |  29 ++++-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m   |   2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |  27 ++++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     | 101 +++++++++++++++
 .../Sources/View/WXComponent+ViewManagement.m   |   1 -
 package.json                                    |   9 +-
 22 files changed, 253 insertions(+), 200 deletions(-)
----------------------------------------------------------------------



[3/9] incubator-weex git commit: Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev

Posted by so...@apache.org.
Merge remote-tracking branch 'upstream/0.12-dev' into 0.12-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e7656e79
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e7656e79
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e7656e79

Branch: refs/heads/0.12-dev
Commit: e7656e791af8da09bb39c8f96af4e00daa6ad1d2
Parents: 9076095 d073636
Author: moxun.ljf <fu...@foxmail.com>
Authored: Mon Mar 27 19:46:10 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Mon Mar 27 19:46:10 2017 +0800

----------------------------------------------------------------------
 .../app/src/main/assets/component/image-demo.js |    2 +-
 .../assets/component/slider-neighbor/index.js   |  264 ++
 .../slider-neighbor/silder-neighbor.js          |  287 --
 .../src/main/assets/component/slider/index.js   |   33 +
 .../app/src/main/assets/component/text-demo.js  |  108 +
 .../app/src/main/assets/component/web-demo.js   |    1 -
 android/playground/app/src/main/assets/error.js | 2217 ++++++++++++
 .../app/src/main/assets/geolocation.js          |  183 +
 .../app/src/main/assets/hello_weex.js           |   28 -
 android/playground/app/src/main/assets/index.js |    2 +-
 .../app/src/main/assets/linear-gradient.js      |  367 ++
 .../app/src/main/assets/module/clipboard.js     |   27 +-
 .../app/src/main/assets/module/componentRect.js |  107 +-
 .../app/src/main/assets/module/instance-api.js  |   14 +-
 .../app/src/main/assets/module/modal.js         |   18 +-
 .../app/src/main/assets/module/picker-demo.js   |   18 +-
 .../app/src/main/assets/module/storage-demo.js  |   14 +-
 .../app/src/main/assets/module/stream-demo.js   |   18 +-
 .../src/main/assets/module/websocket-demo.js    | 2412 +++++++++++++
 .../app/src/main/assets/showcase/calculator.js  |   21 +-
 .../assets/showcase/dropdown/dropdown-demo.js   |   30 +-
 .../assets/showcase/dropdown/we-dropdown.js     |   12 +-
 .../app/src/main/assets/showcase/minesweeper.js |   12 +-
 .../main/assets/showcase/new-fashion/banner.js  |    8 +-
 .../main/assets/showcase/new-fashion/banners.js |   20 +-
 .../main/assets/showcase/new-fashion/brand.js   |   36 +-
 .../assets/showcase/new-fashion/category.js     |   24 +-
 .../main/assets/showcase/new-fashion/coupon.js  |   12 +-
 .../main/assets/showcase/new-fashion/fashion.js |   38 +-
 .../main/assets/showcase/new-fashion/goods.js   |   24 +-
 .../assets/showcase/new-fashion/headlines.js    |   48 +-
 .../main/assets/showcase/new-fashion/index.js   |   21 +-
 .../main/assets/showcase/new-fashion/link.js    |    8 +-
 .../main/assets/showcase/new-fashion/main.js    |  209 +-
 .../main/assets/showcase/new-fashion/match.js   |   24 +-
 .../assets/showcase/new-fashion/resource.js     |   38 +-
 .../main/assets/showcase/new-fashion/scene.js   |   24 +-
 .../src/main/assets/showcase/pseudo-class.js    | 2425 +++++++++++++
 .../app/src/main/assets/showcase/ui.js          |   24 +-
 .../app/src/main/assets/style/index.js          |   76 +-
 .../app/src/main/assets/style/style-box.js      |   40 +-
 .../app/src/main/assets/style/style-flex.js     |   48 +-
 .../app/src/main/assets/style/style-item.js     |   12 +-
 .../app/src/main/assets/syntax/hello-world-1.js |    4 +-
 .../app/src/main/assets/syntax/hello-world-2.js |    6 +-
 .../app/src/main/assets/syntax/hello-world-3.js |   10 +-
 .../app/src/main/assets/syntax/hello-world-4.js |   14 +-
 .../app/src/main/assets/syntax/hello-world-5.js |   14 +-
 .../app/src/main/assets/syntax/hello-world.js   |   14 +-
 .../app/src/main/assets/syntax/index.js         |   20 +-
 .../src/main/assets/syntax/script-component.js  |   24 +-
 .../app/src/main/assets/syntax/script-data.js   |   12 +-
 .../app/src/main/assets/syntax/script-events.js |   12 +-
 .../src/main/assets/syntax/script-instance.js   |   12 +-
 .../src/main/assets/syntax/script-lifecycle.js  |   12 +-
 .../app/src/main/assets/syntax/script-module.js |   12 +-
 .../src/main/assets/syntax/script-options.js    |   12 +-
 .../src/main/assets/syntax/template-class.js    |   12 +-
 .../src/main/assets/syntax/template-content.js  |   20 +-
 .../src/main/assets/syntax/template-event.js    |   12 +-
 .../app/src/main/assets/syntax/template-if.js   |   12 +-
 .../assets/syntax/template-repeat-update.js     |   12 +-
 .../src/main/assets/syntax/template-repeat.js   |   12 +-
 .../src/main/assets/syntax/template-style.js    |    8 +-
 .../playground/app/src/main/assets/template.js  |   12 +-
 android/playground/app/src/main/assets/test.js  |  128 +
 .../app/src/main/assets/vue/animation.js        |  709 ++++
 .../app/src/main/assets/vue/components/a.js     |  438 +++
 .../src/main/assets/vue/components/countdown.js |  640 ++++
 .../app/src/main/assets/vue/components/image.js |  641 ++++
 .../app/src/main/assets/vue/components/input.js |  364 ++
 .../app/src/main/assets/vue/components/list.js  |  246 ++
 .../src/main/assets/vue/components/marquee.js   |  534 +++
 .../src/main/assets/vue/components/navigator.js | 1059 ++++++
 .../src/main/assets/vue/components/scroller.js  |  304 ++
 .../src/main/assets/vue/components/slider.js    |  898 +++++
 .../src/main/assets/vue/components/tabbar.js    |  599 ++++
 .../app/src/main/assets/vue/components/text.js  |  513 +++
 .../app/src/main/assets/vue/components/video.js |  396 +++
 .../app/src/main/assets/vue/components/web.js   |  459 +++
 .../playground/app/src/main/assets/vue/hello.js |   99 +
 .../app/src/main/assets/vue/iconfont.js         |  204 ++
 .../playground/app/src/main/assets/vue/index.js |  496 +++
 .../src/main/assets/vue/modules/clipboard.js    |  691 ++++
 .../src/main/assets/vue/modules/instance-api.js |  304 ++
 .../app/src/main/assets/vue/modules/modal.js    |  581 +++
 .../app/src/main/assets/vue/modules/storage.js  |  381 ++
 .../app/src/main/assets/vue/modules/stream.js   |  477 +++
 .../src/main/assets/vue/showcase/calculator.js  |  340 ++
 .../src/main/assets/vue/showcase/itemlist.js    | 1062 ++++++
 .../src/main/assets/vue/showcase/new-fashion.js | 3302 ++++++++++++++++++
 .../src/main/assets/vue/showcase/progress.js    |  336 ++
 .../app/src/main/assets/vue/style/index.js      | 1566 +++++++++
 .../app/src/main/assets/vue/style/style-box.js  |  780 +++++
 .../app/src/main/assets/vue/style/style-flex.js |  919 +++++
 .../app/src/main/assets/vue/style/style-item.js |  155 +
 .../src/main/assets/vue/syntax/hello-world-1.js |   95 +
 .../src/main/assets/vue/syntax/hello-world-2.js |  112 +
 .../src/main/assets/vue/syntax/hello-world-3.js |  127 +
 .../src/main/assets/vue/syntax/hello-world-4.js |  167 +
 .../src/main/assets/vue/syntax/hello-world-5.js |  173 +
 .../src/main/assets/vue/syntax/hello-world.js   |  183 +
 .../main/assets/vue/syntax/script-component.js  |  224 ++
 .../src/main/assets/vue/syntax/script-data.js   |  214 ++
 .../src/main/assets/vue/syntax/script-events.js |  161 +
 .../main/assets/vue/syntax/script-instance.js   |  196 ++
 .../main/assets/vue/syntax/script-lifecycle.js  |  155 +
 .../src/main/assets/vue/syntax/script-module.js |  156 +
 .../main/assets/vue/syntax/script-options.js    |  182 +
 .../main/assets/vue/syntax/template-class.js    |  161 +
 .../main/assets/vue/syntax/template-content.js  |  189 +
 .../main/assets/vue/syntax/template-event.js    |  197 ++
 .../src/main/assets/vue/syntax/template-if.js   |  165 +
 .../assets/vue/syntax/template-repeat-update.js |  195 ++
 .../main/assets/vue/syntax/template-repeat.js   |  170 +
 .../main/assets/vue/syntax/template-style.js    |  144 +
 .../app/src/main/assets/vue/template.js         |  796 +++++
 .../playground/app/src/main/ic_launcher-web.png |  Bin 0 -> 19935 bytes
 .../java/com/alibaba/weex/WXApplication.java    |    5 +
 .../alibaba/weex/extend/component/WXMask.java   |  167 +
 .../extend/component/dom/WXMaskDomObject.java   |  231 ++
 .../alibaba/weex/extend/view/WXMaskView.java    |  220 ++
 .../src/main/res/mipmap-hdpi/ic_launcher.png    |  Bin 5248 -> 1755 bytes
 .../src/main/res/mipmap-mdpi/ic_launcher.png    |  Bin 4303 -> 1221 bytes
 .../src/main/res/mipmap-xhdpi/ic_launcher.png   |  Bin 6354 -> 2451 bytes
 .../src/main/res/mipmap-xxhdpi/ic_launcher.png  |  Bin 7930 -> 3939 bytes
 .../src/main/res/mipmap-xxxhdpi/ic_launcher.png |  Bin 10633 -> 5608 bytes
 examples/component/image-demo.we                |    2 +-
 .../WeexSDK/Sources/Component/WXListComponent.m |    4 +
 129 files changed, 33181 insertions(+), 863 deletions(-)
----------------------------------------------------------------------



[7/9] incubator-weex git commit: * [android] improvement for single picker

Posted by so...@apache.org.
* [android] improvement for single picker


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/36628f59
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/36628f59
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/36628f59

Branch: refs/heads/0.12-dev
Commit: 36628f59effc80990c274a27de4ca99baa5777cd
Parents: c86d15e
Author: moxun.ljf <fu...@foxmail.com>
Authored: Fri Apr 7 17:30:20 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Fri Apr 7 17:30:20 2017 +0800

----------------------------------------------------------------------
 .../weex/appfram/pickers/WXPickersModule.java   | 161 +++++++++++++++++--
 1 file changed, 147 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/36628f59/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
index 8d92ca1..8bbc4ea 100644
--- a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
@@ -204,13 +204,28 @@
  */
 package com.taobao.weex.appfram.pickers;
 
+import android.content.Context;
 import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Build;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AlertDialog;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Checkable;
+import android.widget.ListView;
+import android.widget.TextView;
 
 import com.taobao.weex.annotation.JSMethod;
 import com.taobao.weex.bridge.JSCallback;
 import com.taobao.weex.common.WXModule;
+import com.taobao.weex.utils.WXResourceUtils;
+import com.taobao.weex.utils.WXViewUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -238,13 +253,16 @@ public class WXPickersModule extends WXModule {
     private static final String KEY_ITEMS = "items";
 
     private int selected;
+    private View selectedView;
 
     @JSMethod
     public void pick(Map<String, Object> options, JSCallback callback) {
         List<String> items = safeConvert(getOption(options, KEY_ITEMS, new ArrayList<String>()));
-        int index = getOption(options, KEY_INDEX, 0);
-        String title = getOption(options, KEY_TITLE, null);
-        performSinglePick(items, index, title, callback);
+        try {
+            performSinglePick(items, options, callback);
+        } catch (Throwable throwable) {
+            throwable.printStackTrace();
+        }
     }
 
     @JSMethod
@@ -279,6 +297,14 @@ public class WXPickersModule extends WXModule {
         }
     }
 
+    private int getColor(Map<String, Object> options, String key, int defValue) {
+        Object value = getOption(options, key, null);
+        if (value == null) {
+            return defValue;
+        }
+        return WXResourceUtils.getColor(value.toString(), defValue);
+    }
+
     private void performPickTime(Map<String, Object> options, final JSCallback callback) {
         String value = getOption(options, KEY_VALUE, "");
         DatePickerImpl.pickTime(
@@ -331,16 +357,31 @@ public class WXPickersModule extends WXModule {
 
     }
 
-    private void performSinglePick(List<String> items, int checked, String title, final JSCallback callback) {
-        selected = checked;
-        new AlertDialog.Builder(mWXSDKInstance.getContext())
-                .setTitle(title)
-                .setSingleChoiceItems(items.toArray(new String[items.size()]), checked, new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        selected = which;
-                    }
-                })
+    private void performSinglePick(List<String> items, final Map<String, Object> options, final JSCallback callback) {
+        selected = getOption(options, KEY_INDEX, 0);
+        final int textColor = getColor(options, "textColor", Color.TRANSPARENT);
+
+        final AlertDialog dialog =  new AlertDialog.Builder(mWXSDKInstance.getContext())
+                .setAdapter(
+                        new ArrayAdapter<String>(
+                                mWXSDKInstance.getContext(),
+                                android.R.layout.simple_list_item_single_choice,
+                                items) {
+                            @NonNull
+                            @Override
+                            public View getView(int position, View convertView, @Nullable ViewGroup parent) {
+                                View itemView =  super.getView(position, convertView, parent);
+                                if (position == selected) {
+                                    selectedView = itemView;
+                                }
+
+                                if (itemView instanceof TextView && textColor != Color.TRANSPARENT) {
+                                    ((TextView) itemView).setTextColor(textColor);
+                                }
+
+                                return itemView;
+                            }
+                        } , null)
                 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
@@ -361,6 +402,98 @@ public class WXPickersModule extends WXModule {
                         callback.invoke(ret);
                     }
                 })
-                .show();
+                .setCustomTitle(makeTitleView(mWXSDKInstance.getContext(), options))
+                .create();
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            dialog.create();
+        }
+
+        final ListView listView = dialog.getListView();
+        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            private View previousView;
+            private int selectionColor = getColor(options, "selectionColor", Color.TRANSPARENT);
+
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                selected = position;
+                if (previousView == view) {
+                    return;
+                }
+                if (previousView != null) {
+                    previousView.setBackgroundColor(Color.TRANSPARENT);
+                    if (previousView instanceof Checkable) {
+                        ((Checkable) previousView).toggle();
+                    }
+                }
+                if (view instanceof Checkable) {
+                    ((Checkable) view).toggle();
+                }
+                view.setBackgroundColor(selectionColor);
+                previousView = view;
+            }
+        });
+
+        listView.post(new Runnable() {
+            @Override
+            public void run() {
+                if (selectedView != null) {
+                    listView.performItemClick(selectedView, selected, selectedView.getId());
+                }
+            }
+        });
+
+        dialog.getWindow().getDecorView().post(new Runnable() {
+            @Override
+            public void run() {
+                Button confirm = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
+                Button cancel = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
+
+                if (confirm != null) {
+                    String confirmTitle = getOption(options, "confirmTitle", null);
+                    int confirmColor = getColor(options, "confirmTitleColor", Color.TRANSPARENT);
+
+                    if (confirmTitle != null) {
+                        confirm.setText(confirmTitle);
+                    }
+
+                    if (confirmColor != Color.TRANSPARENT) {
+                        confirm.setTextColor(confirmColor);
+                    }
+                }
+
+                if (cancel != null) {
+                    String cancelTitle = getOption(options, "cancelTitle", null);
+                    int cancelColor = getColor(options, "cancelTitleColor", Color.TRANSPARENT);
+
+                    if (cancelTitle != null) {
+                        cancel.setText(cancelTitle);
+                    }
+
+                    if (cancelColor != Color.TRANSPARENT) {
+                        cancel.setTextColor(cancelColor);
+                    }
+                }
+            }
+        });
+
+        dialog.show();
+    }
+
+    private TextView makeTitleView(Context context, Map<String, Object> options) {
+        String text = getOption(options, "title", null);
+        if (text == null) {
+            return null;
+        }
+        TextView textView = new TextView(context);
+        textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
+        int padding = WXViewUtils.dip2px(12);
+        textView.setPadding(padding, padding, padding, padding);
+        textView.getPaint().setFakeBoldText(true);
+        textView.setBackgroundColor(getColor(options, "titleBackgroundColor", Color.TRANSPARENT));
+        textView.setTextColor(getColor(options, "titleColor", Color.BLACK));
+        textView.setText(text);
+        return textView;
     }
 }


[8/9] incubator-weex git commit: * [android] make key constant

Posted by so...@apache.org.
* [android] make key constant


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/094ade0a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/094ade0a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/094ade0a

Branch: refs/heads/0.12-dev
Commit: 094ade0a27d887f13cba959f0f3c2401789353af
Parents: 36628f5
Author: moxun.ljf <fu...@foxmail.com>
Authored: Mon Apr 10 12:56:59 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Mon Apr 10 12:56:59 2017 +0800

----------------------------------------------------------------------
 .../weex/appfram/pickers/WXPickersModule.java   | 29 ++++++++++++++------
 1 file changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/094ade0a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
index 8bbc4ea..292fba0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
@@ -252,6 +252,15 @@ public class WXPickersModule extends WXModule {
     private static final String KEY_MIN = "min";
     private static final String KEY_ITEMS = "items";
 
+    private static final String KEY_TITLE_COLOR = "titleColor";
+    private static final String KEY_CANCEL_TITLE_COLOR = "cancelTitleColor";
+    private static final String KEY_CONFIRM_TITLE = "confirmTitle";
+    private static final String KEY_CANCEL_TITLE = "cancelTitle";
+    private static final String KEY_CONFIRM_TITLE_COLOR = "confirmTitleColor";
+    private static final String KEY_TITLE_BACKGROUND_COLOR = "titleBackgroundColor";
+    private static final String KEY_TEXT_COLOR = "textColor";
+    private static final String KEY_SELECTION_COLOR = "selectionColor";
+
     private int selected;
     private View selectedView;
 
@@ -359,7 +368,7 @@ public class WXPickersModule extends WXModule {
 
     private void performSinglePick(List<String> items, final Map<String, Object> options, final JSCallback callback) {
         selected = getOption(options, KEY_INDEX, 0);
-        final int textColor = getColor(options, "textColor", Color.TRANSPARENT);
+        final int textColor = getColor(options, KEY_TEXT_COLOR, Color.TRANSPARENT);
 
         final AlertDialog dialog =  new AlertDialog.Builder(mWXSDKInstance.getContext())
                 .setAdapter(
@@ -406,13 +415,15 @@ public class WXPickersModule extends WXModule {
                 .create();
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            //pre create the content view on dialog.
+            //if not , the content view will not be created until dialog.show() called
             dialog.create();
         }
 
         final ListView listView = dialog.getListView();
         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             private View previousView;
-            private int selectionColor = getColor(options, "selectionColor", Color.TRANSPARENT);
+            private int selectionColor = getColor(options, KEY_SELECTION_COLOR, Color.TRANSPARENT);
 
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@@ -450,8 +461,8 @@ public class WXPickersModule extends WXModule {
                 Button cancel = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
 
                 if (confirm != null) {
-                    String confirmTitle = getOption(options, "confirmTitle", null);
-                    int confirmColor = getColor(options, "confirmTitleColor", Color.TRANSPARENT);
+                    String confirmTitle = getOption(options, KEY_CONFIRM_TITLE, null);
+                    int confirmColor = getColor(options, KEY_CONFIRM_TITLE_COLOR, Color.TRANSPARENT);
 
                     if (confirmTitle != null) {
                         confirm.setText(confirmTitle);
@@ -463,8 +474,8 @@ public class WXPickersModule extends WXModule {
                 }
 
                 if (cancel != null) {
-                    String cancelTitle = getOption(options, "cancelTitle", null);
-                    int cancelColor = getColor(options, "cancelTitleColor", Color.TRANSPARENT);
+                    String cancelTitle = getOption(options, KEY_CANCEL_TITLE, null);
+                    int cancelColor = getColor(options, KEY_CANCEL_TITLE_COLOR, Color.TRANSPARENT);
 
                     if (cancelTitle != null) {
                         cancel.setText(cancelTitle);
@@ -481,7 +492,7 @@ public class WXPickersModule extends WXModule {
     }
 
     private TextView makeTitleView(Context context, Map<String, Object> options) {
-        String text = getOption(options, "title", null);
+        String text = getOption(options, KEY_TITLE, null);
         if (text == null) {
             return null;
         }
@@ -491,8 +502,8 @@ public class WXPickersModule extends WXModule {
         int padding = WXViewUtils.dip2px(12);
         textView.setPadding(padding, padding, padding, padding);
         textView.getPaint().setFakeBoldText(true);
-        textView.setBackgroundColor(getColor(options, "titleBackgroundColor", Color.TRANSPARENT));
-        textView.setTextColor(getColor(options, "titleColor", Color.BLACK));
+        textView.setBackgroundColor(getColor(options, KEY_TITLE_BACKGROUND_COLOR, Color.TRANSPARENT));
+        textView.setTextColor(getColor(options, KEY_TITLE_COLOR, Color.BLACK));
         textView.setText(text);
         return textView;
     }