animacje userów i spawnów scenerii

This commit is contained in:
2023-11-01 17:20:05 +01:00
parent c550e7598a
commit 1d7fc2955f
2 changed files with 67 additions and 31 deletions
@@ -6,8 +6,12 @@
<span class="text--primary">{{ onlineScenery?.spawns.length || '0' }}</span>
</h3>
<span v-if="onlineScenery">
<span
<transition-group name="spawns-anim" tag="ul">
<li class="badge spawn badge-none" v-if="!onlineScenery || onlineScenery.spawns.length == 0" key="no-spawns">
{{ $t('scenery.no-spawns') }}
</li>
<li
class="badge spawn"
v-for="(spawn, i) in sortedSpawns"
:key="spawn.spawnName + onlineScenery?.dispatcherName + i"
@@ -15,12 +19,8 @@
>
<span class="spawn_name">{{ spawn.spawnName }}</span>
<span class="spawn_length">{{ spawn.spawnLength }}m</span>
</span>
</span>
<span class="badge spawn badge-none" v-if="!onlineScenery || onlineScenery.spawns.length == 0"
>{{ $t('scenery.no-spawns') }}
</span>
</li>
</transition-group>
</section>
</template>
@@ -51,6 +51,10 @@ export default defineComponent({
<style lang="scss" scoped>
@import '../../../styles/variables.scss';
ul {
position: relative;
}
.spawn {
color: white;
@@ -63,4 +67,22 @@ export default defineComponent({
background-color: #007599;
}
}
.spawns-anim {
&-move,
&-enter-active,
&-leave-active {
transition: all 250ms ease;
}
&-enter-from,
&-leave-to {
opacity: 0;
transform: translateX(10px);
}
&-leave-active {
position: absolute;
}
}
</style>
@@ -7,25 +7,24 @@
>&nbsp;/&nbsp;<span class="text--primary">{{ onlineScenery?.maxUsers || 0 }}</span>
</h3>
<div
v-for="train in onlineScenery?.stationTrains"
class="badge user"
:class="train.stopStatus"
:key="train.trainId"
tabindex="0"
@click.prevent="selectModalTrain(train.trainId, $event.currentTarget)"
@keydown.enter="selectModalTrain(train.trainId, $event.currentTarget)"
>
<span class="user_train">{{ train.trainNo }}</span>
<span class="user_name">{{ train.driverName }}</span>
</div>
<transition-group name="users-anim" tag="ul">
<li class="badge user badge-none" v-if="!onlineScenery?.stationTrains?.length" key="no-users">
{{ $t('scenery.no-users') }}
</li>
<div
class="badge user badge-none"
v-if="!onlineScenery?.stationTrains?.length"
>
{{ $t('scenery.no-users') }}
</div>
<li
v-for="train in onlineScenery?.stationTrains"
class="badge user"
:class="train.stopStatus"
:key="train.trainId"
tabindex="0"
@click.prevent="selectModalTrain(train.trainId, $event.currentTarget)"
@keydown.enter="selectModalTrain(train.trainId, $event.currentTarget)"
>
<span class="user_train">{{ train.trainNo }}</span>
<span class="user_name">{{ train.driverName }}</span>
</li>
</transition-group>
</section>
</template>
@@ -57,12 +56,10 @@ $disconnected: slategray;
.info-user-list {
width: 100%;
}
ul {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
ul {
position: relative;
}
.user {
@@ -106,4 +103,21 @@ $disconnected: slategray;
pointer-events: none;
}
}
.users-anim {
&-move,
&-enter-active,
&-leave-active {
transition: all 250ms ease;
}
&-enter-from,
&-leave-to {
opacity: 0;
transform: translateX(5px);
}
&-leave-active {
position: absolute;
}
}
</style>