Skip to content

Commit

Permalink
add data-size support
Browse files Browse the repository at this point in the history
  • Loading branch information
lordfriend committed Nov 8, 2014
1 parent 1914c7d commit a1e5fa8
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 5 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ Like vanilla `<select>` we can also generate option group with any property in a

##TODO##

- data-size support
- data-header support
- data-container support
- data-max-options support
Expand Down
4 changes: 2 additions & 2 deletions examples/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ angular.module('demoApp',['nya.bootstrap.select'])
.controller('MainCtrl', function($scope){

var options = ['Alpha', 'Bravo', 'Charlie', 'Delta',
'Echo', 'Foxtrot', 'Golf', 'Hotel', 'Juliet', 'Kilo', 'Lima',
'Echo', 'Foxtrot', 'Golf', 'Hotel', 'India', 'Juliet', 'Kilo', 'Lima',
'Mike', 'November', 'Oscar', 'Papa', 'Quebec', 'Romeo', 'Sierra',
'Tango', 'Uniform', 'Victor', 'Whiskey', 'X-ray', 'Yankee', 'Zulu'
];
Expand Down Expand Up @@ -117,4 +117,4 @@ angular.module('demoApp',['nya.bootstrap.select'])
$scope.addElement = function(options) {
$scope[options].unshift(JSON.parse($scope.element));
};
});
});
19 changes: 18 additions & 1 deletion examples/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,23 @@ <h3>Custom option content</h3>
</ol>
</form>

<h3>Dropdown Size</h3>
<p>set <code>size</code> to an number, which will limit the dropdown menu size to limit number of element. the default value is <code>'auto'</code></p>

<form class="form-inline">
<ol class="nya-bs-select" ng-model="model7" data-size="3">
<li class="nya-bs-option" value="a"><a>Alpha<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="b"><a>Bravo<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="c"><a>Charlie<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Delta<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Echo<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Fox<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Golf<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Hotel<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>India<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
<li class="nya-bs-option" value="d"><a>Juliet<span class="glyphicon glyphicon-ok check-mark"></span></a></li>
</ol>
</form>
</section>
</div>
<footer class="footer">
Expand All @@ -459,4 +476,4 @@ <h3>Custom option content</h3>
<script src="../src/nya-bs-option.js"></script>
<script src="app.js"></script>
</body>
</html>
</html>
29 changes: 29 additions & 0 deletions src/nya-bs-select.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio
var ngCtrl = ctrls[0];
var nyaBsSelectCtrl = ctrls[1];

var liHeight;

// for debug
nyaBsSelectCtrl.setId($element.attr('id'));

Expand Down Expand Up @@ -237,6 +239,9 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio

dropdownToggle.on('click', function() {
$element.toggleClass('open');
if($element.hasClass('open') && typeof liHeight === 'undefined') {
calcMenuSize();
}
if($attrs.liveSearch === 'true' && $element.hasClass('open')) {
searchBox.children().eq(0)[0].focus();
}
Expand Down Expand Up @@ -458,6 +463,30 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio

}

// will called only once.
function calcMenuSize(){

var liElements = dropdownMenu.find('li'),
length = liElements.length,
liElement,
i;
for(i = 0; i < length; i++) {
liElement = liElements.eq(i);
if(liElement.hasClass('nya-bs-option') || liElement.attr('nya-bs-option')) {
liHeight = liElement[0].clientHeight;
console.log('liHeight', liHeight);
break;
}
}

if(/\d+/.test($attrs.size)) {
var dropdownSize = parseInt($attrs.size, 10);
dropdownMenu.css('max-height', (dropdownSize * liHeight) + 'px');
dropdownMenu.css('overflow-y', 'auto');
}

}

};
}
};
Expand Down
2 changes: 1 addition & 1 deletion test/spec/dynamic-feature.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('Features contains ngModel, option auto generate, etc;', function() {


var options = ['Alpha', 'Bravo', 'Charlie', 'Delta',
'Echo', 'Foxtrot', 'Golf', 'Hotel', 'Juliet', 'Kilo', 'Lima',
'Echo', 'Foxtrot', 'Golf', 'Hotel', 'India', 'Juliet', 'Kilo', 'Lima',
'Mike', 'November', 'Oscar', 'Papa', 'Quebec', 'Romeo', 'Sierra',
'Tango', 'Uniform', 'Victor', 'Whiskey', 'X-ray', 'Yankee', 'Zulu'
];
Expand Down

0 comments on commit a1e5fa8

Please sign in to comment.