feat: save latest summary in session storage to prevent loss of input
This commit is contained in:
@ -80,7 +80,12 @@ templ IssuePage(vmodel IssuePageVModel) {
|
||||
"hx-push-url", "true",
|
||||
),
|
||||
)
|
||||
@common.FormTextarea(vmodel.SummaryForm, "issue-summary", "summary", "Summary")
|
||||
@common.FormTextarea(
|
||||
vmodel.SummaryForm, "issue-summary", "summary", "Summary",
|
||||
common.WithTextareaAttrs(
|
||||
"hx-on:change", "onSummaryChange(event)",
|
||||
),
|
||||
)
|
||||
</form>
|
||||
</div>
|
||||
<div class="column">
|
||||
@ -104,6 +109,23 @@ templ IssuePage(vmodel IssuePageVModel) {
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function onSummaryChange(evt) {
|
||||
const summary = evt.currentTarget.value;
|
||||
const projectId = document.getElementById("issue-project").value;
|
||||
sessionStorage.setItem(`summary-${projectId}`, summary);
|
||||
}
|
||||
htmx.onLoad(function(){
|
||||
const summaryTextarea = document.getElementById("issue-summary");
|
||||
const summary = summaryTextarea.value;
|
||||
if (summary !== "") return;
|
||||
const projectId = document.getElementById("issue-project").value;
|
||||
if (!projectId) return;
|
||||
const savedSummary = sessionStorage.getItem(`summary-${projectId}`);
|
||||
if (!savedSummary) return;
|
||||
summaryTextarea.value = savedSummary;
|
||||
})
|
||||
</script>
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,7 +120,12 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = common.FormTextarea(vmodel.SummaryForm, "issue-summary", "summary", "Summary").Render(ctx, templ_7745c5c3_Buffer)
|
||||
templ_7745c5c3_Err = common.FormTextarea(
|
||||
vmodel.SummaryForm, "issue-summary", "summary", "Summary",
|
||||
common.WithTextareaAttrs(
|
||||
"hx-on:change", "onSummaryChange(event)",
|
||||
),
|
||||
).Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
@ -132,7 +137,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></section></div>")
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></section></div><script type=\"text/javascript\">\n\t\tfunction onSummaryChange(evt) {\n\t\t\tconst summary = evt.currentTarget.value;\n\t\t\tconst projectId = document.getElementById(\"issue-project\").value;\n\t\t\tsessionStorage.setItem(`summary-${projectId}`, summary);\n\t\t}\n\t\thtmx.onLoad(function(){\n\t\t\tconst summaryTextarea = document.getElementById(\"issue-summary\");\n const summary = summaryTextarea.value;\n\t\t\tif (summary !== \"\") return;\n\t\t\tconst projectId = document.getElementById(\"issue-project\").value;\n\t\t\tif (!projectId) return;\n\t\t\tconst savedSummary = sessionStorage.getItem(`summary-${projectId}`);\n\t\t\tif (!savedSummary) return;\n\t\t\tsummaryTextarea.value = savedSummary;\n })\n\t\t</script>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
Reference in New Issue
Block a user