Skip to content

Commit a7a1b03

Browse files
committed
Replace onclick with addEventListener for consistent event handling in components
1 parent fa1b030 commit a7a1b03

File tree

3 files changed

+28
-35
lines changed

3 files changed

+28
-35
lines changed

public/js/components/api-key-manager.js

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,6 @@ export class ApiKeyManager extends BaseComponent {
316316
<div class="empty-state">
317317
<p>You don't have any API keys yet. Create one to get started.</p>
318318
<p>API keys are used to authenticate your requests to our API endpoints.</p>
319-
<button id="create-empty-key-button" class="btn btn-primary">Create Your First API Key</button>
320319
</div>
321320
`;
322321
}
@@ -397,54 +396,48 @@ export class ApiKeyManager extends BaseComponent {
397396
// Create key button
398397
const createKeyButton = this.$('#create-key-button');
399398
if (createKeyButton) {
400-
createKeyButton.onclick = () => this._createApiKey();
401-
}
402-
403-
// Create empty key button (when no keys exist)
404-
const createEmptyKeyButton = this.$('#create-empty-key-button');
405-
if (createEmptyKeyButton) {
406-
createEmptyKeyButton.onclick = () => {
407-
this._newKeyName = 'My First API Key';
408-
this._createApiKey();
409-
};
399+
createKeyButton.addEventListener((e) => {
400+
this._createApiKey()
401+
})
410402
}
403+
411404

412405
// Key name input
413406
const keyNameInput = this.$('#key-name');
414407
if (keyNameInput) {
415-
keyNameInput.oninput = (e) => {
408+
keyNameInput.addEventListener('input', (e) => {
416409
this._newKeyName = e.target.value;
417410
this.render();
418-
};
411+
});
419412

420413
// Also handle Enter key press
421-
keyNameInput.onkeydown = (e) => {
414+
keyNameInput.addEventListener('keydown', (e) => {
422415
if (e.key === 'Enter' && this._newKeyName.trim() !== '') {
423416
this._createApiKey();
424417
}
425-
};
418+
});
426419
}
427420

428421
// Copy key button
429422
const copyKeyButton = this.$('#copy-key-button');
430423
if (copyKeyButton) {
431-
copyKeyButton.onclick = () => this._copyToClipboard();
424+
copyKeyButton.addEventListener('click', () => this._copyToClipboard());
432425
}
433426

434427
// Done button
435428
const doneButton = this.$('#done-button');
436429
if (doneButton) {
437-
doneButton.onclick = () => {
430+
doneButton.addEventListener('click', () => {
438431
this._newKeyValue = null;
439432
this._newKeyName = '';
440433
this.render();
441-
};
434+
});
442435
}
443436

444437
// Toggle and delete buttons
445438
const apiKeysTable = this.$('.api-keys-table');
446439
if (apiKeysTable) {
447-
apiKeysTable.onclick = (e) => {
440+
apiKeysTable.addEventListener('click', (e) => {
448441
const button = e.target.closest('button');
449442
if (!button) return;
450443

@@ -461,7 +454,7 @@ export class ApiKeyManager extends BaseComponent {
461454
this._deleteApiKey(keyId);
462455
}
463456
}
464-
};
457+
});
465458
}
466459
}
467460

public/js/components/language-switcher.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,12 @@ class LanguageSwitcher extends HTMLElement {
204204

205205
if (dropdownButton && dropdownContent) {
206206
// Use direct onclick assignment for more reliable event handling in Shadow DOM
207-
dropdownButton.onclick = (e) => {
207+
dropdownButton.addEventListener('click', (e) => {
208208
e.preventDefault();
209209
e.stopPropagation();
210210
console.log('Language dropdown button clicked');
211211
dropdownContent.classList.toggle('show');
212-
};
212+
});
213213

214214
// Close dropdown when clicking outside
215215
// We need a different approach for Shadow DOM
@@ -235,7 +235,7 @@ class LanguageSwitcher extends HTMLElement {
235235
const dropdownItems = this.shadowRoot.querySelectorAll('.dropdown-item');
236236
dropdownItems.forEach(item => {
237237
// Use direct onclick assignment
238-
item.onclick = (e) => {
238+
item.addEventListener('click', (e) => {
239239
e.preventDefault();
240240
e.stopPropagation();
241241
const lang = item.getAttribute('data-lang');

public/js/components/pf-header.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -405,30 +405,30 @@ class PfHeader extends HTMLElement {
405405
// Add event listeners for theme toggle buttons (both desktop and mobile)
406406
const themeToggles = this.shadowRoot.querySelectorAll('.theme-toggle');
407407
themeToggles.forEach(toggle => {
408-
toggle.onclick = () => {
408+
toggle.addEventListener('click', () => {
409409
this.toggleTheme();
410-
};
410+
});
411411
});
412412

413413
// Add event listener for hamburger menu toggle
414414
const hamburgerMenu = this.shadowRoot.querySelector('.hamburger-menu');
415415
const mobileMenu = this.shadowRoot.querySelector('.mobile-menu');
416416
if (hamburgerMenu && mobileMenu) {
417-
hamburgerMenu.onclick = () => {
417+
hamburgerMenu.addEventListener('click', () => {
418418
hamburgerMenu.classList.toggle('active');
419419
mobileMenu.classList.toggle('active');
420420
// Prevent scrolling when mobile menu is open
421421
document.body.style.overflow = hamburgerMenu.classList.contains('active') ? 'hidden' : '';
422-
};
422+
});
423423

424424
// Close mobile menu when clicking on a link
425425
const mobileLinks = mobileMenu.querySelectorAll('a');
426426
mobileLinks.forEach(link => {
427-
link.onclick = () => {
427+
link.addEventListener('click', () => {
428428
hamburgerMenu.classList.remove('active');
429429
mobileMenu.classList.remove('active');
430430
document.body.style.overflow = '';
431-
};
431+
});
432432
});
433433
}
434434

@@ -679,11 +679,11 @@ class PfHeader extends HTMLElement {
679679
const mobileLogoutLink = mobileMenu.querySelector('.mobile-logout-link');
680680
if (mobileLogoutLink) {
681681
// Use direct onclick assignment
682-
mobileLogoutLink.onclick = (e) => {
682+
mobileLogoutLink.addEventListener('click', (e) => {
683683
e.preventDefault();
684684
e.stopPropagation();
685685
this.logout();
686-
};
686+
});
687687
} else {
688688
console.error('Mobile logout link not found after insertion');
689689
}
@@ -703,12 +703,12 @@ class PfHeader extends HTMLElement {
703703

704704
if (dropdownButton && dropdownMenu) {
705705
// Use direct onclick assignment for more reliable event handling
706-
dropdownButton.onclick = (e) => {
706+
dropdownButton.addEventListener('click', (e) => {
707707
e.preventDefault();
708708
e.stopPropagation();
709709
console.log('Dropdown button clicked, toggling show class');
710710
dropdownMenu.classList.toggle('show');
711-
};
711+
});
712712

713713
// Set up document click handler if not already done
714714
if (!this._documentClickHandler) {
@@ -743,12 +743,12 @@ class PfHeader extends HTMLElement {
743743
const logoutButton = navLinks.querySelector('.logout-button');
744744
if (logoutButton) {
745745
// Use direct onclick assignment
746-
logoutButton.onclick = (e) => {
746+
logoutButton.addEventListener('click', (e) => {
747747
e.preventDefault();
748748
e.stopPropagation();
749749
console.log('Logout button clicked');
750750
this.logout();
751-
};
751+
});
752752
}
753753
} else {
754754
// User is not logged in

0 commit comments

Comments
 (0)