--- name: odoo-javascript description: JavaScript/Odoo frontend conventions for this repo (modules, tours, events, lazy loading). Use when editing JS in static/src/js/ of Odoo addons. metadata: type: reference --- # JavaScript (Odoo Web/Frontend) ## Style and conventions - ES6+ (`let`/`const`, arrow functions). Linting with ESLint (`.eslintrc.js` at root). - Odoo pattern: AMD modules (`odoo.define`). - **No business logic in JS, only UI and events.** Business logic lives in Python. - Comments to explain hacks or workarounds. ## Key patterns - Scripts in `static/src/js/`. - UI tours registered with `web_tour.tour` (test: true, url, steps). - **Delegated** events for dynamic elements (lazy loading, infinite scroll in `website_sale_aplicoop`). - AJAX via Odoo helpers (`ajax.jsonRpc`). ## Common mistakes - Business logic in JS → move it to Python. - Listeners lost after DOM manipulation → reattach via event delegation.