LeagueStats/client/src/components/Match/MatchItems.vue

164 lines
3.7 KiB
Vue
Raw Normal View History

<template>
2023-09-20 20:01:43 +00:00
<div :class="oneRow ? 'ml-2 items-center' : 'items-2-rows flex-wrap'" class="flex">
<Tooltip v-for="(item, index) in items" :key="index">
<template #trigger>
2020-12-13 19:06:17 +00:00
<div class="relative">
<div
:style="{ backgroundImage: itemLink(item) }"
:class="[
oneRow ? 'ml-0.5 w-6 h-6' : 'ml-1 w-8 h-8',
2020-12-13 19:06:17 +00:00
{ 'cursor-pointer': item !== null },
]"
class="relative z-10 bg-center bg-cover rounded-md bg-blue-1000"
>
2023-09-20 20:01:43 +00:00
<div v-if="isMythic(item)" class="w-full h-full rounded-md mythic-inside"></div>
2020-12-13 19:06:17 +00:00
</div>
<div
v-if="isMythic(item)"
class="absolute rounded-md mythic"
:class="oneRow ? 'mythic-sm' : 'mythic-xl'"
></div>
</div>
</template>
<template v-if="item !== null" #default>
<div class="flex max-w-md p-2 text-xs text-left text-white select-none">
<div
2020-11-14 17:28:39 +00:00
:style="{ backgroundImage: itemLink(item) }"
class="flex-shrink-0 w-12 h-12 ml-1 bg-center bg-cover rounded-md bg-blue-1000"
></div>
<div class="ml-2 leading-none">
<div class="text-base">{{ itemName(item.name) }}</div>
<div class="mt-1">
<span class="text-blue-200">Price:</span>
2023-09-20 20:01:43 +00:00
<span class="ml-1 text-sm font-semibold text-yellow-500">{{ item.price }}</span>
</div>
2020-11-14 17:28:39 +00:00
<div
v-html="item.description"
class="mt-1 font-light text-blue-200 item-description"
></div>
</div>
</div>
</template>
</Tooltip>
</div>
</template>
<script>
import Tooltip from '@/components/Common/Tooltip.vue'
export default {
components: {
2023-09-20 20:01:43 +00:00
Tooltip,
},
props: {
oneRow: {
type: Boolean,
2023-09-20 20:01:43 +00:00
default: false,
},
items: {
type: Array,
2023-09-20 20:01:43 +00:00
required: true,
},
2020-11-14 17:28:39 +00:00
},
methods: {
2020-12-13 19:06:17 +00:00
isMythic(item) {
2023-09-14 16:53:43 +00:00
return item && item.isMythic
2020-12-13 19:06:17 +00:00
},
2020-11-14 17:28:39 +00:00
itemLink(item) {
if (!item) {
return null
}
// Fix to still make work the old items links (before season 11)
const originalUrl = item.image
2023-09-20 20:01:43 +00:00
const newUrl = originalUrl.includes('/global/default/assets/items/')
? originalUrl
: originalUrl.replace('latest', '10.22')
2020-11-14 17:28:39 +00:00
return `url('${newUrl}')`
},
itemName(name) {
// Remove placeholders in item names (e.g.: for Ornn items)
return name.replace(/%[^%]*%/, '')
2023-09-20 20:01:43 +00:00
},
},
}
</script>
<style scoped>
2020-12-13 19:06:17 +00:00
.mythic {
background: linear-gradient(
195deg,
rgb(255, 197, 47) 0%,
rgb(255, 231, 146) 50%,
rgb(214, 128, 0) 100%
);
}
.mythic-sm {
top: -1px;
left: 1px;
width: calc(1.5rem + 2px);
height: calc(1.5rem + 2px);
}
.mythic-xl {
top: -2px;
left: 2px;
width: calc(2rem + 4px);
height: calc(2rem + 4px);
}
.mythic-inside {
box-shadow: rgb(26, 32, 44) 0px 0px 0px 1px inset;
}
.items-2-rows {
width: 7rem;
height: 4.5rem;
}
.item-description >>> stats {
@apply text-white leading-tight;
}
.item-description >>> br + br {
@apply hidden;
}
.item-description >>> stats br {
@apply block;
}
.item-description >>> li {
@apply block mt-2;
}
.item-description >>> passive {
@apply text-white font-normal;
}
.item-description >>> active {
@apply inline-block text-white font-bold mt-2;
}
.item-description >>> unique,
.item-description >>> li > passive:first-child,
.item-description >>> rarityMythic {
@apply text-white font-bold block mt-2;
}
.item-description >>> font {
@apply text-blue-400;
}
.item-description >>> rules {
@apply inline-block mt-2 text-blue-400 italic;
}
.item-description >>> rules active {
@apply inline text-white font-normal;
}
</style>