Compare commits
49 Commits
@ -1,2 +1,3 @@ |
||||
node_modules/ |
||||
out/ |
||||
out/ |
||||
favorites.json |
@ -0,0 +1 @@ |
||||
{"log":{"Toasts":["Toasts now have moving timers","They'll soon pause on hover. (Soon:tm:)"]},"version":{"name":"Alpha","semver":"1.4.4"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Sidebar":["There's now a sidebar! :D","The sidebar properly flows with other elements. Have to add this as a changelog cause it took some love","There are some default quick access buttons for Windows","The quick access buttons do in fact work"]},"version":{"name":"Alpha","semver":"1.5.0"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Bugs":["Changelogs work in production","My brain is quite small yes yes","Hope this doesn't break anything else *shrug*"]},"version":{"name":"Alpha","semver":"1.5.1"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Context Menu":["The right click menu now recognizes when you're on a folder","The 'rename' feature in context menu works!"],"Sidebar":["Added the custom favorites group","Doesn't work yet though"]},"version":{"name":"Alpha","semver":"1.6.0"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Toasts":["Toasts now pause when you hover over them","This feature is somewhat experimental","Changed the internals of toasts. More butter. Mmmmmmbutter"]},"version":{"name":"Alpha","semver":"1.6.1"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Sidebar":["The option to pin a folder to the sidebar now works","These pins save between restarts!"]},"version":{"name":"Alpha","semver":"1.6.2"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Folder Deletion":["You can now delete folders by right clicking on them","Includes an obligatory confirmation to make sure you're sure you want to delete the folder :)"],"Bugs":["Error modals are actually closable now kekw","Right click will only show folder options on folders now"]},"version":{"name":"Alpha","semver":" 1.6.3"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Misc":["Small update here","Cleaned up a few bugs too small to really talk about here","Fixed a really nasty bug where the app would try to delete a folder a whole bunch of times","Clicking on the same file again won't make it visibly un-click","A folder will select itself after it's created"]},"version":{"name":"Alpha","semver":"1.6.4"}} |
@ -0,0 +1 @@ |
||||
{"log":{"File opening":["Files now open!!","I know right, a file explorer that opens files. Revolutionary.","This feature is dependent on you being on a version of Windows where PowerShell exists. Whether or not it works every single time is a bit untested, so it could cause some twitchy stuff to happen. This has not been written for Linux or Mac yet."]},"version":{"name":"Alpha","semver":"1.7.0"}} |
@ -0,0 +1 @@ |
||||
{"log":{"Zipping":["You can now zip folders!","So far, this only applies to the directory you're currently viewing. It will not *yet* zip the directory you have selected"]},"version":{"name":"Alpha","semver":"1.7.1"}} |
@ -0,0 +1,23 @@ |
||||
{ |
||||
"default": [ |
||||
{ |
||||
"name": "Desktop", |
||||
"win32": "{r}\\Desktop" |
||||
}, { |
||||
"name": "Documents", |
||||
"win32": "{r}\\Documents" |
||||
}, { |
||||
"name": "Pictures", |
||||
"win32": "{r}\\Pictures" |
||||
}, { |
||||
"name": "Videos", |
||||
"win32": "{r}\\Videos" |
||||
}, { |
||||
"name": "Music", |
||||
"win32": "{r}\\Music" |
||||
}, { |
||||
"name": "Downloads", |
||||
"win32": "{r}\\Downloads" |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,5 @@ |
||||
const path = require('path'); |
||||
|
||||
module.exports = () => { |
||||
return require('./compress')(undefined, path.join(window.kade.cpath, window.kade.currentFolder)); |
||||
}; |
@ -0,0 +1,105 @@ |
||||
const fs = require('fs'); |
||||
const path = require('path'); |
||||
const az = require('adm-zip'); |
||||
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 = (event, pathToCompress) => { |
||||
let zip = new az(); |
||||
if (!pathToCompress) {pathToCompress = window.kade.cpath;} |
||||
if (window.kade.modal) {return;} |
||||
preModal('compress-folder-modal-container'); |
||||
let modalOut = document.createElement('div'); |
||||
modalOut.className = 'modal'; |
||||
modalOut.id = 'compress-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 = 'Compress Folder'; |
||||
modal.appendChild(title); |
||||
let text = document.createElement('p'); |
||||
text.innerHTML = "Please name the zip you'd like to compress to."; |
||||
modal.appendChild(text); |
||||
let cont = document.createElement('div'); |
||||
cont.className = 'button-container'; |
||||
modal.appendChild(cont); |
||||
let input = document.createElement('input'); |
||||
input.placeholder = pathToCompress.split(/\\+|\/+/gm).reverse()[0]; |
||||
input.value = input.placeholder; |
||||
input.id = 'compress-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 = input.value.trim(); |
||||
if (input.value.endsWith('.zip')) {input.value = input.value.slice(0, input.value.length - 4);} |
||||
if (!input.value.length) {return;} |
||||
if (fs.existsSync(path.join(window.kade.cpath, `${input.value}.zip`))) { |
||||
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; |
||||
} |
||||
input.style.display = 'none'; |
||||
conf.style.display = 'none'; |
||||
cont.style.display = 'none'; |
||||
text.innerHTML = "Please wait a moment..."; |
||||
closeWrap.style.display = 'none'; |
||||
zip.addLocalFolderPromise(pathToCompress).then(() => { |
||||
title.innerHTML += " - In Progress..." |
||||
text.innerHTML = "Your folder is being compressed. Please wait a moment.<br><br>This may take some time..."; |
||||
let bar = document.createElement('div'); |
||||
bar.className = "loading-bar"; |
||||
modal.appendChild(bar); |
||||
zip.writeZipPromise(`${window.kade.cpath}/${input.value}${input.value.endsWith('.zip') ? '' : '.zip'}`, {overwrite: true}).then(() => { |
||||
newToast("Folder compressed", [`The current folder was compressed into "${input.value}" successfully`, `<em>${window.kade.cpath}/${input.value}</em>`], undefined, false, 5); |
||||
lightRefresh(); |
||||
modalOut.remove(); |
||||
postModal(modalOut.id); |
||||
}); |
||||
}); |
||||
} catch { |
||||
newToast("Folder not Compressed", "An error caused that folder to not be compressed.", "#b24355", false, 5, () => {showError("Folder Creation", "There was an unknown error while trying to compress 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); |
||||
}; |
@ -0,0 +1,105 @@ |
||||
const fs = require('fs'); |
||||
const path = require('path'); |
||||
const az = require('adm-zip'); |
||||
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 = (event, pathToCompress) => { |
||||
if (!fs.existsSync(path.join(window.kade.cpath, window.kade.currentFolder))) { |
||||
return newToast("Decompression failed", "For some reason, that zip archive could not be found."); |
||||
} |
||||
let zip = new az(path.join(window.kade.cpath, window.kade.currentFolder)); |
||||
if (!pathToCompress) {pathToCompress = window.kade.currentFolder;} |
||||
if (window.kade.modal) {return;} |
||||
preModal('decompress-folder-modal-container'); |
||||
let modalOut = document.createElement('div'); |
||||
modalOut.className = 'modal'; |
||||
modalOut.id = 'decompress-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 = 'Decompress Archive'; |
||||
modal.appendChild(title); |
||||
let text = document.createElement('p'); |
||||
text.innerHTML = "Please name the zip you'd like to decompress to."; |
||||
modal.appendChild(text); |
||||
let cont = document.createElement('div'); |
||||
cont.className = 'button-container'; |
||||
modal.appendChild(cont); |
||||
let input = document.createElement('input'); |
||||
input.placeholder = pathToCompress.split(/\\+|\/+/gm).reverse()[0]; |
||||
input.placeholder = input.placeholder.slice(0, input.placeholder.length - 4); |
||||
input.value = input.placeholder; |
||||
input.id = 'decompress-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 = 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; |
||||
} |
||||
input.style.display = 'none'; |
||||
conf.style.display = 'none'; |
||||
cont.style.display = 'none'; |
||||
closeWrap.style.display = 'none'; |
||||
title.innerHTML += " - In Progress..." |
||||
text.innerHTML = "Your arhive is being decompressed. Please wait a moment.<br><br>This may take some time..."; |
||||
let bar = document.createElement('div'); |
||||
bar.className = "loading-bar"; |
||||
modal.appendChild(bar); |
||||
zip.extractAllToAsync(path.join(window.kade.cpath, input.value), undefined, undefined, () => { |
||||
newToast("Archive decompressed", [`The current folder was decompressed into "${input.value}" successfully`, `<em>${window.kade.cpath}/${input.value}</em>`], undefined, false, 5, () => refresh(`${window.kade.cpath}/${input.value}`)); |
||||
lightRefresh(); |
||||
modalOut.remove(); |
||||
postModal(modalOut.id); |
||||
}); |
||||
} catch { |
||||
newToast("Archive not Decompressed", "An error caused that folder to not be decompressed.", "#b24355", false, 5, () => {showError("Folder Creation", "There was an unknown error while trying to decompress 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); |
||||
}; |
@ -0,0 +1,79 @@ |
||||
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'); |
||||
|
||||
module.exports = () => { |
||||
if (window.kade.modal) {return;} |
||||
preModal('delete-folder-modal-container'); |
||||
let modalOut = document.createElement('div'); |
||||
modalOut.className = 'modal'; |
||||
modalOut.id = 'delete-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 = 'Delete Folder'; |
||||
modal.appendChild(title); |
||||
let text = document.createElement('p'); |
||||
text.innerHTML = "Are you sure you'd like to delete this folder? Remember, this <b>cannot be undone</b>."; |
||||
modal.appendChild(text); |
||||
let cont = document.createElement('div'); |
||||
cont.className = 'button-container'; |
||||
modal.appendChild(cont); |
||||
let conf = document.createElement('button'); |
||||
conf.innerHTML = 'Delete it!'; |
||||
let cxl = document.createElement('button'); |
||||
cxl.innerHTML = "Nevermind"; |
||||
cxl.onclick = () => { |
||||
lightRefresh(); |
||||
modalOut.remove(); |
||||
postModal(modalOut.id); |
||||
}; |
||||
conf.onclick = () => { |
||||
try { |
||||
fs.rmdirSync(path.join(window.kade.cpath, window.kade.currentFolder)); |
||||
postModal(modalOut.id); |
||||
modalOut.remove(); |
||||
lightRefresh(window.kade.cpath); |
||||
newToast("Folder Deleted", "Your folder has been deleted successfully."); |
||||
} catch { |
||||
newToast("Folder not Deleted", "An error caused that folder to not be deleted.", "#b24355", false, 5, () => {showError("Folder Deletion", "There was an unknown error while trying to delete that folder. It may be a permissions issue, or the host folder doesn't exist anymore.");}); |
||||
clearModals(); |
||||
try {modalOut.remove();} catch {} |
||||
postModal(modalOut.id); |
||||
} |
||||
}; |
||||
cont.appendChild(conf); |
||||
cont.appendChild(cxl); |
||||
let iin = document.createElement('input'); |
||||
iin.className = 'invis'; |
||||
iin.classList.add('nosel'); |
||||
cont.appendChild(iin); |
||||
iin.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); |
||||
}; |
@ -1,4 +1,5 @@ |
||||
module.exports = (window) => { |
||||
document.getElementById('ctx').style.display = 'none'; |
||||
if (!window) {return;} |
||||
window.kade.context = false; |
||||
}; |
@ -0,0 +1,36 @@ |
||||
const fs = require('fs'); |
||||
const path = require('path'); |
||||
|
||||
const createToast = require('../toast/createtoast'); |
||||
const refresh = require('../fileview/refresh'); |
||||
const newToast = require("../toast/createtoast"); |
||||
|
||||
module.exports = () => { |
||||
if (!fs.existsSync(path.join(__dirname, '../../', '/json/config'))) {fs.mkdirSync(path.join(__dirname, '../../', '/json/config'));} |
||||
let pins; |
||||
if (fs.existsSync(path.join(__dirname, '../../', '/json/config/favorites.json'))) { |
||||
pins = require('../../json/config/favorites.json'); |
||||
} else {pins = {};} |
||||
let fta = window.kade.currentFolder.trim(); |
||||
if (Object.keys(pins).includes(`${window.kade.cpath.replace(/\\+/gm, '/')}/${fta}`)) { |
||||
return createToast("Already pinned", "That folder is already pinned!"); |
||||
} |
||||
let tr = `${window.kade.cpath.replace(/\\+/gm, '/')}/${fta}`; |
||||
pins[tr] = fta; |
||||
let cfc = document.getElementById('custom-favorites-container'); |
||||
let fav = document.createElement('div'); |
||||
['favorites-button', 'folder-pin', 'nosel'].forEach(x => fav.classList.add(x)); |
||||
fav.innerHTML = fta; |
||||
fav.onclick = () => {refresh(tr);}; |
||||
cfc.appendChild(fav); |
||||
createToast( |
||||
"Folder Pinned", [`Folder "${fta}" was successfully pinned! You can now access it permanently in your sidebar!"`, `<em>${window.kade.cpath.replace(/\\+/gm, '/')}/${fta}</em>`], undefined, false, 5, |
||||
() => { |
||||
refresh(tr); |
||||
require('electron').clipboard.writeText(`${window.kade.cpath.replace(/\\+/gm, '/')}`); |
||||
newToast("Copied!", "<em>The folder's path has been copied to your clipboard.</em>", "#19df46"); |
||||
} |
||||
); |
||||
try {fs.writeFileSync(path.join(__dirname, '../../', '/json/config/favorites.json'), JSON.stringify(pins));} |
||||
catch {createToast("Error", "Your pin was not saved for some reason. Please restart or reload (ctrl+shift+r) the app and try again.", "#ff557a");} |
||||
}; |
@ -0,0 +1,94 @@ |
||||
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('rename-folder-modal-container'); |
||||
let modalOut = document.createElement('div'); |
||||
modalOut.className = 'modal'; |
||||
modalOut.id = 'rename-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 = 'Rename Folder'; |
||||
modal.appendChild(title); |
||||
let text = document.createElement('p'); |
||||
text.innerHTML = "What would you like to rename this folder to?"; |
||||
modal.appendChild(text); |
||||
let cont = document.createElement('div'); |
||||
cont.className = 'button-container'; |
||||
modal.appendChild(cont); |
||||
let input = document.createElement('input'); |
||||
input.placeholder = window.kade.currentFolder; |
||||
input.id = 'rename-folder-input'; |
||||
input.value = window.kade.currentFolder; |
||||
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 = 'Rename'; |
||||
conf.onclick = () => { |
||||
try { |
||||
input.value = 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.renameSync(path.join(window.kade.cpath, window.kade.currentFolder), path.join(window.kade.cpath, input.value)); |
||||
lightRefresh(); |
||||
modalOut.remove(); |
||||
newToast( |
||||
"Folder renamed", [`Folder "${window.kade.currentFolder}" was successfully renamed to "${input.value}"`, `<em>${window.kade.cpath}/${input.value}</em>`], undefined, false, 5, |
||||
() => { |
||||
refresh(`${window.kade.cpath}/${input.value}`); |
||||
require('electron').clipboard.writeText(`${window.kade.cpath}`); |
||||
newToast("Copied!", "<em>The folder's path has been copied to your clipboard.</em>", "#19df46"); |
||||
} |
||||
); |
||||
} catch { |
||||
newToast("Folder not Renamed", "An error caused that folder to not be renamed.", "#b24355", false, 5, () => {showError("Folder Renaming", "There was an unknown error while trying to rename 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); |
||||
} |
@ -0,0 +1,12 @@ |
||||
module.exports = (name) => { |
||||
let folders = document.getElementById('files').getElementsByClassName('folder'); |
||||
let folder = 1; |
||||
for (let i = 0; i < folders.length; i++) { |
||||
if (folders.item(i).children.item(1).innerHTML === name) { |
||||
folder = folders.item(i); |
||||
folder.click(); |
||||
break; |
||||
} |
||||
} |
||||
return folder; |
||||
}; |
@ -1,8 +1,10 @@ |
||||
const transit = require("./transit"); |
||||
|
||||
module.exports = (id) => { |
||||
document.getElementById('modal-block').remove(); |
||||
window.kade.modal = false; |
||||
document.body.style.overflowY = 'overlay'; |
||||
transit(id, false); |
||||
try { |
||||
try {document.getElementById('modal-block').remove();} catch {} |
||||
window.kade.modal = false; |
||||
document.body.style.overflowY = 'overlay'; |
||||
transit(id, false); |
||||
} catch {} |
||||
}; |
@ -0,0 +1,41 @@ |
||||
const refresh = require('../fileview/refresh'); |
||||
|
||||
const qa = require('../../json/qa.json'); |
||||
const os = require("os"); |
||||
const fs = require('fs'); |
||||
const path = require('path'); |
||||
|
||||
module.exports = () => { |
||||
let root |
||||
switch (window.kade.platform) { |
||||
case 'win32': |
||||
root = `${os.homedir()}`; |
||||
break; |
||||
case 'linux': |
||||
root = `~/home`; |
||||
break; |
||||
} |
||||
|
||||
let quickAccess = document.getElementById('favorites-container'); |
||||
|
||||
qa.default.forEach(i => { |
||||
let quick = document.createElement('div'); |
||||
quick.innerHTML = i.name; |
||||
quick.onclick = () => {refresh(i[window.kade.platform].replace('{r}', root));}; |
||||
quick.className = 'favorites-button'; |
||||
quick.classList.add('nosel'); |
||||
quickAccess.appendChild(quick); |
||||
}); |
||||
|
||||
if (fs.existsSync(path.join(__dirname, '../../', '/json/config/favorites.json'))) { |
||||
const pins = require('../../json/config/favorites.json'); |
||||
let cfc = document.getElementById('custom-favorites-container'); |
||||
Object.keys(pins).forEach(pin => { |
||||
let fav = document.createElement('div'); |
||||
['favorites-button', 'folder-pin', 'nosel'].forEach(x => fav.classList.add(x)); |
||||
fav.innerHTML = pins[pin]; |
||||
fav.onclick = () => {refresh(pin);}; |
||||
cfc.appendChild(fav); |
||||
}); |
||||
} |
||||
}; |
@ -0,0 +1,42 @@ |
||||
#sidebar { |
||||
width: 180px; |
||||
border-right: 1px solid #5d60caaf; |
||||
margin: 26px 0 0 0; |
||||
padding: 0 14px 12px 14px; |
||||
position: fixed; |
||||
z-index: 1; |
||||
overflow-x: hidden; |
||||
top: 0; |
||||
left: 0; |
||||
background-color: #0000006d; |
||||
height: 100%; |
||||
} |
||||
|
||||
#container {margin-left: 200px;} |
||||
|
||||
#favorites-container, #favorites-wrapper, #custom-favorites-container { |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: stretch; |
||||
align-content: flex-start; |
||||
justify-content: flex-start; |
||||
row-gap: 6px; |
||||
} |
||||
|
||||
.favorites-button { |
||||
padding: 4px 6px; |
||||
color: #afafaf; |
||||
border-radius: 3px 3px; |
||||
cursor: pointer; |
||||
transition: padding-left .05s linear; |
||||
} |
||||
|
||||
.favorites-button:hover { |
||||
background-color: #a172a65f; |
||||
padding-left: 10px; |
||||
color: white; |
||||
} |
||||
|
||||
.favorites-header { |
||||
margin-bottom: 7px; |
||||
} |
Loading…
Reference in new issue