chore: update

This commit is contained in:
贤心 2021-05-18 02:42:31 +08:00
parent fdba3194fa
commit fc09eef635
20 changed files with 249 additions and 226 deletions

View File

@ -1,22 +0,0 @@
{
"name": "layui",
"main": "dist/layui.js",
"version": "2.6.6",
"homepage": "https://github.com/sentsin/layui",
"authors": [
"sentsin <xu@sentsin.com>"
],
"description": "Classic modular front-end component library",
"moduleType": [
"amd",
"globals"
],
"keywords": [
"layui",
"ui",
"JavaScript Framework",
"toolkit",
"front-end component library"
],
"license": "MIT"
}

2
dist/css/layui.css vendored

File diff suppressed because one or more lines are too long

7
dist/layui.js vendored

File diff suppressed because one or more lines are too long

51
examples/base.html Normal file
View File

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>基础方法 - layui</title>
<link rel="stylesheet" href="../src/css/layui.css">
</head>
<body>
<div class="layui-container" style="padding: 30px 0;">
<div class="" style="padding: 30px 0;">
<blockquote class="layui-elem-quote" style="color: #666;">
调试结果查看浏览器控制台
</blockquote>
</div>
</div>
<script src="../src/layui.js"></script>
<script>
layui.use('lay', function(){
console.log(
'layui.sort: ',
layui.sort([{a: 3},{a: 0},{a: 0},{a: -1},{a: -5},{a: 6},{a: 9}], 'a')
);
console.log(
'layui._typeof: ',
layui._typeof(new RegExp()), layui._typeof(new Date()), layui._typeof([])
);
console.log(
'layui._isArray ',
layui._isArray([1,6]), layui._isArray(lay('div')), layui._isArray(document.querySelectorAll('div')),
layui._isArray({key: 'value'})
);
});
</script>
</body>
</html>

View File

@ -8,7 +8,7 @@
,"data": [{
"id": "10001"
,"username": "杜甫"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "鼠标移动到此处,可以通过点击单元格右侧的下拉图标,查看到被隐藏的全部内容。"
@ -19,7 +19,7 @@
}, {
"id": "10002"
,"username": "李白"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
@ -31,7 +31,7 @@
}, {
"id": "10003"
,"username": "王勃"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -42,7 +42,7 @@
}, {
"id": "10004"
,"username": "李清照"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -53,7 +53,7 @@
}, {
"id": "10005"
,"username": "冰心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -64,7 +64,7 @@
}, {
"id": "10006"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -75,7 +75,7 @@
}, {
"id": "10007"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -86,7 +86,7 @@
}, {
"id": "10008"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"

View File

@ -6,7 +6,7 @@
"list": [{
"id": "10001"
,"username": "杜甫3"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "鼠标移动到此处,可以通过点击单元格右侧的下拉图标,查看到被隐藏的全部内容。"
@ -17,7 +17,7 @@
}, {
"id": "10002"
,"username": "李白3"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
@ -29,7 +29,7 @@
}, {
"id": "10003"
,"username": "王勃"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -40,7 +40,7 @@
}, {
"id": "10004"
,"username": "李清照"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -51,7 +51,7 @@
}, {
"id": "10005"
,"username": "冰心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
@ -62,7 +62,7 @@
}, {
"id": "10006"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"email": "test@email.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"

View File

@ -121,13 +121,14 @@ layui.use('laydate', function(laydate){
//双控件
laydate.render({
elem: '#test1' //指定元素
,type: 'date'
,type: 'datetime'
,trigger: 'click'
//,lang: 'en'
//,theme: 'grid'
,range: true //开启日期范围,默认使用“-”分割
,min: 0
,max: 7
//,min: '1949-10-1'
//,max: '2021-5-9'
//,value: '2021-05-09 12:06:09'
//,value: '2021-05-08 - 2021-03-27'
,done: function(value, date, endDate){
console.log(value, date, endDate);
@ -163,7 +164,7 @@ layui.use('laydate', function(laydate){
//年选择器
laydate.render({
elem: '#test3'
,type: 'month'
,type: 'year'
//,range: true
//,trigger: 'click'
,done: function(value, date, endDate){
@ -177,8 +178,8 @@ layui.use('laydate', function(laydate){
//年月选择器
laydate.render({
elem: '#test4'
,type: 'time'
,range: true
,type: 'month'
,range: true
,trigger: 'click'
//,max: -30
,done: function(value, date, endDate){

View File

@ -63,10 +63,11 @@
<script src="../src/layui.js" src1="//www.layuicdn.com/layui-v2.5.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['table'], function(){
layui.use(['table', 'dropdown'], function(){
var table = layui.table
,$ = layui.$
,laytpl = layui.laytpl;
,laytpl = layui.laytpl
,dropdown = layui.dropdown;;
//全局设定某参数
table.set({
@ -112,10 +113,10 @@ layui.use(['table'], function(){
,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
,{field:'city', title:'城市', width:120, templet: '#cityTpl'}
,{field:'sign', title:'签名'}
,{field:'experience', title:'积分', width:80, sort: true, totalRow: '{{ d.TOTAL_NUMS }}🍉', templet: '<div>{{ d.experience }} 分</div>'}
,{field:'ip', title:'IP', width:120}
,{field:'logins', title:'登入次数', width:100, sort: true, totalRow: '{{ parseInt(d.TOTAL_NUMS) }} 次'}
,{field:'joinTime', title:'加入时间', width:120}
,{field: 'experience', title: '积分', width:80, sort: true, totalRow: '{{ d.TOTAL_NUMS }} 😊', templet: '<div>{{ d.experience }} 分</div>'}
,{field:'ip', title:'IP', width: 120}
,{field:'logins', title:'登入次数', width: 100, sort: true, totalRow: '{{ parseInt(d.TOTAL_NUMS) }} 次'}
,{field:'joinTime', title:'加入时间', width: 120}
,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
]]
@ -133,7 +134,18 @@ layui.use(['table'], function(){
}
,done: function(){
//下拉菜单
dropdown.render({
elem: '#dropdown' //可绑定在任意元素中,此处以上述按钮为例
,data: [{
id: 0,
title: '刷新'
}]
//菜单被点击的事件
,click: function(obj){
table.reload('test');
}
});
}
,error: function(res, msg){
@ -213,6 +225,7 @@ layui.use(['table'], function(){
abc: 123
,test: '新的 test1'
}
,defaultToolbar: ['print']
,page: {curr: 5, limit: 20}
,cols: ins1.config.cols
//,height: 300

View File

@ -13,6 +13,7 @@ var concat = require('gulp-concat');
var rename = require('gulp-rename');
var replace = require('gulp-replace');
var header = require('gulp-header');
var footer = require('gulp-footer');
var del = require('del');
var gulpif = require('gulp-if');
var minimist = require('minimist');
@ -27,7 +28,8 @@ var argv = require('minimist')(process.argv.slice(2), {
//注释
,note = [
'/*! <%= pkg.realname %> v<%= pkg.version %> | Released under the <%= pkg.license %> license */\n <%= js %>'
// '/*! <%= pkg.realname %> v<%= pkg.version %> | Released under the <%= pkg.license %> license */\n <%= js %>'
'/*! <%= pkg.license %> Licensed */<%= js %>'
,{pkg: pkg, js: ';'}
]
@ -135,7 +137,7 @@ gulp.task('rls', ['clearRelease'], function(){ // gulp rls
}
});
//打包 layer
//打包 layer 独版
gulp.task('layer', function(){
var dir = './release/layer';
@ -147,15 +149,15 @@ gulp.task('layer', function(){
});
//打包 layDate
//打包 layDate 独版
gulp.task('laydate', function(){
//发行目录
var dir = './release/laydate'
//注释
,notes = [
'/*! \n * <%= title %> \n * <%= license %> Licensed \n */ \n\n'
,{title: 'layDate 日期与时间组件', license: 'MIT'}
'\n/*! \n * <%= title %> \n * <%= license %> Licensed \n */ \n\n'
,{title: 'layDate 日期与时间组件(单独版)', license: 'MIT'}
];
//合并所依赖的 css 文件
@ -164,9 +166,13 @@ gulp.task('laydate', function(){
.pipe(gulp.dest(dir + '/src/theme/default'));
//合并所依赖的 js 文件
return gulp.src(['./src/modules/{lay,laydate}.js'])
return gulp.src(['./src/layui.js', './src/modules/{lay,laydate}.js'])
.pipe(replace('win.layui =', 'var layui =')) //将 layui 替换为局部变量
.pipe(replace('}(window); //gulp build: layui-footer', '')) //替换 layui.js 的落脚
.pipe(replace(';!function(window){ //gulp build: lay-header', '')) //替换 lay.js 的头部
.pipe(concat('laydate.js', {newLine: ''}))
.pipe(header.apply(null, notes))
.pipe(header.apply(null, notes)) //追加头部
.pipe(gulp.dest(dir + '/src'));
});

View File

@ -2,7 +2,7 @@
"name": "layui",
"realname": "layui",
"version": "2.6.7",
"description": "Classic modular front-end ui component library",
"description": "Classic modular Front-End UI library",
"main": "dist/layui.js",
"license": "MIT",
"scripts": {
@ -24,6 +24,7 @@
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.0 ",
"gulp-footer": "^2.0.2",
"gulp-header": "^1.8.8",
"gulp-if": "^2.0.1",
"gulp-minify-css": "^1.2.4",

View File

@ -1072,7 +1072,7 @@ body .layui-table-tips .layui-layer-content{background: none; padding: 0; box-sh
.layui-nav .layui-nav-item{position: relative; display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; line-height: 60px;}
.layui-nav .layui-nav-item a{display: block; padding: 0 20px; color: #fff; color: rgba(255,255,255,.7); transition: all .3s; -webkit-transition: all .3s;}
.layui-nav-bar,
.layui-nav .layui-this:after{content: ""; position: absolute; left: 0; top: 0; width: 0; height: 5px; background-color: #5FB878; transition: all .2s; -webkit-transition: all .2s;}
.layui-nav .layui-this:after{content: ""; position: absolute; left: 0; top: 0; width: 0; height: 5px; background-color: #5FB878; transition: all .2s; -webkit-transition: all .2s; pointer-events: none;}
.layui-nav-bar{z-index: 1000;}
.layui-nav[lay-bar="disabled"] .layui-nav-bar{display: none;}
.layui-nav[lay-bar="disabled"].layui-this:after{}
@ -1099,7 +1099,8 @@ body .layui-table-tips .layui-layer-content{background: none; padding: 0; box-sh
.layui-nav-tree .layui-nav-item{display: block; width: 100%; line-height: 40px;}
.layui-nav-tree .layui-nav-item a{position: relative; height: 40px; line-height: 40px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
.layui-nav-tree .layui-nav-item>a{padding-top: 5px; padding-bottom: 5px;}
.layui-nav-tree .layui-nav-more{right: 15px; padding: 6px 0;}
.layui-nav-tree .layui-nav-more{right: 15px;}
.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding: 5px 0;}
.layui-nav-tree .layui-nav-bar{width: 5px; height: 0;}
.layui-side .layui-nav-tree .layui-nav-bar{width: 2px;}
.layui-nav-tree .layui-this,

View File

@ -1,14 +1,14 @@
/*!
* layui
* Classic modular front-end ui framework
* Layui
* Classic modular Front-End UI library
* MIT Licensed
*/
;!function(win){
"use strict";
var doc = document, config = {
var doc = win.document, config = {
modules: {} //记录模块物理路径
,status: {} //记录模块加载状态
,timeout: 10 //符合规范的模块请求最长等待秒数
@ -16,11 +16,11 @@
}
,Layui = function(){
this.v = '2.6.6'; //版本号
this.v = '2.6.7'; //版本号
}
//识别预先可能定义的指定全局对象
,GLOBAL = window.LAYUI_GLOBAL || {}
,GLOBAL = win.LAYUI_GLOBAL || {}
//获取 layui 所在目录
,getPath = function(){
@ -125,7 +125,7 @@
}();
//如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery则不加载内部 jquery 模块
if(window.jQuery && jQuery.fn.on){
if(win.jQuery && jQuery.fn.on){
that.each(apps, function(index, item){
if(item === 'jquery'){
apps.splice(index, 1);
@ -537,29 +537,64 @@
Layui.prototype.hint = function(){
return {
error: error
}
};
};
//typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…
Layui.prototype._typeof = function(operand){
if(operand === null) return String(operand);
//细分引用类型
return (typeof operand === 'object' || typeof operand === 'function') ? function(){
var type = Object.prototype.toString.call(operand).match(/\s(.+)\]$/) || [] //匹配类型字符
,classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; //常见类型字符
type = type[1] || 'Object';
//除匹配到的类型外,其他对象均返回 object
return new RegExp('\\b('+ classType + ')\\b').test(type)
? type.toLowerCase()
: 'object';
}() : typeof operand;
};
//对象是否具备数组结构(此处为兼容 jQuery 对象)
Layui.prototype._isArray = function(obj){
var that = this
,len
,type = that._typeof(obj);
if(!obj || (typeof obj !== 'object') || obj === win) return false;
len = 'length' in obj && obj.length; //兼容 ie
return type === 'array' || len === 0 || (
typeof len === 'number' && len > 0 && (len - 1) in obj //兼容 jQuery 对象
);
};
//遍历
Layui.prototype.each = function(obj, fn){
var key
,that = this
,callFn = function(key, obj){
,callFn = function(key, obj){ //回调
return fn.call(obj[key], key, obj[key])
};
if(typeof fn !== 'function') return that;
obj = obj || [];
if(obj.constructor === Object){
for(key in obj){
if(callFn(key, obj)) break;
}
} else {
//优先处理数组结构
if(that._isArray(obj)){
for(key = 0; key < obj.length; key++){
if(callFn(key, obj)) break;
}
} else {
for(key in obj){
if(callFn(key, obj)) break;
}
}
return that;
};
@ -571,7 +606,7 @@
if(!key) return clone;
//如果是数字,按大小排序,如果是非数字,按字典序排序
//如果是数字,按大小排序;如果是非数字,则按字典序排序
clone.sort(function(o1, o2){
var isNum = /^-?\d+$/
,v1 = o1[key]
@ -579,7 +614,10 @@
if(isNum.test(v1)) v1 = parseFloat(v1);
if(isNum.test(v2)) v2 = parseFloat(v2);
return v1 - v2;
/*
if(v1 && !v2){
return 1;
} else if(!v1 && v2){
@ -593,6 +631,8 @@
} else {
return 0;
}
*/
});
desc && clone.reverse(); //倒序
@ -606,6 +646,9 @@
thisEvent.cancelBubble = true;
}
};
//字符常理
var EV_REMOVE = 'LAYUI-EVENT-REMOVE';
//自定义模块事件
Layui.prototype.onevent = function(modName, events, callback){
@ -628,7 +671,7 @@
};
//如果参数传入特定字符,则执行移除事件
if(params === 'LAYUI-EVENT-REMOVE'){
if(params === EV_REMOVE){
delete (that.cache.event[eventName] || {})[filterName];
return that;
}
@ -668,10 +711,11 @@
//移除模块事件
Layui.prototype.off = function(events, modName){
var that = this;
return that.event.call(that, modName, events, 'LAYUI-EVENT-REMOVE');
return that.event.call(that, modName, events, EV_REMOVE);
};
//exports layui
win.layui = new Layui();
}(window);
}(window); //gulp build: layui-footer

View File

@ -71,8 +71,9 @@ layui.define([''], function(exports){
Class.prototype.reload = function(options){
var that = this;
//防止数组深度合并
layui.each(options, function(key, item){
if(item.constructor === Array) delete that.config[key];
if(layui._typeof(item) === 'array') delete that.config[key];
});
that.config = $.extend(true, {}, that.config, options);

View File

@ -258,7 +258,7 @@ layui.define(['jquery', 'laytpl', 'lay'], function(exports){
//阻止全局事件
that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){
lay.stope(e);
layui.stope(e);
});
//触发菜单列表事件

View File

@ -100,7 +100,7 @@ layui.define('jquery', function(exports){
//基础事件体
,call = {
//Tab点击
//Tab 点击
tabClick: function(e, index, liElem, options){
options = options || {};
var othis = liElem || $(this)
@ -108,9 +108,12 @@ layui.define('jquery', function(exports){
,parents = options.headerElem ? othis.parent() : othis.parents('.layui-tab').eq(0)
,item = options.bodyElem ? $(options.bodyElem) : parents.children('.layui-tab-content').children('.layui-tab-item')
,elemA = othis.find('a')
,isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank' //是否存在跳转
,unselect = typeof othis.attr('lay-unselect') === 'string' //是否禁用选中
,filter = parents.attr('lay-filter');
if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank')){
//执行切换
if(!(isJump || unselect)){
othis.addClass(THIS).siblings().removeClass(THIS);
item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);
}
@ -229,7 +232,7 @@ layui.define('jquery', function(exports){
,filter = parents.attr('lay-filter')
,parent = othis.parent()
,child = othis.siblings('.'+NAV_CHILD)
,unselect = typeof parent.attr('lay-unselect') === 'string';
,unselect = typeof parent.attr('lay-unselect') === 'string'; //是否禁用选中
if(!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect){
if(!child[0]){
@ -310,12 +313,15 @@ layui.define('jquery', function(exports){
,follow = function(bar, nav, index){
var othis = $(this), child = othis.find('.'+NAV_CHILD);
if(nav.hasClass(NAV_TREE)){
var thisA = othis.children('.'+ NAV_TITLE);
bar.css({
top: othis.offset().top - nav.offset().top
,height: (thisA[0] ? thisA : othis).outerHeight()
,opacity: 1
});
//无子菜单时跟随
if(!child[0]){
var thisA = othis.children('.'+ NAV_TITLE);
bar.css({
top: othis.offset().top - nav.offset().top
,height: (thisA[0] ? thisA : othis).outerHeight()
,opacity: 1
});
}
} else {
child.addClass(NAV_ANIM);
@ -325,7 +331,7 @@ layui.define('jquery', function(exports){
});
//滑块定位
if(child[0]){
if(child[0]){ //若有子菜单,则滑块消失
bar.css({
left: bar.position().left + bar.width()/2
,width: 0
@ -371,13 +377,15 @@ layui.define('jquery', function(exports){
? itemElem.find('dd,>.'+ NAV_TITLE)
: itemElem).on('mouseenter', function(){
follow.call(this, bar, othis, index);
}).on('mouseleave', function(){
}).on('mouseleave', function(){ //鼠标移出
//是否为垂直导航
if(othis.hasClass(NAV_TREE)){
bar.css({
height: 0
,opacity: 0
});
} else {
//隐藏子菜单
clearTimeout(timerMore[index]);
timerMore[index] = setTimeout(function(){
othis.find('.'+NAV_CHILD).removeClass(SHOW);

View File

@ -618,7 +618,7 @@ layui.define('layer', function(exports){
,DANGER = 'layui-form-danger' //警示样式
,field = {} //字段集合
,button = $(this) //当前触发的按钮
,elem = button.parents(ELEM) //当前所在表单域
,elem = button.parents(ELEM).eq(0) //当前所在表单域
,verifyElem = elem.find('*[lay-verify]') //获取需要校验的元素
,formElem = button.parents('form')[0] //获取当前所在的 form 元素,如果存在的话
,filter = button.attr('lay-filter'); //获取过滤器

View File

@ -1,7 +1,7 @@
/*! lay 基础 DOM 操作 */
/*! lay 基础 DOM 操作 | MIT Licensed */
;!function(){
;!function(window){ //gulp build: lay-header
"use strict";
var MOD_NAME = 'lay' //模块名
@ -56,58 +56,36 @@
};
//lay 模块版本
lay.v = '1.0.0';
lay.v = '1.0.7';
//ie版本
lay.ie = function(){
var agent = navigator.userAgent.toLowerCase();
return (!!window.ActiveXObject || "ActiveXObject" in window) ? (
(agent.match(/msie\s(\d+)/) || [])[1] || '11' //由于ie11并没有msie的标识
(agent.match(/msie\s(\d+)/) || [])[1] || '11' //由于 ie11 并没有 msie 的标识
) : false;
}();
//获取当前 JS 所在目录
lay.getPath = function(){
var jsPath = document.currentScript ? document.currentScript.src : function(){
var js = document.scripts
,last = js.length - 1
,src;
for(var i = last; i > 0; i--){
if(js[i].readyState === 'interactive'){
src = js[i].src;
break;
}
}
return src || js[last].src;
}();
return jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
}
//中止冒泡
lay.stope = function(e){
e = e || window.event;
e.stopPropagation
? e.stopPropagation()
: e.cancelBubble = true;
/**
* 获取 layui 常见方法以便用于组件单独版
*/
lay.layui = layui;
lay.getPath = layui.cache.dir; //获取当前 JS 所在目录
lay.stope = layui.stope; //中止冒泡
lay.each = function(){ //遍历
layui.each.apply(layui, arguments);
return this;
};
//对象遍历
lay.each = function(obj, fn){
var key
,that = this;
if(typeof fn !== 'function') return that;
obj = obj || [];
if(obj.constructor === Object){
for(key in obj){
if(fn.call(obj[key], key, obj[key])) break;
}
} else {
for(key = 0; key < obj.length; key++){
if(fn.call(obj[key], key, obj[key])) break;
}
}
return that;
};
//数字前置补零
lay.digit = function(num, length, end){
@ -128,62 +106,7 @@
});
return elem;
};
//获取节点的 style 属性值
lay.getStyle = function(node, name){
var style = node.currentStyle ? node.currentStyle : window.getComputedStyle(node, null);
return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);
};
//载入 CSS 依赖
lay.link = function(href, fn, cssname){
var head = document.getElementsByTagName("head")[0]
,link = document.createElement('link');
if(typeof fn === 'string') cssname = fn;
var app = (cssname || href).replace(/\.|\//g, '');
var id = 'layuicss-'+ app
,STAUTS_NAME = 'creating'
,timeout = 0;
link.rel = 'stylesheet';
link.href = href;
link.id = id;
if(!document.getElementById(id)){
head.appendChild(link);
}
if(typeof fn !== 'function') return;
//轮询 css 是否加载完毕
(function poll(status) {
var delay = 100
,getLinkElem = document.getElementById(id); //获取动态插入的 link 元素
//如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范
if(++timeout > 10 * 1000 / delay){
return window.console && console.error(app +'.css: Invalid');
};
//css 加载就绪
if(parseInt(lay.getStyle(getLinkElem, 'width')) === 1989){
//如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态
if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');
//如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调
getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();
} else {
getLinkElem.setAttribute('lay-status', STAUTS_NAME);
setTimeout(function(){
poll(STAUTS_NAME);
}, delay);
}
}());
};
//当前页面是否存在滚动条
lay.hasScrollbar = function(){
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);
@ -482,5 +405,5 @@
});
}
}();
}(window, window.document);

View File

@ -1,14 +1,11 @@
/*!
* layDate 日期与时间控件
* MIT Licensed
*/
/*! layDate 日期与时间控件 | MIT Licensed */
;!function(window){
;!function(window, document){
"use strict";
var isLayui = window.layui && layui.define, ready = {
getPath: (window.lay && lay.getPath) ? lay.getPath() : ''
getPath: (window.lay && lay.getPath) ? lay.getPath : ''
//载入 CSS 依赖
,link: function(href, fn, cssname){
@ -17,8 +14,8 @@
if(!laydate.path) return;
//加载 css
if(window.lay && lay.link){
lay.link(laydate.path + href, fn, cssname);
if(window.lay && lay.layui){
lay.layui.link(laydate.path + href, fn, cssname);
}
}
}
@ -28,7 +25,7 @@
//外部调用
,laydate = {
v: '5.3.0'
v: '5.3.1'
,config: {} //全局配置项
,index: (window.laydate && window.laydate.v) ? 100000 : 0
,path: GLOBAL.laydate_dir || ready.getPath
@ -681,7 +678,7 @@
}
};
getEndDate();
if(typeof value === 'string' && value){
if(that.EXP_IF.test(value)){ //校验日期格式
if(options.range){
@ -1060,13 +1057,7 @@
//如果为年月选择器,点击了年列表,则切换到月选择器
if(options.type === 'month' && type === 'year'){
that.listYM[index][0] = ym;
if(isAlone){
if(index){
dateTime.year = ym;
} else {
that.endDate.year = ym;
}
}
isAlone && ((index ? that.endDate : dateTime).year = ym);
that.list('month', index);
}
} else {
@ -1682,5 +1673,5 @@
}()
);
}(window);
}(window, window.document);

View File

@ -93,7 +93,7 @@ var isLayui = window.layui && layui.define, $, win, ready = {
//默认内置方法。
var layer = {
v: '3.5.0',
v: '3.5.1',
ie: function(){ //ie版本
var agent = navigator.userAgent.toLowerCase();
return (!!window.ActiveXObject || "ActiveXObject" in window) ? (
@ -1135,17 +1135,21 @@ layer.photos = function(options, loop, key){
var dict = {};
options = options || {};
if(!options.photos) return;
var type = options.photos.constructor === Object;
var photos = type ? options.photos : {}, data = photos.data || [];
var start = photos.start || 0;
dict.imgIndex = (start|0) + 1;
//若 photos 并非选择器或 jQuery 对象,则为普通 object
var isObject = !(typeof options.photos === 'string' || options.photos instanceof $)
,photos = isObject ? options.photos : {}
,data = photos.data || []
,start = photos.start || 0;
dict.imgIndex = (start|0) + 1;
options.img = options.img || 'img';
var success = options.success;
delete options.success;
if(!type){ //页面直接获取
//如果 options.photos 不是一个对象
if(!isObject){ //页面直接获取
var parent = $(options.photos), pushData = function(){
data = [];
parent.find(options.img).each(function(index){

View File

@ -642,8 +642,10 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
options = options || {};
delete that.haveInit;
//如果直接传入数组 data则移除原来的数组以免数组发生深度拷贝
if(options.data && options.data.constructor === Array) delete that.config.data;
//防止数组深度合并
layui.each(options, function(key, item){
if(layui._typeof(item) === 'array') delete that.config[key];
});
//对参数进行深度或浅扩展
that.config = $.extend(deep, {}, that.config, options);
@ -728,7 +730,7 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
typeof options.done === 'function' && options.done(res, curr, res[response.countName]);
}
,error: function(e, msg){
that.errorView('数据接口请求异常:'+ msg);
that.errorView('请求异常,错误提示'+ msg);
that.renderForm();
that.setColsWidth();
@ -1203,12 +1205,12 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
if(options.totalRow){
bodyHeight = bodyHeight - (that.layTotal.outerHeight() || 40);
}
//减去分页栏的高度
if(options.page){
bodyHeight = bodyHeight - (that.layPage.outerHeight() || 41);
}
that.layMain.css('height', bodyHeight - 2);
};