@schukai/monster 1.26.1 → 1.27.0

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 (188) hide show
  1. package/CHANGELOG +11 -0
  2. package/README.md +3 -3
  3. package/dist/modules/constants.js +1 -1
  4. package/dist/modules/constraints/abstract.js +1 -1
  5. package/dist/modules/constraints/abstractoperator.js +1 -1
  6. package/dist/modules/constraints/andoperator.js +1 -1
  7. package/dist/modules/constraints/invalid.js +1 -1
  8. package/dist/modules/constraints/isarray.js +1 -1
  9. package/dist/modules/constraints/isobject.js +1 -1
  10. package/dist/modules/constraints/namespace.js +1 -1
  11. package/dist/modules/constraints/oroperator.js +1 -1
  12. package/dist/modules/constraints/valid.js +1 -1
  13. package/dist/modules/data/buildmap.js +1 -1
  14. package/dist/modules/data/buildtree.js +1 -1
  15. package/dist/modules/data/datasource/namespace.js +1 -1
  16. package/dist/modules/data/datasource/restapi/writeerror.js +1 -1
  17. package/dist/modules/data/datasource/restapi.js +1 -1
  18. package/dist/modules/data/datasource/storage/localstorage.js +1 -1
  19. package/dist/modules/data/datasource/storage/namespace.js +1 -1
  20. package/dist/modules/data/datasource/storage/sessionstorage.js +1 -1
  21. package/dist/modules/data/datasource/storage.js +1 -1
  22. package/dist/modules/data/datasource.js +1 -1
  23. package/dist/modules/data/diff.js +1 -1
  24. package/dist/modules/data/extend.js +1 -1
  25. package/dist/modules/data/namespace.js +1 -1
  26. package/dist/modules/data/pathfinder.js +1 -1
  27. package/dist/modules/data/pipe.js +1 -1
  28. package/dist/modules/data/transformer.js +1 -1
  29. package/dist/modules/dom/assembler.js +1 -1
  30. package/dist/modules/dom/attributes.js +2 -2
  31. package/dist/modules/dom/constants.js +2 -2
  32. package/dist/modules/dom/customcontrol.js +1 -1
  33. package/dist/modules/dom/customelement.js +1 -1
  34. package/dist/modules/dom/events.js +1 -1
  35. package/dist/modules/dom/focusmanager.js +1 -1
  36. package/dist/modules/dom/locale.js +1 -1
  37. package/dist/modules/dom/namespace.js +1 -1
  38. package/dist/modules/dom/resource/data.js +1 -1
  39. package/dist/modules/dom/resource/link/stylesheet.js +1 -1
  40. package/dist/modules/dom/resource/link.js +1 -1
  41. package/dist/modules/dom/resource/script.js +1 -1
  42. package/dist/modules/dom/resource.js +1 -1
  43. package/dist/modules/dom/resourcemanager.js +1 -1
  44. package/dist/modules/dom/template.js +2 -2
  45. package/dist/modules/dom/theme.js +1 -1
  46. package/dist/modules/dom/updater.js +2 -2
  47. package/dist/modules/dom/util.js +1 -1
  48. package/dist/modules/dom/worker/factory.js +1 -1
  49. package/dist/modules/i18n/formatter.js +1 -1
  50. package/dist/modules/i18n/locale.js +1 -1
  51. package/dist/modules/i18n/namespace.js +1 -1
  52. package/dist/modules/i18n/provider.js +1 -1
  53. package/dist/modules/i18n/providers/fetch.js +1 -1
  54. package/dist/modules/i18n/providers/namespace.js +1 -1
  55. package/dist/modules/i18n/translations.js +1 -1
  56. package/dist/modules/logging/handler/console.js +1 -1
  57. package/dist/modules/logging/handler/namespace.js +1 -1
  58. package/dist/modules/logging/handler.js +1 -1
  59. package/dist/modules/logging/logentry.js +1 -1
  60. package/dist/modules/logging/logger.js +1 -1
  61. package/dist/modules/logging/namespace.js +1 -1
  62. package/dist/modules/math/namespace.js +1 -1
  63. package/dist/modules/math/random.js +1 -1
  64. package/dist/modules/monster.js +1 -1
  65. package/dist/modules/namespace.js +1 -1
  66. package/dist/modules/text/formatter.js +1 -1
  67. package/dist/modules/text/namespace.js +1 -1
  68. package/dist/modules/types/base.js +1 -1
  69. package/dist/modules/types/basewithoptions.js +1 -1
  70. package/dist/modules/types/binary.js +1 -1
  71. package/dist/modules/types/dataurl.js +1 -1
  72. package/dist/modules/types/global.js +1 -1
  73. package/dist/modules/types/id.js +1 -1
  74. package/dist/modules/types/is.js +1 -1
  75. package/dist/modules/types/mediatype.js +1 -1
  76. package/dist/modules/types/namespace.js +1 -1
  77. package/dist/modules/types/node.js +1 -1
  78. package/dist/modules/types/nodelist.js +1 -1
  79. package/dist/modules/types/noderecursiveiterator.js +1 -1
  80. package/dist/modules/types/observer.js +1 -1
  81. package/dist/modules/types/observerlist.js +1 -1
  82. package/dist/modules/types/proxyobserver.js +1 -1
  83. package/dist/modules/types/queue.js +1 -1
  84. package/dist/modules/types/randomid.js +1 -1
  85. package/dist/modules/types/regex.js +1 -1
  86. package/dist/modules/types/stack.js +1 -1
  87. package/dist/modules/types/tokenlist.js +1 -1
  88. package/dist/modules/types/typeof.js +1 -1
  89. package/dist/modules/types/uniquequeue.js +1 -1
  90. package/dist/modules/types/uuid.js +1 -1
  91. package/dist/modules/types/validate.js +1 -1
  92. package/dist/modules/types/version.js +2 -2
  93. package/dist/modules/util/clone.js +1 -1
  94. package/dist/modules/util/comparator.js +1 -1
  95. package/dist/modules/util/freeze.js +1 -1
  96. package/dist/modules/util/namespace.js +1 -1
  97. package/dist/modules/util/processing.js +1 -1
  98. package/dist/modules/util/trimspaces.js +1 -1
  99. package/dist/monster.dev.js +731 -544
  100. package/dist/monster.dev.js.map +1 -1
  101. package/dist/monster.js +2 -2
  102. package/package.json +1 -1
  103. package/source/constraints/andoperator.js +5 -5
  104. package/source/constraints/invalid.js +3 -3
  105. package/source/constraints/isarray.js +3 -3
  106. package/source/constraints/isobject.js +3 -3
  107. package/source/constraints/oroperator.js +5 -5
  108. package/source/constraints/valid.js +3 -3
  109. package/source/data/buildmap.js +4 -4
  110. package/source/data/buildtree.js +2 -2
  111. package/source/data/datasource/restapi.js +3 -3
  112. package/source/data/datasource/storage/localstorage.js +2 -2
  113. package/source/data/datasource/storage/sessionstorage.js +2 -2
  114. package/source/data/datasource/storage.js +3 -3
  115. package/source/data/datasource.js +3 -3
  116. package/source/data/diff.js +3 -3
  117. package/source/data/extend.js +2 -2
  118. package/source/data/pathfinder.js +4 -4
  119. package/source/data/pipe.js +3 -3
  120. package/source/data/transformer.js +3 -3
  121. package/source/dom/assembler.js +2 -2
  122. package/source/dom/attributes.js +111 -28
  123. package/source/dom/constants.js +9 -1
  124. package/source/dom/customcontrol.js +1 -1
  125. package/source/dom/customelement.js +1 -1
  126. package/source/dom/events.js +6 -7
  127. package/source/dom/focusmanager.js +2 -2
  128. package/source/dom/locale.js +2 -2
  129. package/source/dom/resource/data.js +2 -2
  130. package/source/dom/resource/link/stylesheet.js +2 -2
  131. package/source/dom/resource/link.js +2 -2
  132. package/source/dom/resource/script.js +2 -2
  133. package/source/dom/resource.js +2 -2
  134. package/source/dom/resourcemanager.js +2 -2
  135. package/source/dom/template.js +41 -11
  136. package/source/dom/theme.js +3 -3
  137. package/source/dom/updater.js +134 -86
  138. package/source/dom/util.js +6 -6
  139. package/source/dom/worker/factory.js +2 -2
  140. package/source/i18n/formatter.js +4 -4
  141. package/source/i18n/locale.js +4 -4
  142. package/source/i18n/provider.js +2 -2
  143. package/source/i18n/providers/fetch.js +3 -3
  144. package/source/i18n/translations.js +4 -4
  145. package/source/logging/handler/console.js +2 -2
  146. package/source/logging/handler.js +2 -2
  147. package/source/logging/logentry.js +2 -2
  148. package/source/logging/logger.js +2 -2
  149. package/source/math/random.js +2 -2
  150. package/source/namespace.js +1 -1
  151. package/source/text/formatter.js +3 -3
  152. package/source/types/base.js +2 -2
  153. package/source/types/basewithoptions.js +2 -2
  154. package/source/types/binary.js +4 -4
  155. package/source/types/dataurl.js +4 -4
  156. package/source/types/global.js +4 -4
  157. package/source/types/id.js +2 -2
  158. package/source/types/is.js +20 -20
  159. package/source/types/mediatype.js +4 -4
  160. package/source/types/node.js +2 -2
  161. package/source/types/nodelist.js +2 -2
  162. package/source/types/noderecursiveiterator.js +4 -4
  163. package/source/types/observer.js +3 -3
  164. package/source/types/observerlist.js +2 -2
  165. package/source/types/proxyobserver.js +5 -5
  166. package/source/types/queue.js +3 -3
  167. package/source/types/randomid.js +2 -2
  168. package/source/types/regex.js +2 -2
  169. package/source/types/stack.js +2 -2
  170. package/source/types/tokenlist.js +2 -2
  171. package/source/types/typeof.js +3 -3
  172. package/source/types/uniquequeue.js +2 -2
  173. package/source/types/uuid.js +2 -2
  174. package/source/types/validate.js +20 -20
  175. package/source/types/version.js +6 -6
  176. package/source/util/clone.js +2 -2
  177. package/source/util/comparator.js +3 -3
  178. package/source/util/freeze.js +2 -2
  179. package/source/util/processing.js +3 -3
  180. package/source/util/trimspaces.js +2 -2
  181. package/test/cases/dom/attributes.js +29 -6
  182. package/test/cases/dom/template.js +72 -14
  183. package/test/cases/dom/updater.js +102 -75
  184. package/test/cases/monster.js +1 -1
  185. package/test/web/monster-dev.html +3 -3
  186. package/test/web/monster.html +2 -2
  187. package/test/web/test.html +2 -2
  188. package/test/web/tests.js +2 -2
@@ -14,7 +14,7 @@ import {validateObject} from '../types/validate.js';
14
14
  *
15
15
  * ```
16
16
  * <script type="module">
17
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/monster.js';
17
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
18
18
  * Monster.Util.deepFreeze({})
19
19
  * </script>
20
20
  * ```
@@ -23,7 +23,7 @@ import {validateObject} from '../types/validate.js';
23
23
  *
24
24
  * ```
25
25
  * <script type="module">
26
- * import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/modules/util/freeze.js';
26
+ * import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/util/freeze.js';
27
27
  * deepFreeze({})
28
28
  * </script>
29
29
  * ```
@@ -77,7 +77,7 @@ class Callback {
77
77
  *
78
78
  * ```
79
79
  * <script type="module">
80
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/monster.js';
80
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
81
81
  * new Monster.Util.Processing()
82
82
  * </script>
83
83
  * ```
@@ -86,13 +86,13 @@ class Callback {
86
86
  *
87
87
  * ```
88
88
  * <script type="module">
89
- * import {Processing} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/modules/util/processing.js';
89
+ * import {Processing} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/util/processing.js';
90
90
  * new Processing();
91
91
  * </script>
92
92
  * ```
93
93
  *
94
94
  * @example
95
- * import {Processing} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/modules/util/processing.js';
95
+ * import {Processing} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/util/processing.js';
96
96
  *
97
97
  * let startTime = +new Date();
98
98
  *
@@ -16,7 +16,7 @@ import {validateString} from "../types/validate.js";
16
16
  *
17
17
  * ```
18
18
  * <script type="module">
19
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/monster.js';
19
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
20
20
  * Monster.Util.trimSpaces(" hello ")
21
21
  * </script>
22
22
  * ```
@@ -25,7 +25,7 @@ import {validateString} from "../types/validate.js";
25
25
  *
26
26
  * ```
27
27
  * <script type="module">
28
- * import {trimSpaces} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.1/dist/modules/util/trimspaces.js';
28
+ * import {trimSpaces} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/util/trimspaces.js';
29
29
  * trimSpaces(' hello \\ ')
30
30
  * </script>
31
31
  * ```
@@ -14,7 +14,8 @@ import {
14
14
  removeAttributeToken,
15
15
  removeObjectLink,
16
16
  replaceAttributeToken,
17
- toggleAttributeToken
17
+ toggleAttributeToken,
18
+ findClosestByClass
18
19
  } from "../../../source/dom/attributes.js";
19
20
 
20
21
  import {initJSDOM} from "../../util/jsdom.js";
@@ -37,12 +38,13 @@ describe('Attributes', function () {
37
38
  </div>
38
39
  </div>
39
40
  `;
41
+
40
42
  html3 = `<div data-monster-role="test1">
41
- <div data-monster-role="sub1" id="a1">
42
- <div data-monster-role="sub2" id="a2">
43
- <div data-monster-role="sub3" id="a3">
44
- <div data-monster-role="sub4" id="a4">
45
- <div data-monster-role="sub5" id="a5"></div>
43
+ <div data-monster-role="sub1" id="a1" class="sub1">
44
+ <div data-monster-role="sub2" id="a2" class="sub2">
45
+ <div data-monster-role="sub3" id="a3" class="sub3">
46
+ <div data-monster-role="sub4" id="a4" class="sub4">
47
+ <div data-monster-role="sub5" id="a5" class="sub5"></div>
46
48
  </div>
47
49
  </div>
48
50
  </div>
@@ -154,6 +156,27 @@ describe('Attributes', function () {
154
156
  })
155
157
 
156
158
 
159
+ });
160
+ });
161
+
162
+ describe('find closest Element with class', function () {
163
+
164
+ [
165
+ ['a5', 'sub3', 'sub3'],
166
+ ['a5', 'sub1', 'sub1'],
167
+ ['a4', 'sub1', 'sub1'],
168
+ ['a3', 'sub1', 'sub1'],
169
+ ['a5', 'sub5', 'sub5']
170
+ ].forEach(function (data) {
171
+
172
+ let a = data.shift()
173
+ let b = data.shift()
174
+ let c = data.shift()
175
+ it('findClosestByClass(' + a + ', ' + b + ') should return ' + c, function () {
176
+ expect(findClosestByClass(document.getElementById(a), b).getAttribute('class')).to.be.equal(c);
177
+ })
178
+
179
+
157
180
  });
158
181
  });
159
182
  });
@@ -1,16 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  import {expect} from "chai"
4
+ import {ATTRIBUTE_THEME_NAME} from "../../../source/dom/constants.js";
4
5
 
5
6
  import {findDocumentTemplate, Template} from "../../../source/dom/template.js";
6
7
  import {initJSDOM} from "../../util/jsdom.js";
7
8
 
8
- const html1 = `
9
-
10
- <template id="mytemplate"></template>
11
-
12
- `;
13
-
14
9
 
15
10
  describe('Template', function () {
16
11
 
@@ -20,7 +15,8 @@ describe('Template', function () {
20
15
 
21
16
  beforeEach(() => {
22
17
  let mocks = document.getElementById('mocks');
23
- mocks.innerHTML = html1;
18
+ mocks.innerHTML = `
19
+ <template id="mytemplate"></template>`;
24
20
  })
25
21
 
26
22
  afterEach(() => {
@@ -75,14 +71,76 @@ describe('Template', function () {
75
71
  });
76
72
 
77
73
  describe('.findDocumentTemplate()', function () {
78
- it('should throw Template not found', function () {
79
- const div = document.createElement('div');
80
- div.remove();
81
- let t = findDocumentTemplate("mytemplate", div);
82
- expect(t).is.instanceof(Template);
74
+ describe('Template', function () {
75
+ it('should find template over ownerDocument', function () {
76
+ const div = document.createElement('div');
77
+ div.remove();
78
+ let t = findDocumentTemplate("mytemplate", div);
79
+ expect(t).is.instanceof(Template);
80
+
81
+ })
82
+ });
83
83
 
84
- })
85
- });
84
+ describe('Thmened Template', function () {
85
+ let memAttributeValue;
86
+
87
+ beforeEach(() => {
88
+ let mocks = document.getElementById('mocks');
89
+ mocks.innerHTML = `
90
+ <template id="mytemplate"><p>1</p></template>
91
+ <template id="mytemplate-monster"><p>2</p></template>
92
+ <template id="mytemplate-testtheme"><p>4</p></template>
93
+ <template id="myprefix-mytemplate-monster"><p>3</p></template>
94
+ `;
95
+
96
+ let html = document.querySelector('html');
97
+ if (html.hasAttribute(ATTRIBUTE_THEME_NAME)) {
98
+ memAttributeValue = html.getAttribute(ATTRIBUTE_THEME_NAME)
99
+ }
100
+
101
+ })
102
+
103
+ afterEach(() => {
104
+ let mocks = document.getElementById('mocks');
105
+ mocks.innerHTML = "";
86
106
 
107
+ let html = document.querySelector('html');
87
108
 
109
+ if (html.hasAttribute(ATTRIBUTE_THEME_NAME)) {
110
+ html.removeAttribute(ATTRIBUTE_THEME_NAME);
111
+ }
112
+
113
+ if (memAttributeValue) {
114
+ html.setAttribute(ATTRIBUTE_THEME_NAME, memAttributeValue)
115
+ }
116
+
117
+ })
118
+
119
+
120
+ it('should find template over ownerDocument', function () {
121
+ let html = document.querySelector('html');
122
+ const div = document.createElement('div');
123
+ div.setAttribute('data-monster-template-prefix', 'myprefix')
124
+ div.remove();
125
+ let t1 = findDocumentTemplate("mytemplate", div);
126
+ expect(t1).is.instanceof(Template);
127
+ expect(t1.createDocumentFragment().textContent).is.equal("3");
128
+
129
+ div.removeAttribute('data-monster-template-prefix')
130
+ let t2 = findDocumentTemplate("mytemplate", div);
131
+ expect(t2).is.instanceof(Template);
132
+ expect(t2.createDocumentFragment().textContent).is.equal("2");
133
+
134
+ html.setAttribute(ATTRIBUTE_THEME_NAME,'testtheme');
135
+ let a= html.outerHTML;
136
+ let t3 = findDocumentTemplate("mytemplate", div);
137
+ expect(t3).is.instanceof(Template);
138
+ expect(t3.createDocumentFragment().textContent).is.equal("4");
139
+
140
+
141
+ })
142
+ });
143
+
144
+
145
+ });
88
146
  });
@@ -12,99 +12,100 @@ let expect = chai.expect;
12
12
 
13
13
  chai.use(chaiDom);
14
14
 
15
- let html1 = `<template id="current">
16
- <li data-monster-replace="path:current | tojson"></li>
17
- </template>
18
- <div id="test1">
19
- <ul data-monster-insert="current path:a.b">
20
- </ul>
21
- </div>
22
- <div id="test2">
23
- <ul data-monster-insert="current path:a.b | doit">
24
- </ul>
25
- </div>
26
- <div id="test3">
27
- <div data-monster-attributes="class path:a.b">
28
- <input data-monster-attributes="value path:a.c" id="input1">
29
- <input data-monster-attributes="checked path:a.checkbox" type="checkbox" name="checkbox" id="checkbox">
30
- <input data-monster-attributes="value path:a.text" type="text" name="text" id="text">
31
- <input data-monster-attributes="checked path:a.radio" type="radio" name="radio" value="r1" id="radio">
32
- <input type="radio" name="radio" value="r2" id="r2">
33
- <input type="radio" name="radio" value="rx" id="rx">
34
-
35
- <select data-monster-attributes="value path:a.select" name="select" id="select">
36
- <option value="other-value">value1</option>
37
- <option>value2</option>
38
- </select>
39
-
40
- <select data-monster-attributes="value path:a.multiselect" name="multiselect" multiple id="multiselect">
41
- <option>value1</option>
42
- <option>value2</option>
43
- <option>value3</option>
44
- <option>value4</option>
45
- <option value="other-value5">value5</option>
46
- </select>
47
-
48
- <textarea name="textarea" id="textarea" data-monster-attributes="value path:a.textarea"></textarea>
49
-
15
+ let html1 = `
16
+ <template id="current">
17
+ <li data-monster-replace="path:current | tojson"></li>
18
+ </template>
19
+ <div id="test1">
20
+ <ul data-monster-insert="current path:a.b">
21
+ </ul>
22
+ </div>
23
+ <div id="test2">
24
+ <ul data-monster-insert="current path:a.b | doit">
25
+ </ul>
26
+ </div>
27
+ <div id="test3">
28
+ <div data-monster-attributes="class path:a.b">
29
+ <input data-monster-attributes="value path:a.c" id="input1">
30
+ <input data-monster-attributes="checked path:a.checkbox" type="checkbox" name="checkbox" id="checkbox">
31
+ <input data-monster-attributes="value path:a.text" type="text" name="text" id="text">
32
+ <input data-monster-attributes="checked path:a.radio" type="radio" name="radio" value="r1" id="radio">
33
+ <input type="radio" name="radio" value="r2" id="r2">
34
+ <input type="radio" name="radio" value="rx" id="rx">
35
+
36
+ <select data-monster-attributes="value path:a.select" name="select" id="select">
37
+ <option value="other-value">value1</option>
38
+ <option>value2</option>
39
+ </select>
40
+
41
+ <select data-monster-attributes="value path:a.multiselect" name="multiselect" multiple id="multiselect">
42
+ <option>value1</option>
43
+ <option>value2</option>
44
+ <option>value3</option>
45
+ <option>value4</option>
46
+ <option value="other-value5">value5</option>
47
+ </select>
48
+
49
+ <textarea name="textarea" id="textarea" data-monster-attributes="value path:a.textarea"></textarea>
50
+
51
+ </div>
50
52
  </div>
51
- </div>
52
53
 
53
54
  `;
54
55
 
55
56
  let html2 = `
56
57
  <div id="test1">
57
- <div data-monster-replace="path:text | tolower"> </div>
58
- <div data-monster-replace="path:text | call:myformatter"> </div>
58
+ <div data-monster-replace="path:text | tolower"></div>
59
+ <div data-monster-replace="path:text | call:myformatter"></div>
59
60
  <div data-monster-replace="static:hello\\ "></div>
60
61
  </div>
61
62
  `;
62
63
 
63
64
  let html3 = `
64
65
 
65
- <template id="myinnerid">
66
- <span data-monster-replace="path:myinnerid | tojson"></span>
67
- </template>
66
+ <template id="myinnerid">
67
+ <span data-monster-replace="path:myinnerid | tojson"></span>
68
+ </template>
68
69
 
69
- <template id="myid">
70
- <p data-monster-insert="myinnerid path:a.b"></p>
71
- </template>
70
+ <template id="myid">
71
+ <p data-monster-insert="myinnerid path:a.b"></p>
72
+ </template>
72
73
 
73
- <div id="test1">
74
- <div data-monster-insert="myid path:a.b"></div>
75
- </div>
74
+ <div id="test1">
75
+ <div data-monster-insert="myid path:a.b"></div>
76
+ </div>
76
77
 
77
78
  `;
78
79
 
79
80
  let html4 = `
80
- <div>
81
- <form id="form1">
82
- <input type="checkbox" value="checked" name="checkbox" data-monster-bind="path:state">
83
- <input type="text" name="text">
84
- <input type="radio" name="radio" value="r1" id="r1" data-monster-bind="path:radio">
85
- <input type="radio" name="radio" value="r2" id="r2" data-monster-bind="path:radio">
86
- <input type="radio" name="radio" value="rx" id="rx" data-comment="not called because no bind attribute">
87
- <input type="button" name="button">
88
-
89
- <select name="select1" id="select1" data-monster-bind="path:select">
90
- <option>value1</option>
91
- <option>value2</option>
92
- </select>
93
-
94
- <select name="select2" multiple id="select2" data-monster-bind="path:multiselect">
95
- <option>value1</option>
96
- <option>value2</option>
97
- <option>value3</option>
98
- <option>value4</option>
99
- <option>value5</option>
100
- </select>
101
-
102
- <textarea name="textarea" id="textarea" data-monster-bind="path:textarea">
81
+ <div>
82
+ <form id="form1">
83
+ <input type="checkbox" value="checked" name="checkbox" data-monster-bind="path:state">
84
+ <input type="text" name="text">
85
+ <input type="radio" name="radio" value="r1" id="r1" data-monster-bind="path:radio">
86
+ <input type="radio" name="radio" value="r2" id="r2" data-monster-bind="path:radio">
87
+ <input type="radio" name="radio" value="rx" id="rx" data-comment="not called because no bind attribute">
88
+ <input type="button" name="button">
89
+
90
+ <select name="select1" id="select1" data-monster-bind="path:select">
91
+ <option>value1</option>
92
+ <option>value2</option>
93
+ </select>
94
+
95
+ <select name="select2" multiple id="select2" data-monster-bind="path:multiselect">
96
+ <option>value1</option>
97
+ <option>value2</option>
98
+ <option>value3</option>
99
+ <option>value4</option>
100
+ <option>value5</option>
101
+ </select>
102
+
103
+ <textarea name="textarea" id="textarea" data-monster-bind="path:textarea">
103
104
 
104
105
  </textarea>
105
106
 
106
- </form>
107
- </div>
107
+ </form>
108
+ </div>
108
109
 
109
110
  `;
110
111
 
@@ -515,7 +516,7 @@ describe('DOM', function () {
515
516
  })
516
517
  }, 100)
517
518
 
518
- });
519
+ });
519
520
  });
520
521
  });
521
522
 
@@ -638,14 +639,13 @@ describe('DOM', function () {
638
639
  });
639
640
  });
640
641
 
641
-
642
642
  describe('Get Attribute Pipe', function () {
643
643
  let id, mocks;
644
644
  beforeEach(() => {
645
645
  mocks = document.getElementById('mocks');
646
646
  id = new ID('monster');
647
647
  mocks.innerHTML = ` <div id="` + id + `"
648
- data-monster-replace="path:a | if:value:\\ "></div>`
648
+ data-monster-replace="path:a | if:value:\\ "></div>`
649
649
  })
650
650
 
651
651
  afterEach(() => {
@@ -661,4 +661,31 @@ describe('DOM', function () {
661
661
  });
662
662
  });
663
663
 
664
+
665
+ describe('manuel update', function () {
666
+ let id, mocks;
667
+
668
+ beforeEach(() => {
669
+ mocks = document.getElementById('mocks');
670
+ id = new ID('monster').toString();
671
+ mocks.innerHTML = `<input id="` + id + `"data-monster-bind="path:myvalue">`
672
+ })
673
+
674
+ afterEach(() => {
675
+ mocks.innerHTML = "";
676
+ })
677
+
678
+ it('should get value', function () {
679
+
680
+ document.getElementById(id).value="hello";
681
+ const updater = new Updater(mocks);
682
+ const subject = updater.getSubject();
683
+
684
+ expect(subject).to.not.have.property('myvalue');
685
+ updater.retrieve();
686
+ expect(subject).to.have.property('myvalue');
687
+ });
688
+
689
+
690
+ });
664
691
  });
@@ -9,7 +9,7 @@ describe('Monster', function () {
9
9
  let monsterVersion
10
10
 
11
11
  /**#@+ dont touch, replaced by make with package.json version */
12
- monsterVersion = new Version('1.26.1')
12
+ monsterVersion = new Version('1.27.0')
13
13
  /**#@-*/
14
14
 
15
15
  let m = Monster.getVersion();
@@ -10,13 +10,13 @@
10
10
  crossorigin="anonymous"
11
11
  referrerpolicy="no-referrer"></script>
12
12
 
13
- <script src="https://monsterjs.org/dist/1.26.1/dist/monster.dev.js"></script>
13
+ <script src="https://monsterjs.org/dist/1.27.0/dist/monster.dev.js"></script>
14
14
 
15
15
  </head>
16
16
  <body>
17
17
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
18
- <h1 style='margin-bottom: 0.1em;'>Monster 1.26.1</h1>
19
- <div id="lastupdate" style='font-size:0.7em'>last update Do 2. Dez 12:05:05 CET 2021</div>
18
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.27.0</h1>
19
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 6. Dez 16:42:51 CET 2021</div>
20
20
  </div>
21
21
  </body>
22
22
  </html>
@@ -14,8 +14,8 @@
14
14
  </head>
15
15
  <body>
16
16
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
17
- <h1 style='margin-bottom: 0.1em;'>Monster 1.26.1</h1>
18
- <div id="lastupdate" style='font-size:0.7em'>last update Do 2. Dez 12:05:05 CET 2021</div>
17
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.27.0</h1>
18
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 6. Dez 16:42:51 CET 2021</div>
19
19
  </div>
20
20
  </body>
21
21
  </html>
@@ -12,8 +12,8 @@
12
12
  </head>
13
13
  <body>
14
14
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
15
- <h1 style='margin-bottom: 0.1em;'>Monster 1.26.1</h1>
16
- <div id="lastupdate" style='font-size:0.7em'>last update Do 2. Dez 12:05:05 CET 2021</div>
15
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.27.0</h1>
16
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 6. Dez 16:42:51 CET 2021</div>
17
17
  </div>
18
18
  <div id="mocks"></div>
19
19
  <div id="mocha"></div>