Browse Source

alpinejs

main
pvincent 8 months ago
parent
commit
3932d26942
  1. 79
      index.html

79
index.html

@ -7,35 +7,90 @@
<script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.tailwindcss.com"></script>
<script src="//unpkg.com/alpinejs" defer></script> <script src="//unpkg.com/alpinejs" defer></script>
<title>Calculator</title> <title>Calculator</title>
<script>
document.addEventListener('alpine:init', () => {
Alpine.data('calculator', () => ({
result: 'Ready',
current: 0,
previous: 0,
operator: '=',
logAll(message = 'LOG') {
console.log(`${message}: ${this.previous} ${this.operator} ${this.current} => ${this.result}`)
},
pressDigit(key) {
this.current = this.current * 10 + key
this.result = this.current
if (this.operator == '=') { this.previous = 0 }
this.logAll()
},
pressPlus() {
this.operator = '+'
this.compute()
this.result = this.operator
this.logAll()
},
pressMinus() {
this.operator = '-'
this.compute()
this.result = this.operator
this.logAll()
},
pressEqual() {
this.compute()
this.operator = '='
this.result = `= ${this.previous}`
this.previous = 0
this.logAll()
},
compute() {
this.logAll('BEFORE')
switch (this.operator) {
case '+':
this.previous = this.previous + this.current
break;
case '-':
this.previous = this.previous - this.current
break;
default:
this.result = this.current
this.previous = this.current
}
this.current = 0
}
}))
console.log('Ready!')
})
</script>
</head> </head>
<body class="bg-zinc-400 flex h-screen justify-center items-start " x-data="{}" @keypress="console.log($event)">
<body class="bg-zinc-400 flex h-screen justify-center items-start " x-data="calculator">
<div id='calculator' class="bg-slate-800 w-screen grid grid-cols-[3fr,1fr] h-screen "> <div id='calculator' class="bg-slate-800 w-screen grid grid-cols-[3fr,1fr] h-screen ">
<div id="screen"
<div id="screen" x-text="result"
class="hover:ring-4 ring-blue-400 my-4 mx-2 p-8 text-right text-[8vh] text-white bg-black col-span-4 row-span-4 h-[20vh] rounded-xl border-double border-4 border-slate-800"> class="hover:ring-4 ring-blue-400 my-4 mx-2 p-8 text-right text-[8vh] text-white bg-black col-span-4 row-span-4 h-[20vh] rounded-xl border-double border-4 border-slate-800">
RESULT
</div> </div>
<div class="grid grid-cols-3 gap-3 mb-4"> <div class="grid grid-cols-3 gap-3 mb-4">
<template x-for="x in 3"> <template x-for="x in 3">
<template x-for="y in 3"> <template x-for="y in 3">
<button
<button @click="pressDigit(x*3+y-3)"
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-800 bg-slate-600 h-full" class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-800 bg-slate-600 h-full"
x-text="x*3+y-3"></button>
x-text="x*3+y-3">
</button>
</template> </template>
</template> </template>
<button
<button @click="pressDigit(0)"
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 col-span-2 bg-slate-600 border-double border-4 border-slate-800 h-full">0</button> class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 col-span-2 bg-slate-600 border-double border-4 border-slate-800 h-full">0</button>
<button <button
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 bg-slate-600 border-double border-4 border-slate-800 h-full">.</button> class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 bg-slate-600 border-double border-4 border-slate-800 h-full">.</button>
</div> </div>
<div class="grid grid-rows-4 gap-3 mb-4"> <div class="grid grid-rows-4 gap-3 mb-4">
<button
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white h-full">-</button>
<button
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white h-full">+</button>
<button
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white row-span-2 h-full">=</button>
<!-- <button @click="pressMinus"
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white h-full">-</button> -->
<button @click="pressPlus"
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white h-full row-span-2 ">+</button>
<button @click="pressEqual"
class="text-[10vh] rounded-2xl mx-2 active:bg-blue-400 hover:ring-4 ring-blue-400 border-double border-4 border-slate-600 bg-slate-900 text-white h-full row-span-2 ">=</button>
</div> </div>
</div> </div>

Loading…
Cancel
Save