import { Group, Panel, text, gravity, Color, LayoutSpec, vlayout, hlayout, scroller, layoutConfig, stack, Gravity } from "doric"; const colors = [ "#f0932b", "#eb4d4b", "#6ab04c", "#e056fd", "#686de0", "#30336b", ] function box(idx = 0) { return stack([], { width: 20, height: 20, layoutConfig: layoutConfig().just(), backgroundColor: Color.parse(colors[idx || 0]) }) } function boxStr(str: string, idx = 0) { return text({ width: 20, height: 20, text: str, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), backgroundColor: Color.parse(colors[idx || 0]) }) } function label(str: string) { return text({ text: str, textSize: 16, }) } @Entry class LayoutDemo extends Panel { build(rootView: Group) { scroller( hlayout( [ vlayout( [ label("Horizontal Layout(Align to Top)"), hlayout( [ box().apply({ height: 20 }), box().apply({ height: 40 }), box().apply({ height: 60 }), box().apply({ height: 40 }), box().apply({ height: 20 }), ], { space: 20 } ), label("Horizontal Layout(Align to Bottom)"), hlayout( [ box().apply({ height: 20 }), box().apply({ height: 40 }), box().apply({ height: 60 }), box().apply({ height: 40 }), box().apply({ height: 20 }), ], { space: 20, gravity: Gravity.Bottom }), label("Horizontal Layout(Align to Center)"), hlayout( [ box().apply({ height: 20 }), box().apply({ height: 40 }), box().apply({ height: 60 }), box().apply({ height: 40 }), box().apply({ height: 20 }), ], { space: 20, gravity: Gravity.Center } ), label("Horizontal Layout(Weight)"), hlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), box(2), box(4), ], { width: 200, height: 30, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), hlayout( [ box(3), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), box(4), ], { width: 200, height: 30, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), } ), hlayout( [ box(3), box(2), boxStr('weight=1', 4).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), ], { width: 200, height: 30, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), } ), hlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), box(4), ], { width: 200, height: 30, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), } ), hlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), boxStr('weight=1', 4).apply({ layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, weight: 1, } }), ], { width: 200, height: 30, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), ], { space: 20, gravity: Gravity.Center } ), vlayout( [ label("Vertical Layout(Algin to Left)"), vlayout( [ box(1).apply({ width: 20 }), box(1).apply({ width: 40 }), box(1).apply({ width: 60 }), box(1).apply({ width: 40 }), box(1).apply({ width: 20 }), ], { space: 20 }), label("Vertical Layout(Algin to Right)"), vlayout( [ box(1).apply({ width: 20 }), box(1).apply({ width: 40 }), box(1).apply({ width: 60 }), box(1).apply({ width: 40 }), box(1).apply({ width: 20 }), ], { space: 20, gravity: gravity().right(), }), label("Vertical Layout(Algin to Center)"), vlayout( [ box(1).apply({ width: 20 }), box(1).apply({ width: 40 }), box(1).apply({ width: 60 }), box(1).apply({ width: 40 }), box(1).apply({ width: 20 }), ], { space: 20, gravity: gravity().center(), }), label("Vertical Layout(Weight)"), hlayout( [ vlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, }, }), box(2).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, } }), box(4).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, } }), ], { width: 100, height: 200, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), vlayout( [ box(3).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, }, }), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, } }), box(4).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, } }), ], { width: 100, height: 200, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), vlayout( [ box(3).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, }, }), box(2).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, }, }), boxStr('weight=1', 4).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, } }), ], { width: 100, height: 200, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), vlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, }, }), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, } }), box(4).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, } }), ], { width: 100, height: 200, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), vlayout( [ boxStr('weight=1', 3).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, }, }), boxStr('weight=1', 2).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, } }), boxStr('weight=1', 4).apply({ layoutConfig: { widthSpec: LayoutSpec.MOST, heightSpec: LayoutSpec.JUST, weight: 1, } }), ], { width: 100, height: 200, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, backgroundColor: Color.parse('#eeeeee'), gravity: gravity().center(), }), ], { space: 20 }), ], { space: 20, gravity: Gravity.Left }) ], { space: 20 }), { layoutConfig: layoutConfig().most() } ).in(rootView) } }