510 lines
18 KiB
JavaScript
510 lines
18 KiB
JavaScript
(function() {
|
|
var $;
|
|
|
|
$ = jQuery;
|
|
|
|
$.widget("ui.dialogExtend", {
|
|
version: "2.0.0",
|
|
modes: {},
|
|
options: {
|
|
"closable": true,
|
|
"dblclick": false,
|
|
"titlebar": false,
|
|
"icons": {
|
|
"close": "ui-icon-closethick",
|
|
"restore": "ui-icon-newwin"
|
|
},
|
|
"load": null,
|
|
"beforeRestore": null,
|
|
"restore": null
|
|
},
|
|
_create: function() {
|
|
this._state = "normal";
|
|
if (!$(this.element[0]).data("ui-dialog")) {
|
|
$.error("jQuery.dialogExtend Error : Only jQuery UI Dialog element is accepted");
|
|
}
|
|
this._verifyOptions();
|
|
this._initStyles();
|
|
this._initButtons();
|
|
this._initTitleBar();
|
|
this._setState("normal");
|
|
this._on("load", function(e) {
|
|
return console.log("test", e);
|
|
});
|
|
return this._trigger("load");
|
|
},
|
|
_setState: function(state) {
|
|
$(this.element[0]).removeClass("ui-dialog-" + this._state).addClass("ui-dialog-" + state);
|
|
return this._state = state;
|
|
},
|
|
_verifyOptions: function() {
|
|
var name, _ref, _results;
|
|
|
|
if (this.options.dblclick && !(this.options.dblclick in this.modes)) {
|
|
$.error("jQuery.dialogExtend Error : Invalid <dblclick> value '" + this.options.dblclick + "'");
|
|
this.options.dblclick = false;
|
|
}
|
|
if (this.options.titlebar && ((_ref = this.options.titlebar) !== "none" && _ref !== "transparent")) {
|
|
$.error("jQuery.dialogExtend Error : Invalid <titlebar> value '" + this.options.titlebar + "'");
|
|
this.options.titlebar = false;
|
|
}
|
|
_results = [];
|
|
for (name in this.modes) {
|
|
if (this["_verifyOptions_" + name]) {
|
|
_results.push(this["_verifyOptions_" + name]());
|
|
} else {
|
|
_results.push(void 0);
|
|
}
|
|
}
|
|
return _results;
|
|
},
|
|
_initStyles: function() {
|
|
var name, style, _results;
|
|
|
|
if (!$(".dialog-extend-css").length) {
|
|
style = '';
|
|
style += '<style class="dialog-extend-css" type="text/css">';
|
|
style += '.ui-dialog .ui-dialog-titlebar-buttonpane>a { float: right; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-restore { width: 19px; height: 18px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-restore span { display: block; margin: 1px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-restore:hover,';
|
|
style += '.ui-dialog .ui-dialog-titlebar-restore:focus { padding: 0; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar ::selection { background-color: transparent; }';
|
|
style += '</style>';
|
|
$(style).appendTo("body");
|
|
}
|
|
_results = [];
|
|
for (name in this.modes) {
|
|
_results.push(this["_initStyles_" + name]());
|
|
}
|
|
return _results;
|
|
},
|
|
_initButtons: function() {
|
|
var buttonPane, mode, name, titlebar, _ref,
|
|
_this = this;
|
|
|
|
titlebar = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar");
|
|
buttonPane = $('<div class="ui-dialog-titlebar-buttonpane"></div>').appendTo(titlebar);
|
|
buttonPane.css({
|
|
"position": "absolute",
|
|
"top": "50%",
|
|
"right": "0.3em",
|
|
"margin-top": "-10px",
|
|
"height": "18px"
|
|
});
|
|
titlebar.find(".ui-dialog-titlebar-close").css({
|
|
"position": "relative",
|
|
"float": "right",
|
|
"top": "auto",
|
|
"right": "auto",
|
|
"margin": 0
|
|
}).find(".ui-icon").removeClass("ui-icon-closethick").addClass(this.options.icons.close).end().appendTo(buttonPane).end();
|
|
buttonPane.append('<a class="ui-dialog-titlebar-restore ui-corner-all ui-state-default" href="#"><span class="ui-icon ' + this.options.icons.restore + '" title="restore">restore</span></a>').find('.ui-dialog-titlebar-restore').attr("role", "button").mouseover(function() {
|
|
return $(this).addClass("ui-state-hover");
|
|
}).mouseout(function() {
|
|
return $(this).removeClass("ui-state-hover");
|
|
}).focus(function() {
|
|
return $(this).addClass("ui-state-focus");
|
|
}).blur(function() {
|
|
return $(this).removeClass("ui-state-focus");
|
|
}).end().find(".ui-dialog-titlebar-close").toggle(this.options.closable).end().find(".ui-dialog-titlebar-restore").hide().on("click",function(e) {
|
|
e.preventDefault();
|
|
return _this.restore();
|
|
}).end();
|
|
_ref = this.modes;
|
|
for (name in _ref) {
|
|
mode = _ref[name];
|
|
this._initModuleButton(name, mode);
|
|
}
|
|
return titlebar.dblclick(function(evt) {
|
|
if (_this.options.dblclick) {
|
|
if (_this._state !== "normal") {
|
|
return _this.restore();
|
|
} else {
|
|
return _this[_this.options.dblclick]();
|
|
}
|
|
}
|
|
}).select(function() {
|
|
return false;
|
|
});
|
|
},
|
|
_initModuleButton: function(name, mode) {
|
|
var buttonPane,
|
|
_this = this;
|
|
|
|
buttonPane = $(this.element[0]).dialog("widget").find('.ui-dialog-titlebar-buttonpane');
|
|
return buttonPane.append('<a class="ui-dialog-titlebar-' + name + ' ui-corner-all ui-state-default" href="#" title="' + name + '"><span class="ui-icon ' + this.options.icons[name] + '">' + name + '</span></a>').find(".ui-dialog-titlebar-" + name).attr("role", "button").mouseover(function() {
|
|
return $(this).addClass("ui-state-hover");
|
|
}).mouseout(function() {
|
|
return $(this).removeClass("ui-state-hover");
|
|
}).focus(function() {
|
|
return $(this).addClass("ui-state-focus");
|
|
}).blur(function() {
|
|
return $(this).removeClass("ui-state-focus");
|
|
}).end().find(".ui-dialog-titlebar-" + name).toggle(this.options[mode.option]).on("click",function(e) {
|
|
e.preventDefault();
|
|
return _this[name]();
|
|
}).end();
|
|
},
|
|
_initTitleBar: function() {
|
|
var handle;
|
|
|
|
switch (this.options.titlebar) {
|
|
case false:
|
|
return 0;
|
|
case "none":
|
|
if ($(this.element[0]).dialog("option", "draggable")) {
|
|
handle = $("<div />").addClass("ui-dialog-draggable-handle").css("cursor", "move").height(5);
|
|
$(this.element[0]).dialog("widget").prepend(handle).draggable("option", "handle", handle);
|
|
}
|
|
return $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").find(".ui-dialog-title").html(" ").end().css({
|
|
"background-color": "transparent",
|
|
"background-image": "none",
|
|
"border": 0,
|
|
"position": "absolute",
|
|
"right": 0,
|
|
"top": 0,
|
|
"z-index": 9999
|
|
}).end();
|
|
case "transparent":
|
|
return $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").css({
|
|
"background-color": "transparent",
|
|
"background-image": "none",
|
|
"border": 0
|
|
});
|
|
default:
|
|
return $.error("jQuery.dialogExtend Error : Invalid <titlebar> value '" + this.options.titlebar + "'");
|
|
}
|
|
},
|
|
state: function() {
|
|
return this._state;
|
|
},
|
|
restore: function() {
|
|
this._trigger("beforeRestore");
|
|
this._restore();
|
|
this._toggleButtons();
|
|
return this._trigger("restore");
|
|
},
|
|
_restore: function() {
|
|
if (this._state !== "normal") {
|
|
this["_restore_" + this._state]();
|
|
this._setState("normal");
|
|
return $(this.element[0]).dialog("widget").focus();
|
|
}
|
|
},
|
|
_saveSnapshot: function() {
|
|
if (this._state === "normal") {
|
|
this.original_config_resizable = $(this.element[0]).dialog("option", "resizable");
|
|
this.original_config_draggable = $(this.element[0]).dialog("option", "draggable");
|
|
this.original_size_height = $(this.element[0]).dialog("widget").outerHeight();
|
|
this.original_size_width = $(this.element[0]).dialog("option", "width");
|
|
this.original_size_maxHeight = $(this.element[0]).dialog("option", "maxHeight");
|
|
this.original_position_mode = $(this.element[0]).dialog("widget").css("position");
|
|
this.original_position_left = $(this.element[0]).dialog("widget").offset().left - $('body').scrollLeft();
|
|
this.original_position_top = $(this.element[0]).dialog("widget").offset().top - $('body').scrollTop();
|
|
return this.original_titlebar_wrap = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").css("white-space");
|
|
}
|
|
},
|
|
_loadSnapshot: function() {
|
|
return {
|
|
"config": {
|
|
"resizable": this.original_config_resizable,
|
|
"draggable": this.original_config_draggable
|
|
},
|
|
"size": {
|
|
"height": this.original_size_height,
|
|
"width": this.original_size_width,
|
|
"maxHeight": this.original_size_maxHeight
|
|
},
|
|
"position": {
|
|
"mode": this.original_position_mode,
|
|
"left": this.original_position_left,
|
|
"top": this.original_position_top
|
|
},
|
|
"titlebar": {
|
|
"wrap": this.original_titlebar_wrap
|
|
}
|
|
};
|
|
},
|
|
_toggleButtons: function(newstate) {
|
|
var mode, name, state, _ref, _ref1, _results;
|
|
|
|
state = newstate || this._state;
|
|
$(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-restore").toggle(state !== "normal").css({
|
|
"right": "1.4em"
|
|
}).end();
|
|
_ref = this.modes;
|
|
for (name in _ref) {
|
|
mode = _ref[name];
|
|
$(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-" + name).toggle(state !== mode.state && this.options[mode.option]);
|
|
}
|
|
_ref1 = this.modes;
|
|
_results = [];
|
|
for (name in _ref1) {
|
|
mode = _ref1[name];
|
|
if (mode.state === state) {
|
|
_results.push($(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-restore").insertAfter($(this.element[0]).dialog("widget").find(".ui-dialog-titlebar-" + name)).end());
|
|
} else {
|
|
_results.push(void 0);
|
|
}
|
|
}
|
|
return _results;
|
|
}
|
|
});
|
|
|
|
}).call(this);
|
|
|
|
(function() {
|
|
var $;
|
|
|
|
$ = jQuery;
|
|
|
|
$.extend(true, $.ui.dialogExtend.prototype, {
|
|
modes: {
|
|
"collapse": {
|
|
option: "collapsable",
|
|
state: "collapsed"
|
|
}
|
|
},
|
|
options: {
|
|
"collapsable": false,
|
|
"icons": {
|
|
"collapse": "ui-icon-triangle-1-s"
|
|
},
|
|
"beforeCollapse": null,
|
|
"collapse": null
|
|
},
|
|
collapse: function() {
|
|
var newHeight, pos;
|
|
|
|
newHeight = $(this.element[0]).dialog("widget").find(".ui-dialog-titlebar").height() + 15;
|
|
this._trigger("beforeCollapse");
|
|
if (this._state !== "normal") {
|
|
this._restore();
|
|
}
|
|
this._saveSnapshot();
|
|
pos = $(this.element[0]).dialog("widget").position();
|
|
$(this.element[0]).dialog("option", {
|
|
"resizable": false,
|
|
"height": newHeight,
|
|
"maxHeight": newHeight,
|
|
"position": [pos.left - $(document).scrollLeft(), pos.top - $(document).scrollTop()]
|
|
}).on('dialogclose', this._collapse_restore).hide().dialog("widget").find(".ui-dialog-buttonpane:visible").hide().end().find(".ui-dialog-titlebar").css("white-space", "nowrap").end().find(".ui-dialog-content");
|
|
this._setState("collapsed");
|
|
this._toggleButtons();
|
|
return this._trigger("collapse");
|
|
},
|
|
_restore_collapsed: function() {
|
|
var original;
|
|
|
|
original = this._loadSnapshot();
|
|
return $(this.element[0]).show().dialog("widget").find(".ui-dialog-buttonpane:hidden").show().end().find(".ui-dialog-titlebar").css("white-space", original.titlebar.wrap).end().find(".ui-dialog-content").dialog("option", {
|
|
"resizable": original.config.resizable,
|
|
"height": original.size.height,
|
|
"maxHeight": original.size.maxHeight
|
|
}).off('dialogclose', this._collapse_restore);
|
|
},
|
|
_initStyles_collapse: function() {
|
|
var style;
|
|
|
|
if (!$(".dialog-extend-collapse-css").length) {
|
|
style = '';
|
|
style += '<style class="dialog-extend-collapse-css" type="text/css">';
|
|
style += '.ui-dialog .ui-dialog-titlebar-collapse { width: 19px; height: 18px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-collapse span { display: block; margin: 1px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-collapse:hover,';
|
|
style += '.ui-dialog .ui-dialog-titlebar-collapse:focus { padding: 0; }';
|
|
style += '</style>';
|
|
return $(style).appendTo("body");
|
|
}
|
|
},
|
|
_collapse_restore: function() {
|
|
return $(this).dialogExtend("restore");
|
|
}
|
|
});
|
|
|
|
}).call(this);
|
|
|
|
(function() {
|
|
var $;
|
|
|
|
$ = jQuery;
|
|
|
|
$.extend(true, $.ui.dialogExtend.prototype, {
|
|
modes: {
|
|
"maximize": {
|
|
option: "maximizable",
|
|
state: "maximized"
|
|
}
|
|
},
|
|
options: {
|
|
"maximizable": false,
|
|
"icons": {
|
|
"maximize": "ui-icon-extlink"
|
|
},
|
|
"beforeMaximize": null,
|
|
"maximize": null
|
|
},
|
|
maximize: function() {
|
|
var newHeight, newWidth;
|
|
|
|
newHeight = $(window).height() - 11;
|
|
newWidth = $(window).width() - 11;
|
|
this._trigger("beforeMaximize");
|
|
if (this._state !== "normal") {
|
|
this._restore();
|
|
}
|
|
this._saveSnapshot();
|
|
if ($(this.element[0]).dialog("option", "draggable")) {
|
|
$(this.element[0]).dialog("widget").draggable("option", "handle", null).find(".ui-dialog-draggable-handle").css("cursor", "text").end();
|
|
}
|
|
$(this.element[0]).dialog("widget").css("position", "fixed").find(".ui-dialog-content").show().dialog("widget").find(".ui-dialog-buttonpane").show().end().find(".ui-dialog-content").dialog("option", {
|
|
"resizable": false,
|
|
"draggable": false,
|
|
"height": newHeight,
|
|
"width": newWidth,
|
|
"position": {
|
|
my: "left top",
|
|
at: "left top",
|
|
of: window
|
|
}
|
|
});
|
|
this._setState("maximized");
|
|
this._toggleButtons();
|
|
return this._trigger("maximize");
|
|
},
|
|
_restore_maximized: function() {
|
|
var original;
|
|
|
|
original = this._loadSnapshot();
|
|
$(this.element[0]).dialog("widget").css("position", original.position.mode).find(".ui-dialog-titlebar").css("white-space", original.titlebar.wrap).end().find(".ui-dialog-content").dialog("option", {
|
|
"resizable": original.config.resizable,
|
|
"draggable": original.config.draggable,
|
|
"height": original.size.height,
|
|
"width": original.size.width,
|
|
"maxHeight": original.size.maxHeight,
|
|
"position": {
|
|
my: "left top",
|
|
at: "left+" + original.position.left + " top+" + original.position.top,
|
|
of: window
|
|
}
|
|
});
|
|
if ($(this.element[0]).dialog("option", "draggable")) {
|
|
return $(this.element[0]).dialog("widget").draggable("option", "handle", $(this.element[0]).dialog("widget").find(".ui-dialog-draggable-handle").length ? $(this.element[0]).dialog("widget").find(".ui-dialog-draggable-handle") : ".ui-dialog-titlebar").find(".ui-dialog-draggable-handle").css("cursor", "move");
|
|
}
|
|
},
|
|
_initStyles_maximize: function() {
|
|
var style;
|
|
|
|
if (!$(".dialog-extend-maximize-css").length) {
|
|
style = '';
|
|
style += '<style class="dialog-extend-maximize-css" type="text/css">';
|
|
style += '.ui-dialog .ui-dialog-titlebar-maximize { width: 19px; height: 18px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-maximize span { display: block; margin: 1px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-maximize:hover,';
|
|
style += '.ui-dialog .ui-dialog-titlebar-maximize:focus { padding: 0; }';
|
|
style += '</style>';
|
|
return $(style).appendTo("body");
|
|
}
|
|
}
|
|
});
|
|
|
|
}).call(this);
|
|
|
|
(function() {
|
|
var $;
|
|
|
|
$ = jQuery;
|
|
|
|
$.extend(true, $.ui.dialogExtend.prototype, {
|
|
modes: {
|
|
"minimize": {
|
|
option: "minimizable",
|
|
state: "minimized"
|
|
}
|
|
},
|
|
options: {
|
|
"minimizable": false,
|
|
"minimizeLocation": "left",
|
|
"icons": {
|
|
"minimize": "ui-icon-minus"
|
|
},
|
|
"beforeMinimize": null,
|
|
"minimize": null
|
|
},
|
|
minimize: function() {
|
|
var dialogcontrols, fixedContainer, newWidth;
|
|
|
|
this._trigger("beforeMinimize");
|
|
if (this._state !== "normal") {
|
|
this._restore();
|
|
}
|
|
newWidth = 200;
|
|
if ($("#dialog-extend-fixed-container").length) {
|
|
fixedContainer = $("#dialog-extend-fixed-container");
|
|
} else {
|
|
fixedContainer = $('<div id="dialog-extend-fixed-container"></div>').appendTo("body");
|
|
fixedContainer.css({
|
|
"position": "fixed",
|
|
"bottom": 1,
|
|
"left": 1,
|
|
"right": 1,
|
|
"z-index": 9999
|
|
});
|
|
}
|
|
this._toggleButtons("minimized");
|
|
dialogcontrols = $(this.element[0]).dialog("widget").clone().children().remove().end();
|
|
$(this.element[0]).dialog("widget").find('.ui-dialog-titlebar').clone(true, true).appendTo(dialogcontrols);
|
|
dialogcontrols.css({
|
|
"float": this.options.minimizeLocation,
|
|
"margin": 1
|
|
});
|
|
fixedContainer.append(dialogcontrols);
|
|
$(this.element[0]).data("dialog-extend-minimize-controls", dialogcontrols);
|
|
if ($(this.element[0]).dialog("option", "draggable")) {
|
|
dialogcontrols.removeClass("ui-draggable");
|
|
}
|
|
dialogcontrols.css({
|
|
"height": "auto",
|
|
"width": newWidth,
|
|
"position": "static"
|
|
});
|
|
$(this.element[0]).on('dialogbeforeclose', this._minimize_restoreOnClose).dialog("widget").hide();
|
|
this._setState("minimized");
|
|
return this._trigger("minimize");
|
|
},
|
|
_restore_minimized: function() {
|
|
$(this.element[0]).dialog("widget").show();
|
|
$(this.element[0]).off('dialogbeforeclose', this._minimize_restoreOnClose);
|
|
$(this.element[0]).data("dialog-extend-minimize-controls").remove();
|
|
return $(this.element[0]).removeData("dialog-extend-minimize-controls");
|
|
},
|
|
_initStyles_minimize: function() {
|
|
var style;
|
|
|
|
if (!$(".dialog-extend-minimize-css").length) {
|
|
style = '';
|
|
style += '<style class="dialog-extend-minimize-css" type="text/css">';
|
|
style += '.ui-dialog .ui-dialog-titlebar-minimize { width: 19px; height: 18px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-minimize span { display: block; margin: 1px; }';
|
|
style += '.ui-dialog .ui-dialog-titlebar-minimize:hover,';
|
|
style += '.ui-dialog .ui-dialog-titlebar-minimize:focus { padding: 0; }';
|
|
style += '</style>';
|
|
return $(style).appendTo("body");
|
|
}
|
|
},
|
|
_verifyOptions_minimize: function() {
|
|
var _ref;
|
|
|
|
if (!this.options.minimizeLocation || ((_ref = this.options.minimizeLocation) !== 'left' && _ref !== 'right')) {
|
|
$.error("jQuery.dialogExtend Error : Invalid <minimizeLocation> value '" + this.options.minimizeLocation + "'");
|
|
return this.options.minimizeLocation = "left";
|
|
}
|
|
},
|
|
_minimize_restoreOnClose: function() {
|
|
return $(this).dialogExtend("restore");
|
|
}
|
|
});
|
|
|
|
}).call(this);
|