add sticky header demo
This commit is contained in:
parent
d143941b00
commit
b548b8f02c
63
doric-demo/src/StickyHeaderDemo.ts
Normal file
63
doric-demo/src/StickyHeaderDemo.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import { Group, Panel, vlayout, scroller, text, layoutConfig, stack, Color, View, Scroller } from "doric";
|
||||
|
||||
const colors = [
|
||||
"#70a1ff",
|
||||
"#7bed9f",
|
||||
"#ff6b81",
|
||||
"#a4b0be",
|
||||
"#f0932b",
|
||||
"#eb4d4b",
|
||||
"#6ab04c",
|
||||
"#e056fd",
|
||||
"#686de0",
|
||||
"#30336b",
|
||||
].map(e => Color.parse(e))
|
||||
|
||||
function titleBar() {
|
||||
return text({
|
||||
text: "This is a sticky header",
|
||||
layoutConfig: layoutConfig().mostWidth().justHeight(),
|
||||
height: 50,
|
||||
backgroundColor: Color.YELLOW
|
||||
})
|
||||
}
|
||||
|
||||
@Entry
|
||||
export class StickyHeaderDemo extends Panel {
|
||||
build(root: Group) {
|
||||
let stickyHeader: View
|
||||
let scrollerView: Scroller
|
||||
stack(
|
||||
[
|
||||
scroller(
|
||||
vlayout(
|
||||
[
|
||||
stack([], {
|
||||
layoutConfig: layoutConfig().mostWidth().justHeight(),
|
||||
height: 80,
|
||||
backgroundColor: Color.GRAY,
|
||||
}),
|
||||
titleBar(),
|
||||
...new Array(20).fill(0).map((_, index) => stack([], {
|
||||
layoutConfig: layoutConfig().mostWidth().justHeight(),
|
||||
height: 80,
|
||||
backgroundColor: colors[index % colors.length]
|
||||
})),
|
||||
],
|
||||
{
|
||||
layoutConfig: layoutConfig().mostWidth().fitHeight(),
|
||||
}
|
||||
),
|
||||
{
|
||||
layoutConfig: layoutConfig().most(),
|
||||
onScroll: (offset) => {
|
||||
stickyHeader.hidden = offset.y <= 80
|
||||
}
|
||||
}),
|
||||
stickyHeader = titleBar().apply({ hidden: true }),
|
||||
],
|
||||
{
|
||||
layoutConfig: layoutConfig().most(),
|
||||
}).in(root)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user