123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /*!
- @Name:layer mobile v2.0.0 弹层组件移动版
- @Author:贤心
- @Site:http://layer.layui.com/mobie/
- @License:MIT
-
- */
- layui.define(function(exports){
-
- "use strict";
- var win = window, doc = document, query = 'querySelectorAll', claname = 'getElementsByClassName', S = function(s){
- return doc[query](s);
- };
- //默认配置
- var config = {
- type: 0
- ,shade: true
- ,shadeClose: true
- ,fixed: true
- ,anim: 'scale' //默认动画类型
- };
- var ready = {
- extend: function(obj){
- var newobj = JSON.parse(JSON.stringify(config));
- for(var i in obj){
- newobj[i] = obj[i];
- }
- return newobj;
- },
- timer: {}, end: {}
- };
- //点触事件
- ready.touch = function(elem, fn){
- elem.addEventListener('click', function(e){
- fn.call(this, e);
- }, false);
- };
- var index = 0, classs = ['layui-m-layer'], Layer = function(options){
- var that = this;
- that.config = ready.extend(options);
- that.view();
- };
- Layer.prototype.view = function(){
- var that = this, config = that.config, layerbox = doc.createElement('div');
- that.id = layerbox.id = classs[0] + index;
- layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0));
- layerbox.setAttribute('index', index);
-
- //标题区域
- var title = (function(){
- var titype = typeof config.title === 'object';
- return config.title
- ? '<h3 style="'+ (titype ? config.title[1] : '') +'">'+ (titype ? config.title[0] : config.title) +'</h3>'
- : '';
- }());
-
- //按钮区域
- var button = (function(){
- typeof config.btn === 'string' && (config.btn = [config.btn]);
- var btns = (config.btn || []).length, btndom;
- if(btns === 0 || !config.btn){
- return '';
- }
- btndom = '<span yes type="1">'+ config.btn[0] +'</span>'
- if(btns === 2){
- btndom = '<span no type="0">'+ config.btn[1] +'</span>' + btndom;
- }
- return '<div class="layui-m-layerbtn">'+ btndom + '</div>';
- }());
-
- if(!config.fixed){
- config.top = config.hasOwnProperty('top') ? config.top : 100;
- config.style = config.style || '';
- config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px';
- }
-
- if(config.type === 2){
- config.content = '<i></i><i class="layui-m-layerload"></i><i></i><p>'+ (config.content||'') +'</p>';
- }
-
- if(config.skin) config.anim = 'up';
- if(config.skin === 'msg') config.shade = false;
-
- layerbox.innerHTML = (config.shade ? '<div '+ (typeof config.shade === 'string' ? 'style="'+ config.shade +'"' : '') +' class="layui-m-layershade"></div>' : '')
- +'<div class="layui-m-layermain" '+ (!config.fixed ? 'style="position:static;"' : '') +'>'
- +'<div class="layui-m-layersection">'
- +'<div class="layui-m-layerchild '+ (config.skin ? 'layui-m-layer-' + config.skin + ' ' : '') + (config.className ? config.className : '') + ' ' + (config.anim ? 'layui-m-anim-' + config.anim : '') +'" ' + ( config.style ? 'style="'+config.style+'"' : '' ) +'>'
- + title
- +'<div class="layui-m-layercont">'+ config.content +'</div>'
- + button
- +'</div>'
- +'</div>'
- +'</div>';
-
- if(!config.type || config.type === 2){
- var dialogs = doc[claname](classs[0] + config.type), dialen = dialogs.length;
- if(dialen >= 1){
- layer.close(dialogs[0].getAttribute('index'))
- }
- }
-
- document.body.appendChild(layerbox);
- var elem = that.elem = S('#'+that.id)[0];
- config.success && config.success(elem);
-
- that.index = index++;
- that.action(config, elem);
- };
- Layer.prototype.action = function(config, elem){
- var that = this;
-
- //自动关闭
- if(config.time){
- ready.timer[that.index] = setTimeout(function(){
- layer.close(that.index);
- }, config.time*1000);
- }
-
- //确认取消
- var btn = function(){
- var type = this.getAttribute('type');
- if(type == 0){
- config.no && config.no();
- layer.close(that.index);
- } else {
- config.yes ? config.yes(that.index) : layer.close(that.index);
- }
- };
- if(config.btn){
- var btns = elem[claname]('layui-m-layerbtn')[0].children, btnlen = btns.length;
- for(var ii = 0; ii < btnlen; ii++){
- ready.touch(btns[ii], btn);
- }
- }
-
- //点遮罩关闭
- if(config.shade && config.shadeClose){
- var shade = elem[claname]('layui-m-layershade')[0];
- ready.touch(shade, function(){
- layer.close(that.index, config.end);
- });
- }
- config.end && (ready.end[that.index] = config.end);
- };
- var layer = {
- v: '2.0 m',
- index: index,
-
- //核心方法
- open: function(options){
- var o = new Layer(options || {});
- return o.index;
- },
-
- close: function(index){
- var ibox = S('#'+classs[0]+index)[0];
- if(!ibox) return;
- ibox.innerHTML = '';
- doc.body.removeChild(ibox);
- clearTimeout(ready.timer[index]);
- delete ready.timer[index];
- typeof ready.end[index] === 'function' && ready.end[index]();
- delete ready.end[index];
- },
-
- //关闭所有layer层
- closeAll: function(){
- var boxs = doc[claname](classs[0]);
- for(var i = 0, len = boxs.length; i < len; i++){
- layer.close((boxs[0].getAttribute('index')|0));
- }
- }
- };
- exports('layer-mobile', layer);
- });
|