Repository: exadel-inc/esl
Pull request #1485 (2023-02-14 13:42:03)

Add Type Script `override` keyword
 - [x] enable the `noImplicitOverride` options in the `tsconfig.json` file to make this keyword required
 - [x]  fix all overridden methods in the code

Closes: #1455 





Patch:
diff --git a/pages/src/anchor/anchor-link.ts b/pages/src/anchor/anchor-link.ts
index 0a52ff8df..509fbebc9 100644
--- a/pages/src/anchor/anchor-link.ts
+++ b/pages/src/anchor/anchor-link.ts
@@ -7,7 +7,7 @@ import {ESLEventUtils} from '../../../src/modules/esl-utils/dom/events';
  * Demo sample of anchor mixin
  */
 export class ESLDemoAnchorLink extends ESLMixinElement {
-  static is = 'esl-d-anchor';
+  static override is = 'esl-d-anchor';
 
   @memoize()
   public get anchorHref(): string | null {
diff --git a/pages/src/back-link/back-link.ts b/pages/src/back-link/back-link.ts
index bdd747d93..fda345ae8 100644
--- a/pages/src/back-link/back-link.ts
+++ b/pages/src/back-link/back-link.ts
@@ -1,9 +1,9 @@
 import {ESLMixinElement} from '../../../src/modules/esl-mixin-element/core';
 
 export class ESLDemoBackLink extends ESLMixinElement {
-  static is = 'esl-d-back-link';
+  static override is = 'esl-d-back-link';
 
-  public connectedCallback(): void {
+  public override connectedCallback(): void {
     super.connectedCallback();
     if (!document.referrer) return;
     const refUrl = new URL(document.referrer);
diff --git a/pages/src/landing/marquee/marquee.ts b/pages/src/landing/marquee/marquee.ts
index 4adf9b450..ab1265159 100644
--- a/pages/src/landing/marquee/marquee.ts
+++ b/pages/src/landing/marquee/marquee.ts
@@ -4,7 +4,7 @@ import {range} from '../../../../src/modules/esl-utils/misc/array';
 import {isIE} from '../../../../src/modules/esl-utils/environment/device-detector';
 
 export class ESLDemoMarquee extends ESLBaseElement {
-  static is = 'esl-d-marquee';
+  static override is = 'esl-d-marquee';
   static STARS_SEL = 'use';
 
   @attr({defaultValue: '4'}) public targetsNumber: string;
@@ -14,12 +14,12 @@ export class ESLDemoMarquee extends ESLBaseElement {
   private _animateTimer: number = 0;
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     if (isIE) return;
     this.startAnimation();
   }
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     this.stopAnimation();
     super.disconnectedCallback();
   }
diff --git a/pages/src/navigation/header/header-search.ts b/pages/src/navigation/header/header-search.ts
index ff7a00a19..d964e6cef 100644
--- a/pages/src/navigation/header/header-search.ts
+++ b/pages/src/navigation/header/header-search.ts
@@ -9,17 +9,17 @@ import {requestGss} from '../../search/search-script';
 import type {ESLToggleableActionParams} from '../../../../src/modules/esl-toggleable/core';
 
 export class ESLDemoSearchBox extends ESLToggleable {
-  static is = 'esl-d-search-box';
+  static override is = 'esl-d-search-box';
 
   @attr() public postCls: string;
   @attr() public postClsDelay: string;
   @attr({defaultValue: '::find(input)'}) public firstFocusable: string;
 
-  @boolAttr() public autofocus: boolean;
+  @boolAttr() public override autofocus: boolean;
 
-  @prop() public closeOnOutsideAction = true;
+  @prop() public override closeOnOutsideAction = true;
 
-  public onShow(params: ESLToggleableActionParams): void {
+  public override onShow(params: ESLToggleableActionParams): void {
     CSSClassUtils.add(this, this.postCls);
     requestGss().then(() => this.showSearchElements(params));
   }
@@ -37,7 +37,7 @@ export class ESLDemoSearchBox extends ESLToggleable {
     }
   }
 
-  public onHide(params: ESLToggleableActionParams): void {
+  public override onHide(params: ESLToggleableActionParams): void {
     super.onHide(params);
     window.setTimeout(() => {
       CSSClassUtils.remove(this, this.postCls);
diff --git a/pages/src/navigation/sidebar/sidebar.ts b/pages/src/navigation/sidebar/sidebar.ts
index 088932a18..efe3f8f07 100644
--- a/pages/src/navigation/sidebar/sidebar.ts
+++ b/pages/src/navigation/sidebar/sidebar.ts
@@ -10,10 +10,10 @@ interface SidebarActionParams extends ESLToggleableActionParams {
 }
 
 export class ESLDemoSidebar extends ESLToggleable {
-  static is = 'esl-d-sidebar';
+  static override is = 'esl-d-sidebar';
 
-  @prop() public closeOnEsc = true;
-  @prop() public closeOnOutsideAction = true;
+  @prop() public override closeOnEsc = true;
+  @prop() public override closeOnOutsideAction = true;
 
   @prop() public submenus: string = '.sidebar-nav-secondary';
   @prop() public activeMenuAttr: string = 'data-open';
@@ -25,7 +25,7 @@ export class ESLDemoSidebar extends ESLToggleable {
   }
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
   }
 
@@ -33,7 +33,7 @@ export class ESLDemoSidebar extends ESLToggleable {
     this.open ? localStorage.removeItem('sidebar-collapsed') : localStorage.setItem('sidebar-collapsed', 'true');
   }
 
-  protected setInitialState(): void {
+  protected override setInitialState(): void {
     const isDesktop = ESLMediaQuery.for('@+MD').matches;
     const isStoredOpen = !localStorage.getItem('sidebar-collapsed');
     this.toggle(isDesktop && isStoredOpen, {force: true, initiator: 'init', immediate: true});
@@ -49,13 +49,13 @@ export class ESLDemoSidebar extends ESLToggleable {
       .forEach((menu) => menu.show({noAnimate, activator: this}));
   }
 
-  protected updateA11y(): void {
+  protected override updateA11y(): void {
     const targetEl = this.$a11yTarget;
     if (!targetEl) return;
     targetEl.setAttribute('aria-expanded', String(this.open));
   }
 
-  protected onShow(params: SidebarActionParams): void {
+  protected override onShow(params: SidebarActionParams): void {
     this._animation = !params.immediate;
     super.onShow(params);
     this.expandActive(params.initiator === 'init');
@@ -63,7 +63,7 @@ export class ESLDemoSidebar extends ESLToggleable {
       this.storeState();
     }
   }
-  protected onHide(params: SidebarActionParams): void {
+  protected override onHide(params: SidebarActionParams): void {
     this._animation = !params.immediate;
     super.onHide(params);
     this.collapseAll();
@@ -82,7 +82,7 @@ export class ESLDemoSidebar extends ESLToggleable {
   }
 
   @listen({inherit: true})
-  protected _onOutsideAction(e: Event): void {
+  protected override _onOutsideAction(e: Event): void {
     if (ESLMediaQuery.for('@+MD').matches) return;
     super._onOutsideAction(e);
   }
diff --git a/pages/src/search/search.ts b/pages/src/search/search.ts
index 2734f72e9..1b48fd055 100644
--- a/pages/src/search/search.ts
+++ b/pages/src/search/search.ts
@@ -4,10 +4,10 @@ import {ready} from '../../../src/modules/esl-utils/decorators';
 import {requestGss} from './search-script';
 
 export class ESLDemoSearchPageWrapper extends ESLBaseElement {
-  static is = 'esl-d-search-page-wrapper';
+  static override is = 'esl-d-search-page-wrapper';
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     requestGss().then(() => this.afterSearchScriptLoad());
   }
 
diff --git a/src/modules/draft/esl-carousel/core/esl-carousel.ts b/src/modules/draft/esl-carousel/core/esl-carousel.ts
index bd0b88a84..38459a291 100644
--- a/src/modules/draft/esl-carousel/core/esl-carousel.ts
+++ b/src/modules/draft/esl-carousel/core/esl-carousel.ts
@@ -20,7 +20,7 @@ interface CarouselConfig { // Registry
 export class ESLCarousel extends ESLBaseElement {
   public static Slide = ESLCarouselSlide;
 
-  public static is = 'esl-carousel';
+  public static override is = 'esl-carousel';
 
   static get observedAttributes() {
     return ['config'];
@@ -154,7 +154,7 @@ export class ESLCarousel extends ESLBaseElement {
     this.goTo((this.firstIndex + this.activeCount + this.count) % this.count, 'right');
   }
 
-  protected connectedCallback() {
+  protected override connectedCallback() {
     super.connectedCallback();
 
     this.update(true);
@@ -164,7 +164,7 @@ export class ESLCarousel extends ESLBaseElement {
     ESLCarouselViewRegistry.instance.addListener(this._onRegistryChange);
   }
 
-  protected disconnectedCallback() {
+  protected override disconnectedCallback() {
     super.disconnectedCallback();
     this._unbindEvents();
 
@@ -285,7 +285,7 @@ export class ESLCarousel extends ESLBaseElement {
     this._plugins.delete(plugin.key);
   }
 
-  public static register(tagName?: string) {
+  public static override register(tagName?: string) {
     ESLCarouselSlide.register((tagName || ESLCarousel.is) + '-slide');
     customElements.whenDefined(ESLCarouselSlide.is).then(() => super.register.call(this, tagName));
   }
diff --git a/src/modules/draft/esl-carousel/plugin/esl-carousel-autoplay.plugin.ts b/src/modules/draft/esl-carousel/plugin/esl-carousel-autoplay.plugin.ts
index 4fe55242e..1b1478cf8 100644
--- a/src/modules/draft/esl-carousel/plugin/esl-carousel-autoplay.plugin.ts
+++ b/src/modules/draft/esl-carousel/plugin/esl-carousel-autoplay.plugin.ts
@@ -10,7 +10,7 @@ import {ESLCarouselPlugin} from './esl-carousel-plugin';
  */
 @ExportNs('CarouselPlugins.Autoplay')
 export class ESLCarouselAutoplayPlugin extends ESLCarouselPlugin {
-  public static is = 'esl-carousel-autoplay-plugin';
+  public static override is = 'esl-carousel-autoplay-plugin';
 
   @attr({defaultValue: 'next'}) public direction: string;
   @attr({defaultValue: '5000'}) public timeout: number;
@@ -28,7 +28,7 @@ export class ESLCarouselAutoplayPlugin extends ESLCarouselPlugin {
     return this._active;
   }
 
-  public bind(): void {
+  public override bind(): void {
     this.carousel.addEventListener('mouseover', this._onInteract);
     this.carousel.addEventListener('mouseout', this._onInteract);
     this.carousel.addEventListener('focusin', this._onInteract);
@@ -37,7 +37,7 @@ export class ESLCarouselAutoplayPlugin extends ESLCarouselPlugin {
     this.start();
     // console.log('Auto-advance plugin attached successfully to ', this.carousel);
   }
-  public unbind(): void {
+  public override unbind(): void {
     this.carousel.removeEventListener('mouseover', this._onInteract);
     this.carousel.removeEventListener('mouseout', this._onInteract);
     this.carousel.removeEventListener('focusin', this._onInteract);
diff --git a/src/modules/draft/esl-carousel/plugin/esl-carousel-dots.plugin.ts b/src/modules/draft/esl-carousel/plugin/esl-carousel-dots.plugin.ts
index 9bfb48821..4c50bc5e9 100644
--- a/src/modules/draft/esl-carousel/plugin/esl-carousel-dots.plugin.ts
+++ b/src/modules/draft/esl-carousel/plugin/esl-carousel-dots.plugin.ts
@@ -9,17 +9,17 @@ import {ESLCarouselPlugin} from './esl-carousel-plugin';
  */
 @ExportNs('CarouselPlugins.Dots')
 export class ESLCarouselDotsPlugin extends ESLCarouselPlugin {
-  public static is = 'esl-carousel-dots';
-  public static freePlacement = true;
+  public static override is = 'esl-carousel-dots';
+  public static override freePlacement = true;
 
   private _onUpdate = () => this.rerender();
 
-  public bind() {
+  public override bind() {
     this.rerender();
     this.carousel.addEventListener('esl:slide:changed', this._onUpdate);
   }
 
-  public unbind() {
+  public override unbind() {
     this.innerHTML = '';
     this.carousel.removeEventListener('esl:slide:changed', this._onUpdate);
   }
diff --git a/src/modules/draft/esl-carousel/plugin/esl-carousel-link.plugin.ts b/src/modules/draft/esl-carousel/plugin/esl-carousel-link.plugin.ts
index 707c31104..ad8dc09d9 100644
--- a/src/modules/draft/esl-carousel/plugin/esl-carousel-link.plugin.ts
+++ b/src/modules/draft/esl-carousel/plugin/esl-carousel-link.plugin.ts
@@ -8,7 +8,7 @@ import {ESLCarouselPlugin} from './esl-carousel-plugin';
  */
 @ExportNs('CarouselPlugins.Link')
 export class ESLCarouselLinkPlugin extends ESLCarouselPlugin {
-  public static is = 'esl-carousel-link-plugin';
+  public static override is = 'esl-carousel-link-plugin';
 
   public static get observedAttributes() {
     return ['to', 'direction'];
@@ -24,7 +24,7 @@ export class ESLCarouselLinkPlugin extends ESLCarouselPlugin {
     this._onSlideChange = this._onSlideChange.bind(this);
   }
 
-  public bind() {
+  public override bind() {
     if (!this.target) {
       this.target = document.querySelector(this.to);
     }
@@ -38,7 +38,7 @@ export class ESLCarouselLinkPlugin extends ESLCarouselPlugin {
     }
   }
 
-  public unbind() {
+  public override unbind() {
     this.target && this.target.removeEventListener('esl:slide:changed', this._onSlideChange);
     this.carousel && this.carousel.removeEventListener('esl:slide:changed', this._onSlideChange);
   }
diff --git a/src/modules/draft/esl-carousel/plugin/esl-carousel-plugin.ts b/src/modules/draft/esl-carousel/plugin/esl-carousel-plugin.ts
index 428897450..2f25a683c 100644
--- a/src/modules/draft/esl-carousel/plugin/esl-carousel-plugin.ts
+++ b/src/modules/draft/esl-carousel/plugin/esl-carousel-plugin.ts
@@ -40,7 +40,7 @@ export abstract class ESLCarouselPlugin extends ESLBaseElement {
     return this._carousel!;
   }
 
-  protected connectedCallback() {
+  protected override connectedCallback() {
     const carousel = this.findCarouselOwner();
     if (carousel instanceof ESLCarousel) {
       this._carousel = carousel;
@@ -49,7 +49,7 @@ export abstract class ESLCarouselPlugin extends ESLBaseElement {
       throw new Error('Invalid esl-carousel-plugin placement: plugin element should be placed under the esl-carousel node');
     }
   }
-  protected disconnectedCallback() {
+  protected override disconnectedCallback() {
     if (this.carousel) {
       this.carousel._removePlugin(this);
       delete this._carousel;
@@ -68,7 +68,7 @@ export abstract class ESLCarouselPlugin extends ESLBaseElement {
    */
   public abstract unbind(): void;
 
-  public static register(tagName?: string) {
+  public static override register(tagName?: string) {
     customElements.whenDefined(ESLCarousel.is).then(() => super.register.call(this, tagName));
   }
 }
diff --git a/src/modules/draft/esl-carousel/plugin/esl-carousel-touch.plugin.ts b/src/modules/draft/esl-carousel/plugin/esl-carousel-touch.plugin.ts
index fd5396da6..730addce9 100644
--- a/src/modules/draft/esl-carousel/plugin/esl-carousel-touch.plugin.ts
+++ b/src/modules/draft/esl-carousel/plugin/esl-carousel-touch.plugin.ts
@@ -10,12 +10,12 @@ import type {Point} from '../../../esl-utils/dom/events';
  */
 @ExportNs('CarouselPlugins.Touch')
 export class ESLCarouselTouchPlugin extends ESLCarouselPlugin {
-  public static is = 'esl-carousel-touch-plugin';
+  public static override is = 'esl-carousel-touch-plugin';
 
   private isTouchStarted = false;
   private startPoint: Point = {x: 0, y: 0};
 
-  public bind() {
+  public override bind() {
     const events = DeviceDetector.TOUCH_EVENTS;
 
     this.carousel.addEventListener(events.START, this.onTouchStart);
@@ -23,7 +23,7 @@ export class ESLCarouselTouchPlugin extends ESLCarouselPlugin {
     this.carousel.addEventListener(events.END, this.onTouchEnd);
   }
 
-  public unbind() {
+  public override unbind() {
     const events = DeviceDetector.TOUCH_EVENTS;
 
     this.carousel.removeEventListener(events.START, this.onTouchStart);
diff --git a/src/modules/esl-a11y-group/core/esl-a11y-group.ts b/src/modules/esl-a11y-group/core/esl-a11y-group.ts
index b05848b4b..d2fe4acc8 100644
--- a/src/modules/esl-a11y-group/core/esl-a11y-group.ts
+++ b/src/modules/esl-a11y-group/core/esl-a11y-group.ts
@@ -15,7 +15,7 @@ export type GroupTarget = 'next' | 'prev' | 'current';
  */
 @ExportNs('A11yGroup')
 export class ESLA11yGroup extends ESLBaseElement {
-  public static is = 'esl-a11y-group';
+  public static override is = 'esl-a11y-group';
 
   /** Mapping of the keyboard keys to {@link GroupTarget} */
   public static KEY_MAP: Record<string, GroupTarget> = {
diff --git a/src/modules/esl-alert/core/esl-alert.ts b/src/modules/esl-alert/core/esl-alert.ts
index 8c6d1ba74..4395ed68b 100644
--- a/src/modules/esl-alert/core/esl-alert.ts
+++ b/src/modules/esl-alert/core/esl-alert.ts
@@ -28,8 +28,8 @@ export interface AlertActionParams extends ESLToggleableRequestDetails {
  */
 @ExportNs('Alert')
 export class ESLAlert extends ESLToggleable {
-  public static is = 'esl-alert';
-  public static observedAttributes = ['target'];
+  public static override is = 'esl-alert';
+  public static override observedAttributes = ['target'];
 
   /** Default show/hide params for all ESLAlert instances */
   public static defaultConfig: AlertActionParams = {
diff --git a/src/modules/esl-animate/core/esl-animate.ts b/src/modules/esl-animate/core/esl-animate.ts
index 18f8a9274..6da766be1 100644
--- a/src/modules/esl-animate/core/esl-animate.ts
+++ b/src/modules/esl-animate/core/esl-animate.ts
@@ -17,7 +17,7 @@ import {ESLAnimateService} from './esl-animate-service';
  */
 @ExportNs('Animate')
 export class ESLAnimate extends ESLBaseElement {
-  public static is = 'esl-animate';
+  public static override is = 'esl-animate';
   public static observedAttributes = ['group', 'repeat', 'target'];
 
   /**
@@ -70,13 +70,13 @@ export class ESLAnimate extends ESLBaseElement {
   }
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.reanimate();
   }
 
   @ready
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     ESLAnimateService.unobserve(this.$targets);
   }
diff --git a/src/modules/esl-footnotes/core/esl-footnotes.ts b/src/modules/esl-footnotes/core/esl-footnotes.ts
index 997a1f8d3..03ecace15 100644
--- a/src/modules/esl-footnotes/core/esl-footnotes.ts
+++ b/src/modules/esl-footnotes/core/esl-footnotes.ts
@@ -13,7 +13,7 @@ import type {FootnotesItem} from './esl-footnotes-data';
 
 @ExportNs('Footnotes')
 export class ESLFootnotes extends ESLBaseElement {
-  static is = 'esl-footnotes';
+  static override is = 'esl-footnotes';
 
   /** Event to request acknowledgment from {@link ESLNotes} instances */
   @prop('esl:footnotes:request') public FOOTNOTE_REQUEST_EVENT: string;
@@ -51,13 +51,13 @@ export class ESLFootnotes extends ESLBaseElement {
       : compileFootnotesGroupedList(this._notes);
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
 
     this._notifyNotes();
   }
 
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
 
     this._notes.forEach((el) => el.unlink());
diff --git a/src/modules/esl-footnotes/core/esl-note.ts b/src/modules/esl-footnotes/core/esl-note.ts
index 902957ee1..873fae023 100644
--- a/src/modules/esl-footnotes/core/esl-note.ts
+++ b/src/modules/esl-footnotes/core/esl-note.ts
@@ -16,7 +16,7 @@ import type {IMediaQueryCondition} from '../../esl-media-query/core/conditions/m
 
 @ExportNs('Note')
 export class ESLNote extends ESLBaseElement {
-  public static is = 'esl-note';
+  public static override is = 'esl-note';
   public static observedAttributes = ['tooltip-shown', 'ignore'];
 
   /** Timeout before activating note (to have time to show content with this note) */
@@ -95,14 +95,14 @@ export class ESLNote extends ESLBaseElement {
   }
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     this.init();
     super.connectedCallback();
     this._sendResponseToFootnote();
   }
 
   @ready
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this._$footnotes?.unlinkNote(this);
     this.restore();
diff --git a/src/modules/esl-forms/esl-select-list/core/esl-select-item.ts b/src/modules/esl-forms/esl-select-list/core/esl-select-item.ts
index a075a3cbd..ed7da4068 100644
--- a/src/modules/esl-forms/esl-select-list/core/esl-select-item.ts
+++ b/src/modules/esl-forms/esl-select-list/core/esl-select-item.ts
@@ -12,7 +12,7 @@ import type {ESLSelectOption} from './esl-select-wrapper';
  */
 @ExportNs('SelectItem')
 export class ESLSelectItem extends ESLBaseElement {
-  public static readonly is: string = 'esl-select-item';
+  public static override readonly is: string = 'esl-select-item';
   public static observedAttributes = ['selected', 'disabled'];
 
   /** Option value */
@@ -25,7 +25,7 @@ export class ESLSelectItem extends ESLBaseElement {
   /** Original option */
   public original: ESLSelectOption;
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.tabIndex = 0;
     this.setAttribute('role', 'checkbox');
diff --git a/src/modules/esl-forms/esl-select-list/core/esl-select-list.ts b/src/modules/esl-forms/esl-select-list/core/esl-select-list.ts
index 1ab069915..8f165f918 100644
--- a/src/modules/esl-forms/esl-select-list/core/esl-select-list.ts
+++ b/src/modules/esl-forms/esl-select-list/core/esl-select-list.ts
@@ -13,10 +13,10 @@ import {ESLSelectWrapper} from './esl-select-wrapper';
  */
 @ExportNs('SelectList')
 export class ESLSelectList extends ESLSelectWrapper {
-  public static readonly is = 'esl-select-list';
+  public static override readonly is = 'esl-select-list';
   public static observedAttributes = ['select-all-label', 'disabled'];
 
-  public static register(): void {
+  public static override register(): void {
     ESLSelectItem.register();
     super.register();
   }
@@ -56,7 +56,7 @@ export class ESLSelectList extends ESLSelectWrapper {
     }
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
 
     this.appendChild(this.$selectAll);
@@ -67,7 +67,7 @@ export class ESLSelectList extends ESLSelectWrapper {
 
     this._updateDisabled();
   }
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
 
     this.appendChild(this.$selectAll);
@@ -115,20 +115,20 @@ export class ESLSelectList extends ESLSelectWrapper {
   }
 
   @bind
-  protected _onTargetChange(newTarget: HTMLSelectElement | undefined, oldTarget: HTMLSelectElement | undefined): void {
+  protected override _onTargetChange(newTarget: HTMLSelectElement | undefined, oldTarget: HTMLSelectElement | undefined): void {
     super._onTargetChange(newTarget, oldTarget);
     this._updateSelectAll();
     this._renderItems();
   }
 
   @listen({inherit: true})
-  public _onChange(): void {
+  public override _onChange(): void {
     this._updateSelectAll();
     this.$items.forEach((item) => item.update());
   }
 
   @bind
-  public _onListChange(): void {
+  public override _onListChange(): void {
     this._renderItems();
   }
 
diff --git a/src/modules/esl-forms/esl-select-list/core/esl-select-wrapper.ts b/src/modules/esl-forms/esl-select-list/core/esl-select-wrapper.ts
index 8319fc642..ad71a29f6 100644
--- a/src/modules/esl-forms/esl-select-list/core/esl-select-wrapper.ts
+++ b/src/modules/esl-forms/esl-select-list/core/esl-select-wrapper.ts
@@ -62,11 +62,11 @@ export abstract class ESLSelectWrapper extends ESLBaseElement implements ESLSele
     this._onTargetChange(select, prev);
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
   }
 
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this._mutationObserver.disconnect();
   }
diff --git a/src/modules/esl-forms/esl-select/core/esl-select-dropdown.ts b/src/modules/esl-forms/esl-select/core/esl-select-dropdown.ts
index 9da157436..8d644d48d 100644
--- a/src/modules/esl-forms/esl-select/core/esl-select-dropdown.ts
+++ b/src/modules/esl-forms/esl-select/core/esl-select-dropdown.ts
@@ -15,8 +15,8 @@ import type {ESLToggleableActionParams} from '../../../esl-toggleable/core/esl-t
  * Uses {@link ESLSelectList} to render the content
  */
 export class ESLSelectDropdown extends ESLToggleable {
-  public static readonly is = 'esl-select-dropdown';
-  public static register(): void {
+  public static override readonly is = 'esl-select-dropdown';
+  public static override register(): void {
     ESLSelectList.register();
     super.register();
   }
@@ -29,26 +29,26 @@ export class ESLSelectDropdown extends ESLToggleable {
   protected _disposeTimeout: number;
   protected _deferredUpdatePosition = rafDecorator(() => this.updatePosition());
 
-  @prop() public closeOnEsc = true;
-  @prop() public closeOnOutsideAction = true;
+  @prop() public override closeOnEsc = true;
+  @prop() public override closeOnOutsideAction = true;
 
   constructor() {
     super();
     this.$list = document.createElement(ESLSelectList.is);
   }
 
-  protected setInitialState(): void {}
+  protected override setInitialState(): void {}
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.appendChild(this.$list);
   }
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this.removeChild(this.$list);
   }
 
-  protected onShow(params: ESLToggleableActionParams): void {
+  protected override onShow(params: ESLToggleableActionParams): void {
     document.body.appendChild(this);
     this._disposeTimeout && window.clearTimeout(this._disposeTimeout);
 
@@ -62,7 +62,7 @@ export class ESLSelectDropdown extends ESLToggleable {
     focusable?.focus({preventScroll: true});
     this.updatePosition();
   }
-  protected onHide(params: ESLToggleableActionParams): void {
+  protected override onHide(params: ESLToggleableActionParams): void {
     const select = this.activator;
     super.onHide(params);
     this._disposeTimeout = window.setTimeout(() => {
@@ -73,7 +73,7 @@ export class ESLSelectDropdown extends ESLToggleable {
   }
 
   @listen('keydown')
-  protected _onKeyboardEvent(e: KeyboardEvent): void {
+  protected override _onKeyboardEvent(e: KeyboardEvent): void {
     super._onKeyboardEvent(e);
     if (e.key === TAB) this._onTabKey(e);
   }
diff --git a/src/modules/esl-forms/esl-select/core/esl-select-renderer.ts b/src/modules/esl-forms/esl-select/core/esl-select-renderer.ts
index d7250f64d..6a58065c2 100644
--- a/src/modules/esl-forms/esl-select/core/esl-select-renderer.ts
+++ b/src/modules/esl-forms/esl-select/core/esl-select-renderer.ts
@@ -12,7 +12,7 @@ import type {ESLSelect} from './esl-select';
  * Auxiliary inner custom element to render {@link ESLSelect} inline field
  */
 export class ESLSelectRenderer extends ESLBaseElement {
-  public static readonly is = 'esl-select-renderer';
+  public static override readonly is = 'esl-select-renderer';
 
   /** Attribute for empty text value */
   @attr() public emptyText: string;
@@ -51,13 +51,13 @@ export class ESLSelectRenderer extends ESLBaseElement {
     return this.parentElement as ESLSelect;
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.appendChild(this.$container);
     this.appendChild(this.$remove);
     Promise.resolve().then(() => this.render());
   }
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this.removeChild(this.$container);
     this.removeChild(this.$remove);
diff --git a/src/modules/esl-forms/esl-select/core/esl-select.ts b/src/modules/esl-forms/esl-select/core/esl-select.ts
index 0050bf490..f997967f3 100644
--- a/src/modules/esl-forms/esl-select/core/esl-select.ts
+++ b/src/modules/esl-forms/esl-select/core/esl-select.ts
@@ -17,10 +17,10 @@ import {ESLSelectDropdown} from './esl-select-dropdown';
  */
 @ExportNs('Select')
 export class ESLSelect extends ESLSelectWrapper {
-  public static readonly is = 'esl-select';
+  public static override readonly is = 'esl-select';
   public static observedAttributes = ['disabled', 'dropdown-class'];
 
-  public static register(): void {
+  public static override register(): void {
     ESLSelectDropdown.register();
     ESLSelectRenderer.register();
     super.register();
@@ -68,7 +68,7 @@ export class ESLSelect extends ESLSelectWrapper {
     }
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
 
     this.$select = this.querySelector('[esl-select-target]')!;
@@ -78,13 +78,13 @@ export class ESLSelect extends ESLSelectWrapper {
     this._updateDisabled();
     this._updateMarkers();
   }
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this._dispose();
   }
 
   /** Catches the focus */
-  public focus(options?: FocusOptions): void {
+  public override focus(options?: FocusOptions): void {
     this.$select.focus(options);
   }
   /** Updates select component */
@@ -124,7 +124,7 @@ export class ESLSelect extends ESLSelectWrapper {
   }
 
   @listen({inherit: true})
-  protected _onChange(event: Event): void {
+  protected override _onChange(event: Event): void {
     this._updateMarkers();
     ESLEventUtils.dispatch(this, 'esl:change:value', {detail: {event}});
   }
diff --git a/src/modules/esl-image/core/esl-image.ts b/src/modules/esl-image/core/esl-image.ts
index 9cbc04f18..1fb1c1bbd 100644
--- a/src/modules/esl-image/core/esl-image.ts
+++ b/src/modules/esl-image/core/esl-image.ts
@@ -21,7 +21,7 @@ const isLoadState = (state: string): state is LoadState => ['error', 'loaded', '
  */
 @ExportNs('Image')
 export class ESLImage extends ESLBaseElement {
-  public static is = 'esl-image';
+  public static override is = 'esl-image';
   public static observedAttributes = ['alt', 'role', 'mode', 'aria-label', 'data-src', 'data-src-base', 'lazy-triggered'];
 
   /** Default container class value */
@@ -63,7 +63,7 @@ export class ESLImage extends ESLBaseElement {
   private _detachLazyTrigger: () => void;
   private _shadowImageElement: HTMLImageElement;
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.alt =
       this.alt || this.getAttribute('aria-label') || this.getAttribute('data-alt') || '';
@@ -80,7 +80,7 @@ export class ESLImage extends ESLBaseElement {
     this.refresh();
   }
 
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     this.clearImage();
     super.disconnectedCallback();
     this._detachLazyTrigger && this._detachLazyTrigger();
diff --git a/src/modules/esl-media-query/core/conditions/media-query-base.ts b/src/modules/esl-media-query/core/conditions/media-query-base.ts
index a73054c63..428f24673 100644
--- a/src/modules/esl-media-query/core/conditions/media-query-base.ts
+++ b/src/modules/esl-media-query/core/conditions/media-query-base.ts
@@ -24,7 +24,7 @@ export interface IMediaQueryCondition extends EventTarget {
 export class ESLMediaChangeEvent extends Event {
   /** `true` if the query is matched device conditions when event was dispatched */
   public readonly matches: boolean;
-  public readonly target: IMediaQueryCondition;
+  public override readonly target: IMediaQueryCondition;
 
   constructor(matches: boolean) {
     super('change');
diff --git a/src/modules/esl-media-query/core/conditions/media-query-condition.ts b/src/modules/esl-media-query/core/conditions/media-query-condition.ts
index cd83dfc10..cf7a874d8 100644
--- a/src/modules/esl-media-query/core/conditions/media-query-condition.ts
+++ b/src/modules/esl-media-query/core/conditions/media-query-condition.ts
@@ -24,9 +24,9 @@ export class MediaQueryCondition extends SyntheticEventTarget implements IMediaQ
     return this._inverted ? !this._mq.matches : this._mq.matches;
   }
 
-  public addEventListener(callback: EventListener): void;
-  public addEventListener(type: 'change', callback: EventListener): void;
-  public addEventListener(type: any, callback: EventListener = type): void {
+  public override addEventListener(callback: EventListener): void;
+  public override addEventListener(type: 'change', callback: EventListener): void;
+  public override addEventListener(type: any, callback: EventListener = type): void {
     super.addEventListener(type, callback);
     if (this.hasEventListener(1)) return;
     if (typeof this._mq.addEventListener === 'function') {
@@ -36,9 +36,9 @@ export class MediaQueryCondition extends SyntheticEventTarget implements IMediaQ
     }
   }
 
-  public removeEventListener(callback: EventListener): void;
-  public removeEventListener(type: 'change', callback: EventListener): void;
-  public removeEventListener(type: any, callback: EventListener = type): void {
+  public override removeEventListener(callback: EventListener): void;
+  public override removeEventListener(type: 'change', callback: EventListener): void;
+  public override removeEventListener(type: any, callback: EventListener = type): void {
     super.removeEventListener(type, callback);
     if (this.hasEventListener()) return;
     if (typeof this._mq.removeEventListener === 'function') {
@@ -55,7 +55,7 @@ export class MediaQueryCondition extends SyntheticEventTarget implements IMediaQ
     return this;
   }
 
-  public toString(): string {
+  public override toString(): string {
     const query = this._mq.media;
     const inverted = this._inverted;
     const complex = inverted && /\)[\s\w]+\(/.test(query);
diff --git a/src/modules/esl-media-query/core/conditions/media-query-containers.ts b/src/modules/esl-media-query/core/conditions/media-query-containers.ts
index 173bbd378..3ed18688f 100644
--- a/src/modules/esl-media-query/core/conditions/media-query-containers.ts
+++ b/src/modules/esl-media-query/core/conditions/media-query-containers.ts
@@ -19,17 +19,17 @@ abstract class MediaQueryContainer extends SyntheticEventTarget implements IMedi
     this._onChange = this._onChange.bind(this);
   }
 
-  public addEventListener(callback: EventListener): void;
-  public addEventListener(type: 'change', callback: EventListener): void;
-  public addEventListener(type: any, callback: EventListener = type): void {
+  public override addEventListener(callback: EventListener): void;
+  public override addEventListener(type: 'change', callback: EventListener): void;
+  public override addEventListener(type: any, callback: EventListener = type): void {
     super.addEventListener(type, callback);
     if (this.hasEventListener(1)) return;
     this.items.forEach((item) => item.addEventListener('change', this._onChange));
   }
 
-  public removeEventListener(callback: EventListener): void;
-  public removeEventListener(type: 'change', callback: EventListener): void;
-  public removeEventListener(type: any, callback: EventListener = type): void {
+  public override removeEventListener(callback: EventListener): void;
+  public override removeEventListener(type: 'change', callback: EventListener): void;
+  public override removeEventListener(type: any, callback: EventListener = type): void {
     super.removeEventListener(type, callback);
     if (this.hasEventListener()) return;
     this.items.forEach((item) => item.removeEventListener('change', this._onChange));
@@ -52,11 +52,11 @@ abstract class MediaQueryContainer extends SyntheticEventTarget implements IMedi
 
 /** Conjunction (AND) group of media conditions */
 export class MediaQueryConjunction extends MediaQueryContainer {
-  public get matches(): boolean {
+  public override get matches(): boolean {
     return this.items.every((item) => item.matches);
   }
 
-  public optimize(): IMediaQueryCondition {
+  public override optimize(): IMediaQueryCondition {
     const optimizedItems = this.items.map((item) => item.optimize());
     if (optimizedItems.some((item) => NOT_ALL.eq(item))) return NOT_ALL;
     const items = optimizedItems.filter((item) => !ALL.eq(item));
@@ -65,18 +65,18 @@ export class MediaQueryConjunction extends MediaQueryContainer {
     return new MediaQueryConjunction(items);
   }
 
-  public toString(): string {
+  public override toString(): string {
     return this.items.join(' and ');
   }
 }
 
 /** Disjunction (OR) group of media conditions */
 export class MediaQueryDisjunction extends MediaQueryContainer {
-  public get matches(): boolean {
+  public override get matches(): boolean {
     return this.items.some((item) => item.matches);
   }
 
-  public optimize(): IMediaQueryCondition {
+  public override optimize(): IMediaQueryCondition {
     const optimizedItems = this.items.map((item) => item.optimize());
     if (optimizedItems.some((item) => ALL.eq(item))) return ALL;
     const items = optimizedItems.filter((item) => !NOT_ALL.eq(item));
@@ -85,7 +85,7 @@ export class MediaQueryDisjunction extends MediaQueryContainer {
     return new MediaQueryDisjunction(items);
   }
 
-  public toString(pretty = false): string {
+  public override toString(pretty = false): string {
     return this.items.join(pretty ? ' or ' : ', ');
   }
 }
diff --git a/src/modules/esl-media-query/core/esl-media-rule-list.ts b/src/modules/esl-media-query/core/esl-media-rule-list.ts
index c86bc66dc..6a63d5421 100644
--- a/src/modules/esl-media-query/core/esl-media-rule-list.ts
+++ b/src/modules/esl-media-query/core/esl-media-rule-list.ts
@@ -13,7 +13,7 @@ export class ESLMediaRuleListEvent<T = any> extends Event {
   /** Previous value of target {@link ESLMediaRuleList} instances */
   public readonly previous: T;
   /** Target {@link ESLMediaRuleList} instances */
-  public readonly target: ESLMediaRuleList<T>;
+  public override readonly target: ESLMediaRuleList<T>;
 
   constructor(current: T, previous: T) {
     super('change');
@@ -147,9 +147,9 @@ export class ESLMediaRuleList<T = any> extends SyntheticEventTarget {
   }
 
   /** Subscribes to the instance active rule change */
-  public addEventListener(callback: EventListener): void;
-  public addEventListener(type: 'change', callback: EventListener): void;
-  public addEventListener(type: any, callback: EventListener = type): void {
+  public override addEventListener(callback: EventListener): void;
+  public override addEventListener(type: 'change', callback: EventListener): void;
+  public override addEventListener(type: any, callback: EventListener = type): void {
     super.addEventListener(type, callback);
     if (this.hasEventListener(1)) return;
     this._value = this.computedValue;
@@ -157,9 +157,9 @@ export class ESLMediaRuleList<T = any> extends SyntheticEventTarget {
   }
 
   /** Unsubscribes from the instance active rule change */
-  public removeEventListener(callback: EventListener): void;
-  public removeEventListener(type: 'change', callback: EventListener): void;
-  public removeEventListener(type: any, callback: EventListener = type): void {
+  public override removeEventListener(callback: EventListener): void;
+  public override removeEventListener(type: 'change', callback: EventListener): void;
+  public override removeEventListener(type: any, callback: EventListener = type): void {
     super.removeEventListener(type, callback);
     if (this.hasEventListener()) return;
     delete this._value;
@@ -207,7 +207,7 @@ export class ESLMediaRuleList<T = any> extends SyntheticEventTarget {
   }
 
   /** @returns serialized {@link ESLMediaRuleList} object representation*/
-  public toString(): string {
+  public override toString(): string {
     return this.rules.join('|');
   }
 }
diff --git a/src/modules/esl-media/core/esl-media.ts b/src/modules/esl-media/core/esl-media.ts
index 1be05fdae..b309f8d7b 100644
--- a/src/modules/esl-media/core/esl-media.ts
+++ b/src/modules/esl-media/core/esl-media.ts
@@ -27,7 +27,7 @@ export type ESLMediaFillMode = 'cover' | 'inscribe' | '';
  */
 @ExportNs('Media')
 export class ESLMedia extends ESLBaseElement {
-  public static is = 'esl-media';
+  public static override is = 'esl-media';
   public static observedAttributes = [
     'disabled',
     'load-condition',
@@ -77,7 +77,7 @@ export class ESLMedia extends ESLBaseElement {
   /** Autoplay resource marker */
   @boolAttr() public autoplay: boolean;
   /** Autofocus on play marker */
-  @boolAttr() public autofocus: boolean;
+  @boolAttr() public override autofocus: boolean;
   /** Mute resource marker */
   @boolAttr() public muted: boolean;
   /** Loop resource play */
@@ -132,7 +132,7 @@ export class ESLMedia extends ESLBaseElement {
     return ESLMediaProviderRegistry.instance.has(name);
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     if (!this.hasAttribute('role')) {
       this.setAttribute('role', 'application');
@@ -143,7 +143,7 @@ export class ESLMedia extends ESLBaseElement {
     this.deferredReinitialize();
   }
 
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     this.unbindEvents();
     this.detachViewportConstraint();
diff --git a/src/modules/esl-media/providers/brightcove-provider.ts b/src/modules/esl-media/providers/brightcove-provider.ts
index 662324586..900c3fb24 100644
--- a/src/modules/esl-media/providers/brightcove-provider.ts
+++ b/src/modules/esl-media/providers/brightcove-provider.ts
@@ -19,7 +19,7 @@ export interface BCPlayerAccount {
  */
 @BaseProvider.register
 export class BrightcoveProvider extends BaseProvider {
-  static readonly providerName: string = 'brightcove';
+  static override readonly providerName: string = 'brightcove';
 
   protected videojsClasses = 'video-js vjs-default-skin video-js-brightcove';
 
@@ -116,20 +116,20 @@ export class BrightcoveProvider extends BaseProvider {
       .catch((e) => this.component._onError(e));
   }
 
-  public unbind(): void {
+  public override unbind(): void {
     this.component._onDetach();
     this._api && this._api.dispose();
     super.unbind();
   }
 
-  protected onConfigChange(param: ProviderObservedParams, value: boolean): void {
+  protected override onConfigChange(param: ProviderObservedParams, value: boolean): void {
     super.onConfigChange(param, value);
     if (typeof this._api[param] === 'function') {
       this._api[param](value);
     }
   }
 
-  public focus(): void {
+  public override focus(): void {
     this._api && this._api.focus();
   }
 
@@ -174,11 +174,11 @@ export class BrightcoveProvider extends BaseProvider {
   }
 
   // Overrides to set tech autoplay marker
-  public safePlay(): Promise<any> {
+  public override safePlay(): Promise<any> {
     this._autoplay = true;
     return super.safePlay();
   }
-  public safeStop(): Promise<any> {
+  public override safeStop(): Promise<any> {
     this._autoplay = true;
     return super.safeStop();
   }
diff --git a/src/modules/esl-media/providers/html5/audio-provider.ts b/src/modules/esl-media/providers/html5/audio-provider.ts
index 77c27b257..21fceb17c 100644
--- a/src/modules/esl-media/providers/html5/audio-provider.ts
+++ b/src/modules/esl-media/providers/html5/audio-provider.ts
@@ -7,10 +7,10 @@ import {HTMLMediaProvider} from './media-provider';
  */
 @BaseProvider.register
 export class AudioProvider extends HTMLMediaProvider {
-  static readonly providerName: string = 'audio';
-  static readonly urlPattern = /\.(mp3|wav|aac)(\?|$)/;
+  static override readonly providerName: string = 'audio';
+  static override readonly urlPattern = /\.(mp3|wav|aac)(\?|$)/;
 
-  protected _el: HTMLAudioElement;
+  protected override _el: HTMLAudioElement;
 
   protected createElement(): HTMLAudioElement {
     const el = document.createElement('audio');
diff --git a/src/modules/esl-media/providers/html5/media-provider.ts b/src/modules/esl-media/providers/html5/media-provider.ts
index 5637db974..6dce5a8fc 100644
--- a/src/modules/esl-media/providers/html5/media-provider.ts
+++ b/src/modules/esl-media/providers/html5/media-provider.ts
@@ -9,14 +9,14 @@ import type {MediaProviderConfig, ProviderObservedParams} from '../../core/esl-m
 export abstract class HTMLMediaProvider extends BaseProvider {
   static readonly urlPattern: RegExp;
 
-  static parseUrl(mediaSrc: string): Partial<MediaProviderConfig> | null {
+  static override parseUrl(mediaSrc: string): Partial<MediaProviderConfig> | null {
     if (this.urlPattern.test(mediaSrc)) {
       return {mediaSrc};
     }
     return null;
   }
 
-  protected _el: HTMLMediaElement;
+  protected override _el: HTMLMediaElement;
 
   protected static applyElementSettings(el: HTMLMediaElement, cfg: MediaProviderConfig): HTMLMediaElement {
     el.classList.add('esl-media-inner');
@@ -32,7 +32,7 @@ export abstract class HTMLMediaProvider extends BaseProvider {
 
   protected abstract createElement(): HTMLMediaElement;
 
-  public onConfigChange(param: ProviderObservedParams, value: boolean): void {
+  public override onConfigChange(param: ProviderObservedParams, value: boolean): void {
     super.onConfigChange(param, value);
     HTMLMediaProvider.applyElementSettings(this._el, this.config);
   }
@@ -52,12 +52,12 @@ export abstract class HTMLMediaProvider extends BaseProvider {
     this._el.addEventListener('error', (e) => this.component._onError(e));
   }
 
-  public unbind(): void {
+  public override unbind(): void {
     this.component._onDetach();
     super.unbind();
   }
 
-  get ready(): Promise<any> {
+  override get ready(): Promise<any> {
     return Promise.resolve();
   }
 
diff --git a/src/modules/esl-media/providers/html5/video-provider.ts b/src/modules/esl-media/providers/html5/video-provider.ts
index 0c6a0d262..243f596be 100644
--- a/src/modules/esl-media/providers/html5/video-provider.ts
+++ b/src/modules/esl-media/providers/html5/video-provider.ts
@@ -7,10 +7,10 @@ import {HTMLMediaProvider} from './media-provider';
  */
 @BaseProvider.register
 export class VideoProvider extends HTMLMediaProvider {
-  static readonly providerName: string = 'video';
-  static readonly urlPattern = /\.(mp4|webm|ogv|mov)(\?|$)/;
+  static override readonly providerName: string = 'video';
+  static override readonly urlPattern = /\.(mp4|webm|ogv|mov)(\?|$)/;
 
-  protected _el: HTMLVideoElement;
+  protected override _el: HTMLVideoElement;
 
   protected createElement(): HTMLVideoElement {
     const el = document.createElement('video');
diff --git a/src/modules/esl-media/providers/iframe-provider.ts b/src/modules/esl-media/providers/iframe-provider.ts
index a695fb73c..7993ffc54 100644
--- a/src/modules/esl-media/providers/iframe-provider.ts
+++ b/src/modules/esl-media/providers/iframe-provider.ts
@@ -9,12 +9,12 @@ import type {MediaProviderConfig} from '../core/esl-media-provider';
  */
 @BaseProvider.register
 export class IframeBasicProvider extends BaseProvider {
-  static readonly providerName: string = 'iframe';
+  static override readonly providerName: string = 'iframe';
 
   private _state: PlayerStates = PlayerStates.UNINITIALIZED;
-  protected _el: HTMLIFrameElement;
+  protected override _el: HTMLIFrameElement;
 
-  static parseUrl(url: string): Partial<MediaProviderConfig> | null {
+  static override parseUrl(url: string): Partial<MediaProviderConfig> | null {
     try {
       if (!url) return null;
       const {protocol} = new URL(url);
@@ -57,17 +57,17 @@ export class IframeBasicProvider extends BaseProvider {
     this._ready.catch((e) => this.component._onError(e));
   }
 
-  public unbind(): void {
+  public override unbind(): void {
     this.component._onDetach();
     this._state = PlayerStates.UNINITIALIZED;
     super.unbind();
   }
 
-  get ready(): Promise<any> {
+  override get ready(): Promise<any> {
     return Promise.resolve();
   }
 
-  public focus(): void {
+  public override focus(): void {
     if (this._el && this._el.contentWindow) {
       this._el.contentWindow.focus();
     }
diff --git a/src/modules/esl-media/providers/youtube-provider.ts b/src/modules/esl-media/providers/youtube-provider.ts
index 00de57743..6e72705c4 100644
--- a/src/modules/esl-media/providers/youtube-provider.ts
+++ b/src/modules/esl-media/providers/youtube-provider.ts
@@ -13,14 +13,14 @@ const DEFAULT_ASPECT_RATIO = 16 / 9;
  */
 @BaseProvider.register
 export class YouTubeProvider extends BaseProvider {
-  static readonly providerName: string = 'youtube';
+  static override readonly providerName: string = 'youtube';
   static readonly idRegexp = /(?:v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/)([_0-9a-zA-Z-]+)/i;
   static readonly providerRegexp = /^\s*(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be|youtube(-nocookie)?\.com)/i;
 
-  protected _el: HTMLDivElement | HTMLIFrameElement;
+  protected override _el: HTMLDivElement | HTMLIFrameElement;
   protected _api: YT.Player;
 
-  static parseUrl(url: string): Partial<MediaProviderConfig> | null {
+  static override parseUrl(url: string): Partial<MediaProviderConfig> | null {
     if (this.providerRegexp.test(url)) {
       const [, id] = url.match(this.idRegexp) || [];
       return id ? {mediaId: id} : null;
@@ -109,7 +109,7 @@ export class YouTubeProvider extends BaseProvider {
     this.component._onReady();
   }
 
-  public unbind(): void {
+  public override unbind(): void {
     this.component._onDetach();
     this._api && this._api.destroy();
     super.unbind();
@@ -133,14 +133,14 @@ export class YouTubeProvider extends BaseProvider {
     }
   }
 
-  protected onConfigChange(param: ProviderObservedParams, value: boolean): void {
+  protected override onConfigChange(param: ProviderObservedParams, value: boolean): void {
     super.onConfigChange(param, value);
     if (param === 'muted') {
       value ? this._api.mute() : this._api.unMute();
     }
   }
 
-  public focus(): void {
+  public override focus(): void {
     if (this._el instanceof HTMLIFrameElement && this._el.contentWindow) {
       this._el.contentWindow.focus();
     }
diff --git a/src/modules/esl-panel-group/core/esl-panel-group.ts b/src/modules/esl-panel-group/core/esl-panel-group.ts
index c971ceeb0..08d8b74cb 100644
--- a/src/modules/esl-panel-group/core/esl-panel-group.ts
+++ b/src/modules/esl-panel-group/core/esl-panel-group.ts
@@ -23,7 +23,7 @@ const parseCount = (value: string): number => value === 'all' ? Number.POSITIVE_
  */
 @ExportNs('PanelGroup')
 export class ESLPanelGroup extends ESLBaseElement {
-  public static is = 'esl-panel-group';
+  public static override is = 'esl-panel-group';
 
   public static observedAttributes = ['mode', 'refresh-strategy', 'min-open-items', 'max-open-items'];
   /** List of supported modes */
@@ -73,7 +73,7 @@ export class ESLPanelGroup extends ESLBaseElement {
   /** Height of previous active panel */
   protected _previousHeight: number = 0;
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     ESLPanel.registered.then(() => {
       super.connectedCallback();
       this.refresh();
diff --git a/src/modules/esl-panel/core/esl-panel.ts b/src/modules/esl-panel/core/esl-panel.ts
index f46b8bdad..0b5ed79de 100644
--- a/src/modules/esl-panel/core/esl-panel.ts
+++ b/src/modules/esl-panel/core/esl-panel.ts
@@ -25,10 +25,10 @@ export interface PanelActionParams extends ESLToggleableActionParams {
  */
 @ExportNs('Panel')
 export class ESLPanel extends ESLToggleable {
-  public static is = 'esl-panel';
+  public static override is = 'esl-panel';
 
   /** Class(es) to be added for active state ('open' by default) */
-  @attr({defaultValue: 'open'}) public activeClass: string;
+  @attr({defaultValue: 'open'}) public override activeClass: string;
   /** Class(es) to be added during animation ('animate' by default) */
   @attr({defaultValue: 'animate'}) public animateClass: string;
   /** Class(es) to be added during animation after next render ('post-animate' by default) */
@@ -39,7 +39,7 @@ export class ESLPanel extends ESLToggleable {
 
   /** Initial params for current ESLPanel instance */
   @jsonAttr<PanelActionParams>({defaultValue: {force: true, initiator: 'init'}})
-  public initialParams: PanelActionParams;
+  public override initialParams: PanelActionParams;
 
   /** Active while animation in progress */
   @boolAttr({readonly: true}) public animating: boolean;
@@ -59,7 +59,7 @@ export class ESLPanel extends ESLToggleable {
   }
 
   /** Process show action */
-  protected onShow(params: PanelActionParams): void {
+  protected override onShow(params: PanelActionParams): void {
     this._initialHeight = this.scrollHeight;
     super.onShow(params);
 
@@ -69,7 +69,7 @@ export class ESLPanel extends ESLToggleable {
   }
 
   /** Process hide action */
-  protected onHide(params: PanelActionParams): void {
+  protected override onHide(params: PanelActionParams): void {
     this._initialHeight = this.scrollHeight;
     super.onHide(params);
 
@@ -142,7 +142,7 @@ export class ESLPanel extends ESLToggleable {
   }
 
   /** Merge params that are used by panel group for actions */
-  protected mergeDefaultParams(params?: ESLToggleableActionParams): ESLToggleableActionParams {
+  protected override mergeDefaultParams(params?: ESLToggleableActionParams): ESLToggleableActionParams {
     const stackConfig = this.$group?.panelConfig || {};
     return Object.assign({}, stackConfig, this.defaultParams, params || {});
   }
diff --git a/src/modules/esl-popup/core/esl-popup-placeholder.ts b/src/modules/esl-popup/core/esl-popup-placeholder.ts
index 231b9c7d8..4b6d5c376 100644
--- a/src/modules/esl-popup/core/esl-popup-placeholder.ts
+++ b/src/modules/esl-popup/core/esl-popup-placeholder.ts
@@ -5,9 +5,9 @@ import type {ESLPopup} from './esl-popup';
 
 @ExportNs('PopupPlaceholder')
 export class ESLPopupPlaceholder extends ESLToggleablePlaceholder {
-  public static is = 'esl-popup-placeholder';
+  public static override is = 'esl-popup-placeholder';
 
-  public $origin: ESLPopup | null;
+  public override $origin: ESLPopup | null;
 }
 
 declare global {
diff --git a/src/modules/esl-popup/core/esl-popup.ts b/src/modules/esl-popup/core/esl-popup.ts
index dda9033e7..b76b6ad88 100644
--- a/src/modules/esl-popup/core/esl-popup.ts
+++ b/src/modules/esl-popup/core/esl-popup.ts
@@ -58,7 +58,7 @@ export interface ActivatorObserver {
 
 @ExportNs('Popup')
 export class ESLPopup extends ESLToggleable {
-  public static is = 'esl-popup';
+  public static override is = 'esl-popup';
 
   public $arrow: HTMLElement | null;
   public $placeholder: ESLPopupPlaceholder | null;
@@ -106,10 +106,10 @@ export class ESLPopup extends ESLToggleable {
     offsetContainer: 15,
     intersectionMargin: '0px'
   }})
-  public defaultParams: PopupActionParams;
+  public override defaultParams: PopupActionParams;
 
-  @prop() public closeOnEsc = true;
-  @prop() public closeOnOutsideAction = true;
+  @prop() public override closeOnEsc = true;
+  @prop() public override closeOnOutsideAction = true;
 
   /** Container element that define bounds of popups visibility */
   @memoize()
@@ -126,7 +126,7 @@ export class ESLPopup extends ESLToggleable {
   }
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.$arrow = this.querySelector('span.esl-popup-arrow');
     this.moveToBody();
@@ -170,7 +170,7 @@ export class ESLPopup extends ESLToggleable {
    * Inner state and 'open' attribute are not affected and updated before `onShow` execution.
    * Adds CSS classes, update a11y and fire esl:refresh event by default.
    */
-  protected onShow(params: PopupActionParams): void {
+  protected override onShow(params: PopupActionParams): void {
     super.onShow(params);
 
     if (params.position) {
@@ -206,7 +206,7 @@ export class ESLPopup extends ESLToggleable {
    * Inner state and 'open' attribute are not affected and updated before `onShow` execution.
    * Removes CSS classes and updates a11y by default.
    */
-  protected onHide(params: PopupActionParams): void {
+  protected override onHide(params: PopupActionParams): void {
     this.beforeOnHide();
     super.onHide(params);
 
diff --git a/src/modules/esl-related-target/core/esl-related-target.ts b/src/modules/esl-related-target/core/esl-related-target.ts
index cb512350a..3164bca3e 100644
--- a/src/modules/esl-related-target/core/esl-related-target.ts
+++ b/src/modules/esl-related-target/core/esl-related-target.ts
@@ -17,7 +17,7 @@ export type ESLRelatedTargetActionType = 'all' | 'show' | 'hide';
  */
 @ExportNs('RelatedTarget')
 export class ESLRelatedTarget extends ESLMixinElement {
-  static is = 'esl-related-target';
+  static override is = 'esl-related-target';
 
   /** Selector/query ({@link ESLTraversingQuery}) to find related ESLToggleable element */
   @attr({name: ESLRelatedTarget.is}) public selector: string;
diff --git a/src/modules/esl-scrollbar/core/esl-scrollbar.ts b/src/modules/esl-scrollbar/core/esl-scrollbar.ts
index d12016311..6399274df 100644
--- a/src/modules/esl-scrollbar/core/esl-scrollbar.ts
+++ b/src/modules/esl-scrollbar/core/esl-scrollbar.ts
@@ -15,7 +15,7 @@ import {RTLUtils} from '../../esl-utils/dom/rtl';
  */
 @ExportNs('Scrollbar')
 export class ESLScrollbar extends ESLBaseElement {
-  public static is = 'esl-scrollbar';
+  public static override is = 'esl-scrollbar';
   public static observedAttributes = ['target', 'horizontal'];
 
   /** Horizontal scroll orientation marker */
@@ -55,14 +55,14 @@ export class ESLScrollbar extends ESLBaseElement {
   protected _mutationObserver = new MutationObserver((rec) => this.updateContentObserve(rec));
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.render();
     this.findTarget();
   }
 
   @ready
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     this.unbindTargetEvents();
     this._scrollTimer && window.clearTimeout(this._scrollTimer);
   }
diff --git a/src/modules/esl-tab/core/esl-tab.ts b/src/modules/esl-tab/core/esl-tab.ts
index beb38bb30..79f79b8d7 100644
--- a/src/modules/esl-tab/core/esl-tab.ts
+++ b/src/modules/esl-tab/core/esl-tab.ts
@@ -12,19 +12,19 @@ import {ESLTrigger} from '../../esl-trigger/core';
  */
 @ExportNs('Tab')
 export class ESLTab extends ESLTrigger {
-  public static is = 'esl-tab';
+  public static override is = 'esl-tab';
 
-  @attr({defaultValue: 'show'}) public mode: string;
-  @attr({defaultValue: 'active'}) public activeClass: string;
+  @attr({defaultValue: 'show'}) public override mode: string;
+  @attr({defaultValue: 'active'}) public override activeClass: string;
 
-  public initA11y(): void {
+  public override initA11y(): void {
     const target = this.$a11yTarget;
     if (!target) return;
     if (target.hasAttribute('role')) return;
     setAttr(target, 'role', 'tab');
   }
 
-  public updateA11y(): void {
+  public override updateA11y(): void {
     const target = this.$a11yTarget;
     if (!target) return;
 
diff --git a/src/modules/esl-tab/core/esl-tabs.ts b/src/modules/esl-tab/core/esl-tabs.ts
index dc1df3d60..fcbd7573e 100644
--- a/src/modules/esl-tab/core/esl-tabs.ts
+++ b/src/modules/esl-tab/core/esl-tabs.ts
@@ -17,7 +17,7 @@ import {ESLTab} from './esl-tab';
  */
 @ExportNs('Tabs')
 export class ESLTabs extends ESLBaseElement {
-  public static is = 'esl-tabs';
+  public static override is = 'esl-tabs';
   public static observedAttributes = ['scrollable'];
 
   /** List of supported scrollable types */
@@ -50,7 +50,7 @@ export class ESLTabs extends ESLBaseElement {
     return this.scrollableTypeRules.activeValue || 'side';
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.updateScrollableType();
   }
diff --git a/src/modules/esl-toggleable/core/esl-toggleable-dispatcher.ts b/src/modules/esl-toggleable/core/esl-toggleable-dispatcher.ts
index b5c503105..884feeeaa 100644
--- a/src/modules/esl-toggleable/core/esl-toggleable-dispatcher.ts
+++ b/src/modules/esl-toggleable/core/esl-toggleable-dispatcher.ts
@@ -11,7 +11,7 @@ import {ESLToggleable} from './esl-toggleable';
  */
 @ExportNs('ToggleableDispatcher')
 export class ESLToggleableDispatcher extends ESLBaseElement {
-  public static readonly is = 'esl-toggleable-dispatcher';
+  public static override readonly is = 'esl-toggleable-dispatcher';
 
   /**
    * Initialize ToggleableGroupDispatcher
diff --git a/src/modules/esl-toggleable/core/esl-toggleable-placeholder.ts b/src/modules/esl-toggleable/core/esl-toggleable-placeholder.ts
index bc4e96c10..f09f83032 100644
--- a/src/modules/esl-toggleable/core/esl-toggleable-placeholder.ts
+++ b/src/modules/esl-toggleable/core/esl-toggleable-placeholder.ts
@@ -5,7 +5,7 @@ import type {ESLToggleable} from '../../esl-toggleable/core';
 
 @ExportNs('ToggleablePlaceholder')
 export class ESLToggleablePlaceholder extends ESLBaseElement {
-  public static is = 'esl-toggleable-placeholder';
+  public static override is = 'esl-toggleable-placeholder';
 
   /** List of attributes allowed to copy from origin to this element */
   public static readonly allowedAttrs: string[] = ['id', 'class'];
@@ -19,7 +19,7 @@ export class ESLToggleablePlaceholder extends ESLBaseElement {
     return $placeholder;
   }
 
-  public connectedCallback(): void {
+  public override connectedCallback(): void {
     this.copyAttributesFromOrigin();
     super.connectedCallback();
   }
diff --git a/src/modules/esl-toggleable/core/esl-toggleable.ts b/src/modules/esl-toggleable/core/esl-toggleable.ts
index 8ce3c55b6..19f1b15ed 100644
--- a/src/modules/esl-toggleable/core/esl-toggleable.ts
+++ b/src/modules/esl-toggleable/core/esl-toggleable.ts
@@ -52,7 +52,7 @@ const activators: WeakMap<ESLToggleable, HTMLElement | undefined> = new WeakMap(
  */
 @ExportNs('Toggleable')
 export class ESLToggleable extends ESLBaseElement {
-  public static is = 'esl-toggleable';
+  public static override is = 'esl-toggleable';
   public static observedAttributes = ['open', 'group'];
 
   /** Event to dispatch when toggleable is going to be activated */
@@ -118,7 +118,7 @@ export class ESLToggleable extends ESLBaseElement {
   /** Delay for track hover listeners actions */
   protected _trackHoverDelay: number | undefined;
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     if (!this.id && !this.noAutoId) {
       const tag = (this.constructor as typeof ESLToggleable).is;
@@ -128,7 +128,7 @@ export class ESLToggleable extends ESLBaseElement {
     this.setInitialState();
   }
 
-  protected disconnectedCallback(): void {
+  protected override disconnectedCallback(): void {
     super.disconnectedCallback();
     activators.delete(this);
   }
diff --git a/src/modules/esl-tooltip/core/esl-tooltip.ts b/src/modules/esl-tooltip/core/esl-tooltip.ts
index deda3d610..e899dd763 100644
--- a/src/modules/esl-tooltip/core/esl-tooltip.ts
+++ b/src/modules/esl-tooltip/core/esl-tooltip.ts
@@ -19,16 +19,16 @@ export interface TooltipActionParams extends PopupActionParams {
 
 @ExportNs('Tooltip')
 export class ESLTooltip extends ESLPopup {
-  static is = 'esl-tooltip';
+  static override is = 'esl-tooltip';
 
   /**
    * Tooltip position relative to the trigger.
    * Currently supported: 'top', 'bottom', 'left', 'right' position types ('top' by default)
    */
-  @attr({defaultValue: 'top'}) public position: PositionType;
+  @attr({defaultValue: 'top'}) public override position: PositionType;
 
   /** Tooltip behavior if it does not fit in the window ('fit' by default) */
-  @attr({defaultValue: 'fit'}) public behavior: string;
+  @attr({defaultValue: 'fit'}) public override behavior: string;
 
   /** Disable arrow at Tooltip */
   @boolAttr() public disableArrow: boolean;
@@ -71,7 +71,7 @@ export class ESLTooltip extends ESLPopup {
     this.sharedInstance.hide(params);
   }
 
-  public connectedCallback(): void {
+  public override connectedCallback(): void {
     if (!this.disableArrow) {
       this._appendArrow();
     }
@@ -81,7 +81,7 @@ export class ESLTooltip extends ESLPopup {
   }
 
   /** Sets initial state of the Tooltip */
-  protected setInitialState(): void {}
+  protected override setInitialState(): void {}
 
   /** Creates arrow at Tooltip */
   @memoize()
@@ -98,7 +98,7 @@ export class ESLTooltip extends ESLPopup {
   }
 
   /** Actions to execute on show Tooltip. */
-  public onShow(params: TooltipActionParams): void {
+  public override onShow(params: TooltipActionParams): void {
     if (params.disableArrow) {
       this.disableArrow = params.disableArrow;
     }
@@ -117,7 +117,7 @@ export class ESLTooltip extends ESLPopup {
   }
 
   /** Actions to execute on Tooltip hiding. */
-  public onHide(params: TooltipActionParams): void {
+  public override onHide(params: TooltipActionParams): void {
     this._updateActivatorState(false);
     super.onHide(params);
     document.body.removeChild(this);
@@ -129,7 +129,7 @@ export class ESLTooltip extends ESLPopup {
   /**
    * Actions to execute after showing of popup.
    */
-  protected afterOnShow(): void {
+  protected override afterOnShow(): void {
     super.afterOnShow();
     this.focus({preventScroll: true});
   }
@@ -137,12 +137,12 @@ export class ESLTooltip extends ESLPopup {
   /**
    * Actions to execute before hiding of popup.
    */
-  protected beforeOnHide(): void {
+  protected override beforeOnHide(): void {
     this.activator?.focus({preventScroll: true});
   }
 
   @listen({inherit: true})
-  protected _onKeyboardEvent(e: KeyboardEvent): void {
+  protected override _onKeyboardEvent(e: KeyboardEvent): void {
     super._onKeyboardEvent(e);
     if (e.key === TAB) this._onTabKey(e);
   }
diff --git a/src/modules/esl-trigger/core/esl-trigger.ts b/src/modules/esl-trigger/core/esl-trigger.ts
index 89727f3ef..9b45b8f7f 100644
--- a/src/modules/esl-trigger/core/esl-trigger.ts
+++ b/src/modules/esl-trigger/core/esl-trigger.ts
@@ -14,7 +14,7 @@ import type {ESLToggleable, ESLToggleableActionParams} from '../../esl-toggleabl
 
 @ExportNs('Trigger')
 export class ESLTrigger extends ESLBaseElement {
-  public static is = 'esl-trigger';
+  public static override is = 'esl-trigger';
   public static observedAttributes = ['target'];
 
   /** Event that represents {@link ESLTrigger} state change */
@@ -109,7 +109,7 @@ export class ESLTrigger extends ESLBaseElement {
   }
 
   @ready
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.updateTargetFromSelector();
     this.initA11y();
diff --git a/tsconfig.json b/tsconfig.json
index a12825d23..1bb5aac69 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -6,6 +6,7 @@
     "alwaysStrict": true,
     "strictNullChecks": true,
     "noImplicitAny": true,
+    "noImplicitOverride": true,
     "esModuleInterop": true,
     "target": "ES6",
     "downlevelIteration": true,


Test patch:
diff --git a/pages/src/esl-media-demo/test-media-source.ts b/pages/src/esl-media-demo/test-media-source.ts
index a38865963..94207cf8e 100644
--- a/pages/src/esl-media-demo/test-media-source.ts
+++ b/pages/src/esl-media-demo/test-media-source.ts
@@ -4,7 +4,7 @@ import {ESLBaseElement} from '../../../src/modules/esl-base-element/core/esl-bas
 import {ESLTraversingQuery} from '../../../src/modules/esl-traversing-query/core/esl-traversing-query';
 
 class ESLDemoMediaSource extends ESLBaseElement {
-  static is = 'esl-d-media-source';
+  static override is = 'esl-d-media-source';
 
   @attr() public target: string;
 
@@ -12,7 +12,7 @@ class ESLDemoMediaSource extends ESLBaseElement {
     return ESLTraversingQuery.all(this.target, this) as HTMLElement[];
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.render();
     this.onChange();
diff --git a/pages/src/esl-media-demo/test-media.ts b/pages/src/esl-media-demo/test-media.ts
index 5e81b13d5..873f0c540 100644
--- a/pages/src/esl-media-demo/test-media.ts
+++ b/pages/src/esl-media-demo/test-media.ts
@@ -15,7 +15,7 @@ interface TestMediaAction {
 }
 
 class ESLDemoMediaControls extends ESLBaseElement {
-  public static is = 'esl-d-media-controls';
+  public static override is = 'esl-d-media-controls';
 
   public static ACTIONS: Record<string, TestMediaAction> = {
     play: {
@@ -43,7 +43,7 @@ class ESLDemoMediaControls extends ESLBaseElement {
     return ESLTraversingQuery.all(this.target, this) as HTMLElement[];
   }
 
-  protected connectedCallback(): void {
+  protected override connectedCallback(): void {
     super.connectedCallback();
     this.render();
   }
diff --git a/src/modules/esl-base-element/test/element.listener.test.ts b/src/modules/esl-base-element/test/element.listener.test.ts
index a9ae7d265..a4d4384da 100644
--- a/src/modules/esl-base-element/test/element.listener.test.ts
+++ b/src/modules/esl-base-element/test/element.listener.test.ts
@@ -8,7 +8,7 @@ describe('ESLBaseElement: listeners', () => {
   describe('ESLBaseElement auto subscribes to listener declarations', () => {
     const mockHandler = jest.fn();
     class TestElement extends ESLBaseElement {
-      static is = 'test-listen-element';
+      static override is = 'test-listen-element';
 
       @listen('click')
       public onClick(...args: any[]) { mockHandler(this, ...args); }
diff --git a/src/modules/esl-media/test/base-provider.test.ts b/src/modules/esl-media/test/base-provider.test.ts
index 3ed105e73..3f0249949 100644
--- a/src/modules/esl-media/test/base-provider.test.ts
+++ b/src/modules/esl-media/test/base-provider.test.ts
@@ -21,7 +21,7 @@ describe('ESLMedia: BaseProvider tests', () => {
 
   test('Test provider registered', () => {
     class TestProvider extends BaseProviderMock {
-      static readonly providerName = 'test-provider';
+      static override readonly providerName = 'test-provider';
     }
     expect(instance.has('test-provider')).toBe(false);
     expect(instance.findByName('test-provider')).toBe(null);
@@ -33,7 +33,7 @@ describe('ESLMedia: BaseProvider tests', () => {
   test('Test provider registered via decorator', () => {
     @BaseProvider.register
     class TestProvider extends BaseProviderMock {
-      static readonly providerName = 'test-provider-2';
+      static override readonly providerName = 'test-provider-2';
     }
     expect(instance.has('test-provider-2')).toBe(true);
     expect(instance.findByName('test-provider-2')).toBe(TestProvider);
diff --git a/src/modules/esl-mixin-element/test/mixin.attr-helpers.test.ts b/src/modules/esl-mixin-element/test/mixin.attr-helpers.test.ts
index 6b4d4303c..0ad3350d6 100644
--- a/src/modules/esl-mixin-element/test/mixin.attr-helpers.test.ts
+++ b/src/modules/esl-mixin-element/test/mixin.attr-helpers.test.ts
@@ -3,7 +3,7 @@ import {attr, boolAttr, jsonAttr} from '../../esl-utils/decorators';
 
 describe('ESLMixinElement: attribute mixins correctly reflect to the $host', () => {
   class TestMixin extends ESLMixinElement {
-    static is = 'test-mixin-2';
+    static override is = 'test-mixin-2';
 
     @attr() public val: string | null;
 
diff --git a/src/modules/esl-mixin-element/test/mixin.listener-herpers.test.ts b/src/modules/esl-mixin-element/test/mixin.listener-herpers.test.ts
index 64f02d6bc..962d4be6b 100644
--- a/src/modules/esl-mixin-element/test/mixin.listener-herpers.test.ts
+++ b/src/modules/esl-mixin-element/test/mixin.listener-herpers.test.ts
@@ -3,7 +3,7 @@ import {ESLEventUtils} from '../../esl-event-listener/core/api';
 
 describe('Shortcut helpers for EventUtils', () => {
   class TestHelpersMixin extends ESLMixinElement {
-    static is = 'esl-test-helpers-mixin';
+    static override is = 'esl-test-helpers-mixin';
 
     public onEvent = jest.fn();
   }
diff --git a/src/modules/esl-mixin-element/test/mixin.listener.test.ts b/src/modules/esl-mixin-element/test/mixin.listener.test.ts
index 53c9b2214..8e197f5a7 100644
--- a/src/modules/esl-mixin-element/test/mixin.listener.test.ts
+++ b/src/modules/esl-mixin-element/test/mixin.listener.test.ts
@@ -5,7 +5,7 @@ describe('ESLMixinElement: listeners', () => {
   describe('ESLMixinElement auto subscribes to listener declarations', () => {
     const mockHandler = jest.fn();
     class TestElement extends ESLMixinElement {
-      static is = 'test-listen-mixin';
+      static override is = 'test-listen-mixin';
 
       @listen('click')
       public onClick(...args: any[]) { mockHandler(this, ...args); }
diff --git a/src/modules/esl-mixin-element/test/mixin.test.ts b/src/modules/esl-mixin-element/test/mixin.test.ts
index 0fc1f349c..f08a8fc9b 100644
--- a/src/modules/esl-mixin-element/test/mixin.test.ts
+++ b/src/modules/esl-mixin-element/test/mixin.test.ts
@@ -4,7 +4,7 @@ import {ESLMixinElement} from '../core';
 describe('ESLMixinElement', () => {
   describe('register', () => {
     class TestMixin extends ESLMixinElement {
-      static is = 'test-mixin';
+      static override is = 'test-mixin';
     }
 
     test('init', async () => {
diff --git a/src/modules/esl-utils/abstract/test/observable.test.ts b/src/modules/esl-utils/abstract/test/observable.test.ts
index 83cc4c50b..f48a891ab 100644
--- a/src/modules/esl-utils/abstract/test/observable.test.ts
+++ b/src/modules/esl-utils/abstract/test/observable.test.ts
@@ -1,7 +1,7 @@
 import {Observable} from '../observable';
 
 class TestObservable extends Observable {
-  public fire(test: number = -1) {
+  public override fire(test: number = -1) {
     super.fire(test);
   }
 }
diff --git a/src/modules/esl-utils/decorators/test/bind.test.ts b/src/modules/esl-utils/decorators/test/bind.test.ts
index 17a0f1a9c..c46666fd2 100644
--- a/src/modules/esl-utils/decorators/test/bind.test.ts
+++ b/src/modules/esl-utils/decorators/test/bind.test.ts
@@ -118,7 +118,8 @@ describe('Common @bind decorator test', () => {
       }
     }
     class TestChild extends TestParent {
-      @bind getThisName() {
+      @bind
+      override getThisName() {
         return super.getThisName() + ' world';
       }
       getThisSuperName() {
diff --git a/src/modules/esl-utils/decorators/test/decorate.test.ts b/src/modules/esl-utils/decorators/test/decorate.test.ts
index 57c5b9f33..d9d7e9fd3 100644
--- a/src/modules/esl-utils/decorators/test/decorate.test.ts
+++ b/src/modules/esl-utils/decorators/test/decorate.test.ts
@@ -51,7 +51,7 @@ describe('common @decorate decorator test', () => {
     }
 
     class Child extends Parent {
-      test(...args: any[]): symbol {
+      override test(...args: any[]): symbol {
         return super.test(...args);
       }
 
diff --git a/src/modules/esl-utils/decorators/test/listen.test.ts b/src/modules/esl-utils/decorators/test/listen.test.ts
index 2bb66a445..155d21ab1 100644
--- a/src/modules/esl-utils/decorators/test/listen.test.ts
+++ b/src/modules/esl-utils/decorators/test/listen.test.ts
@@ -64,7 +64,7 @@ describe('Decorator: @listen', () => {
       onEvent() {}
     }
     class TestInh extends Test {
-      onEvent() {}
+      override onEvent() {}
     }
     customElements.define('test-listen-4', TestInh);
 
@@ -79,7 +79,7 @@ describe('Decorator: @listen', () => {
     }
     class TestInh extends Test {
       @listen({inherit: true})
-      onEvent() {}
+      override onEvent() {}
     }
     customElements.define('test-listen-5', TestInh);
 
@@ -95,7 +95,7 @@ describe('Decorator: @listen', () => {
     }
     class TestInh extends Test {
       @listen({inherit: true, event: 'event2'})
-      onEvent() {}
+      override onEvent() {}
     }
     customElements.define('test-listen-6', TestInh);
 
@@ -112,7 +112,7 @@ describe('Decorator: @listen', () => {
     }
     class TestInh extends Test {
       @listen({event: 'event2'})
-      onEvent() {}
+      override onEvent() {}
     }
     customElements.define('test-listen-7', TestInh);
 
@@ -142,9 +142,9 @@ describe('Decorator: @listen', () => {
     }
     class TestChild extends Test {
       @listen({inherit: true})
-      onEventAuto() {}
+      override onEventAuto() {}
       @listen({inherit: true})
-      onEventManual() {}
+      override onEventManual() {}
     }
     customElements.define('test-listen-auto', Test);
     customElements.define('test-listen-auto-inherit', TestChild);
diff --git a/src/modules/esl-utils/decorators/test/prop.test.ts b/src/modules/esl-utils/decorators/test/prop.test.ts
index e42f53c0b..ed626e842 100644
--- a/src/modules/esl-utils/decorators/test/prop.test.ts
+++ b/src/modules/esl-utils/decorators/test/prop.test.ts
@@ -19,11 +19,11 @@ describe('Decorator: @prop', () => {
   describe('Overriding @attr', () => {
     class TestElement extends TestBaseElement {
       @prop('test')
-      public field: string;
+      public override field: string;
       @prop()
-      public field4?: string;
+      public override field4?: string;
       @prop('test')
-      public readonlyField: string;
+      public override readonlyField: string;
     }
     customElements.define('attr-override-1', TestElement);
 
@@ -56,12 +56,12 @@ describe('Decorator: @prop', () => {
 
   describe('Overriding with a non writable', () => {
     class TestElement extends TestBaseElement {
-      @prop('test', {enumerable: true, readonly: true}) public field: string;
-      @prop(true, {enumerable: true, readonly: true}) public field2: boolean;
+      @prop('test', {enumerable: true, readonly: true}) public override field: string;
+      @prop(true, {enumerable: true, readonly: true}) public override field2: boolean;
     }
     class TestElement2 extends TestElement {
-      @prop() public field: string = 'test2';
-      @prop(false) public field2: boolean;
+      @prop() public override field: string = 'test2';
+      @prop(false) public override field2: boolean;
     }
     customElements.define('attr-writable-override-1', TestElement);
     customElements.define('attr-writable-override-2', TestElement2);
@@ -86,7 +86,7 @@ describe('Decorator: @prop', () => {
   describe('Overriding @boolAttr', () => {
     class TestElement extends TestBaseElement {
       @prop(true)
-      public field2: boolean;
+      public override field2: boolean;
     }
     customElements.define('bool-attr-override-1', TestElement);
 
@@ -108,7 +108,7 @@ describe('Decorator: @prop', () => {
   describe('Overriding @jsonAttr', () => {
     class TestElement extends TestBaseElement {
       @prop({a: 2})
-      public field3: {a: number};
+      public override field3: {a: number};
     }
     customElements.define('json-attr-override-1', TestElement);
 
@@ -130,7 +130,7 @@ describe('Decorator: @prop', () => {
   describe('Overridden property can be defined through ES initial value ', () => {
     class TestElement extends TestBaseElement {
       @prop()
-      public field: string = '123';
+      public override field: string = '123';
     }
     customElements.define('es-initial-attr-override-1', TestElement);