func (v *AddPopupView) modal(markup ...vecty.MarkupOrComponentOrHTML) *vecty.HTML { return elem.Div( prop.ID("add-modal"), prop.Class("modal"), vecty.Data("backdrop", "static"), vecty.Data("keyboard", "false"), elem.Div( prop.Class("modal-dialog"), elem.Div( prop.Class("modal-content"), elem.Div( prop.Class("modal-header"), elem.Button( prop.Type(prop.TypeButton), prop.Class("close"), elem.Span( vecty.Text("×"), ), event.Click(func(ev *vecty.Event) { v.App.Dispatch(&actions.CloseAddPopup{}) }).PreventDefault(), ), elem.Header4( prop.Class("modal-title"), vecty.Text("Add item"), ), ), vecty.List(markup), elem.Div( prop.Class("modal-footer"), elem.Button( prop.Type(prop.TypeButton), prop.Class("btn btn-default"), elem.Span( vecty.Text("Close"), ), event.Click(func(ev *vecty.Event) { v.App.Dispatch(&actions.CloseAddPopup{}) }).PreventDefault(), ), elem.Button( prop.Type(prop.TypeButton), prop.Class("btn btn-primary"), elem.Span( vecty.Text("Save"), ), event.Click(func(ev *vecty.Event) { v.save() }).PreventDefault(), ), ), ), ), ) }
func (v *Header) Render() *vecty.HTML { return elem.Navigation( prop.Class("navbar navbar-inverse navbar-fixed-top"), elem.Div( prop.Class("container-fluid"), elem.Div( prop.Class("navbar-header"), elem.Button( prop.Type("button"), prop.Class("navbar-toggle collapsed"), vecty.Data("toggle", "collapse"), vecty.Data("target", "#navbar"), elem.Span( prop.Class("sr-only"), vecty.Text("Toggle navigation"), ), elem.Span( prop.Class("icon-bar"), ), elem.Span( prop.Class("icon-bar"), ), elem.Span( prop.Class("icon-bar"), ), ), /* elem.Anchor( prop.Class("navbar-brand"), prop.Href("#"), vecty.Text("Ke"), ), */ ), elem.Div( prop.ID("navbar"), prop.Class("navbar-collapse collapse"), elem.UnorderedList( prop.Class("nav navbar-nav"), NewViewMenuView(v.Ctx), NewEditMenuView(v.Ctx), NewSaveView(v.Ctx), ), elem.Form( prop.Class("navbar-form navbar-right"), elem.Input( prop.Type("text"), prop.Class("form-control"), prop.Placeholder("Search..."), ), ), ), ), ) }
func (v *BoolEditorView) Render() *vecty.HTML { v.input = elem.Input( prop.Type(prop.TypeCheckbox), prop.Checked(v.model.Node.ValueBool), event.Change(func(e *vecty.Event) { v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: e.Target.Get("checked").Bool(), Immediate: true, }) }), ) return elem.Div( prop.Class("checkbox"), elem.Label( v.input, vecty.Text(v.model.Node.Label(v.Ctx)), ), ) }
func (v *StringEditorView) Render() *vecty.HTML { contents := vecty.List{ prop.Value(v.model.Node.ValueString), prop.Class("form-control"), event.KeyUp(func(e *vecty.Event) { getVal := func() interface{} { return e.Target.Get("value").String() } val := getVal() changed := func() bool { return val != getVal() } go func() { <-time.After(common.EditorKeyboardDebounceShort) if changed() { return } v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: val, Changed: changed, }) }() }), } if sr, ok := v.model.Node.Rule.Interface.(*system.StringRule); ok && sr.Long { v.input = elem.TextArea( contents, ) } else { v.input = elem.Input( prop.Type(prop.TypeText), contents, ) } return elem.Div(v.input) }
func (v *NumberEditorView) Render() *vecty.HTML { v.input = elem.Input( prop.Type(prop.TypeNumber), prop.Value(fmt.Sprintf("%v", v.model.Node.ValueNumber)), prop.Class("form-control"), event.KeyUp(func(e *vecty.Event) { getVal := func() interface{} { val, err := strconv.ParseFloat(e.Target.Get("value").String(), 64) if err != nil { // if there's an error converting to a float, ignore it return nil } return val } val := getVal() changed := func() bool { return val != getVal() } go func() { <-time.After(common.EditorKeyboardDebounceShort) if changed() { return } v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: val, Changed: changed, }) }() }), ) return elem.Div(v.input) }