From 3001420a1d195ad29665c4f591db310b44857994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Wed, 28 Jun 2023 11:17:24 +0200 Subject: [PATCH] [REL] v2.1.4 # v2.1.3 - [FIX] components: properly differentiate t-call subcomponents - [REF] devtools: Better messages forwarding - [FIX] devtools: Fix app methods patching - [DOC] Fix a code bug in the example of slots --- docs/owl.js | 68 ++++++++++++++++++++++++++++++++++------------- package-lock.json | 2 +- package.json | 2 +- src/version.ts | 2 +- 4 files changed, 53 insertions(+), 21 deletions(-) diff --git a/docs/owl.js b/docs/owl.js index 86c9d5ddb..194dfcf5d 100644 --- a/docs/owl.js +++ b/docs/owl.js @@ -175,11 +175,21 @@ function createAttrUpdater(attr) { } function attrsSetter(attrs) { if (isArray(attrs)) { - setAttribute.call(this, attrs[0], attrs[1]); + if (attrs[0] === "class") { + setClass.call(this, attrs[1]); + } + else { + setAttribute.call(this, attrs[0], attrs[1]); + } } else { for (let k in attrs) { - setAttribute.call(this, k, attrs[k]); + if (k === "class") { + setClass.call(this, attrs[k]); + } + else { + setAttribute.call(this, k, attrs[k]); + } } } } @@ -191,7 +201,12 @@ function attrsUpdater(attrs, oldAttrs) { if (val === oldAttrs[1]) { return; } - setAttribute.call(this, name, val); + if (name === "class") { + updateClass.call(this, val, oldAttrs[1]); + } + else { + setAttribute.call(this, name, val); + } } else { removeAttribute.call(this, oldAttrs[0]); @@ -201,13 +216,23 @@ function attrsUpdater(attrs, oldAttrs) { else { for (let k in oldAttrs) { if (!(k in attrs)) { - removeAttribute.call(this, k); + if (k === "class") { + updateClass.call(this, "", oldAttrs[k]); + } + else { + removeAttribute.call(this, k); + } } } for (let k in attrs) { const val = attrs[k]; if (val !== oldAttrs[k]) { - setAttribute.call(this, k, val); + if (k === "class") { + updateClass.call(this, val, oldAttrs[k]); + } + else { + setAttribute.call(this, k, val); + } } } } @@ -3875,6 +3900,10 @@ class CodeGenerator { }) .join(""); } + translate(str) { + const match = translationRE.exec(str); + return match[1] + this.translateFn(match[2]) + match[3]; + } /** * @returns the newly created block name, if any */ @@ -3952,8 +3981,7 @@ class CodeGenerator { let { block, forceNewBlock } = ctx; let value = ast.value; if (value && ctx.translate !== false) { - const match = translationRE.exec(value); - value = match[1] + this.translateFn(match[2]) + match[3]; + value = this.translate(value); } if (!ctx.inPreTag) { value = value.replace(whitespaceRE, " "); @@ -4494,11 +4522,12 @@ class CodeGenerator { else { let value; if (ast.defaultValue) { + const defaultValue = ctx.translate ? this.translate(ast.defaultValue) : ast.defaultValue; if (ast.value) { - value = `withDefault(${expr}, \`${ast.defaultValue}\`)`; + value = `withDefault(${expr}, \`${defaultValue}\`)`; } else { - value = `\`${ast.defaultValue}\``; + value = `\`${defaultValue}\``; } } else { @@ -4879,10 +4908,10 @@ function parseDOMNode(node, ctx) { let model = null; for (let attr of nodeAttrsNames) { const value = node.getAttribute(attr); - if (attr.startsWith("t-on")) { - if (attr === "t-on") { - throw new OwlError("Missing event name with t-on directive"); - } + if (attr === "t-on" || attr === "t-on-") { + throw new OwlError("Missing event name with t-on directive"); + } + if (attr.startsWith("t-on-")) { on = on || {}; on[attr.slice(5)] = value; } @@ -5506,7 +5535,7 @@ function compile(template, options = {}) { } // do not modify manually. This file is generated by the release script. -const version = "2.1.2"; +const version = "2.1.3"; // ----------------------------------------------------------------------------- // Scheduler @@ -5585,6 +5614,8 @@ window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps: new Set(), Fiber: Fiber, RootFiber: RootFiber, + toRaw: toRaw, + reactive: reactive, }); class App extends TemplateSet { constructor(Root, config = {}) { @@ -5837,8 +5868,9 @@ function useChildSubEnv(envExtension) { * will run a cleanup function before patching and before unmounting the * the component. * - * @param {Effect} effect the effect to run on component mount and/or patch - * @param {()=>any[]} [computeDependencies=()=>[NaN]] a callback to compute + * @template T + * @param {Effect} effect the effect to run on component mount and/or patch + * @param {()=>T} [computeDependencies=()=>[NaN]] a callback to compute * dependencies that will decide if the effect needs to be cleaned up and * run again. If the dependencies did not change, the effect will not run * again. The default value returns an array containing only NaN because @@ -5920,6 +5952,6 @@ TemplateSet.prototype._compileTemplate = function _compileTemplate(name, templat export { App, Component, EventBus, OwlError, __info__, blockDom, loadFile, markRaw, markup, mount, onError, onMounted, onPatched, onRendered, onWillDestroy, onWillPatch, onWillRender, onWillStart, onWillUnmount, onWillUpdateProps, reactive, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, validate, validateType, whenReady, xml }; -__info__.date = '2023-04-29T07:45:54.333Z'; -__info__.hash = 'aabb755'; +__info__.date = '2023-06-28T09:17:13.630Z'; +__info__.hash = '432ff44'; __info__.url = 'https://github.com/odoo/owl'; diff --git a/package-lock.json b/package-lock.json index 65915b438..2ff4ededf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@odoo/owl", - "version": "2.1.3", + "version": "2.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 64d1d3b29..8a22ef201 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@odoo/owl", - "version": "2.1.3", + "version": "2.1.4", "description": "Odoo Web Library (OWL)", "main": "dist/owl.cjs.js", "module": "dist/owl.es.js", diff --git a/src/version.ts b/src/version.ts index 65327bad2..7996d1c39 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,2 +1,2 @@ // do not modify manually. This file is generated by the release script. -export const version = "2.1.3"; +export const version = "2.1.4";