mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 20:33:32 +08:00
chore(): add types
This commit is contained in:
@ -3,6 +3,7 @@ import {Config} from '../config/config';
|
||||
import {isArray} from '../util';
|
||||
import * as dom from '../util/dom';
|
||||
|
||||
let ids:number = 0;
|
||||
|
||||
/**
|
||||
* Base class for all Ionic components. Exposes some common functionality
|
||||
@ -10,8 +11,10 @@ import * as dom from '../util/dom';
|
||||
* sending/receiving app-level events.
|
||||
*/
|
||||
export class Ion {
|
||||
constructor(elementRef: ElementRef) {
|
||||
this.elementRef = elementRef;
|
||||
private _id: string;
|
||||
|
||||
constructor(protected elementRef: ElementRef) {
|
||||
this._id = 'i-' + ids++;
|
||||
}
|
||||
|
||||
getElementRef() {
|
||||
@ -23,15 +26,15 @@ export class Ion {
|
||||
}
|
||||
|
||||
getDimensions() {
|
||||
return dom.getDimensions(this);
|
||||
return dom.getDimensions(this.elementRef.nativeElement, this._id);
|
||||
}
|
||||
|
||||
width() {
|
||||
return dom.getDimensions(this).width;
|
||||
return dom.getDimensions(this.elementRef.nativeElement, this._id).width;
|
||||
}
|
||||
|
||||
height() {
|
||||
return dom.getDimensions(this).height;
|
||||
return dom.getDimensions(this.elementRef.nativeElement, this._id).height;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -234,21 +234,14 @@ export function removeElement(ele) {
|
||||
* to reduce DOM reads. Cache is cleared on a window resize.
|
||||
* @param {TODO} ele TODO
|
||||
*/
|
||||
export function getDimensions(ion, ele) {
|
||||
if (!ion._dimId) {
|
||||
ion._dimId = ++dimensionIds;
|
||||
if (ion._dimId % 1000 === 0) {
|
||||
// periodically flush dimensions
|
||||
flushDimensionCache();
|
||||
}
|
||||
}
|
||||
|
||||
let dimensions = dimensionCache[ion._dimId];
|
||||
export function getDimensions(ele: HTMLElement, id: string): {
|
||||
width: number, height: number, left: number, top: number
|
||||
} {
|
||||
let dimensions = dimensionCache[id];
|
||||
if (!dimensions) {
|
||||
let ele = ion.getNativeElement();
|
||||
// make sure we got good values before caching
|
||||
if (ele.offsetWidth && ele.offsetHeight) {
|
||||
dimensions = dimensionCache[ion._dimId] = {
|
||||
dimensions = dimensionCache[id] = {
|
||||
width: ele.offsetWidth,
|
||||
height: ele.offsetHeight,
|
||||
left: ele.offsetLeft,
|
||||
@ -285,7 +278,6 @@ export function flushDimensionCache() {
|
||||
}
|
||||
|
||||
let dimensionCache:any = {};
|
||||
let dimensionIds = 0;
|
||||
|
||||
function isStaticPositioned(element) {
|
||||
return (element.style.position || 'static') === 'static';
|
||||
|
Reference in New Issue
Block a user