forked from mgcrea/angular-strap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcollapse.min.js
More file actions
9 lines (9 loc) · 3.45 KB
/
collapse.min.js
File metadata and controls
9 lines (9 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
/**
* angular-strap
* @version v2.2.4 - 2015-05-28
* @link http://mgcrea.github.io/angular-strap
* @author Olivier Louvignes <olivier@mg-crea.com> (https://github.com/mgcrea)
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
'use strict';angular.module('mgcrea.ngStrap.collapse',[]).provider('$collapse',function(){var e=this.defaults={animation:'am-collapse',disallowToggle:!1,activeClass:'in',startCollapsed:!1,allowMultiple:!1},t=this.controller=function(t,a,i){function n(e){for(var t=o.$targets.$active,a=0;a<t.length;a++)e<t[a]&&(t[a]=t[a]-1),t[a]===o.$targets.length&&(t[a]=o.$targets.length-1)}function s(e){var t=o.$targets.$active;return-1===t.indexOf(e)?!1:!0}function l(e){var t=o.$targets.$active.indexOf(e);-1!==t&&o.$targets.$active.splice(t,1)}function r(e){o.$options.allowMultiple||o.$targets.$active.splice(0,1),-1===o.$targets.$active.indexOf(e)&&o.$targets.$active.push(e)}var o=this;o.$options=angular.copy(e),angular.forEach(['animation','disallowToggle','activeClass','startCollapsed','allowMultiple'],function(e){angular.isDefined(i[e])&&(o.$options[e]=i[e])});var g=/^(false|0|)$/i;angular.forEach(['disallowToggle','startCollapsed','allowMultiple'],function(e){angular.isDefined(i[e])&&g.test(i[e])&&(o.$options[e]=!1)}),o.$toggles=[],o.$targets=[],o.$viewChangeListeners=[],o.$registerToggle=function(e){o.$toggles.push(e)},o.$registerTarget=function(e){o.$targets.push(e)},o.$unregisterToggle=function(e){var t=o.$toggles.indexOf(e);o.$toggles.splice(t,1)},o.$unregisterTarget=function(e){var t=o.$targets.indexOf(e);o.$targets.splice(t,1),o.$options.allowMultiple&&l(e),n(t),o.$viewChangeListeners.forEach(function(e){e()})},o.$targets.$active=o.$options.startCollapsed?[]:[0],o.$setActive=t.$setActive=function(e){angular.isArray(e)?o.$targets.$active=e:o.$options.disallowToggle?r(e):s(e)?l(e):r(e),o.$viewChangeListeners.forEach(function(e){e()})},o.$activeIndexes=function(){return o.$options.allowMultiple?o.$targets.$active:1===o.$targets.$active.length?o.$targets.$active[0]:-1}};this.$get=function(){var a={};return a.defaults=e,a.controller=t,a}}).directive('bsCollapse',['$window','$animate','$collapse',function(e,t,a){a.defaults;return{require:['?ngModel','bsCollapse'],controller:['$scope','$element','$attrs',a.controller],link:function(e,t,a,i){var n=i[0],s=i[1];n&&(s.$viewChangeListeners.push(function(){n.$setViewValue(s.$activeIndexes())}),n.$formatters.push(function(e){if(angular.isArray(e))s.$setActive(e);else{var t=s.$activeIndexes();angular.isArray(t)?-1===t.indexOf(1*e)&&s.$setActive(1*e):t!==1*e&&s.$setActive(1*e)}return e}))}}}]).directive('bsCollapseToggle',function(){return{require:['^?ngModel','^bsCollapse'],link:function(e,t,a,i){var n=(i[0],i[1]);t.attr('data-toggle','collapse'),n.$registerToggle(t),e.$on('$destroy',function(){n.$unregisterToggle(t)}),t.on('click',function(){var i=a.bsCollapseToggle||n.$toggles.indexOf(t);n.$setActive(1*i),e.$apply()})}}}).directive('bsCollapseTarget',['$animate',function(e){return{require:['^?ngModel','^bsCollapse'],link:function(t,a,i,n){function s(){var t=l.$targets.indexOf(a),i=l.$activeIndexes(),n='removeClass';angular.isArray(i)?-1!==i.indexOf(t)&&(n='addClass'):t===i&&(n='addClass'),e[n](a,l.$options.activeClass)}var l=(n[0],n[1]);a.addClass('collapse'),l.$options.animation&&a.addClass(l.$options.animation),l.$registerTarget(a),t.$on('$destroy',function(){l.$unregisterTarget(a)}),l.$viewChangeListeners.push(function(){s()}),s()}}}]);
//# sourceMappingURL=../modules/collapse.min.js.map