@jirkasa/code-box
Version:
Showcase code samples on the web with a container that lets users select and display different samples.
217 lines (216 loc) • 8.63 kB
TypeScript
import CodeView from "../../code-view/CodeView";
import EventSourcePoint from "../../utils/EventSourcePoint";
import TreeNode from "../../utils/TreeNode";
import CodeViewButton from "../CodeViewButton";
import CodeViewFolderItem from "./CodeViewFolderItem";
import FileFolderItem from "./FileFolderItem";
import FolderInfo from "./FolderInfo";
import ProjectCodeBoxFile from "./ProjectCodeBoxFile";
/** Represents folder in project code box panel. */
declare class Folder {
/** Folder button element. */
protected buttonElement: HTMLButtonElement;
/** Folder button text element. */
private buttonTextElement;
/** Container for folder items. */
private itemsContainer;
/** Collapsible functionality. */
private collapsible;
/** Name of folder. */
private name;
/** Subfolders stored by name. */
private subfolders;
/** Code view items stored by name. */
private codeViewItems;
/** File items stored by name. */
private fileItems;
/** Indicates whether all parent folders are opened. This value is changed when updateTabNavigation method is called. */
private lastAllParentOpened;
/**
* Creates new folder.
* @param name Name of folder.
* @param parentOpened Indicates whether all parent folders are opened.
* @param openCloseAnimationSpeed Open/close animation speed in miliseconds.
* @param openCloseAnimationEasingFunction CSS easing function for open/close animation.
* @param svgSpritePath Path to SVG sprite for icons.
* @param arrowIconName Name of arrow icon.
* @param folderIconName Name of folder icon.
* @param cssModifierClass CSS class to be added to folder button.
* @param parentElement Element into which should be folder appended (null if it should not be appended).
*/
constructor(name: string, allParentsOpened: boolean, openCloseAnimationSpeed: number, openCloseAnimationEasingFunction: string, svgSpritePath?: string | null, arrowIconName?: string | null, folderIconName?: string | null, cssModifierClass?: string | null, parentElement?: HTMLElement | null);
/**
* Appends folder to element.
* @param container Element to append folder to.
*/
appendTo(container: HTMLElement): void;
/**
* Detaches folder from its parent element.
*/
detach(): void;
/**
* Returns name of folder.
* @returns Name of folder.
*/
getName(): string;
/**
* Sets name of folder.
* @param name Name.
*/
setName(name: string): void;
/**
* Opens folder.
* @param animate Determines whether animation should be used.
*/
open(animate?: boolean): void;
/**
* Closes folder.
* @param animate Determines whether animation should be used.
*/
close(animate?: boolean): void;
/**
* Checkes whether folder is opened.
* @returns Indicates whether folder is opened.
*/
isOpened(): boolean;
/**
* Updates tab navigation.
* @param allParentOpened Indicates whether all parent folders are opened.
*/
updateTabNavigation(allParentOpened: boolean): void;
/**
* Adds folder as subfolder.
* @param name Name of folder.
* @param folder Folder.
*/
addFolder(name: string, folder: Folder): void;
/**
* Returns subfolder by name.
* @param folderName Folder name.
* @returns Subfolder or null if subfolder wasn't found.
*/
getFolder(folderName: string): Folder | null;
/**
* Returns subfolders of folder.
* @returns Subfolders.
*/
getFolders(): Folder[];
/**
* Removes subfolder.
* @param folderName Name of folder to be removed.
* @returns Indicates whether subfolder was successfully found and removed.
*/
removeFolder(folderName: string): boolean;
/**
* Renames subfolder.
* @param folderName Name of folder to be renamed.
* @param newFolderName New folder name.
* @returns Indicates whether subfolder was successfully found and removed.
*/
renameFolder(folderName: string, newFolderName: string): boolean;
/**
* Returns number of subfolders (direct subfolders).
* @returns Number of subfolders.
*/
getFoldersCount(): number;
/**
* Adds code view to folder.
* @param name Name of code view.
* @param codeView Code view.
* @param showCodeViewEventSource Event source to be used to fire event when code view button is clicked.
* @param svgSpritePath Path to SVG sprite with icons.
* @param buttonIconName Icon name for code view button.
* @returns Created code view item or null if code view could not be added to folder (when there is already code view with same name).
*/
addCodeView(name: string, codeView: CodeView, showCodeViewEventSource: EventSourcePoint<CodeViewButton, CodeView>, svgSpritePath?: string | null, buttonIconName?: string | null): CodeViewFolderItem | null;
/**
* Returns code view item by name.
* @param name Name of code view.
* @returns Code view item or null if code view item wasn't found.
*/
getCodeView(name: string): CodeViewFolderItem | null;
/**
* Returns code view items in folder.
* @param traverseSubfolders Determines whether code view items in subfolders should also be included.
* @returns Code view items.
*/
getCodeViews(traverseSubfolders?: boolean): CodeViewFolderItem[];
/**
* Returns names of code view items in folder (not including code view items in subfolders).
* @returns Code view names.
*/
getCodeViewNames(): string[];
/**
* Removes code view item.
* @param name Name of code view.
* @returns Indicates whether code view item was successfully found and removed.
*/
removeCodeView(name: string): boolean;
/**
* Returns number of code view items (code view items in subfolders are not included).
* @returns Number of code view items.
*/
getCodeViewsCount(): number;
/**
* Adds file to folder.
* @param name Name of file.
* @param codeBoxFile Code box file.
* @param svgSpritePath Path to SVG sprite with icons.
* @param buttonIconName Icon name for file button.
* @param buttonDownloadIconName Download icon name for file button.
* @returns Created file item or null if file could not be added to folder (when there is already file with the same name).
*/
addFile(name: string, codeBoxFile: ProjectCodeBoxFile, svgSpritePath?: string | null, buttonIconName?: string | null, buttonDownloadIconName?: string | null): FileFolderItem | null;
/**
* Returns file item by name.
* @param name Name of file.
* @returns File item or null if file item wasn't found.
*/
getFile(name: string): FileFolderItem | null;
/**
* Returns file items in folder.
* @param traverseSubfolders Determines whether file items in subfolders should also be included.
* @returns File items.
*/
getFiles(traverseSubfolders?: boolean): FileFolderItem[];
/**
* Returns names of file items in folder (not including file items in subfolders).
* @returns File names.
*/
getFileNames(): string[];
/**
* Removes file item.
* @param name Name of file.
* @returns Indicates whether file item was successfully found and removed.
*/
removeFile(name: string): boolean;
/**
* Returns number of file items (file items in subfolders are not included).
* @returns Number of file items.
*/
getFilesCount(): number;
/**
* Returns names of code view items in folder and subfolders. If code view item is located in subfolder, the final name can be for example "subfolder/filename.js" or "subfolder/anothersubfolder/filename.js".
* @returns Code view names.
*/
getCodeViewNamesInFolderAndSubfolders(): string[];
/**
* Returns names of file items in folder and subfolders. If file item is located in subfolder, the final name can be for example "subfolder/filename.png" or "subfolder/anothersubfolder/filename.png".
* @returns File names.
*/
getFileNamesInFolderAndSubfolders(): string[];
/**
* Returns folder structure of folder.
* @returns Folder structure.
*/
getFolderStructure(): TreeNode<FolderInfo>;
/**
* Called by collapsible when it is toggled.
*/
private onCollapsibleToggled;
/**
* Sorts folder items alphabetically (first folders, then code view and file items).
*/
private sortItems;
}
export default Folder;