1
0
Fork 0
forked from goffee/core

Compare commits

..

4 commits

Author SHA1 Message Date
bf84e14bb1 component list 2024-10-15 16:09:31 -05:00
458ad520ca Input required, table (class, href, badge) 2024-10-15 16:09:17 -05:00
f398ebb02d dropdown, href is content 2024-10-15 16:07:18 -05:00
a904773bab Badge 2024-10-15 16:06:49 -05:00
15 changed files with 98 additions and 31 deletions

View file

@ -0,0 +1,7 @@
package components
type ContentBadge struct {
Text string
TypeClass string // type primary, secondary, success, danger, warning, info, light, dark, (default secondary)
IsOutline bool
}

View file

@ -0,0 +1,7 @@
{{define "content_badge"}}
<span class="badge {{if eq .IsOutline true}}
border border-{{.TypeClass}} bg-{{.TypeClass}}-subtle text-{{.TypeClass}}-emphasis
{{else}}
text-bg-{{if .TypeClass}}{{.TypeClass}}{{else}}secondary{{end}}
{{end}} rounded-pill ">{{.Text}}</span>
{{end}}

View file

@ -0,0 +1,15 @@
package components
type ContentDropdown struct {
Label string
TypeClass string // type primary, secondary, success, danger, warning, info, light, dark, link, outline-primary
IsDisabled bool
Items []ContentDropdownItem
}
type ContentDropdownItem struct {
Text string
Link string
IsDisabled bool
IsActive bool
}

View file

@ -1,15 +1,15 @@
{{define "form_dropdown_item"}} {{define "content_dropdown_item"}}
<li><a class="dropdown-item {{if eq .IsActive true}}active{{end}} {{if eq .IsDisabled true}}disabled{{end}}" href="{{.Link}}">{{.Text}}</a></li> <li><a class="dropdown-item {{if eq .IsActive true}}active{{end}} {{if eq .IsDisabled true}}disabled{{end}}" href="{{.Link}}">{{.Text}}</a></li>
{{end}} {{end}}
{{define "form_dropdown"}} {{define "content_dropdown"}}
<div class="dropdown"> <div class="dropdown">
<button class="btn btn-{{.TypeClass}} dropdown-toggle {{if eq .IsDisabled true}}disabled{{end}}" type="button" data-bs-toggle="dropdown" aria-expanded="false"> <button class="btn btn-{{.TypeClass}} dropdown-toggle {{if eq .IsDisabled true}}disabled{{end}}" type="button" data-bs-toggle="dropdown" aria-expanded="false">
{{.Label}} {{.Label}}
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
{{ range .Items}} {{ range .Items}}
{{template "form_dropdown_item" .}} {{template "content_dropdown_item" .}}
{{end}} {{end}}
</ul> </ul>
</div> </div>

View file

@ -1,6 +1,6 @@
package components package components
type FormHref struct { type ContentHref struct {
Text string Text string
Link string Link string
Icon string Icon string

View file

@ -1,4 +1,4 @@
{{define "form_href"}} {{define "content_href"}}
<a class="{{if eq .IsButton true}} btn btn-{{.TypeClass}}{{end}} {{if eq .IsDisabled true}}disabled{{end}}" <a class="{{if eq .IsButton true}} btn btn-{{.TypeClass}}{{end}} {{if eq .IsDisabled true}}disabled{{end}}"
href="{{.Link}}" {{if eq .IsButton true}}role="button"{{end}} {{if eq .IsDisabled true}}aria-disabled="true"{{end}}> href="{{.Link}}" {{if eq .IsButton true}}role="button"{{end}} {{if eq .IsDisabled true}}aria-disabled="true"{{end}}>
{{.Text}} {{.Text}}

View file

@ -0,0 +1,19 @@
package components
type ContentList struct {
Items []ContentListItem
}
type ContentListItem struct {
Text string
Description string
EndElement string
//Link string
TypeClass string // primary, secondary, success, danger, warning, info, light, dark
IsDisabled bool
//IsActive bool
}
//link
//border
// badge

View file

@ -0,0 +1,14 @@
{{define "content_list"}}
<ul class="list-group">
{{ range .Items}}
<li class="list-group-item text-wrap {{if eq .IsDisabled true}}disabled{{end}} {{if .TypeClass}}list-group-item-{{.TypeClass}}{{end}}"
{{if eq .IsDisabled true}}aria-disabled="true"{{end}}
><div class="d-flex justify-content-between lh-sm"><p class="mb-1">{{.Text}}</p><span class="text-body-secondary ms-5">{{.EndElement}}</span></div>
<small>{{.Description}}</small>
</li>
{{end}}
</ul>
{{end}}

View file

@ -1,17 +1,20 @@
package components package components
type ContentTable struct { type ContentTable struct {
ID string ID string
AllTH []ContentTableTH TableClass string // table-primary, table-secondary,.. table-striped table-bordered
AllTD [][]ContentTableTD HeadClass string // table-dark table-light
AllTH []ContentTableTH
AllTD [][]ContentTableTD
} }
type ContentTableTH struct { type ContentTableTH struct {
ID string ID string
Value string ValueType string // -> default string, href, badge
Value string
} }
type ContentTableTD struct { type ContentTableTD struct {
ID string ID string
Value string Value interface{} // string or component struct according ValueType
} }

View file

@ -1,12 +1,25 @@
{{define "content_table"}} {{define "content_table"}}
<table class="table table-hover" {{ if .ID }}id="{{.ID}}"{{end}}> <table class="table table-hover {{.TableClass}}" {{ if .ID }}id="{{.ID}}"{{end}}>
<thead> <thead class="{{.HeadClass}}">
<tr> <tr>
{{range $index, $col := .AllTH}}<th {{ if .ID }}id="{{.ID}}"{{end}} scope="col">{{ $col.Value }}</th>{{end}} {{range $index, $col := .AllTH}}<th {{ if .ID }}id="{{.ID}}"{{end}} scope="col">{{ $col.Value }}</th>{{end}}
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .AllTD}}<tr scope="row">{{range .}}<td {{ if .ID }}id="{{.ID}}"{{end}}>{{ .Value }}</td>{{end}}</tr>{{end}} {{range .AllTD}}<tr scope="row">
{{range $index, $item := .}}<td {{ if $item.ID }}id="{{$item.ID}}"{{end}}>
{{ with $x := index $.AllTH $index }}
{{ if eq $x.ValueType "href"}}
{{template "content_href" $item.Value}}
{{ else if eq $x.ValueType "badge"}}
{{template "content_badge" $item.Value}}
{{ else }}
{{ $item.Value }}
{{end}}
{{end}}
</td>
{{end}}</tr>
{{end}}
</tbody> </tbody>
</table> </table>
{{end}} {{end}}

View file

@ -1,15 +0,0 @@
package components
type FormDropdown struct {
Label string
TypeClass string
IsDisabled bool
Items []FormDropdownItem
}
type FormDropdownItem struct {
Text string
Link string
IsDisabled bool
IsActive bool
}

View file

@ -9,4 +9,5 @@ type FormInput struct {
Hint string Hint string
Error string Error string
IsDisabled bool IsDisabled bool
IsRequired bool
} }

View file

@ -5,6 +5,9 @@
{{if eq .IsDisabled true}} {{if eq .IsDisabled true}}
disabled disabled
{{end}} {{end}}
{{if eq .IsRequired true}}
required
{{end}}
{{if ne .Value ""}} {{if ne .Value ""}}
value="{{.Value}}" value="{{.Value}}"
{{end}} {{end}}

View file

@ -1,7 +1,7 @@
package components package components
type PageNav struct { type PageNav struct {
NavClass string // nav-pills NavClass string // nav-pills, nav-underline
NavItems []PageNavItem NavItems []PageNavItem
IsVertical bool IsVertical bool
IsTab bool IsTab bool

View file

@ -8,7 +8,7 @@
class="nav-link dropdown-toggle {{if eq .IsActive true}}active{{end}} {{if eq .IsDisabled true}}disabled{{end}}">{{$item.Text}}</a> class="nav-link dropdown-toggle {{if eq .IsActive true}}active{{end}} {{if eq .IsDisabled true}}disabled{{end}}">{{$item.Text}}</a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
{{ range $item.ChildItems}} {{ range $item.ChildItems}}
{{template "form_dropdown_item" .}} {{template "content_dropdown_item" .}}
{{end}} {{end}}
</ul> </ul>
</li> </li>