vsn 0.1.83 → 0.1.86
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.
- package/demo/demo.html +17 -32
- package/demo/vsn.js +2 -2
- package/dist/AST/ElementAttributeNode.js +20 -6
- package/dist/AST/ElementAttributeNode.js.map +1 -1
- package/dist/AST/ScopeNodeAbstract.js +2 -1
- package/dist/AST/ScopeNodeAbstract.js.map +1 -1
- package/dist/Component.js +1 -0
- package/dist/Component.js.map +1 -1
- package/dist/Model.js +10 -0
- package/dist/Model.js.map +1 -1
- package/dist/Scope/ScopeData.js +0 -1
- package/dist/Scope/ScopeData.js.map +1 -1
- package/dist/Scope/ScopeDataAbstract.d.ts +2 -0
- package/dist/Scope/ScopeDataAbstract.js +9 -0
- package/dist/Scope/ScopeDataAbstract.js.map +1 -1
- package/dist/attributes/List.js +9 -4
- package/dist/attributes/List.js.map +1 -1
- package/dist/attributes/ListItem.js +6 -3
- package/dist/attributes/ListItem.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/vsn.js +1 -1
- package/dist/vsn.js.map +1 -1
- package/package.json +1 -1
- package/src/AST/ElementAttributeNode.ts +10 -2
- package/src/AST/ScopeNodeAbstract.ts +1 -1
- package/src/Component.ts +2 -0
- package/src/Model.ts +2 -1
- package/src/Scope/ScopeData.ts +0 -1
- package/src/Scope/ScopeDataAbstract.ts +11 -0
- package/src/attributes/List.ts +7 -4
- package/src/attributes/ListItem.ts +5 -4
- package/src/version.ts +1 -1
- package/src/vsn.ts +1 -1
- package/test/AST/ClassNode.spec.ts +0 -1
- package/test/attributes/ListItem.spec.ts +22 -28
- package/dist/vsn.min.js +0 -3
- 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.
|
|
16
|
-
class ListItemSpecTestItem {
|
|
17
|
+
@Registry.model('ListItemSpecTestItem')
|
|
18
|
+
class ListItemSpecTestItem extends Model {
|
|
19
|
+
@property()
|
|
17
20
|
test: number = null;
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
85
|
-
|
|
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(
|
|
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
|
|
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
|
|
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('
|
|
116
|
+
console.log('test keys', listItem.scope.keys);
|
|
117
|
+
expect(listItem.scope.get('test')).toBe(1);
|
|
124
118
|
done();
|
|
125
119
|
});
|
|
126
120
|
});
|