ionic-keyboard-assist
Version:
    • 6.09 kB
JavaScript
import { Injectable, defineInjectable } from '@angular/core';
/**
* @fileoverview added by tsickle
* Generated from: lib/keyboard-options.model.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Keyboard options class
*/
class KeyboardOptions {
/**
* @param {?=} options
*/
constructor(options) {
this.scrollPadding = options && options.scrollPadding ? options.scrollPadding : true;
this.scrollAssist = options && options.scrollAssist ? options.scrollAssist : true;
}
}
/**
* @fileoverview added by tsickle
* Generated from: lib/ionic-keyboard-assist.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class IonicKeyboardAssist {
constructor() {
/**
* 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 = defineInjectable({ factory: function IonicKeyboardAssist_Factory() { return new IonicKeyboardAssist(); }, token: IonicKeyboardAssist, providedIn: "root" });
/**
* @fileoverview added by tsickle
* Generated from: public-api.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: ionic-keyboard-assist.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { IonicKeyboardAssist };
//# sourceMappingURL=ionic-keyboard-assist.js.map