feat: save latest summary in session storage to prevent loss of input

This commit is contained in:
2025-02-22 15:32:10 +01:00
parent 7f6dd60b89
commit 69df95dabc
4 changed files with 89 additions and 20 deletions

View File

@ -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>
}
}

View File

@ -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
}