Skip to content

Commit 1fe1c1e

Browse files
committed
feat(content): add a resize function to recalculate the content size
this should be called when dynamically displaying/hiding headers, footers, or tabs. references #7131
1 parent cd6ad23 commit 1fe1c1e

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

src/components/content/content.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,45 @@ export class Content extends Ion {
442442
}
443443
}
444444

445+
/**
446+
* Tell the content to recalculate its dimensions. This should be called
447+
* after dynamically adding headers, footers, or tabs.
448+
*
449+
* ```ts
450+
* @Component({
451+
* template: `
452+
* <ion-header>
453+
* <ion-navbar>
454+
* <ion-title>Main Navbar</ion-title>
455+
* </ion-navbar>
456+
* <ion-toolbar *ngIf="showToolbar">
457+
* <ion-title>Dynamic Toolbar</ion-title>
458+
* </ion-toolbar>
459+
* </ion-header>
460+
* <ion-content>
461+
* <button (click)="toggleToolbar()">Toggle Toolbar</button>
462+
* </ion-content>
463+
* `})
464+
*
465+
* class E2EPage {
466+
* @ViewChild(Content) content: Content;
467+
* showToolbar: boolean = false;
468+
*
469+
* toggleToolbar() {
470+
* this.showToolbar = !this.showToolbar;
471+
* this.content.resize();
472+
* }
473+
* }
474+
* ```
475+
*
476+
*/
477+
resize() {
478+
nativeRaf(() => {
479+
this.readDimensions();
480+
this.writeDimensions();
481+
});
482+
}
483+
445484
/**
446485
* @private
447486
* DOM READ

src/components/content/test/basic/index.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {Component} from '@angular/core';
2-
import {ionicBootstrap} from '../../../../../src';
1+
import { Component, ViewChild } from '@angular/core';
2+
import { Content, ionicBootstrap } from '../../../../../src';
33

44

55
@Component({
@@ -50,7 +50,14 @@ class Page1 {
5050
templateUrl: 'main.html'
5151
})
5252
class E2EPage {
53+
@ViewChild(Content) content: Content;
5354
page1 = Page1;
55+
showToolbar: boolean = false;
56+
57+
toggleToolbar() {
58+
this.showToolbar = !this.showToolbar;
59+
this.content.resize();
60+
}
5461
}
5562

5663

src/components/content/test/basic/main.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@
88
</button>
99
</ion-buttons>
1010
</ion-navbar>
11+
<ion-toolbar *ngIf="showToolbar">
12+
<ion-title>Dynamic Toolbar</ion-title>
13+
</ion-toolbar>
1114
</ion-header>
1215

1316
<ion-content>
1417
<b>This page has a header and content but no footer or tabs.</b>
1518

19+
<button (click)="toggleToolbar()">Toggle Toolbar</button>
20+
1621
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi scelerisque dolor lacus, ut vehicula arcu dapibus id. Morbi iaculis fermentum blandit. Curabitur tempus, ante et vehicula tempor, urna velit rutrum massa, quis suscipit purus lacus eget est. Sed nisi nulla, tempus id dictum a, cursus ut felis. Aliquam orci magna, rutrum nec tempor ac, fermentum quis eros. Sed ullamcorper felis sit amet tristique sagittis. Nullam sed tempus mi. Morbi sit amet lacinia leo. Nunc facilisis orci id consectetur dignissim. Integer dictum consectetur enim. Vivamus auctor, turpis ut eleifend pharetra, purus magna mattis arcu, vel pharetra tellus orci eget ex. Integer blandit posuere vehicula. Ut ipsum lorem, efficitur vitae eleifend tincidunt, fermentum nec lacus. Ut nec fermentum dui.
1722

1823
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi scelerisque dolor lacus, ut vehicula arcu dapibus id. Morbi iaculis fermentum blandit. Curabitur tempus, ante et vehicula tempor, urna velit rutrum massa, quis suscipit purus lacus eget est. Sed nisi nulla, tempus id dictum a, cursus ut felis. Aliquam orci magna, rutrum nec tempor ac, fermentum quis eros. Sed ullamcorper felis sit amet tristique sagittis. Nullam sed tempus mi. Morbi sit amet lacinia leo. Nunc facilisis orci id consectetur dignissim. Integer dictum consectetur enim. Vivamus auctor, turpis ut eleifend pharetra, purus magna mattis arcu, vel pharetra tellus orci eget ex. Integer blandit posuere vehicula. Ut ipsum lorem, efficitur vitae eleifend tincidunt, fermentum nec lacus. Ut nec fermentum dui.

0 commit comments

Comments
 (0)