UNPKG

landers.dialog

Version:

landers.dialog

290 lines (276 loc) 9.34 kB
artDialog.fn.shake = function (){ var style = this.DOM.wrap[0].style, p = [4, 8, 4, 0, -4, -8, -4, 0], fx = function () { style.marginLeft = p.shift() + 'px'; if (p.length <= 0) { style.marginLeft = 0; clearInterval(timerId); }; }; p = p.concat(p.concat(p)); timerId = setInterval(fx, 13); return this; }; artDialog.fn.getLockMask = function(){ return $(this._lockMaskWrap); } artDialog.fn.getContent = function(){ return $(this.content()); }; artDialog.fn.find = function(selector){ return $(this.content()).find(selector); }; artDialog.fn.getOuter = function(){ return this.getWraper().children(); }; artDialog.fn.getWraper = function(){ return this.DOM.wrap; }; artDialog.fn.getStatus = function(){ var dlg = this, $dlg = dlg.getContent(); var data_key = 'dialog_status'; return $dlg.data(data_key); } artDialog.fn.status = function(status){ var dlg = this, $dlg = dlg.getContent(); var data_key = 'dialog_status'; var current = $dlg.data(data_key); if (status) status = status.toLowerCase(); var statuses = { free : ['busy', 'closed', undefined], busy : ['free', 'closed'], closing : ['free'], closed : ['closing'] }; var froms = statuses[status]; if (!froms) return current; if ($.inArray(current, froms) < 0 && current !== undefined && current != status) { alert('artDialog.fn.status提示:【' + dlg.config.title + '】“' + current + '” 不能转为 “' + status + '”'); return dlg; }; $dlg.data(data_key, status); // if (status == 'free') dlg.btn().enable(); else dlg.btn().disable(); return dlg; }; artDialog.fn.loading = function(params, callback){ if (typeof(params) == 'function') { callback = params; params = {}; }; if (params) { if (typeof(params) == 'string') { params = {text:params, size:'long'}; }; var dlg = this.status('busy'); Landers.response.loading({ wrap:dlg.getContent(), text:params.text, size:params.size, delay:params.delay }, function(){ callback && callback(function(rspn, newsize, delay, callback){ dlg.done(rspn, newsize || 'long', delay || 2000, callback); }); }); }; return dlg; }; artDialog.fn.done = function(){ var args = []; for (var i = 0; i < arguments.length; i++) args.push(arguments[i]); var dlg = this.status('free'); var $dlg = dlg.getContent(); args.push($dlg); setTimeout(function(){ Landers.response.show(args); if (args.length == 2 && typeof args[0] == 'object' && args[0].status_code == 403) { dlg.close(); } }, 200); return dlg; }; artDialog.fn.error = function(msg){ this.done({ success : false, message : msg }); }; artDialog.fn.success = function(msg){ this.done({ success : true, message : msg }); } // artDialog.fn.response = function(aret, delay){ // var dlg = this, $dlg = dlg.getContent(); // Landers.response.show(aret, $dlg, delay); // return dlg; // } artDialog.fn.minimize = function(){ var dlg = this, $dlg = dlg.getContent(); var $button = $dlg.closest('tr').next(); var $close = $dlg.closest('tr').prev().find('.aui_close'); var text1 = '<span class="mt-2 inblock hand">_</span>'; var text2 = '<span class="ml-1 mt-1 inblock hand"'; text2 += ' style="font-family:webdings">c</span>'; var $min = $close.clone().html(text1).removeClass('aui_close').addClass('aui_min') .click(function(){ var $me = $(this); if ($dlg.css('display')=='none'){ $dlg.css($dlg.data('cssdata')).slideDown(200); $me.html(text1); if ($button.text()) $button.show(); } else { var cssdata = {}; cssdata.height = $dlg.height(); $dlg.parent().css('height','auto'); $dlg.data('cssdata',cssdata).slideUp(200); $me.html(text2); if ($button.text()) $button.hide(); }; }); $close.before($min); }; artDialog.fn.appendBottom = function($_html){ var dlg = this, $dlg = dlg.getContent(); var $btn_wrap = this.button.wrap($dlg); var $cont = $btn_wrap.parent(); var $html = $($_html); $cont.css({position:'relative'}); $html.css({position:'absolute', 'line-height':'39px', top:'0px'}); $cont.append($html); }; artDialog.fn.statusBar = function() { var dlg = this, $dlg = dlg.getOuter(); $aui_footer = $dlg.find('.aui_footer'); var $aui_status = $aui_footer.children('.aui_status'); if ( $aui_status.length ) return $aui_status; $aui_status = $('<div class="aui_status"></div>'); $aui_footer.css({position:'relative'}); $aui_status.css({position:'absolute', 'line-height':'30px', top:'0px', left:'0px', padding:'8px'}); return $aui_status.appendTo($aui_footer); } artDialog.fn.bottomBar = function() { var dlg = this, $dlg = dlg.getOuter(); $aui_footer = $dlg.find('.aui_footer'); var $aui_bottom = $aui_footer.children('.aui_bottom'); if ( $aui_bottom.length ) return $aui_bottom; $aui_bottom = $('<div class="aui_bottom"></div>'); $aui_footer.css({position:'relative'}); return $aui_bottom.appendTo($aui_footer); } artDialog.fn.btn = function(){ var dlg = this, $dlg = dlg.getContent(); var $tr = $dlg.parent().parent().next(); return { row:function(){ return $tr; }, get:function(i_text){ var $btns = $tr.find('button'); if (i_text===undefined) return $btns; var $btn = $(); if (typeof i_text == 'string') { $btns.each(function(){ if ($(this).text()==i_text) { $btn = $(this); return false; } }); return $btn; } else if ($.isNumeric(i_text)) { return $btns.eq(i_text); } else return $btns; }, wrap:function(){ var $btn = this.get($_dlg, 0); if (!$btn.length) return $(); return $btn.parent(); }, show:function(i_text){ return this.get(i_text).show(); }, hide:function(i_text){ return this.get(i_text).hide(); }, fadeIn:function(i_text){ return this.get(i_text).fadeIn(400); }, fadeOut:function(i_text){ return this.get(i_text).fadeOut(400); }, disable:function(i_text){ return this.get(i_text).prop('disabled',true); }, enable:function(i_text){ return this.get(i_text).prop('disabled',false); }, remove:function(i_text){ this.get(i_text).remove(); } } }; artDialog.fn.transition = function(effect){ var dlg = this; if (effect == 'random') { effect = Landers.animate.random(); } return { show:function(){ if (effect && dlg.config.show !== false) { var $in = dlg.getWraper().hide(); Landers.animate.show($in, effect) }; }, hide:function() { var $out = dlg.show().getWraper(); dlg.status('closing'); Landers.animate.hide($out, effect, function(){ $('.art-dialog-lockmask') .removeClass('art_dialog-lockmask') .removeClass('art-dialog-lockmask'); dlg.close(); }) } } }; artDialog.fn.noclose = function(){ var dlg = this, $dlg = dlg.getContent(); $dlg.closest('tr').prev().find('.aui_close').remove(); }; artDialog.fn.scroll = function(){ var dlg = this, $dlg = dlg.getContent(); $dlg.css({'overflow-x': 'hidden', 'postion':'static', 'height':'inherit'}); //'overflow':'scroll', var init_scroll = function(){ Landers.css.add([ '.art-dialog .mCSB_inside>.mCSB_container{margin-right:5px;}', '.art-dialog .mCSB_scrollTools {width:5px;}' ]); $dlg.mCustomScrollbar({ autoHideScrollbar:true, scrollInertia:200, theme:'dark', preventDefault:true, mouseWheel:true, callbacks:{ onScrollStart:function(){}, onScroll:function(){}, onTotalScroll:function(){}, onTotalScrollBack:function(){}, onTotalScrollOffset:0, whileScrolling:false, whileScrollingInterval:30 } }); $dlg.append($dlg.find('.' + Landers.response.classname)); } if ( $.fn.mCustomScrollbar ) { init_scroll(); } }; artDialog.fn._click = function (name) { var that = this, fn = that._listeners[name] && that._listeners[name].callback; return typeof fn !== 'function' || fn.call(that, window, that._listeners[name].elem) !== false ? that.close() : that; }; artDialog.fn.destory = function(){ var that = this; that.unlock(); that.getContent().remove(); that.getOuter().remove(); return that; };