@payloadcms/ui 4.0.0-canary.34 → 4.0.0-canary.36

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 (180) hide show
  1. package/dist/css/app.css +1 -0
  2. package/dist/css/preflight.css +1 -0
  3. package/dist/css/spacing.css +3 -0
  4. package/dist/elements/AppHeader/index.css +3 -0
  5. package/dist/elements/BulkUpload/ActionsBar/index.css +1 -0
  6. package/dist/elements/BulkUpload/AddingFilesView/index.css +2 -4
  7. package/dist/elements/BulkUpload/FileSidebar/index.css +1 -0
  8. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/index.js +12 -7
  10. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/index.css +2 -0
  12. package/dist/elements/Collapsible/index.css +1 -0
  13. package/dist/elements/DatePicker/index.css +2 -0
  14. package/dist/elements/Dialog/index.css +1 -0
  15. package/dist/elements/DocumentControls/index.css +1 -0
  16. package/dist/elements/DocumentFields/index.css +2 -0
  17. package/dist/elements/DocumentHeader/Tabs/index.css +1 -0
  18. package/dist/elements/DocumentHeader/index.css +1 -0
  19. package/dist/elements/EditUpload/index.css +1 -1
  20. package/dist/elements/FieldDiffContainer/index.css +1 -0
  21. package/dist/elements/FieldDiffLabel/index.css +1 -0
  22. package/dist/elements/FileDetails/StaticFileDetails/index.css +2 -0
  23. package/dist/elements/HTMLDiff/index.css +1 -0
  24. package/dist/elements/ItemsDrawer/index.css +3 -0
  25. package/dist/elements/ListControls/index.css +1 -0
  26. package/dist/elements/ListControls/index.d.ts.map +1 -1
  27. package/dist/elements/ListControls/index.js +7 -1
  28. package/dist/elements/ListControls/index.js.map +1 -1
  29. package/dist/elements/ListControls/types.d.ts +3 -1
  30. package/dist/elements/ListControls/types.d.ts.map +1 -1
  31. package/dist/elements/ListControls/types.js.map +1 -1
  32. package/dist/elements/ListControlsBar/index.css +1 -0
  33. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
  34. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  35. package/dist/elements/LivePreview/Window/index.css +1 -0
  36. package/dist/elements/Nav/index.css +2 -0
  37. package/dist/elements/PageControls/index.css +1 -0
  38. package/dist/elements/PillSelector/index.css +1 -0
  39. package/dist/elements/PreviewSizes/index.css +2 -0
  40. package/dist/elements/PublishButton/index.css +1 -0
  41. package/dist/elements/QueryPresets/fields/Heading/index.css +1 -0
  42. package/dist/elements/RenderTitle/index.css +1 -0
  43. package/dist/elements/Table/index.css +1 -0
  44. package/dist/elements/TableSection/index.css +1 -0
  45. package/dist/elements/Tabs/index.css +1 -0
  46. package/dist/elements/Thumbnail/index.css +1 -0
  47. package/dist/elements/TimezonePicker/index.css +1 -0
  48. package/dist/elements/Tooltip/index.css +7 -0
  49. package/dist/elements/WhereBuilder/Condition/index.css +1 -0
  50. package/dist/elements/WhereBuilder/index.css +2 -0
  51. package/dist/fields/Array/index.css +1 -0
  52. package/dist/fields/Blocks/index.css +1 -0
  53. package/dist/fields/Group/index.css +1 -0
  54. package/dist/fields/Row/index.css +2 -0
  55. package/dist/fields/Tabs/index.css +1 -0
  56. package/dist/forms/RenderFields/index.css +1 -0
  57. package/dist/hooks/useControllableState.js +3 -3
  58. package/dist/hooks/useControllableState.js.map +1 -1
  59. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  60. package/dist/providers/DocumentInfo/index.js +30 -19
  61. package/dist/providers/DocumentInfo/index.js.map +1 -1
  62. package/dist/providers/Locale/index.d.ts.map +1 -1
  63. package/dist/providers/Locale/index.js +6 -7
  64. package/dist/providers/Locale/index.js.map +1 -1
  65. package/dist/styles.css +5 -1
  66. package/dist/templates/Default/Wrapper/index.css +2 -0
  67. package/dist/templates/Default/index.css +1 -0
  68. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  69. package/dist/utilities/handleAuthRedirect.js +4 -1
  70. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  71. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  72. package/dist/utilities/isPathMatchingRoute.js +7 -5
  73. package/dist/utilities/isPathMatchingRoute.js.map +1 -1
  74. package/dist/views/API/index.css +1 -0
  75. package/dist/views/Dashboard/Default/ModularDashboard/index.css +2 -0
  76. package/dist/views/Edit/index.css +1 -0
  77. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +1 -0
  78. package/dist/views/HierarchyList/index.css +1 -0
  79. package/dist/views/List/ListHeader/index.css +1 -0
  80. package/dist/views/List/ListHeader/index.d.ts +0 -1
  81. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  82. package/dist/views/List/ListHeader/index.js +2 -6
  83. package/dist/views/List/ListHeader/index.js.map +1 -1
  84. package/dist/views/List/index.client.d.ts.map +1 -1
  85. package/dist/views/List/index.client.js +3 -2
  86. package/dist/views/List/index.client.js.map +1 -1
  87. package/dist/views/List/index.css +2 -0
  88. package/dist/views/Root/index.d.ts.map +1 -1
  89. package/dist/views/Root/index.js +26 -19
  90. package/dist/views/Root/index.js.map +1 -1
  91. package/dist/views/Version/Default/index.css +2 -0
  92. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.css +8 -0
  93. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +1 -0
  94. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +1 -0
  95. package/dist/views/Version/RenderFieldsToDiff/index.css +2 -0
  96. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  97. package/dist/views/Version/Restore/index.js +9 -6
  98. package/dist/views/Version/Restore/index.js.map +1 -1
  99. package/dist/views/Versions/VersionPillLabel/index.css +1 -0
  100. package/dist/views/Versions/index.css +1 -0
  101. package/dist/widgets/CollectionCards/index.css +4 -0
  102. package/package.json +5 -5
  103. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +0 -120
  104. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +0 -1
  105. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +0 -144
  106. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +0 -1
  107. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +0 -885
  108. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +0 -1
  109. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +0 -87
  110. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
  111. package/dist/elements/CommandPalette/buildActions.spec.js +0 -158
  112. package/dist/elements/CommandPalette/buildActions.spec.js.map +0 -1
  113. package/dist/elements/CommandPalette/highlightLabel.spec.js +0 -78
  114. package/dist/elements/CommandPalette/highlightLabel.spec.js.map +0 -1
  115. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +0 -143
  116. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +0 -1
  117. package/dist/elements/Toasts/fieldErrors.spec.js +0 -46
  118. package/dist/elements/Toasts/fieldErrors.spec.js.map +0 -1
  119. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.spec.js +0 -152
  120. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.spec.js.map +0 -1
  121. package/dist/elements/WhereBuilder/conditionValue.spec.js +0 -65
  122. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +0 -1
  123. package/dist/fields/Upload/Input.spec.js +0 -242
  124. package/dist/fields/Upload/Input.spec.js.map +0 -1
  125. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.d.ts +0 -2
  126. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.d.ts.map +0 -1
  127. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +0 -67
  128. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +0 -1
  129. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.spec.js +0 -150
  130. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.spec.js.map +0 -1
  131. package/dist/layouts/Root/index.spec.js +0 -20
  132. package/dist/layouts/Root/index.spec.js.map +0 -1
  133. package/dist/providers/Auth/authSessionRequests.spec.js +0 -121
  134. package/dist/providers/Auth/authSessionRequests.spec.js.map +0 -1
  135. package/dist/providers/Auth/sessionActivity.spec.js +0 -44
  136. package/dist/providers/Auth/sessionActivity.spec.js.map +0 -1
  137. package/dist/providers/Auth/tabSessionSync/index.spec.js +0 -463
  138. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +0 -1
  139. package/dist/providers/Auth/useAuthSessionTimers.spec.js +0 -311
  140. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +0 -1
  141. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +0 -44
  142. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +0 -1
  143. package/dist/providers/TableColumns/buildColumnState/index.spec.js +0 -40
  144. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +0 -1
  145. package/dist/utilities/appendCacheTag.spec.js +0 -34
  146. package/dist/utilities/appendCacheTag.spec.js.map +0 -1
  147. package/dist/utilities/formatAbsoluteURL.spec.js +0 -27
  148. package/dist/utilities/formatAbsoluteURL.spec.js.map +0 -1
  149. package/dist/utilities/formatMetadata.spec.js +0 -83
  150. package/dist/utilities/formatMetadata.spec.js.map +0 -1
  151. package/dist/utilities/fuzzyMatch.spec.js +0 -38
  152. package/dist/utilities/fuzzyMatch.spec.js.map +0 -1
  153. package/dist/utilities/initReq.spec.js +0 -226
  154. package/dist/utilities/initReq.spec.js.map +0 -1
  155. package/dist/utilities/isAbsoluteURL.spec.js +0 -11
  156. package/dist/utilities/isAbsoluteURL.spec.js.map +0 -1
  157. package/dist/utilities/isCustomAdminView.spec.js +0 -90
  158. package/dist/utilities/isCustomAdminView.spec.js.map +0 -1
  159. package/dist/utilities/isHttpURL.spec.js +0 -25
  160. package/dist/utilities/isHttpURL.spec.js.map +0 -1
  161. package/dist/utilities/isPathMatchingRoute.spec.js +0 -178
  162. package/dist/utilities/isPathMatchingRoute.spec.js.map +0 -1
  163. package/dist/utilities/isPublicAdminRoute.spec.js +0 -34
  164. package/dist/utilities/isPublicAdminRoute.spec.js.map +0 -1
  165. package/dist/utilities/normalizeRelationshipValue.spec.js +0 -373
  166. package/dist/utilities/normalizeRelationshipValue.spec.js.map +0 -1
  167. package/dist/utilities/recentlyViewed.spec.js +0 -92
  168. package/dist/utilities/recentlyViewed.spec.js.map +0 -1
  169. package/dist/views/Root/getCustomCollectionViewByRoute.spec.js +0 -168
  170. package/dist/views/Root/getCustomCollectionViewByRoute.spec.js.map +0 -1
  171. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.spec.js +0 -258
  172. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.spec.js.map +0 -1
  173. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +0 -915
  174. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +0 -1
  175. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +0 -47
  176. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +0 -1
  177. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +0 -125
  178. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +0 -1
  179. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +0 -100
  180. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +0 -1
@@ -1,915 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { countChangedFields, countChangedFieldsInRows } from './countChangedFields.js';
3
- describe('countChangedFields', () => {
4
- // locales can be undefined when not configured in payload.config.js
5
- const locales = undefined;
6
- it('should return 0 when no fields have changed', () => {
7
- const fields = [{
8
- name: 'a',
9
- type: 'text'
10
- }, {
11
- name: 'b',
12
- type: 'number'
13
- }];
14
- const valueFrom = {
15
- a: 'original',
16
- b: 123
17
- };
18
- const valueTo = {
19
- a: 'original',
20
- b: 123
21
- };
22
- const result = countChangedFields({
23
- valueFrom,
24
- fields,
25
- valueTo,
26
- locales
27
- });
28
- expect(result).toBe(0);
29
- });
30
- it('should count simple changed fields', () => {
31
- const fields = [{
32
- name: 'a',
33
- type: 'text'
34
- }, {
35
- name: 'b',
36
- type: 'number'
37
- }];
38
- const valueFrom = {
39
- a: 'original',
40
- b: 123
41
- };
42
- const valueTo = {
43
- a: 'changed',
44
- b: 123
45
- };
46
- const result = countChangedFields({
47
- valueFrom,
48
- fields,
49
- valueTo,
50
- locales
51
- });
52
- expect(result).toBe(1);
53
- });
54
- it('should count previously undefined fields', () => {
55
- const fields = [{
56
- name: 'a',
57
- type: 'text'
58
- }, {
59
- name: 'b',
60
- type: 'number'
61
- }];
62
- const valueFrom = {};
63
- const valueTo = {
64
- a: 'new',
65
- b: 123
66
- };
67
- const result = countChangedFields({
68
- valueFrom,
69
- fields,
70
- valueTo,
71
- locales
72
- });
73
- expect(result).toBe(2);
74
- });
75
- it('should not count the id field because it is not displayed in the version view', () => {
76
- const fields = [{
77
- name: 'id',
78
- type: 'text'
79
- }, {
80
- name: 'a',
81
- type: 'text'
82
- }];
83
- const valueFrom = {
84
- id: 'original',
85
- a: 'original'
86
- };
87
- const valueTo = {
88
- id: 'changed',
89
- a: 'original'
90
- };
91
- const result = countChangedFields({
92
- valueFrom,
93
- fields,
94
- valueTo,
95
- locales
96
- });
97
- expect(result).toBe(0);
98
- });
99
- it('should count changed fields inside collapsible fields', () => {
100
- const fields = [{
101
- type: 'collapsible',
102
- label: 'A collapsible field',
103
- fields: [{
104
- name: 'a',
105
- type: 'text'
106
- }, {
107
- name: 'b',
108
- type: 'text'
109
- }, {
110
- name: 'c',
111
- type: 'text'
112
- }]
113
- }];
114
- const valueFrom = {
115
- a: 'original',
116
- b: 'original',
117
- c: 'original'
118
- };
119
- const valueTo = {
120
- a: 'changed',
121
- b: 'changed',
122
- c: 'original'
123
- };
124
- const result = countChangedFields({
125
- valueFrom,
126
- fields,
127
- valueTo,
128
- locales
129
- });
130
- expect(result).toBe(2);
131
- });
132
- it('should count changed fields inside row fields', () => {
133
- const fields = [{
134
- type: 'row',
135
- fields: [{
136
- name: 'a',
137
- type: 'text'
138
- }, {
139
- name: 'b',
140
- type: 'text'
141
- }, {
142
- name: 'c',
143
- type: 'text'
144
- }]
145
- }];
146
- const valueFrom = {
147
- a: 'original',
148
- b: 'original',
149
- c: 'original'
150
- };
151
- const valueTo = {
152
- a: 'changed',
153
- b: 'changed',
154
- c: 'original'
155
- };
156
- const result = countChangedFields({
157
- valueFrom,
158
- fields,
159
- valueTo,
160
- locales
161
- });
162
- expect(result).toBe(2);
163
- });
164
- it('should count changed fields inside group fields', () => {
165
- const fields = [{
166
- type: 'group',
167
- name: 'group',
168
- fields: [{
169
- name: 'a',
170
- type: 'text'
171
- }, {
172
- name: 'b',
173
- type: 'text'
174
- }, {
175
- name: 'c',
176
- type: 'text'
177
- }]
178
- }];
179
- const valueFrom = {
180
- group: {
181
- a: 'original',
182
- b: 'original',
183
- c: 'original'
184
- }
185
- };
186
- const valueTo = {
187
- group: {
188
- a: 'changed',
189
- b: 'changed',
190
- c: 'original'
191
- }
192
- };
193
- const result = countChangedFields({
194
- valueFrom,
195
- fields,
196
- valueTo,
197
- locales
198
- });
199
- expect(result).toBe(2);
200
- });
201
- it('should count changed fields inside unnamed tabs ', () => {
202
- const fields = [{
203
- type: 'tabs',
204
- tabs: [{
205
- label: 'Unnamed tab',
206
- fields: [{
207
- name: 'a',
208
- type: 'text'
209
- }, {
210
- name: 'b',
211
- type: 'text'
212
- }, {
213
- name: 'c',
214
- type: 'text'
215
- }]
216
- }]
217
- }];
218
- const valueFrom = {
219
- a: 'original',
220
- b: 'original',
221
- c: 'original'
222
- };
223
- const valueTo = {
224
- a: 'changed',
225
- b: 'changed',
226
- c: 'original'
227
- };
228
- const result = countChangedFields({
229
- valueFrom,
230
- fields,
231
- valueTo,
232
- locales
233
- });
234
- expect(result).toBe(2);
235
- });
236
- it('should count changed fields inside named tabs ', () => {
237
- const fields = [{
238
- type: 'tabs',
239
- tabs: [{
240
- name: 'namedTab',
241
- fields: [{
242
- name: 'a',
243
- type: 'text'
244
- }, {
245
- name: 'b',
246
- type: 'text'
247
- }, {
248
- name: 'c',
249
- type: 'text'
250
- }]
251
- }]
252
- }];
253
- const valueFrom = {
254
- namedTab: {
255
- a: 'original',
256
- b: 'original',
257
- c: 'original'
258
- }
259
- };
260
- const valueTo = {
261
- namedTab: {
262
- a: 'changed',
263
- b: 'changed',
264
- c: 'original'
265
- }
266
- };
267
- const result = countChangedFields({
268
- valueFrom,
269
- fields,
270
- valueTo,
271
- locales
272
- });
273
- expect(result).toBe(2);
274
- });
275
- it('should ignore UI fields', () => {
276
- const fields = [{
277
- name: 'a',
278
- type: 'text'
279
- }, {
280
- name: 'b',
281
- type: 'ui',
282
- admin: {}
283
- }];
284
- const valueFrom = {
285
- a: 'original',
286
- b: 'original'
287
- };
288
- const valueTo = {
289
- a: 'original',
290
- b: 'changed'
291
- };
292
- const result = countChangedFields({
293
- valueFrom,
294
- fields,
295
- valueTo,
296
- locales
297
- });
298
- expect(result).toBe(0);
299
- });
300
- it('should count changed fields inside array fields', () => {
301
- const fields = [{
302
- name: 'arrayField',
303
- type: 'array',
304
- fields: [{
305
- name: 'a',
306
- type: 'text'
307
- }, {
308
- name: 'b',
309
- type: 'text'
310
- }, {
311
- name: 'c',
312
- type: 'text'
313
- }]
314
- }];
315
- const valueFrom = {
316
- arrayField: [{
317
- a: 'original',
318
- b: 'original',
319
- c: 'original'
320
- }, {
321
- a: 'original',
322
- b: 'original'
323
- }]
324
- };
325
- const valueTo = {
326
- arrayField: [{
327
- a: 'changed',
328
- b: 'changed',
329
- c: 'original'
330
- }, {
331
- a: 'changed',
332
- b: 'changed',
333
- c: 'changed'
334
- }]
335
- };
336
- const result = countChangedFields({
337
- valueFrom,
338
- fields,
339
- valueTo,
340
- locales
341
- });
342
- expect(result).toBe(5);
343
- });
344
- it('should count changed fields inside arrays nested inside of collapsibles', () => {
345
- const fields = [{
346
- type: 'collapsible',
347
- label: 'A collapsible field',
348
- fields: [{
349
- name: 'arrayField',
350
- type: 'array',
351
- fields: [{
352
- name: 'a',
353
- type: 'text'
354
- }, {
355
- name: 'b',
356
- type: 'text'
357
- }, {
358
- name: 'c',
359
- type: 'text'
360
- }]
361
- }]
362
- }];
363
- const valueFrom = {
364
- arrayField: [{
365
- a: 'original',
366
- b: 'original',
367
- c: 'original'
368
- }]
369
- };
370
- const valueTo = {
371
- arrayField: [{
372
- a: 'changed',
373
- b: 'changed',
374
- c: 'original'
375
- }]
376
- };
377
- const result = countChangedFields({
378
- valueFrom,
379
- fields,
380
- valueTo,
381
- locales
382
- });
383
- expect(result).toBe(2);
384
- });
385
- it('should count changed fields inside blocks fields', () => {
386
- const fields = [{
387
- name: 'blocks',
388
- type: 'blocks',
389
- blocks: [{
390
- slug: 'blockA',
391
- fields: [{
392
- name: 'a',
393
- type: 'text'
394
- }, {
395
- name: 'b',
396
- type: 'text'
397
- }, {
398
- name: 'c',
399
- type: 'text'
400
- }]
401
- }]
402
- }];
403
- const valueFrom = {
404
- blocks: [{
405
- blockType: 'blockA',
406
- a: 'original',
407
- b: 'original',
408
- c: 'original'
409
- }, {
410
- blockType: 'blockA',
411
- a: 'original',
412
- b: 'original'
413
- }]
414
- };
415
- const valueTo = {
416
- blocks: [{
417
- blockType: 'blockA',
418
- a: 'changed',
419
- b: 'changed',
420
- c: 'original'
421
- }, {
422
- blockType: 'blockA',
423
- a: 'changed',
424
- b: 'changed',
425
- c: 'changed'
426
- }]
427
- };
428
- const result = countChangedFields({
429
- valueFrom,
430
- fields,
431
- valueTo,
432
- locales
433
- });
434
- expect(result).toBe(5);
435
- });
436
- it('should count source and replacement fields between blocks with different slugs', () => {
437
- const fields = [{
438
- name: 'blocks',
439
- type: 'blocks',
440
- blocks: [{
441
- slug: 'blockA',
442
- fields: [{
443
- name: 'a',
444
- type: 'text'
445
- }, {
446
- name: 'b',
447
- type: 'text'
448
- }, {
449
- name: 'c',
450
- type: 'text'
451
- }]
452
- }, {
453
- slug: 'blockB',
454
- fields: [{
455
- name: 'b',
456
- type: 'text'
457
- }, {
458
- name: 'c',
459
- type: 'text'
460
- }, {
461
- name: 'd',
462
- type: 'text'
463
- }]
464
- }]
465
- }];
466
- const valueFrom = {
467
- blocks: [{
468
- blockType: 'blockA',
469
- a: 'removed',
470
- b: 'original',
471
- c: 'original'
472
- }]
473
- };
474
- const valueTo = {
475
- blocks: [{
476
- blockType: 'blockB',
477
- b: 'original',
478
- c: 'changed',
479
- d: 'new'
480
- }]
481
- };
482
- const result = countChangedFields({
483
- valueFrom,
484
- fields,
485
- valueTo,
486
- locales
487
- });
488
- expect(result).toBe(6);
489
- });
490
- describe('localized fields', () => {
491
- const locales = ['en', 'de'];
492
- it('should count simple localized fields', () => {
493
- const fields = [{
494
- name: 'a',
495
- type: 'text',
496
- localized: true
497
- }, {
498
- name: 'b',
499
- type: 'text',
500
- localized: true
501
- }];
502
- const valueFrom = {
503
- a: {
504
- en: 'original',
505
- de: 'original'
506
- },
507
- b: {
508
- en: 'original',
509
- de: 'original'
510
- }
511
- };
512
- const valueTo = {
513
- a: {
514
- en: 'changed',
515
- de: 'original'
516
- },
517
- b: {
518
- en: 'original',
519
- de: 'original'
520
- }
521
- };
522
- const result = countChangedFields({
523
- valueFrom,
524
- fields,
525
- valueTo,
526
- locales
527
- });
528
- expect(result).toBe(1);
529
- });
530
- it('should count multiple locales of the same localized field', () => {
531
- const locales = ['en', 'de'];
532
- const fields = [{
533
- name: 'a',
534
- type: 'text',
535
- localized: true
536
- }, {
537
- name: 'b',
538
- type: 'text',
539
- localized: true
540
- }];
541
- const valueFrom = {
542
- a: {
543
- en: 'original',
544
- de: 'original'
545
- },
546
- b: {
547
- en: 'original',
548
- de: 'original'
549
- }
550
- };
551
- const valueTo = {
552
- a: {
553
- en: 'changed',
554
- de: 'changed'
555
- },
556
- b: {
557
- en: 'original',
558
- de: 'original'
559
- }
560
- };
561
- const result = countChangedFields({
562
- valueFrom,
563
- fields,
564
- valueTo,
565
- locales
566
- });
567
- expect(result).toBe(2);
568
- });
569
- it('should count changed fields inside localized groups fields', () => {
570
- const fields = [{
571
- type: 'group',
572
- name: 'group',
573
- localized: true,
574
- fields: [{
575
- name: 'a',
576
- type: 'text'
577
- }, {
578
- name: 'b',
579
- type: 'text'
580
- }, {
581
- name: 'c',
582
- type: 'text'
583
- }]
584
- }];
585
- const valueFrom = {
586
- group: {
587
- en: {
588
- a: 'original',
589
- b: 'original',
590
- c: 'original'
591
- },
592
- de: {
593
- a: 'original',
594
- b: 'original',
595
- c: 'original'
596
- }
597
- }
598
- };
599
- const valueTo = {
600
- group: {
601
- en: {
602
- a: 'changed',
603
- b: 'changed',
604
- c: 'original'
605
- },
606
- de: {
607
- a: 'original',
608
- b: 'changed',
609
- c: 'original'
610
- }
611
- }
612
- };
613
- const result = countChangedFields({
614
- valueFrom,
615
- fields,
616
- valueTo,
617
- locales
618
- });
619
- expect(result).toBe(3);
620
- });
621
- it('should count changed fields inside localized tabs', () => {
622
- const fields = [{
623
- type: 'tabs',
624
- tabs: [{
625
- name: 'tab',
626
- localized: true,
627
- fields: [{
628
- name: 'a',
629
- type: 'text'
630
- }, {
631
- name: 'b',
632
- type: 'text'
633
- }, {
634
- name: 'c',
635
- type: 'text'
636
- }]
637
- }]
638
- }];
639
- const valueFrom = {
640
- tab: {
641
- en: {
642
- a: 'original',
643
- b: 'original',
644
- c: 'original'
645
- },
646
- de: {
647
- a: 'original',
648
- b: 'original',
649
- c: 'original'
650
- }
651
- }
652
- };
653
- const valueTo = {
654
- tab: {
655
- en: {
656
- a: 'changed',
657
- b: 'changed',
658
- c: 'original'
659
- },
660
- de: {
661
- a: 'original',
662
- b: 'changed',
663
- c: 'original'
664
- }
665
- }
666
- };
667
- const result = countChangedFields({
668
- valueFrom,
669
- fields,
670
- valueTo,
671
- locales
672
- });
673
- expect(result).toBe(3);
674
- });
675
- it('should count changed fields inside localized array fields', () => {
676
- const fields = [{
677
- name: 'arrayField',
678
- type: 'array',
679
- localized: true,
680
- fields: [{
681
- name: 'a',
682
- type: 'text'
683
- }, {
684
- name: 'b',
685
- type: 'text'
686
- }, {
687
- name: 'c',
688
- type: 'text'
689
- }]
690
- }];
691
- const valueFrom = {
692
- arrayField: {
693
- en: [{
694
- a: 'original',
695
- b: 'original',
696
- c: 'original'
697
- }],
698
- de: [{
699
- a: 'original',
700
- b: 'original',
701
- c: 'original'
702
- }]
703
- }
704
- };
705
- const valueTo = {
706
- arrayField: {
707
- en: [{
708
- a: 'changed',
709
- b: 'changed',
710
- c: 'original'
711
- }],
712
- de: [{
713
- a: 'original',
714
- b: 'changed',
715
- c: 'original'
716
- }]
717
- }
718
- };
719
- const result = countChangedFields({
720
- valueFrom,
721
- fields,
722
- valueTo,
723
- locales
724
- });
725
- expect(result).toBe(3);
726
- });
727
- it('should count changed fields inside localized blocks fields', () => {
728
- const fields = [{
729
- name: 'blocks',
730
- type: 'blocks',
731
- localized: true,
732
- blocks: [{
733
- slug: 'blockA',
734
- fields: [{
735
- name: 'a',
736
- type: 'text'
737
- }, {
738
- name: 'b',
739
- type: 'text'
740
- }, {
741
- name: 'c',
742
- type: 'text'
743
- }]
744
- }]
745
- }];
746
- const valueFrom = {
747
- blocks: {
748
- en: [{
749
- blockType: 'blockA',
750
- a: 'original',
751
- b: 'original',
752
- c: 'original'
753
- }],
754
- de: [{
755
- blockType: 'blockA',
756
- a: 'original',
757
- b: 'original',
758
- c: 'original'
759
- }]
760
- }
761
- };
762
- const valueTo = {
763
- blocks: {
764
- en: [{
765
- blockType: 'blockA',
766
- a: 'changed',
767
- b: 'changed',
768
- c: 'original'
769
- }],
770
- de: [{
771
- blockType: 'blockA',
772
- a: 'original',
773
- b: 'changed',
774
- c: 'original'
775
- }]
776
- }
777
- };
778
- const result = countChangedFields({
779
- valueFrom,
780
- fields,
781
- valueTo,
782
- locales
783
- });
784
- expect(result).toBe(3);
785
- });
786
- });
787
- });
788
- describe('countChangedFieldsInRows', () => {
789
- it('should count fields in array rows', () => {
790
- const field = {
791
- name: 'myArray',
792
- type: 'array',
793
- fields: [{
794
- name: 'a',
795
- type: 'text'
796
- }, {
797
- name: 'b',
798
- type: 'text'
799
- }, {
800
- name: 'c',
801
- type: 'text'
802
- }]
803
- };
804
- const valueFromRows = [{
805
- a: 'original',
806
- b: 'original',
807
- c: 'original'
808
- }];
809
- const valueToRows = [{
810
- a: 'changed',
811
- b: 'changed',
812
- c: 'original'
813
- }];
814
- const result = countChangedFieldsInRows({
815
- valueFromRows,
816
- field,
817
- locales: undefined,
818
- valueToRows: valueToRows
819
- });
820
- expect(result).toBe(2);
821
- });
822
- it('should count fields in blocks', () => {
823
- const field = {
824
- name: 'myBlocks',
825
- type: 'blocks',
826
- blocks: [{
827
- slug: 'blockA',
828
- fields: [{
829
- name: 'a',
830
- type: 'text'
831
- }, {
832
- name: 'b',
833
- type: 'text'
834
- }, {
835
- name: 'c',
836
- type: 'text'
837
- }]
838
- }]
839
- };
840
- const valueFromRows = [{
841
- blockType: 'blockA',
842
- a: 'original',
843
- b: 'original',
844
- c: 'original'
845
- }];
846
- const valueToRows = [{
847
- blockType: 'blockA',
848
- a: 'changed',
849
- b: 'changed',
850
- c: 'original'
851
- }];
852
- const result = countChangedFieldsInRows({
853
- valueFromRows,
854
- field,
855
- locales: undefined,
856
- valueToRows
857
- });
858
- expect(result).toBe(2);
859
- });
860
- it('should count source and replacement block fields separately', () => {
861
- const field = {
862
- name: 'myBlocks',
863
- type: 'blocks',
864
- blocks: [{
865
- slug: 'source',
866
- fields: [{
867
- type: 'row',
868
- fields: [{
869
- name: 'sourceRow',
870
- type: 'text'
871
- }]
872
- }, {
873
- type: 'collapsible',
874
- label: 'Source details',
875
- fields: [{
876
- name: 'sourceDetails',
877
- type: 'text'
878
- }]
879
- }]
880
- }, {
881
- slug: 'replacement',
882
- fields: [{
883
- type: 'row',
884
- fields: [{
885
- name: 'replacementRow',
886
- type: 'text'
887
- }]
888
- }, {
889
- type: 'collapsible',
890
- label: 'Replacement details',
891
- fields: [{
892
- name: 'replacementDetails',
893
- type: 'text'
894
- }]
895
- }]
896
- }]
897
- };
898
- const result = countChangedFieldsInRows({
899
- field,
900
- locales: undefined,
901
- valueFromRows: [{
902
- blockType: 'source',
903
- sourceDetails: 'original details',
904
- sourceRow: 'original row'
905
- }],
906
- valueToRows: [{
907
- blockType: 'replacement',
908
- replacementDetails: 'replacement details',
909
- replacementRow: 'replacement row'
910
- }]
911
- });
912
- expect(result).toBe(4);
913
- });
914
- });
915
- //# sourceMappingURL=countChangedFields.spec.js.map