mirror of
https://github.com/go-gitea/gitea.git
synced 2025-04-12 10:48:46 +03:00
Fix vertical centering of file tree icons and use entryIcon for submodules/symlinks (#34137)
In the file tree, the icons are not vertically centered, which affects the overall visual consistency. Currently, the icons of submodules and symlinks do not adopt the value of entryIcon, resulting in inconsistent icon display. before:  after:  --------- Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
@ -16,7 +16,7 @@
|
|||||||
{{else if eq .status "blocked"}}
|
{{else if eq .status "blocked"}}
|
||||||
{{svg "octicon-blocked" $size (printf "text yellow %s" $className)}}
|
{{svg "octicon-blocked" $size (printf "text yellow %s" $className)}}
|
||||||
{{else if eq .status "running"}}
|
{{else if eq .status "running"}}
|
||||||
{{svg "octicon-meter" $size (printf "text yellow job-status-rotate %s" $className)}}
|
{{svg "octicon-meter" $size (printf "text yellow circular-spin %s" $className)}}
|
||||||
{{else}}{{/*failure, unknown*/}}
|
{{else}}{{/*failure, unknown*/}}
|
||||||
{{svg "octicon-x-circle-fill" $size (printf "text red %s" $className)}}
|
{{svg "octicon-x-circle-fill" $size (printf "text red %s" $className)}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -1181,3 +1181,15 @@ the "!important" is necessary to override Fomantic UI menu item styles, meanwhil
|
|||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.svg.octicon-file-directory-fill,
|
||||||
|
.svg.octicon-file-directory-open-fill,
|
||||||
|
.svg.octicon-file-submodule {
|
||||||
|
color: var(--color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg.octicon-file,
|
||||||
|
.svg.octicon-file-symlink-file,
|
||||||
|
.svg.octicon-file-directory-symlink {
|
||||||
|
color: var(--color-secondary-dark-7);
|
||||||
|
}
|
||||||
|
@ -116,3 +116,13 @@ code.language-math.is-loading::after {
|
|||||||
animation-duration: 100ms;
|
animation-duration: 100ms;
|
||||||
animation-timing-function: ease-in-out;
|
animation-timing-function: ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.circular-spin {
|
||||||
|
animation: circular-spin-keyframes 1s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes circular-spin-keyframes {
|
||||||
|
100% {
|
||||||
|
transform: rotate(-360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -14,17 +14,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#repo-files-table .svg.octicon-file-directory-fill,
|
|
||||||
#repo-files-table .svg.octicon-file-submodule {
|
|
||||||
color: var(--color-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
#repo-files-table .svg.octicon-file,
|
|
||||||
#repo-files-table .svg.octicon-file-symlink-file,
|
|
||||||
#repo-files-table .svg.octicon-file-directory-symlink {
|
|
||||||
color: var(--color-secondary-dark-7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#repo-files-table .repo-file-item {
|
#repo-files-table .repo-file-item {
|
||||||
display: contents;
|
display: contents;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ withDefaults(defineProps<{
|
|||||||
<SvgIcon name="octicon-stop" class="text yellow" :size="size" :class="className" v-else-if="status === 'cancelled'"/>
|
<SvgIcon name="octicon-stop" class="text yellow" :size="size" :class="className" v-else-if="status === 'cancelled'"/>
|
||||||
<SvgIcon name="octicon-clock" class="text yellow" :size="size" :class="className" v-else-if="status === 'waiting'"/>
|
<SvgIcon name="octicon-clock" class="text yellow" :size="size" :class="className" v-else-if="status === 'waiting'"/>
|
||||||
<SvgIcon name="octicon-blocked" class="text yellow" :size="size" :class="className" v-else-if="status === 'blocked'"/>
|
<SvgIcon name="octicon-blocked" class="text yellow" :size="size" :class="className" v-else-if="status === 'blocked'"/>
|
||||||
<SvgIcon name="octicon-meter" class="text yellow" :size="size" :class="'job-status-rotate ' + className" v-else-if="status === 'running'"/>
|
<SvgIcon name="octicon-meter" class="text yellow" :size="size" :class="'circular-spin ' + className" v-else-if="status === 'running'"/>
|
||||||
<SvgIcon name="octicon-x-circle-fill" class="text red" :size="size" v-else/><!-- failure, unknown -->
|
<SvgIcon name="octicon-x-circle-fill" class="text red" :size="size" v-else/><!-- failure, unknown -->
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -574,7 +574,7 @@ export default defineComponent({
|
|||||||
<!-- If the job is done and the job step log is loaded for the first time, show the loading icon
|
<!-- If the job is done and the job step log is loaded for the first time, show the loading icon
|
||||||
currentJobStepsStates[i].cursor === null means the log is loaded for the first time
|
currentJobStepsStates[i].cursor === null means the log is loaded for the first time
|
||||||
-->
|
-->
|
||||||
<SvgIcon v-if="isDone(run.status) && currentJobStepsStates[i].expanded && currentJobStepsStates[i].cursor === null" name="octicon-sync" class="tw-mr-2 job-status-rotate"/>
|
<SvgIcon v-if="isDone(run.status) && currentJobStepsStates[i].expanded && currentJobStepsStates[i].cursor === null" name="octicon-sync" class="tw-mr-2 circular-spin"/>
|
||||||
<SvgIcon v-else :name="currentJobStepsStates[i].expanded ? 'octicon-chevron-down': 'octicon-chevron-right'" :class="['tw-mr-2', !isExpandable(jobStep.status) && 'tw-invisible']"/>
|
<SvgIcon v-else :name="currentJobStepsStates[i].expanded ? 'octicon-chevron-down': 'octicon-chevron-right'" :class="['tw-mr-2', !isExpandable(jobStep.status) && 'tw-invisible']"/>
|
||||||
<ActionRunStatus :status="jobStep.status" class="tw-mr-2"/>
|
<ActionRunStatus :status="jobStep.status" class="tw-mr-2"/>
|
||||||
|
|
||||||
@ -896,16 +896,6 @@ export default defineComponent({
|
|||||||
|
|
||||||
<style> /* eslint-disable-line vue-scoped-css/enforce-style-type */
|
<style> /* eslint-disable-line vue-scoped-css/enforce-style-type */
|
||||||
/* some elements are not managed by vue, so we need to use global style */
|
/* some elements are not managed by vue, so we need to use global style */
|
||||||
.job-status-rotate {
|
|
||||||
animation: job-status-rotate-keyframes 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes job-status-rotate-keyframes {
|
|
||||||
100% {
|
|
||||||
transform: rotate(-360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.job-step-section {
|
.job-step-section {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ const options: ChartOptions<'line'> = {
|
|||||||
<div class="tw-flex ui segment main-graph">
|
<div class="tw-flex ui segment main-graph">
|
||||||
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
||||||
<div v-if="isLoading">
|
<div v-if="isLoading">
|
||||||
<SvgIcon name="octicon-sync" class="tw-mr-2 job-status-rotate"/>
|
<SvgIcon name="octicon-sync" class="tw-mr-2 circular-spin"/>
|
||||||
{{ locale.loadingInfo }}
|
{{ locale.loadingInfo }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="text red">
|
<div v-else class="text red">
|
||||||
|
@ -375,7 +375,7 @@ export default defineComponent({
|
|||||||
<div class="tw-flex ui segment main-graph">
|
<div class="tw-flex ui segment main-graph">
|
||||||
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
||||||
<div v-if="isLoading">
|
<div v-if="isLoading">
|
||||||
<SvgIcon name="octicon-sync" class="tw-mr-2 job-status-rotate"/>
|
<SvgIcon name="octicon-sync" class="tw-mr-2 circular-spin"/>
|
||||||
{{ locale.loadingInfo }}
|
{{ locale.loadingInfo }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="text red">
|
<div v-else class="text red">
|
||||||
|
@ -128,7 +128,7 @@ const options: ChartOptions<'bar'> = {
|
|||||||
<div class="tw-flex ui segment main-graph">
|
<div class="tw-flex ui segment main-graph">
|
||||||
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
<div v-if="isLoading || errorText !== ''" class="gt-tc tw-m-auto">
|
||||||
<div v-if="isLoading">
|
<div v-if="isLoading">
|
||||||
<SvgIcon name="octicon-sync" class="tw-mr-2 job-status-rotate"/>
|
<SvgIcon name="octicon-sync" class="tw-mr-2 circular-spin"/>
|
||||||
{{ locale.loadingInfo }}
|
{{ locale.loadingInfo }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="text red">
|
<div v-else class="text red">
|
||||||
|
@ -58,7 +58,8 @@ const doGotoSubModule = () => {
|
|||||||
>
|
>
|
||||||
<!-- submodule -->
|
<!-- submodule -->
|
||||||
<div class="item-content">
|
<div class="item-content">
|
||||||
<SvgIcon class="text primary" name="octicon-file-submodule"/>
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
||||||
|
<span class="tw-contents" v-html="item.entryIcon"/>
|
||||||
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -70,7 +71,8 @@ const doGotoSubModule = () => {
|
|||||||
>
|
>
|
||||||
<!-- symlink -->
|
<!-- symlink -->
|
||||||
<div class="item-content">
|
<div class="item-content">
|
||||||
<SvgIcon name="octicon-file-symlink-file"/>
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
||||||
|
<span class="tw-contents" v-html="item.entryIcon"/>
|
||||||
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -83,7 +85,7 @@ const doGotoSubModule = () => {
|
|||||||
<!-- file -->
|
<!-- file -->
|
||||||
<div class="item-content">
|
<div class="item-content">
|
||||||
<!-- eslint-disable-next-line vue/no-v-html -->
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
||||||
<span v-html="item.entryIcon"/>
|
<span class="tw-contents" v-html="item.entryIcon"/>
|
||||||
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
<span class="gt-ellipsis tw-flex-1">{{ item.entryName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -95,13 +97,12 @@ const doGotoSubModule = () => {
|
|||||||
>
|
>
|
||||||
<!-- directory -->
|
<!-- directory -->
|
||||||
<div class="item-toggle">
|
<div class="item-toggle">
|
||||||
<!-- FIXME: use a general and global class for this animation -->
|
<SvgIcon v-if="isLoading" name="octicon-sync" class="circular-spin"/>
|
||||||
<SvgIcon v-if="isLoading" name="octicon-sync" class="job-status-rotate"/>
|
|
||||||
<SvgIcon v-else :name="collapsed ? 'octicon-chevron-right' : 'octicon-chevron-down'" @click.stop="doLoadChildren"/>
|
<SvgIcon v-else :name="collapsed ? 'octicon-chevron-right' : 'octicon-chevron-down'" @click.stop="doLoadChildren"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-content">
|
<div class="item-content">
|
||||||
<!-- eslint-disable-next-line vue/no-v-html -->
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
||||||
<span class="text primary" v-html="(!collapsed && item.entryIconOpen) ? item.entryIconOpen : item.entryIcon"/>
|
<span class="tw-contents" v-html="(!collapsed && item.entryIconOpen) ? item.entryIconOpen : item.entryIcon"/>
|
||||||
<span class="gt-ellipsis">{{ item.entryName }}</span>
|
<span class="gt-ellipsis">{{ item.entryName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -154,7 +155,7 @@ const doGotoSubModule = () => {
|
|||||||
grid-area: content;
|
grid-area: content;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.25em;
|
gap: 0.5em;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user