311 lines
9.9 KiB
TypeScript
311 lines
9.9 KiB
TypeScript
import { Panel, Group, vlayout, LayoutSpec, text, Color, gravity, stack, layoutConfig, scroller, Gravity, View, hlayout } from "doric";
|
|
|
|
function grid(title: string, view: View) {
|
|
return vlayout(
|
|
[
|
|
text({
|
|
text: title,
|
|
backgroundColor: Color.parse("#3498db"),
|
|
textColor: Color.WHITE,
|
|
textAlignment: Gravity.CenterX,
|
|
layoutConfig: {
|
|
widthSpec: LayoutSpec.MOST,
|
|
heightSpec: LayoutSpec.JUST,
|
|
},
|
|
height: 30
|
|
}),
|
|
stack(
|
|
[
|
|
view
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().just(),
|
|
width: 300,
|
|
height: 300,
|
|
backgroundColor: Color.parse("#ecf0f1"),
|
|
})
|
|
])
|
|
|
|
}
|
|
function content() {
|
|
return [
|
|
text({
|
|
text: "Content",
|
|
textColor: Color.WHITE,
|
|
backgroundColor: Color.parse("#34495e"),
|
|
}),
|
|
stack(
|
|
[],
|
|
{
|
|
layoutConfig: {
|
|
widthSpec: LayoutSpec.JUST,
|
|
heightSpec: LayoutSpec.JUST,
|
|
margin: {
|
|
left: 10,
|
|
right: 10,
|
|
top: 10,
|
|
bottom: 10
|
|
}
|
|
},
|
|
width: 100,
|
|
height: 100,
|
|
backgroundColor: Color.parse("#34495e")
|
|
})
|
|
]
|
|
}
|
|
|
|
function case1() {
|
|
return stack(
|
|
[
|
|
stack(
|
|
[
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c")
|
|
})
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#9b59b6")
|
|
}
|
|
)
|
|
}
|
|
|
|
function case2() {
|
|
return stack(
|
|
[
|
|
stack(
|
|
[],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c")
|
|
}),
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#9b59b6")
|
|
}
|
|
)
|
|
}
|
|
|
|
function case3() {
|
|
return stack(
|
|
[
|
|
case1(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#2ecc71")
|
|
}
|
|
)
|
|
}
|
|
|
|
function case4() {
|
|
return stack(
|
|
[
|
|
case2(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#2ecc71")
|
|
}
|
|
)
|
|
}
|
|
|
|
function case5() {
|
|
return stack(
|
|
[
|
|
case3(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#3498db")
|
|
}
|
|
)
|
|
}
|
|
|
|
|
|
function case6() {
|
|
return stack(
|
|
[
|
|
case3(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10
|
|
},
|
|
backgroundColor: Color.parse("#3498db")
|
|
}
|
|
)
|
|
}
|
|
@Entry
|
|
class LayoutTest extends Panel {
|
|
build(root: Group) {
|
|
scroller(
|
|
vlayout(
|
|
[
|
|
grid(
|
|
"VLayout fit -> most -> just",
|
|
vlayout(
|
|
[
|
|
stack(
|
|
[
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
backgroundColor: Color.parse("#9b59b6"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
),
|
|
grid(
|
|
"VLayout fit -> most, just",
|
|
vlayout(
|
|
[
|
|
stack(
|
|
[],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
}),
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
backgroundColor: Color.parse("#9b59b6"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
),
|
|
grid(
|
|
"HLayout fit -> most -> just",
|
|
hlayout(
|
|
[
|
|
stack(
|
|
[
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
backgroundColor: Color.parse("#9b59b6"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
),
|
|
grid(
|
|
"HLayout fit -> most, just",
|
|
hlayout(
|
|
[
|
|
stack(
|
|
[],
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
backgroundColor: Color.parse("#1abc9c"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
}),
|
|
...content(),
|
|
],
|
|
{
|
|
layoutConfig: layoutConfig().fit(),
|
|
backgroundColor: Color.parse("#9b59b6"),
|
|
padding: {
|
|
left: 10, right: 10,
|
|
top: 10, bottom: 10,
|
|
}
|
|
})
|
|
),
|
|
grid(
|
|
"Stack fit -> most -> just",
|
|
case1(),
|
|
),
|
|
grid(
|
|
"Stack fit -> most, just",
|
|
case2(),
|
|
),
|
|
grid(
|
|
"Stack fit -> fit -> most -> just",
|
|
case3(),
|
|
),
|
|
grid(
|
|
"Stack fit -> fit -> most, just",
|
|
case4(),
|
|
),
|
|
grid(
|
|
"Stack fit -> fit -> fit -> most -> just",
|
|
case5(),
|
|
),
|
|
grid(
|
|
"Stack fit -> fit -> fit -> most, just",
|
|
case6(),
|
|
),
|
|
],
|
|
{
|
|
layoutConfig: {
|
|
widthSpec: LayoutSpec.MOST,
|
|
heightSpec: LayoutSpec.FIT,
|
|
},
|
|
gravity: Gravity.CenterX,
|
|
space: 20,
|
|
}),
|
|
{
|
|
layoutConfig: layoutConfig().most(),
|
|
}).in(root)
|
|
}
|
|
} |