Skip to content

Commit eb6b637

Browse files
committed
add support for suggested values for a search parameter with typeahead support, fixed #11
1 parent 29cd3b7 commit eb6b637

File tree

4 files changed

+60
-3
lines changed

4 files changed

+60
-3
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### 2.1.0 - unreleased
2+
* add support for suggested values for a search parameter with typeahead support, fixed #11
3+
14
### 2.0.1 - 14 December 2015
25
* enter and leave edit mode methods and events was not called every time due ng-if directive, fixed #17
36
* workaround a small timing issue and enable edit mode explicit on newly added parameters

README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,46 @@ $scope.$on('advanced-searchbox:leavedEditMode', function (event, searchParameter
125125
$scope.$on('advanced-searchbox:modelUpdated', function (event, model) {
126126
///
127127
});
128+
```
129+
130+
### Available Search Parameters Properties
131+
132+
<table>
133+
<thead>
134+
<tr>
135+
<th>Name</th>
136+
<th>Description</th>
137+
</tr>
138+
</thead>
139+
<tbody>
140+
<tr>
141+
<td>key</td>
142+
<td>Unique key of the search parameter that is used for the ng-model value.</td>
143+
</tr>
144+
<tr>
145+
<td>name</td>
146+
<td>User friendly display name of the search parameter.</td>
147+
</tr>
148+
<tr>
149+
<td>placeholder</td>
150+
<td>Specifies a short hint in the parameter search box</td>
151+
</tr>
152+
<tr>
153+
<td>suggestedValues</td>
154+
<td>An array of suggested search values, e.g. ['Berlin', 'London', 'Paris']</td>
155+
</tr>
156+
<tr>
157+
<td>restrictToSuggestedValues</td>
158+
<td>Should it restrict possible search values tothe ones from the suggestedValues array?</td>
159+
</tr>
160+
</tbody>
161+
</table>
162+
163+
Full example:
164+
165+
```js
166+
$scope.availableSearchParams = [
167+
{ key: "name", name: "Name", placeholder: "Name..." },
168+
{ key: "city", name: "City", placeholder: "City...", restrictToSuggestedValues: true, suggestedValues: ['Berlin', 'London', 'Paris'] }
169+
];
128170
```

src/angular-advanced-searchbox.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@
1818
ng-keydown="keydown($event, $index)"
1919
ng-blur="leaveEditMode($event, $index)"
2020
ng-show="searchParam.editMode"
21-
ng-change="searchParamValueChanged(searchParam)"
21+
ng-change="searchParam.restrictToSuggestedValues !== true ? searchParamValueChanged(searchParam) : null"
2222
ng-model="searchParam.value"
23+
typeahead-on-select="searchParamTypeaheadOnSelect($item, searchParam)"
24+
typeahead="suggestedValue for suggestedValue in searchParam.suggestedValues | filter:$viewValue"
25+
typeahead-editable="searchParam.restrictToSuggestedValues !== true"
26+
typeahead-select-on-exact="true"
27+
typeahead-select-on-blur="searchParam.restrictToSuggestedValues !== true ? false : true"
2328
placeholder="{{searchParam.placeholder}}" />
2429
</div>
2530
</div>
@@ -32,7 +37,7 @@
3237
placeholder="{{placeholder}}"
3338
ng-focus="focus = true"
3439
ng-blur="focus = false"
35-
typeahead-on-select="typeaheadOnSelect($item, $model, $label)"
40+
typeahead-on-select="searchQueryTypeaheadOnSelect($item, $model, $label)"
3641
typeahead="parameter as parameter.name for parameter in parameters | filter:isUnsedParameter | filter:{name:$viewValue} | limitTo:parametersDisplayLimit"
3742
ng-change="searchQueryChanged(searchQuery)"
3843
ng-model="searchQuery" />

src/angular-advanced-searchbox.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,17 @@ angular.module('angular-advanced-searchbox', [])
105105
$scope.removeSearchParam(index);
106106
};
107107

108-
$scope.typeaheadOnSelect = function (item, model, label) {
108+
$scope.searchQueryTypeaheadOnSelect = function (item, model, label) {
109109
$scope.addSearchParam(item);
110110
$scope.searchQuery = '';
111111
updateModel('delete', 'query');
112112
};
113113

114+
$scope.searchParamTypeaheadOnSelect = function (suggestedValue, searchParam) {
115+
searchParam.value = suggestedValue;
116+
$scope.searchParamValueChanged(searchParam);
117+
};
118+
114119
$scope.isUnsedParameter = function (value, index) {
115120
return $filter('filter')($scope.searchParams, function (param) { return param.key === value.key; }).length === 0;
116121
};
@@ -128,6 +133,8 @@ angular.module('angular-advanced-searchbox', [])
128133
key: searchParam.key,
129134
name: searchParam.name,
130135
placeholder: searchParam.placeholder,
136+
suggestedValues: searchParam.suggestedValues || [],
137+
restrictToSuggestedValues: searchParam.restrictToSuggestedValues || false,
131138
value: value || ''
132139
}
133140
) - 1;

0 commit comments

Comments
 (0)