diff options
author | Denys Konovalov <kontakt@denyskon.de> | 2023-08-01 00:13:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-01 00:13:42 +0200 |
commit | b9baed2c74286710481886c5d1f3010e43840012 (patch) | |
tree | e39bdc26d90aafc29a13f134db0fa424a8b37e87 /web_src/css | |
parent | fc6c3d626ef9f383c3ff7f774fcef0116de4f2e3 (diff) | |
download | gitea-b9baed2c74286710481886c5d1f3010e43840012.tar.gz gitea-b9baed2c74286710481886c5d1f3010e43840012.zip |
Introduce `flex-list` & `flex-item` elements for Gitea UI (#25790)
This PR introduces a new UI element type for Gitea called `flex-item`.
It consists of a horizontal card with a leading, main and trailing part:
![grafik](https://github.com/go-gitea/gitea/assets/47871822/395dd3f3-3906-4481-8f65-be6ac0acbe03)
The idea behind it is that in Gitea UI, we have many cases where we use
this kind of layout, but it is achieved in many different ways:
- grid layout
- `.ui.list` with additional hacky flexbox
- `.ui.key.list` - looks to me like a style set originally created for
ssh/gpg key list, was used in many other places
- `.issue.list` - created for issue cards, used in many other places
- ...
This new style is based on `.issue.list`, specifically the refactoring
of it done in #25750.
In this PR, the new element is introduced and lots of templates are
being refactored to use that style. This allows to remove a lot of
page-specific css, makes many of the elements responsive or simply
provides a cleaner/better-looking way to present information.
A devtest section with the new style is also available.
<details>
<summary>Screenshots (left: before, right: after)</summary>
![Bildschirmfoto vom 2023-07-09
21-01-21](https://github.com/go-gitea/gitea/assets/47871822/545b7da5-b300-475f-bd6d-b7d836950bb5)
![Bildschirmfoto vom 2023-07-09
21-01-56](https://github.com/go-gitea/gitea/assets/47871822/b6f70415-6795-4f71-a5ea-117d56107ea1)
![Bildschirmfoto vom 2023-07-09
21-02-45](https://github.com/go-gitea/gitea/assets/47871822/47407121-3f2a-4778-8f6d-ad2687c2e7b3)
![Bildschirmfoto vom 2023-07-09
21-03-44](https://github.com/go-gitea/gitea/assets/47871822/76167aaf-c3b2-46f6-9ffd-709f20aa6a34)
![Bildschirmfoto vom 2023-07-09
21-04-52](https://github.com/go-gitea/gitea/assets/47871822/af8fdde5-711e-4524-99cf-fb5d68af85b9)
![Bildschirmfoto vom 2023-07-09
21-05-25](https://github.com/go-gitea/gitea/assets/47871822/ae406946-e3e4-4109-abfe-b3588a07b468)
![Bildschirmfoto vom 2023-07-09
21-06-35](https://github.com/go-gitea/gitea/assets/47871822/2dbacc04-24d6-4f91-9e42-e16d6e4b5f1f)
![Bildschirmfoto vom 2023-07-09
21-09-03](https://github.com/go-gitea/gitea/assets/47871822/d3ca4e56-a72f-4179-adc8-98bfd638025b)
![Bildschirmfoto vom 2023-07-09
21-09-44](https://github.com/go-gitea/gitea/assets/47871822/df1fa689-499c-4e54-b6fb-3b81644b725f)
![Bildschirmfoto vom 2023-07-09
21-10-27](https://github.com/go-gitea/gitea/assets/47871822/b21cac71-a85a-4c8c-bb99-ab90373d8e09)
![Bildschirmfoto vom 2023-07-09
21-11-12](https://github.com/go-gitea/gitea/assets/47871822/89be39cf-0af9-4f2d-9fca-42f9eb5e7824)
![Bildschirmfoto vom 2023-07-09
21-12-01](https://github.com/go-gitea/gitea/assets/47871822/079579ea-1ecb-49c0-b32b-b59ed957caec)
![Bildschirmfoto vom 2023-07-09
21-17-44](https://github.com/go-gitea/gitea/assets/47871822/61ac6ec4-a319-4d5c-9c99-2e02a77295ba)
![Bildschirmfoto vom 2023-07-09
21-18-27](https://github.com/go-gitea/gitea/assets/47871822/5b55b73f-6244-47f7-a3e6-c5e4a7474585)
![Bildschirmfoto vom 2023-07-09
21-19-18](https://github.com/go-gitea/gitea/assets/47871822/c1b7c22e-3e5a-46d4-b8d6-5560db478c0b)
![Bildschirmfoto vom 2023-07-09
21-29-13](https://github.com/go-gitea/gitea/assets/47871822/82ffca8d-ab2e-4a18-9954-5b685bf6a422)
![Bildschirmfoto vom 2023-07-09
21-30-11](https://github.com/go-gitea/gitea/assets/47871822/ad2fdccc-2be8-41bb-bfdc-a084aa387b61)
![Bildschirmfoto vom 2023-07-09
21-32-44](https://github.com/go-gitea/gitea/assets/47871822/2d298ba7-d084-48b5-a139-f86d56262110)
![Bildschirmfoto vom 2023-07-09
21-33-28](https://github.com/go-gitea/gitea/assets/47871822/4cbd838e-9de8-4ad0-8ed9-438da5c9a5cb)
</details>
---------
Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'web_src/css')
-rw-r--r-- | web_src/css/actions.css | 15 | ||||
-rw-r--r-- | web_src/css/dashboard.css | 52 | ||||
-rw-r--r-- | web_src/css/explore.css | 51 | ||||
-rw-r--r-- | web_src/css/index.css | 2 | ||||
-rw-r--r-- | web_src/css/org.css | 36 | ||||
-rw-r--r-- | web_src/css/repo.css | 27 | ||||
-rw-r--r-- | web_src/css/repo/issue-list.css | 33 | ||||
-rw-r--r-- | web_src/css/shared/flex-list.css | 94 | ||||
-rw-r--r-- | web_src/css/shared/issuelist.css | 134 | ||||
-rw-r--r-- | web_src/css/user.css | 9 |
10 files changed, 145 insertions, 308 deletions
diff --git a/web_src/css/actions.css b/web_src/css/actions.css index 31da79cabf..f081698c66 100644 --- a/web_src/css/actions.css +++ b/web_src/css/actions.css @@ -52,3 +52,18 @@ background-color: var(--color-yellow); color: var(--color-white); } + +.run-list-item-right { + flex: 0 0 15%; + display: flex; + flex-direction: column; + gap: 3px; + color: var(--color-text-light); +} + +.run-list-item-right .run-list-meta { + display: flex; + flex-wrap: nowrap; + gap: .25rem; + align-items: center; +} diff --git a/web_src/css/dashboard.css b/web_src/css/dashboard.css index 34428c5999..1eb480845b 100644 --- a/web_src/css/dashboard.css +++ b/web_src/css/dashboard.css @@ -96,61 +96,13 @@ } } -.feeds .news li { - display: flex; - align-items: baseline; - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -.feeds .news li img { - align-self: flex-start; -} - -.feeds .news li > * + * { - margin-left: 0.35rem; -} - -.feeds .news > .ui.grid { - margin-left: auto; - margin-right: auto; -} - -.feeds .news .left .ui.avatar { - margin-top: 13px; -} - -.feeds .news .time-since { - font-size: 13px; -} - -.feeds .news .issue.title { - width: 80%; - margin: 0 0 1em; -} - -.feeds .news .push.news .content ul { - line-height: 18px; - font-size: 13px; - list-style: none; - padding-left: 10px; -} - -.feeds .news .push.news .content ul .text.truncate { - width: 80%; -} - -.feeds .news .commit-id { +.feeds .commit-id { font-family: var(--fonts-monospace); } -.feeds .news code { +.feeds code { padding: 2px 4px; border-radius: 3px; background-color: var(--color-markup-code-block); word-break: break-all; } - -.feeds .news:last-of-type .divider { - display: none !important; -} diff --git a/web_src/css/explore.css b/web_src/css/explore.css index 139dfcb19f..08858337c0 100644 --- a/web_src/css/explore.css +++ b/web_src/css/explore.css @@ -10,33 +10,6 @@ margin-right: 5px; } -.ui.repository.list .item { - padding-bottom: 1.5rem; -} - -.ui.repository.list .item:not(:first-child) { - border-top: 1px solid var(--color-secondary); - padding-top: 1.5rem; -} - -.ui.repository.list .item .ui.header { - font-size: 1.5rem; - margin-bottom: 0.5rem; -} - -.ui.repository.list .item .ui.header .name { - word-break: break-all; -} - -.ui.repository.list .item .time { - font-size: 12px; -} - -.ui.repository.list .repo-title .labels { - word-break: normal; - flex-shrink: 0; -} - .ui.repository.branches .info { font-size: 12px; color: var(--color-text-light); @@ -58,27 +31,3 @@ .ui.repository.branches table .ui.popup { text-align: left; } - -.ui.user.list .item { - padding-bottom: 25px; - display: flex; -} - -.ui.user.list .item:not(:first-child) { - border-top: 1px solid var(--color-secondary); - padding-top: 25px; -} - -.ui.user.list .item img.ui.avatar { - width: 40px; - height: 40px; - margin-right: 10px; -} - -.ui.user.list .item .description { - margin-top: 5px; -} - -.ui.user.list .item .description .svg:not(:first-child) { - margin-left: 5px; -} diff --git a/web_src/css/index.css b/web_src/css/index.css index 230e032ac0..55ea67453b 100644 --- a/web_src/css/index.css +++ b/web_src/css/index.css @@ -13,7 +13,7 @@ @import "./modules/svg.css"; @import "./modules/flexcontainer.css"; -@import "./shared/issuelist.css"; +@import "./shared/flex-list.css"; @import "./shared/milestone.css"; @import "./shared/repoorg.css"; @import "./shared/settings.css"; diff --git a/web_src/css/org.css b/web_src/css/org.css index 9e1fa38941..4bb3b0cd57 100644 --- a/web_src/css/org.css +++ b/web_src/css/org.css @@ -133,7 +133,6 @@ padding: 10px 15px; } -.organization.teams .members .ui.avatar, .organization.profile .members .ui.avatar { width: 48px; height: 48px; @@ -161,25 +160,6 @@ height: 100%; } -.organization.members .list .item { - margin-left: 0; - margin-right: 0; - border-bottom: 1px solid var(--color-secondary); -} - -.organization.members .list .item .ui.avatar { - width: 48px; - height: 48px; - margin-right: 1rem; - align-self: flex-start; -} - -.organization.members .list .item .meta { - line-height: 24px; - word-break: break-word; - min-width: 2em; -} - .organization.teams .detail .item { padding: 10px 15px; } @@ -188,22 +168,6 @@ border-bottom: 1px solid var(--color-secondary); } -.organization.teams .repositories .item, -.organization.teams .members .item { - padding: 10px 19px; -} - -.organization.teams .repositories .item:not(:last-child), -.organization.teams .members .item:not(:last-child) { - border-bottom: 1px solid var(--color-secondary); -} - -.organization.teams .repositories .item .button, -.organization.teams .members .item .button { - padding: 9px 10px; - margin: 0; -} - .org-team-navbar .active.item { background: var(--color-box-body) !important; } diff --git a/web_src/css/repo.css b/web_src/css/repo.css index 04cb4eed2d..efa412dc53 100644 --- a/web_src/css/repo.css +++ b/web_src/css/repo.css @@ -584,15 +584,6 @@ min-width: 100px; } -.repository.options .danger .item { - padding: 20px 15px; -} - -.repository.options .danger .ui.divider { - margin: 0; - border-color: var(--color-error-border); -} - .repository.new.issue .comment.form .comment .avatar { width: 3em; } @@ -1927,15 +1918,6 @@ flex-wrap: wrap; } -.repository.settings.collaboration .collaborator.list { - padding: 0; -} - -.repository.settings.collaboration .collaborator.list > .item { - margin: 0; - line-height: 2; -} - .repository.settings.collaboration #repo-collab-form #search-user-box .results { left: 7px; } @@ -2389,15 +2371,6 @@ padding: 10px 0 0; } -.settings .list.key .meta { - padding-top: 5px; - color: var(--color-text-light-2); -} - -.settings .list.collaborator > .item { - padding: 0; -} - .ui.vertical.menu .header.item { font-size: 1.1em; background: var(--color-box-header); diff --git a/web_src/css/repo/issue-list.css b/web_src/css/repo/issue-list.css index 7769a16f5f..2a0a86c081 100644 --- a/web_src/css/repo/issue-list.css +++ b/web_src/css/repo/issue-list.css @@ -32,3 +32,36 @@ order: 2 !important; } } + +#issue-list .flex-item-body .branches { + display: inline-flex; +} + +#issue-list .flex-item-body .branches .branch { + background-color: var(--color-secondary-alpha-40); + border-radius: 3px; + padding: 0 4px; +} + +#issue-list .flex-item-body .branches .truncated-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 10em; +} + +#issue-list .flex-item-body .checklist progress { + margin-left: 2px; + width: 80px; + height: 6px; + display: inline-block; + border-radius: 3px; +} + +#issue-list .flex-item-body .checklist progress::-webkit-progress-value { + background-color: var(--color-secondary-dark-4); +} + +#issue-list .flex-item-body .checklist progress::-moz-progress-bar { + background-color: var(--color-secondary-dark-4); +}
\ No newline at end of file diff --git a/web_src/css/shared/flex-list.css b/web_src/css/shared/flex-list.css new file mode 100644 index 0000000000..7982241684 --- /dev/null +++ b/web_src/css/shared/flex-list.css @@ -0,0 +1,94 @@ +.flex-list { + list-style: none; +} + +.flex-item { + display: flex; + gap: 8px; + align-items: flex-start; +} + +.flex-item:not(:last-child) { + padding-bottom: 8px; +} + +.flex-item-baseline { + align-items: baseline; +} + +.flex-item-center { + align-items: center; +} + +.flex-item .flex-item-leading { + display: flex; + align-items: flex-start; +} + +.flex-item .flex-item-main { + display: flex; + flex-direction: column; + flex-grow: 1; + min-width: 0; +} + +.flex-item-header { + display: flex; + gap: .25rem; + justify-content: space-between; + flex-wrap: wrap; +} + +.flex-item a:not(.label, .button):hover { + color: var(--color-primary) !important; +} + +.flex-item .flex-item-icon svg { + margin-top: 1px; +} + +.flex-item .flex-item-trailing { + display: flex; + gap: 0.5rem; + align-items: center; + flex-grow: 0; + flex-wrap: wrap; + justify-content: end; + flex-shrink: 2; +} + +.flex-item .flex-item-title { + display: inline-flex; + flex-wrap: wrap; + align-items: center; + gap: .25rem; + max-width: 100%; + color: var(--color-text); + font-size: 16px; + min-width: 0; + font-weight: var(--font-weight-semibold); +} + +.flex-item .flex-item-title a { + color: var(--color-text); + overflow-wrap: anywhere; +} + +.flex-item .flex-item-body { + font-size: 13px; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: .25rem; + color: var(--color-text-light-2); +} + +.flex-item .flex-item-body a { + color: inherit; + overflow-wrap: anywhere; +} + +.flex-list > .flex-item + .flex-item { + border-top: 1px solid var(--color-secondary); + padding-top: 8px; +} diff --git a/web_src/css/shared/issuelist.css b/web_src/css/shared/issuelist.css deleted file mode 100644 index 82fafedec0..0000000000 --- a/web_src/css/shared/issuelist.css +++ /dev/null @@ -1,134 +0,0 @@ -.issue.list { - list-style: none; - margin-top: 1rem; -} - -.issue.list .item { - display: flex; - align-items: baseline; - padding: 8px 0; -} - -.issue.list .item .issue-item-left { - display: flex; - align-items: flex-start; -} - -.issue.list .item .issue-item-main { - display: flex; - flex-direction: column; - width: 100%; -} - -.issue.list .item .issue-item-header { - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; -} - -.issue.list a:not(.label):hover { - color: var(--color-primary) !important; -} - -.issue.list > .item .issue-item-icon svg { - margin-right: 0.75rem; - margin-top: 1px; -} - -.issue.list .item .issue-item-right { - display: flex; - gap: 0.5rem; -} - -.issue.list > .action-item { - align-items: normal; -} - -.issue.list > .item .action-item-center { - display: flex; - align-items: center; - padding-left: 4px; - padding-right: 12px; -} - -.issue.list > .item .action-item-right { - flex: 0 0 15%; - display: flex; - flex-direction: column; - gap: 3px; - color: var(--color-text-light); -} - -.issue.list > .item .issue-item-title { - max-width: 100%; - color: var(--color-text); - font-size: 16px; - min-width: 0; - font-weight: var(--font-weight-semibold); -} - -.issue.list > .item .issue-item-title a.index { - max-width: fit-content; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; -} - -.issue.list > .item .title { - color: var(--color-text); - overflow-wrap: anywhere; -} - -.issue.list > .item .issue-item-body { - font-size: 13px; - display: flex; - align-items: center; - flex-wrap: wrap; - gap: .25rem; - color: var(--color-text-light-2); -} - -.issue.list > .item .issue-item-body a { - color: inherit; - word-break: break-word; -} - -.issue.list > .item .issue-item-body .checklist progress { - margin-left: 2px; - width: 80px; - height: 6px; - display: inline-block; - border-radius: 3px; -} - -.issue.list > .item .issue-item-body .checklist progress::-webkit-progress-value { - background-color: var(--color-secondary-dark-4); -} - -.issue.list > .item .issue-item-body .checklist progress::-moz-progress-bar { - background-color: var(--color-secondary-dark-4); -} - -.issue.list .branches { - display: inline-flex; -} - -.issue.list .branches .branch { - background-color: var(--color-secondary-alpha-40); - border-radius: 3px; - padding: 0 4px; -} - -.issue.list .branches .truncated-name { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 10em; -} - -.issue.list > .item + .item { - border-top: 1px solid var(--color-secondary); -} diff --git a/web_src/css/user.css b/web_src/css/user.css index ab94c826b2..33e64bbb7c 100644 --- a/web_src/css/user.css +++ b/web_src/css/user.css @@ -58,15 +58,6 @@ } } -.user.profile .ui.repository.list { - margin-top: 25px; -} - -.user.profile .ui.repository.list .repo-title .labels { - word-break: normal; - flex-shrink: 0; -} - .user.profile #loading-heatmap { margin-bottom: 1em; } |