forked from gitea/gitea
		
	Improve PR Review Box UI (#22986)
This PR follows: * #22950 ### Before The Review Box has many problems: * It doesn't work for small screens. * It has an anonying animation which makes the UI laggy. * It uses "custom dropdown menu" which is very difficult to fine tune. * `$().toggle('visible')` is not a correct call * jQuery just accepts any invalid `duration` argument: `$().toggle('anyting')` * The button is not a button. <details>  </details> ### After These problems are fixed, and eliminate many `!important` games. <details>    </details> And most dropdown icons still looks good: <details>   </details> Co-authored-by: delvh <leon@kske.dev>
This commit is contained in:
		
							parent
							
								
									9ebf6424ee
								
							
						
					
					
						commit
						1fcf96ad01
					
				| @ -24,10 +24,10 @@ | ||||
| 					{{svg "octicon-diff" 16 "gt-mr-2"}}{{.locale.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}} | ||||
| 				</div> | ||||
| 			</div> | ||||
| 			<div class="diff-detail-actions gt-df gt-ac"> | ||||
| 			<div class="diff-detail-actions gt-df gt-ac gt-w-100"> | ||||
| 				{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}} | ||||
| 					<progress id="viewed-files-summary" class="gt-mr-2" value="{{.Diff.NumViewedFiles}}" max="{{.Diff.NumFiles}}"></progress> | ||||
| 					<label for="viewed-files-summary" id="viewed-files-summary-label" class="gt-mr-3" data-text-changed-template="{{.locale.Tr "repo.pulls.viewed_files_label"}}"> | ||||
| 					<label for="viewed-files-summary" id="viewed-files-summary-label" class="gt-mr-3 gt-f1" data-text-changed-template="{{.locale.Tr "repo.pulls.viewed_files_label"}}"> | ||||
| 						{{.locale.Tr "repo.pulls.viewed_files_label" .Diff.NumViewedFiles .Diff.NumFiles}} | ||||
| 					</label> | ||||
| 				{{end}} | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| <div class="ui top right pointing dropdown custom" id="review-box"> | ||||
| 	<div class="ui tiny green button btn-review gt-ml-2 gt-mr-0"> | ||||
| <div id="review-box"> | ||||
| 	<button class="ui tiny green button gt-ml-2 gt-mr-0 js-btn-review"> | ||||
| 		{{.locale.Tr "repo.diff.review"}} | ||||
| 		<span class="ui small label review-comments-counter" data-pending-comment-number="{{.PendingCodeCommentNumber}}">{{.PendingCodeCommentNumber}}</span> | ||||
| 		{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||
| 	</div> | ||||
| 	<div class="menu review-box"> | ||||
| 		<div class="ui clearing segment"> | ||||
| 	</button> | ||||
| 	<div class="review-box-panel gt-hidden"> | ||||
| 		<div class="ui segment"> | ||||
| 			<form class="ui form" action="{{.Link}}/reviews/submit" method="post"> | ||||
| 			{{.CsrfTokenHtml}} | ||||
| 				<input type="hidden" name="commit_id" value="{{.AfterCommitID}}"/> | ||||
|  | ||||
| @ -77,7 +77,7 @@ | ||||
| 					<a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button">{{.locale.Tr "repo.find_file.go_to_file"}}</a> | ||||
| 				{{end}} | ||||
| 				{{if or .CanAddFile .CanUploadFile}} | ||||
| 					<button class="ui basic small compact dropdown jump icon button gt-mr-2"{{if not .Repository.CanEnableEditor}} disabled{{end}}> | ||||
| 					<button class="ui basic compact dropdown jump icon button gt-mr-2"{{if not .Repository.CanEnableEditor}} disabled{{end}}> | ||||
| 						<span class="text">{{.locale.Tr "repo.editor.add_file"}}</span> | ||||
| 						<div class="menu"> | ||||
| 							{{if .CanAddFile}} | ||||
|  | ||||
| @ -60,6 +60,7 @@ export function initGlobalEnterQuickSubmit() { | ||||
| export function initGlobalButtonClickOnEnter() { | ||||
|   $(document).on('keypress', '.ui.button', (e) => { | ||||
|     if (e.keyCode === 13 || e.keyCode === 32) { // enter key or space bar
 | ||||
|       if (e.target.nodeName === 'BUTTON') return; // button already handles space&enter correctly
 | ||||
|       $(e.target).trigger('click'); | ||||
|       e.preventDefault(); | ||||
|     } | ||||
|  | ||||
| @ -470,7 +470,7 @@ export function initRepoPullRequestReview() { | ||||
|     assignMenuAttributes(form.find('.menu')); | ||||
|   }); | ||||
| 
 | ||||
|   const $reviewBox = $('.review-box'); | ||||
|   const $reviewBox = $('.review-box-panel'); | ||||
|   if ($reviewBox.length === 1) { | ||||
|     (async () => { | ||||
|       // the editor's height is too large in some cases, and the panel cannot be scrolled with page now because there is `.repository .diff-detail-box.sticky { position: sticky; }`
 | ||||
| @ -487,12 +487,12 @@ export function initRepoPullRequestReview() { | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   $('.btn-review').on('click', function (e) { | ||||
|   $('.js-btn-review').on('click', function (e) { | ||||
|     e.preventDefault(); | ||||
|     $(this).closest('.dropdown').find('.menu').toggle('visible'); // eslint-disable-line
 | ||||
|   }).closest('.dropdown').find('.close').on('click', function (e) { | ||||
|     toggleElem($(this).parent().find('.review-box-panel')); | ||||
|   }).parent().find('.review-box-panel .close').on('click', function (e) { | ||||
|     e.preventDefault(); | ||||
|     $(this).closest('.menu').toggle('visible'); // eslint-disable-line
 | ||||
|     hideElem($(this).closest('.review-box-panel')); | ||||
|   }); | ||||
| 
 | ||||
|   $(document).on('click', 'a.add-code-comment', async function (e) { | ||||
|  | ||||
| @ -2476,24 +2476,13 @@ table th[data-sortt-desc] { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /* fix up SVG dropdown triangles because fomantic thinks they are icon fonts */ | ||||
| /* see https://github.com/go-gitea/gitea/issues/14014 */ | ||||
| .ui.dropdown > .dropdown.icon, | ||||
| .btn-review > .dropdown.icon { | ||||
|   height: auto !important; | ||||
|   margin-left: .5rem !important; | ||||
|   margin-top: -1px !important; | ||||
|   margin-bottom: -1px !important; | ||||
|   margin-right: -.5rem !important; | ||||
| .ui.dropdown .svg.dropdown.icon, | ||||
| .svg.dropdown.icon { | ||||
|   margin-top: 0 !important; // reset the "ui.selection.dropdown > .dropdown.icon {margin-top}", for the Issue Dependencies dropdown | ||||
|   margin-right: -.5rem !important; // fix up SVG dropdown triangles because Fomantic thinks they are icon fonts | ||||
|   height: auto; // reset the ".ui.dropdown > .dropdown.icon {height}", otherwise the icon would be too small | ||||
| } | ||||
| .ui.button.dropdown > .dropdown.icon, | ||||
| .btn-review > .dropdown.icon { | ||||
|   float: right !important; | ||||
| 
 | ||||
|   @media (max-width: 480px) { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
| .ui.selection.dropdown > .search.icon, | ||||
| .ui.selection.dropdown > .delete.icon, | ||||
| .ui.selection.dropdown > .dropdown.icon { | ||||
|  | ||||
| @ -13,7 +13,7 @@ | ||||
| } | ||||
| 
 | ||||
| .editor-toolbar { | ||||
|   opacity: 1 !important; | ||||
|   max-width: calc(100vw - 80px); | ||||
|   border-color: var(--color-secondary); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -2864,11 +2864,6 @@ | ||||
|   margin-top: 10px; | ||||
| } | ||||
| 
 | ||||
| .repo-button-row .dropdown > .dropdown.icon { | ||||
|   margin-left: .25rem !important; | ||||
|   margin-right: 0 !important; | ||||
| } | ||||
| 
 | ||||
| .wiki .repo-button-row { | ||||
|   margin-bottom: 0; | ||||
| } | ||||
|  | ||||
| @ -220,47 +220,45 @@ a.blob-excerpt:hover { | ||||
| 
 | ||||
| // See the comment of createCommentEasyMDE() for the review editor | ||||
| // EasyMDE's options can not handle minHeight & maxHeight together correctly, we have to set minHeight in JS code | ||||
| #review-box .CodeMirror-scroll { | ||||
| .review-box-panel .CodeMirror-scroll { | ||||
|   min-height: 80px; | ||||
|   max-height: calc(100vh - 360px); | ||||
| } | ||||
| 
 | ||||
| @media @mediaSm { | ||||
|   #review-box > .menu { | ||||
|     > .ui.segment { | ||||
|       width: 94vw; | ||||
|     } | ||||
| 
 | ||||
|     .editor-toolbar { | ||||
|       overflow-x: auto; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   #review-box .CodeMirror-scroll { | ||||
|   .review-box-panel .CodeMirror-scroll { | ||||
|     max-width: calc(100vw - 70px); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media @mediaMd { | ||||
|   #review-box .CodeMirror-scroll { | ||||
|   .review-box-panel .CodeMirror-scroll { | ||||
|     max-width: 700px; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media @mediaLg { | ||||
|   #review-box .CodeMirror-scroll { | ||||
|   .review-box-panel .CodeMirror-scroll { | ||||
|     max-width: 800px; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media @mediaXl { | ||||
|   #review-box .CodeMirror-scroll { | ||||
|   .review-box-panel .CodeMirror-scroll { | ||||
|     max-width: 900px; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .review-box > .segment { | ||||
|   border: none !important; | ||||
| #review-box { | ||||
|   position: relative; | ||||
| } | ||||
| 
 | ||||
| .review-box-panel { | ||||
|   position: absolute; | ||||
|   min-width: max-content; | ||||
|   top: 45px; | ||||
|   right: -5px; | ||||
|   z-index: 2; | ||||
| } | ||||
| 
 | ||||
| #review-box .review-comments-counter { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 wxiaoguang
						wxiaoguang