Files
NativeScript/nativescript-core/ui/border/index.ts
Nathan Walker da3c0b973d chore: format
2020-07-11 11:01:40 -07:00

81 lines
2.1 KiB
TypeScript

import { Border as BorderDefinition } from ".";
import { ContentView } from "../content-view";
import { View, CSSType } from "../core/view";
import { layout } from "../../utils/utils";
@Deprecated
@CSSType("Border")
export class Border extends ContentView implements BorderDefinition {
get cornerRadius(): number {
if (typeof this.borderRadius === "number") {
return <number>this.borderRadius;
}
return 0;
}
set cornerRadius(value: number) {
this.borderRadius = value;
}
public onMeasure(
widthMeasureSpec: number,
heightMeasureSpec: number
): void {
const width = layout.getMeasureSpecSize(widthMeasureSpec);
const widthMode = layout.getMeasureSpecMode(widthMeasureSpec);
const height = layout.getMeasureSpecSize(heightMeasureSpec);
const heightMode = layout.getMeasureSpecMode(heightMeasureSpec);
const horizontalBorderLength =
this.effectiveBorderLeftWidth + this.effectiveBorderRightWidth;
const verticalBorderLength =
this.effectiveBorderTopWidth + this.effectiveBorderBottomWidth;
const result = View.measureChild(
this,
this.layoutView,
layout.makeMeasureSpec(width - horizontalBorderLength, widthMode),
layout.makeMeasureSpec(height - verticalBorderLength, heightMode)
);
const widthAndState = View.resolveSizeAndState(
result.measuredWidth + horizontalBorderLength,
width,
widthMode,
0
);
const heightAndState = View.resolveSizeAndState(
result.measuredHeight + verticalBorderLength,
height,
heightMode,
0
);
this.setMeasuredDimension(widthAndState, heightAndState);
}
public onLayout(
left: number,
top: number,
right: number,
bottom: number
): void {
let horizontalBorderLength =
this.effectiveBorderLeftWidth + this.effectiveBorderRightWidth;
let verticalBorderLength =
this.effectiveBorderTopWidth + this.effectiveBorderBottomWidth;
View.layoutChild(
this,
this.layoutView,
this.effectiveBorderLeftWidth,
this.effectiveBorderTopWidth,
right - left - horizontalBorderLength,
bottom - top - verticalBorderLength
);
}
}
Border.prototype.recycleNativeView = "auto";