@tower1229/flow-ui
Version:
Highly customizable UI framework based Seajs/jQuery
69 lines (66 loc) • 1.74 kB
JavaScript
/*
* name: spin.js
* version: v0.0.3
* update: .spin-wrap去掉id
* date: 2017-04-18
*/
define('spin', function(require, exports, module) {
"use strict";
var $ = window.$ || require('jquery'),
base = require('base'),
template = '<div class="spin-wrap"><div class="spin-main"><div class="spin-text"></div></div></div>',
def = {
el: null,
icon: '',
text: 'Loading',
color: '',
size: '',
hook: '',
iconRoate: true,
timeout: 0
},
Spin = function(config){
var opt = $.extend({}, def, config || {}),
$this = $(opt.el).length ? $(opt.el) : $('body'),
$spin = $(template),
hide = function(){
$spin.remove();
},
classes = [];
if(opt.icon && opt.icon.split){
var icon = $('<i class="ion">'+opt.icon+'</i>');
if(opt.iconRoate){
icon.addClass('spin-icon-load');
}
$spin.find('.spin-text').append(icon);
}
if(opt.text && opt.text.split){
$spin.find('.spin-text').append('<div>'+opt.text+'</div>');
}
if(opt.timeout){
setTimeout(hide, opt.timeout);
}
if(opt.color && opt.color.split){
classes.push('text-'+$.trim(opt.color));
}
if(opt.size && opt.size.split){
classes.push('spin-size-'+opt.size);
}
if(opt.hook && opt.hook.split){
classes.push(opt.hook);
}
if ($this.css('position') !== 'absolute' && $this.css('position') !== 'fixed') {
$this.css('position', 'relative');
}
$this.append($spin.addClass(classes.join(' ')).css('zIndex', base.getIndex()));
return {
hide: hide
};
};
$.fn.spin = function(config){
return Spin($.extend({
el: this
}, config || {}));
};
module.exports = Spin;
});