From 738bb4270fb53d58bf2f38dd0831a12f33846e68 Mon Sep 17 00:00:00 2001 From: Thomas Burleson Date: Tue, 9 Sep 2014 17:06:52 -0500 Subject: [PATCH] enhance(tabs): added $materialTabs service --- src/components/sidenav/sidenav.js | 8 +++-- src/components/tabs/js/tabsController.js | 42 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/components/sidenav/sidenav.js b/src/components/sidenav/sidenav.js index f34123e8646..3b9485d4485 100644 --- a/src/components/sidenav/sidenav.js +++ b/src/components/sidenav/sidenav.js @@ -81,11 +81,13 @@ function materialSidenavController($scope, $element, $attrs, $timeout, $material * * ```javascript * // Toggle the given sidenav - * $materialSidenav.toggle(componentId); + * $materialSidenav(componentId).toggle(); + * * // Open the given sidenav - * $materialSidenav.open(componentId); + * $materialSidenav(componentId).open(); + * * // Close the given sidenav - * $materialSidenav.close(componentId); + * $materialSidenav(componentId).close(); * ``` */ function materialSidenavService($materialComponentRegistry) { diff --git a/src/components/tabs/js/tabsController.js b/src/components/tabs/js/tabsController.js index 65e89ad1a46..73cc215e0f0 100644 --- a/src/components/tabs/js/tabsController.js +++ b/src/components/tabs/js/tabsController.js @@ -1,4 +1,8 @@ angular.module('material.components.tabs') + .factory('$materialTabs', [ + '$materialComponentRegistry', + TabsService + ]) .controller('materialTabsController', [ '$scope', '$attrs', @@ -8,6 +12,44 @@ angular.module('material.components.tabs') ]); +/** + * @private + * @ngdoc service + * @name $materialTabs + * @module material.components.tabs + * + * @description + * $materialTabs makes it easy to programmatically interact with a specific Tabs group + * in an app. + * + * @usage + * + * ```javascript + * // Toggle the given sidenav + * $materialTabs(tabsID).select(0); + * ``` + */ +function TabsService($materialComponentRegistry) { + return function(handle) { + var instance = $materialComponentRegistry.get(handle); + if(!instance) { + $materialComponentRegistry.notFoundError(handle); + } + + return { + /** + * Select the tab at the specified index + * @param index + * @returns {*} + */ + select: function(index) { + return instance && instance.selectAt(index); + } + }; + }; +} + + /** * @ngdoc object * @name materialTabsController