@wordpress/e2e-tests 7.20.0 → 7.21.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.
- package/CHANGELOG.md +2 -0
- package/package.json +9 -8
- package/plugins/interactive-blocks/directive-bind/render.php +1 -1
- package/plugins/interactive-blocks/directive-body/render.php +1 -1
- package/plugins/interactive-blocks/directive-class/render.php +1 -1
- package/plugins/interactive-blocks/directive-context/render.php +2 -2
- package/plugins/interactive-blocks/directive-context/view.js +10 -6
- package/plugins/interactive-blocks/{directive-slots → directive-each}/block.json +3 -3
- package/plugins/interactive-blocks/directive-each/render.php +226 -0
- package/plugins/interactive-blocks/directive-each/view.js +192 -0
- package/plugins/interactive-blocks/directive-init/render.php +1 -1
- package/plugins/interactive-blocks/directive-key/render.php +2 -2
- package/plugins/interactive-blocks/directive-key/view.js +7 -4
- package/plugins/interactive-blocks/directive-on/render.php +1 -1
- package/plugins/interactive-blocks/directive-on-document/block.json +15 -0
- package/plugins/interactive-blocks/directive-on-document/render.php +29 -0
- package/plugins/interactive-blocks/directive-on-document/view.js +39 -0
- package/plugins/interactive-blocks/directive-on-window/block.json +15 -0
- package/plugins/interactive-blocks/directive-on-window/render.php +26 -0
- package/plugins/interactive-blocks/directive-on-window/view.js +39 -0
- package/plugins/interactive-blocks/directive-priorities/render.php +1 -1
- package/plugins/interactive-blocks/directive-run/block.json +15 -0
- package/plugins/interactive-blocks/directive-run/render.php +54 -0
- package/plugins/interactive-blocks/directive-run/view.js +110 -0
- package/plugins/interactive-blocks/directive-style/render.php +1 -1
- package/plugins/interactive-blocks/directive-text/render.php +15 -1
- package/plugins/interactive-blocks/directive-text/view.js +4 -1
- package/plugins/interactive-blocks/directive-watch/render.php +1 -1
- package/plugins/interactive-blocks/negation-operator/render.php +1 -1
- package/plugins/interactive-blocks/router-navigate/render.php +2 -2
- package/plugins/interactive-blocks/router-navigate/view.js +5 -2
- package/plugins/interactive-blocks/router-regions/render.php +4 -4
- package/plugins/interactive-blocks/router-regions/view.js +5 -2
- package/plugins/interactive-blocks/store-tag/render.php +3 -3
- package/plugins/interactive-blocks/tovdom/render.php +1 -1
- package/plugins/interactive-blocks/tovdom-islands/render.php +1 -1
- package/plugins/interactive-blocks/with-scope/block.json +15 -0
- package/plugins/interactive-blocks/with-scope/render.php +14 -0
- package/plugins/interactive-blocks/with-scope/view.js +20 -0
- package/plugins/interactive-blocks.php +19 -10
- package/specs/editor/various/__snapshots__/pattern-blocks.test.js.snap +0 -6
- package/specs/editor/various/pattern-blocks.test.js +8 -117
- package/plugins/dataviews.php +0 -25
- package/plugins/interactive-blocks/directive-slots/render.php +0 -69
- package/plugins/interactive-blocks/directive-slots/view.js +0 -20
- package/specs/editor/fixtures/menu-items-request-fixture.json +0 -84
- package/specs/editor/fixtures/menu-items-response-fixture.json +0 -1261
- package/specs/editor/various/__snapshots__/block-grouping.test.js.snap +0 -115
- package/specs/editor/various/__snapshots__/embedding.test.js.snap +0 -67
- package/specs/editor/various/block-grouping.test.js +0 -283
- package/specs/editor/various/embedding.test.js +0 -303
- package/specs/editor/various/typewriter.test.js +0 -260
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@wordpress/e2e-tests",
|
3
|
-
"version": "7.
|
3
|
+
"version": "7.21.0",
|
4
4
|
"description": "End-To-End (E2E) tests for WordPress.",
|
5
5
|
"author": "The WordPress Contributors",
|
6
6
|
"license": "GPL-2.0-or-later",
|
@@ -23,12 +23,13 @@
|
|
23
23
|
"node": ">=14"
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@wordpress/e2e-test-utils": "^10.
|
27
|
-
"@wordpress/interactivity": "^
|
28
|
-
"@wordpress/
|
29
|
-
"@wordpress/jest-
|
30
|
-
"@wordpress/
|
31
|
-
"@wordpress/
|
26
|
+
"@wordpress/e2e-test-utils": "^10.21.0",
|
27
|
+
"@wordpress/interactivity": "^4.0.0",
|
28
|
+
"@wordpress/interactivity-router": "^1.0.0",
|
29
|
+
"@wordpress/jest-console": "^7.21.0",
|
30
|
+
"@wordpress/jest-puppeteer-axe": "^6.21.0",
|
31
|
+
"@wordpress/scripts": "^27.1.0",
|
32
|
+
"@wordpress/url": "^3.51.0",
|
32
33
|
"chalk": "^4.0.0",
|
33
34
|
"expect-puppeteer": "^4.4.0",
|
34
35
|
"filenamify": "^4.2.0",
|
@@ -45,5 +46,5 @@
|
|
45
46
|
"publishConfig": {
|
46
47
|
"access": "public"
|
47
48
|
},
|
48
|
-
"gitHead": "
|
49
|
+
"gitHead": "45de2cb4212fed7f2763e95f10300d1ff9d0ec08"
|
49
50
|
}
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* @package gutenberg-test-interactive-blocks
|
6
6
|
*/
|
7
7
|
|
8
|
-
|
8
|
+
wp_enqueue_script_module( 'directive-context-view' );
|
9
9
|
?>
|
10
10
|
|
11
11
|
<div data-wp-interactive='{"namespace": "directive-context"}'>
|
@@ -124,7 +124,7 @@ gutenberg_enqueue_module( 'directive-context-view' );
|
|
124
124
|
|
125
125
|
<div
|
126
126
|
data-wp-interactive='{"namespace": "directive-context-navigate"}'
|
127
|
-
data-wp-
|
127
|
+
data-wp-router-region="navigation"
|
128
128
|
data-wp-context='{ "text": "first page" }'
|
129
129
|
>
|
130
130
|
<div data-testid="navigation text" data-wp-text="context.text"></div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* WordPress dependencies
|
3
3
|
*/
|
4
|
-
import { store,
|
4
|
+
import { store, getContext } from '@wordpress/interactivity';
|
5
5
|
|
6
6
|
store( 'directive-context', {
|
7
7
|
state: {
|
@@ -28,7 +28,7 @@ store( 'directive-context', {
|
|
28
28
|
const html = `
|
29
29
|
<div
|
30
30
|
data-wp-interactive='{ "namespace": "directive-context-navigate" }'
|
31
|
-
data-wp-
|
31
|
+
data-wp-router-region="navigation"
|
32
32
|
data-wp-context='{ "text": "second page" }'
|
33
33
|
>
|
34
34
|
<div data-testid="navigation text" data-wp-text="context.text"></div>
|
@@ -50,10 +50,14 @@ const { actions } = store( 'directive-context-navigate', {
|
|
50
50
|
ctx.newText = 'some new text';
|
51
51
|
},
|
52
52
|
navigate() {
|
53
|
-
return
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
return import( '@wordpress/interactivity-router' ).then(
|
54
|
+
( { actions: routerActions } ) =>
|
55
|
+
routerActions.navigate(
|
56
|
+
window.location,
|
57
|
+
{ force: true, html },
|
58
|
+
)
|
59
|
+
);
|
60
|
+
|
57
61
|
},
|
58
62
|
*asyncNavigate() {
|
59
63
|
yield actions.navigate();
|
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"$schema": "https://schemas.wp.org/trunk/block.json",
|
3
3
|
"apiVersion": 2,
|
4
|
-
"name": "test/directive-
|
5
|
-
"title": "E2E Interactivity tests - directive
|
4
|
+
"name": "test/directive-each",
|
5
|
+
"title": "E2E Interactivity tests - directive each",
|
6
6
|
"category": "text",
|
7
7
|
"icon": "heart",
|
8
8
|
"description": "",
|
@@ -10,6 +10,6 @@
|
|
10
10
|
"interactivity": true
|
11
11
|
},
|
12
12
|
"textdomain": "e2e-interactivity",
|
13
|
-
"viewScript": "directive-
|
13
|
+
"viewScript": "directive-each-view",
|
14
14
|
"render": "file:./render.php"
|
15
15
|
}
|
@@ -0,0 +1,226 @@
|
|
1
|
+
<?php
|
2
|
+
/**
|
3
|
+
* HTML for testing the directive `data-wp-each`.
|
4
|
+
*
|
5
|
+
* @package gutenberg-test-interactive-blocks
|
6
|
+
*/
|
7
|
+
|
8
|
+
wp_enqueue_script_module( 'directive-each-view' );
|
9
|
+
?>
|
10
|
+
|
11
|
+
<div data-wp-interactive='{ "namespace": "directive-each" }'>
|
12
|
+
<div data-testid="letters">
|
13
|
+
<template data-wp-each="state.letters">
|
14
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
15
|
+
</template>
|
16
|
+
<!-- SSRed elements; they should be removed on hydration -->
|
17
|
+
<p data-testid="item" data-wp-each-child>A</p>
|
18
|
+
<p data-testid="item" data-wp-each-child>B</p>
|
19
|
+
<p data-testid="item" data-wp-each-child>C</p>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<hr>
|
23
|
+
|
24
|
+
<div data-testid="fruits">
|
25
|
+
<button
|
26
|
+
data-testid="rotate" data-wp-on--click="actions.rotateFruits"
|
27
|
+
>Rotate</button>
|
28
|
+
<button
|
29
|
+
data-testid="add" data-wp-on--click="actions.addFruit"
|
30
|
+
>Add</button>
|
31
|
+
<button
|
32
|
+
data-testid="replace" data-wp-on--click="actions.replaceFruit"
|
33
|
+
>Replace</button>
|
34
|
+
<template data-wp-each--fruit="state.fruits">
|
35
|
+
<p
|
36
|
+
data-testid="item"
|
37
|
+
data-wp-text="context.fruit"
|
38
|
+
data-wp-on--click="actions.removeFruit"
|
39
|
+
></p>
|
40
|
+
</template>
|
41
|
+
<!-- SSRed elements; they should be removed on hydration -->
|
42
|
+
<p data-testid="item" data-wp-each-child>avocado</p>
|
43
|
+
<p data-testid="item" data-wp-each-child>banana</p>
|
44
|
+
<p data-testid="item" data-wp-each-child>cherimoya</p>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<hr>
|
48
|
+
|
49
|
+
<div data-testid="books">
|
50
|
+
<button
|
51
|
+
data-testid="rotate" data-wp-on--click="actions.rotateBooks"
|
52
|
+
>Rotate</button>
|
53
|
+
<button
|
54
|
+
data-testid="add" data-wp-on--click="actions.addBook"
|
55
|
+
>Add</button>
|
56
|
+
<button
|
57
|
+
data-testid="replace" data-wp-on--click="actions.replaceBook"
|
58
|
+
>Replace</button>
|
59
|
+
<button
|
60
|
+
data-testid="modify" data-wp-on--click="actions.modifyBook"
|
61
|
+
>Modify</button>
|
62
|
+
<template
|
63
|
+
data-wp-each--book="state.books"
|
64
|
+
data-wp-each-key="context.book.isbn"
|
65
|
+
>
|
66
|
+
<p
|
67
|
+
data-testid="item"
|
68
|
+
data-wp-text="context.book.title"
|
69
|
+
data-wp-on--click="actions.removeBook"
|
70
|
+
></p>
|
71
|
+
</template>
|
72
|
+
<!-- SSRed elements; they should be removed on hydration -->
|
73
|
+
<p data-testid="item" data-wp-each-child>A Game of Thrones</p>
|
74
|
+
<p data-testid="item" data-wp-each-child>A Clash of Kings</p>
|
75
|
+
<p data-testid="item" data-wp-each-child>A Storm of Swords</p>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
<hr>
|
79
|
+
|
80
|
+
<div data-testid="numbers">
|
81
|
+
<button
|
82
|
+
data-testid="shift" data-wp-on--click="actions.shiftNumber"
|
83
|
+
>Shift</button>
|
84
|
+
<button
|
85
|
+
data-testid="unshift" data-wp-on--click="actions.unshiftNumber"
|
86
|
+
>Unshift</button>
|
87
|
+
<template data-wp-each="state.numbers">
|
88
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
89
|
+
</template>
|
90
|
+
<p data-testid="item" data-wp-each-child>1</p>
|
91
|
+
<p data-testid="item" data-wp-each-child>2</p>
|
92
|
+
<p data-testid="item" data-wp-each-child>3</p>
|
93
|
+
<p data-testid="item">4</p>
|
94
|
+
</div>
|
95
|
+
|
96
|
+
<hr>
|
97
|
+
|
98
|
+
<div data-testid="empty">
|
99
|
+
<button
|
100
|
+
data-testid="add" data-wp-on--click="actions.addItem"
|
101
|
+
>Add</button>
|
102
|
+
<template data-wp-each="state.emptyList">
|
103
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
104
|
+
</template>
|
105
|
+
<p data-testid="item">item X</p>
|
106
|
+
</div>
|
107
|
+
|
108
|
+
<div data-testid="siblings">
|
109
|
+
<button
|
110
|
+
data-testid="unshift"
|
111
|
+
data-wp-on--click="actions.unshiftNumberAndName"
|
112
|
+
>Unshift</button>
|
113
|
+
<template
|
114
|
+
data-wp-each="state.numbersAndNames"
|
115
|
+
data-wp-each-key="context.item.value"
|
116
|
+
>
|
117
|
+
<p data-wp-text="context.item.name" data-testid="item"></p>
|
118
|
+
<p data-wp-text="context.item.value" data-testid="item"></p>
|
119
|
+
</template>
|
120
|
+
<p data-testid="item" data-wp-each-child>two</p>
|
121
|
+
<p data-testid="item" data-wp-each-child>2</p>
|
122
|
+
<p data-testid="item" data-wp-each-child>three</p>
|
123
|
+
<p data-testid="item" data-wp-each-child>3</p>
|
124
|
+
<p data-testid="item">four</p>
|
125
|
+
<p data-testid="item">4</p>
|
126
|
+
</div>
|
127
|
+
|
128
|
+
<div data-testid="nested">
|
129
|
+
<button
|
130
|
+
data-testid="add animal"
|
131
|
+
data-wp-on--click="actions.addAnimal"
|
132
|
+
>Add animal</button>
|
133
|
+
<button
|
134
|
+
data-testid="add breeds"
|
135
|
+
data-wp-on--click="actions.addBreeds"
|
136
|
+
>Add breeds</button>
|
137
|
+
|
138
|
+
<ul>
|
139
|
+
<template
|
140
|
+
data-wp-each--animal="state.animalBreeds"
|
141
|
+
data-wp-each-key="context.animal.name"
|
142
|
+
>
|
143
|
+
<li data-testid="animal">
|
144
|
+
<span
|
145
|
+
data-testid="name"
|
146
|
+
data-wp-text="context.animal.name"
|
147
|
+
></span>
|
148
|
+
<ul>
|
149
|
+
<template data-wp-each--breed="context.animal.breeds">
|
150
|
+
<li data-wp-text="context.breed"></li>
|
151
|
+
</template>
|
152
|
+
</ul>
|
153
|
+
</li>
|
154
|
+
</template>
|
155
|
+
<!-- SSRed elements; they should be removed on hydration -->
|
156
|
+
<li data-testid="animal" data-wp-each-child>
|
157
|
+
<span data-testid="name">Dog</span>
|
158
|
+
<ul>
|
159
|
+
<template data-wp-each--breed="context.animal.breeds">
|
160
|
+
<li data-wp-text="context.breed"></li>
|
161
|
+
</template>
|
162
|
+
<li data-wp-each-child>Chihuahua</li>
|
163
|
+
<li data-wp-each-child>Rottweiler</li>
|
164
|
+
</ul>
|
165
|
+
</li>
|
166
|
+
<li data-testid="animal" data-wp-each-child>
|
167
|
+
<span data-testid="name">Cat</span>
|
168
|
+
<ul>
|
169
|
+
<template data-wp-each--breed="context.animal.breeds">
|
170
|
+
<li data-wp-text="context.breed"></li>
|
171
|
+
</template>
|
172
|
+
<li data-wp-each-child>Sphynx</li>
|
173
|
+
<li data-wp-each-child>Siamese</li>
|
174
|
+
</ul>
|
175
|
+
</li>
|
176
|
+
</ul>
|
177
|
+
</div>
|
178
|
+
|
179
|
+
<div data-testid="invalid tag">
|
180
|
+
<div data-wp-each="state.letters">
|
181
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
182
|
+
</div>
|
183
|
+
</div>
|
184
|
+
|
185
|
+
|
186
|
+
<div data-testid="derived state">
|
187
|
+
<button
|
188
|
+
data-testid="rotate" data-wp-on--click="actions.rotateFruits"
|
189
|
+
>Rotate</button>
|
190
|
+
<template
|
191
|
+
data-wp-context='{ "idPrefix": "fruit-" }'
|
192
|
+
data-wp-each--fruit="state.fruits"
|
193
|
+
data-wp-each-key="state.fruitId"
|
194
|
+
>
|
195
|
+
<p
|
196
|
+
data-testid="item"
|
197
|
+
data-wp-text="context.fruit"
|
198
|
+
data-wp-bind--data-fruit-id="state.fruitId"
|
199
|
+
></p>
|
200
|
+
</template>
|
201
|
+
<!-- SSRed elements; they should be removed on hydration -->
|
202
|
+
<p data-testid="item" data-wp-each-child>avocado</p>
|
203
|
+
<p data-testid="item" data-wp-each-child>banana</p>
|
204
|
+
<p data-testid="item" data-wp-each-child>cherimoya</p>
|
205
|
+
</div>
|
206
|
+
</div>
|
207
|
+
|
208
|
+
<hr>
|
209
|
+
|
210
|
+
<div
|
211
|
+
data-wp-interactive='{ "namespace": "directive-each" }'
|
212
|
+
data-wp-router-region="navigation-updated list"
|
213
|
+
data-wp-context='{ "list": [ "beta", "gamma", "delta" ] }'
|
214
|
+
data-testid="navigation-updated list"
|
215
|
+
>
|
216
|
+
<button
|
217
|
+
data-testid="navigate"
|
218
|
+
data-wp-on--click="actions.navigate"
|
219
|
+
>Navigate</button>
|
220
|
+
<template data-wp-each="context.list">
|
221
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
222
|
+
</template>
|
223
|
+
<p data-testid="item" data-wp-each-child>beta</p>
|
224
|
+
<p data-testid="item" data-wp-each-child>gamma</p>
|
225
|
+
<p data-testid="item" data-wp-each-child>delta</p>
|
226
|
+
</div>
|
@@ -0,0 +1,192 @@
|
|
1
|
+
/**
|
2
|
+
* WordPress dependencies
|
3
|
+
*/
|
4
|
+
import { store, getContext } from '@wordpress/interactivity';
|
5
|
+
|
6
|
+
const { state } = store( 'directive-each' );
|
7
|
+
|
8
|
+
store( 'directive-each', {
|
9
|
+
state: {
|
10
|
+
letters: [ 'A', 'B', 'C' ],
|
11
|
+
},
|
12
|
+
} );
|
13
|
+
|
14
|
+
store( 'directive-each', {
|
15
|
+
state: {
|
16
|
+
fruits: [ 'avocado', 'banana', 'cherimoya' ],
|
17
|
+
get fruitId() {
|
18
|
+
const { idPrefix, fruit } = getContext();
|
19
|
+
return `${idPrefix}${fruit}`;
|
20
|
+
}
|
21
|
+
},
|
22
|
+
actions: {
|
23
|
+
removeFruit() {
|
24
|
+
const { fruit } = getContext();
|
25
|
+
state.fruits.splice( state.fruits.indexOf( fruit ), 1 );
|
26
|
+
},
|
27
|
+
rotateFruits() {
|
28
|
+
const fruit = state.fruits.pop();
|
29
|
+
state.fruits.splice( 0, 0, fruit );
|
30
|
+
},
|
31
|
+
addFruit() {
|
32
|
+
state.fruits.splice( 0, 0, 'ananas' );
|
33
|
+
},
|
34
|
+
replaceFruit() {
|
35
|
+
state.fruits.splice( 0, 1, 'ananas' );
|
36
|
+
},
|
37
|
+
},
|
38
|
+
} );
|
39
|
+
|
40
|
+
store( 'directive-each', {
|
41
|
+
state: {
|
42
|
+
books: [
|
43
|
+
{
|
44
|
+
title: 'A Game of Thrones',
|
45
|
+
author: 'George R.R. Martin',
|
46
|
+
isbn: "9780553588484",
|
47
|
+
},
|
48
|
+
{
|
49
|
+
title: 'A Clash of Kings',
|
50
|
+
author: 'George R.R. Martin',
|
51
|
+
isbn: "9780553381696",
|
52
|
+
},
|
53
|
+
{
|
54
|
+
title: 'A Storm of Swords',
|
55
|
+
author: 'George R.R. Martin',
|
56
|
+
isbn: "9780553573428",
|
57
|
+
},
|
58
|
+
],
|
59
|
+
},
|
60
|
+
actions: {
|
61
|
+
removeBook() {
|
62
|
+
const { book } = getContext();
|
63
|
+
state.books.splice( state.books.indexOf( book ), 1 );
|
64
|
+
},
|
65
|
+
rotateBooks() {
|
66
|
+
const book = state.books.pop();
|
67
|
+
state.books.splice( 0, 0, book );
|
68
|
+
},
|
69
|
+
addBook() {
|
70
|
+
const book = {
|
71
|
+
title: 'A Feast for Crows',
|
72
|
+
author: 'George R.R. Martin',
|
73
|
+
isbn: "9780553582024",
|
74
|
+
};
|
75
|
+
state.books.splice( 0, 0, book );
|
76
|
+
},
|
77
|
+
replaceBook() {
|
78
|
+
const book = {
|
79
|
+
title: 'A Feast for Crows',
|
80
|
+
author: 'George R.R. Martin',
|
81
|
+
isbn: "9780553582024",
|
82
|
+
};
|
83
|
+
state.books.splice( 0, 1, book );
|
84
|
+
},
|
85
|
+
modifyBook() {
|
86
|
+
const [ book ] = state.books;
|
87
|
+
book.title = book.title.toUpperCase();
|
88
|
+
},
|
89
|
+
},
|
90
|
+
} );
|
91
|
+
|
92
|
+
store( 'directive-each', {
|
93
|
+
state: {
|
94
|
+
numbers: [ 1, 2, 3 ],
|
95
|
+
},
|
96
|
+
actions: {
|
97
|
+
shiftNumber() {
|
98
|
+
state.numbers.shift();
|
99
|
+
},
|
100
|
+
unshiftNumber() {
|
101
|
+
if ( state.numbers.length > 0 ) {
|
102
|
+
state.numbers.unshift( state.numbers[ 0 ] - 1 );
|
103
|
+
}
|
104
|
+
}
|
105
|
+
},
|
106
|
+
} );
|
107
|
+
|
108
|
+
store( 'directive-each', {
|
109
|
+
state: {
|
110
|
+
emptyList: []
|
111
|
+
},
|
112
|
+
actions: {
|
113
|
+
addItem() {
|
114
|
+
state.emptyList.push( `item ${ state.emptyList.length }` );
|
115
|
+
}
|
116
|
+
},
|
117
|
+
} );
|
118
|
+
|
119
|
+
store( 'directive-each', {
|
120
|
+
state: {
|
121
|
+
numbersAndNames: [
|
122
|
+
{ name: "two", value: 2 },
|
123
|
+
{ name: "three", value: 3 },
|
124
|
+
],
|
125
|
+
},
|
126
|
+
actions: {
|
127
|
+
unshiftNumberAndName() {
|
128
|
+
state.numbersAndNames.unshift( { name: "one", value: 1 } );
|
129
|
+
}
|
130
|
+
},
|
131
|
+
} );
|
132
|
+
|
133
|
+
store( 'directive-each', {
|
134
|
+
state: {
|
135
|
+
animalBreeds: [
|
136
|
+
{ name: "Dog", breeds: [ 'chihuahua', 'rottweiler' ] },
|
137
|
+
{ name: "Cat", breeds: [ 'sphynx', 'siamese' ] },
|
138
|
+
],
|
139
|
+
},
|
140
|
+
actions: {
|
141
|
+
addAnimal() {
|
142
|
+
state.animalBreeds.unshift( {
|
143
|
+
name: "Rat", breeds: [ 'dumbo', 'rex' ]
|
144
|
+
} );
|
145
|
+
},
|
146
|
+
addBreeds() {
|
147
|
+
state
|
148
|
+
.animalBreeds
|
149
|
+
.forEach( ( { name, breeds } ) => {
|
150
|
+
if ( name === 'Dog') breeds.unshift( 'german shepherd' );
|
151
|
+
if ( name === 'Cat') breeds.unshift( 'maine coon' );
|
152
|
+
if ( name === 'Rat') breeds.unshift( 'satin' );
|
153
|
+
} );
|
154
|
+
}
|
155
|
+
}
|
156
|
+
} );
|
157
|
+
|
158
|
+
const html = `
|
159
|
+
<div
|
160
|
+
data-wp-interactive='{ "namespace": "directive-each" }'
|
161
|
+
data-wp-router-region="navigation-updated list"
|
162
|
+
data-wp-context='{ "list": [ "alpha", "beta", "gamma", "delta" ] }'
|
163
|
+
data-testid="navigation-updated list"
|
164
|
+
>
|
165
|
+
<button
|
166
|
+
data-testid="navigate"
|
167
|
+
data-wp-on--click="actions.navigate"
|
168
|
+
>Navigate</button>
|
169
|
+
<template data-wp-each="context.list">
|
170
|
+
<p data-wp-text="context.item" data-testid="item"></p>
|
171
|
+
</template>
|
172
|
+
<p data-testid="item" data-wp-each-child>alpha</p>
|
173
|
+
<p data-testid="item" data-wp-each-child>beta</p>
|
174
|
+
<p data-testid="item" data-wp-each-child>gamma</p>
|
175
|
+
<p data-testid="item" data-wp-each-child>delta</p>
|
176
|
+
</div>
|
177
|
+
`;
|
178
|
+
|
179
|
+
store( 'directive-each', {
|
180
|
+
actions: {
|
181
|
+
*navigate() {
|
182
|
+
const { actions } = yield import(
|
183
|
+
"@wordpress/interactivity-router"
|
184
|
+
);
|
185
|
+
return actions.navigate( window.location, {
|
186
|
+
force: true,
|
187
|
+
html,
|
188
|
+
} );
|
189
|
+
},
|
190
|
+
}
|
191
|
+
} );
|
192
|
+
|
@@ -5,12 +5,12 @@
|
|
5
5
|
* @package gutenberg-test-interactive-blocks
|
6
6
|
*/
|
7
7
|
|
8
|
-
|
8
|
+
wp_enqueue_script_module( 'directive-key-view' );
|
9
9
|
?>
|
10
10
|
|
11
11
|
<div
|
12
12
|
data-wp-interactive='{ "namespace": "directive-key" }'
|
13
|
-
data-wp-
|
13
|
+
data-wp-router-region="some-id"
|
14
14
|
>
|
15
15
|
<ul>
|
16
16
|
<li data-wp-key="id-2" data-testid="first-item">2</li>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/**
|
2
2
|
* WordPress dependencies
|
3
3
|
*/
|
4
|
-
import { store
|
4
|
+
import { store } from '@wordpress/interactivity';
|
5
5
|
|
6
6
|
const html = `
|
7
7
|
<div
|
8
8
|
data-wp-interactive='{ "namespace": "directive-key" }'
|
9
|
-
data-wp-
|
9
|
+
data-wp-router-region="some-id"
|
10
10
|
>
|
11
11
|
<ul>
|
12
12
|
<li data-wp-key="id-1">1</li>
|
@@ -17,8 +17,11 @@ const html = `
|
|
17
17
|
|
18
18
|
store( 'directive-key', {
|
19
19
|
actions: {
|
20
|
-
navigate() {
|
21
|
-
|
20
|
+
*navigate() {
|
21
|
+
const { actions } = yield import(
|
22
|
+
"@wordpress/interactivity-router"
|
23
|
+
);
|
24
|
+
return actions.navigate( window.location, {
|
22
25
|
force: true,
|
23
26
|
html,
|
24
27
|
} );
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "https://schemas.wp.org/trunk/block.json",
|
3
|
+
"apiVersion": 2,
|
4
|
+
"name": "test/directive-on-document",
|
5
|
+
"title": "E2E Interactivity tests - directive on document",
|
6
|
+
"category": "text",
|
7
|
+
"icon": "heart",
|
8
|
+
"description": "",
|
9
|
+
"supports": {
|
10
|
+
"interactivity": true
|
11
|
+
},
|
12
|
+
"textdomain": "e2e-interactivity",
|
13
|
+
"viewScript": "directive-on-document-view",
|
14
|
+
"render": "file:./render.php"
|
15
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<?php
|
2
|
+
/**
|
3
|
+
* HTML for testing the directive `data-wp-on`.
|
4
|
+
*
|
5
|
+
* @package gutenberg-test-interactive-blocks
|
6
|
+
*/
|
7
|
+
|
8
|
+
wp_enqueue_script_module( 'directive-on-document-view' );
|
9
|
+
?>
|
10
|
+
|
11
|
+
<div data-wp-interactive='{ "namespace": "directive-on-document" }'>
|
12
|
+
<button
|
13
|
+
data-testid="visibility"
|
14
|
+
data-wp-on--click="actions.visibilityHandler"
|
15
|
+
>
|
16
|
+
Switch visibility
|
17
|
+
</button>
|
18
|
+
|
19
|
+
<div data-wp-text="state.isEventAttached" data-testid="isEventAttached">no</div>
|
20
|
+
|
21
|
+
<div data-wp-show-mock="state.isVisible">
|
22
|
+
<div
|
23
|
+
data-wp-on-document--keydown="callbacks.keydownHandler"
|
24
|
+
data-wp-init="callbacks.init"
|
25
|
+
>
|
26
|
+
<p data-wp-text="state.counter" data-testid="counter">0</p>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|