first commit
This commit is contained in:
@@ -0,0 +1,509 @@
|
||||
(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);
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user