apex4x
Version:
The Comprehensive ARIA Development Suite
9 lines (8 loc) • 1.86 kB
JavaScript
/*@license
ARIA Smooth Scroll and Skip Link Module 1.0 for Apex 4X
Author: Bryan Garaventa (https://www.linkedin.com/in/bgaraventa)
Home: WhatSock.com : Download: https://github.com/whatsock/apex
License: MIT (https://opensource.org/licenses/MIT)
Required dependencies: Animate.js
*/
"scrollTo"in $A||$A.extend({isScrolling:!1,scrollTo:function(e,t,n){return this._4X&&(n=t,t=e,e=this._X),$A.isFn(t)&&(n=t,t=null),$A.isNode(e)||(e=$A.morph(e)),$A.isNode(e)&&($A.isScrolling=!0,$A.Velocity(e,"scroll",$A.extend({duration:700,easing:"ease-in",complete:function(){$A.isScrolling=!1,$A.isFn(n)&&n.call(e,e,n.target)}},t||{}))),$A._XR.call(this,e)},moveTo:function(e,t,n){return this._4X&&(n=t,t=e,e=this._X),e=$A.morph(e),$A.isNode(e)&&$A.scrollTo(e,t,n||function(e){$A.focus(e)}),$A._XR.call(this,e)},skipTo:function(e,t,n,i){return this._4X&&(i=n,n=t,t=e,e=this._X),e=$A.morph(e),t=$A.morph(t),$A.isNode(e)&&$A.isNode(t)&&(e=$A.setSkipLink(e,$A.extend({target:t,skipReturn:!0,callback:i},n||{}))),$A._XR.call(this,e)},setSkipLink:function(e,i,o,t){this._4X&&(o=i,i=e,e=this._X);var s=(i=i||{}).callback||null,A=i.isOffScreen||!1,$=i.style||{},o=i.context||o,c=!(!t&&!i.skipReturn);return $A.isNode(o,null,document)||(o=document),$A.query(e,o,function(e,t){var n=i.target||$A.getAttr(t,"href");$A.isSelector(n)&&(n=o.querySelector(n)),$A.isNode(n)&&!$A.data(t,"_isBoundFn")&&($A.data(t,"_isBoundFn",!0),$A.bindObjects(t,n),$A.on(t,{click:function(e){$A.bindObjects(t,n),$A.isFn(s)&&(s.target=n),$A.moveTo(n,i.override||{},s),e.preventDefault()}}),A&&($A.setOffScreen(t),$A.on(t,{focus:function(e){$A.css(t,$A.extend({},$A.sraCSSClear,$||{}))},blur:function(e){$A.setOffScreen(t)}})),!c)&&$A.isFocusable(n)&&$A.on(n,{click:function(e){$A.isFn(s)&&(s.target=$A.boundTo(n)),$A.moveTo($A.boundTo(n),i.override||{},s),e.preventDefault()}})}),$A._XR.call(this,e)}});