Skip to content

Instantly share code, notes, and snippets.

View WesleySmits's full-sized avatar

Wesley Smits WesleySmits

View GitHub Profile
@WesleySmits
WesleySmits / calculator-header.html
Created October 16, 2021 08:47
Simple web calculator: Header of calculator containing the title and display
<header class="calculator__display">
<h2 class="calculator__title">TypeScript calculator</h2>
<div class="calculator__screen">
<span class="screen-value" data-role="display">0</span>
</div>
</header>
@WesleySmits
WesleySmits / calculator-buttons.html
Created October 16, 2021 08:47
Simple web calculator: Buttons of the calculator
<section class="buttons grid">
<button class="red" value="ac">AC</button>
<button class="red" value="ce">ce</button>
<button value="/">÷</button>
<button value="*">x</button>
<button value="7">7</button>
<button value="8">8</button>
<button value="9">9</button>
<button value="-">-</button>
@WesleySmits
WesleySmits / calculator-class.ts
Created October 16, 2021 08:48
Simple web calculator: Simple custom element
class Calculator extends HTMLElement {
constructor() {
super();
}
}
customElements.define('ws-calculator', Calculator);
@WesleySmits
WesleySmits / main.pcss
Last active October 16, 2021 10:09
Simple web calculator: Styling for the calculator
body {
background: darkgray;
}
.calculator {
display: block;
height: 440px;
width: 300px;
margin-top: 10%;
margin-left: auto;
@WesleySmits
WesleySmits / calculator-properties-ts.diff
Created October 16, 2021 08:52
Simple web calculator: Adding properties to calculator class
class Calculator extends HTMLElement {
+ #display: HTMLElement | null = null;
+ #buttons: HTMLButtonElement[] = [];
+ #query = '';
+ public get query(): string {
+ return this.#query;
+ }
@WesleySmits
WesleySmits / event-listeners.ts
Created October 16, 2021 08:54
Simple web calculator: Adding event bindings to calculator class
protected connectedCallback(): void {
this.#setEventListeners();
}
protected disconnectedCallback(): void {
this.#unsetEventListeners();
}
#setEventListeners(): void {
this.#buttons.forEach((button) => {
@WesleySmits
WesleySmits / handle-button-click.ts
Created October 16, 2021 08:55
Simple web calculator: Handle button click method
#handleButtonClick(event: Event): void {
const target = event.target as HTMLButtonElement;
if (target === null) {
return;
}
const { value } = target;
const userValue = target.innerText;
}
@WesleySmits
WesleySmits / handle-button-click.ts.diff
Created October 16, 2021 08:57
Simple web calculator: Added special button event handling
#handleButtonClick(event: Event): void {
const target = event.target as HTMLButtonElement;
if (target === null) {
return;
}
const { value } = target;
const userValue = target.innerText;
+ switch (value) {
@WesleySmits
WesleySmits / perform-calculation.ts
Created October 16, 2021 08:58
Simple web calculator: perform-calculation method
#performCalculation(): void {
}
@WesleySmits
WesleySmits / update-display.ts
Created October 16, 2021 08:58
Simple web calculator: Update display method
#updateDisplay(): void {
if (this.#display === null) {
return;
}
this.#display.innerText = this.query;
}