From fa13b543afefda088bf36698af740c38c0b980c6 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 3 Aug 2023 11:29:17 +0100 Subject: [PATCH] Initial commit (0.1.0.001) --- bsdialog4.js | 182 +++++++++++++++++++++++++++++++++++++++++++++++ bsdialog4.min.js | 12 ++++ 2 files changed, 194 insertions(+) create mode 100644 bsdialog4.js create mode 100644 bsdialog4.min.js diff --git a/bsdialog4.js b/bsdialog4.js new file mode 100644 index 0000000..3cab3e9 --- /dev/null +++ b/bsdialog4.js @@ -0,0 +1,182 @@ +/** + * BSDialog4 + * @version v0.1.0.001 (2019/12/27 0531) + */ +var BSDialog = { + Create: function (id, title, url, size) { + var a = this; + + a.id = id; + a.title = title; + a.url = url; + a.size = ((typeof (size) == "undefined") ? "md" : size); + + if (!a.Exists(id)) { + a.renderContent(null); + } + + if (url != null) { + $.ajax({ + url: url, + cache: false, + xhrFields: { + withCredentials:true + }, + timeout: 20000, + success: function (result, status, xhr) { + if ((xhr.status == 200) || (xhr.status == 302) || (xhr.status == 301)) { + a.updateContentBody(id, result); + } else { + a.updateContentBody(id, xhr.statusText + " (" + xhr.status + ")"); + } + }, + error: function (xhr) { + a.updateContentBody(id, xhr.statusText + " (" + xhr.status + ")"); + }, + complete: function (xhr, status) { + // do nothing yet + } + }); + } + + a.initialiseComponents(); + }, + Close: function (id) { + $("#dlg" + id).modal('hide'); + }, + Clear: function () { + $("body > div[class~='modal'][role='dialog']").remove(); + $("body > div[class~='modal-backdrop']").remove(); + $("body").removeClass("modal-open"); + }, + ShowToast: function (id, title, message, size) { + var a = this; + + if (a.Exists(id)) { + return; + } + + a.id = id; + a.title = title; + a.url = null; + a.size = ((typeof (size) == "undefined") ? "md" : size); + + a.renderContent(message); + a.initialiseComponents(); + }, + Exists: function (id) { + return ($("body > div[id='dlg" + id + "']").length > 0); + }, + generateModalHtml: function (message) { + var a = this; + + var html = ""; + html += "
"; + html += "
"; + html += "
"; + html += "
"; + html += " " + a.title + ""; + html += " "; + html += " "; + + html += "
"; + + if ($.trim(message).length <= 0) { + html += "
"; + html += "
"; + html += "
"; + html += " Loading..."; + html += "
"; + html += "
"; + html += "
"; + } else { + html += "
" + message + "
"; + } + + html += "
"; + html += " "; + html += "
"; + html += "
"; + html += "
"; + html += "
"; + + return html; + }, + renderContent: function (content) { + $("body").append(this.generateModalHtml(content)); + }, + initialiseComponents: function () { + var a = this; + var dialog = a.getElement(); + + var btnToggleSize = $(dialog).find("button[data-modal-action='restore']"); + if ($(btnToggleSize).length > 0) { + $(btnToggleSize).off('click'); + $(btnToggleSize).on('click', function () { + a.toggleSize(); + }); + } + + $(dialog).modal('show'); + + $(dialog).off('hide.bs.modal'); + $(dialog).on('hide.bs.modal', function () { + if ($(dialog).next().is("div[class~='modal-backdrop']")) { + $(dialog).next().remove(); + } + + $(dialog).remove(); + }); + + $(dialog).find(".modal-header").off("mousedown"); + $(dialog).find(".modal-header").on("mousedown", function(e) { + var posX = e.pageX - $(this).offset().left; + var posY = e.pageY - $(this).offset().top; + + $("body").off("mousemove.draggable"); + $("body").on("mousemove.draggable", function(e2) { + $(dialog).children(".modal-dialog").offset({ "left": (e2.pageX - posX), "top": (e2.pageY - posY) }); + }); + + $("body").off("mouseup"); + $("body").on("mouseup", function() { + $("body").off("mousemove.draggable"); + }); + + $(dialog).off("bs.modal.hide"); + $(dialog).on("bs.modal.hide", function() { + $("body").off("mousemove.draggable"); + }); + }); + }, + updateContentBody: function (id, text) { + var body = $("#dlg" + id).find(".modal-body"); + + if ($(body).hasClass("custom-loading")) $(body).removeClass("custom-loading"); + + $(body).html(text); + }, + getElement: function () { + return $("#dlg" + this.id); + }, + toggleSize: function () { + var div = $(this.getElement()).find("div[class^='modal-dialog']"); + if ($(div).length <= 0) { + return; + } + + if ($(div).hasClass("modal-md")) { + $(div).removeClass("modal-md"); + $(div).addClass("modal-lg"); + } else if ($(div).hasClass("modal-lg")) { + $(div).removeClass("modal-lg"); + $(div).addClass("modal-xl"); + } else if ($(div).hasClass("modal-xl")) { + $(div).removeClass("modal-xl"); + $(div).addClass("modal-sm"); + } else if ($(div).hasClass("modal-sm")) { + $(div).removeClass("modal-sm"); + $(div).addClass("modal-md"); + } + } +}; \ No newline at end of file diff --git a/bsdialog4.min.js b/bsdialog4.min.js new file mode 100644 index 0000000..4de777d --- /dev/null +++ b/bsdialog4.min.js @@ -0,0 +1,12 @@ +/** + * BSDialog4 + * @version v0.1.0.001 (2019/12/27 0531) + */ +var BSDialog={Create:function(id,title,url,size){var a=this;a.id=id;a.title=title;a.url=url;a.size=((typeof(size)=="undefined")?"md":size);if(!a.Exists(id)){a.renderContent(null)} +if(url!=null){$.ajax({url:url,cache:!1,xhrFields:{withCredentials:!0},timeout:20000,success:function(result,status,xhr){if((xhr.status==200)||(xhr.status==302)||(xhr.status==301)){a.updateContentBody(id,result)}else{a.updateContentBody(id,xhr.statusText+" ("+xhr.status+")")}},error:function(xhr){a.updateContentBody(id,xhr.statusText+" ("+xhr.status+")")},complete:function(xhr,status){}})} +a.initialiseComponents()},Close:function(id){$("#dlg"+id).modal('hide')},Clear:function(){$("body > div[class~='modal'][role='dialog']").remove();$("body > div[class~='modal-backdrop']").remove();$("body").removeClass("modal-open")},ShowToast:function(id,title,message,size){var a=this;if(a.Exists(id)){return} +a.id=id;a.title=title;a.url=null;a.size=((typeof(size)=="undefined")?"md":size);a.renderContent(message);a.initialiseComponents()},Exists:function(id){return($("body > div[id='dlg"+id+"']").length>0)},generateModalHtml:function(message){var a=this;var html="";html+="
";html+="
";html+="
";html+="
";html+=" "+a.title+"";html+=" ";html+=" ";html+="
";if($.trim(message).length<=0){html+="
";html+="
";html+="
";html+=" Loading...";html+="
";html+="
";html+="
"}else{html+="
"+message+"
"} +html+="
";html+=" ";html+="
";html+="
";html+="
";html+="
";return html},renderContent:function(content){$("body").append(this.generateModalHtml(content))},initialiseComponents:function(){var a=this;var dialog=a.getElement();var btnToggleSize=$(dialog).find("button[data-modal-action='restore']");if($(btnToggleSize).length>0){$(btnToggleSize).off('click');$(btnToggleSize).on('click',function(){a.toggleSize()})} +$(dialog).modal('show');$(dialog).off('hide.bs.modal');$(dialog).on('hide.bs.modal',function(){if($(dialog).next().is("div[class~='modal-backdrop']")){$(dialog).next().remove()} +$(dialog).remove()});$(dialog).find(".modal-header").off("mousedown");$(dialog).find(".modal-header").on("mousedown",function(e){var posX=e.pageX-$(this).offset().left;var posY=e.pageY-$(this).offset().top;$("body").off("mousemove.draggable");$("body").on("mousemove.draggable",function(e2){$(dialog).children(".modal-dialog").offset({"left":(e2.pageX-posX),"top":(e2.pageY-posY)})});$("body").off("mouseup");$("body").on("mouseup",function(){$("body").off("mousemove.draggable")});$(dialog).off("bs.modal.hide");$(dialog).on("bs.modal.hide",function(){$("body").off("mousemove.draggable")})})},updateContentBody:function(id,text){var body=$("#dlg"+id).find(".modal-body");if($(body).hasClass("custom-loading"))$(body).removeClass("custom-loading");$(body).html(text)},getElement:function(){return $("#dlg"+this.id)},toggleSize:function(){var div=$(this.getElement()).find("div[class^='modal-dialog']");if($(div).length<=0){return} +if($(div).hasClass("modal-md")){$(div).removeClass("modal-md");$(div).addClass("modal-lg")}else if($(div).hasClass("modal-lg")){$(div).removeClass("modal-lg");$(div).addClass("modal-xl")}else if($(div).hasClass("modal-xl")){$(div).removeClass("modal-xl");$(div).addClass("modal-sm")}else if($(div).hasClass("modal-sm")){$(div).removeClass("modal-sm");$(div).addClass("modal-md")}}} \ No newline at end of file