JAVASCRIPT   15

dialog.js

Guest on 25th July 2021 04:12:48 PM

  1.  
  2. function _createButton(arg) {
  3.         arg = arg || {};
  4.         var name = arg.name || '',
  5.                 span = K('<span class="ke-button-common ke-button-outer" title="' + name + '"></span>'),
  6.                 btn = K('<input class="ke-button-common ke-button" type="button" value="' + name + '" />');
  7.         if (arg.click) {
  8.                 btn.click(arg.click);
  9.         }
  10.         span.append(btn);
  11.         return span;
  12. }
  13.  
  14. // create KToolbar class
  15. function KDialog(options) {
  16.         this.init(options);
  17. }
  18. _extend(KDialog, KWidget, {
  19.         init : function(options) {
  20.                 var self = this;
  21.                 var shadowMode = _undef(options.shadowMode, true);
  22.                 options.z = options.z || 811213;
  23.                 options.shadowMode = false;
  24.                 options.autoScroll = _undef(options.autoScroll, true);
  25.                 KDialog.parent.init.call(self, options);
  26.                 var title = options.title,
  27.                         body = K(options.body, self.doc),
  28.                         previewBtn = options.previewBtn,
  29.                         yesBtn = options.yesBtn,
  30.                         noBtn = options.noBtn,
  31.                         closeBtn = options.closeBtn,
  32.                         showMask = _undef(options.showMask, true);
  33.  
  34.                 self.div.addClass('ke-dialog').bind('click,mousedown', function(e){
  35.                         e.stopPropagation();
  36.                 });
  37.                 var contentDiv = K('<div class="ke-dialog-content"></div>').appendTo(self.div);
  38.                 if (_IE && _V < 7) {
  39.                         self.iframeMask = K('<iframe src="about:blank" class="ke-dialog-shadow"></iframe>').appendTo(self.div);
  40.                 } else if (shadowMode) {
  41.                         K('<div class="ke-dialog-shadow"></div>').appendTo(self.div);
  42.                 }
  43.                 var headerDiv = K('<div class="ke-dialog-header"></div>');
  44.                 contentDiv.append(headerDiv);
  45.                 headerDiv.html(title);
  46.                 self.closeIcon = K('<span class="ke-dialog-icon-close" title="' + closeBtn.name + '"></span>').click(closeBtn.click);
  47.                 headerDiv.append(self.closeIcon);
  48.                 self.draggable({
  49.                         clickEl : headerDiv,
  50.                         beforeDrag : options.beforeDrag
  51.                 });
  52.                 var bodyDiv = K('<div class="ke-dialog-body"></div>');
  53.                 contentDiv.append(bodyDiv);
  54.                 bodyDiv.append(body);
  55.                 var footerDiv = K('<div class="ke-dialog-footer"></div>');
  56.                 if (previewBtn || yesBtn || noBtn) {
  57.                         contentDiv.append(footerDiv);
  58.                 }
  59.                 _each([
  60.                         { btn : previewBtn, name : 'preview' },
  61.                         { btn : yesBtn, name : 'yes' },
  62.                         { btn : noBtn, name : 'no' }
  63.                 ], function() {
  64.                         if (this.btn) {
  65.                                 var button = _createButton(this.btn);
  66.                                 button.addClass('ke-dialog-' + this.name);
  67.                                 footerDiv.append(button);
  68.                         }
  69.                 });
  70.                 if (self.height) {
  71.                         bodyDiv.height(_removeUnit(self.height) - headerDiv.height() - footerDiv.height());
  72.                 }
  73.                 self.div.width(self.div.width());
  74.                 self.div.height(self.div.height());
  75.                 self.mask = null;
  76.                 if (showMask) {
  77.                         var docEl = _docElement(self.doc),
  78.                                 docWidth = Math.max(docEl.scrollWidth, docEl.clientWidth),
  79.                                 docHeight = Math.max(docEl.scrollHeight, docEl.clientHeight);
  80.                         self.mask = _widget({
  81.                                 x : 0,
  82.                                 y : 0,
  83.                                 z : self.z - 1,
  84.                                 cls : 'ke-dialog-mask',
  85.                                 width : docWidth,
  86.                                 height : docHeight
  87.                         });
  88.                 }
  89.                 self.autoPos(self.div.width(), self.div.height());
  90.                 self.footerDiv = footerDiv;
  91.                 self.bodyDiv = bodyDiv;
  92.                 self.headerDiv = headerDiv;
  93.                 self.isLoading = false;
  94.         },
  95.         setMaskIndex : function(z) {
  96.                 var self = this;
  97.                 self.mask.div.css('z-index', z);
  98.         },
  99.         showLoading : function(msg) {
  100.                 msg = _undef(msg, '');
  101.                 var self = this, body = self.bodyDiv;
  102.                 self.loading = K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:' + Math.round(body.height() / 3) + 'px;">' + msg + '</div></div>')
  103.                         .width(body.width()).height(body.height())
  104.                         .css('top', self.headerDiv.height() + 'px');
  105.                 body.css('visibility', 'hidden').after(self.loading);
  106.                 self.isLoading = true;
  107.                 return self;
  108.         },
  109.         hideLoading : function() {
  110.                 this.loading && this.loading.remove();
  111.                 this.bodyDiv.css('visibility', 'visible');
  112.                 this.isLoading = false;
  113.                 return this;
  114.         },
  115.         remove : function() {
  116.                 var self = this;
  117.                 if (self.options.beforeRemove) {
  118.                         self.options.beforeRemove.call(self);
  119.                 }
  120.                 self.mask && self.mask.remove();
  121.                 self.iframeMask && self.iframeMask.remove();
  122.                 self.closeIcon.unbind();
  123.                 K('input', self.div).unbind();
  124.                 K('button', self.div).unbind();
  125.                 self.footerDiv.unbind();
  126.                 self.bodyDiv.unbind();
  127.                 self.headerDiv.unbind();
  128.                 K('iframe', self.div).each(function() {
  129.                         //this.src = 'javascript:false';
  130.                         K(this).remove();
  131.                 });
  132.                 KDialog.parent.remove.call(self);
  133.                 return self;
  134.         }
  135. });
  136.  
  137. function _dialog(options) {
  138.         return new KDialog(options);
  139. }
  140.  
  141. K.DialogClass = KDialog;
  142. K.dialog = _dialog;

Raw Paste


Login or Register to edit or fork this paste. It's free.