Samuel Degueldre
140818b5f9
[IMP] compiler: allow to declare default slot scope on component
2022-02-11 10:46:44 +01:00
Géry Debongnie
83de53d283
[REF] allow external code to override validateTarget
2022-02-11 10:46:44 +01:00
Géry Debongnie
50aac42bdc
[IMP] component: validate mounting target at patch time
2022-02-11 10:46:44 +01:00
Géry Debongnie
bd98d4d0d0
[IMP] component: disallow calling hooks outside of setup
...
(and constructor)
Doing so could cause strange and difficult bugs
2022-02-11 10:46:44 +01:00
Bruno Boi
4d68dac24d
[FIX] hooks: useSubEnv will not erase previous useChildSubEnv
2022-02-11 10:46:44 +01:00
Géry Debongnie
722abd6d5f
[IMP] app: introduce test mode
...
Same as `dev` mode, but without warning in console
2022-02-11 10:46:44 +01:00
Géry Debongnie
ff734c706c
[IMP] typing: make app and mount method properly generic
2022-02-11 10:46:44 +01:00
Bruno Boi
add5fdd737
[FIX] compiler: never add _ prefix to non variable token
2022-02-11 10:46:44 +01:00
Samuel Degueldre
a221411938
[FIX] compiler: do not pass dynamic props object as is
...
The child receiving the props can observe changes made to the passed
t-props object which is not desirable.
2022-02-11 10:46:44 +01:00
Bruno Boi
bb6479f44f
[FIX] compiler: add _ prefix to local variables while compiling an expression
2022-02-11 10:46:44 +01:00
Géry Debongnie
aa95149997
[IMP] hooks: introduce useChildSubEnv and change useSubEnv
2022-02-11 10:46:44 +01:00
Géry Debongnie
e4b4ee471f
[FIX] compiler: does not modify xml doc in place
2022-02-11 10:46:44 +01:00
Bruno Boi
3af5e57825
[FIX] component: properly capture expression of t-model
2022-02-11 10:46:44 +01:00
Géry Debongnie
93f2c1d766
[FIX] reactivity: clear callbacks at destroy time instead of unmount
2022-02-11 10:46:44 +01:00
Géry Debongnie
0728c8333d
[FIX] compiler: add missing ; in some places
2022-02-11 10:46:44 +01:00
Géry Debongnie
6639d361c3
[FIX] component: proper error message in dev mode in some cases
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
72962f1dd1
[FIX] compiler: force new block for svg nested in html
2022-02-11 10:46:44 +01:00
Géry Debongnie
a4d9aae9a7
[FIX] svg: allow path as root tag
2022-02-11 10:46:44 +01:00
Samuel Degueldre
1e8576ad40
[FIX] blockdom: fix VHtml patching not setting its html correctly
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
753d82149e
[FIX] compiler: t-model on select with options with dynamic values
2022-02-11 10:46:44 +01:00
Géry Debongnie
d828f39a2d
[FIX] reactivity: do not observe eventtarget and other stuff
2022-02-11 10:46:44 +01:00
Géry Debongnie
0a73154985
[IMP] reactivity: introduces markRaw and toRaw functions
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
d88eb34d4f
[FIX] compiler: svg in new block takes the right namespace
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
a8d88d4009
[FIX] compiler: t-key on a sub-domnode pushes an anchor in parent block
2022-02-11 10:46:44 +01:00
Géry Debongnie
6d9ed0d62f
[REF] utils: move batched from reactivity to utils
2022-02-11 10:46:44 +01:00
Géry Debongnie
b33471e819
[IMP] component: improve error message when invalid handler
2022-02-11 10:46:44 +01:00
Géry Debongnie
96620d3e8e
[FIX] scheduler: make sure raf is bound to window
2022-02-11 10:46:44 +01:00
Géry Debongnie
176c89b278
[REF] scheduler: capture requestAnimationFrame asap
...
This is useful to prevent interactions with other testing code.
2022-02-11 10:46:44 +01:00
Géry Debongnie
38941bc26f
[FIX] playground: update example to owl 2
2022-02-11 10:46:44 +01:00
Géry Debongnie
81f44ee5d3
[FIX] reactivity: export Reactive type
2022-02-11 10:46:44 +01:00
Géry Debongnie
99b5e9ec55
[FIX] typing: Component class should be generic on Props and Env
...
Otherwise, it prevents proper typing with typescript
2022-02-11 10:46:44 +01:00
Géry Debongnie
eab0caa6cb
[IMP] portal: ensure that destroy is synchronous
2022-02-11 10:46:44 +01:00
Géry Debongnie
89d63ff29a
[IMP] components: crash when using unknown suffix/modifiers
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
a2e8abc243
[FIX] component, error_handling: do not cancel the error fiber twice
2022-02-11 10:46:44 +01:00
Géry Debongnie
7c78442e43
[FIX] remove circular dependency
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
374dbb2fd9
[FIX] components: cascading render after microtaskTick (makeChildFiber)
...
Co-authored-by: Samuel Degueldre <sad@odoo.com >
Co-authored-by: François Georis <fge@odoo.com >
2022-02-11 10:46:44 +01:00
Michael (mcm)
cccb379377
[FIX] bind lifecycle callbacks to component
...
Before this commit, some of the callbacks were bound to the component
and some were not.
This commit makes all the callbacks bind to the component.
2022-02-11 10:46:44 +01:00
Jorge Pinna Puissant
41ad5db2e3
[IMP] portal: compile t-portal in an internal Component Portal
...
This commit also clean-up the deepRemove for the Portal that is not
needed any more.
2022-02-11 10:46:44 +01:00
Géry Debongnie
42a140a8e3
[FIX] components: only call handlers if component is mounted
2022-02-11 10:46:44 +01:00
Géry Debongnie
7711733a23
[FIX] blockdom: toString method in multi could crash
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
281b32965e
[FIX] app: t_call recursive template is bound to the correct this
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
cec451fd15
[FIX] compiler: slot are called with a specific and different key
2022-02-11 10:46:44 +01:00
Samuel Degueldre
6a7703ea82
[FIX] code_generator: stop matching other variables prefix
...
Previously, we would replace block declarations in some contexts with
the variable alone, and decalres the variable higher in the generated
code. Issues arise because whe sometimes try to replace "let b2" with
"b2" but end up matching "let b20" which is incorrect.
This commit fixes that by adding a space to the text that we are trying
to match ("let b2 " won't match "let b20")
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
4a03a60084
[FIX] component, fiber: subchildren should also patch and destroy their children
...
Have a GrandParent which controls whether one of its GrandChildren is displayed or not.
First, the GrandChild is displayed. Then, change the state of the GrandParent in order to kill
the GrandChild.
Before this commit the GrandChild is only removed from the DOM, as bdom correctly works.
But it is not destroyed.
After this commit, the GrandChild is correctly destroyed.
2022-02-11 10:46:44 +01:00
Jorge Pinna Puissant
90167c5436
[IMP] portal: portal as a Directive
...
Before this commit, portal was a Component, now is a directive.
This commit also clean some unused code, and fix an issue on the clean
optimization when a portal is found in a condition or a loop.
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
c221721d7f
[FIX] components: avoid leaks when children are outdated/destroyed
...
Every use case involving some sort of key set on a component would give birth to a leak in an async context:
- If a key of a component changed, the outdated one was never destroyed.
- destroyed component were never removed from their parent's reference map.
This commit solves both issues, that are tightly linked anyway.
2022-02-11 10:46:44 +01:00
Géry Debongnie
52d0526ddd
[FIX] portal: properly handle errors
...
Before this commit, Portal overrode the _render function for its
component node, which means it bypassed the error handling mechanism
that was implemented in that method. It could have been fixed by
duplicating the error handling code as well, but a better solution in my
opinion is to simply override the renderFn function. This is closer to
the actual intent of the portal implementation: wrap the result of the
rendering in a VPortal vnode.
2022-02-11 10:46:44 +01:00
Lucas Perais (lpe)
4b170b9b45
[FIX] app, components: dynamic t-call should propagate the key
...
Have a Component which has a Component node, and a dynamic t-call itself having
a Component node.
Before this commit, both children had the same `key`, (as in the key in parent.children, which registers on the parent all its children).
As a result, the scheduler was endlessly hanging.
After this commit, it works as expected.
2022-02-11 10:46:44 +01:00
Géry Debongnie
3e1fe07ba7
[REF] compiler: factorize a common pattern
2022-02-11 10:46:44 +01:00
Géry Debongnie
5bf47500d5
[FIX] compiler: handle t-set as functions
2022-02-11 10:46:44 +01:00