UNPKG

apex4x

Version:

The Comprehensive ARIA Development Suite

7 lines 4.81 kB
/*@license ARIA Tooltip Module 2.2 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) */ "setTooltip"in $A||($A.addWidgetProfile("Tooltip",{configure:function(e){return{delay:0,delayTimeout:0,isError:!1,isFocusOnly:!1,isResponsive:!1,isManualOpen:!1,isManualClose:!0,isAlert:!1,announce:!1,exposeBounds:!0,preload:!0,preloadImages:!0,preloadCSS:!0,className:"tooltip",allowRerender:!1,escToClose:!0,returnFocus:!1,mouseLeave:function(e,t){t.remove()},click:function(e,t){t.remove(),e.stopPropagation(),e.preventDefault()},onCreate:function(e){e.isManualOpen&&$A.isNode(e.triggerNode)&&("button"===e.triggerNode.getAttribute("role")||!e.triggerNode.hasAttribute("role")&&"button"===e.triggerNode.nodeName.toLowerCase())&&e.triggerNode.setAttribute("aria-pressed","false")}}},role:function(e){return{role:"region","aria-label":e.isError&&!e.isResponsive?"Error":"Tooltip"}},innerRole:function(e){return{role:"tooltip"}},afterFetch:function(e,t){e.isError||e.isFocusOnly||e.isResponsive||e.isManualOpen||e.isAlert||e.isIE||(e.noRepeat=!0,$A.setAttr(e.target,"aria-description",$A.getText($A.morph(t))))},afterRender:function(e,t){e.isError||e.isResponsive||e.isIE?e.speak():e.noRepeat||$A.setAttr(e.target,"aria-describedby",t.id),e.isManualOpen&&$A.isNode(e.triggerNode)&&("button"===e.triggerNode.getAttribute("role")||!e.triggerNode.hasAttribute("role")&&"button"===e.triggerNode.nodeName.toLowerCase())&&e.triggerNode.setAttribute("aria-pressed","true")},afterRemove:function(e,t){$A.remAttr(e.target,"aria-describedby"),e.isManualOpen&&$A.isNode(e.triggerNode)&&("button"===e.triggerNode.getAttribute("role")||!e.triggerNode.hasAttribute("role")&&"button"===e.triggerNode.nodeName.toLowerCase())&&e.triggerNode.setAttribute("aria-pressed","false")}}),$A.extend({setTooltip:function(e,s){if(this._4X&&(s=e,e=this._X),!(e=$A.isPlainObject(e)?(s=e).trigger||s.content||null:e))return null;(s=s||{}).isIE=$A.isIE();function a(r){return $A.extend({widgetType:"Tooltip",speak:function(e){var t=this;return e=e||t.text(),t.noRepeat||($A.announce.clear(),setTimeout(function(){$A.announce(e,t.suppressRepeat,t.isAlert)},1)),t},validate:function(e,t){if(!t.value)return e.isValid=!1,e.content;e.isValid=!0},validateCondition:function(e){if(!e.isError&&!e.isResponsive)return e;var t=e.validate(e,e.target)||!1;t&&!$A.isBool(t)&&(e.loaded&&e.speak(t),e.insert(t)),$A.isFn(e.onValidate)&&e.onValidate(e,e.target)},on:{focus:function(e,t){t.isError||t.isResponsive||t.isManualOpen||this!==r?(t.isError||t.isResponsive)&&(t.isError&&t.remove(),t.validate(t,t.target),$A.isFn(t.onValidate))&&t.onValidate(t,t.target):t.render()},blur:function(e,t){t.isError?t.isResponsive||t.validateCondition(t):$A.isTouch||t.remove()},touchstart:function(e,t){t.isError||t.isResponsive||t.isManualOpen?(t.isError||t.isResponsive)&&(t.isError&&t.remove(),t.validate(t,t.target),$A.isFn(t.onValidate))&&t.onValidate(t,t.target):t.render()},click:function(e,t){t.isError||!t.isManualOpen||t.loaded?!t.isError&&t.isManualOpen&&t.loaded&&(t.remove(),e.stopPropagation(),e.preventDefault()):(t.render(),e.stopPropagation(),e.preventDefault())},mouseenter:function(e,t){t.isError||t.isManualOpen||t.isFocusOnly||t.isResponsive||t.render()},mouseleave:function(e,t){t.isError||t.isManualClose||t.isFocusOnly||t.isResponsive||t.remove()},keyup:function(e,t){t.isResponsive&&t.target.value!==t.value?(t.value=t.target.value,t.validateCondition(t)):(t.isError||t.isResponsive)&&(t.validate(t,t.target),$A.isFn(t.onValidate))&&t.onValidate(t,t.target)},change:function(e,t){t.isResponsive&&t.target.value!==t.value?(t.value=t.target.value,t.validateCondition(t)):(t.isError||t.isResponsive)&&(t.validate(t,t.target),$A.isFn(t.onValidate))&&t.onValidate(t,t.target)}}},s||{})}var l=[];return $A.query(e,s.context||document,function(e,t){var r,i=null,o=null,n=s.id||t.id||$A.genId();!s.isError&&s.isResponsive&&(s.isError=!0),$A.hasAttr(t,"data-tooltip")&&(r=$A.getAttr(t,"data-tooltip"),i={id:n+"T",target:t,trigger:t},$A.isPath(r)?i.fetch=$A.toFetch(r):i.content=$A.morph(r)),$A.hasAttr(t,"data-error")&&(r=$A.getAttr(t,"data-error"),o={id:n+"E",target:t,trigger:t,isError:!0},$A.isPath(r)?o.fetch=$A.toFetch(r):o.content=$A.morph(r)),o&&l.push($A.toDC($A.extend(a(t),o))),i&&(l.push($A.toDC($A.extend(a(t),i))),!i.content||s.isFocusOnly||s.isError||s.isResponsive||s.isManualOpen||s.isAlert||s.isIE||$A.setAttr(t,"aria-description",$A.getText(i.content))),o||i||(l.push($A.toDC($A.extend(a(t),{id:n,target:t,trigger:t}))),!s.content)||s.isFocusOnly||s.isError||s.isResponsive||s.isManualOpen||s.isAlert||s.isIE||$A.setAttr(t,"aria-description",$A.getText($A.morph(s.content)))}),1===l.length?l[0]:l}}));