UNPKG

linagora-rse

Version:
56 lines (44 loc) 1.48 kB
(function(angular) { 'use strict'; angular.module('linagora.esn.contact') .factory('ContactListScrollingService', ContactListScrollingService); function ContactListScrollingService( $rootScope, $window, sharedContactDataService, CONTACT_SCROLL_EVENTS ) { return function(element, callback) { function updateCategoryLetter(offset) { var categories = element.find('.block-header') || []; var letter = ''; categories.each(function(index, element) { var letterPosition = element.getElementsByTagName('h2')[0].getBoundingClientRect().bottom; if (letterPosition < offset) { letter = element.textContent; } else { return; } }); if (sharedContactDataService.categoryLetter !== letter) { sharedContactDataService.categoryLetter = letter; $rootScope.$broadcast(CONTACT_SCROLL_EVENTS, letter); } if (typeof callback === 'function') { callback(); } } function onScroll() { var contactHeaderOffset = angular.element.find('contact-list-subheader')[0].getBoundingClientRect().bottom; updateCategoryLetter(contactHeaderOffset); } angular.element($window).scroll(onScroll); return { unregister: function() { angular.element($window).off('scroll', onScroll); }, onScroll: onScroll }; }; } })(angular);