Commit 3816b368b0e9d248217a2680469be8bf70893efb
1 parent
81d7ed06
Exists in
master
and in
6 other branches
Fix a11y search link
Showing
3 changed files
with
41 additions
and
3 deletions
Show diff stats
src/app/components/a11y-bar/a11y-bar.html
... | ... | @@ -16,7 +16,7 @@ |
16 | 16 | </a> |
17 | 17 | </li> |
18 | 18 | <li> |
19 | - <a class="color-theme-common-fg" accesskey="3" href="#search" id="skip-to-search" ng-click="focusOn('#search', $event)"> | |
19 | + <a class="color-theme-common-fg" accesskey="3" id="skip-to-search" ui-sref="inicio({scroll:'lista-de-programas'})" ui-sref-opts="{reload: true}"> | |
20 | 20 | Ir para a busca |
21 | 21 | <span class="color-theme-common-bg">3</span> |
22 | 22 | </a> | ... | ... |
src/app/index.route.js
src/app/pages/inicio/inicio.controller.js
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | .controller('InicioPageController', InicioPageController); |
8 | 8 | |
9 | 9 | /** @ngInject */ |
10 | - function InicioPageController(DialogaService, $scope, $location, $filter, $sce, $log) { | |
10 | + function InicioPageController(DialogaService, $scope, $location, $filter, $sce, $timeout, $log) { | |
11 | 11 | var vm = this; |
12 | 12 | |
13 | 13 | // aliases |
... | ... | @@ -16,6 +16,7 @@ |
16 | 16 | vm.$location = $location; |
17 | 17 | vm.$filter = $filter; |
18 | 18 | vm.$sce = $sce; |
19 | + vm.$timeout = $timeout; | |
19 | 20 | vm.$log = $log; |
20 | 21 | |
21 | 22 | vm.init(); |
... | ... | @@ -35,6 +36,7 @@ |
35 | 36 | vm.programs = null; |
36 | 37 | vm.filtredPrograms = null; |
37 | 38 | vm.query = null; |
39 | + vm.scroll = null; | |
38 | 40 | vm.search = vm.$location.search(); |
39 | 41 | |
40 | 42 | if (vm.search.tema) { |
... | ... | @@ -49,6 +51,10 @@ |
49 | 51 | vm.loadingFilter = true; |
50 | 52 | } |
51 | 53 | |
54 | + if (vm.search.scroll) { | |
55 | + vm.scroll = vm.search.scroll; | |
56 | + } | |
57 | + | |
52 | 58 | vm.loading = null; |
53 | 59 | vm.error = null; |
54 | 60 | }; |
... | ... | @@ -113,12 +119,44 @@ |
113 | 119 | vm.loadingPrograms = false; |
114 | 120 | |
115 | 121 | vm.filter(); |
122 | + | |
123 | + _loadAfterPrograms(); | |
116 | 124 | }, function(error) { |
117 | 125 | vm.$log.error('Error on getPrograms.', error); |
118 | 126 | vm.loadingPrograms = false; |
119 | 127 | vm.errorPrograms = error; |
120 | 128 | }); |
121 | 129 | } |
130 | + | |
131 | + function _loadAfterPrograms () { | |
132 | + vm._scrollHandler(); | |
133 | + } | |
134 | + }; | |
135 | + | |
136 | + InicioPageController.prototype._scrollHandler = function() { | |
137 | + var vm = this; | |
138 | + | |
139 | + // scroll handler | |
140 | + if (vm.search.scroll) { | |
141 | + var scroll = vm.search.scroll; | |
142 | + var scrollTop = 0; | |
143 | + | |
144 | + if(angular.isNumber(scroll)){ | |
145 | + scrollTop = parseInt(scroll); | |
146 | + }else{ | |
147 | + // find by ID | |
148 | + var $target = angular.element('#' + vm.search.scroll); | |
149 | + if ($target && $target.length > 0) { | |
150 | + scrollTop = $target.offset().top; | |
151 | + }else { | |
152 | + vm.$log.warn('element not found:', vm.search.scroll); | |
153 | + } | |
154 | + } | |
155 | + | |
156 | + vm.$timeout(function() { | |
157 | + angular.element('body').animate({scrollTop: scrollTop}, 'fast'); | |
158 | + }, 0); // force queue | |
159 | + } | |
122 | 160 | }; |
123 | 161 | |
124 | 162 | InicioPageController.prototype.attachListeners = function() { | ... | ... |