haori 0.1.2 → 0.1.3

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 (38) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +182 -167
  3. package/README.md +184 -169
  4. package/dist/haori.cjs.js +10 -9
  5. package/dist/haori.cjs.js.map +1 -1
  6. package/dist/haori.es.js +666 -569
  7. package/dist/haori.es.js.map +1 -1
  8. package/dist/haori.iife.js +10 -9
  9. package/dist/haori.iife.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/package.json +1 -1
  12. package/dist/src/expression.d.ts +27 -3
  13. package/dist/src/expression.d.ts.map +1 -1
  14. package/dist/src/expression.js +97 -24
  15. package/dist/src/expression.js.map +1 -1
  16. package/dist/src/form.d.ts.map +1 -1
  17. package/dist/src/form.js +17 -3
  18. package/dist/src/form.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -1
  20. package/dist/src/index.js +1 -1
  21. package/dist/src/procedure.d.ts.map +1 -1
  22. package/dist/src/procedure.js +37 -16
  23. package/dist/src/procedure.js.map +1 -1
  24. package/dist/tests/core.test.js +46 -46
  25. package/dist/tests/data-each-browserlike.test.js +10 -10
  26. package/dist/tests/data-each-fragment-debug.test.js +36 -36
  27. package/dist/tests/data-each-table.test.js +93 -10
  28. package/dist/tests/data-each-table.test.js.map +1 -1
  29. package/dist/tests/data-fetch-tbody-dom.test.js +12 -12
  30. package/dist/tests/expression.test.js +37 -21
  31. package/dist/tests/expression.test.js.map +1 -1
  32. package/dist/tests/form.test.js +241 -241
  33. package/dist/tests/import.test.js +34 -34
  34. package/dist/tests/procedure-action-operations.test.js +85 -0
  35. package/dist/tests/procedure-action-operations.test.js.map +1 -1
  36. package/dist/tests/row-move.test.js +67 -67
  37. package/dist/tests/row-operations.test.js +84 -84
  38. package/package.json +70 -70
@@ -13,15 +13,15 @@ describe('Import', () => {
13
13
  });
14
14
  describe('load', () => {
15
15
  it('HTMLからbodyの内容のみを抽出する', async () => {
16
- const html = `
17
- <!DOCTYPE html>
18
- <html>
19
- <head><title>Test</title></head>
20
- <body>
21
- <h1>Hello</h1>
22
- <p>World</p>
23
- </body>
24
- </html>
16
+ const html = `
17
+ <!DOCTYPE html>
18
+ <html>
19
+ <head><title>Test</title></head>
20
+ <body>
21
+ <h1>Hello</h1>
22
+ <p>World</p>
23
+ </body>
24
+ </html>
25
25
  `;
26
26
  vi.spyOn(globalThis, 'fetch').mockResolvedValue({
27
27
  ok: true,
@@ -78,14 +78,14 @@ describe('Import', () => {
78
78
  await expect(Import.load('https://example.com/test.html')).rejects.toThrow('Failed to read response');
79
79
  });
80
80
  it('複数の子要素を持つbodyを正しく抽出する', async () => {
81
- const html = `
82
- <html>
83
- <body>
84
- <header>Header</header>
85
- <main>Main Content</main>
86
- <footer>Footer</footer>
87
- </body>
88
- </html>
81
+ const html = `
82
+ <html>
83
+ <body>
84
+ <header>Header</header>
85
+ <main>Main Content</main>
86
+ <footer>Footer</footer>
87
+ </body>
88
+ </html>
89
89
  `;
90
90
  vi.spyOn(globalThis, 'fetch').mockResolvedValue({
91
91
  ok: true,
@@ -106,13 +106,13 @@ describe('Import', () => {
106
106
  expect(result).toBe('');
107
107
  });
108
108
  it('body内のスクリプトタグも含める', async () => {
109
- const html = `
110
- <html>
111
- <body>
112
- <p>Content</p>
113
- <script>console.log('test');</script>
114
- </body>
115
- </html>
109
+ const html = `
110
+ <html>
111
+ <body>
112
+ <p>Content</p>
113
+ <script>console.log('test');</script>
114
+ </body>
115
+ </html>
116
116
  `;
117
117
  vi.spyOn(globalThis, 'fetch').mockResolvedValue({
118
118
  ok: true,
@@ -123,16 +123,16 @@ describe('Import', () => {
123
123
  // scriptタグはDOMParserによって処理される
124
124
  });
125
125
  it('ネストされた要素を正しく抽出する', async () => {
126
- const html = `
127
- <html>
128
- <body>
129
- <div class="outer">
130
- <div class="inner">
131
- <span>Nested content</span>
132
- </div>
133
- </div>
134
- </body>
135
- </html>
126
+ const html = `
127
+ <html>
128
+ <body>
129
+ <div class="outer">
130
+ <div class="inner">
131
+ <span>Nested content</span>
132
+ </div>
133
+ </div>
134
+ </body>
135
+ </html>
136
136
  `;
137
137
  vi.spyOn(globalThis, 'fetch').mockResolvedValue({
138
138
  ok: true,
@@ -9,6 +9,7 @@ import { waitForCondition, waitForDomSettled } from './helpers/async';
9
9
  describe('Procedure action operations', () => {
10
10
  beforeEach(async () => {
11
11
  vi.restoreAllMocks();
12
+ window.Haori = Haori;
12
13
  await import('../src/observer');
13
14
  });
14
15
  it('resetFragments calls Form.reset', async () => {
@@ -103,6 +104,43 @@ describe('Procedure action operations', () => {
103
104
  dialog.remove();
104
105
  container.remove();
105
106
  });
107
+ it('data-click-open delegates to window.Haori for Bootstrap modal targets', async () => {
108
+ const typedWindow = window;
109
+ const originalHaori = typedWindow.Haori;
110
+ const openSpy = vi.fn().mockResolvedValue(undefined);
111
+ const closeSpy = vi.fn().mockResolvedValue(undefined);
112
+ typedWindow.Haori = {
113
+ dialog: vi.fn().mockResolvedValue(undefined),
114
+ confirm: vi.fn().mockResolvedValue(true),
115
+ toast: vi.fn().mockResolvedValue(undefined),
116
+ openDialog: openSpy,
117
+ closeDialog: closeSpy,
118
+ addErrorMessage: vi.fn().mockResolvedValue(undefined),
119
+ };
120
+ const modal = document.createElement('div');
121
+ modal.id = 'user-modal';
122
+ modal.className = 'modal';
123
+ document.body.appendChild(modal);
124
+ const container = document.createElement('div');
125
+ document.body.appendChild(container);
126
+ const btn = document.createElement('button');
127
+ btn.setAttribute('data-click-open', '#user-modal');
128
+ btn.setAttribute('data-click-close', '#user-modal');
129
+ container.appendChild(btn);
130
+ await waitForDomSettled();
131
+ btn.click();
132
+ await waitForDomSettled();
133
+ expect(openSpy).toHaveBeenCalledWith(modal);
134
+ expect(closeSpy).toHaveBeenCalledWith(modal);
135
+ if (originalHaori === undefined) {
136
+ Reflect.deleteProperty(window, 'Haori');
137
+ }
138
+ else {
139
+ typedWindow.Haori = originalHaori;
140
+ }
141
+ modal.remove();
142
+ container.remove();
143
+ });
106
144
  it('redirectUrl sets window.location.href (attribute-driven)', async () => {
107
145
  vi.spyOn(globalThis, 'fetch').mockImplementation(() => {
108
146
  return Promise.resolve(new Response('{}', { headers: { 'Content-Type': 'application/json' } }));
@@ -147,5 +185,52 @@ describe('Procedure action operations', () => {
147
185
  expect(parent.getAttribute('data-message')).toBe('Server failed');
148
186
  parent.remove();
149
187
  });
188
+ it('JSON field errors delegate to window.Haori.addErrorMessage', async () => {
189
+ const typedWindow = window;
190
+ const originalHaori = typedWindow.Haori;
191
+ const addErrorMessageSpy = vi
192
+ .fn()
193
+ .mockImplementation(async (target, message) => {
194
+ target.setAttribute('data-test-message', message);
195
+ });
196
+ typedWindow.Haori = {
197
+ dialog: vi.fn().mockResolvedValue(undefined),
198
+ confirm: vi.fn().mockResolvedValue(true),
199
+ toast: vi.fn().mockResolvedValue(undefined),
200
+ openDialog: vi.fn().mockResolvedValue(undefined),
201
+ closeDialog: vi.fn().mockResolvedValue(undefined),
202
+ addErrorMessage: addErrorMessageSpy,
203
+ clearMessages: vi.fn().mockResolvedValue(undefined),
204
+ };
205
+ vi.spyOn(globalThis, 'fetch').mockImplementation(() => {
206
+ return Promise.resolve(new Response(JSON.stringify({ errors: { email: 'メールアドレスが不正です' } }), {
207
+ status: 400,
208
+ statusText: 'Bad Request',
209
+ headers: { 'Content-Type': 'application/json' },
210
+ }));
211
+ });
212
+ const form = document.createElement('form');
213
+ const emailInput = document.createElement('input');
214
+ emailInput.name = 'email';
215
+ form.appendChild(emailInput);
216
+ const btn = document.createElement('button');
217
+ btn.setAttribute('data-click-form', '');
218
+ btn.setAttribute('data-click-fetch', 'http://api.test/json-error');
219
+ form.appendChild(btn);
220
+ document.body.appendChild(form);
221
+ await waitForDomSettled();
222
+ btn.click();
223
+ await waitForCondition(() => addErrorMessageSpy.mock.calls.length > 0, {
224
+ description: 'json field error delegation',
225
+ });
226
+ expect(addErrorMessageSpy).toHaveBeenCalledWith(emailInput, 'メールアドレスが不正です');
227
+ if (originalHaori === undefined) {
228
+ Reflect.deleteProperty(window, 'Haori');
229
+ }
230
+ else {
231
+ typedWindow.Haori = originalHaori;
232
+ }
233
+ form.remove();
234
+ });
150
235
  });
151
236
  //# sourceMappingURL=procedure-action-operations.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedure-action-operations.test.js","sourceRoot":"","sources":["../../tests/procedure-action-operations.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"procedure-action-operations.test.js","sourceRoot":"","sources":["../../tests/procedure-action-operations.test.ts"],"names":[],"mappings":"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"}
@@ -23,17 +23,17 @@ describe('Row move functionality', () => {
23
23
  });
24
24
  it('should move row up (data-click-row-prev)', async () => {
25
25
  // テストHTML作成
26
- container.innerHTML = `
27
- <div data-bind='{"items":[
28
- {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
29
- ]}'>
30
- <ul data-each="items" data-each-key="name">
31
- <li>
32
- <span>{{name}}</span>
33
- <button data-click-row-prev>↑</button>
34
- </li>
35
- </ul>
36
- </div>
26
+ container.innerHTML = `
27
+ <div data-bind='{"items":[
28
+ {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
29
+ ]}'>
30
+ <ul data-each="items" data-each-key="name">
31
+ <li>
32
+ <span>{{name}}</span>
33
+ <button data-click-row-prev>↑</button>
34
+ </li>
35
+ </ul>
36
+ </div>
37
37
  `;
38
38
  // Haoriを初期化
39
39
  await Core.scan(container);
@@ -56,17 +56,17 @@ describe('Row move functionality', () => {
56
56
  });
57
57
  it('should move row down (data-click-row-next)', async () => {
58
58
  // テストHTML作成
59
- container.innerHTML = `
60
- <div data-bind='{"items":[
61
- {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
62
- ]}'>
63
- <ul data-each="items" data-each-key="name">
64
- <li>
65
- <span>{{name}}</span>
66
- <button data-click-row-next>↓</button>
67
- </li>
68
- </ul>
69
- </div>
59
+ container.innerHTML = `
60
+ <div data-bind='{"items":[
61
+ {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
62
+ ]}'>
63
+ <ul data-each="items" data-each-key="name">
64
+ <li>
65
+ <span>{{name}}</span>
66
+ <button data-click-row-next>↓</button>
67
+ </li>
68
+ </ul>
69
+ </div>
70
70
  `;
71
71
  // Haoriを初期化
72
72
  await Core.scan(container);
@@ -89,17 +89,17 @@ describe('Row move functionality', () => {
89
89
  });
90
90
  it('should not move first row up', async () => {
91
91
  // テストHTML作成
92
- container.innerHTML = `
93
- <div data-bind='{"items":[
94
- {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
95
- ]}'>
96
- <ul data-each="items" data-each-key="name">
97
- <li>
98
- <span>{{name}}</span>
99
- <button data-click-row-prev>↑</button>
100
- </li>
101
- </ul>
102
- </div>
92
+ container.innerHTML = `
93
+ <div data-bind='{"items":[
94
+ {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
95
+ ]}'>
96
+ <ul data-each="items" data-each-key="name">
97
+ <li>
98
+ <span>{{name}}</span>
99
+ <button data-click-row-prev>↑</button>
100
+ </li>
101
+ </ul>
102
+ </div>
103
103
  `;
104
104
  // Haoriを初期化
105
105
  await Core.scan(container);
@@ -120,17 +120,17 @@ describe('Row move functionality', () => {
120
120
  });
121
121
  it('should not move last row down', async () => {
122
122
  // テストHTML作成
123
- container.innerHTML = `
124
- <div data-bind='{"items":[
125
- {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
126
- ]}'>
127
- <ul data-each="items" data-each-key="name">
128
- <li>
129
- <span>{{name}}</span>
130
- <button data-click-row-next>↓</button>
131
- </li>
132
- </ul>
133
- </div>
123
+ container.innerHTML = `
124
+ <div data-bind='{"items":[
125
+ {"name":"Item 1"},{"name":"Item 2"},{"name":"Item 3"}
126
+ ]}'>
127
+ <ul data-each="items" data-each-key="name">
128
+ <li>
129
+ <span>{{name}}</span>
130
+ <button data-click-row-next>↓</button>
131
+ </li>
132
+ </ul>
133
+ </div>
134
134
  `;
135
135
  // Haoriを初期化
136
136
  await Core.scan(container);
@@ -151,18 +151,18 @@ describe('Row move functionality', () => {
151
151
  });
152
152
  it('should maintain data integrity after multiple moves', async () => {
153
153
  // テストHTML作成
154
- container.innerHTML = `
155
- <div data-bind='{"items":[
156
- {"name":"A"},{"name":"B"},{"name":"C"},{"name":"D"}
157
- ]}'>
158
- <ul data-each="items" data-each-key="name">
159
- <li>
160
- <span>{{name}}</span>
161
- <button class="up" data-click-row-prev>↑</button>
162
- <button class="down" data-click-row-next>↓</button>
163
- </li>
164
- </ul>
165
- </div>
154
+ container.innerHTML = `
155
+ <div data-bind='{"items":[
156
+ {"name":"A"},{"name":"B"},{"name":"C"},{"name":"D"}
157
+ ]}'>
158
+ <ul data-each="items" data-each-key="name">
159
+ <li>
160
+ <span>{{name}}</span>
161
+ <button class="up" data-click-row-prev>↑</button>
162
+ <button class="down" data-click-row-next>↓</button>
163
+ </li>
164
+ </ul>
165
+ </div>
166
166
  `;
167
167
  // Haoriを初期化
168
168
  await Core.scan(container);
@@ -196,17 +196,17 @@ describe('Row move functionality', () => {
196
196
  expect(items[3].textContent).toBe('C');
197
197
  });
198
198
  it('row move の正常系で Reference child warning を出さない', async () => {
199
- container.innerHTML = `
200
- <div data-bind='{"items":[
201
- {"name":"A"},{"name":"B"},{"name":"C"}
202
- ]}'>
203
- <ul data-each="items" data-each-key="name">
204
- <li>
205
- <span>{{name}}</span>
206
- <button data-click-row-next>↓</button>
207
- </li>
208
- </ul>
209
- </div>
199
+ container.innerHTML = `
200
+ <div data-bind='{"items":[
201
+ {"name":"A"},{"name":"B"},{"name":"C"}
202
+ ]}'>
203
+ <ul data-each="items" data-each-key="name">
204
+ <li>
205
+ <span>{{name}}</span>
206
+ <button data-click-row-next>↓</button>
207
+ </li>
208
+ </ul>
209
+ </div>
210
210
  `;
211
211
  const warnSpy = vi.spyOn(Log, 'warn').mockImplementation(() => { });
212
212
  await Core.scan(container);
@@ -22,15 +22,15 @@ describe('Row operations', () => {
22
22
  });
23
23
  describe('Outside form', () => {
24
24
  it('should add a new row (data-click-row-add)', async () => {
25
- container.innerHTML = `
26
- <div data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
27
- <ul data-each="items" data-each-key="name">
28
- <li>
29
- <span>{{name}}</span>
30
- <button data-click-row-add>+</button>
31
- </li>
32
- </ul>
33
- </div>
25
+ container.innerHTML = `
26
+ <div data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
27
+ <ul data-each="items" data-each-key="name">
28
+ <li>
29
+ <span>{{name}}</span>
30
+ <button data-click-row-add>+</button>
31
+ </li>
32
+ </ul>
33
+ </div>
34
34
  `;
35
35
  await Core.scan(container);
36
36
  await waitForDomSettled();
@@ -43,15 +43,15 @@ describe('Row operations', () => {
43
43
  expect(items.length).toBe(3);
44
44
  });
45
45
  it('should remove a row (data-click-row-remove)', async () => {
46
- container.innerHTML = `
47
- <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
48
- <ul data-each="items" data-each-key="name">
49
- <li>
50
- <span>{{name}}</span>
51
- <button data-click-row-remove>-</button>
52
- </li>
53
- </ul>
54
- </div>
46
+ container.innerHTML = `
47
+ <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
48
+ <ul data-each="items" data-each-key="name">
49
+ <li>
50
+ <span>{{name}}</span>
51
+ <button data-click-row-remove>-</button>
52
+ </li>
53
+ </ul>
54
+ </div>
55
55
  `;
56
56
  await Core.scan(container);
57
57
  await waitForDomSettled();
@@ -69,15 +69,15 @@ describe('Row operations', () => {
69
69
  expect(items[1].textContent).toBe('C');
70
70
  });
71
71
  it('should move row up (data-click-row-prev)', async () => {
72
- container.innerHTML = `
73
- <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
74
- <ul data-each="items" data-each-key="name">
75
- <li>
76
- <span>{{name}}</span>
77
- <button data-click-row-prev>↑</button>
78
- </li>
79
- </ul>
80
- </div>
72
+ container.innerHTML = `
73
+ <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
74
+ <ul data-each="items" data-each-key="name">
75
+ <li>
76
+ <span>{{name}}</span>
77
+ <button data-click-row-prev>↑</button>
78
+ </li>
79
+ </ul>
80
+ </div>
81
81
  `;
82
82
  await Core.scan(container);
83
83
  await waitForDomSettled();
@@ -90,15 +90,15 @@ describe('Row operations', () => {
90
90
  expect(items[2].textContent).toBe('C');
91
91
  });
92
92
  it('should move row down (data-click-row-next)', async () => {
93
- container.innerHTML = `
94
- <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
95
- <ul data-each="items" data-each-key="name">
96
- <li>
97
- <span>{{name}}</span>
98
- <button data-click-row-next>↓</button>
99
- </li>
100
- </ul>
101
- </div>
93
+ container.innerHTML = `
94
+ <div data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
95
+ <ul data-each="items" data-each-key="name">
96
+ <li>
97
+ <span>{{name}}</span>
98
+ <button data-click-row-next>↓</button>
99
+ </li>
100
+ </ul>
101
+ </div>
102
102
  `;
103
103
  await Core.scan(container);
104
104
  await waitForDomSettled();
@@ -113,15 +113,15 @@ describe('Row operations', () => {
113
113
  });
114
114
  describe('Inside form', () => {
115
115
  it('should add a new row inside form (data-click-row-add)', async () => {
116
- container.innerHTML = `
117
- <form data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
118
- <div data-each="items" data-each-key="name">
119
- <div>
120
- <span>{{name}}</span>
121
- <button type="button" data-click-row-add>+</button>
122
- </div>
123
- </div>
124
- </form>
116
+ container.innerHTML = `
117
+ <form data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
118
+ <div data-each="items" data-each-key="name">
119
+ <div>
120
+ <span>{{name}}</span>
121
+ <button type="button" data-click-row-add>+</button>
122
+ </div>
123
+ </div>
124
+ </form>
125
125
  `;
126
126
  await Core.scan(container);
127
127
  await waitForDomSettled();
@@ -134,15 +134,15 @@ describe('Row operations', () => {
134
134
  expect(items.length).toBe(3);
135
135
  });
136
136
  it('should remove a row inside form (data-click-row-remove)', async () => {
137
- container.innerHTML = `
138
- <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
139
- <div data-each="items" data-each-key="name">
140
- <div>
141
- <span>{{name}}</span>
142
- <button type="button" data-click-row-remove>-</button>
143
- </div>
144
- </div>
145
- </form>
137
+ container.innerHTML = `
138
+ <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
139
+ <div data-each="items" data-each-key="name">
140
+ <div>
141
+ <span>{{name}}</span>
142
+ <button type="button" data-click-row-remove>-</button>
143
+ </div>
144
+ </div>
145
+ </form>
146
146
  `;
147
147
  await Core.scan(container);
148
148
  await waitForDomSettled();
@@ -160,15 +160,15 @@ describe('Row operations', () => {
160
160
  expect(items[1].textContent).toBe('C');
161
161
  });
162
162
  it('should move row up inside form (data-click-row-prev)', async () => {
163
- container.innerHTML = `
164
- <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
165
- <div data-each="items" data-each-key="name">
166
- <div>
167
- <span>{{name}}</span>
168
- <button type="button" data-click-row-prev>↑</button>
169
- </div>
170
- </div>
171
- </form>
163
+ container.innerHTML = `
164
+ <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
165
+ <div data-each="items" data-each-key="name">
166
+ <div>
167
+ <span>{{name}}</span>
168
+ <button type="button" data-click-row-prev>↑</button>
169
+ </div>
170
+ </div>
171
+ </form>
172
172
  `;
173
173
  await Core.scan(container);
174
174
  await waitForDomSettled();
@@ -181,15 +181,15 @@ describe('Row operations', () => {
181
181
  expect(items[2].textContent).toBe('B');
182
182
  });
183
183
  it('should move row down inside form (data-click-row-next)', async () => {
184
- container.innerHTML = `
185
- <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
186
- <div data-each="items" data-each-key="name">
187
- <div>
188
- <span>{{name}}</span>
189
- <button type="button" data-click-row-next>↓</button>
190
- </div>
191
- </div>
192
- </form>
184
+ container.innerHTML = `
185
+ <form data-bind='{"items":[{"name":"A"},{"name":"B"},{"name":"C"}]}'>
186
+ <div data-each="items" data-each-key="name">
187
+ <div>
188
+ <span>{{name}}</span>
189
+ <button type="button" data-click-row-next>↓</button>
190
+ </div>
191
+ </div>
192
+ </form>
193
193
  `;
194
194
  await Core.scan(container);
195
195
  await waitForDomSettled();
@@ -202,18 +202,18 @@ describe('Row operations', () => {
202
202
  expect(items[2].textContent).toBe('B');
203
203
  });
204
204
  it('should handle multiple operations inside form', async () => {
205
- container.innerHTML = `
206
- <form data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
207
- <div data-each="items" data-each-key="name">
208
- <div>
209
- <span>{{name}}</span>
210
- <button type="button" data-click-row-add>+</button>
211
- <button type="button" data-click-row-remove>-</button>
212
- <button type="button" data-click-row-prev>↑</button>
213
- <button type="button" data-click-row-next>↓</button>
214
- </div>
215
- </div>
216
- </form>
205
+ container.innerHTML = `
206
+ <form data-bind='{"items":[{"name":"A"},{"name":"B"}]}'>
207
+ <div data-each="items" data-each-key="name">
208
+ <div>
209
+ <span>{{name}}</span>
210
+ <button type="button" data-click-row-add>+</button>
211
+ <button type="button" data-click-row-remove>-</button>
212
+ <button type="button" data-click-row-prev>↑</button>
213
+ <button type="button" data-click-row-next>↓</button>
214
+ </div>
215
+ </div>
216
+ </form>
217
217
  `;
218
218
  await Core.scan(container);
219
219
  await waitForDomSettled();