diff --git a/modules/internal/targets.js b/modules/internal/targets.js
index 1d09be02..f31243cc 100644
--- a/modules/internal/targets.js
+++ b/modules/internal/targets.js
@@ -125,6 +125,8 @@ targets.setLastVersion = function (type, version) {
return '1.11.1';
} else if (type.startsWith('/bootbox.js/4.')) {
return '4.4.0';
+ } else if (type.startsWith('/bootbox.js/5.')) {
+ return '5.4.1';
} else if (type.startsWith('/bootstrap/3.')) {
return '3.3.7';
} else if (type.startsWith('/bootstrap/4.')) {
diff --git a/pages/updates/updates.html b/pages/updates/updates.html
index 4eeb8d4e..378f0df9 100644
--- a/pages/updates/updates.html
+++ b/pages/updates/updates.html
@@ -52,6 +52,7 @@
Added: Animate.CSS v4.1.1
Updated: autocomplete.js v0.37.1 -> v0.38.0
Updated: axios v0.20.0 -> v0.21.0
+
Added: Bootbox.js v5.4.1
diff --git a/resources/bootbox.js/5.4.1/bootbox.min.jsm b/resources/bootbox.js/5.4.1/bootbox.min.jsm
new file mode 100644
index 00000000..a4a38a1b
--- /dev/null
+++ b/resources/bootbox.js/5.4.1/bootbox.min.jsm
@@ -0,0 +1 @@
+!function(t,o){"use strict";"function"==typeof define&&define.amd?define(["jquery"],o):"object"==typeof exports?module.exports=o(require("jquery")):t.bootbox=o(t.jQuery)}(this,function o(p,u){"use strict";var r,n,i,l;Object.keys||(Object.keys=(r=Object.prototype.hasOwnProperty,n=!{toString:null}.propertyIsEnumerable("toString"),l=(i=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"]).length,function(t){if("function"!=typeof t&&("object"!=typeof t||null===t))throw new TypeError("Object.keys called on non-object");var o,e,a=[];for(o in t)r.call(t,o)&&a.push(o);if(n)for(e=0;e
',header:'
',footer:'',closeButton:'',form:'',button:'',option:"",promptMessage:'',inputs:{text:'',textarea:'',email:'',select:'',checkbox:'',radio:'',date:'',time:'',number:'',password:'',range:''}},m={locale:"en",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body",value:"",inputType:"text",swapButtonOrder:!1,centerVertical:!1,multiple:!1,scrollable:!1};function c(t,o,e){return p.extend(!0,{},t,function(t,o){var e=t.length,a={};if(e<1||2").attr("label",o.group)),e=i[o.group]);var a=p(f.option);a.attr("value",o.value).text(o.text),e.append(a)}),g(i,function(t,o){r.append(o)}),r.val(n.value);break;case"checkbox":var s=p.isArray(n.value)?n.value:[n.value];if(!(l=n.inputOptions||[]).length)throw new Error('prompt with "inputType" set to "checkbox" requires at least one option');r=p(''),g(l,function(t,e){if(e.value===u||e.text===u)throw new Error('each option needs a "value" property and a "text" property');var a=p(f.inputs[n.inputType]);a.find("input").attr("value",e.value),a.find("label").append("\n"+e.text),g(s,function(t,o){o===e.value&&a.find("input").prop("checked",!0)}),r.append(a)});break;case"radio":if(n.value!==u&&p.isArray(n.value))throw new Error('prompt with "inputType" set to "radio" requires a single, non-array value for "value"');if(!(l=n.inputOptions||[]).length)throw new Error('prompt with "inputType" set to "radio" requires at least one option');r=p('');var c=!0;g(l,function(t,o){if(o.value===u||o.text===u)throw new Error('each option needs a "value" property and a "text" property');var e=p(f.inputs[n.inputType]);e.find("input").attr("value",o.value),e.find("label").append("\n"+o.text),n.value!==u&&o.value===n.value&&(e.find("input").prop("checked",!0),c=!1),r.append(e)}),c&&r.find('input[type="radio"]').first().prop("checked",!0)}return a.append(r),a.on("submit",function(t){t.preventDefault(),t.stopPropagation(),o.find(".bootbox-accept").trigger("click")}),""!==p.trim(n.message)&&(e=p(f.promptMessage).html(n.message),a.prepend(e)),n.message=a,(o=d.dialog(n)).off("shown.bs.modal",v),o.on("shown.bs.modal",function(){r.focus()}),!0===t&&o.modal("show"),o},d});