@wordpress/fields 0.0.4 → 0.1.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 (192) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +20 -0
  3. package/build/actions/delete-post.js +130 -0
  4. package/build/actions/delete-post.js.map +1 -0
  5. package/build/actions/{pattern/duplicate-pattern.js → duplicate-pattern.js} +1 -1
  6. package/build/actions/duplicate-pattern.js.map +1 -0
  7. package/build/actions/{base-post/duplicate-post.js → duplicate-post.js} +2 -2
  8. package/build/actions/duplicate-post.js.map +1 -0
  9. package/build/actions/duplicate-post.native.js.map +1 -0
  10. package/build/actions/{pattern/export-pattern.js → export-pattern.js} +1 -1
  11. package/build/actions/export-pattern.js.map +1 -0
  12. package/build/actions/export-pattern.native.js.map +1 -0
  13. package/build/actions/index.js +105 -32
  14. package/build/actions/index.js.map +1 -1
  15. package/build/actions/{common/permanently-delete-post.js → permanently-delete-post.js} +1 -1
  16. package/build/actions/permanently-delete-post.js.map +1 -0
  17. package/build/actions/rename-post.js +124 -0
  18. package/build/actions/rename-post.js.map +1 -0
  19. package/build/actions/{base-post/reorder-page.js → reorder-page.js} +1 -1
  20. package/build/actions/reorder-page.js.map +1 -0
  21. package/build/actions/reorder-page.native.js.map +1 -0
  22. package/build/actions/reset-post.js +206 -0
  23. package/build/actions/reset-post.js.map +1 -0
  24. package/build/actions/restore-post.js +112 -0
  25. package/build/actions/restore-post.js.map +1 -0
  26. package/build/actions/trash-post.js +144 -0
  27. package/build/actions/trash-post.js.map +1 -0
  28. package/build/actions/view-post-revisions.js.map +1 -0
  29. package/build/actions/view-post.js.map +1 -0
  30. package/build/index.native.js +2 -2
  31. package/build/index.native.js.map +1 -1
  32. package/build/mutation/index.js +139 -0
  33. package/build/mutation/index.js.map +1 -0
  34. package/build/types.js.map +1 -1
  35. package/build-module/actions/delete-post.js +123 -0
  36. package/build-module/actions/delete-post.js.map +1 -0
  37. package/build-module/actions/{pattern/duplicate-pattern.js → duplicate-pattern.js} +1 -1
  38. package/build-module/actions/duplicate-pattern.js.map +1 -0
  39. package/build-module/actions/{base-post/duplicate-post.js → duplicate-post.js} +2 -2
  40. package/build-module/actions/duplicate-post.js.map +1 -0
  41. package/build-module/actions/duplicate-post.native.js.map +1 -0
  42. package/build-module/actions/{pattern/export-pattern.js → export-pattern.js} +1 -1
  43. package/build-module/actions/export-pattern.js.map +1 -0
  44. package/build-module/actions/export-pattern.native.js.map +1 -0
  45. package/build-module/actions/index.js +15 -3
  46. package/build-module/actions/index.js.map +1 -1
  47. package/build-module/actions/{common/permanently-delete-post.js → permanently-delete-post.js} +1 -1
  48. package/build-module/actions/permanently-delete-post.js.map +1 -0
  49. package/build-module/actions/rename-post.js +118 -0
  50. package/build-module/actions/rename-post.js.map +1 -0
  51. package/build-module/actions/{base-post/reorder-page.js → reorder-page.js} +1 -1
  52. package/build-module/actions/reorder-page.js.map +1 -0
  53. package/build-module/actions/reorder-page.native.js.map +1 -0
  54. package/build-module/actions/reset-post.js +198 -0
  55. package/build-module/actions/reset-post.js.map +1 -0
  56. package/build-module/actions/restore-post.js +104 -0
  57. package/build-module/actions/restore-post.js.map +1 -0
  58. package/build-module/actions/trash-post.js +137 -0
  59. package/build-module/actions/trash-post.js.map +1 -0
  60. package/build-module/actions/view-post-revisions.js.map +1 -0
  61. package/build-module/actions/view-post.js.map +1 -0
  62. package/build-module/index.native.js +2 -2
  63. package/build-module/index.native.js.map +1 -1
  64. package/build-module/mutation/index.js +131 -0
  65. package/build-module/mutation/index.js.map +1 -0
  66. package/build-module/types.js.map +1 -1
  67. package/build-types/actions/delete-post.d.ts +5 -0
  68. package/build-types/actions/delete-post.d.ts.map +1 -0
  69. package/build-types/actions/{pattern/duplicate-pattern.d.ts → duplicate-pattern.d.ts} +1 -1
  70. package/build-types/actions/duplicate-pattern.d.ts.map +1 -0
  71. package/build-types/actions/{base-post/duplicate-post.d.ts → duplicate-post.d.ts} +1 -1
  72. package/build-types/actions/duplicate-post.d.ts.map +1 -0
  73. package/build-types/actions/duplicate-post.native.d.ts.map +1 -0
  74. package/build-types/actions/{pattern/export-pattern.d.ts → export-pattern.d.ts} +1 -1
  75. package/build-types/actions/export-pattern.d.ts.map +1 -0
  76. package/build-types/actions/export-pattern.native.d.ts.map +1 -0
  77. package/build-types/actions/index.d.ts +15 -3
  78. package/build-types/actions/index.d.ts.map +1 -1
  79. package/build-types/actions/{common/permanently-delete-post.d.ts → permanently-delete-post.d.ts} +1 -1
  80. package/build-types/actions/permanently-delete-post.d.ts.map +1 -0
  81. package/build-types/actions/rename-post.d.ts +5 -0
  82. package/build-types/actions/rename-post.d.ts.map +1 -0
  83. package/build-types/actions/{base-post/reorder-page.d.ts → reorder-page.d.ts} +1 -1
  84. package/build-types/actions/reorder-page.d.ts.map +1 -0
  85. package/build-types/actions/reorder-page.native.d.ts.map +1 -0
  86. package/build-types/actions/reset-post.d.ts +5 -0
  87. package/build-types/actions/reset-post.d.ts.map +1 -0
  88. package/build-types/actions/restore-post.d.ts +5 -0
  89. package/build-types/actions/restore-post.d.ts.map +1 -0
  90. package/build-types/actions/trash-post.d.ts +5 -0
  91. package/build-types/actions/trash-post.d.ts.map +1 -0
  92. package/build-types/actions/{common/view-post-revisions.d.ts → view-post-revisions.d.ts} +1 -1
  93. package/build-types/actions/view-post-revisions.d.ts.map +1 -0
  94. package/build-types/actions/{base-post/view-post.d.ts → view-post.d.ts} +1 -1
  95. package/build-types/actions/view-post.d.ts.map +1 -0
  96. package/build-types/index.native.d.ts +2 -2
  97. package/build-types/index.native.d.ts.map +1 -1
  98. package/build-types/mutation/index.d.ts +34 -0
  99. package/build-types/mutation/index.d.ts.map +1 -0
  100. package/build-types/types.d.ts +1 -0
  101. package/build-types/types.d.ts.map +1 -1
  102. package/package.json +21 -20
  103. package/src/actions/delete-post.tsx +203 -0
  104. package/src/actions/{pattern/duplicate-pattern.tsx → duplicate-pattern.tsx} +2 -2
  105. package/src/actions/{base-post/duplicate-post.tsx → duplicate-post.tsx} +3 -3
  106. package/src/actions/{pattern/export-pattern.tsx → export-pattern.tsx} +2 -2
  107. package/src/actions/index.ts +15 -3
  108. package/src/actions/{common/permanently-delete-post.tsx → permanently-delete-post.tsx} +2 -2
  109. package/src/actions/rename-post.tsx +145 -0
  110. package/src/actions/{base-post/reorder-page.tsx → reorder-page.tsx} +2 -2
  111. package/src/actions/reset-post.tsx +300 -0
  112. package/src/actions/restore-post.tsx +134 -0
  113. package/src/actions/trash-post.tsx +198 -0
  114. package/src/actions/{common/view-post-revisions.tsx → view-post-revisions.tsx} +1 -1
  115. package/src/actions/{base-post/view-post.tsx → view-post.tsx} +1 -1
  116. package/src/index.native.ts +2 -2
  117. package/src/mutation/index.ts +184 -0
  118. package/src/types.ts +1 -0
  119. package/tsconfig.json +2 -2
  120. package/tsconfig.tsbuildinfo +1 -1
  121. package/build/actions/base-post/duplicate-post.js.map +0 -1
  122. package/build/actions/base-post/duplicate-post.native.js.map +0 -1
  123. package/build/actions/base-post/index.js +0 -42
  124. package/build/actions/base-post/index.js.map +0 -1
  125. package/build/actions/base-post/reorder-page.js.map +0 -1
  126. package/build/actions/base-post/reorder-page.native.js.map +0 -1
  127. package/build/actions/base-post/view-post.js.map +0 -1
  128. package/build/actions/common/index.js +0 -21
  129. package/build/actions/common/index.js.map +0 -1
  130. package/build/actions/common/permanently-delete-post.js.map +0 -1
  131. package/build/actions/common/view-post-revisions.js.map +0 -1
  132. package/build/actions/pattern/duplicate-pattern.js.map +0 -1
  133. package/build/actions/pattern/export-pattern.js.map +0 -1
  134. package/build/actions/pattern/export-pattern.native.js.map +0 -1
  135. package/build/actions/pattern/index.js +0 -28
  136. package/build/actions/pattern/index.js.map +0 -1
  137. package/build/wordpress-editor.d.js +0 -2
  138. package/build/wordpress-editor.d.js.map +0 -1
  139. package/build-module/actions/base-post/duplicate-post.js.map +0 -1
  140. package/build-module/actions/base-post/duplicate-post.native.js.map +0 -1
  141. package/build-module/actions/base-post/index.js +0 -6
  142. package/build-module/actions/base-post/index.js.map +0 -1
  143. package/build-module/actions/base-post/reorder-page.js.map +0 -1
  144. package/build-module/actions/base-post/reorder-page.native.js.map +0 -1
  145. package/build-module/actions/base-post/view-post.js.map +0 -1
  146. package/build-module/actions/common/index.js +0 -3
  147. package/build-module/actions/common/index.js.map +0 -1
  148. package/build-module/actions/common/permanently-delete-post.js.map +0 -1
  149. package/build-module/actions/common/view-post-revisions.js.map +0 -1
  150. package/build-module/actions/pattern/duplicate-pattern.js.map +0 -1
  151. package/build-module/actions/pattern/export-pattern.js.map +0 -1
  152. package/build-module/actions/pattern/export-pattern.native.js.map +0 -1
  153. package/build-module/actions/pattern/index.js +0 -4
  154. package/build-module/actions/pattern/index.js.map +0 -1
  155. package/build-module/wordpress-editor.d.js +0 -2
  156. package/build-module/wordpress-editor.d.js.map +0 -1
  157. package/build-types/actions/base-post/duplicate-post.d.ts.map +0 -1
  158. package/build-types/actions/base-post/duplicate-post.native.d.ts.map +0 -1
  159. package/build-types/actions/base-post/index.d.ts +0 -6
  160. package/build-types/actions/base-post/index.d.ts.map +0 -1
  161. package/build-types/actions/base-post/reorder-page.d.ts.map +0 -1
  162. package/build-types/actions/base-post/reorder-page.native.d.ts.map +0 -1
  163. package/build-types/actions/base-post/view-post.d.ts.map +0 -1
  164. package/build-types/actions/common/index.d.ts +0 -3
  165. package/build-types/actions/common/index.d.ts.map +0 -1
  166. package/build-types/actions/common/permanently-delete-post.d.ts.map +0 -1
  167. package/build-types/actions/common/view-post-revisions.d.ts.map +0 -1
  168. package/build-types/actions/pattern/duplicate-pattern.d.ts.map +0 -1
  169. package/build-types/actions/pattern/export-pattern.d.ts.map +0 -1
  170. package/build-types/actions/pattern/export-pattern.native.d.ts.map +0 -1
  171. package/build-types/actions/pattern/index.d.ts +0 -4
  172. package/build-types/actions/pattern/index.d.ts.map +0 -1
  173. package/src/actions/base-post/index.ts +0 -5
  174. package/src/actions/common/index.ts +0 -2
  175. package/src/actions/pattern/index.ts +0 -3
  176. package/src/wordpress-editor.d.ts +0 -1
  177. /package/build/actions/{base-post/duplicate-post.native.js → duplicate-post.native.js} +0 -0
  178. /package/build/actions/{pattern/export-pattern.native.js → export-pattern.native.js} +0 -0
  179. /package/build/actions/{base-post/reorder-page.native.js → reorder-page.native.js} +0 -0
  180. /package/build/actions/{common/view-post-revisions.js → view-post-revisions.js} +0 -0
  181. /package/build/actions/{base-post/view-post.js → view-post.js} +0 -0
  182. /package/build-module/actions/{base-post/duplicate-post.native.js → duplicate-post.native.js} +0 -0
  183. /package/build-module/actions/{pattern/export-pattern.native.js → export-pattern.native.js} +0 -0
  184. /package/build-module/actions/{base-post/reorder-page.native.js → reorder-page.native.js} +0 -0
  185. /package/build-module/actions/{common/view-post-revisions.js → view-post-revisions.js} +0 -0
  186. /package/build-module/actions/{base-post/view-post.js → view-post.js} +0 -0
  187. /package/build-types/actions/{base-post/duplicate-post.native.d.ts → duplicate-post.native.d.ts} +0 -0
  188. /package/build-types/actions/{pattern/export-pattern.native.d.ts → export-pattern.native.d.ts} +0 -0
  189. /package/build-types/actions/{base-post/reorder-page.native.d.ts → reorder-page.native.d.ts} +0 -0
  190. /package/src/actions/{base-post/duplicate-post.native.tsx → duplicate-post.native.tsx} +0 -0
  191. /package/src/actions/{pattern/export-pattern.native.tsx → export-pattern.native.tsx} +0 -0
  192. /package/src/actions/{base-post/reorder-page.native.tsx → reorder-page.native.tsx} +0 -0
@@ -0,0 +1,184 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as noticesStore } from '@wordpress/notices';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { dispatch } from '@wordpress/data';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import type { CoreDataError, Post } from '../types';
12
+
13
+ const getErrorMessagesFromPromises = < T >(
14
+ allSettledResults: PromiseSettledResult< T >[]
15
+ ) => {
16
+ const errorMessages = new Set< string >();
17
+ // If there was at lease one failure.
18
+ if ( allSettledResults.length === 1 ) {
19
+ const typedError = allSettledResults[ 0 ] as {
20
+ reason?: CoreDataError;
21
+ };
22
+ if ( typedError.reason?.message ) {
23
+ errorMessages.add( typedError.reason.message );
24
+ }
25
+ } else {
26
+ const failedPromises = allSettledResults.filter(
27
+ ( { status } ) => status === 'rejected'
28
+ );
29
+ for ( const failedPromise of failedPromises ) {
30
+ const typedError = failedPromise as {
31
+ reason?: CoreDataError;
32
+ };
33
+ if ( typedError.reason?.message ) {
34
+ errorMessages.add( typedError.reason.message );
35
+ }
36
+ }
37
+ }
38
+ return errorMessages;
39
+ };
40
+
41
+ export type NoticeSettings< T extends Post > = {
42
+ success: {
43
+ id?: string;
44
+ type?: string;
45
+ messages: {
46
+ getMessage: ( posts: T ) => string;
47
+ getBatchMessage: ( posts: T[] ) => string;
48
+ };
49
+ };
50
+ error: {
51
+ id?: string;
52
+ type?: string;
53
+ messages: {
54
+ getMessage: ( errors: Set< string > ) => string;
55
+ getBatchMessage: ( errors: Set< string > ) => string;
56
+ };
57
+ };
58
+ };
59
+
60
+ export const deletePostWithNotices = async < T extends Post >(
61
+ posts: T[],
62
+ notice: NoticeSettings< T >,
63
+ callbacks: {
64
+ onActionPerformed?: ( posts: T[] ) => void;
65
+ onActionError?: () => void;
66
+ }
67
+ ) => {
68
+ const { createSuccessNotice, createErrorNotice } = dispatch( noticesStore );
69
+ const { deleteEntityRecord } = dispatch( coreStore );
70
+ const allSettledResults = await Promise.allSettled(
71
+ posts.map( ( post ) => {
72
+ return deleteEntityRecord(
73
+ 'postType',
74
+ post.type,
75
+ post.id,
76
+ { force: true },
77
+ { throwOnError: true }
78
+ );
79
+ } )
80
+ );
81
+ // If all the promises were fulfilled with success.
82
+ if ( allSettledResults.every( ( { status } ) => status === 'fulfilled' ) ) {
83
+ let successMessage;
84
+ if ( allSettledResults.length === 1 ) {
85
+ successMessage = notice.success.messages.getMessage( posts[ 0 ] );
86
+ } else {
87
+ successMessage = notice.success.messages.getBatchMessage( posts );
88
+ }
89
+ createSuccessNotice( successMessage, {
90
+ type: notice.success.type ?? 'snackbar',
91
+ id: notice.success.id,
92
+ } );
93
+ callbacks.onActionPerformed?.( posts );
94
+ } else {
95
+ const errorMessages = getErrorMessagesFromPromises( allSettledResults );
96
+ let errorMessage = '';
97
+ if ( allSettledResults.length === 1 ) {
98
+ errorMessage = notice.error.messages.getMessage( errorMessages );
99
+ } else {
100
+ errorMessage =
101
+ notice.error.messages.getBatchMessage( errorMessages );
102
+ }
103
+
104
+ createErrorNotice( errorMessage, {
105
+ type: notice.error.type ?? 'snackbar',
106
+ id: notice.error.id,
107
+ } );
108
+ callbacks.onActionError?.();
109
+ }
110
+ };
111
+
112
+ export const editPostWithNotices = async < T extends Post >(
113
+ postsWithUpdates: {
114
+ originalPost: T;
115
+ changes: Partial< T >;
116
+ }[],
117
+ notice: NoticeSettings< T >,
118
+ callbacks: {
119
+ onActionPerformed?: ( posts: T[] ) => void;
120
+ onActionError?: () => void;
121
+ }
122
+ ) => {
123
+ const { createSuccessNotice, createErrorNotice } = dispatch( noticesStore );
124
+ const { editEntityRecord, saveEditedEntityRecord } = dispatch( coreStore );
125
+ await Promise.allSettled(
126
+ postsWithUpdates.map( ( post ) => {
127
+ return editEntityRecord(
128
+ 'postType',
129
+ post.originalPost.type,
130
+ post.originalPost.id,
131
+ {
132
+ ...post.changes,
133
+ }
134
+ );
135
+ } )
136
+ );
137
+ const allSettledResults = await Promise.allSettled(
138
+ postsWithUpdates.map( ( post ) => {
139
+ return saveEditedEntityRecord(
140
+ 'postType',
141
+ post.originalPost.type,
142
+ post.originalPost.id,
143
+ {
144
+ throwOnError: true,
145
+ }
146
+ );
147
+ } )
148
+ );
149
+ // If all the promises were fulfilled with success.
150
+ if ( allSettledResults.every( ( { status } ) => status === 'fulfilled' ) ) {
151
+ let successMessage;
152
+ if ( allSettledResults.length === 1 ) {
153
+ successMessage = notice.success.messages.getMessage(
154
+ postsWithUpdates[ 0 ].originalPost
155
+ );
156
+ } else {
157
+ successMessage = notice.success.messages.getBatchMessage(
158
+ postsWithUpdates.map( ( post ) => post.originalPost )
159
+ );
160
+ }
161
+ createSuccessNotice( successMessage, {
162
+ type: notice.success.type ?? 'snackbar',
163
+ id: notice.success.id,
164
+ } );
165
+ callbacks.onActionPerformed?.(
166
+ postsWithUpdates.map( ( post ) => post.originalPost )
167
+ );
168
+ } else {
169
+ const errorMessages = getErrorMessagesFromPromises( allSettledResults );
170
+ let errorMessage = '';
171
+ if ( allSettledResults.length === 1 ) {
172
+ errorMessage = notice.error.messages.getMessage( errorMessages );
173
+ } else {
174
+ errorMessage =
175
+ notice.error.messages.getBatchMessage( errorMessages );
176
+ }
177
+
178
+ createErrorNotice( errorMessage, {
179
+ type: notice.error.type ?? 'snackbar',
180
+ id: notice.error.id,
181
+ } );
182
+ callbacks.onActionError?.();
183
+ }
184
+ };
package/src/types.ts CHANGED
@@ -54,6 +54,7 @@ export interface TemplatePart extends CommonPost {
54
54
  has_theme_file: boolean;
55
55
  id: string;
56
56
  area: string;
57
+ plugin?: string;
57
58
  }
58
59
 
59
60
  export interface Pattern extends CommonPost {
package/tsconfig.json CHANGED
@@ -7,6 +7,7 @@
7
7
  "checkJs": false
8
8
  },
9
9
  "references": [
10
+ { "path": "../api-fetch" },
10
11
  { "path": "../components" },
11
12
  { "path": "../compose" },
12
13
  { "path": "../data" },
@@ -24,6 +25,5 @@
24
25
  { "path": "../hooks" },
25
26
  { "path": "../html-entities" }
26
27
  ],
27
- "include": [ "src" ],
28
- "exclude": [ "@wordpress/editor" ]
28
+ "include": [ "src" ]
29
29
  }