This repository has been archived by the owner on Jan 5, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbreadcrumb.templ
82 lines (73 loc) · 1.66 KB
/
breadcrumb.templ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package franken
type BreadcrumbData struct {
Items []breadcrumbSingleData
Label string
Class []string
}
type breadcrumbSingleData struct {
Text templ.Component
Link string
Disabled bool
Current bool
Class []string
}
templ Breadcrumb(data BreadcrumbData) {
<nav aria-label={ data.Label } class={ data.Class }>
<ul class="uk-breadcrumb">
for _, item := range(data.Items) {
<li
class={ templ.Classes(map[string]bool{
"uk-disabled": item.Disabled,
}, item.Class) }
>
if item.Current {
<span aria-current="page">
@item.Text
</span>
} else {
<a href={ templ.URL(item.Link) }>
@item.Text
</a>
}
</li>
}
</ul>
</nav>
}
func BreadcrumbBuilder() *BreadcrumbData {
return &BreadcrumbData{
Label: "Breadcrumb",
Items: make([]breadcrumbSingleData, 0),
}
}
func (b *BreadcrumbData) AddLabel(label string) *BreadcrumbData {
b.Label = label
return b
}
func (b *BreadcrumbData) AddItem(text templ.Component, link string, disabled, current bool, class ...string) *BreadcrumbData {
b.Items = append(b.Items, breadcrumbSingleData{
Text: text,
Link: link,
Disabled: disabled,
Current: current,
Class: class,
})
return b
}
func (b *BreadcrumbData) AddItemText(text string, link string, disabled, current bool, class ...string) *BreadcrumbData {
b.Items = append(b.Items, breadcrumbSingleData{
Text: templ.Raw(text),
Link: link,
Disabled: disabled,
Current: current,
Class: class,
})
return b
}
func (b *BreadcrumbData) AddClass(class ...string) *BreadcrumbData {
b.Class = class
return b
}
templ (b BreadcrumbData) Finish() {
@Breadcrumb(b)
}