Commit 3816b368b0e9d248217a2680469be8bf70893efb

Authored by Leonardo Merlin
1 parent 81d7ed06

Fix a11y search link

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() {