ionic-keyboard-assist
Version:
    {
/**
* Stores modified pages element
*/
this.pages = [];
/**
* On keyboard did show actions
* @param event: keyboard event
*/
this.onKeyboardDidShow = (/**
* @param {?} event
* @return {?}
*/
(event) => {
/** @type {?} */
const modal = this.getActiveModalElement();
/** @type {?} */
let activeElement;
if (modal) {
activeElement = modal;
}
else {
activeElement = this.getActivePageElement();
}
this.pages.push(activeElement);
if (this.options.scrollPadding) {
this.setPadding(activeElement, event.keyboardHeight);
}
if (this.options.scrollAssist) {
this.scrollAssist();
}
});
/**
* On keyboard will hide actions
*/
this.onKeyboardWillHide = (/**
* @return {?}
*/
() => {
this.pages.forEach((/**
* @param {?} elem
* @return {?}
*/
elem => {
this.setPadding(elem);
}));
setTimeout((/**
* @return {?}
*/
() => this.pages = []), 50);
});
this.setOptions();
}
/**
* Start the keyboard wizard
* @param {?=} options
* @return {?}
*/
init(options) {
if (options) {
this.setOptions(options);
}
this.addEventListeners();
}
/**
* Set keyboard options
* @param {?=} options
* @return {?}
*/
setOptions(options) {
this.options = new KeyboardOptions(options);
}
/**
* Add Event Listeners
* @private
* @return {?}
*/
addEventListeners() {
window.addEventListener('keyboardDidShow', this.onKeyboardDidShow);
window.addEventListener('keyboardWillHide', this.onKeyboardWillHide);
}
/**
* Remove Event Listeners
* @private
* @return {?}
*/
removeEventListeners() {
window.removeEventListener('keyboardDidShow', this.onKeyboardDidShow);
window.removeEventListener('keyboardWillHide', this.onKeyboardWillHide);
}
/**
* Get current page element
* @private
* @return {?}
*/
getActivePageElement() {
/** @type {?} */
const elem = document.getElementsByTagName('ion-router-outlet');
if (elem && elem.length > 0) {
/** @type {?} */
const page = elem[elem.length - 1];
return page && page.lastElementChild ? page.lastElementChild : null;
}
return null;
}
/**
* Get current modal element
* @private
* @return {?}
*/
getActiveModalElement() {
/** @type {?} */
const elem = document.getElementsByTagName('ion-app');
if (elem && elem.length > 0) {
/** @type {?} */
const page = elem[elem.length - 1];
return page && page.lastElementChild && page.lastElementChild.tagName === 'ION-MODAL' ? page.lastElementChild : null;
}
return null;
}
/**
* Add padding on the element
* @private
* @param {?} elem
* @param {?=} value
* @return {?}
*/
setPadding(elem, value = 0) {
if (elem) {
elem.setAttribute('style', `padding-bottom: ${value}px !important`);
}
}
/**
* Scroll view to active element
* @private
* @return {?}
*/
scrollAssist() {
if (document.activeElement && document.activeElement.tagName === 'INPUT') {
setTimeout((/**
* @return {?}
*/
() => document.activeElement.scrollIntoView({ block: 'center', behavior: 'smooth' })), 100);
}
}
/**
* Remove listeners on destroy
* @return {?}
*/
ngOnDestroy() {
this.removeEventListeners();
}
}
IonicKeyboardAssist.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
IonicKeyboardAssist.ctorParameters = () => [];
/** @nocollapse */ IonicKeyboardAssist.ngInjectableDef = i0.defineInjectable({ factory: function IonicKeyboardAssist_Factory() { return new IonicKeyboardAssist(); }, token: IonicKeyboardAssist, providedIn: "root" });
if (false) {
/**
* Stores modified pages element
* @type {?}
* @private
*/
IonicKeyboardAssist.prototype.pages;
/**
* Keyboard options
* @type {?}
* @private
*/
IonicKeyboardAssist.prototype.options;
/**
* On keyboard did show actions
* \@param event: keyboard event
* @type {?}
* @private
*/
IonicKeyboardAssist.prototype.onKeyboardDidShow;
/**
* On keyboard will hide actions
* @type {?}
* @private
*/
IonicKeyboardAssist.prototype.onKeyboardWillHide;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMta2V5Ym9hcmQtYXNzaXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pb25pYy1rZXlib2FyZC1hc3Npc3QvIiwic291cmNlcyI6WyJsaWIvaW9uaWMta2V5Ym9hcmQtYXNzaXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQXdCLE1BQU0sMEJBQTBCLENBQUM7O0FBS2pGLE1BQU0sT0FBTyxtQkFBbUI7SUFZOUI7Ozs7UUFQUSxVQUFLLEdBQUcsRUFBRSxDQUFDOzs7OztRQWtEWCxzQkFBaUI7Ozs7UUFBRyxDQUFDLEtBQUssRUFBRSxFQUFFOztrQkFDOUIsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Z0JBQ3RDLGFBQWE7WUFFakIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsYUFBYSxHQUFHLEtBQUssQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0M7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUUvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDdEQ7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLEVBQUM7Ozs7UUFLTSx1QkFBa0I7OztRQUFHLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Ozs7WUFBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMs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QzlCLENBQUM7OztZQXhJRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7Ozs7Ozs7O0lBTUMsb0NBQW1COzs7Ozs7SUFLbkIsc0NBQWlDOzs7Ozs7O0lBNkNqQyxnREFtQkU7Ozs7OztJQUtGLGlEQUtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlib2FyZE9wdGlvbnMsIEtleWJvYXJkT3B0aW9uc01vZGVsIH0gZnJvbSAnLi9rZXlib2FyZC1vcHRpb25zLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW9uaWNLZXlib2FyZEFzc2lzdCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIFN0b3JlcyBtb2RpZmllZCBwYWdlcyBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHBhZ2VzID0gW107XG5cbiAgLyoqXG4gICAqIEtleWJvYXJkIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgb3B0aW9uczogS2V5Ym9hcmRPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0T3B0aW9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSBrZXlib2FyZCB3aXphcmRcbiAgICogQHBhcmFtIG9wdGlvbnM6IEtleWJvYXJkT3B0aW9uc01vZGVsXG4gICAqL1xuICBpbml0KG9wdGlvbnM/OiBLZXlib2FyZE9wdGlvbnNNb2RlbCkge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB0aGlzLnNldE9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQga2V5Ym9hcmQgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9uczogS2V5Ym9hcmRPcHRpb25zTW9kZWxcbiAgICovXG4gIHNldE9wdGlvbnMob3B0aW9ucz86IEtleWJvYXJkT3B0aW9uc01vZGVsKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbmV3IEtleWJvYXJkT3B0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgRXZlbnQgTGlzdGVuZXJzXG4gICAqL1xuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlib2FyZERpZFNob3cnLCB0aGlzLm9uS2V5Ym9hcmREaWRTaG93KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5Ym9hcmRXaWxsSGlkZScsIHRoaXMub25LZXlib2FyZFdpbGxIaWRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgRXZlbnQgTGlzdGVuZXJzXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlib2FyZERpZFNob3cnLCB0aGlzLm9uS2V5Ym9hcmREaWRTaG93KTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5Ym9hcmRXaWxsSGlkZScsIHRoaXMub25LZXlib2FyZFdpbGxIaWRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBrZXlib2FyZCBkaWQgc2hvdyBhY3Rpb25zXG4gICAqIEBwYXJhbSBldmVudDoga2V5Ym9hcmQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25LZXlib2FyZERpZFNob3cgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuZ2V0QWN0aXZlTW9kYWxFbGVtZW50KCk7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAobW9kYWwpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBtb2RhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlRWxlbWVudCA9IHRoaXMuZ2V0QWN0aXZlUGFnZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhZ2VzLnB1c2goYWN0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmcpIHtcbiAgICAgIHRoaXMuc2V0UGFkZGluZyhhY3RpdmVFbGVtZW50LCBldmVudC5rZXlib2FyZEhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zY3JvbGxBc3Npc3QpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQXNzaXN0KCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBPbiBrZXlib2FyZCB3aWxsIGhpZGUgYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBvbktleWJvYXJkV2lsbEhpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5wYWdlcy5mb3JFYWNoKGVsZW0gPT4ge1xuICAgICAgdGhpcy5zZXRQYWRkaW5nKGVsZW0pO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYWdlcyA9IFtdLCA1MCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHBhZ2UgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBY3RpdmVQYWdlRWxlbWVudCgpIHtcbiAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lvbi1yb3V0ZXItb3V0bGV0Jyk7XG4gICAgaWYgKGVsZW0gJiYgZWxlbS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwYWdlID0gZWxlbVtlbGVtLmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS5sYXN0RWxlbWVudENoaWxkID8gcGFnZS5sYXN0RWxlbWVudENoaWxkIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgbW9kYWwgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBY3RpdmVNb2RhbEVsZW1lbnQoKSB7XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpb24tYXBwJyk7XG4gICAgaWYgKGVsZW0gJiYgZWxlbS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwYWdlID0gZWxlbVtlbGVtLmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS5sYXN0RWxlbWVudENoaWxkICYmIHBhZ2UubGFzdEVsZW1lbnRDaGlsZC50YWdOYW1lID09PSAnSU9OLU1PREFMJyA/IHBhZ2UubGFzdEVsZW1lbnRDaGlsZCA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBwYWRkaW5nIG9uIHRoZSBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHNldFBhZGRpbmcoZWxlbSwgdmFsdWUgPSAwKSB7XG4gICAgaWYgKGVsZW0pIHtcbiAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdzdHlsZScsIGBwYWRkaW5nLWJvdHRvbTogJHt2YWx1ZX1weCAhaW1wb3J0YW50YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCB2aWV3IHRvIGFjdGl2ZSBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHNjcm9sbEFzc2lzdCgpIHtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7YmxvY2s6ICdjZW50ZXInLCBiZWhhdmlvcjogJ3Ntb290aCd9KSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGxpc3RlbmVycyBvbiBkZXN0cm95XG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxufVxuIl19