mui_app_rails 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mui_app_rails/mui.js +6013 -1
  3. data/app/assets/javascripts/mui_app_rails/mui.min.js +8 -0
  4. data/app/assets/javascripts/mui_app_rails.js +1 -1
  5. data/app/assets/stylesheets/mui_app_rails/mui.css +3742 -0
  6. data/app/assets/stylesheets/mui_app_rails/mui.min.css +5 -0
  7. data/lib/mui_app_rails/engine.rb +12 -0
  8. data/lib/mui_app_rails/version.rb +1 -1
  9. data/lib/mui_app_rails.rb +1 -1
  10. metadata +17 -99
  11. data/app/assets/javascripts/mui_app_rails/actions.js +0 -26
  12. data/app/assets/javascripts/mui_app_rails/ajax.plugin.js +0 -3
  13. data/app/assets/javascripts/mui_app_rails/input.plugin.js +0 -232
  14. data/app/assets/javascripts/mui_app_rails/modals.js +0 -37
  15. data/app/assets/javascripts/mui_app_rails/mui.active.js +0 -30
  16. data/app/assets/javascripts/mui_app_rails/mui.ajax.5+.js +0 -27
  17. data/app/assets/javascripts/mui_app_rails/mui.ajax.js +0 -277
  18. data/app/assets/javascripts/mui_app_rails/mui.animation.js +0 -39
  19. data/app/assets/javascripts/mui_app_rails/mui.animationframe.js +0 -72
  20. data/app/assets/javascripts/mui_app_rails/mui.back.5+.js +0 -108
  21. data/app/assets/javascripts/mui_app_rails/mui.back.js +0 -56
  22. data/app/assets/javascripts/mui_app_rails/mui.class.js +0 -40
  23. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.js +0 -894
  24. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.pullrefresh.js +0 -150
  25. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.js +0 -361
  26. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.old.js +0 -332
  27. data/app/assets/javascripts/mui_app_rails/mui.detect.5+.js +0 -18
  28. data/app/assets/javascripts/mui_app_rails/mui.detect.js +0 -50
  29. data/app/assets/javascripts/mui_app_rails/mui.dialog.alert.js +0 -27
  30. data/app/assets/javascripts/mui_app_rails/mui.dialog.confirm.js +0 -27
  31. data/app/assets/javascripts/mui_app_rails/mui.dialog.prompt.js +0 -33
  32. data/app/assets/javascripts/mui_app_rails/mui.dialog.toast.js +0 -20
  33. data/app/assets/javascripts/mui_app_rails/mui.event.js +0 -160
  34. data/app/assets/javascripts/mui_app_rails/mui.fixed.animation.js +0 -22
  35. data/app/assets/javascripts/mui_app_rails/mui.fixed.classlist.js +0 -50
  36. data/app/assets/javascripts/mui_app_rails/mui.fixed.fastclick.js +0 -64
  37. data/app/assets/javascripts/mui_app_rails/mui.fixed.js +0 -40
  38. data/app/assets/javascripts/mui_app_rails/mui.fixed.keyboard.js +0 -56
  39. data/app/assets/javascripts/mui_app_rails/mui.gestures.drag.js +0 -48
  40. data/app/assets/javascripts/mui_app_rails/mui.gestures.flick.js +0 -30
  41. data/app/assets/javascripts/mui_app_rails/mui.gestures.hold.js +0 -41
  42. data/app/assets/javascripts/mui_app_rails/mui.gestures.js +0 -207
  43. data/app/assets/javascripts/mui_app_rails/mui.gestures.longtap.js +0 -43
  44. data/app/assets/javascripts/mui_app_rails/mui.gestures.swipe.js +0 -29
  45. data/app/assets/javascripts/mui_app_rails/mui.gestures.tap.js +0 -40
  46. data/app/assets/javascripts/mui_app_rails/mui.init.5+.js +0 -441
  47. data/app/assets/javascripts/mui_app_rails/mui.init.js +0 -100
  48. data/app/assets/javascripts/mui_app_rails/mui.init.pullrefresh.js +0 -57
  49. data/app/assets/javascripts/mui_app_rails/mui.jsonp.js +0 -108
  50. data/app/assets/javascripts/mui_app_rails/mui.layout.js +0 -22
  51. data/app/assets/javascripts/mui_app_rails/mui.namespace.js +0 -35
  52. data/app/assets/javascripts/mui_app_rails/mui.number.js +0 -93
  53. data/app/assets/javascripts/mui_app_rails/mui.offcanvas.js +0 -497
  54. data/app/assets/javascripts/mui_app_rails/mui.pullrefresh.js +0 -157
  55. data/app/assets/javascripts/mui_app_rails/mui.target.js +0 -58
  56. data/app/assets/javascripts/mui_app_rails/mui.view.js +0 -172
  57. data/app/assets/javascripts/mui_app_rails/popovers.js +0 -278
  58. data/app/assets/javascripts/mui_app_rails/pullrefresh.5+.js +0 -238
  59. data/app/assets/javascripts/mui_app_rails/push.js +0 -479
  60. data/app/assets/javascripts/mui_app_rails/segmented-controllers.js +0 -99
  61. data/app/assets/javascripts/mui_app_rails/sliders.js +0 -362
  62. data/app/assets/javascripts/mui_app_rails/switches.js +0 -165
  63. data/app/assets/javascripts/mui_app_rails/tableviews.js +0 -512
  64. data/app/assets/stylesheets/mui_app_rails/badges.scss +0 -88
  65. data/app/assets/stylesheets/mui_app_rails/bars.scss +0 -312
  66. data/app/assets/stylesheets/mui_app_rails/base.scss +0 -196
  67. data/app/assets/stylesheets/mui_app_rails/buttons.scss +0 -205
  68. data/app/assets/stylesheets/mui_app_rails/cards.scss +0 -62
  69. data/app/assets/stylesheets/mui_app_rails/forms.scss +0 -452
  70. data/app/assets/stylesheets/mui_app_rails/fullscreen.scss +0 -35
  71. data/app/assets/stylesheets/mui_app_rails/grid.scss +0 -75
  72. data/app/assets/stylesheets/mui_app_rails/hack.scss +0 -14
  73. data/app/assets/stylesheets/mui_app_rails/icon.scss +0 -170
  74. data/app/assets/stylesheets/mui_app_rails/iscroll.scss +0 -43
  75. data/app/assets/stylesheets/mui_app_rails/loadings.scss +0 -111
  76. data/app/assets/stylesheets/mui_app_rails/mixins.scss +0 -212
  77. data/app/assets/stylesheets/mui_app_rails/modals.scss +0 -34
  78. data/app/assets/stylesheets/mui_app_rails/mui.scss +0 -46
  79. data/app/assets/stylesheets/mui_app_rails/normalize.scss +0 -425
  80. data/app/assets/stylesheets/mui_app_rails/number.scss +0 -70
  81. data/app/assets/stylesheets/mui_app_rails/off-canvas.scss +0 -84
  82. data/app/assets/stylesheets/mui_app_rails/os.scss +0 -12
  83. data/app/assets/stylesheets/mui_app_rails/pagination.scss +0 -155
  84. data/app/assets/stylesheets/mui_app_rails/popovers.scss +0 -198
  85. data/app/assets/stylesheets/mui_app_rails/pullrefreshs.scss +0 -98
  86. data/app/assets/stylesheets/mui_app_rails/push.scss +0 -63
  87. data/app/assets/stylesheets/mui_app_rails/scroll.scss +0 -95
  88. data/app/assets/stylesheets/mui_app_rails/segmented-controls.scss +0 -150
  89. data/app/assets/stylesheets/mui_app_rails/slider-cell.scss +0 -20
  90. data/app/assets/stylesheets/mui_app_rails/sliders.scss +0 -133
  91. data/app/assets/stylesheets/mui_app_rails/switches.scss +0 -115
  92. data/app/assets/stylesheets/mui_app_rails/table-views.scss +0 -482
  93. data/app/assets/stylesheets/mui_app_rails/toast.scss +0 -16
  94. data/app/assets/stylesheets/mui_app_rails/type.scss +0 -23
  95. data/app/assets/stylesheets/mui_app_rails/variables.scss +0 -64
@@ -1,441 +0,0 @@
1
- /**
2
- * mui.init 5+
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- var defaultOptions = {
8
- swipeBack: false,
9
- preloadPages: [], //5+ lazyLoad webview
10
- preloadLimit: 10, //预加载窗口的数量限制(一旦超出,先进先出)
11
- keyEventBind: {
12
- backbutton: true,
13
- menubutton: true
14
- }
15
- };
16
-
17
- //默认页面动画
18
- var defaultShow = {
19
- autoShow: true,
20
- duration: $.os.ios ? 200 : 100,
21
- aniShow: 'slide-in-right'
22
- };
23
- //若执行了显示动画初始化操作,则要覆盖默认配置
24
- if ($.options.show) {
25
- defaultShow = $.extend(true, defaultShow, $.options.show);
26
- }
27
-
28
- $.currentWebview = null;
29
- $.isHomePage = false;
30
-
31
- $.extend(true, $.global, defaultOptions);
32
- $.extend(true, $.options, defaultOptions);
33
- /**
34
- * 等待动画配置
35
- * @param {type} options
36
- * @returns {Object}
37
- */
38
- $.waitingOptions = function(options) {
39
- return $.extend({
40
- autoShow: true,
41
- title: ''
42
- }, options);
43
- };
44
- /**
45
- * 窗口显示配置
46
- * @param {type} options
47
- * @returns {Object}
48
- */
49
- $.showOptions = function(options) {
50
- return $.extend(defaultShow, options);
51
- };
52
- /**
53
- * 窗口默认配置
54
- * @param {type} options
55
- * @returns {Object}
56
- */
57
- $.windowOptions = function(options) {
58
- return $.extend({
59
- scalable: false,
60
- bounce: "" //vertical
61
- }, options);
62
- };
63
- /**
64
- * plusReady
65
- * @param {type} callback
66
- * @returns {_L6.$}
67
- */
68
- $.plusReady = function(callback) {
69
- if (window.plus) {
70
- callback();
71
- } else {
72
- document.addEventListener("plusready", function() {
73
- callback();
74
- }, false);
75
- }
76
- return this;
77
- };
78
- /**
79
- * 5+ event(5+没提供之前我自己实现)
80
- * @param {type} webview
81
- * @param {type} eventType
82
- * @param {type} data
83
- * @returns {undefined}
84
- */
85
- $.fire = function(webview, eventType, data) {
86
- if (webview) {
87
- webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "','" + JSON.stringify(data || {}).replace(/\'/g, "\\u0027").replace(/\\/g, "\\u005c") + "')");
88
- }
89
- };
90
- /**
91
- * 5+ event(5+没提供之前我自己实现)
92
- * @param {type} eventType
93
- * @param {type} data
94
- * @returns {undefined}
95
- */
96
- $.receive = function(eventType, data) {
97
- if (eventType) {
98
- data = JSON.parse(data);
99
- $.trigger(document, eventType, data);
100
- }
101
- };
102
- var triggerPreload = function(webview) {
103
- if (!webview.preloaded) {
104
- $.fire(webview, 'preload');
105
- var list = webview.children();
106
- for (var i = 0; i < list.length; i++) {
107
- $.fire(list[i], 'preload');
108
- }
109
- webview.preloaded = true;
110
- }
111
- };
112
- var trigger = function(webview, eventType, timeChecked) {
113
- if (timeChecked) {
114
- if (!webview[eventType + 'ed']) {
115
- $.fire(webview, eventType);
116
- var list = webview.children();
117
- for (var i = 0; i < list.length; i++) {
118
- $.fire(list[i], eventType);
119
- }
120
- webview[eventType + 'ed'] = true;
121
- }
122
- } else {
123
- $.fire(webview, eventType);
124
- var list = webview.children();
125
- for (var i = 0; i < list.length; i++) {
126
- $.fire(list[i], eventType);
127
- }
128
- }
129
-
130
- };
131
- /**
132
- * 打开新窗口
133
- * @param {string} url 要打开的页面地址
134
- * @param {string} id 指定页面ID
135
- * @param {object} options 可选:参数,等待,窗口,显示配置{params:{},waiting:{},styles:{},show:{}}
136
- */
137
- $.openWindow = function(url, id, options) {
138
-
139
- if (!window.plus) {
140
- return;
141
- }
142
- if (typeof url === 'object') {
143
- options = url;
144
- url = options.url;
145
- id = options.id || url;
146
- } else {
147
- if (typeof id === 'object') {
148
- options = id;
149
- id = url;
150
- } else {
151
- id = id || url;
152
- }
153
- }
154
- options = options || {};
155
- var params = options.params || {};
156
- var webview, nShow, nWaiting;
157
- if ($.webviews[id]) { //已缓存
158
- var webviewCache = $.webviews[id];
159
- webview = webviewCache.webview;
160
- //需要处理用户手动关闭窗口的情况,此时webview应该是空的;
161
- if (!webview || !webview.getURL()) {
162
- //再次新建一个webview;
163
- options = $.extend(options, {
164
- id: id,
165
- url: url,
166
- preload: true
167
- }, true);
168
- webview = $.createWindow(options);
169
- }
170
- //每次show都需要传递动画参数;
171
- //预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置;
172
- nShow = webviewCache.show;
173
- nShow = options.show ? $.extend(nShow, options.show) : nShow;
174
- webview.show(nShow.aniShow, nShow.duration, function() {
175
- triggerPreload(webview);
176
- trigger(webview, 'pagebeforeshow', false);
177
- });
178
-
179
- webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
180
- return webview;
181
- } else { //新窗口
182
- //显示waiting
183
- var waitingConfig = $.waitingOptions(options.waiting);
184
- if (waitingConfig.autoShow) {
185
- nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options);
186
- }
187
- //创建页面
188
- options = $.extend(options, {
189
- id: id,
190
- url: url
191
- });
192
- webview = $.createWindow(options);
193
- //显示
194
- nShow = $.showOptions(options.show);
195
- if (nShow.autoShow) {
196
- webview.addEventListener("loaded", function() {
197
- //关闭等待框
198
- if (nWaiting) {
199
- nWaiting.close();
200
- }
201
- //显示页面
202
- webview.show(nShow.aniShow, nShow.duration, function() {
203
- triggerPreload(webview);
204
- trigger(webview, 'pagebeforeshow', false);
205
- });
206
- webview.showed = true;
207
- options.afterShowMethodName && webview.evalJS(options.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
208
- }, false);
209
- }
210
- }
211
- return webview;
212
- };
213
- /**
214
- * 根据配置信息创建一个webview
215
- * @param {type} options
216
- * @param {type} isCreate
217
- * @returns {webview}
218
- */
219
- $.createWindow = function(options, isCreate) {
220
- if (!window.plus) {
221
- return;
222
- }
223
- var id = options.id || options.url;
224
- var webview;
225
- if (options.preload) {
226
- if ($.webviews[id] && $.webviews[id].webview.getURL()) { //已经cache
227
- webview = $.webviews[id].webview;
228
- } else { //新增预加载窗口
229
- //preload
230
- webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), $.extend({
231
- preload: true
232
- }, options.extras));
233
- if (options.subpages) {
234
- $.each(options.subpages, function(index, subpage) {
235
- //TODO 子窗口也可能已经创建,比如公用模板的情况;
236
- var subWebview = plus.webview.create(subpage.url, subpage.id || subpage.url, $.windowOptions(subpage.styles), $.extend({
237
- preload: true
238
- }, subpage.extras));
239
- webview.append(subWebview);
240
- });
241
- }
242
- }
243
-
244
- //TODO 理论上,子webview也应该计算到预加载队列中,但这样就麻烦了,要退必须退整体,否则可能出现问题;
245
- $.webviews[id] = {
246
- webview: webview, //目前仅preload的缓存webview
247
- preload: true,
248
- show: $.showOptions(options.show),
249
- afterShowMethodName: options.afterShowMethodName //就不应该用evalJS。应该是通过事件消息通讯
250
- };
251
- //索引该预加载窗口
252
- var preloads = $.data.preloads;
253
- var index = preloads.indexOf(id);
254
- if (~index) { //删除已存在的(变相调整插入位置)
255
- preloads.splice(index, 1);
256
- }
257
- preloads.push(id);
258
- if (preloads.length > $.options.preloadLimit) {
259
- //先进先出
260
- var first = $.data.preloads.shift();
261
- var webviewCache = $.webviews[first];
262
- if (webviewCache && webviewCache.webview) {
263
- //需要将自己打开的所有页面,全部close;
264
- //关闭该预加载webview
265
- $.closeAll(webviewCache.webview);
266
- }
267
- //删除缓存
268
- delete $.webviews[first];
269
- }
270
- } else {
271
- if (isCreate !== false) { //直接创建非预加载窗口
272
- webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), options.extras);
273
- if (options.subpages) {
274
- $.each(options.subpages, function(index, subpage) {
275
- var subWebview = plus.webview.create(subpage.url, subpage.id || subpage.url, $.windowOptions(subpage.styles), subpage.extras);
276
- webview.append(subWebview);
277
- });
278
- }
279
- }
280
- }
281
- return webview;
282
- };
283
-
284
- /**
285
- * 预加载
286
- */
287
- $.preload = function(options) {
288
- //调用预加载函数,不管是否传递preload参数,强制变为true
289
- if (!options.preload) {
290
- options.preload = true;
291
- }
292
- return $.createWindow(options);
293
- };
294
-
295
- /**
296
- *关闭当前webview打开的所有webview;
297
- */
298
- $.closeOpened = function(webview) {
299
- var opened = webview.opened();
300
- if (opened) {
301
- for (var i = 0, len = opened.length; i < len; i++) {
302
- var openedWebview = opened[i];
303
- var open_open = openedWebview.opened();
304
- if (open_open && open_open.length > 0) {
305
- $.closeOpened(openedWebview);
306
- } else {
307
- //如果直接孩子节点,就不用关闭了,因为父关闭的时候,会自动关闭子;
308
- if (openedWebview.parent() !== webview) {
309
- openedWebview.close('none');
310
- }
311
- }
312
- }
313
- }
314
- };
315
- $.closeAll = function(webview, aniShow) {
316
- $.closeOpened(webview);
317
- if (aniShow) {
318
- webview.close(aniShow);
319
- } else {
320
- webview.close();
321
- }
322
- };
323
-
324
- /**
325
- * 批量创建webview
326
- * @param {type} options
327
- * @returns {undefined}
328
- */
329
- $.createWindows = function(options) {
330
- $.each(options, function(index, option) {
331
- //初始化预加载窗口(创建)和非预加载窗口(仅配置,不创建)
332
- $.createWindow(option, false);
333
- });
334
- };
335
- /**
336
- * 创建当前页面的子webview
337
- * @param {type} options
338
- * @returns {webview}
339
- */
340
- $.appendWebview = function(options) {
341
- if (!window.plus) {
342
- return;
343
- }
344
- var id = options.id || options.url;
345
- var webview;
346
- if (!$.webviews[id]) { //保证执行一遍
347
- //TODO 这里也有隐患,比如某个webview不是作为subpage创建的,而是作为target webview的话;
348
- webview = plus.webview.create(options.url, id, options.styles, options.extras);
349
- //之前的实现方案:子窗口loaded之后再append到父窗口中;
350
- //问题:部分子窗口loaded事件发生较晚,此时执行父窗口的children方法会返回空,导致父子通讯失败;
351
- // 比如父页面执行完preload事件后,需触发子页面的preload事件,此时未append的话,就无法触发;
352
- //修改方式:不再监控loaded事件,直接append
353
- //by chb@20150521
354
- // webview.addEventListener('loaded', function() {
355
- plus.webview.currentWebview().append(webview);
356
- // });
357
- $.webviews[id] = options;
358
- }
359
- return webview;
360
- };
361
-
362
- //全局webviews
363
- $.webviews = {};
364
- //预加载窗口索引
365
- $.data.preloads = [];
366
- //$.currentWebview
367
- $.plusReady(function() {
368
- $.currentWebview = plus.webview.currentWebview();
369
- });
370
- $.registerInit({
371
- name: '5+',
372
- index: 100,
373
- handle: function() {
374
- var options = $.options;
375
- var subpages = options.subpages || [];
376
- if ($.os.plus) {
377
- $.plusReady(function() {
378
- //TODO 这里需要判断一下,最好等子窗口加载完毕后,再调用主窗口的show方法;
379
- //或者:在openwindow方法中,监听实现;
380
- $.each(subpages, function(index, subpage) {
381
- $.appendWebview(subpage);
382
- });
383
- //判断是否首页
384
- if (plus.webview.currentWebview() === plus.webview.getWebviewById(plus.runtime.appid)) {
385
- $.isHomePage = true;
386
- //首页需要自己激活预加载;
387
- //timeout因为子页面loaded之后才append的,防止子页面尚未append、从而导致其preload未触发的问题;
388
- setTimeout(function() {
389
- triggerPreload(plus.webview.currentWebview());
390
- }, 300);
391
- }
392
- //设置ios顶部状态栏颜色;
393
- if ($.os.ios && $.options.statusBarBackground) {
394
- plus.navigator.setStatusBarBackground($.options.statusBarBackground);
395
- }
396
- if ($.os.android && parseFloat($.os.version) < 4.4) {
397
- //解决Android平台4.4版本以下,resume后,父窗体标题延迟渲染的问题;
398
- if (plus.webview.currentWebview().parent() == null) {
399
- document.addEventListener("resume", function() {
400
- var body = document.body;
401
- body.style.display = 'none';
402
- setTimeout(function() {
403
- body.style.display = '';
404
- }, 10);
405
- });
406
- }
407
- }
408
- });
409
- } else {
410
- if (subpages.length > 0) {
411
- var err = document.createElement('div');
412
- err.className = 'mui-error';
413
- //文字描述
414
- var span = document.createElement('span');
415
- span.innerHTML = '在该浏览器下,不支持创建子页面,具体参考';
416
- err.appendChild(span);
417
- var a = document.createElement('a');
418
- a.innerHTML = '"mui框架适用场景"';
419
- a.href = 'http://ask.dcloud.net.cn/article/113';
420
- err.appendChild(a);
421
- document.body.appendChild(err);
422
- console.log('在该浏览器下,不支持创建子页面');
423
- }
424
-
425
- }
426
-
427
- }
428
- });
429
- window.addEventListener('preload', function() {
430
- //处理预加载部分
431
- var webviews = $.options.preloadPages || [];
432
- $.plusReady(function() {
433
- $.each(webviews, function(index, webview) {
434
- $.createWindow($.extend(webview, {
435
- preload: true
436
- }));
437
- });
438
-
439
- });
440
- });
441
- })(mui);
@@ -1,100 +0,0 @@
1
- /**
2
- * mui.init
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- $.global = $.options = {
8
- gestureConfig: {
9
- tap: true,
10
- doubletap: false,
11
- longtap: false,
12
- hold: false,
13
- flick: true,
14
- swipe: true,
15
- drag: true
16
- }
17
- };
18
- /**
19
- *
20
- * @param {type} options
21
- * @returns {undefined}
22
- */
23
- $.initGlobal = function(options) {
24
- $.options = $.extend(true, $.global, options);
25
- return this;
26
- };
27
- var inits = {};
28
-
29
- var isInitialized = false;
30
- //TODO 自动调用init?因为用户自己调用init的时机可能不确定,如果晚于自动init,则会有潜在问题
31
- // $.ready(function() {
32
- // setTimeout(function() {
33
- // if (!isInitialized) {
34
- // $.init();
35
- // }
36
- // }, 300);
37
- // });
38
- /**
39
- * 单页配置 初始化
40
- * @param {object} options
41
- */
42
- $.init = function(options) {
43
- isInitialized = true;
44
- $.options = $.extend(true, $.global, options || {});
45
- $.ready(function() {
46
- $.each($.inits, function(index, init) {
47
- var isInit = !!(!inits[init.name] || init.repeat);
48
- if (isInit) {
49
- init.handle.call($);
50
- inits[init.name] = true;
51
- }
52
- });
53
- });
54
- return this;
55
- };
56
-
57
- /**
58
- * 增加初始化执行流程
59
- * @param {function} init
60
- */
61
- $.registerInit = function(init) {
62
- return $.registerHandler('inits', init);
63
- };
64
- $(function() {
65
- var classList = document.body.classList;
66
- var os = [];
67
- if ($.os.ios) {
68
- os.push({
69
- os: 'ios',
70
- version: $.os.version
71
- });
72
- classList.add($.className('ios'));
73
- } else if ($.os.android) {
74
- os.push({
75
- os: 'android',
76
- version: $.os.version
77
- });
78
- classList.add($.className('android'));
79
- }
80
- if ($.os.wechat) {
81
- os.push({
82
- os: 'wechat',
83
- version: $.os.wechat.version
84
- });
85
- classList.add($.className('wechat'));
86
- }
87
- if (os.length) {
88
- $.each(os, function(index, osObj) {
89
- var version = '';
90
- var classArray = [];
91
- if (osObj.version) {
92
- $.each(osObj.version.split('.'), function(i, v) {
93
- version = version + (version ? '-' : '') + v;
94
- classList.add($.className(osObj.os + '-' + version));
95
- });
96
- }
97
- });
98
- }
99
- });
100
- })(mui);
@@ -1,57 +0,0 @@
1
- /**
2
- * mui.init pulldownRefresh
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- $.registerInit({
8
- name: 'pullrefresh',
9
- index: 1000,
10
- handle: function() {
11
- var options = $.options;
12
- var pullRefreshOptions = options.pullRefresh || {};
13
- var hasPulldown = pullRefreshOptions.down && pullRefreshOptions.down.hasOwnProperty('callback');
14
- var hasPullup = pullRefreshOptions.up && pullRefreshOptions.up.hasOwnProperty('callback');
15
- if (hasPulldown || hasPullup) {
16
- var container = pullRefreshOptions.container;
17
- if (container) {
18
- var $container = $(container);
19
- if ($container.length === 1) {
20
- if ($.os.plus && $.os.android) { //android 5+
21
- $.plusReady(function() {
22
- var webview = plus.webview.currentWebview();
23
- if (hasPullup) {
24
- //当前页面初始化pullup
25
- var upOptions = {};
26
- upOptions.up = pullRefreshOptions.up;
27
- upOptions.webviewId = webview.id || webview.getURL();
28
- $container.pullRefresh(upOptions);
29
- }
30
- if (hasPulldown) {
31
- var parent = webview.parent();
32
- var id = webview.id || webview.getURL();
33
- if (parent) {
34
- if (!hasPullup) { //如果没有上拉加载,需要手动初始化一个默认的pullRefresh,以便当前页面容器可以调用endPulldownToRefresh等方法
35
- $container.pullRefresh({
36
- webviewId: id
37
- });
38
- }
39
- var downOptions = {
40
- webviewId: id
41
- };
42
- downOptions.down = $.extend({}, pullRefreshOptions.down);
43
- downOptions.down.callback = '_CALLBACK';
44
- //父页面初始化pulldown
45
- parent.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify(downOptions) + "')");
46
- }
47
- }
48
- });
49
- } else {
50
- $container.pullRefresh(pullRefreshOptions);
51
- }
52
- }
53
- }
54
- }
55
- }
56
- });
57
- })(mui);
@@ -1,108 +0,0 @@
1
- /**
2
- * MUI JSONP
3
- * varstion 1.0.0
4
- * by Houfeng
5
- * Houfeng@DCloud.io
6
- */
7
-
8
- (function($, win, doc) {
9
-
10
- var callbackIndex = 0;
11
-
12
- //生成回调函数名
13
- var createCallbackName = function() {
14
- return 'mui_jsonp_callback_' + (callbackIndex++);
15
- };
16
-
17
- var container = doc.body;
18
-
19
- //导入 script 元素
20
- var importScript = function(url) {
21
- var element = doc.createElement('script');
22
- element.src = url;
23
- element.async = true;
24
- element.defer = true;
25
- container.appendChild(element);
26
- return element;
27
- };
28
-
29
- //转换 URL,JSONP 只支持 get 方式的 queryString ,需将 data 拼入 url
30
- var convertUrl = function(url, data, jsonpParam, callbacnName) {
31
- if (jsonpParam) {
32
- url = url.replace(jsonpParam + '=?', jsonpParam + '=' + callbacnName);
33
- } else {
34
- data['callback'] = callbacnName;
35
- }
36
- var buffer = [];
37
- for (var key in data) {
38
- buffer.push(key + '=' + encodeURIComponent(data[key]));
39
- }
40
- return url + (url.indexOf('?') > -1 ? '&' : '?') + buffer.join('&');
41
- };
42
-
43
- //获取 QueryString
44
- var getQueryString = function(url) {
45
- url = url || location.search;
46
- var splitIndex = url.indexOf('?');
47
- var queryString = url.substr(splitIndex + 1);
48
- var paramArray = queryString.split('&');
49
- var result = {};
50
- for (var i in paramArray) {
51
- var params = paramArray[i].split('=');
52
- result[params[0]] = params[1];
53
- }
54
- return result;
55
- }
56
-
57
- //获取将传递给服务器的回调函数的请求参数名
58
- var getJSONPParam = function(url) {
59
- var query = getQueryString(url);
60
- for (var name in query) {
61
- if (query[name] === '?') {
62
- return name;
63
- }
64
- }
65
- return null;
66
- };
67
-
68
- /**
69
- * @description JSONP 方法
70
- * @param {String} url 将请求的地址
71
- * @param {Object} data 请求参数数据
72
- * @param {Function} callback 请求完成时回调函数
73
- * @return {mui} mui 对象自身
74
- **/
75
- $.getJSONP = function(url, data, callback) {
76
- if (!url) {
77
- throw "mui.getJSONP URL error!";
78
- }
79
- var jsonpParam = getJSONPParam(url);
80
- var callbackName = createCallbackName();
81
- data = data || {};
82
- callback = callback || $.noop;
83
- url = convertUrl(url, data, jsonpParam, callbackName);
84
- var scriptElement = null;
85
- win[callbackName] = function(result) {
86
- callback(result);
87
- if (scriptElement) {
88
- container.removeChild(scriptElement);
89
- }
90
- win[callbackName] = null;
91
- delete win[callbackName];
92
- };
93
- scriptElement = importScript(url);
94
- return $;
95
- };
96
-
97
- //为原 mui.getJSON 方法添加同 jQuery.getJSON 一样的 JSONP 支持
98
- $.__getJSON = $.getJSON;
99
- $.getJSON = function(url, data, callback) {
100
- var isJSONP = getJSONPParam(url) != null;
101
- if (isJSONP) {
102
- return $.getJSONP(url, data, callback);
103
- } else {
104
- return $.__getJSON(url, data, callback);
105
- }
106
- };
107
-
108
- }(mui, window, document));