diff --git a/scripts/contextmenu/rename-folder.js b/scripts/contextmenu/rename-folder.js
new file mode 100644
index 0000000..25913af
--- /dev/null
+++ b/scripts/contextmenu/rename-folder.js
@@ -0,0 +1,93 @@
+const fs = require('fs');
+const path = require('path');
+const Mousetrap = require('../dep/mousetrap');
+
+const lightRefresh = require('../fileview/lightrefresh');
+const preModal = require('../modal/pre');
+const postModal = require('../modal/post');
+const showError = require('../modal/common/error');
+const clearModals = require('../modal/clearmodals');
+const newToast = require('../toast/createtoast');
+const refresh = require('../fileview/refresh');
+
+module.exports = () => {
+ if (window.kade.modal) {return;}
+ preModal('new-folder-modal-container');
+ let modalOut = document.createElement('div');
+ modalOut.className = 'modal';
+ modalOut.id = 'new-folder-modal-container';
+ document.body.appendChild(modalOut);
+ let modal = document.createElement('div');
+ modal.className = 'modal-wrapper';
+ modalOut.appendChild(modal);
+ let title = document.createElement('h2');
+ title.innerHTML = 'New Folder';
+ modal.appendChild(title);
+ let text = document.createElement('p');
+ text.innerHTML = "Please name your new folder.";
+ modal.appendChild(text);
+ let cont = document.createElement('div');
+ cont.className = 'button-container';
+ modal.appendChild(cont);
+ let input = document.createElement('input');
+ input.placeholder = 'New Folder';
+ input.id = 'new-folder-input';
+ let lastIn = '';
+ input.oninput = () => {
+ if (!input.value.match(/^[a-zA-Z0-9-_() ]*$/gm)) {input.value = lastIn;}
+ else {lastIn = input.value;}
+ };
+ cont.appendChild(input);
+ let conf = document.createElement('button');
+ conf.innerHTML = 'Create';
+ conf.onclick = () => {
+ try {
+ input.value.trim();
+ if (!input.value.length) {return;}
+ if (fs.existsSync(path.join(window.kade.cpath, input.value))) {
+ if (!input.value.match(/^.+\(\d\)$/gm)) {input.value += ' (1)';}
+ else {
+ let tempstr = input.value.split('');
+ tempstr[input.value.length - 2] = `${Number(input.value.charAt(input.value.length - 2)) + 1}`;
+ input.value = tempstr.join('');
+ }
+ return;
+ }
+ fs.mkdirSync(path.join(window.kade.cpath, input.value));
+ lightRefresh();
+ modalOut.remove();
+ newToast(
+ "Folder created", [`Folder "${input.value}" created successfully`, `${window.kade.cpath}/${input.value}`], undefined, false, 5,
+ () => {
+ refresh(`${window.kade.cpath}/${input.value}`);
+ require('electron').clipboard.writeText(`${window.kade.cpath}`);
+ newToast("Copied!", "The folder's path has been copied to your clipboard.", "#19df46");
+ }
+ );
+ } catch {
+ newToast("Folder not Created", "An error caused that folder to not be created.", "#b24355", false, 5, () => {showError("Folder Creation", "There was an unknown error while trying to create that folder. It may be a permissions issue, or the host folder doesn't exist anymore.");});
+ clearModals();
+ }
+ postModal(modalOut.id);
+ };
+ cont.appendChild(conf);
+ input.focus();
+ let msm = new Mousetrap(modal);
+ msm.bind('esc', () => {
+ lightRefresh();
+ modalOut.remove();
+ postModal(modalOut.id);
+ });
+ msm.bind('enter', () => {conf.click();});
+ let close = document.createElement('a');
+ close.className = 'close-button';
+ close.onclick = () => {
+ lightRefresh();
+ modalOut.remove();
+ postModal(modalOut.id);
+ };
+ let closeWrap = document.createElement('div');
+ closeWrap.className = 'close-button-wrapper';
+ modal.appendChild(closeWrap);
+ closeWrap.appendChild(close);
+}
\ No newline at end of file