Commit 704a8be8c6271225f2ac119dd0aac4e34ae2c293

Authored by Igor Kulikov
1 parent 914264b0

TB-70: Improve search usability for cards view.

... ... @@ -56,6 +56,8 @@ export default function HomeController(types, loginService, userService, deviceS
56 56 vm.searchTextUpdated = searchTextUpdated;
57 57 vm.sidenavClicked = sidenavClicked;
58 58 vm.toggleFullscreen = toggleFullscreen;
  59 + vm.openSearch = openSearch;
  60 + vm.closeSearch = closeSearch;
59 61
60 62 $scope.$on('$stateChangeSuccess', function (evt, to, toParams, from) {
61 63 watchEntitySubtype(false);
... ... @@ -128,6 +130,25 @@ export default function HomeController(types, loginService, userService, deviceS
128 130 }
129 131 }
130 132
  133 + function openSearch() {
  134 + if ($scope.searchConfig.searchEnabled) {
  135 + $scope.searchConfig.showSearch = true;
  136 + $timeout(() => {
  137 + angular.element('#tb-search-text-input', $element).focus();
  138 + });
  139 + }
  140 + }
  141 +
  142 + function closeSearch() {
  143 + if ($scope.searchConfig.searchEnabled) {
  144 + $scope.searchConfig.showSearch = false;
  145 + if ($scope.searchConfig.searchText.length) {
  146 + $scope.searchConfig.searchText = '';
  147 + searchTextUpdated();
  148 + }
  149 + }
  150 + }
  151 +
131 152 function searchTextUpdated() {
132 153 $scope.$broadcast('searchTextUpdated');
133 154 }
... ...
... ... @@ -49,7 +49,7 @@
49 49 class="md-icon-button" aria-label="{{ 'action.back' | translate }}" ng-click="vm.goBack()" ng-class="{'tb-invisible': vm.displaySearchMode()}">
50 50 <md-icon aria-label="{{ 'action.back' | translate }}" class="material-icons">arrow_back</md-icon>
51 51 </md-button>
52   - <md-button class="md-icon-button" aria-label="{{ 'action.back' | translate }}" ng-click="searchConfig.showSearch = !searchConfig.showSearch" ng-class="{'tb-invisible': !vm.displaySearchMode()}" >
  52 + <md-button class="md-icon-button" aria-label="{{ 'action.back' | translate }}" ng-click="vm.closeSearch()" ng-class="{'tb-invisible': !vm.displaySearchMode()}" >
53 53 <md-icon aria-label="{{ 'action.back' | translate }}" class="material-icons">arrow_back</md-icon>
54 54 </md-button>
55 55 <div flex layout="row" ng-show="!vm.displaySearchMode()" tb-no-animate class="md-toolbar-tools">
... ... @@ -64,10 +64,10 @@
64 64 </div>
65 65 <md-input-container ng-class="{'tb-entity-search': vm.displayEntitySubtypeSearch()}" flex>
66 66 <label>&nbsp;</label>
67   - <input ng-model="searchConfig.searchText" ng-change="vm.searchTextUpdated()" placeholder="{{ 'common.enter-search' | translate }}"/>
  67 + <input id="tb-search-text-input" ng-model="searchConfig.searchText" ng-change="vm.searchTextUpdated()" placeholder="{{ 'common.enter-search' | translate }}"/>
68 68 </md-input-container>
69 69 </div>
70   - <md-button class="md-icon-button" aria-label="{{ 'action.search' | translate }}" ng-show="searchConfig.searchEnabled" ng-click="searchConfig.showSearch = !searchConfig.showSearch">
  70 + <md-button class="md-icon-button" aria-label="{{ 'action.search' | translate }}" ng-show="searchConfig.searchEnabled" ng-click="vm.openSearch()">
71 71 <md-icon aria-label="{{ 'action.search' | translate }}" class="material-icons">search</md-icon>
72 72 </md-button>
73 73 <md-button ng-show="!vm.displaySearchMode()" hide-xs hide-sm class="md-icon-button" ng-click="vm.toggleFullscreen()" aria-label="{{ 'fullscreen.toggle' | translate }}">
... ...