mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 03:00:58 +08:00
51 lines
937 B
TypeScript
51 lines
937 B
TypeScript
const CSS_CLICK_BLOCK = 'click-block-active';
|
|
const DEFAULT_EXPIRE = 330;
|
|
let cbEle, fallbackTimerId;
|
|
let isShowing = false;
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
export class ClickBlock {
|
|
|
|
enable() {
|
|
cbEle = document.createElement('click-block');
|
|
document.body.appendChild(cbEle);
|
|
cbEle.addEventListener('touchmove', function(ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
});
|
|
this._enabled = true;
|
|
}
|
|
|
|
show(shouldShow, expire) {
|
|
if (this._enabled) {
|
|
if (shouldShow) {
|
|
show(expire);
|
|
|
|
} else {
|
|
hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function show(expire) {
|
|
clearTimeout(fallbackTimerId);
|
|
fallbackTimerId = setTimeout(hide, expire || DEFAULT_EXPIRE);
|
|
|
|
if (!isShowing) {
|
|
cbEle.classList.add(CSS_CLICK_BLOCK);
|
|
isShowing = true;
|
|
}
|
|
}
|
|
|
|
function hide() {
|
|
clearTimeout(fallbackTimerId);
|
|
if (isShowing) {
|
|
cbEle.classList.remove(CSS_CLICK_BLOCK);
|
|
isShowing = false;
|
|
}
|
|
}
|