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,7 +16,7 @@ | ||
16 | </a> | 16 | </a> |
17 | </li> | 17 | </li> |
18 | <li> | 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 | Ir para a busca | 20 | Ir para a busca |
21 | <span class="color-theme-common-bg">3</span> | 21 | <span class="color-theme-common-bg">3</span> |
22 | </a> | 22 | </a> |
src/app/index.route.js
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | function routeConfig($stateProvider, $urlRouterProvider) { | 9 | function routeConfig($stateProvider, $urlRouterProvider) { |
10 | $stateProvider | 10 | $stateProvider |
11 | .state('inicio', { | 11 | .state('inicio', { |
12 | - url: '/?tema&filtro', | 12 | + url: '/?tema&filtro&scroll', |
13 | ncyBreadcrumb: {label: 'Home'}, | 13 | ncyBreadcrumb: {label: 'Home'}, |
14 | reloadOnSearch: false, | 14 | reloadOnSearch: false, |
15 | views: { | 15 | views: { |
src/app/pages/inicio/inicio.controller.js
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | .controller('InicioPageController', InicioPageController); | 7 | .controller('InicioPageController', InicioPageController); |
8 | 8 | ||
9 | /** @ngInject */ | 9 | /** @ngInject */ |
10 | - function InicioPageController(DialogaService, $scope, $location, $filter, $sce, $log) { | 10 | + function InicioPageController(DialogaService, $scope, $location, $filter, $sce, $timeout, $log) { |
11 | var vm = this; | 11 | var vm = this; |
12 | 12 | ||
13 | // aliases | 13 | // aliases |
@@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
16 | vm.$location = $location; | 16 | vm.$location = $location; |
17 | vm.$filter = $filter; | 17 | vm.$filter = $filter; |
18 | vm.$sce = $sce; | 18 | vm.$sce = $sce; |
19 | + vm.$timeout = $timeout; | ||
19 | vm.$log = $log; | 20 | vm.$log = $log; |
20 | 21 | ||
21 | vm.init(); | 22 | vm.init(); |
@@ -35,6 +36,7 @@ | @@ -35,6 +36,7 @@ | ||
35 | vm.programs = null; | 36 | vm.programs = null; |
36 | vm.filtredPrograms = null; | 37 | vm.filtredPrograms = null; |
37 | vm.query = null; | 38 | vm.query = null; |
39 | + vm.scroll = null; | ||
38 | vm.search = vm.$location.search(); | 40 | vm.search = vm.$location.search(); |
39 | 41 | ||
40 | if (vm.search.tema) { | 42 | if (vm.search.tema) { |
@@ -49,6 +51,10 @@ | @@ -49,6 +51,10 @@ | ||
49 | vm.loadingFilter = true; | 51 | vm.loadingFilter = true; |
50 | } | 52 | } |
51 | 53 | ||
54 | + if (vm.search.scroll) { | ||
55 | + vm.scroll = vm.search.scroll; | ||
56 | + } | ||
57 | + | ||
52 | vm.loading = null; | 58 | vm.loading = null; |
53 | vm.error = null; | 59 | vm.error = null; |
54 | }; | 60 | }; |
@@ -113,12 +119,44 @@ | @@ -113,12 +119,44 @@ | ||
113 | vm.loadingPrograms = false; | 119 | vm.loadingPrograms = false; |
114 | 120 | ||
115 | vm.filter(); | 121 | vm.filter(); |
122 | + | ||
123 | + _loadAfterPrograms(); | ||
116 | }, function(error) { | 124 | }, function(error) { |
117 | vm.$log.error('Error on getPrograms.', error); | 125 | vm.$log.error('Error on getPrograms.', error); |
118 | vm.loadingPrograms = false; | 126 | vm.loadingPrograms = false; |
119 | vm.errorPrograms = error; | 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 | InicioPageController.prototype.attachListeners = function() { | 162 | InicioPageController.prototype.attachListeners = function() { |