summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-08-29 07:49:21 +0800
committerGitHub <noreply@github.com>2023-08-28 23:49:21 +0000
commit0ab70d4f2f47c3580ba960d239aec015b862ae0f (patch)
tree4aba619317592c04b441953d865b371c5618519c
parent83208b499174b63ad1b9fb7a91296ad0a0400b6d (diff)
downloadgitea-0ab70d4f2f47c3580ba960d239aec015b862ae0f.tar.gz
gitea-0ab70d4f2f47c3580ba960d239aec015b862ae0f.zip
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)
-rw-r--r--templates/devtest/fomantic-modal.tmpl34
-rw-r--r--web_src/css/modules/animations.css5
-rw-r--r--web_src/css/modules/modal.css22
3 files changed, 44 insertions, 17 deletions
diff --git a/templates/devtest/fomantic-modal.tmpl b/templates/devtest/fomantic-modal.tmpl
index 799bab7594..b91b29f3cc 100644
--- a/templates/devtest/fomantic-modal.tmpl
+++ b/templates/devtest/fomantic-modal.tmpl
@@ -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" .}}
diff --git a/web_src/css/modules/animations.css b/web_src/css/modules/animations.css
index 7b3ec360f6..cac824d87d 100644
--- a/web_src/css/modules/animations.css
+++ b/web_src/css/modules/animations.css
@@ -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;
}
diff --git a/web_src/css/modules/modal.css b/web_src/css/modules/modal.css
index 5824efb30c..31b0b5d6b9 100644
--- a/web_src/css/modules/modal.css
+++ b/web_src/css/modules/modal.css
@@ -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 {