vsn 0.1.82 → 0.1.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/demo/demo.html +18 -16
  2. package/demo/vsn.js +2 -2
  3. package/dist/AST/ClassNode.d.ts +4 -2
  4. package/dist/AST/ClassNode.js +68 -45
  5. package/dist/AST/ClassNode.js.map +1 -1
  6. package/dist/AST/ElementAttributeNode.js +20 -6
  7. package/dist/AST/ElementAttributeNode.js.map +1 -1
  8. package/dist/AST/ScopeNodeAbstract.js +2 -1
  9. package/dist/AST/ScopeNodeAbstract.js.map +1 -1
  10. package/dist/Component.js +1 -0
  11. package/dist/Component.js.map +1 -1
  12. package/dist/DOM.d.ts +1 -0
  13. package/dist/DOM.js +19 -3
  14. package/dist/DOM.js.map +1 -1
  15. package/dist/Model.js +10 -0
  16. package/dist/Model.js.map +1 -1
  17. package/dist/Scope/ScopeDataAbstract.d.ts +2 -0
  18. package/dist/Scope/ScopeDataAbstract.js +9 -0
  19. package/dist/Scope/ScopeDataAbstract.js.map +1 -1
  20. package/dist/Tag.js +9 -1
  21. package/dist/Tag.js.map +1 -1
  22. package/dist/attributes/List.js +9 -4
  23. package/dist/attributes/List.js.map +1 -1
  24. package/dist/attributes/ListItem.js +6 -3
  25. package/dist/attributes/ListItem.js.map +1 -1
  26. package/dist/version.d.ts +1 -1
  27. package/dist/version.js +1 -1
  28. package/dist/vsn.js +1 -1
  29. package/dist/vsn.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/AST/ClassNode.ts +23 -5
  32. package/src/AST/ElementAttributeNode.ts +10 -2
  33. package/src/AST/ScopeNodeAbstract.ts +1 -1
  34. package/src/Component.ts +2 -0
  35. package/src/DOM.ts +15 -0
  36. package/src/Model.ts +2 -1
  37. package/src/Scope/ScopeDataAbstract.ts +11 -0
  38. package/src/Tag.ts +8 -1
  39. package/src/attributes/List.ts +7 -4
  40. package/src/attributes/ListItem.ts +5 -4
  41. package/src/version.ts +1 -1
  42. package/src/vsn.ts +1 -1
  43. package/test/AST/ClassNode.spec.ts +11 -13
  44. package/test/attributes/ListItem.spec.ts +22 -28
  45. package/dist/vsn.min.js +0 -3
  46. package/dist/vsn.min.js.LICENSE.txt +0 -9
@@ -4,6 +4,8 @@ import {DOM} from "../../src/DOM";
4
4
  import {ListItem} from "../../src/attributes/ListItem";
5
5
  import {Registry} from "../../src/Registry";
6
6
  import {List} from "../../src/attributes/List";
7
+ import {Model} from "../../src/Model";
8
+ import {property} from "../../src/Scope/properties/Property";
7
9
 
8
10
  @Registry.controller('ListItemController')
9
11
  class ListItemController{
@@ -12,26 +14,19 @@ class ListItemController{
12
14
  do() {}
13
15
  }
14
16
 
15
- @Registry.controller('ListItemSpecTestItem')
16
- class ListItemSpecTestItem {
17
+ @Registry.model('ListItemSpecTestItem')
18
+ class ListItemSpecTestItem extends Model {
19
+ @property()
17
20
  test: number = null;
18
21
 
19
- constructor(
20
- public readonly v: number = 123,
21
- test: number
22
- ) {
23
- this.test = test;
24
- }
25
-
26
- getValue() {
27
- return this.v
28
- }
22
+ @property()
23
+ v: number;
29
24
  }
30
25
 
31
26
  describe('ListItem', () => {
32
27
  it("vsn-list-item should find it's parent list or complain", async () => {
33
28
  document.body.innerHTML = `
34
- <ul id="test"><li vsn-list-item:item="ListItemSpecTestItem" id="test-item"></li></ul>
29
+ <ul id="test"><li vsn-list-item:item id="test-item"></li></ul>
35
30
  `;
36
31
  let errorThrown: boolean = false;
37
32
  try {
@@ -46,7 +41,7 @@ describe('ListItem', () => {
46
41
 
47
42
  it("vsn-list-item should find it's parent list", (done) => {
48
43
  document.body.innerHTML = `
49
- <ul vsn-list:list id="test"><li vsn-list-item:item="ListItemSpecTestItem" id="test-item"></li></ul>
44
+ <ul vsn-list:list vsn-list-item-model="ListItemSpecTestItem" id="test"><li vsn-list-item:item id="test-item"></li></ul>
50
45
  `;
51
46
 
52
47
  const dom = new DOM(document);
@@ -63,8 +58,8 @@ describe('ListItem', () => {
63
58
  it("should properly wrap list item class", (done) => {
64
59
  document.body.innerHTML = `
65
60
  <div vsn-controller:controller="ListItemController">
66
- <ul vsn-list:controller.items id="test">
67
- <li vsn-template vsn-list-item:item="ListItemSpecTestItem"></li>
61
+ <ul vsn-list:controller.items vsn-list-item-model="ListItemSpecTestItem" id="test">
62
+ <li vsn-template vsn-list-item:item></li>
68
63
  </ul>
69
64
  </div>
70
65
  `;
@@ -77,25 +72,24 @@ describe('ListItem', () => {
77
72
  list.on('add', () => {
78
73
  const listItem = listAttr.tags[0];
79
74
 
80
- expect(listItem.scope.wrapped instanceof ListItemSpecTestItem).toBeTrue();
81
- expect(controller.items[0] instanceof ListItemSpecTestItem).toBeTrue();
82
- expect(listItem.scope.wrapped === controller.items[0]).toBeTrue();
75
+ expect(listItem.scope.data instanceof ListItemSpecTestItem).toBeTrue();
83
76
  expect(controller.items.length).toBe(1);
84
- expect(controller.items.indexOf(listItem.scope.wrapped) > -1).toBeTrue();
85
- expect(controller.items.indexOf(listItem.scope.wrapped) > -1).toBeTrue();
86
- expect(listItem.scope.get('test')).toBe(1);
87
- expect(listItem.scope.get('v')).toBe(555);
77
+ expect(controller.items[0] instanceof ListItemSpecTestItem).toBeTrue();
78
+
88
79
  done();
89
80
  });
90
81
 
91
82
  listAttr.items.length = 0;
92
- listAttr.items.push(new ListItemSpecTestItem(555, 1));
83
+ listAttr.items.push(new ListItemSpecTestItem({
84
+ test: 1,
85
+ v: 555
86
+ }));
93
87
  });
94
88
  });
95
89
 
96
90
  it("vsn-list-item should work with vsn-set", (done) => {
97
91
  document.body.innerHTML = `
98
- <ul vsn-list:list id="test"><li vsn-list-item:item="ListItemSpecTestItem" id="test-item" vsn-set:item.testing|integer="1"></li></ul>
92
+ <ul vsn-list:list vsn-list-item-model="ListItemSpecTestItem" id="test"><li vsn-list-item:item id="test-item" vsn-set:item.testing|integer="1"></li></ul>
99
93
  `;
100
94
 
101
95
  const dom = new DOM(document);
@@ -111,7 +105,7 @@ describe('ListItem', () => {
111
105
 
112
106
  it("vsn-list-item should work with vsn-exec", (done) => {
113
107
  document.body.innerHTML = `
114
- <ul vsn-list:list id="test"><li vsn-list-item:item="ListItemSpecTestItem" id="test-item" vsn-exec="item.testing = 1"></li></ul>
108
+ <ul vsn-list:list vsn-list-item-model="ListItemSpecTestItem" id="test"><li vsn-list-item:item id="test-item" vsn-exec="item.test = 1"></li></ul>
115
109
  `;
116
110
 
117
111
  const dom = new DOM(document);
@@ -119,8 +113,8 @@ describe('ListItem', () => {
119
113
  const list = await dom.getTagForElement(document.getElementById('test'));
120
114
  const listItem = await dom.getTagForElement(document.getElementById('test-item'));
121
115
  const listItemAttr: ListItem = await listItem.getAttribute('vsn-list-item') as ListItem;
122
-
123
- expect(listItem.scope.get('testing')).toBe(1);
116
+ console.log('test keys', listItem.scope.keys);
117
+ expect(listItem.scope.get('test')).toBe(1);
124
118
  done();
125
119
  });
126
120
  });