Skip to content
This repository was archived by the owner on Oct 2, 2019. It is now read-only.

Commit 0ef2606

Browse files
author
Dean Sofer
committed
Merged everything into $select
1 parent 7fd77da commit 0ef2606

File tree

11 files changed

+65
-67
lines changed

11 files changed

+65
-67
lines changed

dist/select.js

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -36,46 +36,45 @@ angular.module('ui.select', [])
3636
require: ['uiSelect', 'ngModel'],
3737
transclude: true,
3838
scope: true,
39-
controllerAs: 'uiSelectCtrl',
39+
controllerAs: '$select',
4040

4141
controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {
4242
var ctrl = this;
4343

44-
this.activate = function($event) {
45-
$scope.open = true;
44+
ctrl.open = false;
45+
46+
ctrl.activate = function($event) {
47+
ctrl.open = true;
4648
// Give it time to appear before focus
4749
$timeout(function() {
4850
ctrl.input[0].focus();
4951
});
5052
};
5153

52-
this.select = function(item) {
53-
$scope.$select.selected = item;
54-
this.close();
54+
ctrl.select = function(item) {
55+
ctrl.selected = item;
56+
ctrl.close();
5557
// Using a watch instead of $scope.ngModel.$setViewValue(item)
5658
};
5759

58-
this.close = function() {
59-
$scope.open = false;
60-
$scope.$select.search = "";
60+
ctrl.close = function() {
61+
ctrl.open = false;
62+
ctrl.search = "";
6163
};
6264

63-
this.input = $element.find('input'); // TODO could break if input is at other template
65+
ctrl.input = $element.find('input'); // TODO could break if input is at other template
6466
}],
6567

6668
link: function(scope, element, attrs, controllers, transcludeFn) {
67-
scope.open = false;
68-
scope.$select = {}; // Namespace
69-
70-
var uiSelectCtrl = controllers[0];
69+
var $select = controllers[0];
7170
var ngModelCtrl = controllers[1];
7271

7372
scope.$watch('$select.selected', function(newVal, oldVal) {
7473
if (ngModelCtrl.$viewValue !== newVal) ngModelCtrl.$setViewValue(newVal);
7574
});
7675

7776
ngModelCtrl.$render = function() {
78-
scope.$select.selected = ngModelCtrl.$viewValue;
77+
$select.selected = ngModelCtrl.$viewValue;
7978
};
8079

8180
// See Click everywhere but here event http://stackoverflow.com/questions/12931369/click-everywhere-but-here-event
@@ -91,7 +90,7 @@ angular.module('ui.select', [])
9190
}
9291

9392
if (!contains) {
94-
uiSelectCtrl.close();
93+
$select.close();
9594
scope.$digest();
9695
}
9796
});
@@ -139,9 +138,9 @@ angular.module('ui.select', [])
139138
tElement.querySelectorAll('.ui-select-choices-row')
140139
.attr("ng-repeat", 'item in ' + tAttrs.data)
141140
.attr("ng-mouseenter", '$select.activeIdx=$index')
142-
.attr("ng-click", 'uiSelectCtrl.select(item)');
141+
.attr("ng-click", '$select.select(item)');
143142

144-
return function(scope, element, attrs, uiSelectCtrl) {
143+
return function(scope, element, attrs, $select) {
145144

146145
scope.trustAsHtml = function(value) {
147146
return $sce.trustAsHtml(value);
@@ -168,7 +167,7 @@ angular.module('ui.select', [])
168167
});
169168

170169
// Bind keyboard events related to choices
171-
uiSelectCtrl.input.on('keydown', function(evt) {
170+
$select.input.on('keydown', function(evt) {
172171

173172
if (HOT_KEYS.indexOf(evt.which) === -1) return; // Exit on regular key
174173
evt.preventDefault();
@@ -194,14 +193,14 @@ angular.module('ui.select', [])
194193

195194
} else if (evt.which === 27) { // esc(27)
196195
evt.stopPropagation();
197-
uiSelectCtrl.close();
196+
$select.close();
198197
scope.$digest();
199198

200199
}
201200
});
202201

203202
scope.$on('$destroy', function() {
204-
uiSelectCtrl.input.off('keydown');
203+
$select.input.off('keydown');
205204
});
206205

207206
};
@@ -236,12 +235,12 @@ angular.module('ui.select', [])
236235

237236
angular.module('ui.select').run(['$templateCache', function ($templateCache) {
238237
$templateCache.put('bootstrap/choices.tpl.html', '<ul class="ui-select-choices ui-select-choices-content dropdown-menu" role="menu" aria-labelledby="dLabel"> <li class="ui-select-choices-row" ng-class="{active: $select.activeIdx==$index}"> <a ng-transclude></a> </li> </ul> ');
239-
$templateCache.put('bootstrap/match.tpl.html', '<a class="btn btn-default ui-select-match" ng-hide="open" ng-class="{\'text-success\': $select.selected==undefined}" ng-click="uiSelectCtrl.activate($event)"> <span ng-hide="$select.selected" class="text-muted">{{placeholder}}</span> <span ng-show="$select.selected" ng-transclude></span> <span class="caret"></span> </a> ');
240-
$templateCache.put('bootstrap/select.tpl.html', '<div class="dropdown" ng-class="{open:open}"> <div class="ui-select-match" ng-click="uiSelectCtrl.activate($event)"></div> <input type="text" class="form-control ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}" ng-model="$select.search" ng-show="open"> <div class="ui-select-choices"></div> </div> ');
238+
$templateCache.put('bootstrap/match.tpl.html', '<a class="btn btn-default ui-select-match" ng-hide="$select.open" ng-class="{\'text-success\': $select.selected==undefined}" ng-click="$select.activate($event)"> <span ng-hide="$select.selected" class="text-muted">{{placeholder}}</span> <span ng-show="$select.selected" ng-transclude></span> <span class="caret"></span> </a> ');
239+
$templateCache.put('bootstrap/select.tpl.html', '<div class="dropdown" ng-class="{open:$select.open}"> <div class="ui-select-match" ng-click="$select.activate($event)"></div> <input type="text" class="form-control ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}" ng-model="$select.search" ng-show="$select.open"> <div class="ui-select-choices"></div> </div> ');
241240
$templateCache.put('select2/choices.tpl.html', '<ul class="ui-select-choices ui-select-choices-content select2-results"> <li class="ui-select-choices-row" ng-class="{\'select2-highlighted\': $select.activeIdx==$index}"> <div class="select2-result-label" ng-transclude></div> </li> </ul> ');
242-
$templateCache.put('select2/match.tpl.html', '<a class="select2-choice ui-select-match" ng-class="{\'select2-default\': $select.selected==undefined}" ng-click="uiSelectCtrl.activate($event)"> <span ng-hide="$select.selected" class="select2-chosen">{{placeholder}}</span> <span ng-show="$select.selected" class="select2-chosen" ng-transclude></span> <span class="select2-arrow"><b></b></span> </a> ');
243-
$templateCache.put('select2/select.tpl.html', '<div class="select2 select2-container" ng-class="{\'select2-container-active select2-dropdown-open\': open}"> <div class="ui-select-match"></div> <div ng-class="{\'select2-display-none\': !open}" class="select2-drop select2-with-searchbox select2-drop-active"> <div class="select2-search"> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="ui-select-search select2-input" ng-model="$select.search"> </div> <div class="ui-select-choices"></div> </div> </div> ');
244-
$templateCache.put('selectize/choices.tpl.html', '<div ng-show="open" class="ui-select-choices selectize-dropdown single"> <div class="ui-select-choices-content selectize-dropdown-content"> <div class="ui-select-choices-row" ng-class="{\'active\': $select.activeIdx==$index}" ng-click="$select(item)" ng-mouseenter="$select.index=$index"> <div class="option" data-selectable ng-transclude></div> </div> </div> </div> ');
245-
$templateCache.put('selectize/match.tpl.html', '<div ng-hide="open || !$select.selected" class="ui-select-match" ng-transclude></div> ');
246-
$templateCache.put('selectize/select.tpl.html', '<div class="selectize-control single"> <div class="selectize-input" ng-class="{\'focus\': open}" ng-click="uiSelectCtrl.activate($event)"> <div class="ui-select-match"></div> <input type="text" class="ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}" ng-model="$select.search" ng-hide="$select.selected && !open"> </div> <div class="ui-select-choices"></div> </div> ');
241+
$templateCache.put('select2/match.tpl.html', '<a class="select2-choice ui-select-match" ng-class="{\'select2-default\': $select.selected==undefined}" ng-click="$select.activate($event)"> <span ng-hide="$select.selected" class="select2-chosen">{{placeholder}}</span> <span ng-show="$select.selected" class="select2-chosen" ng-transclude></span> <span class="select2-arrow"><b></b></span> </a> ');
242+
$templateCache.put('select2/select.tpl.html', '<div class="select2 select2-container" ng-class="{\'select2-container-active select2-dropdown-open\': $select.open}"> <div class="ui-select-match"></div> <div ng-class="{\'select2-display-none\': !$select.open}" class="select2-drop select2-with-searchbox select2-drop-active"> <div class="select2-search"> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="ui-select-search select2-input" ng-model="$select.search"> </div> <div class="ui-select-choices"></div> </div> </div> ');
243+
$templateCache.put('selectize/choices.tpl.html', '<div ng-show="$select.open" class="ui-select-choices selectize-dropdown single"> <div class="ui-select-choices-content selectize-dropdown-content"> <div class="ui-select-choices-row" ng-class="{\'active\': $select.activeIdx==$index}" ng-click="$select(item)" ng-mouseenter="$select.index=$index"> <div class="option" data-selectable ng-transclude></div> </div> </div> </div> ');
244+
$templateCache.put('selectize/match.tpl.html', '<div ng-hide="$select.open || !$select.selected" class="ui-select-match" ng-transclude></div> ');
245+
$templateCache.put('selectize/select.tpl.html', '<div class="selectize-control single"> <div class="selectize-input" ng-class="{\'focus\': $select.open}" ng-click="$select.activate($event)"> <div class="ui-select-match"></div> <input type="text" class="ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}" ng-model="$select.search" ng-hide="$select.selected && !$select.open"> </div> <div class="ui-select-choices"></div> </div> ');
247246
}]);

examples/bootstrap.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
<label class="col-sm-3 control-label">Default</label>
6363
<div class="col-sm-6">
6464

65-
<ui-select ng-model="person.selected" theme="/src/bootstrap">
65+
<ui-select ng-model="person.selected" theme="bootstrap">
6666
<match placeholder="Select or search a person in the list...">{{$select.selected.name}}</match>
6767
<choices data="people | filter: $select.search">
6868
<div ng-bind-html="trustAsHtml((item.name | highlight: $select.search))"></div>

src/bootstrap/match.tpl.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<a class="btn btn-default ui-select-match"
2-
ng-hide="open"
2+
ng-hide="$select.open"
33
ng-class="{'text-success': $select.selected == undefined}"
4-
ng-click="uiSelectCtrl.activate($event)">
4+
ng-click="$select.activate($event)">
55
<span ng-hide="$select.selected" class="text-muted">{{placeholder}}</span>
66
<span ng-show="$select.selected" ng-transclude></span>
77
<span class="caret"></span>

src/bootstrap/select.tpl.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<div class="dropdown" ng-class="{open:open}">
1+
<div class="dropdown" ng-class="{open:$select.open}">
22
<div class="ui-select-match"
3-
ng-click="uiSelectCtrl.activate($event)"></div>
3+
ng-click="$select.activate($event)"></div>
44
<input type="text" class="form-control ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}"
55
ng-model="$select.search"
6-
ng-show="open">
6+
ng-show="$select.open">
77
<div class="ui-select-choices"></div>
88
</div>

src/select.js

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,46 +36,45 @@ angular.module('ui.select', [])
3636
require: ['uiSelect', 'ngModel'],
3737
transclude: true,
3838
scope: true,
39-
controllerAs: 'uiSelectCtrl',
39+
controllerAs: '$select',
4040

4141
controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {
4242
var ctrl = this;
4343

44-
this.activate = function($event) {
45-
$scope.open = true;
44+
ctrl.open = false;
45+
46+
ctrl.activate = function($event) {
47+
ctrl.open = true;
4648
// Give it time to appear before focus
4749
$timeout(function() {
4850
ctrl.input[0].focus();
4951
});
5052
};
5153

52-
this.select = function(item) {
53-
$scope.$select.selected = item;
54-
this.close();
54+
ctrl.select = function(item) {
55+
ctrl.selected = item;
56+
ctrl.close();
5557
// Using a watch instead of $scope.ngModel.$setViewValue(item)
5658
};
5759

58-
this.close = function() {
59-
$scope.open = false;
60-
$scope.$select.search = "";
60+
ctrl.close = function() {
61+
ctrl.open = false;
62+
ctrl.search = "";
6163
};
6264

63-
this.input = $element.find('input'); // TODO could break if input is at other template
65+
ctrl.input = $element.find('input'); // TODO could break if input is at other template
6466
}],
6567

6668
link: function(scope, element, attrs, controllers, transcludeFn) {
67-
scope.open = false;
68-
scope.$select = {}; // Namespace
69-
70-
var uiSelectCtrl = controllers[0];
69+
var $select = controllers[0];
7170
var ngModelCtrl = controllers[1];
7271

7372
scope.$watch('$select.selected', function(newVal, oldVal) {
7473
if (ngModelCtrl.$viewValue !== newVal) ngModelCtrl.$setViewValue(newVal);
7574
});
7675

7776
ngModelCtrl.$render = function() {
78-
scope.$select.selected = ngModelCtrl.$viewValue;
77+
$select.selected = ngModelCtrl.$viewValue;
7978
};
8079

8180
// See Click everywhere but here event http://stackoverflow.com/questions/12931369/click-everywhere-but-here-event
@@ -91,7 +90,7 @@ angular.module('ui.select', [])
9190
}
9291

9392
if (!contains) {
94-
uiSelectCtrl.close();
93+
$select.close();
9594
scope.$digest();
9695
}
9796
});
@@ -139,9 +138,9 @@ angular.module('ui.select', [])
139138
tElement.querySelectorAll('.ui-select-choices-row')
140139
.attr("ng-repeat", 'item in ' + tAttrs.data)
141140
.attr("ng-mouseenter", '$select.activeIdx=$index')
142-
.attr("ng-click", 'uiSelectCtrl.select(item)');
141+
.attr("ng-click", '$select.select(item)');
143142

144-
return function(scope, element, attrs, uiSelectCtrl) {
143+
return function(scope, element, attrs, $select) {
145144

146145
scope.trustAsHtml = function(value) {
147146
return $sce.trustAsHtml(value);
@@ -168,7 +167,7 @@ angular.module('ui.select', [])
168167
});
169168

170169
// Bind keyboard events related to choices
171-
uiSelectCtrl.input.on('keydown', function(evt) {
170+
$select.input.on('keydown', function(evt) {
172171

173172
if (HOT_KEYS.indexOf(evt.which) === -1) return; // Exit on regular key
174173
evt.preventDefault();
@@ -194,14 +193,14 @@ angular.module('ui.select', [])
194193

195194
} else if (evt.which === 27) { // esc(27)
196195
evt.stopPropagation();
197-
uiSelectCtrl.close();
196+
$select.close();
198197
scope.$digest();
199198

200199
}
201200
});
202201

203202
scope.$on('$destroy', function() {
204-
uiSelectCtrl.input.off('keydown');
203+
$select.input.off('keydown');
205204
});
206205

207206
};

src/select2/match.tpl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
-->
66
<a class="select2-choice ui-select-match"
77
ng-class="{'select2-default': $select.selected == undefined}"
8-
ng-click="uiSelectCtrl.activate($event)">
8+
ng-click="$select.activate($event)">
99
<span ng-hide="$select.selected" class="select2-chosen">{{placeholder}}</span>
1010
<span ng-show="$select.selected" class="select2-chosen" ng-transclude></span>
1111
<span class="select2-arrow"><b></b></span>

src/select2/select.tpl.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div class="select2 select2-container"
2-
ng-class="{'select2-container-active select2-dropdown-open': open}">
2+
ng-class="{'select2-container-active select2-dropdown-open': $select.open}">
33
<div class="ui-select-match"></div>
4-
<div ng-class="{'select2-display-none': !open}"
4+
<div ng-class="{'select2-display-none': !$select.open}"
55
class="select2-drop select2-with-searchbox select2-drop-active">
66
<div class="select2-search">
77
<input type="text"

src/selectize/choices.tpl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div ng-show="open" class="ui-select-choices selectize-dropdown single">
1+
<div ng-show="$select.open" class="ui-select-choices selectize-dropdown single">
22
<div class="ui-select-choices-content selectize-dropdown-content">
33
<div class="ui-select-choices-row"
44
ng-class="{'active': $select.activeIdx == $index}"

src/selectize/match.tpl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div ng-hide="open || !$select.selected" class="ui-select-match" ng-transclude></div>
1+
<div ng-hide="$select.open || !$select.selected" class="ui-select-match" ng-transclude></div>

src/selectize/select.tpl.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<div class="selectize-control single">
22
<div class="selectize-input"
3-
ng-class="{'focus': open}"
4-
ng-click="uiSelectCtrl.activate($event)">
3+
ng-class="{'focus': $select.open}"
4+
ng-click="$select.activate($event)">
55
<div class="ui-select-match"></div>
66
<input type="text" class="ui-select-search" autocomplete="off" tabindex="" placeholder="{{placeholder}}"
77
ng-model="$select.search"
8-
ng-hide="$select.selected && !open">
8+
ng-hide="$select.selected && !$select.open">
99
</div>
1010
<div class="ui-select-choices"></div>
1111
</div>

0 commit comments

Comments
 (0)