Skip to content

Commit 0ab70d4

Browse files
authored
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)
1 parent 83208b4 commit 0ab70d4

File tree

3 files changed

+44
-17
lines changed

3 files changed

+44
-17
lines changed

templates/devtest/fomantic-modal.tmpl

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,33 @@
22
<div class="page-content devtest ui container">
33
{{template "base/alert" .}}
44

5-
<button class="show-modal" data-modal="#test-modal-form">show modal form</button>
6-
<div id="test-modal-form" class="ui mini modal">
7-
<div class="header">Form dialog</div>
5+
<div id="test-modal-form-1" class="ui mini modal">
6+
<div class="header">Form dialog (layout 1)</div>
87
<form class="content" method="post">
9-
<div class="ui input"><input name="user_input"></div>
8+
<div class="ui input gt-w-100"><input name="user_input"></div>
109
{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
1110
</form>
1211
</div>
1312

14-
<div class="divider"></div>
13+
<div id="test-modal-form-2" class="ui mini modal">
14+
<div class="header">Form dialog (layout 2)</div>
15+
<form method="post">
16+
<div class="content">
17+
<div class="ui input gt-w-100"><input name="user_input"></div>
18+
{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
19+
</div>
20+
</form>
21+
</div>
22+
23+
<div id="test-modal-form-3" class="ui mini modal">
24+
<div class="header">Form dialog (layout 3)</div>
25+
<form method="post">
26+
<div class="content">
27+
<div class="ui input gt-w-100"><input name="user_input"></div>
28+
</div>
29+
{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
30+
</form>
31+
</div>
1532

1633
<div class="ui g-modal-confirm modal" id="test-modal-default">
1734
<div class="header">{{svg "octicon-file"}} Default dialog <span>title</span></div>
@@ -46,17 +63,14 @@
4663
{{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" "I know and must do this is dangerous operation")}}
4764
</div>
4865

49-
<div class="modal-buttons"></div>
66+
<div class="modal-buttons flex-text-block gt-fw"></div>
5067
<script type="module">
5168
for (const el of $('.ui.modal')) {
52-
const $btn = $('<button>').text(`Show ${el.id}`).on('click', () => {
69+
const $btn = $('<button>').text(`${el.id}`).on('click', () => {
5370
$(el).modal({onApprove() {alert('confirmed')}}).modal('show');
5471
});
5572
$('.modal-buttons').append($btn);
5673
}
5774
</script>
58-
<style>
59-
.modal-buttons button { margin: 5px; }
60-
</style>
6175
</div>
6276
{{template "base/footer" .}}

web_src/css/modules/animations.css

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ code.language-math.is-loading::after {
9999
animation: pulse 2s linear;
100100
}
101101

102-
.ui.modal {
102+
.ui.modal,
103+
.ui.dimmer.transition {
103104
animation-name: fadein;
104-
animation-duration: 300ms;
105+
animation-duration: 100ms;
105106
animation-timing-function: ease-in-out;
106107
}

web_src/css/modules/modal.css

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,41 @@
3030
box-shadow: 1px 3px 3px 0 var(--color-shadow), 1px 3px 15px 2px var(--color-shadow);
3131
}
3232

33-
/* Gitea sometimes use a form in a modal dialog, then the "positive" button could submit the form directly */
33+
/* Gitea sometimes use a form in a modal dialog, then the "positive" button could submit the form directly
34+
Fomantic UI only supports the layout: <div .modal><div .content/><div .actions/></div>
35+
However, Gitea uses the following layouts:
36+
* <div .modal><div .content><div .actions/></div></div>
37+
* <div .modal><form><div .content/><div .actions/></form></div>
38+
* <div .modal><div .content><form><div .actions/></form></div></div>
39+
* ...
40+
These inconsistent layouts should be refactored to simple ones.
41+
*/
3442

3543
.ui.modal > .content,
36-
.ui.modal > form > .content {
44+
.ui.modal form > .content {
3745
padding: 1.5em;
3846
background: var(--color-body);
3947
}
4048

4149
.ui.modal > .actions,
42-
.ui.modal > form > .actions {
50+
.ui.modal .content + .actions {
4351
background: var(--color-secondary-bg);
4452
border-color: var(--color-secondary);
45-
46-
/* these styles are from Fomantic UI */
4753
padding: 1rem;
4854
text-align: right;
4955
}
5056

57+
.ui.modal .content > .actions {
58+
padding-top: 1em; /* if the "actions" is in the "content", some paddings are already added by the "content" */
59+
text-align: right;
60+
}
61+
5162
/* positive/negative action buttons */
5263
.ui.modal .actions > .ui.button {
5364
display: inline-flex;
5465
align-items: center;
5566
padding: 10px 12px 10px 10px;
67+
margin-right: 0;
5668
}
5769

5870
.ui.modal .actions > .ui.button.danger {

0 commit comments

Comments
 (0)