UNPKG

@ionic/core

Version:
41 lines (40 loc) 1.25 kB
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); } }