menu-link.directive.js
Home
/
ui /
src /
app /
components /
menu-link.directive.js
import './menu-link.scss';
import thingsboardMenu from '../services/menu.service';
import menulinkTemplate from './menu-link.tpl.html';
import menutoggleTemplate from './menu-toggle.tpl.html';
export default angular.module('thingsboard.directives.menuLink', [thingsboardMenu])
.directive('tbMenuLink', MenuLink)
.filter('nospace', NoSpace)
.name;
function MenuLink($compile, $templateCache, menu) {
var linker = function (scope, element) {
var template;
if (scope.section.type === 'link') {
template = $templateCache.get(menulinkTemplate);
} else {
template = $templateCache.get(menutoggleTemplate);
var parentNode = element[0].parentNode.parentNode.parentNode;
if (parentNode.classList.contains('parent-list-item')) {
var heading = parentNode.querySelector('h2');
element[0].firstChild.setAttribute('aria-describedby', heading.id);
}
scope.sectionActive = function () {
return menu.sectionActive(scope.section);
};
scope.sectionHeight = function () {
return menu.sectionHeight(scope.section);
};
}
element.html(template);
$compile(element.contents())(scope);
}
return {
restrict: "E",
link: linker,
scope: {
section: '='
}
};
}
function NoSpace() {
return function (value) {
return (!value) ? '' : value.replace(/ /g, '');
}
}