-
Notifications
You must be signed in to change notification settings - Fork 10
/
v-tabs.min.js
9 lines (8 loc) · 6.75 KB
/
v-tabs.min.js
1
2
3
4
5
6
7
8
9
/**
* vTabs - dynamic, flexible and accessible AngularJS tabs.
* @version v0.2.0
* @link http://lukaszwatroba.github.io/v-tabs
* @author Łukasz Wątroba <l@lukaszwatroba.com>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
!function(e){"use strict";function t(t,i){return{restrict:"EA",require:"^vPages",transclude:!0,controller:n,scope:{isDisabled:"=?ngDisabled",id:"@?"},link:function(n,a,c,o,s){function r(){t.addClass(a,i.states.active)}function d(){t.removeClass(a,i.states.active)}s(n.$parent.$new(),function(e,t){t.$page=n.internalControl,n.id&&(t.$page.id=n.id),a.append(e)}),c.$set("role","tabpanel"),n.pagesCtrl=o,n.pageElement=a,o.addPage(n),e.isDefined(c.disabled)&&(n.isDisabled=!0),n.$watch("isActive",function(e,t){return e===t?!1:(e?r():d(),void 0)}),n.$evalAsync(function(){n.isActive&&r()})}}}function n(e){var t=this;t.isActive=function(){return!!e.isActive},t.activate=function(){e.pagesCtrl.activate(e)},e.internalControl={activate:t.activate,isActive:t.isActive}}function i(){return{restrict:"EA",transclude:!0,scope:{activeIndex:"=?active",control:"=?",id:"@?"},controller:a,controllerAs:"pagesCtrl",link:function(t,n,i,a,c){function o(){var n=["next","previous","activate"];e.forEach(n,function(e){if(t.control[e])throw new Error("The `"+e+"` method can not be overwritten")})}if(c(t.$parent.$new(),function(e,i){i.$pages=t.internalControl,t.id&&(i.$pages.id=t.id),n.append(e)}),e.isDefined(t.control)){o();var s=e.extend({},t.internalControl,t.control);t.control=t.internalControl=s}else t.control=t.internalControl;e.isDefined(t.activeIndex)&&e.isNumber(t.activeIndex)||(t.activeIndex=0),t.$applyAsync(function(){var n=e.isDefined(a.getPagesId())?a.getPagesId()+":onReady":"vPages:onReady";t.$emit(n)})}}}function a(t){var n=this;t.pages=[],n.getPagesId=function(){return t.id},n.getPageByIndex=function(e){return t.pages[e]},n.getPageIndex=function(e){return t.pages.indexOf(e)},n.getPageIndexById=function(e){for(var n=t.pages.length,i=null,a=0;n>a;a++){var c=t.pages[a];c.id&&c.id===e&&(i=a)}return i},n.addPage=function(e){t.pages.push(e),t.activeIndex===n.getPageIndex(e)&&n.activate(e)},n.next=function(){var e=t.activeIndex+1;e>t.pages.length-1&&(e=0),t.activeIndex=e},n.previous=function(){var e=t.activeIndex-1;0>e&&(e=t.pages.length-1),t.activeIndex=e},n.activate=function(n){n&&(n.isActive||(n.isActive=!0,e.forEach(t.pages,function(e){e!==n&&e.isActive&&(e.isActive=!1)})))},t.$watch("activeIndex",function(i,a){if(i!==a){var c=n.getPageByIndex(i);return c.isDisabled?(t.activeIndex=e.isDefined(a)?a:0,!1):(n.activate(c),void 0)}}),t.internalControl={next:function(){n.next()},previous:function(){n.previous()},activate:function(i){t.activeIndex=e.isString(i)?n.getPageIndexById(i):i}}}function c(t,n){return{restrict:"EA",require:"^vTabs",transclude:!0,controller:o,scope:{isDisabled:"=?ngDisabled",id:"@?"},link:function(i,a,c,o,s){function r(){t.addClass(a,n.states.active),a.attr({"aria-selected":"true",tabindex:"0"})}function d(){t.removeClass(a,n.states.active),a.attr({"aria-selected":"false",tabindex:"-1"})}function v(){a[0].focus()}function u(){return i.isDisabled||i.isInactive?!1:(i.$apply(function(){o.activate(i)}),void 0)}function l(e){return i.isDisabled?!1:(32===e.keyCode||13===e.keyCode?(i.$apply(function(){o.activate(i)}),e.preventDefault()):39===e.keyCode?(o.focusNext(),e.preventDefault()):37===e.keyCode&&(o.focusPrevious(),e.preventDefault()),void 0)}function f(){i.$apply(function(){i.isFocused=!0})}function b(){i.$apply(function(){i.isFocused=!1})}function g(){a.off("click",u),a.off("keydown",l),a[0].onfocus=null,a[0].onblur=null}s(i.$parent.$new(),function(e,t){t.$tab=i.internalControl,i.id&&(t.$tab.id=i.id),a.append(e)}),c.$set("role","tab"),i.isInactive=e.isDefined(c.inactive),i.tabsCtrl=o,i.tabElement=a,i.focus=v,o.addTab(i),e.isDefined(c.disabled)&&(i.isDisabled=!0),i.$watch("isActive",function(e,t){return e===t?!1:(e?r():d(),void 0)}),a.on("click",u),a.on("keydown",l),a[0].onfocus=f,a[0].onblur=b,i.$on("$destroy",g),i.$evalAsync(function(){i.isActive?r():d()})}}}function o(e){var t=this;t.isActive=function(){return!!e.isActive},t.activate=function(){e.tabsCtrl.activate(e)},e.internalControl={activate:t.activate,isActive:t.isActive}}function s(){return{restrict:"EA",transclude:!0,scope:{activeIndex:"=?active",control:"=?",id:"@?"},controller:r,controllerAs:"tabsCtrl",link:function(t,n,i,a,c){function o(){var n=["next","previous","activate"];e.forEach(n,function(e){if(t.control[e])throw new Error("The `"+e+"` method can not be overwritten")})}if(c(t.$parent.$new(),function(e,i){i.$tabs=t.internalControl,t.id&&(i.$tabs.id=t.id),n.append(e)}),e.isDefined(t.activeIndex)&&e.isNumber(t.activeIndex)||(t.activeIndex=0),e.isDefined(t.control)){o();var s=e.extend({},t.internalControl,t.control);t.control=t.internalControl=s}else t.control=t.internalControl;t.$applyAsync(function(){var n=e.isDefined(a.getTabsId())?a.getTabsId()+":onReady":"vTabs:onReady";t.$emit(n)})}}}function r(t){var n=this;t.tabs=[],n.getTabsId=function(){return t.id},n.getTabByIndex=function(e){return t.tabs[e]},n.getTabIndex=function(e){return t.tabs.indexOf(e)},n.getTabIndexById=function(e){for(var n=t.tabs.length,i=null,a=0;n>a;a++){var c=t.tabs[a];c.id&&c.id===e&&(i=a)}return i},n.addTab=function(e){t.tabs.push(e),t.activeIndex===n.getTabIndex(e)&&n.activate(e)},n.focusNext=function(){for(var e=t.tabs.length,n=0;e>n;n++){var i=t.tabs[n];if(i.isFocused){var a=n+1;a>t.tabs.length-1&&(a=0);var c=t.tabs[a];c.focus();break}}},n.focusPrevious=function(){for(var e=t.tabs.length,n=0;e>n;n++){var i=t.tabs[n];if(i.isFocused){var a=n-1;0>a&&(a=t.tabs.length-1);var c=t.tabs[a];c.focus();break}}},n.next=function(){var e=t.activeIndex+1;e>t.tabs.length-1&&(e=0),t.activeIndex=e},n.previous=function(){var e=t.activeIndex-1;0>e&&(e=t.tabs.length-1),t.activeIndex=e},n.activate=function(i){i&&(i.isActive||(i.isActive=!0,t.activeIndex=n.getTabIndex(i),e.forEach(t.tabs,function(e){e!==i&&e.isActive&&(e.isActive=!1)})))},t.$watch("activeIndex",function(i,a){if(i!==a){var c=n.getTabByIndex(i);return c.isDisabled?(t.activeIndex=e.isDefined(a)?a:0,!1):(n.activate(c),void 0)}}),t.internalControl={next:function(){n.next()},previous:function(){n.previous()},activate:function(i){t.activeIndex=e.isString(i)?n.getTabIndexById(i):i}}}e.module("vTabs.config",[]).constant("tabsConfig",{states:{active:"is-active"}}).constant("pagesConfig",{states:{active:"is-active"}}),e.module("vTabs.directives",[]),e.module("vTabs",["vTabs.config","vTabs.directives"]),e.module("vTabs.directives").directive("vPage",t),t.$inject=["$animate","pagesConfig"],n.$inject=["$scope"],e.module("vTabs.directives").directive("vPages",i),a.$inject=["$scope"],e.module("vTabs.directives").directive("vTab",c),c.$inject=["$animate","tabsConfig"],o.$inject=["$scope"],e.module("vTabs.directives").directive("vTabs",s),r.$inject=["$scope"]}(angular);