Merge pull request #1363 from crazyserver/MOBILE-2430

Mobile 2430
main
Juan Leyva 2018-06-21 14:37:47 +02:00 committed by GitHub
commit f1931e96e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 19 deletions

View File

@ -19,6 +19,8 @@ import { CoreSitesProvider } from '@providers/sites';
import { CoreFilepoolProvider } from '@providers/filepool'; import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreDomUtilsProvider } from '@providers/utils/dom'; import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreUrlUtilsProvider } from '@providers/utils/url'; import { CoreUrlUtilsProvider } from '@providers/utils/url';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreEventsProvider } from '@providers/events';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { Keyboard } from '@ionic-native/keyboard'; import { Keyboard } from '@ionic-native/keyboard';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
@ -61,13 +63,15 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
protected resizeFunction; protected resizeFunction;
protected valueChangeSubscription: Subscription; protected valueChangeSubscription: Subscription;
protected keyboardObs: any;
rteEnabled = false; rteEnabled = false;
editorSupported = true; editorSupported = true;
constructor(private domUtils: CoreDomUtilsProvider, private keyboard: Keyboard, private urlUtils: CoreUrlUtilsProvider, constructor(private domUtils: CoreDomUtilsProvider, private keyboard: Keyboard, private urlUtils: CoreUrlUtilsProvider,
private sitesProvider: CoreSitesProvider, private filepoolProvider: CoreFilepoolProvider, private sitesProvider: CoreSitesProvider, private filepoolProvider: CoreFilepoolProvider,
@Optional() private content: Content, elementRef: ElementRef) { @Optional() private content: Content, elementRef: ElementRef, private events: CoreEventsProvider,
private utils: CoreUtilsProvider) {
this.contentChanged = new EventEmitter<string>(); this.contentChanged = new EventEmitter<string>();
this.element = elementRef.nativeElement as HTMLDivElement; this.element = elementRef.nativeElement as HTMLDivElement;
} }
@ -130,34 +134,50 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
let i = 0; let i = 0;
const interval = setInterval(() => { const interval = setInterval(() => {
const height = this.maximizeEditorSize(); this.maximizeEditorSize().then((height) => {
if (i >= 5 || height != 0) { if (i >= 5 || height != 0) {
clearInterval(interval); clearInterval(interval);
} }
i++; i++;
});
}, 750); }, 750);
this.keyboardObs = this.events.on(CoreEventsProvider.KEYBOARD_CHANGE, (isOn) => {
this.maximizeEditorSize();
});
} }
/** /**
* Resize editor to maximize the space occupied. * Resize editor to maximize the space occupied.
*
* @return {Promise<number>} Resolved with calculated editor size.
*/ */
protected maximizeEditorSize(): number { protected maximizeEditorSize(): Promise<number> {
this.content.resize(); this.content.resize();
const contentVisibleHeight = this.content.contentHeight;
// Editor is ready, adjust Height if needed. const deferred = this.utils.promiseDefer();
if (contentVisibleHeight > 0) {
const height = this.getSurroundingHeight(this.element); setTimeout(() => {
if (contentVisibleHeight > height) { const contentVisibleHeight = this.content.contentHeight;
this.element.style.height = this.domUtils.formatPixelsSize(contentVisibleHeight - height);
} else { // Editor is ready, adjust Height if needed.
this.element.style.height = ''; if (contentVisibleHeight > 0) {
const height = this.getSurroundingHeight(this.element);
if (contentVisibleHeight > height) {
this.element.style.height = this.domUtils.formatPixelsSize(contentVisibleHeight - height);
} else {
this.element.style.height = '';
}
deferred.resolve(contentVisibleHeight - height);
return;
} }
return contentVisibleHeight - height; deferred.resolve(0);
} });
return 0; return deferred.promise;
} }
/** /**
@ -467,6 +487,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
*/ */
ngOnDestroy(): void { ngOnDestroy(): void {
this.valueChangeSubscription && this.valueChangeSubscription.unsubscribe(); this.valueChangeSubscription && this.valueChangeSubscription.unsubscribe();
this.keyboardObs && this.keyboardObs.off();
window.removeEventListener('resize', this.resizeFunction); window.removeEventListener('resize', this.resizeFunction);
} }
} }

View File

@ -1,6 +1,7 @@
page-core-mainmenu { page-core-mainmenu {
.ion-md-fa-graduation-cap, .ion-md-fa-graduation-cap,
.ion-ios-fa-graduation-cap, .ion-ios-fa-graduation-cap,
.ion-ios-fa-graduation-cap-outline,
.ion-wp-fa-graduation-cap, .ion-wp-fa-graduation-cap,
.ion-fa-graduation-cap { .ion-fa-graduation-cap {
@extend .fa-graduation-cap; @extend .fa-graduation-cap;

View File

@ -19,6 +19,7 @@ import { Network } from '@ionic-native/network';
import { CoreDbProvider } from './db'; import { CoreDbProvider } from './db';
import { CoreLoggerProvider } from './logger'; import { CoreLoggerProvider } from './logger';
import { CoreEventsProvider } from './events';
import { SQLiteDB } from '@classes/sqlitedb'; import { SQLiteDB } from '@classes/sqlitedb';
/** /**
@ -69,16 +70,18 @@ export class CoreAppProvider {
protected isKeyboardShown = false; protected isKeyboardShown = false;
constructor(dbProvider: CoreDbProvider, private platform: Platform, private keyboard: Keyboard, private appCtrl: App, constructor(dbProvider: CoreDbProvider, private platform: Platform, private keyboard: Keyboard, private appCtrl: App,
private network: Network, logger: CoreLoggerProvider) { private network: Network, logger: CoreLoggerProvider, events: CoreEventsProvider) {
this.logger = logger.getInstance('CoreAppProvider'); this.logger = logger.getInstance('CoreAppProvider');
this.db = dbProvider.getDB(this.DBNAME); this.db = dbProvider.getDB(this.DBNAME);
this.keyboard.onKeyboardShow().subscribe((data) => { this.keyboard.onKeyboardShow().subscribe((data) => {
this.isKeyboardShown = true; this.isKeyboardShown = true;
events.trigger(CoreEventsProvider.KEYBOARD_CHANGE, this.isKeyboardShown);
}); });
this.keyboard.onKeyboardHide().subscribe((data) => { this.keyboard.onKeyboardHide().subscribe((data) => {
this.isKeyboardShown = false; this.isKeyboardShown = false;
events.trigger(CoreEventsProvider.KEYBOARD_CHANGE, this.isKeyboardShown);
}); });
} }

View File

@ -54,6 +54,7 @@ export class CoreEventsProvider {
static IAB_EXIT = 'inappbrowser_exit'; static IAB_EXIT = 'inappbrowser_exit';
static APP_LAUNCHED_URL = 'app_launched_url'; // App opened with a certain URL (custom URL scheme). static APP_LAUNCHED_URL = 'app_launched_url'; // App opened with a certain URL (custom URL scheme).
static FILE_SHARED = 'file_shared'; static FILE_SHARED = 'file_shared';
static KEYBOARD_CHANGE = 'keyboard_change';
protected logger; protected logger;
protected observables: { [s: string]: Subject<any> } = {}; protected observables: { [s: string]: Subject<any> } = {};