diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabscontent.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabscontent.directive.js new file mode 100644 index 0000000000..b4dc599624 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabscontent.directive.js @@ -0,0 +1,18 @@ +(function() { + 'use strict'; + + function UmbTabsContentDirective() { + + var directive = { + restrict: "E", + replace: true, + transclude: 'true', + templateUrl: "views/directives/umb-tabs-content.html" + }; + + return directive; + } + + angular.module('umbraco.directives').directive('umbTabsContent', UmbTabsContentDirective); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabsnav.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabsnav.directive.js new file mode 100644 index 0000000000..ca2781d22a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabsnav.directive.js @@ -0,0 +1,56 @@ +(function() { + 'use strict'; + + function UmbTabsNavDirective($timeout) { + + function link(scope, el, attr) { + + function activate() { + + $timeout(function () { + + //use bootstrap tabs API to show the first one + el.find("a:first").tab('show'); + + //enable the tab drop + el.tabdrop(); + + }); + + } + + var unbindModelWatch = scope.$watch('model', function(newValue, oldValue){ + + activate(); + + }); + + + scope.$on('$destroy', function () { + + //ensure to destroy tabdrop (unbinds window resize listeners) + el.tabdrop("destroy"); + + unbindModelWatch(); + + }); + + } + + var directive = { + restrict: "E", + replace: true, + templateUrl: "views/directives/umb-tabs-nav.html", + scope: { + model: "=", + tabdrop: "=" + }, + link: link + }; + + return directive; + } + + angular.module('umbraco.directives').directive('umbTabsNav', UmbTabsNavDirective); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/less/belle.less b/src/Umbraco.Web.UI.Client/src/less/belle.less index 4da19449c7..6a0679b557 100644 --- a/src/Umbraco.Web.UI.Client/src/less/belle.less +++ b/src/Umbraco.Web.UI.Client/src/less/belle.less @@ -101,6 +101,7 @@ @import "components/umb-keyboard-shortcuts-overview.less"; @import "components/umb-checkbox-list.less"; @import "components/umb-locked-field.less"; +@import "components/umb-tabs.less"; @import "components/umb-file-dropzone.less"; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-tabs.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-tabs.less new file mode 100644 index 0000000000..df5306c86d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-tabs.less @@ -0,0 +1,15 @@ +.umb-nav-tabs { + position: absolute; + z-index: 10; +} + +.umb-nav-tabs.-padding-left { + padding-left: 20px; +} + +.umb-tab-content { + padding-top: 20px; + position: relative; + top: 22px; + border-top: 1px solid @grayLight; +} diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-content.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-content.html new file mode 100644 index 0000000000..a254550db0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-content.html @@ -0,0 +1 @@ +
diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-nav.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-nav.html new file mode 100644 index 0000000000..8522bc3b6a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-tabs-nav.html @@ -0,0 +1,5 @@ +