(function() { "use strict"; angular.module('shared') .component('folderListItem', { templateUrl: '/shared/js/angular/folder-list/folder-list-item.html', controller: 'FolderListItem', bindings: { folder: '<', selectFolder: '<', saveNewFolder: '<', folderIndex: '<', scrollAllowed: '<' } }) .controller('FolderListItem', ['$scope', 'folderListItemAmbassador', 'folders', '_', function FolderListItemController($scope, folderListItemAmbassador, folders, _) { var ctrl = this; var folderDepthLimit = 8; var SHOWN_FOLDERS_INITIAL_DEPTH = 2; ctrl.folderListItemHeight = 27; ctrl.newFolderName = ""; ctrl.isAddNestedActive = false; ctrl.$onInit = function() { folderListItemAmbassador.registerOnActiveFolderListItemChanged($scope, onActiveFolderListItemChanged); onActiveFolderListItemChanged(); ctrl.folder.showFolders = folders.getDepth(ctrl.folder) < SHOWN_FOLDERS_INITIAL_DEPTH; var previousShownFolders = folderListItemAmbassador.getPreviousShownFolders(); if (previousShownFolders && !_.isEmpty(previousShownFolders)) { ctrl.folder.showFolders = folderListItemAmbassador.findPreviousShownFolders(ctrl.folder.id); } ctrl.parentFolder = folders.findParent(ctrl.folder); ctrl.hideFolderToggle = ctrl.parentFolder === null || !ctrl.folder.children; if (ctrl.parentFolder !== null) { setShowChildFolders(ctrl.folder.showFolders); } }; ctrl.isLiteracyEditor = function() { return folders.getIsLiteracyEditor(); }; ctrl.showAddNestedFolderButton = function() { return !ctrl.isAddNestedActive && folders.getDepth(ctrl.folder) < folderDepthLimit; }; ctrl.onClick = function(event) { folderListItemAmbassador.setActiveFolderListItem(ctrl.folder); event.stopPropagation(); }; ctrl.controlEventPropagation = function(event) { if (ctrl.isAddNestedActive) { event.stopPropagation(); } }; ctrl.addNewFolder = function(parentId) { ctrl.saveNewFolder(parentId, ctrl.newFolderName); }; ctrl.cancelNestedFolder = function() { folderListItemAmbassador.resetActiveFolderListItem(); }; ctrl.isAddButtonDisabled = function() { return (!ctrl.newFolderName || ctrl.newFolderName.trim().length < 1); }; ctrl.openMoreFolders = function(event) { folderListItemAmbassador.resetActiveFolderListItem(); folderListItemAmbassador.resetSelectedFolderListItem(); ctrl.scrollAllowed = false; toggleShowChildFolders(); event.stopPropagation(); }; function setShowChildFolders(doShow) { var folderId = ctrl.folder.id; _.each(ctrl.parentFolder.children, function(childFolder, index) { if (this[index].id === folderId) { this[index].showFolders = doShow; } }, ctrl.parentFolder.children); } function toggleShowChildFolders() { var folderId = ctrl.folder.id; _.each(ctrl.parentFolder.children, function(childFolder, index) { if (this[index].id === folderId) { this[index].showFolders = !childFolder.showFolders; } }, ctrl.parentFolder.children); } function onActiveFolderListItemChanged() { var activeFolderListItem = folderListItemAmbassador.getActiveFolderListItem(); ctrl.isAddNestedActive = activeFolderListItem.id === ctrl.folder.id; ctrl.newFolderName = ""; } }]) })();