Advertisement
OpataJoshua

Untitled

Oct 6th, 2022
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. <template>
  2. <form class="card" @submit.prevent="calculate">
  3. <h3 class="title">SIMPLE CALCULATOR</h3>
  4. <div class="inputs-wrapper">
  5. <input id="num1" v-model="firstNumber" type="number" placeholder="First Number" />
  6. <select id="operator" v-model="op">
  7. <option value="+">plus</option>
  8. <option value="-">minus</option>
  9. <option value="*">times</option>
  10. <option value="/">divided by</option>
  11. </select>
  12. <input id="num2" v-model="secondNumber" type="number" placeholder="Second number" />
  13. </div>
  14. <button type="submit">Calculate</button>
  15. <div class="answer-box">
  16. <p class="answer-label">Your answer is</p>
  17. <h4 id="answer-value" :class="isError? 'is-error': 'is-success'">{{answer}}</h4>
  18. </div>
  19. </form>
  20. </template>
  21.  
  22. <script>
  23. export default {
  24. data() {
  25. return {
  26. firstNumber: "",
  27. secondNumber: "",
  28. op: "+",
  29. answer: "Enter values",
  30. isError: false
  31. }
  32. },
  33. methods: {
  34. calculate() {
  35. if (this.firstNumber === "" || this.secondNumber === "") {
  36. this.answer = "First number and second number must not be empty";
  37. this.isError=true;
  38. return;
  39. }
  40.  
  41. this.answer = eval(this.firstNumber + this.op + this.secondNumber);
  42. this.isError = false;
  43. }
  44. }
  45. }
  46. </script>
  47.  
  48. <style scoped>
  49. body {
  50. margin: 0px;
  51. }
  52.  
  53. .is-error{
  54. color: red;
  55. }
  56.  
  57. .is-success{
  58. color: green;
  59. }
  60.  
  61. #app {
  62. height: 100vh;
  63. width: 100vw;
  64. display: flex;
  65. align-items: center;
  66. justify-content: center;
  67. background: #F2F1F1;
  68. }
  69.  
  70. .card {
  71. background: white;
  72. color: black;
  73. border-radius: 11px;
  74. padding: 30px 60px;
  75. display: flex;
  76. flex-direction: column;
  77. gap: var(--items-spacing);
  78. }
  79.  
  80. .title {
  81. text-align: center;
  82. }
  83.  
  84. .inputs-wrapper {
  85. display: flex;
  86. gap: var(--items-spacing);
  87. }
  88.  
  89. input,
  90. select {
  91. background: #F0F2F3;
  92. border: none;
  93. border-radius: var(--border-radius);
  94. padding: 8px 10px;
  95. }
  96.  
  97. button[type=submit] {
  98. background: #3190C6;
  99. padding: 10px;
  100. color: white;
  101. border-radius: var(--border-radius);
  102. border: none;
  103. }
  104.  
  105. .answer-box {
  106. display: flex;
  107. flex-direction: column;
  108. align-items: center;
  109. background: #E7EEF2;
  110. border-radius: var(--border-radius);
  111. padding: 20px;
  112. }
  113.  
  114. .answer-label {
  115. margin: 0px;
  116. }
  117.  
  118. #answer-txt {
  119. margin: 0px;
  120. }
  121. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement