[IMP] config: add enableTransitions flag to config

It is useful to be able to disable the t-transition directive for
testing purposes.  This commit introduces a global config flag to do
just that.

closes #768
This commit is contained in:
Géry Debongnie
2020-10-20 13:05:39 +02:00
committed by aab-odoo
parent a68d7774c6
commit b08cc1d084
4 changed files with 33 additions and 2 deletions
+19 -2
View File
@@ -2,9 +2,10 @@
The Owl framework is designed to work in many situations. However, it is
sometimes necessary to customize some behaviour. This is done by using the
global `config` object. It currently has one key:
global `config` object. It provides two settings:
- [`mode`](#mode).
- [`mode`](#mode) (default value: `prod`),
- [`enableTransitions`](#enabletransitions) (default value: `true`).
## Mode
@@ -25,3 +26,19 @@ So, changing this setting is best done at startup.
An important job done by the `dev` mode is to validate props for each component
creation and update. Also, extra props will cause an error.
## `enableTransitions`
Transitions are usually nice, but they can cause issues in some specific cases,
such as automated tests. It is uncomfortable having to wait for a transition
to end before moving to the next step.
To solve this issue, Owl can be configured to ignore the `t-transition` directive.
To do that, one only needs to set the `enableTransitions` flag to false:
```js
owl.config.enableTransitions = false;
```
Note that it suffers from the same drawback as the "dev" mode: all compiled
templates, if any, will keep their current behaviours.
+10
View File
@@ -8,6 +8,7 @@ import { QWeb } from "./qweb/index";
interface Config {
mode: string;
enableTransitions: boolean;
}
export const config = {} as Config;
@@ -28,3 +29,12 @@ Object.defineProperty(config, "mode", {
}
},
});
Object.defineProperty(config, "enableTransitions", {
get() {
return QWeb.enableTransitions;
},
set(value: boolean) {
QWeb.enableTransitions = value;
},
});
+3
View File
@@ -205,6 +205,9 @@ QWeb.addDirective({
name: "transition",
priority: 96,
atNodeCreation({ ctx, value, addNodeHook }) {
if (!QWeb.enableTransitions) {
return;
}
ctx.rootContext.shouldDefineUtils = true;
let name = value;
const hooks = {
+1
View File
@@ -212,6 +212,7 @@ export class QWeb extends EventBus {
h = h;
// dev mode enables better error messages or more costly validations
static dev: boolean = false;
static enableTransitions: boolean = true;
// slots contains sub templates defined with t-set inside t-component nodes, and
// are meant to be used by the t-slot directive.