mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-09-03 04:37:16 +00:00
Restructure Sass files and folders for proper application Sass development
This commit is contained in:
committed by
Francis Lachapelle
parent
a87bbc2de5
commit
5217c0ac64
@@ -0,0 +1,138 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
angular.module('material.components.tabs')
|
||||
.controller('$mdTabs', MdTabsController);
|
||||
|
||||
function MdTabsController($scope, $element, $mdUtil, $timeout) {
|
||||
|
||||
var tabsList = $mdUtil.iterator([], false);
|
||||
var self = this;
|
||||
|
||||
// Properties
|
||||
self.$element = $element;
|
||||
self.scope = $scope;
|
||||
// The section containing the tab content $elements
|
||||
var contentArea = self.contentArea = angular.element($element[0].querySelector('.md-tabs-content'));
|
||||
|
||||
// Methods from iterator
|
||||
var inRange = self.inRange = tabsList.inRange;
|
||||
var indexOf = self.indexOf = tabsList.indexOf;
|
||||
var itemAt = self.itemAt = tabsList.itemAt;
|
||||
self.count = tabsList.count;
|
||||
|
||||
self.getSelectedItem = getSelectedItem;
|
||||
self.getSelectedIndex = getSelectedIndex;
|
||||
self.add = add;
|
||||
self.remove = remove;
|
||||
self.move = move;
|
||||
self.select = select;
|
||||
self.focus = focus;
|
||||
self.deselect = deselect;
|
||||
|
||||
self.next = next;
|
||||
self.previous = previous;
|
||||
|
||||
$scope.$on('$destroy', function() {
|
||||
deselect(getSelectedItem());
|
||||
for (var i = tabsList.count() - 1; i >= 0; i--) {
|
||||
remove(tabsList[i], true);
|
||||
}
|
||||
});
|
||||
|
||||
// Get the selected tab
|
||||
function getSelectedItem() {
|
||||
return itemAt($scope.selectedIndex);
|
||||
}
|
||||
|
||||
function getSelectedIndex() {
|
||||
return $scope.selectedIndex;
|
||||
}
|
||||
|
||||
// Add a new tab.
|
||||
// Returns a method to remove the tab from the list.
|
||||
function add(tab, index) {
|
||||
tabsList.add(tab, index);
|
||||
|
||||
// Select the new tab if we don't have a selectedIndex, or if the
|
||||
// selectedIndex we've been waiting for is this tab
|
||||
if ($scope.selectedIndex === -1 || !angular.isNumber($scope.selectedIndex) ||
|
||||
$scope.selectedIndex === self.indexOf(tab)) {
|
||||
tab.onAdd(self.contentArea, false);
|
||||
self.select(tab);
|
||||
} else {
|
||||
tab.onAdd(self.contentArea, true);
|
||||
}
|
||||
|
||||
$scope.$broadcast('$mdTabsChanged');
|
||||
}
|
||||
|
||||
function remove(tab, noReselect) {
|
||||
if (!tabsList.contains(tab)) return;
|
||||
if (noReselect) return;
|
||||
var isSelectedItem = getSelectedItem() === tab,
|
||||
newTab = previous() || next();
|
||||
|
||||
deselect(tab);
|
||||
tabsList.remove(tab);
|
||||
tab.onRemove();
|
||||
|
||||
$scope.$broadcast('$mdTabsChanged');
|
||||
|
||||
if (isSelectedItem) { select(newTab); }
|
||||
}
|
||||
|
||||
// Move a tab (used when ng-repeat order changes)
|
||||
function move(tab, toIndex) {
|
||||
var isSelected = getSelectedItem() === tab;
|
||||
|
||||
tabsList.remove(tab);
|
||||
tabsList.add(tab, toIndex);
|
||||
if (isSelected) select(tab);
|
||||
|
||||
$scope.$broadcast('$mdTabsChanged');
|
||||
}
|
||||
|
||||
function select(tab, rightToLeft) {
|
||||
if (!tab || tab.isSelected || tab.isDisabled()) return;
|
||||
if (!tabsList.contains(tab)) return;
|
||||
|
||||
if (!angular.isDefined(rightToLeft)) {
|
||||
rightToLeft = indexOf(tab) < $scope.selectedIndex;
|
||||
}
|
||||
deselect(getSelectedItem(), rightToLeft);
|
||||
|
||||
$scope.selectedIndex = indexOf(tab);
|
||||
tab.isSelected = true;
|
||||
tab.onSelect(rightToLeft);
|
||||
|
||||
$scope.$broadcast('$mdTabsChanged');
|
||||
}
|
||||
|
||||
function focus(tab) {
|
||||
// this variable is watched by pagination
|
||||
self.tabToFocus = tab;
|
||||
}
|
||||
|
||||
function deselect(tab, rightToLeft) {
|
||||
if (!tab || !tab.isSelected) return;
|
||||
if (!tabsList.contains(tab)) return;
|
||||
|
||||
$scope.selectedIndex = -1;
|
||||
tab.isSelected = false;
|
||||
tab.onDeselect(rightToLeft);
|
||||
}
|
||||
|
||||
function next(tab, filterFn) {
|
||||
return tabsList.next(tab || getSelectedItem(), filterFn || isTabEnabled);
|
||||
}
|
||||
function previous(tab, filterFn) {
|
||||
return tabsList.previous(tab || getSelectedItem(), filterFn || isTabEnabled);
|
||||
}
|
||||
|
||||
function isTabEnabled(tab) {
|
||||
return tab && !tab.isDisabled();
|
||||
}
|
||||
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user