Files
TLA/resources/js/components/Wordle.vue
T
2026-09-05 13:00:41 +02:00

83 lines
2.6 KiB
Vue

<template>
<Modal v-model:open="open">
<h1>Wordle for word {{ index }}</h1>
<br>
<div class="flex-container-a gap-1.5">
<template v-for="i in max_guesses">
<WordleRow v-if="guesses.length > i" :guess="guesses[i]" :length="correct.length" :correct="correct"/>
<UForm @submit="onsubmit" v-if="guesses.length == i">
<UPinInput v-if="guesses[guesses.length-1].toString().replace(/\,/gi, '') != correct" default class="mb-2" autofocus v-model="guess" color="neutral" :length="correct.length" size="lg" :correct="correct" />
<WordleRow v-else :length="correct.length"/>
<UButton type="submit" style="display: none;">
Submit
</UButton>
</UForm>
<WordleRow v-if="guesses.length < i" :length="correct.length"/>
</template>
<template v-if="guesses[guesses.length-1].toString().replace(/\,/gi, '') == correct">
You guessed word #{{ index }}! It was '{{ correct }}'
</template>
</div>
<UButton @click="onsubmit" class="m-1.5" v-if="guesses[guesses.length-1].toString().replace(/\,/gi, '') != correct">
Submit
</UButton>
</Modal>
</template>
<script setup lang="ts">
import Modal from './Modal.vue';
import WordleRow from './WordleRow.vue';
</script>
<script lang="ts">
export default {
data() {
return {
max_guesses: 10,
open: true,
guess: '',
guesses: [''],
}
},
props: {
correct: {
type: String,
default: 'nagyonhosszezugyselesz'
},
index: {
type: Number,
default: 0,
}
},
mounted() {
this.guesses = JSON.parse(localStorage.getItem('guesses-' + this.index) || '[""]');
this.max_guesses = this.correct.length > 5 ? this.correct.length : 6
},
methods: {
onsubmit () {
if (this.guess.length == this.correct.length) {
this.guesses.push(this.guess);
this.guess = '';
localStorage.setItem('guesses-' + this.index, JSON.stringify(this.guesses));
}
}
},
}
</script>
<style scoped>
.flex-container-a {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
}
</style>