UNPKG

angular-timeline

Version:

An Angular.js directive that generates a responsive, data-driven vertical timeline to tell a story, show history or describe a sequence of events.

57 lines (48 loc) 1.57 kB
'use strict'; /** * @ngdoc directive * @name angular-timeline.directive:timeline * @restrict AE * * @description * Represents an event occuring at a point in time, displayed on the left or the right * of the timeline line. * * You typically embed a `timeline-badge` and `timeline-panel` element within a `timeline-event`. * * @param {string=} side Define the side of the element (i.e. side="left", side="right", or use an {{ expression }}). */ angular.module('angular-timeline').directive('timelineEvent', function() { return { require: '^timeline', restrict: 'AE', transclude: true, template: '<li class="timeline-event" ng-class-odd="oddClass" ng-class-even="evenClass" ng-transclude></li>', link: function(scope, element, attrs, controller) { var checkClass = function(side, leftSide) { var leftClass = ''; var rightClass = 'timeline-inverted'; if (side === 'left' || (!side && leftSide === true)) { return leftClass; } else if ((side === 'alternate' || !side) && leftSide === false) { return rightClass; } else if (side === 'right') { return rightClass; } else { return leftClass; } }; var updateRowClasses = function(value) { scope.oddClass = checkClass(value, true); scope.evenClass = checkClass(value, false); }; attrs.$observe('side', function(newValue) { updateRowClasses(newValue); }); updateRowClasses(attrs.side); } }; });