Skip to content
This repository has been archived by the owner on Sep 5, 2024. It is now read-only.

Commit

Permalink
create md-autocomplete-warp="width"
Browse files Browse the repository at this point in the history
  • Loading branch information
aperl authored and Allen Perl committed Apr 13, 2016
1 parent 3cd2281 commit efe6f4d
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions src/components/autocomplete/js/autocompleteController.js
Original file line number Diff line number Diff line change
Expand Up @@ -193,40 +193,48 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming,
* Gathers all of the elements needed for this controller
*/
function gatherElements () {

var snapWrap = gatherSnapWrap();

elements = {
main: $element[0],
scrollContainer: $element[0].getElementsByClassName('md-virtual-repeat-container')[0],
scroller: $element[0].getElementsByClassName('md-virtual-repeat-scroller')[0],
ul: $element.find('ul')[0],
input: $element.find('input')[0],
wrap: getWrapTarget(),
wrap: snapWrap.wrap,
snap: snapWrap.snap,
root: document.body
};
elements.li = elements.ul.getElementsByTagName('li');
elements.snap = getSnapTarget();
elements.$ = getAngularElements(elements);
}

/**
* Find the target for the wrap element which determines menu width
* @returns {*}
* Gathers the snap and wrap elements
*
*/
function getWrapTarget() {
for (var element = $element; element.length; element = element.parent()) {
if (angular.isDefined(element.attr('md-autocomplete-wrap-override'))) return element[ 0 ];
function gatherSnapWrap() {
var element;
var value;
for (element = $element; element.length; element = element.parent()) {
value = element.attr('md-autocomplete-snap');
if (angular.isDefined(value)) break;
}
return $element.find('md-autocomplete-wrap')[0];
}

/**
* Finds the element that the menu will base its position on
* @returns {*}
*/
function getSnapTarget () {
for (var element = $element; element.length; element = element.parent()) {
if (angular.isDefined(element.attr('md-autocomplete-snap'))) return element[ 0 ];
if (element.length) {
var snapWidth = value.toLowerCase() === 'width';
return {
snap: element[0],
wrap: snapWidth ? element[0] : $element.find('md-autocomplete-wrap')[0]
};
}
return elements.wrap;

var wrap = $element.find('md-autocomplete-wrap')[0];
return {
snap: wrap,
wrap: wrap
};
}

/**
Expand Down

0 comments on commit efe6f4d

Please sign in to comment.