5
5
6
6
" github.com/ItsNotGoodName/smtpbridge/web/routes"
7
7
" github.com/ItsNotGoodName/smtpbridge/web/helpers"
8
+ " github.com/ItsNotGoodName/smtpbridge/web/icons"
8
9
)
9
10
10
11
@@ -27,16 +28,22 @@ type EndpointFormData struct {
27
28
BodyTemplateError string
28
29
Kind string
29
30
KindError string
30
- EndpointFormConfigProps EndpointFormConfigProps
31
+ EndpointFormConfigProps EndpointFormConfigProps
31
32
}
32
33
33
34
templ EndpointForm (props EndpointFormProps ) {
34
35
<form hx-post ={ props.Route ().URLString () } class =" flex flex-col gap-4" data-loading-states >
36
+ if props.Data .Internal {
37
+ <div class =" alert alert-warning" >
38
+ @ icons.Alert (" h-6 w-6" )
39
+ <span >Endpoint cannot be edited because it is internal.</span >
40
+ </div >
41
+ }
35
42
<div class =" form-control" >
36
43
<label class =" label" >
37
44
<span class =" label-text" >Name</span >
38
45
</label >
39
- <input name =" Name" type =" text" placeholder =" Name" class =" input input-bordered" value ={ props.Data .Name } />
46
+ <input disabled ?={ props. Data . Internal } name =" Name" type =" text" placeholder =" Name" class =" input input-bordered" value ={ props.Data .Name } />
40
47
if props.Data .NameError != " " {
41
48
<label class =" label" >
42
49
<span class =" label-text-alt text-error" >{ props.Data .NameError }</span >
@@ -45,17 +52,21 @@ templ EndpointForm(props EndpointFormProps) {
45
52
</div >
46
53
<div class =" flex items-center justify-between" >
47
54
<div >Text Disable</div >
48
- <div ><input name =" TextDisable" type =" checkbox" class =" toggle" checked ?={ props.Data .TextDisable } disabled ?={ props.Data .Internal } /></div >
55
+ <div >
56
+ <input disabled ?={ props.Data .Internal } name =" TextDisable" type =" checkbox" class =" toggle" checked ?={ props.Data .TextDisable } disabled ?={ props.Data .Internal } />
57
+ </div >
49
58
</div >
50
59
<div class =" flex items-center justify-between" >
51
60
<div >Attachment Disable</div >
52
- <div ><input name =" AttachmentDisable" type =" checkbox" class =" toggle" checked ?={ props.Data .AttachmentDisable } disabled ?={ props.Data .Internal } /></div >
61
+ <div >
62
+ <input disabled ?={ props.Data .Internal } name =" AttachmentDisable" type =" checkbox" class =" toggle" checked ?={ props.Data .AttachmentDisable } disabled ?={ props.Data .Internal } />
63
+ </div >
53
64
</div >
54
65
<div class =" form-control" >
55
66
<label class =" label" >
56
67
<span class =" label-text" >Title Template</span >
57
68
</label >
58
- <textarea name =" TitleTemplate" placeholder =" Title Template" class =" textarea textarea-bordered h-24" >
69
+ <textarea disabled ?={ props. Data . Internal } name =" TitleTemplate" placeholder =" Title Template" class =" textarea textarea-bordered h-24" >
59
70
{ props.Data .TitleTemplate }
60
71
</textarea >
61
72
if props.Data .TitleTemplateError != " " {
@@ -68,7 +79,7 @@ templ EndpointForm(props EndpointFormProps) {
68
79
<label class =" label" >
69
80
<span class =" label-text" >Body Template</span >
70
81
</label >
71
- <textarea name =" BodyTemplate" placeholder =" Body Template" class =" textarea textarea-bordered h-24" >
82
+ <textarea disabled ?={ props. Data . Internal } name =" BodyTemplate" placeholder =" Body Template" class =" textarea textarea-bordered h-24" >
72
83
{ props.Data .BodyTemplate }
73
84
</textarea >
74
85
if props.Data .BodyTemplateError != " " {
@@ -84,7 +95,7 @@ templ EndpointForm(props EndpointFormProps) {
84
95
<span data-loading-class =" loading loading-spinner loading-xs" data-loading-path ={ routes.EndpointFormConfigComponent ().URLString () }></span >
85
96
</span >
86
97
</label >
87
- <select name =" Kind" class =" select select-bordered" hx-get ={ routes.EndpointFormConfigComponent ().URLString () } hx-target =" #endpoint-config" >
98
+ <select disabled ?={ props. Data . Internal } name =" Kind" class =" select select-bordered" hx-get ={ routes.EndpointFormConfigComponent ().URLString () } hx-target =" #endpoint-config" >
88
99
<option disabled selected ?={ props.Data .Kind == " " }>Select Kind</option >
89
100
for _ , s := range helpers.EndpointSchema () {
90
101
<option value ={ s.Kind } selected ?={ props.Data .Kind == s.Kind }>{ s.Name }</option >
@@ -97,7 +108,7 @@ templ EndpointForm(props EndpointFormProps) {
97
108
}
98
109
</div >
99
110
@ EndpointFormConfig (props.Data .EndpointFormConfigProps )
100
- <button type =" submit" class =" btn btn-primary btn-block" data-loading-disable >
111
+ <button disabled ?={ props. Data . Internal } type =" submit" class =" btn btn-primary btn-block" data-loading-disable >
101
112
<span data-loading-class =" loading loading-spinner loading-xs" >
102
113
if props.Create {
103
114
Create Endpoint
@@ -113,6 +124,7 @@ templ EndpointForm(props EndpointFormProps) {
113
124
}
114
125
115
126
type EndpointFormConfigProps struct {
127
+ Internal bool
116
128
Fields []EndpointFormConfigField
117
129
Error string
118
130
}
@@ -127,29 +139,31 @@ type EndpointFormConfigField struct {
127
139
128
140
templ EndpointFormConfig (props EndpointFormConfigProps ) {
129
141
<fieldset id =" endpoint-config" >
130
- <legend >Config</legend >
131
- if props.Error != " " {
132
- <p class =" text-error" >{props.Error}</p >
133
- }
134
- for i , f := range props.Fields {
135
- <div class =" form-control" >
136
- <label class =" label" >
137
- <span class =" label-text" >{ f.Name }</span >
138
- </label >
139
- <input type =" hidden" name ={ " Config." + strconv.Itoa (i) + " .Key" } value ={ f.Key } />
140
- if f.Multiline {
141
- <textarea name ={ " Config." + strconv.Itoa (i) + " .Value" } placeholder ={ f.Name } class =" textarea textarea-bordered h-24" >
142
- { f.Value }
143
- </textarea >
144
- } else {
145
- <input name ={ " Config." + strconv.Itoa (i) + " .Value" } placeholder ={ f.Name } type =" text" class =" input input-bordered" value ={ f.Value } />
146
- }
147
- if f.Description != " " {
142
+ if len (props.Fields ) > 0 {
143
+ <legend >Config</legend >
144
+ if props.Error != " " {
145
+ <p class =" text-error" >{props.Error}</p >
146
+ }
147
+ for i , f := range props.Fields {
148
+ <div class =" form-control" >
148
149
<label class =" label" >
149
- <span class =" label-text-alt " >{ f.Description }</span >
150
+ <span class =" label-text" >{ f.Name }</span >
150
151
</label >
151
- }
152
- </div >
152
+ <input type =" hidden" name ={ " Config." + strconv.Itoa (i) + " .Key" } value ={ f.Key } />
153
+ if f.Multiline {
154
+ <textarea disabled ?={ props.Internal } name ={ " Config." + strconv.Itoa (i) + " .Value" } placeholder ={ f.Name } class =" textarea textarea-bordered h-24" >
155
+ { f.Value }
156
+ </textarea >
157
+ } else {
158
+ <input disabled ?={ props.Internal } name ={ " Config." + strconv.Itoa (i) + " .Value" } placeholder ={ f.Name } type =" text" class =" input input-bordered" value ={ f.Value } />
159
+ }
160
+ if f.Description != " " {
161
+ <label class =" label" >
162
+ <span class =" label-text-alt" >{ f.Description }</span >
163
+ </label >
164
+ }
165
+ </div >
166
+ }
153
167
}
154
168
</fieldset >
155
169
}
0 commit comments