You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.6 KiB
86 lines
3.6 KiB
const loadHierarchy = require("../hierarchy");
|
|
|
|
const isOverflowing = require('../../dep/overflowing');
|
|
|
|
module.exports = (dir, options) => {
|
|
const refresh = require("../refresh");
|
|
|
|
let cdir = dir || window.kade.cdir;
|
|
const exp = document.getElementById('files');
|
|
let num = 0;
|
|
for (let i = 0; i < cdir.length; i++) {
|
|
let file = cdir[i];
|
|
let cfc = document.createElement("div");
|
|
cfc.className = 'file';
|
|
if (options.animate) {cfc.classList.add('rise');}
|
|
if (file.type.toLowerCase().includes('folder')) {cfc.classList.add('folder');}
|
|
cfc.onclick = function () {
|
|
window.kade.elc = true;
|
|
if (cfc.classList.contains('file-active')) {if (file.dir) {refresh(`${window.kade.cpath}/${file.name}`);}}
|
|
cfc.classList.add('file-active');
|
|
if (window.kade.cl && !cfc.isSameNode(window.kade.cl)) {window.kade.cl.classList.remove('file-active');}
|
|
window.kade.cl = cfc;
|
|
};
|
|
cfc.oncontextmenu = function () {
|
|
window.kade.elc = true;
|
|
if (!cfc.classList.contains('file-active')) {cfc.classList.add('file-active');}
|
|
if (window.kade.cl && !cfc.isSameNode(window.kade.cl)) {window.kade.cl.classList.remove('file-active');}
|
|
window.kade.cl = cfc;
|
|
window.kade.ctxel = cfc;
|
|
};
|
|
if (options.animate) {
|
|
cfc.style = `animation-delay: ${num * .03}s`;
|
|
cfc.onanimationend = () => {
|
|
cfc.style = '';
|
|
cfc.classList.remove('rise');
|
|
};
|
|
}
|
|
exp.appendChild(cfc);
|
|
let im = document.createElement('img');
|
|
im.src = file.icon;
|
|
if (file.icon === './assets/icons/base/file.svg') {im.style.filter = "invert(29%) sepia(72%) saturate(3276%) hue-rotate(296deg) brightness(69%) contrast(97%)";}
|
|
im.className = 'file-icon';
|
|
cfc.appendChild(im);
|
|
let cf = document.createElement('b');
|
|
cf.className = 'file-name';
|
|
cf.innerHTML = file.name;
|
|
cfc.appendChild(cf);
|
|
if (isOverflowing(cf)) {
|
|
cfc.removeChild(cf);
|
|
cf.classList.add('large-file-name');
|
|
cf.style.animationDuration = `${file.name.length / 2.5}s`;
|
|
let lfnc = document.createElement('div');
|
|
lfnc.className = 'large-file-name-container';
|
|
cfc.appendChild(lfnc);
|
|
lfnc.appendChild(cf);
|
|
}
|
|
let isd = document.createElement('p');
|
|
isd.className = 'file-type';
|
|
isd.innerHTML = file.type;
|
|
cfc.appendChild(isd);
|
|
let lm = document.createElement('p');
|
|
lm.className = 'file-date';
|
|
lm.innerHTML = file.lastModifiedString;
|
|
cfc.appendChild(lm);
|
|
let size = document.createElement('p');
|
|
size.className = 'file-size';
|
|
size.innerHTML = file.sizeString;
|
|
cfc.appendChild(size);
|
|
Array.from(cfc.children).forEach(el => el.classList.add('nosel'));
|
|
num++;
|
|
}
|
|
|
|
if (options.resetNav) {loadHierarchy();}
|
|
if (!options.scroll && window.kade.scrollY) {
|
|
window.scrollTo(0, window.kade.scrollY);
|
|
window.kade.scrollY = 0;
|
|
}
|
|
|
|
if (!cdir.length) {
|
|
let nts = document.createElement('p');
|
|
nts.id = 'nothing-to-show';
|
|
nts.innerHTML = "There's nothing to show here!<br>But you can look at this really pretty box :)<br><br><em>The folder is empty, or I don't have the permissions to show you your files.</em>";
|
|
nts.className = 'nosel';
|
|
exp.appendChild(nts);
|
|
}
|
|
}; |