This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / appview / pages / templates / repo / issues / fragments / newComment.html
5.0 kB 119 lines
1{{ define "repo/issues/fragments/newComment" }} 2 {{ if .LoggedInUser }} 3 <form 4 hx-post="/comment" 5 hx-swap="none" 6 hx-trigger="submit, click from:#close-button, keydown[commentButtonEnabled() && (ctrlKey || metaKey) && key=='Enter'] from:(find textarea)" 7 hx-disabled-elt="find button[type='submit']" 8 hx-on::before-request="document.getElementById('comment-error').innerHTML = ''" 9 hx-swap="none" 10 class="group/form " 11 > 12 <input name="subject-uri" type="hidden" value="{{ .Issue.AtUri }}"> 13 <div class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-4 px-4 relative w-full border border-gray-200 dark:border-gray-700" hx-on:keyup="updateCommentForm()"> 14 <div class="text-sm pb-2 text-gray-500 dark:text-gray-400"> 15 {{ template "user/fragments/picHandleLink" .LoggedInUser.Did }} 16 </div> 17 {{ template "fragments/markdownEditor" 18 (dict "Name" "body" 19 "BlobName" "blob" 20 "Required" true 21 "Placeholder" "Add to the discussion. Markdown is supported.") }} 22 </div> 23 24 <div class="flex gap-2 mt-2 items-center"> 25 <button 26 id="comment-button" 27 type="submit" 28 class="btn-create p-2 flex items-center gap-2 no-underline hover:no-underline" 29 disabled 30 > 31 {{ i "message-square-plus" "w-4 h-4 inline group-[.htmx-request]/form:hidden" }} 32 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]/form:inline" }} 33 Comment 34 </button> 35 36 {{ $isIssueAuthor := and .LoggedInUser (eq .LoggedInUser.Did .Issue.Did) }} 37 {{ $isRepoCollaborator := .RepoInfo.Roles.IsCollaborator }} 38 {{ $isRepoOwner := .RepoInfo.Roles.IsOwner }} 39 {{ if and (or $isIssueAuthor $isRepoCollaborator $isRepoOwner) .Issue.Open }} 40 <button 41 id="close-button" 42 type="button" 43 class="btn flex items-center gap-2 group/close" 44 hx-trigger="click" 45 > 46 {{ i "ban" "w-4 h-4 inline group-[.htmx-request]/close:hidden" }} 47 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]/close:inline" }} 48 <span id="close-button-text">Close</span> 49 </button> 50 <div 51 id="close-issue" 52 hx-disabled-elt="#close-issue" 53 hx-post="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/close" 54 hx-trigger="click from:#close-button" 55 hx-target="#issue-action" 56 hx-swap="none" 57 hx-indicator="#close-button" 58 hx-on::before-request="document.getElementById('issue-action').innerHTML = ''" 59 > 60 </div> 61 {{ else if and (or $isIssueAuthor $isRepoCollaborator $isRepoOwner) (not .Issue.Open) }} 62 <button 63 type="button" 64 class="btn flex items-center gap-2 group" 65 hx-post="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/reopen" 66 hx-swap="none" 67 > 68 {{ i "refresh-ccw-dot" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 69 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 70 Reopen 71 </button> 72 {{ end }} 73 74 <div id="comment-error" class="error"></div> 75 <div id="issue-action" class="error"></div> 76 77 <script> 78 function commentButtonEnabled() { 79 const commentButton = document.getElementById('comment-button'); 80 return !commentButton.hasAttribute('disabled'); 81 } 82 83 function updateCommentForm() { 84 const textarea = document.querySelector('form[hx-post="/comment"] textarea'); 85 const commentButton = document.getElementById('comment-button'); 86 const closeButtonText = document.getElementById('close-button-text'); 87 88 if (textarea.value.trim() !== '') { 89 commentButton.removeAttribute('disabled'); 90 } else { 91 commentButton.setAttribute('disabled', ''); 92 } 93 94 if (closeButtonText) { 95 if (textarea.value.trim() !== '') { 96 closeButtonText.innerHTML = `Close with comment`; 97 } else { 98 closeButtonText.innerHTML = `Close`; 99 } 100 } 101 } 102 103 document.addEventListener('DOMContentLoaded', function() { 104 updateCommentForm(); 105 }); 106 </script> 107 </div> 108 </form> 109 {{ else }} 110 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-6 relative flex gap-2 items-center"> 111 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 112 Sign up 113 </a> 114 <span class="text-gray-500 dark:text-gray-400">or</span> 115 <a href="/login" class="underline">Login</a> 116 to add to the discussion 117 </div> 118 {{ end }} 119{{ end }}