Skip to content

Commit b1ece1e

Browse files
committed
style: enhance button and icon interactions for improved UX
1 parent 42b9a1a commit b1ece1e

9 files changed

Lines changed: 83 additions & 55 deletions

File tree

spring-boot-admin-server-ui/src/main/frontend/components/sba-accordion.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
{
4141
'-rotate-90': !open,
4242
},
43-
'mr-2 transition-[transform]',
43+
'mr-2 transition-transform',
4444
)
4545
"
4646
/>

spring-boot-admin-server-ui/src/main/frontend/components/sba-button.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<component
33
:is="as"
4-
class="btn relative items-center"
4+
class="btn relative items-center cursor-pointer"
55
v-bind="componentAttrs"
66
@click="handleClick"
77
>
@@ -49,7 +49,7 @@ const attrs = useAttrs();
4949
5050
const cssClasses = computed(() => {
5151
return {
52-
'px-1 py-0 text-xs': props.size === '2xs',
52+
'px-1.5 py-0.5 text-xs': props.size === '2xs',
5353
'px-2 py-2 text-xs': props.size === 'xs',
5454
'px-3 py-2': props.size === 'sm',
5555
'px-4 py-3': props.size === 'base',

spring-boot-admin-server-ui/src/main/frontend/views/applications/ApplicationListItemAction.vue

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,50 @@
22
<sba-button-group class="application-list-item__header__actions text-right">
33
<router-link v-slot="{ navigate }" :to="journalLink" custom>
44
<sba-button
5-
:title="$t('applications.actions.journal')"
5+
:size="size === 'xs' ? '2xs' : undefined"
6+
:title="t('applications.actions.journal')"
67
@click.stop="navigate"
78
>
8-
<font-awesome-icon :icon="faHistory" />
9+
<font-awesome-icon :icon="faScroll" :size="size" />
910
</sba-button>
1011
</router-link>
1112
<sba-button
1213
v-if="hasNotificationFiltersSupport"
1314
:id="`nf-settings-${item.name || item.id}`"
15+
:size="size === 'xs' ? '2xs' : undefined"
1416
:title="$t('applications.actions.notification_filters')"
1517
@click.stop="$emit('filter-settings', item)"
1618
>
1719
<font-awesome-icon
20+
:size="size"
1821
:icon="hasActiveNotificationFilter ? faBellSlash : faBell"
1922
/>
2023
</sba-button>
2124
<sba-button
2225
v-if="item.isUnregisterable"
2326
class="btn-unregister"
24-
:title="$t('applications.actions.unregister')"
27+
:size="size === 'xs' ? '2xs' : undefined"
28+
:title="t('applications.actions.unregister')"
2529
@click.stop="actionHandler.unregister(item)"
2630
>
27-
<font-awesome-icon :icon="faTrash" />
31+
<font-awesome-icon :size="size" :icon="faTrash" />
2832
</sba-button>
2933
<sba-button
3034
v-if="item.hasEndpoint('restart')"
31-
:title="$t('applications.actions.restart')"
35+
:size="size === 'xs' ? '2xs' : undefined"
36+
:title="t('applications.actions.restart')"
3237
@click.stop="actionHandler.restart(item)"
3338
>
34-
<font-awesome-icon :icon="faUndoAlt" />
39+
<font-awesome-icon :size="size" :icon="faUndoAlt" />
3540
</sba-button>
3641
<sba-button
3742
v-if="item.hasEndpoint('shutdown')"
38-
:title="$t('applications.actions.shutdown')"
43+
:size="size === 'xs' ? '2xs' : undefined"
44+
:title="t('applications.actions.shutdown')"
3945
class="is-danger btn-shutdown"
4046
@click.stop="actionHandler.shutdown(item)"
4147
>
42-
<font-awesome-icon :icon="faPowerOff" />
48+
<font-awesome-icon :size="size" :icon="faPowerOff" />
4349
</sba-button>
4450
</sba-button-group>
4551
</template>
@@ -50,14 +56,17 @@ import {
5056
faBellSlash,
5157
faHistory,
5258
faPowerOff,
59+
faScroll,
5360
faTrash,
5461
faUndoAlt,
5562
} from '@fortawesome/free-solid-svg-icons';
5663
import { useNotificationCenter } from '@stekoe/vue-toast-notificationcenter';
57-
import { inject } from 'vue';
64+
import { PropType, inject } from 'vue';
5865
import { useI18n } from 'vue-i18n';
5966
import { RouteLocationNamedRaw } from 'vue-router';
6067
68+
import SbaButtonGroup from '@/components/sba-button-group.vue';
69+
6170
import Application from '@/services/application';
6271
import Instance from '@/services/instance';
6372
import {
@@ -83,6 +92,10 @@ const props = defineProps({
8392
type: Boolean,
8493
default: false,
8594
},
95+
size: {
96+
type: String as PropType<'xs' | 'sm'>,
97+
default: 'sm',
98+
},
8699
});
87100
88101
defineEmits(['filter-settings']);
@@ -110,9 +123,4 @@ if (props.item instanceof Application) {
110123
.application-list-item__header__actions {
111124
@apply hidden lg:inline-flex p-1 bg-black/5 rounded-lg;
112125
}
113-
114-
.btn-shutdown,
115-
.btn-unregister {
116-
@apply ml-1;
117-
}
118126
</style>

spring-boot-admin-server-ui/src/main/frontend/views/applications/InstancesList.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
v-for="instance in instances"
2121
:key="instance.id"
2222
:data-testid="instance.id"
23-
class="flex p-2 pr-4 hover:bg-gray-100 gap-2 odd:bg-gray-50 items-center"
23+
class="flex p-2 pr-4 hover:bg-gray-100 hover:cursor-pointer gap-2 odd:bg-gray-50 items-center"
2424
@click.stop="showDetails(instance)"
2525
>
2626
<div class="pt-1 md:w-16 text-center">

spring-boot-admin-server-ui/src/main/frontend/views/applications/index.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,12 @@
110110
"
111111
>
112112
<template #title>
113-
<div class="items-center inline-flex flex-row min-w-116">
113+
<div
114+
class="items-center inline-flex flex-row min-w-116 cursor-pointer"
115+
>
114116
<font-awesome-icon
115117
icon="chevron-right"
116-
class="mr-2 transition-transform duration-200"
118+
class="mr-2 transition-transform"
117119
:class="{
118120
'rotate-90': isExpanded(group.name),
119121
}"
@@ -168,6 +170,7 @@
168170
"
169171
:item="instance"
170172
class="md:hidden"
173+
size="xs"
171174
@filter-settings="toggleNotificationFilterSettings"
172175
/>
173176
</template>

spring-boot-admin-server-ui/src/main/frontend/views/applications/listItem/ItemInformation.vue

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,38 +37,43 @@
3737
small
3838
/>
3939

40-
<template v-if="!instance.isUrlDisabled()">
40+
<sba-button-group>
41+
<template v-if="!instance.isUrlDisabled()">
42+
<sba-button
43+
as="a"
44+
:href="instance.registration.serviceUrl"
45+
:title="instance.registration.serviceUrl"
46+
size="2xs"
47+
referrerpolicy="no-referrer"
48+
target="_blank"
49+
:aria-label="t('term.homepage')"
50+
>
51+
<font-awesome-icon :icon="faHomeAlt" size="xs" />
52+
</sba-button>
53+
</template>
4154
<sba-button
4255
as="a"
43-
:href="instance.registration.serviceUrl"
56+
:href="instance.registration.managementUrl"
57+
:title="instance.registration.managementUrl"
4458
size="2xs"
4559
referrerpolicy="no-referrer"
4660
target="_blank"
47-
:aria-label="t('term.homepage')"
61+
:aria-label="t('term.actuator_endpoint')"
4862
>
49-
<font-awesome-icon :icon="faHome" size="xs" />
63+
<font-awesome-icon :icon="faCogs" size="xs" />
5064
</sba-button>
51-
</template>
52-
<sba-button
53-
as="a"
54-
:href="instance.registration.managementUrl"
55-
size="2xs"
56-
referrerpolicy="no-referrer"
57-
target="_blank"
58-
:aria-label="t('term.actuator_endpoint')"
59-
>
60-
<font-awesome-icon :icon="faClipboardList" size="xs" />
61-
</sba-button>
62-
<sba-button
63-
as="a"
64-
:href="instance.registration.healthUrl"
65-
size="2xs"
66-
referrerpolicy="no-referrer"
67-
target="_blank"
68-
:aria-label="t('health.label')"
69-
>
70-
<font-awesome-icon :icon="faHeart" size="xs" />
71-
</sba-button>
65+
<sba-button
66+
as="a"
67+
:href="instance.registration.healthUrl"
68+
:title="instance.registration.healthUrl"
69+
size="2xs"
70+
referrerpolicy="no-referrer"
71+
target="_blank"
72+
:aria-label="t('health.label')"
73+
>
74+
<font-awesome-icon :icon="faHeartPulse" size="xs" />
75+
</sba-button>
76+
</sba-button-group>
7277
</div>
7378
</template>
7479

@@ -92,9 +97,9 @@
9297

9398
<script setup lang="ts">
9499
import {
95-
faClipboardList,
96-
faHeart,
97-
faHome,
100+
faCogs,
101+
faHeartPulse,
102+
faHomeAlt,
98103
} from '@fortawesome/free-solid-svg-icons';
99104
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
100105
import { useI18n } from 'vue-i18n';

spring-boot-admin-server-ui/src/main/frontend/views/instances/details/details-health.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232

3333
<template #actions>
3434
<router-link
35+
:title="$t('applications.actions.journal')"
3536
:to="{ name: 'journal', query: { instanceId: instance.id } }"
3637
class="text-sm inline-flex items-center leading-sm border border-gray-400 bg-white text-gray-700 rounded overflow-hidden px-3 py-1 hover:bg-gray-200 ml-1"
3738
>
38-
<font-awesome-icon icon="history" />
39+
<font-awesome-icon :icon="faScroll()" />
3940
</router-link>
4041
</template>
4142

@@ -90,6 +91,7 @@
9091
</template>
9192

9293
<script lang="ts">
94+
import { faHistory, faScroll } from '@fortawesome/free-solid-svg-icons';
9395
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
9496
9597
import SbaAccordion from '@/components/sba-accordion.vue';
@@ -131,6 +133,12 @@ export default {
131133
},
132134
},
133135
methods: {
136+
faScroll() {
137+
return faScroll;
138+
},
139+
faHistory() {
140+
return faHistory;
141+
},
134142
reloadHealth() {
135143
const updateKey =
136144
this.instance.version ??

spring-boot-admin-server-ui/src/main/frontend/views/instances/details/details-nav.vue

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
target="_blank"
1717
:title="instance.registration.serviceUrl"
1818
:href="instance.registration.serviceUrl"
19-
class="border-gray-400 ml-1"
19+
class="border-gray-400"
2020
>
2121
<font-awesome-icon :icon="faHome" />
2222
</sba-button>
@@ -28,9 +28,9 @@
2828
target="_blank"
2929
:title="instance.registration.managementUrl"
3030
:href="instance.registration.managementUrl"
31-
class="border-gray-400 ml-1"
31+
class="border-gray-400"
3232
>
33-
<font-awesome-icon :icon="faClipboardList" />
33+
<font-awesome-icon :icon="faCogs" />
3434
</sba-button>
3535

3636
<sba-button
@@ -40,9 +40,9 @@
4040
target="_blank"
4141
:title="instance.registration.healthUrl"
4242
:href="instance.registration.healthUrl"
43-
class="border-gray-400 ml-1"
43+
class="border-gray-400"
4444
>
45-
<font-awesome-icon :icon="faHeart" />
45+
<font-awesome-icon :icon="faHeartPulse" />
4646
</sba-button>
4747
</sba-button-group>
4848
</div>
@@ -53,8 +53,12 @@
5353
<script setup lang="ts">
5454
import {
5555
faClipboardList,
56+
faCogs,
57+
faGauge,
5658
faHeart,
59+
faHeartPulse,
5760
faHome,
61+
faTachometerAlt,
5862
} from '@fortawesome/free-solid-svg-icons';
5963
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
6064

spring-boot-admin-server-ui/src/main/frontend/views/instances/shell/sidebar.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
<font-awesome-icon
7575
class="h-3 ml-auto hidden md:block transition"
7676
:class="{
77-
'-rotate-90': isGroupOpen(group),
77+
'rotate-180': isGroupOpen(group),
7878
}"
7979
:icon="faChevronUp"
8080
/>

0 commit comments

Comments
 (0)