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 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
... ... @@ -9,7 +9,7 @@
9 9 function routeConfig($stateProvider, $urlRouterProvider) {
10 10 $stateProvider
11 11 .state('inicio', {
12   - url: '/?tema&filtro',
  12 + url: '/?tema&filtro&scroll',
13 13 ncyBreadcrumb: {label: 'Home'},
14 14 reloadOnSearch: false,
15 15 views: {
... ...
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() {
... ...