artemis-code-file-manager
Version:
Simple File Explorer for Angular
84 lines • 10.7 kB
JavaScript
import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
import { Subscription } from 'rxjs';
import { ExplorerService } from '../../services/explorer.service';
import { HelperService } from '../../services/helper.service';
export class MenuBarComponent {
constructor(explorerService, helperService) {
this.explorerService = explorerService;
this.helperService = helperService;
this.canDownload = false;
this.canDelete = false;
this.canRename = false;
this.canOpen = false;
this.canShare = false;
this.sub = new Subscription();
this.selection = [];
this.sub.add(this.explorerService.selectedNodes.subscribe(n => {
this.selection = n;
this.canDownload = n.filter(x => x.isLeaf).length === 1;
this.canDelete = n.length > 0;
this.canOpen = n.filter(x => x.isLeaf).length === 1;
this.canShare = n.filter(x => x.isLeaf).length === 1;
this.canRename = n.length === 1;
}));
}
open() {
this.explorerService.open();
}
share() {
this.explorerService.share();
}
createFolder() {
const name = prompt('Enter new folder name');
if (name) {
this.explorerService.createNode(name);
}
}
refresh() {
this.explorerService.refresh();
this.explorerService.getCurrentPath();
}
rename() {
if (this.selection.length === 1) {
const oldName = this.helperService.getName(this.selection[0].data);
const newName = prompt('Enter new name', oldName);
if (newName) {
this.explorerService.rename(newName);
}
}
}
remove() {
if (confirm('Are you sure you want to delete the selected files?')) {
this.explorerService.remove();
}
}
openUploader() {
this.uploader.nativeElement.click();
}
handleFiles(files) {
this.explorerService.upload(files);
this.uploader.nativeElement.value = '';
}
download() {
this.explorerService.download();
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}
MenuBarComponent.decorators = [
{ type: Component, args: [{
selector: 'nxe-menu-bar',
template: "<div class=\"nxe-menu-bar\">\n <div class=\"nxe-menu-bar-left\"> \n <button class=\"nxe-menu-bar-button\" (click)=\"createFolder()\"><i class=\"nxe-folder\" aria-hidden=\"true\"></i>New Folder</button>\n <button class=\"nxe-menu-bar-button\" (click)=\"refresh()\"><i class=\"nxe-arrows-cw\" aria-hidden=\"true\"></i> Refresh</button>\n <button class=\"nxe-menu-bar-button\" (click)=\"openUploader()\"><i class=\"nxe-upload\" aria-hidden=\"true\"></i> Upload</button>\n <button class=\"nxe-menu-bar-button\" [hidden]=\"!canDownload\" (click)=\"download()\"><i class=\"nxe-download\" aria-hidden=\"true\"></i> Download</button>\n <button class=\"nxe-menu-bar-button\" [hidden]=\"!canRename\" (click)=\"rename()\"><i class=\"nxe-edit\" aria-hidden=\"true\"></i> Rename</button>\n <button class=\"nxe-menu-bar-button\" [hidden]=\"!canOpen\" (click)=\"open()\"><i class=\"nxe-open\" aria-hidden=\"true\"></i>Open</button>\n <button class=\"nxe-menu-bar-button\" [hidden]=\"!canShare\" (click)=\"share()\"><i class=\"nxe-share\" aria-hidden=\"true\"></i>Share</button>\n <button class=\"nxe-menu-bar-button\" [hidden]=\"!canDelete\" (click)=\"remove()\"><i class=\"nxe-trash-empty\" aria-hidden=\"true\"></i> Delete</button>\n </div>\n\n <div class=\"nxe-menu-bar-right\">\n <nxe-view-switcher></nxe-view-switcher>\n </div>\n <input style=\"display: none\" type=\"file\" multiple (change)=\"handleFiles($event.target.files)\" #uploader>\n</div>",
encapsulation: ViewEncapsulation.None,
styles: [".nxe-menu-bar{display:flex}.nxe-menu-bar .nxe-menu-bar-left{flex-grow:1;padding:10px}.nxe-menu-bar .nxe-menu-bar-button{background:transparent;border:0;border-radius:5px;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;margin-right:20px;padding:5px}.nxe-menu-bar .nxe-menu-bar-button .nxe-folder{color:#fdb900}.nxe-menu-bar .nxe-menu-bar-button .nxe-arrows-cw{color:green}.nxe-menu-bar .nxe-menu-bar-button .nxe-trash-empty{color:#ca0801}.nxe-menu-bar .nxe-menu-bar-button:hover{background-color:#d7edff}"]
},] }
];
MenuBarComponent.ctorParameters = () => [
{ type: ExplorerService },
{ type: HelperService }
];
MenuBarComponent.propDecorators = {
uploader: [{ type: ViewChild, args: ['uploader', { static: true },] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL25neC1leHBsb3Jlci9uZ3gtZXhwbG9yZXIvcHJvamVjdHMvbmd4LWV4cGxvcmVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21lbnUtYmFyL21lbnUtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBUTlELE1BQU0sT0FBTyxnQkFBZ0I7SUFVekIsWUFBb0IsZUFBZ0MsRUFBVSxhQUE0QjtRQUF0RSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVAxRixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFVixRQUFHLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQVksRUFBRSxDQUFDO1FBRzVCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0MsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELElBQUksT0FBTyxFQUFFO2dCQUNULElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hDO1NBQ0o7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksT0FBTyxDQUFDLHFEQUFxRCxDQUFDLEVBQUU7WUFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7WUFuRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4Qiw2c0NBQXdDO2dCQUV4QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDeEM7OztZQVJRLGVBQWU7WUFDZixhQUFhOzs7dUJBU2pCLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5vZGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgRXhwbG9yZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhwbG9yZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ254ZS1tZW51LWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51LWJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWVudUJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgndXBsb2FkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB1cGxvYWRlcjogRWxlbWVudFJlZjtcblxuICAgIGNhbkRvd25sb2FkID0gZmFsc2U7XG4gICAgY2FuRGVsZXRlID0gZmFsc2U7XG4gICAgY2FuUmVuYW1lID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHN1YiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogSU5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBleHBsb3JlclNlcnZpY2U6IEV4cGxvcmVyU2VydmljZSwgcHJpdmF0ZSBoZWxwZXJTZXJ2aWNlOiBIZWxwZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuc3ViLmFkZCh0aGlzLmV4cGxvcmVyU2VydmljZS5zZWxlY3RlZE5vZGVzLnN1YnNjcmliZShuID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gbjtcbiAgICAgICAgICAgIHRoaXMuY2FuRG93bmxvYWQgPSBuLmZpbHRlcih4ID0+IHguaXNMZWFmKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICB0aGlzLmNhbkRlbGV0ZSA9IG4ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIHRoaXMuY2FuUmVuYW1lID0gbi5sZW5ndGggPT09IDE7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjcmVhdGVGb2xkZXIoKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwcm9tcHQoJ0VudGVyIG5ldyBmb2xkZXIgbmFtZScpO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgdGhpcy5leHBsb3JlclNlcnZpY2UuY3JlYXRlTm9kZShuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2goKSB7XG4gICAgICAgIHRoaXMuZXhwbG9yZXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICByZW5hbWUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZE5hbWUgPSB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0TmFtZSh0aGlzLnNlbGVjdGlvblswXS5kYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBwcm9tcHQoJ0VudGVyIG5ldyBuYW1lJywgb2xkTmFtZSk7XG4gICAgICAgICAgICBpZiAobmV3TmFtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwbG9yZXJTZXJ2aWNlLnJlbmFtZShuZXdOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGZpbGVzPycpKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGxvcmVyU2VydmljZS5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5VcGxvYWRlcigpIHtcbiAgICAgICAgdGhpcy51cGxvYWRlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRmlsZXMoZmlsZXM6IEZpbGVbXSkge1xuICAgICAgICB0aGlzLmV4cGxvcmVyU2VydmljZS51cGxvYWQoZmlsZXMpO1xuICAgICAgICB0aGlzLnVwbG9hZGVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBkb3dubG9hZCgpIHtcbiAgICAgICAgdGhpcy5leHBsb3JlclNlcnZpY2UuZG93bmxvYWQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbn1cbiJdfQ==