sd-treeview
Version:
simple folders and files view in tree-view formate
79 lines • 4.36 kB
JavaScript
import React, { useState } from "react";
import { GlobalStore } from "./store/GlobalStore";
const Folder = (props) => {
const { treeStructure, folderClick, expandIcon, collapseIcon, closeIcon, openIcon, clickBackground, } = props;
const [vheight, setvheight] = useState(treeStructure);
const changeSpan = (index) => {
let treeValue = [...vheight];
treeValue[index].isPress = !treeValue[index].isPress;
setvheight(treeValue);
};
const textClick = (item, index) => {
GlobalStore.setclickStoreAddress(item.name);
let treeValue = [...vheight];
treeValue[index].istextPress = true;
setvheight((_) => treeValue);
if (folderClick !== undefined) {
folderClick(item.address, item.name);
}
};
return (React.createElement(React.Fragment, null, treeStructure.map((item, index) => {
let icon = "";
let folderIcon = "";
if (item.istextPress &&
item.name !== GlobalStore.getclickStoreAddress()) {
item.istextPress = false;
}
if (item.isPress) {
icon = expandIcon === undefined ? "⮛" : expandIcon;
folderIcon = openIcon === undefined ? "🗁" : openIcon;
}
else {
icon = collapseIcon === undefined ? "⮚" : collapseIcon;
folderIcon = closeIcon === undefined ? "🗀" : closeIcon;
for (let i = 0; i < item.children.length; i++) {
let child = item.children[i];
if (child.folder) {
child.isPress = false;
}
}
}
return (React.createElement(React.Fragment, null,
React.createElement("div", null,
React.createElement("li", null,
React.createElement("div", { style: item.istextPress
? {
marginLeft: "-18px",
backgroundColor: clickBackground,
}
: { marginLeft: "-19px" } },
React.createElement("span", { className: "folder", onClick: () => textClick(item, index) },
React.createElement("span", { className: "arrow", onClick: () => changeSpan(index) }, icon),
React.createElement("span", { className: "folderIcon-css" }, folderIcon),
item.name)),
item.isPress ? (React.createElement(React.Fragment, null,
React.createElement("ul", { className: "nested" }, item.children.map((fileItem) => {
var _a, _b, _c, _d;
return (React.createElement(React.Fragment, null, !fileItem.folder ? (React.createElement("li", { className: "file-html", style: fileItem.textCss !==
undefined
? {
color: (_a = fileItem.textCss) === null || _a === void 0 ? void 0 : _a.color,
fontSize: (_b = fileItem
.textCss) === null || _b === void 0 ? void 0 : _b.size,
}
: {} },
React.createElement("span", { style: fileItem.iconCss !==
undefined
? {
color: (_c = fileItem
.iconCss) === null || _c === void 0 ? void 0 : _c.color,
fontSize: (_d = fileItem
.iconCss) === null || _d === void 0 ? void 0 : _d.size,
}
: {} }, fileItem.icon),
fileItem.name)) : (React.createElement(Folder, { treeStructure: [fileItem], folderClick: folderClick, expandIcon: expandIcon, collapseIcon: collapseIcon, closeIcon: closeIcon, openIcon: openIcon, clickBackground: clickBackground }))));
})))) : null))));
})));
};
export default Folder;
//# sourceMappingURL=folder.js.map