mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 04:14:01 +01:00 
			
		
		
		
	Improve modal dialog UI (#26764)
1. Fine tune the CSS styles, and add more examples 2. Add necessary "dimmer" animation for modal dialogs, otherwise the UI seems flicking (follow #26469)
This commit is contained in:
		
							parent
							
								
									83208b4991
								
							
						
					
					
						commit
						0ab70d4f2f
					
				@ -2,16 +2,33 @@
 | 
			
		||||
<div class="page-content devtest ui container">
 | 
			
		||||
	{{template "base/alert" .}}
 | 
			
		||||
 | 
			
		||||
	<button class="show-modal" data-modal="#test-modal-form">show modal form</button>
 | 
			
		||||
	<div id="test-modal-form" class="ui mini modal">
 | 
			
		||||
		<div class="header">Form dialog</div>
 | 
			
		||||
	<div id="test-modal-form-1" class="ui mini modal">
 | 
			
		||||
		<div class="header">Form dialog (layout 1)</div>
 | 
			
		||||
		<form class="content" method="post">
 | 
			
		||||
			<div class="ui input"><input name="user_input"></div>
 | 
			
		||||
			<div class="ui input gt-w-100"><input name="user_input"></div>
 | 
			
		||||
			{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
 | 
			
		||||
		</form>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="divider"></div>
 | 
			
		||||
	<div id="test-modal-form-2" class="ui mini modal">
 | 
			
		||||
		<div class="header">Form dialog (layout 2)</div>
 | 
			
		||||
		<form method="post">
 | 
			
		||||
			<div class="content">
 | 
			
		||||
				<div class="ui input gt-w-100"><input name="user_input"></div>
 | 
			
		||||
				{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
 | 
			
		||||
			</div>
 | 
			
		||||
		</form>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div id="test-modal-form-3" class="ui mini modal">
 | 
			
		||||
		<div class="header">Form dialog (layout 3)</div>
 | 
			
		||||
		<form method="post">
 | 
			
		||||
			<div class="content">
 | 
			
		||||
				<div class="ui input gt-w-100"><input name="user_input"></div>
 | 
			
		||||
			</div>
 | 
			
		||||
			{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
 | 
			
		||||
		</form>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="ui g-modal-confirm modal" id="test-modal-default">
 | 
			
		||||
		<div class="header">{{svg "octicon-file"}} Default dialog <span>title</span></div>
 | 
			
		||||
@ -46,17 +63,14 @@
 | 
			
		||||
		{{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" "I know and must do  this is dangerous operation")}}
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="modal-buttons"></div>
 | 
			
		||||
	<div class="modal-buttons flex-text-block gt-fw"></div>
 | 
			
		||||
	<script type="module">
 | 
			
		||||
		for (const el of $('.ui.modal')) {
 | 
			
		||||
			const $btn = $('<button>').text(`Show ${el.id}`).on('click', () => {
 | 
			
		||||
			const $btn = $('<button>').text(`${el.id}`).on('click', () => {
 | 
			
		||||
				$(el).modal({onApprove() {alert('confirmed')}}).modal('show');
 | 
			
		||||
			});
 | 
			
		||||
			$('.modal-buttons').append($btn);
 | 
			
		||||
		}
 | 
			
		||||
	</script>
 | 
			
		||||
	<style>
 | 
			
		||||
		.modal-buttons button { margin: 5px; }
 | 
			
		||||
	</style>
 | 
			
		||||
</div>
 | 
			
		||||
{{template "base/footer" .}}
 | 
			
		||||
 | 
			
		||||
@ -99,8 +99,9 @@ code.language-math.is-loading::after {
 | 
			
		||||
  animation: pulse 2s linear;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui.modal {
 | 
			
		||||
.ui.modal,
 | 
			
		||||
.ui.dimmer.transition {
 | 
			
		||||
  animation-name: fadein;
 | 
			
		||||
  animation-duration: 300ms;
 | 
			
		||||
  animation-duration: 100ms;
 | 
			
		||||
  animation-timing-function: ease-in-out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -30,29 +30,41 @@
 | 
			
		||||
  box-shadow: 1px 3px 3px 0 var(--color-shadow), 1px 3px 15px 2px var(--color-shadow);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Gitea sometimes use a form in a modal dialog, then the "positive" button could submit the form directly */
 | 
			
		||||
/* Gitea sometimes use a form in a modal dialog, then the "positive" button could submit the form directly
 | 
			
		||||
Fomantic UI only supports the layout: <div .modal><div .content/><div .actions/></div>
 | 
			
		||||
However, Gitea uses the following layouts:
 | 
			
		||||
* <div .modal><div .content><div .actions/></div></div>
 | 
			
		||||
* <div .modal><form><div .content/><div .actions/></form></div>
 | 
			
		||||
* <div .modal><div .content><form><div .actions/></form></div></div>
 | 
			
		||||
* ...
 | 
			
		||||
These inconsistent layouts should be refactored to simple ones.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.ui.modal > .content,
 | 
			
		||||
.ui.modal > form > .content {
 | 
			
		||||
.ui.modal form > .content {
 | 
			
		||||
  padding: 1.5em;
 | 
			
		||||
  background: var(--color-body);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui.modal > .actions,
 | 
			
		||||
.ui.modal > form > .actions {
 | 
			
		||||
.ui.modal .content + .actions {
 | 
			
		||||
  background: var(--color-secondary-bg);
 | 
			
		||||
  border-color: var(--color-secondary);
 | 
			
		||||
 | 
			
		||||
  /* these styles are from Fomantic UI */
 | 
			
		||||
  padding: 1rem;
 | 
			
		||||
  text-align: right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui.modal .content > .actions {
 | 
			
		||||
  padding-top: 1em; /* if the "actions" is in the "content", some paddings are already added by the "content" */
 | 
			
		||||
  text-align: right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* positive/negative action buttons */
 | 
			
		||||
.ui.modal .actions > .ui.button {
 | 
			
		||||
  display: inline-flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  padding: 10px 12px 10px 10px;
 | 
			
		||||
  margin-right: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui.modal .actions > .ui.button.danger {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user