diff --git a/ui/App/components/Mods/ModLoadSave.jsx b/ui/App/components/Mods/ModLoadSave.jsx
index 3893ae4..5eac8e8 100644
--- a/ui/App/components/Mods/ModLoadSave.jsx
+++ b/ui/App/components/Mods/ModLoadSave.jsx
@@ -81,7 +81,6 @@ class ModLoadSave extends React.Component {
html: table,
type: 'question',
showCancelButton: true,
- closeOnConfirm: false,
confirmButtonText: "Download Mods!",
showLoaderOnConfirm: true,
preConfirm: this.loadModsSwalHandler
diff --git a/ui/App/components/Mods/packs/ModPackOverview.jsx b/ui/App/components/Mods/packs/ModPackOverview.jsx
index 2af4be9..1f6c652 100644
--- a/ui/App/components/Mods/packs/ModPackOverview.jsx
+++ b/ui/App/components/Mods/packs/ModPackOverview.jsx
@@ -4,6 +4,7 @@ import NativeListener from 'react-native-listener';
import {instanceOfModsContent} from "../ModsPropTypes.js";
import locks from "locks";
import PropTypes from "prop-types";
+import {ReactSwalNormal, ReactSwalDanger} from './../../../../js/customSwal';
class ModPackOverview extends React.Component {
constructor(props) {
@@ -45,62 +46,69 @@ class ModPackOverview extends React.Component {
}
createModPack() {
- swal({
+ ReactSwalNormal.fire({
title: "Create modpack",
- text: "Please enter an unique modpack name:",
- type: "input",
+ html: "Please enter an unique modpack name:",
+ input: "text",
showCancelButton: true,
- closeOnConfirm: false,
inputPlaceholder: "Modpack name",
- showLoaderOnConfirm: true
- },
- (inputValue) => {
- if (inputValue === false) return false;
+ inputAttributes: {
+ required: "required"
+ },
+ inputValidator: (value) => {
+ return new Promise(resolve => {
+ if(value) {
+ resolve();
+ } else {
+ resolve("You need to enter a name");
+ }
+ });
+ },
+ showLoaderOnConfirm: true,
+ preConfirm: (inputValue) => {
+ // console.log(this);
- if (inputValue === "") {
- swal.showInputError("A modpack needs a name!");
- return false
+ $.ajax({
+ url: "/api/mods/packs/create",
+ method: "POST",
+ data: {name: inputValue},
+ dataType: "JSON",
+ success: (data) => {
+ this.mutex.lock(() => {
+ let packList = this.state.listPacks;
+
+ data.data.mod_packs.forEach((v, k) => {
+ if(v.name == inputValue) {
+ packList.push(data.data.mod_packs[k]);
+ return false;
+ }
+ });
+
+ this.setState({
+ listPacks: packList
+ });
+
+ ReactSwalNormal.fire({
+ title: "modpack created successfully",
+ type: "success"
+ });
+
+ this.mutex.unlock();
+ });
+ },
+ error: (jqXHR, status, err) => {
+ console.log('api/mods/packs/create', status, err.toString());
+
+ let jsonResponse = jqXHR.responseJSON;
+
+ ReactSwalNormal.fire({
+ title: "Error on creating modpack",
+ text: jsonResponse.data,
+ type: "error"
+ });
+ }
+ });
}
-
- $.ajax({
- url: "/api/mods/packs/create",
- method: "POST",
- data: {name: inputValue},
- dataType: "JSON",
- success: (data) => {
- this.mutex.lock(() => {
- let packList = this.state.listPacks;
-
- data.data.mod_packs.forEach((v, k) => {
- if(v.name == inputValue) {
- packList.push(data.data.mod_packs[k]);
- return false;
- }
- });
-
- this.setState({
- listPacks: packList
- });
-
- swal({
- title: "modpack created successfully",
- type: "success"
- });
-
- this.mutex.unlock();
- });
- },
- error: (jqXHR, status, err) => {
- console.log('api/mods/packs/create', status, err.toString());
-
- let jsonResponse = jqXHR.responseJSON;
- swal({
- title: "Error on creating modpack",
- text: jsonResponse.data,
- type: "error"
- });
- }
- });
});
}
@@ -109,57 +117,56 @@ class ModPackOverview extends React.Component {
let name = $(e.target).parent().prev().html();
- swal({
+ ReactSwalDanger.fire({
title: "Are you sure?",
- text: "You really want to delete this modpack?\nThere is no turning back, the modpack will be deleted forever (a very long time)!",
- type: "info",
+ html:
You really want to delete this modpack?
There is no turning back, the modpack will be deleted forever (a very long time)!
,
+ type: "question",
showCancelButton: true,
- closeOnConfirm: false,
- showLoaderOnConfirm: true
- },
- () => {
- $.ajax({
- url: "/api/mods/packs/delete",
- method: "POST",
- data: {name: name},
- dataType: "JSON",
- success: (data) => {
- if(data.success) {
- this.mutex.lock(() => {
- let modPacks = this.state.listPacks;
+ showLoaderOnConfirm: true,
+ preConfirm: () => {
+ $.ajax({
+ url: "/api/mods/packs/delete",
+ method: "POST",
+ data: {name: name},
+ dataType: "JSON",
+ success: (data) => {
+ if(data.success) {
+ this.mutex.lock(() => {
+ let modPacks = this.state.listPacks;
- modPacks.forEach((v, k) => {
- if(v.name == name) {
- delete modPacks[k];
- }
+ modPacks.forEach((v, k) => {
+ if(v.name == name) {
+ delete modPacks[k];
+ }
+ });
+
+ this.setState({
+ listPacks: modPacks
+ });
+
+ ReactSwalNormal.fire({
+ title: "Modpack deleted successfully",
+ type: "success"
+ });
+
+ this.mutex.unlock();
});
+ }
+ },
+ error: (jqXHR, status, err) => {
+ console.log('api/mods/packs/delete', status, err.toString());
- this.setState({
- listPacks: modPacks
- });
+ let jsonResponse = jqXHR.responseJSON || err.toString();
+ jsonResponse = jsonResponse.data || err.toString();
- swal({
- title: "Modpack deleted successfully",
- type: "success"
- });
-
- this.mutex.unlock();
+ ReactSwalNormal.fire({
+ title: "Error on creating modpack",
+ text: jsonResponse,
+ type: "error"
});
}
- },
- error: (jqXHR, status, err) => {
- console.log('api/mods/packs/delete', status, err.toString());
-
- let jsonResponse = jqXHR.responseJSON || err.toString();
- jsonResponse = jsonResponse.data || err.toString();
-
- swal({
- title: "Error on creating modpack",
- text: jsonResponse,
- type: "error"
- });
- }
- })
+ })
+ }
});
}
@@ -168,44 +175,42 @@ class ModPackOverview extends React.Component {
let name = $(e.target).parent().prev().html();
- swal({
+ ReactSwalDanger.fire({
title: "Are you sure?",
text: "This operation will replace the current installed mods with the mods out of the selected ModPack!",
- type: "info",
+ type: "question",
showCancelButton: true,
- closeOnConfirm: false,
- showLoaderOnConfirm: true
- },
- () => {
- console.log("inside swal:", this);
- $.ajax({
- url: "/api/mods/packs/load",
- method: "POST",
- data: {name: name},
- dataType: "JSON",
- success: (data) => {
- swal({
- title: "ModPack loaded!",
- type: "success"
- });
+ showLoaderOnConfirm: true,
+ preConfirm: () => {
+ $.ajax({
+ url: "/api/mods/packs/load",
+ method: "POST",
+ data: {name: name},
+ dataType: "JSON",
+ success: (data) => {
+ ReactSwalNormal.fire({
+ title: "ModPack loaded!",
+ type: "success"
+ });
- this.props.modContentClass.setState({
- installedMods: data.data.mods
- });
- },
- error: (jqXHR, status, err) => {
- console.log('api/mods/packs/load', status, err.toString());
+ this.props.modContentClass.setState({
+ installedMods: data.data.mods
+ });
+ },
+ error: (jqXHR, status, err) => {
+ console.log('api/mods/packs/load', status, err.toString());
- let jsonResponse = jqXHR.responseJSON || err.toString();
- jsonResponse = jsonResponse.data || err.toString();
+ let jsonResponse = jqXHR.responseJSON || err.toString();
+ jsonResponse = jsonResponse.data || err.toString();
- swal({
- title: "Error on loading ModPack",
- text: jsonResponse,
- type: "error"
- });
- }
- })
+ ReactSwalNormal.fire({
+ title: "Error on loading ModPack",
+ text: jsonResponse,
+ type: "error"
+ });
+ }
+ })
+ }
});
}
@@ -218,7 +223,11 @@ class ModPackOverview extends React.Component {
if(updatesInProgress) {
- swal("Toggle mod failed", "Can't toggle the mod, when an update is still in progress", "error");
+ ReactSwalNormal.fir({
+ title: "Toggle mod failed",
+ text: "Can't toggle the mod, when an update is still in progress",
+ type: "error"
+ });
return false;
}
@@ -239,7 +248,6 @@ class ModPackOverview extends React.Component {
if(data.success) {
this.mutex.lock(() => {
let packList = this.state.listPacks;
- console.log(this);
packList.forEach((modPack, modPackKey) => {
if(modPack.name == modPackName) {
@@ -262,7 +270,7 @@ class ModPackOverview extends React.Component {
},
error: (jqXHR, status, err) => {
console.log('api/mods/packs/mod/toggle', status, err.toString());
- swal({
+ ReactSwalNormal.fire({
title: "Toggle Mod went wrong",
text: err.toString(),
type: "error"
@@ -275,7 +283,11 @@ class ModPackOverview extends React.Component {
e.preventDefault();
if(updatesInProgress) {
- swal("Delete failed", "Can't delete the mod, when an update is still in progress", "error");
+ ReactSwalNormal.fire({
+ title: "Delete failed",
+ text: "Can't delete the mod, when an update is still in progress",
+ type: "error"
+ });
return false;
}
@@ -284,60 +296,62 @@ class ModPackOverview extends React.Component {
let modName = $row.data("mod-name");
let modPackName = $row.parents(".single-modpack").find("h3").html();
- swal({
+ ReactSwalDanger.fire({
title: "Delete Mod?",
text: "This will delete the mod forever",
- type: "info",
+ type: "question",
showCancelButton: true,
- closeOnConfirm: false,
confirmButtonText: "Delete it!",
cancelButtonText: "Close",
showLoaderOnConfirm: true,
- confirmButtonColor: "#DD6B55",
- }, () => {
- $.ajax({
- url: "/api/mods/packs/mod/delete",
- method: "POST",
- data: {
- modName: modName,
- modPackName: modPackName
- },
- dataType: "JSON",
- success: (data) => {
- if(data.success) {
- this.mutex.lock(() => {
- swal("Delete of mod " + modName + " inside modPack " + modPackName + " successful", "", "success");
+ preConfirm: () => {
+ $.ajax({
+ url: "/api/mods/packs/mod/delete",
+ method: "POST",
+ data: {
+ modName: modName,
+ modPackName: modPackName
+ },
+ dataType: "JSON",
+ success: (data) => {
+ if(data.success) {
+ this.mutex.lock(() => {
+ ReactSwalNormal.fire({
+ title: Delete of mod {modName} inside modPack {modPackName} successful
,
+ type: "success"
+ })
- let packList = this.state.listPacks;
+ let packList = this.state.listPacks;
- packList.forEach((modPack, modPackKey) => {
- if(modPack.name == modPackName) {
- packList[modPackKey].mods.mods.forEach((mod, modKey) => {
- if(mod.name == modName) {
- delete packList[modPackKey].mods.mods[modKey];
- return false;
- }
- });
- }
+ packList.forEach((modPack, modPackKey) => {
+ if(modPack.name == modPackName) {
+ packList[modPackKey].mods.mods.forEach((mod, modKey) => {
+ if(mod.name == modName) {
+ delete packList[modPackKey].mods.mods[modKey];
+ return false;
+ }
+ });
+ }
+ });
+
+ this.setState({
+ listPacks: packList
+ });
+
+ this.mutex.unlock();
});
-
- this.setState({
- listPacks: packList
- });
-
- this.mutex.unlock();
+ }
+ },
+ error: (jqXHR, status, err) => {
+ console.log('api/mods/packs/mod/delete', status, err.toString());
+ ReactSwalNormal.fire({
+ title: "Delete Mod went wrong",
+ text: jqXHR.responseJSON.data,
+ type: "error"
});
}
- },
- error: (jqXHR, status, err) => {
- console.log('api/mods/packs/mod/delete', status, err.toString());
- swal({
- title: "Delete Mod went wrong",
- text: jqXHR.responseJSON.data,
- type: "error"
- });
- }
- });
+ });
+ }
});
}
@@ -345,10 +359,10 @@ class ModPackOverview extends React.Component {
e.preventDefault();
if(!this.props.modContentClass.state.loggedIn) {
- swal({
- type: "error",
+ ReactSwalNormal.fire({
title: "Update failed",
- text: "please login into Factorio to update mod"
+ text: "please login into Factorio to update mod",
+ type: "error",
});
let $addModBox = $('#add-mod-box');
@@ -405,7 +419,7 @@ class ModPackOverview extends React.Component {
error: (jqXHR, status, err) => {
console.log('api/mods/packs/mod/update', status, err.toString());
toggleUpdateStatus();
- swal({
+ ReactSwalNormal.fire({
title: "Update Mod went wrong",
text: jqXHR.responseJSON.data,
type: "error"
@@ -415,10 +429,6 @@ class ModPackOverview extends React.Component {
}
}
- test() {
- console.log("test called");
- }
-
render() {
let classes = "box-body" + " " + this.props.className;
let ids = this.props.id;
diff --git a/ui/App/components/ModsContent.jsx b/ui/App/components/ModsContent.jsx
index 75ae8f2..4f8e3f9 100644
--- a/ui/App/components/ModsContent.jsx
+++ b/ui/App/components/ModsContent.jsx
@@ -340,7 +340,6 @@ class ModsContent extends React.Component {
text: "This will delete the mod and can break the save file",
type: "question",
showCancelButton: true,
- closeOnConfirm: false,
confirmButtonText: "Delete it!",
showLoaderOnConfirm: true,
preConfirm: () => {
@@ -396,7 +395,6 @@ class ModsContent extends React.Component {
html: This will delete ALL mods and can't be redone!
Are you sure?
,
type: "question",
showCancelButton: true,
- closeOnConfirm: false,
confirmButtonText: "Yes, Delete ALL!",
showLoaderOnConfirm: true,
preConfirm: () => {
diff --git a/ui/index.js b/ui/index.js
index ea9f278..0919cca 100644
--- a/ui/index.js
+++ b/ui/index.js
@@ -10,8 +10,8 @@ require('bootstrap-fileinput/themes/fas/theme');
*/
$('body').on("show.bs.collapse hide.bs.collapse", (e) => {
let $target = $(e.target);
- let $box = $target.parents(".box");
- let $fontAwesome = $box.find(".box-header").find("i");
+ let $box = $target.parent(".box");
+ let $fontAwesome = $box.children(".box-header").children("i");
if(e.type == "show") {
$fontAwesome.removeClass("fa-plus").addClass("fa-minus");
diff --git a/ui/index.scss b/ui/index.scss
index 2d157a3..39ed15e 100644
--- a/ui/index.scss
+++ b/ui/index.scss
@@ -15,6 +15,7 @@
* Customizations
*/
@import "scss/customizations/buttons";
+@import "scss/customizations/form";
@import "scss/customizations/badges";
@import "scss/customizations/adminLTE3-box";
@import "scss/customizations/sidebar";
diff --git a/ui/scss/customizations/form.scss b/ui/scss/customizations/form.scss
new file mode 100644
index 0000000..3f48d4f
--- /dev/null
+++ b/ui/scss/customizations/form.scss
@@ -0,0 +1,3 @@
+input.form-control {
+ border-radius: 0;
+}
\ No newline at end of file
diff --git a/ui/scss/customizations/sweetalert.scss b/ui/scss/customizations/sweetalert.scss
index 8a58cc4..d4479ec 100644
--- a/ui/scss/customizations/sweetalert.scss
+++ b/ui/scss/customizations/sweetalert.scss
@@ -14,6 +14,13 @@
text-align: center;
display: flex;
justify-content: center;
+ flex-direction: column;
+
+ .swal2-input {
+ @extend .form-control;
+ height: 2.625em;
+ padding: 0.75em;
+ }
}
.swal2-actions.swal2-loading {