diff --git a/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx b/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx
index 5fb5bf4ee7..6d30bd447a 100644
--- a/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx
+++ b/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx
@@ -103,7 +103,32 @@ const ListPage = () => {
}
};
- const confirmDelete = async () => {
+ const deleteWebhook = async (id: string) => {
+ try {
+ const res = await deleteManyWebhooks({
+ ids: [id],
+ });
+
+ if ('error' in res) {
+ toggleNotification({
+ type: 'danger',
+ message: formatAPIError(res.error),
+ });
+
+ return;
+ }
+ } catch {
+ toggleNotification({
+ type: 'danger',
+ message: formatMessage({
+ id: 'notification.error',
+ defaultMessage: 'An error occurred',
+ }),
+ });
+ }
+ };
+
+ const confirmBulkDelete = async () => {
try {
const res = await deleteManyWebhooks({
ids: webhooksToDelete,
@@ -349,20 +374,11 @@ const ListPage = () => {
)}
{canDelete && (
- {
- e.stopPropagation();
- setWebhooksToDelete([webhook.id]);
- setShowModal(true);
+ {
+ deleteWebhook(webhook.id);
}}
- label={formatMessage({
- id: 'Settings.webhooks.events.delete',
- defaultMessage: 'Delete webhook',
- })}
- borderWidth={0}
- >
-
-
+ />
)}
@@ -392,12 +408,52 @@ const ListPage = () => {
-
+
);
};
+/* -------------------------------------------------------------------------------------------------
+ * DeleteActionButton
+ * -----------------------------------------------------------------------------------------------*/
+
+type DeleteActionButtonProps = {
+ onDelete: () => void;
+};
+
+const DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => {
+ const [showModal, setShowModal] = React.useState(false);
+ const { formatMessage } = useIntl();
+
+ return (
+ <>
+ {
+ e.stopPropagation();
+ setShowModal(true);
+ }}
+ label={formatMessage({
+ id: 'Settings.webhooks.events.delete',
+ defaultMessage: 'Delete webhook',
+ })}
+ borderWidth={0}
+ >
+
+
+
+
+ {
+ e?.stopPropagation();
+ onDelete();
+ }}
+ />
+
+ >
+ );
+};
+
/* -------------------------------------------------------------------------------------------------
* ProtectedListView
* -----------------------------------------------------------------------------------------------*/
diff --git a/packages/core/strapi/src/node/create-build-context.ts b/packages/core/strapi/src/node/create-build-context.ts
index bbdc4a4cd9..898307dfa3 100644
--- a/packages/core/strapi/src/node/create-build-context.ts
+++ b/packages/core/strapi/src/node/create-build-context.ts
@@ -131,7 +131,7 @@ const createBuildContext = async ({
const features = strapiInstance.config.get('features', undefined);
- const { bundler = 'webpack', ...restOptions } = options;
+ const { bundler = 'vite', ...restOptions } = options;
const buildContext = {
appDir,