mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 19:57:22 +08:00
click block updates
This commit is contained in:
@ -19,5 +19,6 @@ import {
|
|||||||
export class Content {
|
export class Content {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.contentClass = true;
|
this.contentClass = true;
|
||||||
|
console.log('Content!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,8 +195,6 @@ export class NavBase {
|
|||||||
// allow clicks again
|
// allow clicks again
|
||||||
ClickBlock(false);
|
ClickBlock(false);
|
||||||
|
|
||||||
console.log('transition, canSwipeBack()', this.canSwipeBack());
|
|
||||||
|
|
||||||
// resolve that this push has completed
|
// resolve that this push has completed
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
import {raf} from './dom'
|
||||||
|
|
||||||
|
|
||||||
const CSS_CLICK_BLOCK = 'click-block-active';
|
const CSS_CLICK_BLOCK = 'click-block-active';
|
||||||
|
const DEFAULT_EXPIRE = 330;
|
||||||
let cbEle, fallbackTimerId, pendingShow;
|
let cbEle, fallbackTimerId, pendingShow;
|
||||||
|
|
||||||
function preventClick(ev) {
|
function preventClick(ev) {
|
||||||
@ -8,26 +11,40 @@ function preventClick(ev) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function show(expire) {
|
function show(expire) {
|
||||||
|
pendingShow = true;
|
||||||
clearTimeout(fallbackTimerId);
|
clearTimeout(fallbackTimerId);
|
||||||
fallbackTimerId = setTimeout(hide, expire || 320);
|
fallbackTimerId = setTimeout(hide, expire || DEFAULT_EXPIRE);
|
||||||
|
raf(addBlock);
|
||||||
if (cbEle) {
|
|
||||||
cbEle.classList.add(CSS_CLICK_BLOCK);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
cbEle = document.createElement('div');
|
|
||||||
cbEle.className = 'click-block ' + CSS_CLICK_BLOCK;
|
|
||||||
document.body.appendChild(cbEle);
|
|
||||||
cbEle.addEventListener('touchstart', preventClick);
|
|
||||||
cbEle.addEventListener('mousedown', preventClick);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function hide() {
|
function hide() {
|
||||||
|
pendingShow = false;
|
||||||
clearTimeout(fallbackTimerId);
|
clearTimeout(fallbackTimerId);
|
||||||
cbEle && cbEle.classList.remove(CSS_CLICK_BLOCK);
|
raf(removeBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addBlock() {
|
||||||
|
if (pendingShow) {
|
||||||
|
|
||||||
|
if (cbEle) {
|
||||||
|
cbEle.classList.add(CSS_CLICK_BLOCK);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
cbEle = document.createElement('div');
|
||||||
|
cbEle.className = 'click-block ' + CSS_CLICK_BLOCK;
|
||||||
|
document.body.appendChild(cbEle);
|
||||||
|
cbEle.addEventListener('touchstart', preventClick);
|
||||||
|
cbEle.addEventListener('mousedown', preventClick);
|
||||||
|
}
|
||||||
|
pendingShow = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeBlock() {
|
||||||
|
if (!pendingShow) {
|
||||||
|
cbEle && cbEle.classList.remove(CSS_CLICK_BLOCK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export let ClickBlock = function(shouldShow, expire) {
|
export let ClickBlock = function(shouldShow, expire) {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user