Reusable ui widgets as angular directives