@wordpress/core-data 7.51.0 → 7.52.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 (84) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/actions.cjs +54 -1
  3. package/build/actions.cjs.map +3 -3
  4. package/build/components/entities-saved-states/entity-record-item.cjs +67 -0
  5. package/build/components/entities-saved-states/entity-record-item.cjs.map +7 -0
  6. package/build/components/entities-saved-states/entity-type-list.cjs +135 -0
  7. package/build/components/entities-saved-states/entity-type-list.cjs.map +7 -0
  8. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs +97 -0
  9. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs.map +7 -0
  10. package/build/components/entities-saved-states/index.cjs +215 -0
  11. package/build/components/entities-saved-states/index.cjs.map +7 -0
  12. package/build/entities.cjs +2 -0
  13. package/build/entities.cjs.map +2 -2
  14. package/build/private-actions.cjs +85 -0
  15. package/build/private-actions.cjs.map +3 -3
  16. package/build/private-apis.cjs +19 -0
  17. package/build/private-apis.cjs.map +3 -3
  18. package/build/utils/crdt.cjs +4 -2
  19. package/build/utils/crdt.cjs.map +2 -2
  20. package/build/utils/get-template-info.cjs +53 -0
  21. package/build/utils/get-template-info.cjs.map +7 -0
  22. package/build/utils/get-template-part-icon.cjs +43 -0
  23. package/build/utils/get-template-part-icon.cjs.map +7 -0
  24. package/build-module/actions.mjs +57 -1
  25. package/build-module/actions.mjs.map +2 -2
  26. package/build-module/components/entities-saved-states/entity-record-item.mjs +46 -0
  27. package/build-module/components/entities-saved-states/entity-record-item.mjs.map +7 -0
  28. package/build-module/components/entities-saved-states/entity-type-list.mjs +104 -0
  29. package/build-module/components/entities-saved-states/entity-type-list.mjs.map +7 -0
  30. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs +72 -0
  31. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs.map +7 -0
  32. package/build-module/components/entities-saved-states/index.mjs +187 -0
  33. package/build-module/components/entities-saved-states/index.mjs.map +7 -0
  34. package/build-module/entities.mjs +2 -0
  35. package/build-module/entities.mjs.map +2 -2
  36. package/build-module/private-actions.mjs +84 -0
  37. package/build-module/private-actions.mjs.map +2 -2
  38. package/build-module/private-apis.mjs +12 -0
  39. package/build-module/private-apis.mjs.map +2 -2
  40. package/build-module/utils/crdt.mjs +2 -1
  41. package/build-module/utils/crdt.mjs.map +2 -2
  42. package/build-module/utils/get-template-info.mjs +28 -0
  43. package/build-module/utils/get-template-info.mjs.map +7 -0
  44. package/build-module/utils/get-template-part-icon.mjs +24 -0
  45. package/build-module/utils/get-template-part-icon.mjs.map +7 -0
  46. package/build-types/actions.d.ts.map +1 -1
  47. package/build-types/components/entities-saved-states/entity-record-item.d.ts +6 -0
  48. package/build-types/components/entities-saved-states/entity-record-item.d.ts.map +1 -0
  49. package/build-types/components/entities-saved-states/entity-type-list.d.ts +6 -0
  50. package/build-types/components/entities-saved-states/entity-type-list.d.ts.map +1 -0
  51. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts +11 -0
  52. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts.map +1 -0
  53. package/build-types/components/entities-saved-states/index.d.ts +49 -0
  54. package/build-types/components/entities-saved-states/index.d.ts.map +1 -0
  55. package/build-types/entities.d.ts.map +1 -1
  56. package/build-types/private-actions.d.ts +19 -0
  57. package/build-types/private-actions.d.ts.map +1 -1
  58. package/build-types/private-apis.d.ts +9 -0
  59. package/build-types/private-apis.d.ts.map +1 -1
  60. package/build-types/utils/crdt.d.ts +8 -0
  61. package/build-types/utils/crdt.d.ts.map +1 -1
  62. package/build-types/utils/get-template-info.d.ts +13 -0
  63. package/build-types/utils/get-template-info.d.ts.map +1 -0
  64. package/build-types/utils/get-template-part-icon.d.ts +9 -0
  65. package/build-types/utils/get-template-part-icon.d.ts.map +1 -0
  66. package/build-types/utils/on-sub-key.d.ts +4 -0
  67. package/build-types/utils/on-sub-key.d.ts.map +1 -0
  68. package/package.json +27 -22
  69. package/src/actions.js +92 -1
  70. package/src/components/entities-saved-states/entity-record-item.js +60 -0
  71. package/src/components/entities-saved-states/entity-type-list.js +130 -0
  72. package/src/components/entities-saved-states/hooks/use-is-dirty.js +101 -0
  73. package/src/components/entities-saved-states/index.js +242 -0
  74. package/src/components/entities-saved-states/style.scss +70 -0
  75. package/src/components/entities-saved-states/test/use-is-dirty.js +88 -0
  76. package/src/entities.js +2 -0
  77. package/src/private-actions.js +127 -0
  78. package/src/private-apis.ts +12 -0
  79. package/src/style.scss +1 -0
  80. package/src/test/actions.js +587 -0
  81. package/src/utils/crdt.ts +1 -1
  82. package/src/utils/get-template-info.js +52 -0
  83. package/src/utils/get-template-part-icon.js +30 -0
  84. package/src/utils/test/get-template-info.js +224 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { footer, header, layout } from '@wordpress/icons';
5
+ /**
6
+ * Internal dependencies
7
+ */
8
+ import { getTemplateInfo } from '../get-template-info';
9
+
10
+ describe( '__experimentalGetTemplateInfo', () => {
11
+ const defaultTemplateTypes = [
12
+ {
13
+ title: 'Default (Index)',
14
+ description: 'Main template',
15
+ slug: 'index',
16
+ },
17
+ {
18
+ title: '404 (Not Found)',
19
+ description: 'Applied when content cannot be found',
20
+ slug: '404',
21
+ },
22
+ ];
23
+
24
+ const defaultTemplatePartAreas = [
25
+ {
26
+ area: 'header',
27
+ label: 'Header',
28
+ description: 'Some description of a header',
29
+ icon: 'header',
30
+ },
31
+ {
32
+ area: 'footer',
33
+ label: 'Footer',
34
+ description: 'Some description of a footer',
35
+ icon: 'footer',
36
+ },
37
+ ];
38
+
39
+ it( 'should return an empty object if no template is passed', () => {
40
+ expect( getTemplateInfo( undefined ) ).toEqual( {} );
41
+ expect( getTemplateInfo( null ) ).toEqual( {} );
42
+ expect( getTemplateInfo( false ) ).toEqual( {} );
43
+ } );
44
+
45
+ it( 'should return the default title if none is defined on the template', () => {
46
+ expect(
47
+ getTemplateInfo( {
48
+ templateAreas: defaultTemplatePartAreas,
49
+ templateTypes: defaultTemplateTypes,
50
+ template: {
51
+ slug: 'index',
52
+ },
53
+ } ).title
54
+ ).toEqual( 'Default (Index)' );
55
+ } );
56
+
57
+ it( 'should return the rendered title if defined on the template', () => {
58
+ expect(
59
+ getTemplateInfo( {
60
+ templateAreas: defaultTemplatePartAreas,
61
+ templateTypes: defaultTemplateTypes,
62
+ template: {
63
+ slug: 'index',
64
+ title: { rendered: 'test title' },
65
+ },
66
+ } ).title
67
+ ).toEqual( 'test title' );
68
+ } );
69
+
70
+ it( 'should return the slug if no title is found', () => {
71
+ expect(
72
+ getTemplateInfo( {
73
+ templateAreas: defaultTemplatePartAreas,
74
+ templateTypes: defaultTemplateTypes,
75
+ template: {
76
+ slug: 'not a real template',
77
+ },
78
+ } ).title
79
+ ).toEqual( 'not a real template' );
80
+ } );
81
+
82
+ it( 'should return the default description if none is defined on the template', () => {
83
+ expect(
84
+ getTemplateInfo( {
85
+ templateAreas: defaultTemplatePartAreas,
86
+ templateTypes: defaultTemplateTypes,
87
+ template: {
88
+ slug: 'index',
89
+ },
90
+ } ).description
91
+ ).toEqual( 'Main template' );
92
+ } );
93
+
94
+ it( 'should return the raw excerpt as description if defined on the template', () => {
95
+ expect(
96
+ getTemplateInfo( {
97
+ templateAreas: defaultTemplatePartAreas,
98
+ templateTypes: defaultTemplateTypes,
99
+ template: {
100
+ slug: 'index',
101
+ description: { raw: 'test description' },
102
+ },
103
+ } ).description
104
+ ).toEqual( 'test description' );
105
+ } );
106
+
107
+ it( 'should return a title, description, and icon', () => {
108
+ expect(
109
+ getTemplateInfo( {
110
+ templateAreas: defaultTemplatePartAreas,
111
+ templateTypes: defaultTemplateTypes,
112
+ template: { slug: 'index' },
113
+ } )
114
+ ).toEqual( {
115
+ title: 'Default (Index)',
116
+ description: 'Main template',
117
+ icon: layout,
118
+ } );
119
+
120
+ expect(
121
+ getTemplateInfo( {
122
+ templateAreas: defaultTemplatePartAreas,
123
+ templateTypes: defaultTemplateTypes,
124
+ template: {
125
+ slug: 'index',
126
+ title: { rendered: 'test title' },
127
+ },
128
+ } )
129
+ ).toEqual( {
130
+ title: 'test title',
131
+ description: 'Main template',
132
+ icon: layout,
133
+ } );
134
+
135
+ expect(
136
+ getTemplateInfo( {
137
+ templateAreas: defaultTemplatePartAreas,
138
+ templateTypes: defaultTemplateTypes,
139
+ template: {
140
+ slug: 'index',
141
+ description: { raw: 'test description' },
142
+ },
143
+ } )
144
+ ).toEqual( {
145
+ title: 'Default (Index)',
146
+ description: 'test description',
147
+ icon: layout,
148
+ } );
149
+
150
+ expect(
151
+ getTemplateInfo( {
152
+ templateAreas: defaultTemplatePartAreas,
153
+ templateTypes: defaultTemplateTypes,
154
+ template: {
155
+ slug: 'index',
156
+ title: { rendered: 'test title' },
157
+ description: { raw: 'test description' },
158
+ },
159
+ } )
160
+ ).toEqual( {
161
+ title: 'test title',
162
+ description: 'test description',
163
+ icon: layout,
164
+ } );
165
+ } );
166
+
167
+ it( 'should return correct icon based on area', () => {
168
+ expect(
169
+ getTemplateInfo( {
170
+ templateAreas: defaultTemplatePartAreas,
171
+ templateTypes: defaultTemplateTypes,
172
+ template: {
173
+ slug: 'template part, area = uncategorized',
174
+ area: 'uncategorized',
175
+ },
176
+ } )
177
+ ).toEqual( {
178
+ title: 'template part, area = uncategorized',
179
+ icon: layout,
180
+ } );
181
+
182
+ expect(
183
+ getTemplateInfo( {
184
+ templateAreas: defaultTemplatePartAreas,
185
+ templateTypes: defaultTemplateTypes,
186
+ template: {
187
+ slug: 'template part, area = invalid',
188
+ area: 'invalid',
189
+ },
190
+ } )
191
+ ).toEqual( {
192
+ title: 'template part, area = invalid',
193
+ icon: layout,
194
+ } );
195
+
196
+ expect(
197
+ getTemplateInfo( {
198
+ templateAreas: defaultTemplatePartAreas,
199
+ templateTypes: defaultTemplateTypes,
200
+ template: {
201
+ slug: 'template part, area = header',
202
+ area: 'header',
203
+ },
204
+ } )
205
+ ).toEqual( {
206
+ title: 'template part, area = header',
207
+ icon: header,
208
+ } );
209
+
210
+ expect(
211
+ getTemplateInfo( {
212
+ templateAreas: defaultTemplatePartAreas,
213
+ templateTypes: defaultTemplateTypes,
214
+ template: {
215
+ slug: 'template part, area = footer',
216
+ area: 'footer',
217
+ },
218
+ } )
219
+ ).toEqual( {
220
+ title: 'template part, area = footer',
221
+ icon: footer,
222
+ } );
223
+ } );
224
+ } );