diff --git a/_examples/multiple-dropdowns/home.templ b/_examples/multiple-dropdowns/home.templ new file mode 100644 index 0000000..2924c2f --- /dev/null +++ b/_examples/multiple-dropdowns/home.templ @@ -0,0 +1,119 @@ +package main + +import "github.com/indaco/gropdown" + +const ( + profileIcon = ` + + +` + settingsIcon = ` + + +` + + globeIcon = ` + +` + + clickIcon = ` + + +` +) + +templ HomePage() { + + + + + + gropdown - multiple dropdowns + + @gropdown.GropdownCSS() + + + + +
+ + @gropdown.Root("menu-1") { + @gropdown.Button("Menu") + @gropdown.Content() { + @gropdown.Item("Profile", + gropdown.ItemOptions{ + Href: "/profile", + Icon: profileIcon, + }, + ) + @gropdown.Item("Settings", + gropdown.ItemOptions{ + Href: "/settings", + Icon: settingsIcon, + }, + ) + @gropdown.Divider() + @gropdown.Item("GitHub", + gropdown.ItemOptions{ + Href: "https://github.com", + External: true, + Icon: globeIcon, + }, + ) + @gropdown.Divider() + @gropdown.Item("Button", + gropdown.ItemOptions{ + Icon: clickIcon, + Attrs: templ.Attributes{"onclick": "alert('Hello gropdown');"}, + }, + ) + } + } +
+
+ @gropdown.Root("menu-2") { + @gropdown.Button("Menu") + @gropdown.Content() { + @gropdown.Item("Profile", + gropdown.ItemOptions{ + Href: "/profile", + Icon: profileIcon, + }, + ) + @gropdown.Item("Settings", + gropdown.ItemOptions{ + Href: "/settings", + Icon: settingsIcon, + }, + ) + @gropdown.Divider() + @gropdown.Item("GitHub", + gropdown.ItemOptions{ + Href: "https://github.com", + External: true, + Icon: globeIcon, + }, + ) + @gropdown.Divider() + @gropdown.Item("Button", + gropdown.ItemOptions{ + Icon: clickIcon, + Attrs: templ.Attributes{"onclick": "alert('Hello gropdown');"}, + }, + ) + } + } +
+ + @gropdown.GropdownJS(gropdown.GetConfigMapFromContext(ctx)) + + +} diff --git a/_examples/multiple-dropdowns/main.go b/_examples/multiple-dropdowns/main.go new file mode 100644 index 0000000..01504f3 --- /dev/null +++ b/_examples/multiple-dropdowns/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "context" + "log" + "net/http" + "os" + + "github.com/indaco/gropdown" +) + +func HandleHome(w http.ResponseWriter, r *http.Request) { + configOne := gropdown.NewConfigBuilder().WithPosition(gropdown.Top).Build() + configTwo := gropdown.NewConfigBuilder().WithCloseOnOutsideClick(false).Build() + configMap := gropdown.NewConfigMap() + configMap.Add("menu-1", configOne) + configMap.Add("menu-2", configTwo) + + ctx := context.WithValue(r.Context(), gropdown.ConfigContextKey, configMap) + err := HomePage().Render(ctx, w) + if err != nil { + return + } +} + +func main() { + mux := http.NewServeMux() + mux.HandleFunc("GET /", HandleHome) + + port := ":3300" + log.Printf("Listening on %s", port) + if err := http.ListenAndServe(port, mux); err != nil { + log.Printf("failed to start server: %v", err) + os.Exit(1) + } +}