123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- /*!
- * B-JUI v1.2 (http://b-jui.com)
- * Git@OSC (http://git.oschina.net/xknaan/B-JUI)
- * Copyright 2014 K'naan (xknaan@163.com).
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- */
- /* ========================================================================
- * B-JUI: bjui-alertmsg.js v1.2
- * @author K'naan (xknaan@163.com)
- * -- Modified from dwz.alertMsg.js (author:ZhangHuihua@msn.com)
- * http://git.oschina.net/xknaan/B-JUI/blob/master/BJUI/js/bjui-alertmsg.js
- * ========================================================================
- * Copyright 2014 K'naan.
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- * ======================================================================== */
- +function ($) {
- 'use strict';
-
- // ALERTMSG GLOBAL ELEMENTS
- // ======================
-
- var $box, $alertbg, timer
-
- $(function() {
- var INIT_ALERTMSG = function() {
- $box = $(FRAG.alertBoxFrag).hide().html('')
- $alertbg = $(FRAG.alertBackground).hide().html('')
- $('body').append('<!-- alert msg box -->').append($box).append('<!-- alert msg box mask bg -->').append($alertbg)
- }
-
- INIT_ALERTMSG()
- })
-
- // ALERTMSG CLASS DEFINITION
- // ======================
- var Alertmsg = function(element, options) {
- this.$element = $(element)
- this.options = options
- this.tools = this.TOOLS()
- this.clearTime = null
- }
-
- Alertmsg.DEFAULTS = {
- displayPosition : 'topcenter', // Optional 'topleft, topcenter, topright, middleleft, middlecenter, middleright, bottomleft, bottomcenter, bottomright'
- displayMode : 'slide', // Optional 'none, fade, slide'
- autoClose : null,
- alertTimeout : 3000,
- mask : null,
- types : {error:'error', info:'info', warn:'warn', correct:'correct', confirm:'confirm'},
- fas : {error:'fa-times-circle', info:'fa-info-circle', warn:'fa-exclamation-circle', correct:'fa-check-circle', confirm:'fa-question-circle'}
- }
-
- Alertmsg.prototype.TOOLS = function() {
- var that = this, options = that.options
- var tools = {
- getTitle: function(key){
- return options.title || BJUI.regional.alertmsg.title[key]
- },
- keydownOk: function(event) {
- if (event.which == BJUI.keyCode.ENTER) {
- event.data.target.trigger('click')
- return false
- }
- return true
- },
- keydownEsc: function(event) {
- if (event.which == BJUI.keyCode.ESC) event.data.target.trigger('click')
- },
- openPosition: function() {
- var position = BJUI.alertMsg.displayPosition, mode = BJUI.alertMsg.displayMode, width = 460, height = $box.outerHeight(), startCss = {}, endCss = {}
-
- if (position) {
- if (options.displayPosition && options.displayPosition != 'topcenter')
- position = options.displayPosition
- } else {
- position = options.displayPosition
- }
-
- if (mode) {
- if (options.displayMode && options.displayMode != 'silde')
- mode = options.displayMode
- } else {
- mode = options.displayMode
- }
-
- switch (position) {
- case 'topleft':
- startCss = {top:0 - height, left:0, 'margin-left':0}
- endCss = {top:0}
-
- break
- case 'topcenter':
- startCss = {top:0 - height}
- endCss = {top:0}
-
- break
- case 'topright':
- startCss = {top:0 - height, left:'auto', right:0, 'margin-left':0}
- endCss = {top:0}
-
- break
- case 'middleleft':
- startCss = {top:'50%', left:0 - width, 'margin-left':0, 'margin-top':0 - height/2}
- endCss = {left:0}
-
- break
- case 'middlecenter':
- startCss = {top:'0', 'margin-top':0 - height/2}
- endCss = {top:'50%'}
-
- break
- case 'middleright':
- startCss = {top:'50%', left:'auto', right:0 - width, 'margin-top':0 - height/2}
- endCss = {right:0}
-
- break
- case 'bottomleft':
- startCss = {top:'auto', left:0, bottom:0 - height, 'margin-left':0}
- endCss = {bottom:0}
-
- break
- case 'bottomcenter':
- startCss = {top:'auto', bottom:0 - height}
- endCss = {bottom:0}
-
- break
- case 'bottomright':
- startCss = {top:'auto', left:'auto', right:0, bottom:0 - height, 'margin-left':0}
- endCss = {bottom:0}
-
- break
- }
-
- if (mode == 'slide') {
- $box.css(startCss).show().animate(endCss, 500)
- } else if (mode == 'fade') {
- startCss.opacity = 0.1
- $box.css(startCss).css(endCss).show().animate({opacity:1}, 500)
- } else {
- $box.css(startCss).css(endCss).show()
- }
- },
- closePosition: function() {
- var position = BJUI.alertMsg.displayPosition, mode = BJUI.alertMsg.displayMode, width = 460, height = $box.outerHeight(), endCss = {}
-
- if (position) {
- if (options.displayPosition && options.displayPosition != 'topcenter')
- position = options.displayPosition
- } else {
- position = options.displayPosition
- }
-
- if (mode) {
- if (options.displayMode && options.displayMode != 'silde')
- mode = options.displayMode
- } else {
- mode = options.displayMode
- }
-
- switch (position) {
- case 'topleft':
- endCss = {top:0 - height}
-
- break
- case 'topcenter':
- endCss = {top:0 - height}
-
- break
- case 'topright':
- endCss = {top:0 - height}
-
- break
- case 'middleleft':
- endCss = {left:0 - width}
-
- break
- case 'middlecenter':
- endCss = {top:0 - height}
-
- break
- case 'middleright':
- endCss = {right:0 - width}
-
- break
- case 'bottomleft':
- endCss = {bottom:0 - height}
-
- break
- case 'bottomcenter':
- endCss = {bottom:0 - height}
-
- break
- case 'bottomright':
- endCss = {bottom:0 - height}
-
- break
- }
-
- if (mode == 'slide') {
- $box.animate(endCss, 500, function() {
- $alertbg.hide()
- $(this).hide().empty()
- })
- } else if (mode == 'fade') {
- $box.animate({opacity:0}, 500, function() {
- $alertbg.hide()
- $(this).hide().empty()
- })
- } else {
- $box.hide().remove()
- $alertbg.hide()
- }
- },
- open: function(type, msg, buttons) {
- var tools = this, btnsHtml = '', $newbox, $btns, alertTimeout = BJUI.alertMsg.alertTimeout
-
- if (buttons) {
- for (var i = 0; i < buttons.length; i++) {
- var sRel = buttons[i].call ? 'callback' : ''
- var sCls = buttons[i].cls ? buttons[i].cls : 'default'
- var sIco = (buttons[i].cls && buttons[i].cls == 'green') ? 'check' : 'close'
-
- btnsHtml += FRAG.alertBtnFrag.replace('#btnMsg#', '<i class="fa fa-'+ sIco +'"></i> '+ buttons[i].name).replace('#callback#', sRel).replace('#class#', sCls)
- }
- }
- $newbox =
- $(FRAG.alertBoxFrag.replace('#type#', type)
- .replace('#fa#', options.fas[type])
- .replace('#title#', this.getTitle(type))
- .replace('#message#', msg)
- .replace('#btnFragment#', btnsHtml))
- .hide()
- .appendTo('body')
-
- if ($box && $box.length) $box.remove()
- $box = $newbox
-
- tools.openPosition()
-
- if (timer) {
- clearTimeout(timer)
- timer = null
- }
-
- if (options.mask == null) {
- if (!(options.types.info == type || options.types.correct == type))
- $alertbg.show()
- }
- if (options.autoClose == null) {
- if (options.types.info == type || options.types.correct == type) {
- if (alertTimeout) {
- if (options.alertTimeout && options.alertTimeout != 3000)
- alertTimeout = options.alertTimeout
- } else {
- alertTimeout = options.alertTimeout
- }
- timer = setTimeout(function() { tools.close() }, alertTimeout)
- }
- }
-
- $btns = $box.find('.btn')
-
- $btns.each(function(i) {
- $(this).on('click', $.proxy(function() {
- that.tools.close()
-
- var call = buttons[i].call
-
- if (typeof call == 'string') call = call.toFunc()
- if (typeof call == 'function') call.call()
- }, that)
- )
-
- if (buttons[i].keyCode == BJUI.keyCode.ENTER) {
- $(document).on('keydown.bjui.alertmsg.ok', {target:$btns.eq(i)}, tools.keydownOk)
- }
- if (buttons[i].keyCode == BJUI.keyCode.ESC) {
- $(document).on('keydown.bjui.alertmsg.esc', {target:$btns.eq(i)}, tools.keydownEsc)
- }
- })
- },
- alert: function(type, msg, btnoptions) {
- $.extend(options, typeof btnoptions == 'object' && btnoptions)
-
- var op = $.extend({}, {okName:BJUI.regional.alertmsg.btnMsg.ok, okCall:null}, options)
- var buttons = [
- {name:op.okName, call:op.okCall, cls:'default', keyCode:BJUI.keyCode.ENTER}
- ]
-
- this.open(type, msg, buttons)
- },
- close: function() {
- $(document).off('keydown.bjui.alertmsg.ok').off('keydown.bjui.alertmsg.esc')
-
- this.closePosition()
- }
- }
-
- return tools
- }
-
- Alertmsg.prototype.error = function(msg, btnoptions) {
- this.tools.alert(this.options.types.error, msg, btnoptions)
- }
-
- Alertmsg.prototype.info = function(msg, btnoptions) {
- this.tools.alert(this.options.types.info, msg, btnoptions)
- }
-
- Alertmsg.prototype.warn = function(msg, btnoptions) {
- this.tools.alert(this.options.types.warn, msg, btnoptions)
- }
-
- Alertmsg.prototype.ok = function(msg, btnoptions) {
- this.tools.alert(this.options.types.correct, msg, btnoptions)
- }
-
- Alertmsg.prototype.correct = function(msg, btnoptions) {
- this.tools.alert(this.options.types.correct, msg, btnoptions)
- }
-
- Alertmsg.prototype.confirm = function(msg, btnoptions) {
- $.extend(this.options, typeof btnoptions == 'object' && btnoptions)
-
- var op = $.extend({}, {okName:BJUI.regional.alertmsg.btnMsg.ok, okCall:null, cancelName:BJUI.regional.alertmsg.btnMsg.cancel, cancelCall:null}, this.options)
- var buttons = [
- {name:op.okName, call:op.okCall, cls:'green', keyCode:BJUI.keyCode.ENTER},
- {name:op.cancelName, call:op.cancelCall, cls:'red', keyCode:BJUI.keyCode.ESC}
- ]
-
- this.tools.open(this.options.types.confirm, msg, buttons)
- }
-
- // ALERTMSG PLUGIN DEFINITION
- // =======================
-
- function Plugin(option) {
- var args = arguments
- var property = option
-
- return this.each(function () {
- var $this = $(this)
- var options = $.extend({}, Alertmsg.DEFAULTS, $this.data(), typeof option == 'object' && option)
- var data = new Alertmsg(this, options)
-
- if (typeof property == 'string' && $.isFunction(data[property])) {
- [].shift.apply(args)
- if (!args) data[property]()
- else data[property].apply(data, args)
- } else {
- return
- }
- })
- }
- var old = $.fn.alertmsg
- $.fn.alertmsg = Plugin
- $.fn.alertmsg.Constructor = Alertmsg
-
- // ALERTMSG NO CONFLICT
- // =================
-
- $.fn.alertmsg.noConflict = function () {
- $.fn.alertmsg = old
- return this
- }
-
- // NAVTAB DATA-API
- // ==============
-
- $(document).on('click.bjui.alertmsg.data-api', '[data-toggle="alertmsg"]', function(e) {
- var $this = $(this), data = $this.data(), options = data.options, type, msg
-
- if (options) {
- if (typeof options == 'string') options = options.toObj()
- if (typeof options == 'object') {
- $.extend(data, options)
- }
- }
-
- type = data.type
- if (!type) return false
-
- Plugin.call($this, type, data.msg || type, data)
-
- e.preventDefault()
- })
-
- }(jQuery);
|