From b72234a6986b418623bbdf481e2eeae76531ddff Mon Sep 17 00:00:00 2001 From: Julien Gissinger Date: Tue, 17 Sep 2024 16:43:25 +0200 Subject: [PATCH] feat(carrier): add some assertions --- .../components/navbar-form-error-handler.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/admin-dev/themes/new-theme/js/components/navbar-form-error-handler.ts b/admin-dev/themes/new-theme/js/components/navbar-form-error-handler.ts index a21b0969153cf..1d7e0db5e99a8 100644 --- a/admin-dev/themes/new-theme/js/components/navbar-form-error-handler.ts +++ b/admin-dev/themes/new-theme/js/components/navbar-form-error-handler.ts @@ -36,11 +36,11 @@ type NavbarFormErrorHandlerType = { * Use this component only if you are using a form with NavbarHandler. */ export default class NavbarFormErrorHandler { - form: HTMLElement; + private readonly form: HTMLElement; - navbarHandler: NavbarHandler; + private readonly navbarHandler: NavbarHandler; - firstInvalidField: Element | null = null; + private firstInvalidField: HTMLElement | null = null; constructor(options: NavbarFormErrorHandlerType) { this.navbarHandler = options.navbarHandler; @@ -50,7 +50,7 @@ export default class NavbarFormErrorHandler { this.resetInvalidField(); } - private findRequiredFieldsFromForm(): NodeListOf { + private findRequiredFieldsFromForm(): NodeListOf { return this.form.querySelectorAll('[required]'); } @@ -61,7 +61,16 @@ export default class NavbarFormErrorHandler { this.firstInvalidField = field; const tab = field.closest('[role="tabpanel"]'); - this.navbarHandler.switchToTarget(`#${tab?.id}`); + + if (!tab || typeof tab === null) { + throw new Error('NavbarFormErrorHandler: Cannot find the tab that contains some form fields in error.'); + } + + if (!('id' in tab)) { + throw new Error('NavbarFormErrorHandler: Id missing from the tab.'); + } + + this.navbarHandler.switchToTarget(`#${tab.id}`); field.scrollIntoView({ behavior: 'smooth',