@wordpress/fields 0.0.7 → 0.2.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 +4 -0
- package/README.md +20 -0
- package/build/actions/delete-post.js +130 -0
- package/build/actions/delete-post.js.map +1 -0
- package/build/actions/{pattern/duplicate-pattern.js → duplicate-pattern.js} +1 -1
- package/build/actions/duplicate-pattern.js.map +1 -0
- package/build/actions/{base-post/duplicate-post.js → duplicate-post.js} +3 -3
- package/build/actions/duplicate-post.js.map +1 -0
- package/build/actions/duplicate-post.native.js.map +1 -0
- package/build/actions/{pattern/export-pattern.js → export-pattern.js} +1 -1
- package/build/actions/export-pattern.js.map +1 -0
- package/build/actions/export-pattern.native.js.map +1 -0
- package/build/actions/index.js +105 -32
- package/build/actions/index.js.map +1 -1
- package/build/actions/{common/permanently-delete-post.js → permanently-delete-post.js} +5 -4
- package/build/actions/permanently-delete-post.js.map +1 -0
- package/build/actions/rename-post.js +124 -0
- package/build/actions/rename-post.js.map +1 -0
- package/build/actions/{base-post/reorder-page.js → reorder-page.js} +1 -1
- package/build/actions/reorder-page.js.map +1 -0
- package/build/actions/reorder-page.native.js.map +1 -0
- package/build/actions/reset-post.js +206 -0
- package/build/actions/reset-post.js.map +1 -0
- package/build/actions/restore-post.js +113 -0
- package/build/actions/restore-post.js.map +1 -0
- package/build/actions/trash-post.js +145 -0
- package/build/actions/trash-post.js.map +1 -0
- package/build/actions/{common/view-post-revisions.js → view-post-revisions.js} +1 -1
- package/build/actions/view-post-revisions.js.map +1 -0
- package/build/actions/view-post.js.map +1 -0
- package/build/index.native.js +2 -2
- package/build/index.native.js.map +1 -1
- package/build/mutation/index.js +140 -0
- package/build/mutation/index.js.map +1 -0
- package/build/types.js.map +1 -1
- package/build-module/actions/delete-post.js +122 -0
- package/build-module/actions/delete-post.js.map +1 -0
- package/build-module/actions/{pattern/duplicate-pattern.js → duplicate-pattern.js} +1 -1
- package/build-module/actions/duplicate-pattern.js.map +1 -0
- package/build-module/actions/{base-post/duplicate-post.js → duplicate-post.js} +4 -5
- package/build-module/actions/duplicate-post.js.map +1 -0
- package/build-module/actions/duplicate-post.native.js.map +1 -0
- package/build-module/actions/{pattern/export-pattern.js → export-pattern.js} +1 -1
- package/build-module/actions/export-pattern.js.map +1 -0
- package/build-module/actions/export-pattern.native.js.map +1 -0
- package/build-module/actions/index.js +15 -3
- package/build-module/actions/index.js.map +1 -1
- package/build-module/actions/{common/permanently-delete-post.js → permanently-delete-post.js} +5 -4
- package/build-module/actions/permanently-delete-post.js.map +1 -0
- package/build-module/actions/rename-post.js +117 -0
- package/build-module/actions/rename-post.js.map +1 -0
- package/build-module/actions/{base-post/reorder-page.js → reorder-page.js} +2 -3
- package/build-module/actions/reorder-page.js.map +1 -0
- package/build-module/actions/reorder-page.native.js.map +1 -0
- package/build-module/actions/reset-post.js +197 -0
- package/build-module/actions/reset-post.js.map +1 -0
- package/build-module/actions/restore-post.js +105 -0
- package/build-module/actions/restore-post.js.map +1 -0
- package/build-module/actions/trash-post.js +137 -0
- package/build-module/actions/trash-post.js.map +1 -0
- package/build-module/actions/{common/view-post-revisions.js → view-post-revisions.js} +1 -1
- package/build-module/actions/view-post-revisions.js.map +1 -0
- package/build-module/actions/view-post.js.map +1 -0
- package/build-module/index.native.js +2 -2
- package/build-module/index.native.js.map +1 -1
- package/build-module/mutation/index.js +132 -0
- package/build-module/mutation/index.js.map +1 -0
- package/build-module/types.js.map +1 -1
- package/build-types/actions/delete-post.d.ts +5 -0
- package/build-types/actions/delete-post.d.ts.map +1 -0
- package/build-types/actions/{pattern/duplicate-pattern.d.ts → duplicate-pattern.d.ts} +1 -1
- package/build-types/actions/duplicate-pattern.d.ts.map +1 -0
- package/build-types/actions/{base-post/duplicate-post.d.ts → duplicate-post.d.ts} +1 -1
- package/build-types/actions/duplicate-post.d.ts.map +1 -0
- package/build-types/actions/duplicate-post.native.d.ts.map +1 -0
- package/build-types/actions/{pattern/export-pattern.d.ts → export-pattern.d.ts} +1 -1
- package/build-types/actions/export-pattern.d.ts.map +1 -0
- package/build-types/actions/export-pattern.native.d.ts.map +1 -0
- package/build-types/actions/index.d.ts +15 -3
- package/build-types/actions/index.d.ts.map +1 -1
- package/build-types/actions/{common/permanently-delete-post.d.ts → permanently-delete-post.d.ts} +1 -1
- package/build-types/actions/permanently-delete-post.d.ts.map +1 -0
- package/build-types/actions/rename-post.d.ts +5 -0
- package/build-types/actions/rename-post.d.ts.map +1 -0
- package/build-types/actions/{base-post/reorder-page.d.ts → reorder-page.d.ts} +1 -1
- package/build-types/actions/reorder-page.d.ts.map +1 -0
- package/build-types/actions/reorder-page.native.d.ts.map +1 -0
- package/build-types/actions/reset-post.d.ts +5 -0
- package/build-types/actions/reset-post.d.ts.map +1 -0
- package/build-types/actions/restore-post.d.ts +5 -0
- package/build-types/actions/restore-post.d.ts.map +1 -0
- package/build-types/actions/trash-post.d.ts +5 -0
- package/build-types/actions/trash-post.d.ts.map +1 -0
- package/build-types/actions/{common/view-post-revisions.d.ts → view-post-revisions.d.ts} +1 -1
- package/build-types/actions/view-post-revisions.d.ts.map +1 -0
- package/build-types/actions/{base-post/view-post.d.ts → view-post.d.ts} +1 -1
- package/build-types/actions/view-post.d.ts.map +1 -0
- package/build-types/index.native.d.ts +2 -2
- package/build-types/index.native.d.ts.map +1 -1
- package/build-types/mutation/index.d.ts +34 -0
- package/build-types/mutation/index.d.ts.map +1 -0
- package/build-types/types.d.ts +1 -0
- package/build-types/types.d.ts.map +1 -1
- package/package.json +22 -21
- package/src/actions/delete-post.tsx +203 -0
- package/src/actions/{pattern/duplicate-pattern.tsx → duplicate-pattern.tsx} +2 -2
- package/src/actions/{base-post/duplicate-post.tsx → duplicate-post.tsx} +3 -3
- package/src/actions/{pattern/export-pattern.tsx → export-pattern.tsx} +2 -2
- package/src/actions/index.ts +15 -3
- package/src/actions/{common/permanently-delete-post.tsx → permanently-delete-post.tsx} +2 -2
- package/src/actions/rename-post.tsx +145 -0
- package/src/actions/{base-post/reorder-page.tsx → reorder-page.tsx} +2 -2
- package/src/actions/reset-post.tsx +300 -0
- package/src/actions/restore-post.tsx +134 -0
- package/src/actions/trash-post.tsx +198 -0
- package/src/actions/{common/view-post-revisions.tsx → view-post-revisions.tsx} +1 -1
- package/src/actions/{base-post/view-post.tsx → view-post.tsx} +1 -1
- package/src/index.native.ts +2 -2
- package/src/mutation/index.ts +184 -0
- package/src/types.ts +1 -0
- package/tsconfig.json +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build/actions/base-post/duplicate-post.js.map +0 -1
- package/build/actions/base-post/duplicate-post.native.js.map +0 -1
- package/build/actions/base-post/index.js +0 -42
- package/build/actions/base-post/index.js.map +0 -1
- package/build/actions/base-post/reorder-page.js.map +0 -1
- package/build/actions/base-post/reorder-page.native.js.map +0 -1
- package/build/actions/base-post/view-post.js.map +0 -1
- package/build/actions/common/index.js +0 -21
- package/build/actions/common/index.js.map +0 -1
- package/build/actions/common/permanently-delete-post.js.map +0 -1
- package/build/actions/common/view-post-revisions.js.map +0 -1
- package/build/actions/pattern/duplicate-pattern.js.map +0 -1
- package/build/actions/pattern/export-pattern.js.map +0 -1
- package/build/actions/pattern/export-pattern.native.js.map +0 -1
- package/build/actions/pattern/index.js +0 -28
- package/build/actions/pattern/index.js.map +0 -1
- package/build/wordpress-editor.d.js +0 -2
- package/build/wordpress-editor.d.js.map +0 -1
- package/build-module/actions/base-post/duplicate-post.js.map +0 -1
- package/build-module/actions/base-post/duplicate-post.native.js.map +0 -1
- package/build-module/actions/base-post/index.js +0 -6
- package/build-module/actions/base-post/index.js.map +0 -1
- package/build-module/actions/base-post/reorder-page.js.map +0 -1
- package/build-module/actions/base-post/reorder-page.native.js.map +0 -1
- package/build-module/actions/base-post/view-post.js.map +0 -1
- package/build-module/actions/common/index.js +0 -3
- package/build-module/actions/common/index.js.map +0 -1
- package/build-module/actions/common/permanently-delete-post.js.map +0 -1
- package/build-module/actions/common/view-post-revisions.js.map +0 -1
- package/build-module/actions/pattern/duplicate-pattern.js.map +0 -1
- package/build-module/actions/pattern/export-pattern.js.map +0 -1
- package/build-module/actions/pattern/export-pattern.native.js.map +0 -1
- package/build-module/actions/pattern/index.js +0 -4
- package/build-module/actions/pattern/index.js.map +0 -1
- package/build-module/wordpress-editor.d.js +0 -2
- package/build-module/wordpress-editor.d.js.map +0 -1
- package/build-types/actions/base-post/duplicate-post.d.ts.map +0 -1
- package/build-types/actions/base-post/duplicate-post.native.d.ts.map +0 -1
- package/build-types/actions/base-post/index.d.ts +0 -6
- package/build-types/actions/base-post/index.d.ts.map +0 -1
- package/build-types/actions/base-post/reorder-page.d.ts.map +0 -1
- package/build-types/actions/base-post/reorder-page.native.d.ts.map +0 -1
- package/build-types/actions/base-post/view-post.d.ts.map +0 -1
- package/build-types/actions/common/index.d.ts +0 -3
- package/build-types/actions/common/index.d.ts.map +0 -1
- package/build-types/actions/common/permanently-delete-post.d.ts.map +0 -1
- package/build-types/actions/common/view-post-revisions.d.ts.map +0 -1
- package/build-types/actions/pattern/duplicate-pattern.d.ts.map +0 -1
- package/build-types/actions/pattern/export-pattern.d.ts.map +0 -1
- package/build-types/actions/pattern/export-pattern.native.d.ts.map +0 -1
- package/build-types/actions/pattern/index.d.ts +0 -4
- package/build-types/actions/pattern/index.d.ts.map +0 -1
- package/src/actions/base-post/index.ts +0 -5
- package/src/actions/common/index.ts +0 -2
- package/src/actions/pattern/index.ts +0 -3
- package/src/wordpress-editor.d.ts +0 -1
- /package/build/actions/{base-post/duplicate-post.native.js → duplicate-post.native.js} +0 -0
- /package/build/actions/{pattern/export-pattern.native.js → export-pattern.native.js} +0 -0
- /package/build/actions/{base-post/reorder-page.native.js → reorder-page.native.js} +0 -0
- /package/build/actions/{base-post/view-post.js → view-post.js} +0 -0
- /package/build-module/actions/{base-post/duplicate-post.native.js → duplicate-post.native.js} +0 -0
- /package/build-module/actions/{pattern/export-pattern.native.js → export-pattern.native.js} +0 -0
- /package/build-module/actions/{base-post/reorder-page.native.js → reorder-page.native.js} +0 -0
- /package/build-module/actions/{base-post/view-post.js → view-post.js} +0 -0
- /package/build-types/actions/{base-post/duplicate-post.native.d.ts → duplicate-post.native.d.ts} +0 -0
- /package/build-types/actions/{pattern/export-pattern.native.d.ts → export-pattern.native.d.ts} +0 -0
- /package/build-types/actions/{base-post/reorder-page.native.d.ts → reorder-page.native.d.ts} +0 -0
- /package/src/actions/{base-post/duplicate-post.native.tsx → duplicate-post.native.tsx} +0 -0
- /package/src/actions/{pattern/export-pattern.native.tsx → export-pattern.native.tsx} +0 -0
- /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
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
|
}
|