Source: directive/fold.js

/**
 * Collapsible accordion
 * @module
 */

'use strict';

app.directive('fold', [
  'storageService',
  function (storage) {
    var link = function ($scope, $element, $attrs) {
      var id = $attrs.id;
      var folded = false;
      var forget = $attrs.forget;

      function setFold(fold) {
        if ((folded = fold))
          $element.addClass('folded');
        else
          $element.removeClass('folded');
        $scope.folded = folded;
        if (!forget)
          storage.setString('folding-' + id, folded ? '1' : '');
      }

      $scope.toggleFold = function (state) {
        setFold(state === undefined ? !folded : state);
      };

      $element.addClass('foldable');
      $element.find('[folder]').addClass('folder');

      setFold(storage.getString('folding-' + id));
    };

    return {
      restrict: 'A',
      priority: 0,
      link: link
    };
  }
]);