@ionic/core
Version:
Base components for Ionic
41 lines (40 loc) • 1.25 kB
JavaScript
const PADDING_TIMER_KEY = '$ionPaddingTimer';
export function enableScrollPadding(doc, keyboardHeight) {
console.debug('Input: enableScrollPadding');
function onFocusin(ev) {
setScrollPadding(ev.target, keyboardHeight);
}
function onFocusout(ev) {
setScrollPadding(ev.target, 0);
}
doc.addEventListener('focusin', onFocusin);
doc.addEventListener('focusout', onFocusout);
return () => {
doc.removeEventListener('focusin', onFocusin);
doc.removeEventListener('focusout', onFocusout);
};
}
function setScrollPadding(input, keyboardHeight) {
if (input.tagName !== 'INPUT') {
return;
}
if (input.parentElement && input.parentElement.tagName === 'ION-INPUT') {
return;
}
const el = input.closest('ion-content');
if (el === null) {
return;
}
const timer = el[PADDING_TIMER_KEY];
if (timer) {
clearTimeout(timer);
}
if (keyboardHeight > 0) {
el.style.setProperty('--keyboard-offset', `${keyboardHeight}px`);
}
else {
el[PADDING_TIMER_KEY] = setTimeout(() => {
el.style.setProperty('--keyboard-offset', '0px');
}, 120);
}
}