mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
recycleNativeView filed now accepts: "always" | "never" | "auto". Always will recycle the nativeView no matter if its nativeView or android proprties are accessed. Never will disable recycling. Auto will recycle it only if nativeView and android properties are not accessed.
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { DockLayout as DockLayoutDefinition, Dock } from ".";
|
|
import { LayoutBase, View, Property, isIOS, booleanConverter, makeValidator, makeParser } from "../layout-base";
|
|
|
|
function validateArgs(element: View): View {
|
|
if (!element) {
|
|
throw new Error("element cannot be null or undefinied.");
|
|
}
|
|
return element;
|
|
}
|
|
|
|
export * from "../layout-base";
|
|
|
|
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);
|