diff --git a/webroot/js/calculator.js b/webroot/js/calculator.js index 02bdd5b..8fbc137 100644 --- a/webroot/js/calculator.js +++ b/webroot/js/calculator.js @@ -122,26 +122,23 @@ export class Calculator { } setupEventListeners() { - // Button clicks + // Event delegation for calculator buttons document.addEventListener('click', (e) => { - if (e.target.classList.contains('calc-btn')) { - const action = e.target.getAttribute('onclick'); - if (action) { - // Parse the onclick attribute to determine the action - if (action.includes('calcInput')) { - const match = action.match(/calcInput\('([^']+)'\)/); - if (match) this.input(match[1]); - } else if (action.includes('calcOperation')) { - const match = action.match(/calcOperation\('([^']+)'\)/); - if (match) this.operation(match[1]); - } else if (action.includes('calcEquals')) { - this.equals(); - } else if (action.includes('calcClear')) { - this.clear(); - } else if (action.includes('calcBackspace')) { - this.backspace(); - } - } + // Only handle clicks on calculator buttons + if (!e.target.classList.contains('calc-btn')) return; + + const button = e.target; + + if (button.classList.contains('number')) { + this.input(button.textContent); + } else if (button.classList.contains('operation')) { + this.operation(button.textContent); + } else if (button.classList.contains('equals')) { + this.equals(); + } else if (button.classList.contains('clear')) { + this.clear(); + } else if (button.classList.contains('backspace')) { + this.backspace(); } }); @@ -203,38 +200,38 @@ export class Calculator {
diff --git a/webroot/js/main.js b/webroot/js/main.js index 13a5ff7..8eef3ed 100644 --- a/webroot/js/main.js +++ b/webroot/js/main.js @@ -76,20 +76,12 @@ class FilesystemCalculator { setupCalculator() { this.calculator.setupEventListeners(); - - // Make calculator functions globally available for onclick handlers - window.calcInput = (digit) => this.calculator.input(digit); - window.calcOperation = (operation) => this.calculator.operation(operation); - window.calcEquals = () => this.calculator.equals(); - window.calcClear = () => this.calculator.clear(); - window.calcBackspace = () => this.calculator.backspace(); } setupUtilities() { setupTooltips(); setupCopyButtons(); - // Make copyToClipboard globally available for onclick handlers window.copyToClipboard = (elementId) => { import('./utils.js').then(module => { module.copyToClipboard(elementId);