Géry Debongnie
0c1a7aabae
[FIX] component: better templateId for multiple subcomponents
...
Of course, the templateId computation is kind of tricky. Here, an issue
occurred because the templateId did not take the componentId into
account when we were in a loop, but with no keyed parent.
This meant that multiple sub components shared the same templateId,
confusing the vdom algorithm.
2019-09-03 16:38:24 +02:00
Géry Debongnie
cfdce29ce7
[FIX] component: avoid key collisions in sub components
...
This is a difficult part of owl: we need to be able to reconcile the
vdom generated (this is done with our virtual dom algorithm), but also
to be able to reconcile the proper components.
The issue here is that when we are in a list, with a t-key attribute on all
list nodes, and those list nodes contains sub component, then the
component system used the index of the list, and did not take into
account the key from the parent. The fix is to keep track of the
current key in the context, and uses that as a part of the templateId.
2019-09-03 12:13:57 +02:00
Géry Debongnie
b344d73e07
[FIX] component: prevent collision between template ids and keys
2019-09-02 15:27:37 +02:00
Géry Debongnie
4cd08d25c8
[FIX] component: solve tricky concurrency issue
...
In some specific situation, a component could crash, because it was
destroyed before being mounted, but reused anyway for another rendering.
2019-09-01 21:24:54 +02:00
Géry Debongnie
f9861040c8
[FIX] router: properly react on hashchange
...
Before this commit, hashchanges were not taken into account by the
router, if used in history mode.
Also, it's stupid, but i ran prettier on the codebase
2019-09-01 11:45:13 +02:00
Géry Debongnie
40d8090232
[FIX] router: update app if parameterized route changes
2019-08-31 15:03:17 +02:00
Géry Debongnie
55be6437f1
[FIX] router: better support for hash mode
2019-08-31 09:55:45 +02:00
Géry Debongnie
e6a3ede4a6
[FIX] component: improve unmount/remount behaviour
2019-08-28 11:41:10 +02:00
Alexandre Kühn
10cfe0b740
[IMP] store: dispatch method returns data from action
2019-08-27 22:26:16 +02:00
Géry Debongnie
a3d563ebb4
[FIX] connected_component: some misc issues
...
- did not properly stop listening to the store after being destroyed
- did not properly synchronize store updates in some async cases
2019-08-27 17:11:54 +02:00
Géry Debongnie
3b1247d476
[REF] vdom: small cleanup
2019-08-27 16:01:01 +02:00
Géry Debongnie
9b3a97e732
[DOC] component: improve internal documentation
2019-08-26 12:19:11 +02:00
Géry Debongnie
c59abef374
[IMP] connected component: add dispatch method
2019-08-26 10:31:11 +02:00
Géry Debongnie
bb4c2506c0
[REF] store: merge actions and mutations
...
closes #256
2019-08-26 10:31:11 +02:00
Géry Debongnie
9843d16585
[REF] component: improve render method
2019-08-26 10:31:11 +02:00
Géry Debongnie
34e463ad0a
[REF] connected component: separate storeprops from props
...
closes #259
2019-08-26 10:31:11 +02:00
Géry Debongnie
2294c1967f
[IMP] qweb: allow xml documents as template definition
...
Before this commit, the addTemplates method only accepts a string. But
whenever we perform a $.get call, we get a parsed xml document. So, to
make Owl more convenient to use in that situation, we simply accept xml
documents in addition to strings.
2019-08-23 15:17:28 +02:00
Géry Debongnie
e690991a6a
[FIX] component: better heuristic to determine if was mounted
2019-08-22 14:55:31 +02:00
Géry Debongnie
9754cc7521
[REF] small cleanup
2019-08-22 14:26:34 +02:00
Géry Debongnie
aa268937a7
[IMP] router: navigate now returns more information
2019-08-22 14:26:34 +02:00
Géry Debongnie
635a7fc72c
[FIX] router: do not prevent default click on <a> in some cases
2019-08-22 14:26:34 +02:00
Géry Debongnie
6cd5ec10f0
[FIX] router: properly redirect if necessary when started
2019-08-22 14:26:34 +02:00
Géry Debongnie
0a276fbf1d
[IMP] router: basic implementation of navigation guards
2019-08-22 14:26:34 +02:00
Géry Debongnie
d593131cc1
[REF] router: remove useless check
2019-08-22 14:26:34 +02:00
Géry Debongnie
6ecd1d6ea2
[IMP] router: add validation for destinations
2019-08-22 14:26:34 +02:00
Géry Debongnie
1a931a2a08
[IMP] router: implement redirect feature
2019-08-22 14:26:34 +02:00
Géry Debongnie
bf705fcd99
[REF] router: add TestRouter and improve tests
2019-08-22 14:26:34 +02:00
Géry Debongnie
bb46346767
[REF] router: change Destination shape
2019-08-22 14:26:34 +02:00
Géry Debongnie
cd0762b436
[REF] rework router into a class
2019-08-22 14:26:34 +02:00
Géry Debongnie
ca920a0091
[ADD] router: initial implementation
2019-08-22 14:26:34 +02:00
Géry Debongnie
e5b1ba24d8
[IMP] component: allow multiple mount/unmount
...
closes #258
2019-08-22 14:23:08 +02:00
Géry Debongnie
eaf912bed7
[FIX] observer: properly handle dates
2019-08-22 14:22:20 +02:00
Géry Debongnie
fd0fb5be00
[REF] observer: refactor observer using proxy
...
closes #253
2019-08-22 14:22:20 +02:00
Alexandre Kühn
ab08e84bff
[IMP] store: return data from dispatching an action
2019-08-22 13:04:32 +02:00
Géry Debongnie
cd9cac1246
[REF] qweb: add forceUpdate method
...
and make sure it only triggers an update once for multiple calls in same
call stack
2019-07-30 15:00:51 +02:00
Géry Debongnie
f6369f9750
[REF] qweb: put directives in static QWeb prop
...
so they can be altered by outside code. This is mostly useful for tests.
2019-07-30 14:37:39 +02:00
Géry Debongnie
f18c73e59f
[FIX] component: solve a tricky concurrency rendering issue
...
When components were initially rendered more than once, in consecutive
microtask ticks, the order of two actions was reversed: the assignation
of the vnode to the __owl__.vnode property, and the assignation of
__owl__.vnode to the final rendered vdom of the component.
As a result, the widget was rendered as null (so, not present).
The reason for this issue was that the renderPromise key was reassigned
at some point.
2019-07-30 08:54:55 +02:00
Géry Debongnie
93d0a7dd46
[FIX] store: properly handle defaultProps in connected components
...
Thanks to aku for issue + tests + first solution
closes #245
2019-07-16 20:51:57 +02:00
Géry Debongnie
b1d022b583
[FIX] qweb: allow t-if with t-call directives
...
closes #246
2019-07-16 13:19:21 +02:00
Géry Debongnie
5382e824b1
[REF] owl: reorganize src code in sub files
2019-07-16 13:12:08 +02:00
Géry Debongnie
15a3f59744
[REF] owl: move some exported values around
...
This is a breaking change. Code using Observer, EventBus, Store or
ConnectedComponent need to update the way they import theses classes.
- Observer is now in owl.misc (so you can import it like this:
const Observer = owl.misc.Observer;)
- EventBus is also now in owl.misc
- Store and ConnectedComponent are now together in store
2019-07-14 09:02:02 +02:00
Géry Debongnie
545ceefc3d
[REF] store: remove connect function, add ConnectedComponent
...
closes #238
closes #235
2019-07-13 17:04:36 +02:00
Géry Debongnie
591508e769
[IMP] component: allow top level widgets
...
closes #166
2019-07-12 14:31:34 +02:00
Géry Debongnie
d9cbd23cd9
[IMP] component: add catchError hook
2019-07-12 09:52:09 +02:00
Géry Debongnie
f4cd111cc8
[IMP] qweb: more information in an error message
2019-07-11 16:22:30 +02:00
Géry Debongnie
ea015af741
[FIX] component: in slots, qweb was looking in wrong component
...
In slots, the actual parent is where the system should look for existing
widgets, not the rendering context.
closes #239
2019-07-11 15:00:05 +02:00
Géry Debongnie
bfc7c81c0d
[FIX] component: slots should preserve parented relation
...
closes #234
2019-07-10 11:01:15 +02:00
Géry Debongnie
e24ff8f8aa
[IMP] qweb: add renderToString method
...
closes #230
2019-07-09 10:16:27 +02:00
Géry Debongnie
9f1e64d399
[FIX] component: issue with t-slot,t-set,t-value, but no t-foreach
...
closes #232
2019-07-08 17:04:06 +02:00
Géry Debongnie
8e1aa71436
[FIX] component: scope issue with slots
...
Slot templates need to be able to access variables from the parent
scope.
closes #228
2019-07-08 16:24:57 +02:00