Skip to content

Commit d4519ba

Browse files
committed
feat(tab-selector): replace badge with amount
1 parent 27041a3 commit d4519ba

File tree

4 files changed

+8
-24
lines changed

4 files changed

+8
-24
lines changed

src/components/tab-selector.vue

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { useVModel } from "@vueuse/core";
1313
interface Tab {
1414
value: string
1515
text: string
16-
badge?: boolean
1716
}
1817
1918
const props = defineProps<{ modelValue: Tab["value"], items: Tab[] }>();
@@ -24,8 +23,7 @@ function getTabClassList(tab: Tab): Record<string, boolean> {
2423
const key = "tab-selector__button";
2524
return {
2625
[key]: true,
27-
[`${key}--active`]: tab.value === selectedTab.value,
28-
[`${key}--badge`]: !!tab.badge
26+
[`${key}--active`]: tab.value === selectedTab.value
2927
};
3028
}
3129
</script>
@@ -39,20 +37,6 @@ function getTabClassList(tab: Tab): Record<string, boolean> {
3937
color: var(--accent);
4038
border-color: var(--accent);
4139
}
42-
&--badge {
43-
position: relative;
44-
&::after {
45-
position: absolute;
46-
top: calc(0% - 0.375rem);
47-
left: calc(100% - 0.375rem);
48-
width: 0.75rem;
49-
height: 0.75rem;
50-
content: '';
51-
background: var(--accent);
52-
border-radius: 50%;
53-
box-shadow: 0 0 1.25rem 0 var(--accent);
54-
}
55-
}
5640
}
5741
}
5842
</style>

src/store/events.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ export function useEventsStore() {
4141
get: () => storage.value.data,
4242
set: (value) => { storage.value.data = value; }
4343
});
44+
const amount = computed<number>(() => events.value.length);
4445
const lastUpdate = computed({
4546
get: () => storage.value.lastUpdate,
4647
set: (value) => { storage.value.lastUpdate = value; }
4748
});
48-
const isEmpty = computed(() => !Object.keys(events.value).length);
4949
const { settings } = useSettingsStore();
5050
const isFeedAvailable = computed(() => !!settings.value.authToken && !!settings.value.username);
5151

@@ -80,7 +80,7 @@ export function useEventsStore() {
8080

8181
return {
8282
events,
83-
isEmpty,
83+
amount,
8484
isFeedAvailable,
8585
updateEvents,
8686
updateCheck

src/views/FeedView.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<fieldset class="user-feed">
33
<legend>Recent events</legend>
4-
<span v-if="isEmpty">
4+
<span v-if="!amount">
55
No recent events
66
</span>
77
<ul v-else>
@@ -17,7 +17,7 @@
1717
<script setup lang="ts">
1818
import { useEventsStore } from "@/store/events";
1919
20-
const { events, isEmpty, updateCheck } = useEventsStore();
20+
const { events, amount, updateCheck } = useEventsStore();
2121
updateCheck();
2222
</script>
2323
<style lang="scss">

src/views/HomeView.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ const pages = computed(() => router.currentRoute.value.matched[0].children.map((
2828
const isTabRoute = (name: string): name is Tab => pages.value.includes(name);
2929
3030
const { repositories } = useRepositoriesStore();
31-
const { isEmpty, isFeedAvailable } = useEventsStore();
31+
const { isFeedAvailable, amount } = useEventsStore();
3232
3333
const tabs = computed(() => {
34-
const entries: { value: Tab, text: string, badge?: boolean }[] = [
34+
const entries: { value: Tab, text: string }[] = [
3535
{ value: "Repositories", text: "Repositories" },
3636
{ value: "Dependencies", text: "Dependencies" }
3737
];
38-
if (isFeedAvailable.value) entries.push({ value: "User Feed", text: "User Feed", badge: !isEmpty.value });
38+
if (isFeedAvailable.value) entries.push({ value: "User Feed", text: `User Feed (${amount.value})` });
3939
return entries;
4040
});
4141

0 commit comments

Comments
 (0)