diff --git a/.eslintrc.yml b/.eslintrc.yml
deleted file mode 100644
index bf4e5463c9876188e5bd071d53e7feafd83b20ca_LmVzbGludHJjLnltbA==..0000000000000000000000000000000000000000
--- a/.eslintrc.yml
+++ /dev/null
@@ -1,187 +0,0 @@
-env:
-  browser: true
-  es6: true
-
-# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
-parserOptions:
-  ecmaVersion: 2019
-
-overrides:
-  - files:
-      - "**/*.esm.js"
-    parserOptions:
-      sourceType: module
-
-# Globals available in Odoo that shouldn't produce errorings
-globals:
-  _: readonly
-  $: readonly
-  fuzzy: readonly
-  jQuery: readonly
-  moment: readonly
-  odoo: readonly
-  openerp: readonly
-  owl: readonly
-
-# Styling is handled by Prettier, so we only need to enable AST rules;
-# see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890
-rules:
-  accessor-pairs: warn
-  array-callback-return: warn
-  callback-return: warn
-  capitalized-comments:
-    - warn
-    - always
-    - ignoreConsecutiveComments: true
-      ignoreInlineComments: true
-  complexity:
-    - warn
-    - 15
-  constructor-super: warn
-  dot-notation: warn
-  eqeqeq: warn
-  global-require: warn
-  handle-callback-err: warn
-  id-blacklist: warn
-  id-match: warn
-  init-declarations: error
-  max-depth: warn
-  max-nested-callbacks: warn
-  max-statements-per-line: warn
-  no-alert: warn
-  no-array-constructor: warn
-  no-caller: warn
-  no-case-declarations: warn
-  no-class-assign: warn
-  no-cond-assign: error
-  no-const-assign: error
-  no-constant-condition: warn
-  no-control-regex: warn
-  no-debugger: error
-  no-delete-var: warn
-  no-div-regex: warn
-  no-dupe-args: error
-  no-dupe-class-members: error
-  no-dupe-keys: error
-  no-duplicate-case: error
-  no-duplicate-imports: error
-  no-else-return: warn
-  no-empty-character-class: warn
-  no-empty-function: error
-  no-empty-pattern: error
-  no-empty: warn
-  no-eq-null: error
-  no-eval: error
-  no-ex-assign: error
-  no-extend-native: warn
-  no-extra-bind: warn
-  no-extra-boolean-cast: warn
-  no-extra-label: warn
-  no-fallthrough: warn
-  no-func-assign: error
-  no-global-assign: error
-  no-implicit-coercion:
-    - warn
-    - allow: ["~"]
-  no-implicit-globals: warn
-  no-implied-eval: warn
-  no-inline-comments: warn
-  no-inner-declarations: warn
-  no-invalid-regexp: warn
-  no-irregular-whitespace: warn
-  no-iterator: warn
-  no-label-var: warn
-  no-labels: warn
-  no-lone-blocks: warn
-  no-lonely-if: error
-  no-mixed-requires: error
-  no-multi-str: warn
-  no-native-reassign: error
-  no-negated-condition: warn
-  no-negated-in-lhs: error
-  no-new-func: warn
-  no-new-object: warn
-  no-new-require: warn
-  no-new-symbol: warn
-  no-new-wrappers: warn
-  no-new: warn
-  no-obj-calls: warn
-  no-octal-escape: warn
-  no-octal: warn
-  no-param-reassign: warn
-  no-path-concat: warn
-  no-process-env: warn
-  no-process-exit: warn
-  no-proto: warn
-  no-prototype-builtins: warn
-  no-redeclare: warn
-  no-regex-spaces: warn
-  no-restricted-globals: warn
-  no-restricted-imports: warn
-  no-restricted-modules: warn
-  no-restricted-syntax: warn
-  no-return-assign: error
-  no-script-url: warn
-  no-self-assign: warn
-  no-self-compare: warn
-  no-sequences: warn
-  no-shadow-restricted-names: warn
-  no-shadow: warn
-  no-sparse-arrays: warn
-  no-sync: warn
-  no-this-before-super: warn
-  no-throw-literal: warn
-  no-undef-init: warn
-  no-undef: error
-  no-unmodified-loop-condition: warn
-  no-unneeded-ternary: error
-  no-unreachable: error
-  no-unsafe-finally: error
-  no-unused-expressions: error
-  no-unused-labels: error
-  no-unused-vars: error
-  no-use-before-define: error
-  no-useless-call: warn
-  no-useless-computed-key: warn
-  no-useless-concat: warn
-  no-useless-constructor: warn
-  no-useless-escape: warn
-  no-useless-rename: warn
-  no-void: warn
-  no-with: warn
-  operator-assignment: [error, always]
-  prefer-const: warn
-  radix: warn
-  require-yield: warn
-  sort-imports: warn
-  spaced-comment: [error, always]
-  strict: [error, function]
-  use-isnan: error
-  valid-jsdoc:
-    - warn
-    - prefer:
-        arg: param
-        argument: param
-        augments: extends
-        constructor: class
-        exception: throws
-        func: function
-        method: function
-        prop: property
-        return: returns
-        virtual: abstract
-        yield: yields
-      preferType:
-        array: Array
-        bool: Boolean
-        boolean: Boolean
-        number: Number
-        object: Object
-        str: String
-        string: String
-      requireParamDescription: false
-      requireReturn: false
-      requireReturnDescription: false
-      requireReturnType: false
-  valid-typeof: warn
-  yoda: warn
diff --git a/eslint.config.cjs b/eslint.config.cjs
index bf4e5463c9876188e5bd071d53e7feafd83b20ca_ZXNsaW50LmNvbmZpZy5janM=..24827a60a72f33f563f211fbe197acbdeecba8f6_ZXNsaW50LmNvbmZpZy5janM= 100644
--- a/eslint.config.cjs
+++ b/eslint.config.cjs
@@ -17,6 +17,8 @@
         openerp: "readonly",
         owl: "readonly",
         luxon: "readonly",
+        InputEvent: "readonly",
+        KeyboardEvent: "readonly",
       },
       ecmaVersion: 2024,
       sourceType: "script",
diff --git a/static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.js b/static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.esm.js
similarity index 92%
rename from static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.js
rename to static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.esm.js
index bf4e5463c9876188e5bd071d53e7feafd83b20ca_c3RhdGljL3NyYy9jb21wb25lbnRzL2R5bmFtaWNfcGxhY2Vob2xkZXJfY2hhcl9maWVsZC9keW5hbWljX3BsYWNlaG9sZGVyX2NoYXJfZmllbGQuanM=..24827a60a72f33f563f211fbe197acbdeecba8f6_c3RhdGljL3NyYy9jb21wb25lbnRzL2R5bmFtaWNfcGxhY2Vob2xkZXJfY2hhcl9maWVsZC9keW5hbWljX3BsYWNlaG9sZGVyX2NoYXJfZmllbGQuZXNtLmpz 100644
--- a/static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.js
+++ b/static/src/components/dynamic_placeholder_char_field/dynamic_placeholder_char_field.esm.js
@@ -1,8 +1,6 @@
-/** @odoo-module */
-
 import {CharField, charField} from "@web/views/fields/char/char_field";
 import {patch} from "@web/core/utils/patch";
 
 // Adding a new property for dynamic placeholder button visibility
 CharField.props = {
     ...CharField.props,
@@ -3,10 +1,10 @@
 import {CharField, charField} from "@web/views/fields/char/char_field";
 import {patch} from "@web/core/utils/patch";
 
 // Adding a new property for dynamic placeholder button visibility
 CharField.props = {
     ...CharField.props,
-    rednerDynamicPlaceholder: {type: Boolean, optional: true}, // Dynamic placeholder flag
+    rednerDynamicPlaceholder: {type: Boolean, optional: true},
     buttonVisibilityField: {type: String, optional: true},
     converterField: {type: String, optional: true},
 };
@@ -47,9 +45,9 @@
             this.input.el.focus();
 
             // Build placeholder based on converter type
-            let placeholder;
+            let placeholder = "";
             switch (this.activeConverterType) {
                 case "field":
                     placeholder = `${chain}`;
                     break;
                 // Add other converter types here
@@ -51,11 +49,11 @@
             switch (this.activeConverterType) {
                 case "field":
                     placeholder = `${chain}`;
                     break;
                 // Add other converter types here
-                default:
+                default: {
                     const defaultValuePart = defaultValue?.length
                         ? ` ||| ${defaultValue}`
                         : "";
                     placeholder = `{{object.${chain}${defaultValuePart}}}`;
                     break;
@@ -57,8 +55,9 @@
                     const defaultValuePart = defaultValue?.length
                         ? ` ||| ${defaultValue}`
                         : "";
                     placeholder = `{{object.${chain}${defaultValuePart}}}`;
                     break;
+                }
             }
             this.input.el.setRangeText(
                 placeholder,
@@ -66,7 +65,7 @@
                 this.selectionStart,
                 "end"
             );
-            // trigger events to make the field dirty
+            // Trigger events to make the field dirty
             this.input.el.dispatchEvent(new InputEvent("input"));
             this.input.el.dispatchEvent(new KeyboardEvent("keydown"));
             this.input.el.focus();
diff --git a/static/src/js/redner_report_action.esm.js b/static/src/js/redner_report_action.esm.js
index bf4e5463c9876188e5bd071d53e7feafd83b20ca_c3RhdGljL3NyYy9qcy9yZWRuZXJfcmVwb3J0X2FjdGlvbi5lc20uanM=..24827a60a72f33f563f211fbe197acbdeecba8f6_c3RhdGljL3NyYy9qcy9yZWRuZXJfcmVwb3J0X2FjdGlvbi5lc20uanM= 100644
--- a/static/src/js/redner_report_action.esm.js
+++ b/static/src/js/redner_report_action.esm.js
@@ -1,5 +1,3 @@
-/** @odoo-module */
-
 /*
 Redner Odoo module
 Copyright © 2016 XCG Consulting <https://xcg-consulting.fr>