import { Group, Panel, List, text, gravity, Color, Stack, LayoutSpec, list, NativeCall, listItem, log, vlayout, Gravity, hlayout, Text, scroller, layoutConfig, image, IView, IVLayout, ScaleType, IText, modal } from "doric"; import { colors, label } from "./utils"; @Entry class ModalDemo extends Panel { build(rootView: Group): void { scroller(vlayout([ text({ text: "Modal", layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST), textSize: 30, textColor: Color.WHITE, backgroundColor: colors[1], textAlignment: Gravity.Center, height: 50, }), label('toast on bottom'), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).toast('This is a toast.') } } as IText), label('toast on top'), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).toast('This is a toast.', Gravity.Top) } } as IText), label('toast on center'), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).toast('This is a toast.', Gravity.Center) } } as IText), text({ text: "Alert", layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST), textSize: 30, textColor: Color.WHITE, backgroundColor: colors[2], textAlignment: Gravity.Center, height: 50, }), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).alert({ msg: 'This is alert.', title: 'Alert title', okLabel: "OkLabel" }).then(e => { modal(context).toast('Clicked OK.') }) } } as IText), text({ text: "Confirm", layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST), textSize: 30, textColor: Color.WHITE, backgroundColor: colors[3], textAlignment: Gravity.Center, height: 50, }), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).confirm({ msg: 'This is Confirm.', title: 'Confirm title', okLabel: "OkLabel", cancelLabel: 'CancelLabel', }).then( () => { modal(context).toast('Clicked OK.') }, () => { modal(context).toast('Clicked Cancel.') }) } } as IText), text({ text: "Prompt", layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST), textSize: 30, textColor: Color.WHITE, backgroundColor: colors[4], textAlignment: Gravity.Center, height: 50, }), label('Click me').apply({ width: 200, height: 50, backgroundColor: colors[0], textSize: 30, textColor: Color.WHITE, layoutConfig: layoutConfig().just(), onClick: () => { modal(context).prompt({ msg: 'This is Prompt.', title: 'Prompt title', okLabel: "OkLabel", cancelLabel: 'CancelLabel', }).then( e => { modal(context).toast(`Clicked OK.Input:${e}`) }, e => { modal(context).toast(`Clicked Cancel.Input:${e}`) }) } } as IText), ]).apply({ layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT), gravity: Gravity.Center, space: 10, } as IVLayout)).apply({ layoutConfig: layoutConfig().most(), }).in(rootView) } }