Files
NativeScript/nativescript-core/ui/layouts/dock-layout/dock-layout-common.ts
Nathan Walker da3c0b973d chore: format
2020-07-11 11:01:40 -07:00

62 lines
1.7 KiB
TypeScript

import { DockLayout as DockLayoutDefinition, Dock } from ".";
import { LayoutBase } from "../layout-base";
import { View, CSSType } from "../../core/view";
import { Property, makeValidator, makeParser } from "../../core/properties";
import { booleanConverter } from "../../core/view-base";
import { isIOS } from "../../../platform";
function validateArgs(element: View): View {
if (!element) {
throw new Error("element cannot be null or undefinied.");
}
return element;
}
export * from "../layout-base";
@CSSType("DockLayout")
export class DockLayoutBase extends LayoutBase implements DockLayoutDefinition {
public static getDock(element: View): Dock {
return validateArgs(element).dock;
}
public static setDock(element: View, value: Dock): void {
validateArgs(element).dock = value;
}
public stretchLastChild: boolean;
public onDockChanged(view: View, oldValue: Dock, newValue: Dock) {
//
}
}
DockLayoutBase.prototype.recycleNativeView = "auto";
const dockConverter = makeParser<Dock>(
makeValidator<Dock>("left", "top", "right", "bottom")
);
export const dockProperty = new Property<View, Dock>({
name: "dock",
defaultValue: "left",
valueChanged: (target, oldValue, newValue) => {
if (target instanceof View) {
const layout = target.parent;
if (layout instanceof DockLayoutBase) {
layout.onDockChanged(target, oldValue, newValue);
}
}
},
valueConverter: dockConverter,
});
dockProperty.register(View);
export const stretchLastChildProperty = new Property<DockLayoutBase, boolean>({
name: "stretchLastChild",
defaultValue: true,
affectsLayout: isIOS,
valueConverter: booleanConverter,
});
stretchLastChildProperty.register(DockLayoutBase);