summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js')
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js274
1 files changed, 274 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js b/ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js
new file mode 100644
index 00000000..f073de1b
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-material/modules/js/list/list.js
@@ -0,0 +1,274 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v0.9.8
+ */
+(function( window, angular, undefined ){
+"use strict";
+
+/**
+ * @ngdoc module
+ * @name material.components.list
+ * @description
+ * List module
+ */
+angular.module('material.components.list', [
+ 'material.core'
+])
+ .controller('MdListController', MdListController)
+ .directive('mdList', mdListDirective)
+ .directive('mdListItem', mdListItemDirective);
+
+/**
+ * @ngdoc directive
+ * @name mdList
+ * @module material.components.list
+ *
+ * @restrict E
+ *
+ * @description
+ * The `<md-list>` directive is a list container for 1..n `<md-list-item>` tags.
+ *
+ * @usage
+ * <hljs lang="html">
+ * <md-list>
+ * <md-list-item class="md-2-line" ng-repeat="item in todos">
+ * <md-checkbox ng-model="item.done"></md-checkbox>
+ * <div class="md-list-item-text">
+ * <h3>{{item.title}}</h3>
+ * <p>{{item.description}}</p>
+ * </div>
+ * </md-list-item>
+ * </md-list>
+ * </hljs>
+ */
+
+function mdListDirective($mdTheming) {
+ return {
+ restrict: 'E',
+ compile: function(tEl) {
+ tEl[0].setAttribute('role', 'list');
+ return $mdTheming;
+ }
+ };
+}
+mdListDirective.$inject = ["$mdTheming"];
+/**
+ * @ngdoc directive
+ * @name mdListItem
+ * @module material.components.list
+ *
+ * @restrict E
+ *
+ * @description
+ * The `<md-list-item>` directive is a container intended for row items in a `<md-list>` container.
+ *
+ * @usage
+ * <hljs lang="html">
+ * <md-list>
+ * <md-list-item>
+ * Item content in list
+ * </md-list-item>
+ * </md-list>
+ * </hljs>
+ *
+ */
+function mdListItemDirective($mdAria, $mdConstant, $timeout) {
+ var proxiedTypes = ['md-checkbox', 'md-switch'];
+ return {
+ restrict: 'E',
+ controller: 'MdListController',
+ compile: function(tEl, tAttrs) {
+ // Check for proxy controls (no ng-click on parent, and a control inside)
+ var secondaryItem = tEl[0].querySelector('.md-secondary');
+ var hasProxiedElement;
+ var proxyElement;
+
+ tEl[0].setAttribute('role', 'listitem');
+
+ if (!tAttrs.ngClick) {
+ for (var i = 0, type; type = proxiedTypes[i]; ++i) {
+ if (proxyElement = tEl[0].querySelector(type)) {
+ hasProxiedElement = true;
+ break;
+ }
+ }
+ if (hasProxiedElement) {
+ wrapIn('div');
+ } else if (!tEl[0].querySelector('md-button')) {
+ tEl.addClass('md-no-proxy');
+ }
+ } else {
+ wrapIn('button');
+ }
+ setupToggleAria();
+
+
+ function setupToggleAria() {
+ var toggleTypes = ['md-switch', 'md-checkbox'];
+ var toggle;
+
+ for (var i = 0, toggleType; toggleType = toggleTypes[i]; ++i) {
+ if (toggle = tEl.find(toggleType)[0]) {
+ if (!toggle.hasAttribute('aria-label')) {
+ var p = tEl.find('p')[0];
+ if (!p) return;
+ toggle.setAttribute('aria-label', 'Toggle ' + p.textContent);
+ }
+ }
+ }
+ }
+
+ function wrapIn(type) {
+ var container;
+ if (type == 'div') {
+ container = angular.element('<div class="md-no-style md-list-item-inner">');
+ container.append(tEl.contents());
+ tEl.addClass('md-proxy-focus');
+ } else {
+ container = angular.element('<md-button class="md-no-style"><div class="md-list-item-inner"></div></md-button>');
+ var copiedAttrs = ['ng-click', 'aria-label', 'ng-disabled'];
+ angular.forEach(copiedAttrs, function(attr) {
+ if (tEl[0].hasAttribute(attr)) {
+ container[0].setAttribute(attr, tEl[0].getAttribute(attr));
+ tEl[0].removeAttribute(attr);
+ }
+ });
+ container.children().eq(0).append(tEl.contents());
+ }
+
+ tEl[0].setAttribute('tabindex', '-1');
+ tEl.append(container);
+
+ if (secondaryItem && secondaryItem.hasAttribute('ng-click')) {
+ $mdAria.expect(secondaryItem, 'aria-label');
+ var buttonWrapper = angular.element('<md-button class="md-secondary-container md-icon-button">');
+ buttonWrapper.attr('ng-click', secondaryItem.getAttribute('ng-click'));
+ secondaryItem.removeAttribute('ng-click');
+ secondaryItem.setAttribute('tabindex', '-1');
+ secondaryItem.classList.remove('md-secondary');
+ buttonWrapper.append(secondaryItem);
+ secondaryItem = buttonWrapper[0];
+ }
+
+ // Check for a secondary item and move it outside
+ if ( secondaryItem && (
+ secondaryItem.hasAttribute('ng-click') ||
+ ( tAttrs.ngClick &&
+ isProxiedElement(secondaryItem) )
+ )) {
+ tEl.addClass('md-with-secondary');
+ tEl.append(secondaryItem);
+ }
+ }
+
+ function isProxiedElement(el) {
+ return proxiedTypes.indexOf(el.nodeName.toLowerCase()) != -1;
+ }
+
+ return postLink;
+
+ function postLink($scope, $element, $attr, ctrl) {
+
+ var proxies = [],
+ firstChild = $element[0].firstElementChild,
+ hasClick = firstChild && firstChild.hasAttribute('ng-click');
+
+ computeProxies();
+ computeClickable();
+
+ if ($element.hasClass('md-proxy-focus') && proxies.length) {
+ angular.forEach(proxies, function(proxy) {
+ proxy = angular.element(proxy);
+
+ $scope.mouseActive = false;
+ proxy.on('mousedown', function() {
+ $scope.mouseActive = true;
+ $timeout(function(){
+ $scope.mouseActive = false;
+ }, 100);
+ })
+ .on('focus', function() {
+ if ($scope.mouseActive === false) { $element.addClass('md-focused'); }
+ proxy.on('blur', function proxyOnBlur() {
+ $element.removeClass('md-focused');
+ proxy.off('blur', proxyOnBlur);
+ });
+ });
+ });
+ }
+
+ function computeProxies() {
+ var children = $element.children();
+ if (children.length && !children[0].hasAttribute('ng-click')) {
+ angular.forEach(proxiedTypes, function(type) {
+ angular.forEach(firstChild.querySelectorAll(type), function(child) {
+ proxies.push(child);
+ });
+ });
+ }
+ }
+ function computeClickable() {
+ if (proxies.length || hasClick) {
+ $element.addClass('md-clickable');
+
+ ctrl.attachRipple($scope, angular.element($element[0].querySelector('.md-no-style')));
+ }
+ }
+
+ if (!hasClick && !proxies.length) {
+ firstChild && firstChild.addEventListener('keypress', function(e) {
+ if (e.target.nodeName != 'INPUT' && e.target.nodeName != 'TEXTAREA') {
+ var keyCode = e.which || e.keyCode;
+ if (keyCode == $mdConstant.KEY_CODE.SPACE) {
+ if (firstChild) {
+ firstChild.click();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ }
+ }
+ });
+ }
+
+ $element.off('click');
+ $element.off('keypress');
+
+ if (proxies.length && firstChild) {
+ $element.children().eq(0).on('click', function(e) {
+ if (firstChild.contains(e.target)) {
+ angular.forEach(proxies, function(proxy) {
+ if (e.target !== proxy && !proxy.contains(e.target)) {
+ angular.element(proxy).triggerHandler('click');
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+ };
+}
+mdListItemDirective.$inject = ["$mdAria", "$mdConstant", "$timeout"];
+
+/*
+ * @private
+ * @ngdoc controller
+ * @name MdListController
+ * @module material.components.list
+ *
+ */
+function MdListController($scope, $element, $mdListInkRipple) {
+ var ctrl = this;
+ ctrl.attachRipple = attachRipple;
+
+ function attachRipple (scope, element) {
+ var options = {};
+ $mdListInkRipple.attach(scope, element, options);
+ }
+}
+MdListController.$inject = ["$scope", "$element", "$mdListInkRipple"];
+
+
+})(window, window.angular); \ No newline at end of file