@strapi/admin 5.58.0 → 5.59.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/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +57 -12
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +57 -12
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +3 -1
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +3 -1
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +5 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +2 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +7 -6
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +7 -6
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +2 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +6 -12
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +7 -13
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +3 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +3 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +2 -1
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +2 -1
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +18 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.js +1 -1
- package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
- package/dist/admin/admin/src/utils/cookies.js +7 -6
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs +7 -6
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +2 -1
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +2 -1
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/admin/shared/utils/get-project-type.js +3 -3
- package/dist/admin/shared/utils/get-project-type.js.map +1 -1
- package/dist/admin/shared/utils/get-project-type.mjs +3 -3
- package/dist/admin/shared/utils/get-project-type.mjs.map +1 -1
- package/dist/admin/src/components/Filters.d.ts +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
- package/dist/admin/src/utils/cookies.d.ts +7 -6
- package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/role.js +4 -2
- package/dist/server/ee/server/src/validation/role.js.map +1 -1
- package/dist/server/ee/server/src/validation/role.mjs +4 -2
- package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +11 -12
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +11 -12
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +4 -8
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +4 -8
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js +4 -0
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs +4 -0
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +8 -5
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +8 -5
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/validation/admin-tokens.js +4 -4
- package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
- package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
- package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/api-tokens.js +4 -4
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs +4 -4
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +6 -4
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +6 -4
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/validation/transfer/token.js +4 -4
- package/dist/server/server/src/validation/transfer/token.js.map +1 -1
- package/dist/server/server/src/validation/transfer/token.mjs +4 -4
- package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.js +13 -10
- package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/server/shared/utils/get-project-type.js +3 -3
- package/dist/server/shared/utils/get-project-type.js.map +1 -1
- package/dist/server/shared/utils/get-project-type.mjs +3 -3
- package/dist/server/shared/utils/get-project-type.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +70 -3
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +70 -4
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +2 -0
- package/dist/server/src/services/constants.d.ts.map +1 -1
- package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/shared/contracts/transfer.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
- package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +16 -0
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -38,8 +38,22 @@ const HeadersInput = ()=>{
|
|
|
38
38
|
const removeFieldRow = Form.useForm('HeadersInput', (state)=>state.removeFieldRow);
|
|
39
39
|
const setFieldValue = Form.useForm('HeadersInput', (state)=>state.onChange);
|
|
40
40
|
const { value = [] } = Form.useField('headers');
|
|
41
|
+
const rowKeyPrefix = React__namespace.useId();
|
|
42
|
+
const nextRowKey = React__namespace.useRef(0);
|
|
43
|
+
const rowKeys = React__namespace.useRef([]);
|
|
44
|
+
while(rowKeys.current.length < value.length){
|
|
45
|
+
rowKeys.current.push(`${rowKeyPrefix}-${nextRowKey.current}`);
|
|
46
|
+
nextRowKey.current += 1;
|
|
47
|
+
}
|
|
48
|
+
rowKeys.current.length = value.length;
|
|
49
|
+
const rows = value.map((_, index)=>({
|
|
50
|
+
index,
|
|
51
|
+
key: rowKeys.current[index]
|
|
52
|
+
}));
|
|
41
53
|
const removeRow = (index)=>{
|
|
42
|
-
//
|
|
54
|
+
// Removing the only row clears it in place instead of deleting it, so the list length
|
|
55
|
+
// stays 1 and its key stays valid. Splicing rowKeys here would drop a key that the render
|
|
56
|
+
// body regenerates on the next pass, which would remount the row and tear down its inputs.
|
|
43
57
|
if (value.length === 1) {
|
|
44
58
|
setFieldValue('headers', [
|
|
45
59
|
{
|
|
@@ -48,6 +62,7 @@ const HeadersInput = ()=>{
|
|
|
48
62
|
}
|
|
49
63
|
]);
|
|
50
64
|
} else {
|
|
65
|
+
rowKeys.current.splice(index, 1);
|
|
51
66
|
removeFieldRow('headers', index);
|
|
52
67
|
}
|
|
53
68
|
};
|
|
@@ -67,7 +82,7 @@ const HeadersInput = ()=>{
|
|
|
67
82
|
background: "neutral100",
|
|
68
83
|
hasRadius: true,
|
|
69
84
|
children: [
|
|
70
|
-
|
|
85
|
+
rows.map(({ index, key })=>{
|
|
71
86
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Grid.Root, {
|
|
72
87
|
gap: 4,
|
|
73
88
|
padding: 2,
|
|
@@ -129,7 +144,7 @@ const HeadersInput = ()=>{
|
|
|
129
144
|
})
|
|
130
145
|
})
|
|
131
146
|
]
|
|
132
|
-
},
|
|
147
|
+
}, key);
|
|
133
148
|
}),
|
|
134
149
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
135
150
|
paddingTop: 4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"text\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField<string>(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","xs","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n const rowKeyPrefix = React.useId();\n const nextRowKey = React.useRef(0);\n const rowKeys = React.useRef<string[]>([]);\n\n while (rowKeys.current.length < value.length) {\n rowKeys.current.push(`${rowKeyPrefix}-${nextRowKey.current}`);\n nextRowKey.current += 1;\n }\n rowKeys.current.length = value.length;\n\n const rows = value.map((_, index) => ({\n index,\n key: rowKeys.current[index],\n }));\n\n const removeRow = (index: number) => {\n // Removing the only row clears it in place instead of deleting it, so the list length\n // stays 1 and its key stays valid. Splicing rowKeys here would drop a key that the render\n // body regenerates on the next pass, which would remount the row and tear down its inputs.\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n rowKeys.current.splice(index, 1);\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {rows.map(({ index, key }) => {\n return (\n <Grid.Root key={key} gap={4} padding={2}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"text\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField<string>(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","rowKeyPrefix","React","useId","nextRowKey","useRef","rowKeys","current","length","push","rows","map","_","index","key","removeRow","splice","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","Grid","Root","Item","xs","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","paddingTop","startIcon","Plus","restProps","options","setOptions","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
@@ -16,8 +16,22 @@ const HeadersInput = ()=>{
|
|
|
16
16
|
const removeFieldRow = useForm('HeadersInput', (state)=>state.removeFieldRow);
|
|
17
17
|
const setFieldValue = useForm('HeadersInput', (state)=>state.onChange);
|
|
18
18
|
const { value = [] } = useField('headers');
|
|
19
|
+
const rowKeyPrefix = React.useId();
|
|
20
|
+
const nextRowKey = React.useRef(0);
|
|
21
|
+
const rowKeys = React.useRef([]);
|
|
22
|
+
while(rowKeys.current.length < value.length){
|
|
23
|
+
rowKeys.current.push(`${rowKeyPrefix}-${nextRowKey.current}`);
|
|
24
|
+
nextRowKey.current += 1;
|
|
25
|
+
}
|
|
26
|
+
rowKeys.current.length = value.length;
|
|
27
|
+
const rows = value.map((_, index)=>({
|
|
28
|
+
index,
|
|
29
|
+
key: rowKeys.current[index]
|
|
30
|
+
}));
|
|
19
31
|
const removeRow = (index)=>{
|
|
20
|
-
//
|
|
32
|
+
// Removing the only row clears it in place instead of deleting it, so the list length
|
|
33
|
+
// stays 1 and its key stays valid. Splicing rowKeys here would drop a key that the render
|
|
34
|
+
// body regenerates on the next pass, which would remount the row and tear down its inputs.
|
|
21
35
|
if (value.length === 1) {
|
|
22
36
|
setFieldValue('headers', [
|
|
23
37
|
{
|
|
@@ -26,6 +40,7 @@ const HeadersInput = ()=>{
|
|
|
26
40
|
}
|
|
27
41
|
]);
|
|
28
42
|
} else {
|
|
43
|
+
rowKeys.current.splice(index, 1);
|
|
29
44
|
removeFieldRow('headers', index);
|
|
30
45
|
}
|
|
31
46
|
};
|
|
@@ -45,7 +60,7 @@ const HeadersInput = ()=>{
|
|
|
45
60
|
background: "neutral100",
|
|
46
61
|
hasRadius: true,
|
|
47
62
|
children: [
|
|
48
|
-
|
|
63
|
+
rows.map(({ index, key })=>{
|
|
49
64
|
return /*#__PURE__*/ jsxs(Grid.Root, {
|
|
50
65
|
gap: 4,
|
|
51
66
|
padding: 2,
|
|
@@ -107,7 +122,7 @@ const HeadersInput = ()=>{
|
|
|
107
122
|
})
|
|
108
123
|
})
|
|
109
124
|
]
|
|
110
|
-
},
|
|
125
|
+
}, key);
|
|
111
126
|
}),
|
|
112
127
|
/*#__PURE__*/ jsx(Box, {
|
|
113
128
|
paddingTop: 4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"text\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField<string>(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","xs","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadersInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n const rowKeyPrefix = React.useId();\n const nextRowKey = React.useRef(0);\n const rowKeys = React.useRef<string[]>([]);\n\n while (rowKeys.current.length < value.length) {\n rowKeys.current.push(`${rowKeyPrefix}-${nextRowKey.current}`);\n nextRowKey.current += 1;\n }\n rowKeys.current.length = value.length;\n\n const rows = value.map((_, index) => ({\n index,\n key: rowKeys.current[index],\n }));\n\n const removeRow = (index: number) => {\n // Removing the only row clears it in place instead of deleting it, so the list length\n // stays 1 and its key stays valid. Splicing rowKeys here would drop a key that the render\n // body regenerates on the next pass, which would remount the row and tear down its inputs.\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n rowKeys.current.splice(index, 1);\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {rows.map(({ index, key }) => {\n return (\n <Grid.Root key={key} gap={4} padding={2}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"text\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField<string>(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","rowKeyPrefix","React","useId","nextRowKey","useRef","rowKeys","current","length","push","rows","map","_","index","key","removeRow","splice","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","Grid","Root","Item","xs","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","paddingTop","startIcon","Plus","restProps","options","setOptions","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookForm.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../webhooks\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n"],"names":["WebhookForm","handleSubmit","triggerWebhook","isCreating","isTriggering","triggerResponse","data","formatMessage","useIntl","showTriggerResponse","setShowTriggerResponse","React","useState","EventTable","useEnterprise","EventTableCE","EventsTableEE","mapHeaders","headers","Object","keys","length","key","value","entries","map","_jsx","Form","initialValues","name","url","events","method","onSubmit","validationSchema","makeWebhookValidationSchema","isSubmitting","modified","_jsxs","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","onClick","variant","startIcon","Publish","disabled","fullWidth","id","defaultMessage","Check","type","loading","title","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","TriggerContainer","isPending","response","onCancel","background","padding","shadow","hasRadius","Grid","Root","label","required","size","field","Item","col","xs","InputRenderer","HeadersInput","NAME_REGEX","URL_REGEX","yup","object","shape","string","nullable","matches","lazy","array","baseSchema","of"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebhookForm.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import('../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable')\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../webhooks\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n"],"names":["WebhookForm","handleSubmit","triggerWebhook","isCreating","isTriggering","triggerResponse","data","formatMessage","useIntl","showTriggerResponse","setShowTriggerResponse","React","useState","EventTable","useEnterprise","EventTableCE","EventsTableEE","mapHeaders","headers","Object","keys","length","key","value","entries","map","_jsx","Form","initialValues","name","url","events","method","onSubmit","validationSchema","makeWebhookValidationSchema","isSubmitting","modified","_jsxs","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","onClick","variant","startIcon","Publish","disabled","fullWidth","id","defaultMessage","Check","type","loading","title","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","TriggerContainer","isPending","response","onCancel","background","padding","shadow","hasRadius","Grid","Root","label","required","size","field","Item","col","xs","InputRenderer","HeadersInput","NAME_REGEX","URL_REGEX","yup","object","shape","string","nullable","matches","lazy","array","baseSchema","of"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookForm.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../webhooks\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n"],"names":["WebhookForm","handleSubmit","triggerWebhook","isCreating","isTriggering","triggerResponse","data","formatMessage","useIntl","showTriggerResponse","setShowTriggerResponse","React","useState","EventTable","useEnterprise","EventTableCE","EventsTableEE","mapHeaders","headers","Object","keys","length","key","value","entries","map","_jsx","Form","initialValues","name","url","events","method","onSubmit","validationSchema","makeWebhookValidationSchema","isSubmitting","modified","_jsxs","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","onClick","variant","startIcon","Publish","disabled","fullWidth","id","defaultMessage","Check","type","loading","title","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","TriggerContainer","isPending","response","onCancel","background","padding","shadow","hasRadius","Grid","Root","label","required","size","field","Item","col","xs","InputRenderer","HeadersInput","NAME_REGEX","URL_REGEX","yup","object","shape","string","nullable","matches","lazy","array","baseSchema","of"],"mappings":";;;;;;;;;;;;;;;AAuCA,MAAMA,WAAAA,GAAc,CAAC,EACnBC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,IAAI,EACa,GAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,mBAAAA,EAAqBC,sBAAAA,CAAuB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACrE,MAAMC,UAAAA,GAAaC,aAAAA,CACjBC,YAAAA,EACA,UAEI,CAAA,MAAM,OACJ,gGAAA,CACF,EACAC,aAAa,CAAA;AAGnB;;MAGA,MAAMC,aAAa,CAACC,OAAAA,GAAAA;AAClB,QAAA,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAACF,OAAAA,CAAAA,CAASG,MAAM,EAAE;YAChC,OAAO;AAAC,gBAAA;oBAAEC,GAAAA,EAAK,EAAA;oBAAIC,KAAAA,EAAO;AAAG;AAAE,aAAA;AACjC,QAAA;QAEA,OAAOJ,MAAAA,CAAOK,OAAO,CAACN,OAAAA,CAAAA,CAASO,GAAG,CAAC,CAAC,CAACH,GAAAA,EAAKC,KAAAA,CAAM,IAAM;AAAED,gBAAAA,GAAAA;AAAKC,gBAAAA;aAAM,CAAA,CAAA;AACrE,IAAA,CAAA;;AAGA,IAAA,IAAI,CAACV,UAAAA,EAAY;QACf,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBACEa,GAAA,CAACC,IAAAA,EAAAA;QACCC,aAAAA,EAAe;AACbC,YAAAA,IAAAA,EAAMvB,MAAMuB,IAAAA,IAAQ,EAAA;AACpBC,YAAAA,GAAAA,EAAKxB,MAAMwB,GAAAA,IAAO,EAAA;YAClBZ,OAAAA,EAASD,UAAAA,CAAWX,IAAAA,EAAMY,OAAAA,IAAW,EAAC,CAAA;YACtCa,MAAAA,EAAQzB,IAAAA,EAAMyB,UAAU;AAC1B,SAAA;AACAC,QAAAA,MAAAA,EAAQ7B,aAAa,MAAA,GAAS,KAAA;QAC9B8B,QAAAA,EAAUhC,YAAAA;AACViC,QAAAA,gBAAAA,EAAkBC,2BAAAA,CAA4B;AAAE5B,YAAAA;AAAc,SAAA,CAAA;AAE7D,QAAA,QAAA,EAAA,CAAC,EAAE6B,YAAY,EAAEC,QAAQ,EAAE,iBAC1BC,IAAA,CAAAC,QAAA,EAAA;;AACE,kCAAAb,GAAA,CAACc,QAAQC,MAAM,EAAA;AACbC,wBAAAA,aAAAA,gBACEJ,IAAA,CAACK,IAAAA,EAAAA;4BAAKC,KAAAA,EAAM,MAAA;4BAAOC,GAAAA,EAAK,CAAA;;8CACtBnB,GAAA,CAACoB,MAAAA,EAAAA;oCACCC,OAAAA,EAAS,IAAA;AACP7C,wCAAAA,cAAAA,EAAAA;wCACAQ,sBAAAA,CAAuB,IAAA,CAAA;AACzB,oCAAA,CAAA;oCACAsC,OAAAA,EAAQ,UAAA;AACRC,oCAAAA,SAAAA,gBAAWvB,GAAA,CAACwB,IAAAA,EAAAA,EAAAA,CAAAA;AACZC,oCAAAA,QAAAA,EAAUhD,UAAAA,IAAcC,YAAAA;oCACxBgD,SAAS,EAAA,IAAA;8CAER7C,aAAAA,CAAc;wCACb8C,EAAAA,EAAI,2BAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;8CAEF5B,GAAA,CAACoB,MAAAA,EAAAA;AACCG,oCAAAA,SAAAA,gBAAWvB,GAAA,CAAC6B,KAAAA,EAAAA,EAAAA,CAAAA;oCACZC,IAAAA,EAAK,QAAA;AACLL,oCAAAA,QAAAA,EAAU,CAACd,QAAAA;oCACXoB,OAAAA,EAASrB,YAAAA;oCACTgB,SAAS,EAAA,IAAA;8CAER7C,aAAAA,CAAc;wCACb8C,EAAAA,EAAI,aAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;AAINI,wBAAAA,KAAAA,EACEvD,aACII,aAAAA,CAAc;4BACZ8C,EAAAA,EAAI,0BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA,GACAhD,IAAAA,EAAMuB,IAAAA;AAEZ8B,wBAAAA,gBAAAA;sCAEEjC,GAAA,CAACkC,GAAAA,EAAAA;4BAAIC,OAAAA,EAAS;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AAC/C,4BAAA,QAAA,gBAAArC,GAAA,CAACsC,UAAAA,EAAAA;gCAAWC,QAAAA,EAAS;;;;AAI3B,kCAAAvC,GAAA,CAACc,QAAQ0B,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAA5B,IAAA,CAACK,IAAAA,EAAAA;4BAAKwB,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;4BAAUvB,GAAAA,EAAK,CAAA;;AAChDpC,gCAAAA,mBAAAA,kBACCiB,GAAA,CAAC2C,gBAAAA,EAAAA;oCACCC,SAAAA,EAAWlE,YAAAA;oCACXmE,QAAAA,EAAUlE,eAAAA;AACVmE,oCAAAA,QAAAA,EAAU,IAAM9D,sBAAAA,CAAuB,KAAA;;8CAG3CgB,GAAA,CAACkC,GAAAA,EAAAA;oCAAIa,UAAAA,EAAW,UAAA;oCAAWC,OAAAA,EAAS,CAAA;oCAAGC,MAAAA,EAAO,cAAA;oCAAeC,SAAS,EAAA,IAAA;AACpE,oCAAA,QAAA,gBAAAtC,IAAA,CAACK,IAAAA,EAAAA;wCAAKwB,SAAAA,EAAU,QAAA;wCAASC,UAAAA,EAAW,SAAA;wCAAUvB,GAAAA,EAAK,CAAA;;AACjD,0DAAAnB,GAAA,CAACmD,KAAKC,IAAI,EAAA;gDAACjC,GAAAA,EAAK,CAAA;AACb,gDAAA,QAAA,EAAA;AACC,oDAAA;AACEkC,wDAAAA,KAAAA,EAAOxE,aAAAA,CAAc;4DACnB8C,EAAAA,EAAI,aAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;wDACAzB,IAAAA,EAAM,MAAA;wDACNmD,QAAAA,EAAU,IAAA;wDACVC,IAAAA,EAAM,CAAA;wDACNzB,IAAAA,EAAM;AACR,qDAAA;AACA,oDAAA;AACEuB,wDAAAA,KAAAA,EAAOxE,aAAAA,CAAc;4DACnB8C,EAAAA,EAAI,+BAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;wDACAzB,IAAAA,EAAM,KAAA;wDACNmD,QAAAA,EAAU,IAAA;wDACVC,IAAAA,EAAM,EAAA;wDACNzB,IAAAA,EAAM;AACR;iDACD,CAAC/B,GAAG,CAAC,CAAC,EAAEwD,IAAI,EAAE,GAAGC,KAAAA,EAAO,iBACvBxD,GAAA,CAACmD,IAAAA,CAAKM,IAAI,EAAA;wDAERC,GAAAA,EAAKH,IAAAA;wDACLI,EAAAA,EAAI,EAAA;wDACJlB,SAAAA,EAAU,QAAA;wDACVC,UAAAA,EAAW,SAAA;AAEX,wDAAA,QAAA,gBAAA1C,GAAA,CAAC4D,qBAAAA,EAAAA;AAAe,4DAAA,GAAGJ;;AANdA,qDAAAA,EAAAA,KAAAA,CAAMrD,IAAI,CAAA;;0DAUrBH,GAAA,CAAC6D,YAAAA,EAAAA,EAAAA,CAAAA;0DACD7D,GAAA,CAACb,UAAAA,EAAAA,EAAAA;;;;;;;;;;AASnB;AAEA,MAAM2E,UAAAA,GAAa,iCAAA;AACnB,MAAMC,SAAAA,GAAY,mCAAA;AAElB,MAAMtD,2BAAAA,GAA8B,CAAC,EAAE5B,aAAa,EAAoC,GACtFmF,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACjB/D,QAAAA,IAAAA,EAAM6D,IACHG,MAAM,EAAA,CACNC,QAAQ,EAAA,CACRd,QAAQ,CACPzE,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,4CAAA;YACJC,cAAAA,EAAgB;SAClB,CAAA,CAAA,CAEDyC,OAAO,CACNP,UAAAA,EACAjF,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,yCAAA;YACJC,cAAAA,EACE;AACJ,SAAA,CAAA,CAAA;AAEJxB,QAAAA,GAAAA,EAAK4D,IACFG,MAAM,EAAA,CACNC,QAAQ,EAAA,CACRd,QAAQ,CACPzE,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,2CAAA;YACJC,cAAAA,EAAgB;SAClB,CAAA,CAAA,CAEDyC,OAAO,CACNN,SAAAA,EACAlF,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,wCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA,CAAA;QAEJpC,OAAAA,EAASwE,GAAAA,CAAIM,IAAI,CAAC,CAACC,KAAAA,GAAAA;YACjB,MAAMC,UAAAA,GAAaR,IAAIO,KAAK,EAAA;YAE5B,IAAIA,KAAAA,CAAM5E,MAAM,KAAK,CAAA,EAAG;gBACtB,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAG0E,KAAK,CAAC,CAAA,CAAE;gBAE/B,IAAI,CAAC3E,GAAAA,IAAO,CAACC,KAAAA,EAAO;oBAClB,OAAO2E,UAAAA;AACT,gBAAA;AACF,YAAA;AAEA,YAAA,OAAOA,WAAWC,EAAE,CAClBT,IAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACjBtE,gBAAAA,GAAAA,EAAKoE,GAAAA,CACFG,MAAM,EAAA,CACNb,QAAQ,CACPzE,aAAAA,CAAc;oBACZ8C,EAAAA,EAAI,kCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,CAAA,CAEDwC,QAAQ,EAAA;AACXvE,gBAAAA,KAAAA,EAAOmE,GAAAA,CACJG,MAAM,EAAA,CACNb,QAAQ,CACPzE,aAAAA,CAAc;oBACZ8C,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,CAAA,CAEDwC,QAAQ;AACb,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA,CAAA;AACA/D,QAAAA,MAAAA,EAAQ2D,IAAIO,KAAK;AACnB,KAAA,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"WebhookForm.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import('../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable')\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../webhooks\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n"],"names":["WebhookForm","handleSubmit","triggerWebhook","isCreating","isTriggering","triggerResponse","data","formatMessage","useIntl","showTriggerResponse","setShowTriggerResponse","React","useState","EventTable","useEnterprise","EventTableCE","EventsTableEE","mapHeaders","headers","Object","keys","length","key","value","entries","map","_jsx","Form","initialValues","name","url","events","method","onSubmit","validationSchema","makeWebhookValidationSchema","isSubmitting","modified","_jsxs","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","onClick","variant","startIcon","Publish","disabled","fullWidth","id","defaultMessage","Check","type","loading","title","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","TriggerContainer","isPending","response","onCancel","background","padding","shadow","hasRadius","Grid","Root","label","required","size","field","Item","col","xs","InputRenderer","HeadersInput","NAME_REGEX","URL_REGEX","yup","object","shape","string","nullable","matches","lazy","array","baseSchema","of"],"mappings":";;;;;;;;;;;;;;;AAuCA,MAAMA,WAAAA,GAAc,CAAC,EACnBC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,IAAI,EACa,GAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,mBAAAA,EAAqBC,sBAAAA,CAAuB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACrE,MAAMC,UAAAA,GAAaC,aAAAA,CACjBC,YAAAA,EACA,UAEI,CAAA,MAAM,OAAO,gGAAA,CAA4F,EACzGC,aAAa,CAAA;AAGnB;;MAGA,MAAMC,aAAa,CAACC,OAAAA,GAAAA;AAClB,QAAA,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAACF,OAAAA,CAAAA,CAASG,MAAM,EAAE;YAChC,OAAO;AAAC,gBAAA;oBAAEC,GAAAA,EAAK,EAAA;oBAAIC,KAAAA,EAAO;AAAG;AAAE,aAAA;AACjC,QAAA;QAEA,OAAOJ,MAAAA,CAAOK,OAAO,CAACN,OAAAA,CAAAA,CAASO,GAAG,CAAC,CAAC,CAACH,GAAAA,EAAKC,KAAAA,CAAM,IAAM;AAAED,gBAAAA,GAAAA;AAAKC,gBAAAA;aAAM,CAAA,CAAA;AACrE,IAAA,CAAA;;AAGA,IAAA,IAAI,CAACV,UAAAA,EAAY;QACf,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBACEa,GAAA,CAACC,IAAAA,EAAAA;QACCC,aAAAA,EAAe;AACbC,YAAAA,IAAAA,EAAMvB,MAAMuB,IAAAA,IAAQ,EAAA;AACpBC,YAAAA,GAAAA,EAAKxB,MAAMwB,GAAAA,IAAO,EAAA;YAClBZ,OAAAA,EAASD,UAAAA,CAAWX,IAAAA,EAAMY,OAAAA,IAAW,EAAC,CAAA;YACtCa,MAAAA,EAAQzB,IAAAA,EAAMyB,UAAU;AAC1B,SAAA;AACAC,QAAAA,MAAAA,EAAQ7B,aAAa,MAAA,GAAS,KAAA;QAC9B8B,QAAAA,EAAUhC,YAAAA;AACViC,QAAAA,gBAAAA,EAAkBC,2BAAAA,CAA4B;AAAE5B,YAAAA;AAAc,SAAA,CAAA;AAE7D,QAAA,QAAA,EAAA,CAAC,EAAE6B,YAAY,EAAEC,QAAQ,EAAE,iBAC1BC,IAAA,CAAAC,QAAA,EAAA;;AACE,kCAAAb,GAAA,CAACc,QAAQC,MAAM,EAAA;AACbC,wBAAAA,aAAAA,gBACEJ,IAAA,CAACK,IAAAA,EAAAA;4BAAKC,KAAAA,EAAM,MAAA;4BAAOC,GAAAA,EAAK,CAAA;;8CACtBnB,GAAA,CAACoB,MAAAA,EAAAA;oCACCC,OAAAA,EAAS,IAAA;AACP7C,wCAAAA,cAAAA,EAAAA;wCACAQ,sBAAAA,CAAuB,IAAA,CAAA;AACzB,oCAAA,CAAA;oCACAsC,OAAAA,EAAQ,UAAA;AACRC,oCAAAA,SAAAA,gBAAWvB,GAAA,CAACwB,IAAAA,EAAAA,EAAAA,CAAAA;AACZC,oCAAAA,QAAAA,EAAUhD,UAAAA,IAAcC,YAAAA;oCACxBgD,SAAS,EAAA,IAAA;8CAER7C,aAAAA,CAAc;wCACb8C,EAAAA,EAAI,2BAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;8CAEF5B,GAAA,CAACoB,MAAAA,EAAAA;AACCG,oCAAAA,SAAAA,gBAAWvB,GAAA,CAAC6B,KAAAA,EAAAA,EAAAA,CAAAA;oCACZC,IAAAA,EAAK,QAAA;AACLL,oCAAAA,QAAAA,EAAU,CAACd,QAAAA;oCACXoB,OAAAA,EAASrB,YAAAA;oCACTgB,SAAS,EAAA,IAAA;8CAER7C,aAAAA,CAAc;wCACb8C,EAAAA,EAAI,aAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;AAINI,wBAAAA,KAAAA,EACEvD,aACII,aAAAA,CAAc;4BACZ8C,EAAAA,EAAI,0BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA,GACAhD,IAAAA,EAAMuB,IAAAA;AAEZ8B,wBAAAA,gBAAAA;sCAEEjC,GAAA,CAACkC,GAAAA,EAAAA;4BAAIC,OAAAA,EAAS;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AAC/C,4BAAA,QAAA,gBAAArC,GAAA,CAACsC,UAAAA,EAAAA;gCAAWC,QAAAA,EAAS;;;;AAI3B,kCAAAvC,GAAA,CAACc,QAAQ0B,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAA5B,IAAA,CAACK,IAAAA,EAAAA;4BAAKwB,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;4BAAUvB,GAAAA,EAAK,CAAA;;AAChDpC,gCAAAA,mBAAAA,kBACCiB,GAAA,CAAC2C,gBAAAA,EAAAA;oCACCC,SAAAA,EAAWlE,YAAAA;oCACXmE,QAAAA,EAAUlE,eAAAA;AACVmE,oCAAAA,QAAAA,EAAU,IAAM9D,sBAAAA,CAAuB,KAAA;;8CAG3CgB,GAAA,CAACkC,GAAAA,EAAAA;oCAAIa,UAAAA,EAAW,UAAA;oCAAWC,OAAAA,EAAS,CAAA;oCAAGC,MAAAA,EAAO,cAAA;oCAAeC,SAAS,EAAA,IAAA;AACpE,oCAAA,QAAA,gBAAAtC,IAAA,CAACK,IAAAA,EAAAA;wCAAKwB,SAAAA,EAAU,QAAA;wCAASC,UAAAA,EAAW,SAAA;wCAAUvB,GAAAA,EAAK,CAAA;;AACjD,0DAAAnB,GAAA,CAACmD,KAAKC,IAAI,EAAA;gDAACjC,GAAAA,EAAK,CAAA;AACb,gDAAA,QAAA,EAAA;AACC,oDAAA;AACEkC,wDAAAA,KAAAA,EAAOxE,aAAAA,CAAc;4DACnB8C,EAAAA,EAAI,aAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;wDACAzB,IAAAA,EAAM,MAAA;wDACNmD,QAAAA,EAAU,IAAA;wDACVC,IAAAA,EAAM,CAAA;wDACNzB,IAAAA,EAAM;AACR,qDAAA;AACA,oDAAA;AACEuB,wDAAAA,KAAAA,EAAOxE,aAAAA,CAAc;4DACnB8C,EAAAA,EAAI,+BAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;wDACAzB,IAAAA,EAAM,KAAA;wDACNmD,QAAAA,EAAU,IAAA;wDACVC,IAAAA,EAAM,EAAA;wDACNzB,IAAAA,EAAM;AACR;iDACD,CAAC/B,GAAG,CAAC,CAAC,EAAEwD,IAAI,EAAE,GAAGC,KAAAA,EAAO,iBACvBxD,GAAA,CAACmD,IAAAA,CAAKM,IAAI,EAAA;wDAERC,GAAAA,EAAKH,IAAAA;wDACLI,EAAAA,EAAI,EAAA;wDACJlB,SAAAA,EAAU,QAAA;wDACVC,UAAAA,EAAW,SAAA;AAEX,wDAAA,QAAA,gBAAA1C,GAAA,CAAC4D,qBAAAA,EAAAA;AAAe,4DAAA,GAAGJ;;AANdA,qDAAAA,EAAAA,KAAAA,CAAMrD,IAAI,CAAA;;0DAUrBH,GAAA,CAAC6D,YAAAA,EAAAA,EAAAA,CAAAA;0DACD7D,GAAA,CAACb,UAAAA,EAAAA,EAAAA;;;;;;;;;;AASnB;AAEA,MAAM2E,UAAAA,GAAa,iCAAA;AACnB,MAAMC,SAAAA,GAAY,mCAAA;AAElB,MAAMtD,2BAAAA,GAA8B,CAAC,EAAE5B,aAAa,EAAoC,GACtFmF,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACjB/D,QAAAA,IAAAA,EAAM6D,IACHG,MAAM,EAAA,CACNC,QAAQ,EAAA,CACRd,QAAQ,CACPzE,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,4CAAA;YACJC,cAAAA,EAAgB;SAClB,CAAA,CAAA,CAEDyC,OAAO,CACNP,UAAAA,EACAjF,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,yCAAA;YACJC,cAAAA,EACE;AACJ,SAAA,CAAA,CAAA;AAEJxB,QAAAA,GAAAA,EAAK4D,IACFG,MAAM,EAAA,CACNC,QAAQ,EAAA,CACRd,QAAQ,CACPzE,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,2CAAA;YACJC,cAAAA,EAAgB;SAClB,CAAA,CAAA,CAEDyC,OAAO,CACNN,SAAAA,EACAlF,aAAAA,CAAc;YACZ8C,EAAAA,EAAI,wCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA,CAAA;QAEJpC,OAAAA,EAASwE,GAAAA,CAAIM,IAAI,CAAC,CAACC,KAAAA,GAAAA;YACjB,MAAMC,UAAAA,GAAaR,IAAIO,KAAK,EAAA;YAE5B,IAAIA,KAAAA,CAAM5E,MAAM,KAAK,CAAA,EAAG;gBACtB,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAG0E,KAAK,CAAC,CAAA,CAAE;gBAE/B,IAAI,CAAC3E,GAAAA,IAAO,CAACC,KAAAA,EAAO;oBAClB,OAAO2E,UAAAA;AACT,gBAAA;AACF,YAAA;AAEA,YAAA,OAAOA,WAAWC,EAAE,CAClBT,IAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACjBtE,gBAAAA,GAAAA,EAAKoE,GAAAA,CACFG,MAAM,EAAA,CACNb,QAAQ,CACPzE,aAAAA,CAAc;oBACZ8C,EAAAA,EAAI,kCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,CAAA,CAEDwC,QAAQ,EAAA;AACXvE,gBAAAA,KAAAA,EAAOmE,GAAAA,CACJG,MAAM,EAAA,CACNb,QAAQ,CACPzE,aAAAA,CAAc;oBACZ8C,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,CAAA,CAEDwC,QAAQ;AACb,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA,CAAA;AACA/D,QAAAA,MAAAA,EAAQ2D,IAAIO,KAAK;AACnB,KAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'me/sessions',\n lazy: async () => {\n const { SessionsPage } = await import('./pages/SessionsPage');\n\n return {\n Component: SessionsPage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage }
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'me/sessions',\n lazy: async () => {\n const { SessionsPage } = await import('./pages/SessionsPage');\n\n return {\n Component: SessionsPage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } =\n await import('./pages/Settings/pages/ApplicationInfo/ApplicationInfoPage');\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE()].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","SessionsPage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,uBAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,cAAA,CAACC,iBAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,oDAAO,0BAAA,KAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,aAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,YAAY,EAAE,GAAG,MAAM,oDAAO,yBAAA,KAAA;gBAEtC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEZ,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEY,MAAM,EAAE,GAAG,MAAM,oDAAO,4BAAA,KAAA;gBAEhC,OAAO;oBACLV,SAAAA,EAAWU;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEd,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEc,mBAAmB,EAAE,GAC3B,MAAM,oDAAO,+DAAA,KAAA;wBAEf,OAAO;4BACLZ,SAAAA,EAAWY;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,qBAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA,qBAAAA;AAAY,iBAAA,CAACC,MAAM,CAClD,CAACC,KAAAA,EAAOV,KAAAA,EAAOW,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAItB,IAAI,KAAKmB,KAAAA,CAAMnB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'me/sessions',\n lazy: async () => {\n const { SessionsPage } = await import('./pages/SessionsPage');\n\n return {\n Component: SessionsPage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage }
|
|
1
|
+
{"version":3,"file":"router.mjs","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'me/sessions',\n lazy: async () => {\n const { SessionsPage } = await import('./pages/SessionsPage');\n\n return {\n Component: SessionsPage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } =\n await import('./pages/Settings/pages/ApplicationInfo/ApplicationInfoPage');\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE()].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","SessionsPage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,aAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,GAAA,CAACC,QAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,OAAO,2BAAA,CAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,aAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,YAAY,EAAE,GAAG,MAAM,OAAO,0BAAA,CAAA;gBAEtC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEZ,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEY,MAAM,EAAE,GAAG,MAAM,OAAO,6BAAA,CAAA;gBAEhC,OAAO;oBACLV,SAAAA,EAAWU;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEd,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEc,mBAAmB,EAAE,GAC3B,MAAM,OAAO,gEAAA,CAAA;wBAEf,OAAO;4BACLZ,SAAAA,EAAWY;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,WAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA,SAAAA;AAAY,iBAAA,CAACC,MAAM,CAClD,CAACC,KAAAA,EAAOV,KAAAA,EAAOW,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAItB,IAAI,KAAKmB,KAAAA,CAAMnB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sources":["../../../../../admin/src/services/users.ts"],"sourcesContent":["import * as Permissions from '../../../shared/contracts/permissions';\nimport * as Roles from '../../../shared/contracts/roles';\nimport * as Users from '../../../shared/contracts/user';\n\nimport { adminApi } from './api';\n\nimport type { Data } from '@strapi/types';\n\nconst usersService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['LicenseLimits', 'User', 'Role', 'RolePermissions'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * users\n */\n createUser: builder.mutation<Users.Create.Response['data'], Users.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/users',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: Users.Create.Response) => response.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n updateUser: builder.mutation<\n Users.Update.Response['data'],\n Omit<Users.Update.Request['body'] & Users.Update.Params, 'blocked'>\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/users/${id}`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: (_res, _err, { id }) => [\n { type: 'User', id },\n { type: 'User', id: 'LIST' },\n ],\n }),\n getUsers: builder.query<\n {\n users: Users.FindAll.Response['data']['results'];\n pagination: Users.FindAll.Response['data']['pagination'] | null;\n },\n GetUsersParams\n >({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/users/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Users.FindAll.Response | Users.FindOne.Response) => {\n let users: Users.FindAll.Response['data']['results'] = [];\n\n if (res.data) {\n if ('results' in res.data) {\n if (Array.isArray(res.data.results)) {\n users = res.data.results;\n }\n } else {\n users = [res.data];\n }\n }\n\n return {\n users,\n pagination: 'pagination' in res.data ? res.data.pagination : null,\n };\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'User' as const, id: arg.id }];\n } else {\n return [\n ...(res?.users.map(({ id }) => ({ type: 'User' as const, id })) ?? []),\n { type: 'User' as const, id: 'LIST' },\n ];\n }\n },\n }),\n deleteManyUsers: builder.mutation<\n Users.DeleteMany.Response['data'],\n Users.DeleteMany.Request['body']\n >({\n query: (body) => ({\n url: '/admin/users/batch-delete',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Users.DeleteMany.Response) => res.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n /**\n * roles\n */\n createRole: builder.mutation<Roles.Create.Response['data'], Roles.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/roles',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: [{ type: 'Role', id: 'LIST' }],\n }),\n getRoles: builder.query<Roles.FindRoles.Response['data'], GetRolesParams | void>({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/roles/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.FindRole.Response | Roles.FindRoles.Response) => {\n let roles: Roles.FindRoles.Response['data'] = [];\n\n if (res.data) {\n if (Array.isArray(res.data)) {\n roles = res.data;\n } else {\n roles = [res.data];\n }\n }\n\n return roles;\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'Role' as const, id: arg.id }];\n } else {\n return [\n ...(res?.map(({ id }) => ({ type: 'Role' as const, id })) ?? []),\n { type: 'Role' as const, id: 'LIST' },\n ];\n }\n },\n }),\n updateRole: builder.mutation<\n Roles.Update.Response['data'],\n Roles.Update.Request['body'] & Roles.Update.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'Role' as const, id }],\n }),\n getRolePermissions: builder.query<\n Roles.GetPermissions.Response['data'],\n GetRolePermissionsParams\n >({\n query: ({ id, ...params }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.GetPermissions.Response) => res.data,\n providesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n updateRolePermissions: builder.mutation<\n Roles.UpdatePermissions.Response['data'],\n Roles.UpdatePermissions.Request['body'] & Roles.UpdatePermissions.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.UpdatePermissions.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n /**\n * Permissions\n */\n getRolePermissionLayout: builder.query<\n Permissions.GetAll.Response['data'],\n Permissions.GetAll.Request['params']\n >({\n query: (params) => ({\n url: '/admin/permissions',\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Permissions.GetAll.Response) => res.data,\n }),\n }),\n overrideExisting: false,\n });\n\ntype GetUsersParams =\n | Users.FindOne.Params\n | (Users.FindAll.Request['query'] & { id?: never })\n | void;\ntype GetRolesParams =\n | Roles.FindRole.Request['params']\n | (Roles.FindRoles.Request['query'] & { id?: never });\ninterface GetRolePermissionsParams {\n id: Data.ID;\n}\n\nconst {\n useCreateUserMutation,\n useGetUsersQuery,\n useUpdateUserMutation,\n useDeleteManyUsersMutation,\n useGetRolesQuery,\n useCreateRoleMutation,\n useUpdateRoleMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useUpdateRolePermissionsMutation,\n} = usersService;\n\nconst useAdminUsers = useGetUsersQuery;\n\nexport {\n useUpdateUserMutation,\n useGetRolesQuery,\n useAdminUsers,\n useDeleteManyUsersMutation,\n useCreateUserMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useCreateRoleMutation,\n useUpdateRolePermissionsMutation,\n useUpdateRoleMutation,\n};\nexport type { GetRolesParams, GetUsersParams, GetRolePermissionsParams };\n"],"names":["usersService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","createUser","mutation","query","body","url","method","data","transformResponse","response","invalidatesTags","type","id","updateUser","_res","_err","getUsers","params","config","res","users","Array","isArray","results","pagination","providesTags","arg","map","deleteManyUsers","createRole","getRoles","roles","updateRole","getRolePermissions","updateRolePermissions","getRolePermissionLayout","overrideExisting","useCreateUserMutation","useGetUsersQuery","useUpdateUserMutation","useDeleteManyUsersMutation","useGetRolesQuery","useCreateRoleMutation","useUpdateRoleMutation","useGetRolePermissionsQuery","useGetRolePermissionLayoutQuery","useUpdateRolePermissionsMutation","useAdminUsers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"users.js","sources":["../../../../../admin/src/services/users.ts"],"sourcesContent":["import * as Permissions from '../../../shared/contracts/permissions';\nimport * as Roles from '../../../shared/contracts/roles';\nimport * as Users from '../../../shared/contracts/user';\n\nimport { adminApi } from './api';\n\nimport type { Data } from '@strapi/types';\n\nconst usersService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['LicenseLimits', 'User', 'Role', 'RolePermissions'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * users\n */\n createUser: builder.mutation<Users.Create.Response['data'], Users.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/users',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: Users.Create.Response) => response.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n updateUser: builder.mutation<\n Users.Update.Response['data'],\n Omit<Users.Update.Request['body'] & Users.Update.Params, 'blocked'>\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/users/${id}`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: (_res, _err, { id }) => [\n { type: 'User', id },\n { type: 'User', id: 'LIST' },\n ],\n }),\n getUsers: builder.query<\n {\n users: Users.FindAll.Response['data']['results'];\n pagination: Users.FindAll.Response['data']['pagination'] | null;\n },\n GetUsersParams\n >({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/users/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Users.FindAll.Response | Users.FindOne.Response) => {\n let users: Users.FindAll.Response['data']['results'] = [];\n\n if (res.data) {\n if ('results' in res.data) {\n if (Array.isArray(res.data.results)) {\n users = res.data.results;\n }\n } else {\n users = [res.data];\n }\n }\n\n return {\n users,\n pagination: 'pagination' in res.data ? res.data.pagination : null,\n };\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'User' as const, id: arg.id }];\n } else {\n return [\n ...(res?.users.map(({ id }) => ({ type: 'User' as const, id })) ?? []),\n { type: 'User' as const, id: 'LIST' },\n ];\n }\n },\n }),\n deleteManyUsers: builder.mutation<\n Users.DeleteMany.Response['data'],\n Users.DeleteMany.Request['body']\n >({\n query: (body) => ({\n url: '/admin/users/batch-delete',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Users.DeleteMany.Response) => res.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n /**\n * roles\n */\n createRole: builder.mutation<Roles.Create.Response['data'], Roles.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/roles',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: [{ type: 'Role', id: 'LIST' }],\n }),\n getRoles: builder.query<Roles.FindRoles.Response['data'], GetRolesParams | void>({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/roles/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.FindRole.Response | Roles.FindRoles.Response) => {\n let roles: Roles.FindRoles.Response['data'] = [];\n\n if (res.data) {\n if (Array.isArray(res.data)) {\n roles = res.data;\n } else {\n roles = [res.data];\n }\n }\n\n return roles;\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'Role' as const, id: arg.id }];\n } else {\n return [\n ...(res?.map(({ id }) => ({ type: 'Role' as const, id })) ?? []),\n { type: 'Role' as const, id: 'LIST' },\n ];\n }\n },\n }),\n updateRole: builder.mutation<\n Roles.Update.Response['data'],\n Roles.Update.Request['body'] & Roles.Update.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'Role' as const, id }],\n }),\n getRolePermissions: builder.query<\n Roles.GetPermissions.Response['data'],\n GetRolePermissionsParams\n >({\n query: ({ id, ...params }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.GetPermissions.Response) => res.data,\n providesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n updateRolePermissions: builder.mutation<\n Roles.UpdatePermissions.Response['data'],\n Roles.UpdatePermissions.Request['body'] & Roles.UpdatePermissions.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.UpdatePermissions.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n /**\n * Permissions\n */\n getRolePermissionLayout: builder.query<\n Permissions.GetAll.Response['data'],\n Permissions.GetAll.Request['params']\n >({\n query: (params) => ({\n url: '/admin/permissions',\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Permissions.GetAll.Response) => res.data,\n }),\n }),\n overrideExisting: false,\n });\n\ntype GetUsersParams =\n Users.FindOne.Params | (Users.FindAll.Request['query'] & { id?: never }) | void;\ntype GetRolesParams =\n Roles.FindRole.Request['params'] | (Roles.FindRoles.Request['query'] & { id?: never });\ninterface GetRolePermissionsParams {\n id: Data.ID;\n}\n\nconst {\n useCreateUserMutation,\n useGetUsersQuery,\n useUpdateUserMutation,\n useDeleteManyUsersMutation,\n useGetRolesQuery,\n useCreateRoleMutation,\n useUpdateRoleMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useUpdateRolePermissionsMutation,\n} = usersService;\n\nconst useAdminUsers = useGetUsersQuery;\n\nexport {\n useUpdateUserMutation,\n useGetRolesQuery,\n useAdminUsers,\n useDeleteManyUsersMutation,\n useCreateUserMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useCreateRoleMutation,\n useUpdateRolePermissionsMutation,\n useUpdateRoleMutation,\n};\nexport type { GetRolesParams, GetUsersParams, GetRolePermissionsParams };\n"],"names":["usersService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","createUser","mutation","query","body","url","method","data","transformResponse","response","invalidatesTags","type","id","updateUser","_res","_err","getUsers","params","config","res","users","Array","isArray","results","pagination","providesTags","arg","map","deleteManyUsers","createRole","getRoles","roles","updateRole","getRolePermissions","updateRolePermissions","getRolePermissionLayout","overrideExisting","useCreateUserMutation","useGetUsersQuery","useUpdateUserMutation","useDeleteManyUsersMutation","useGetRolesQuery","useCreateRoleMutation","useUpdateRoleMutation","useGetRolePermissionsQuery","useGetRolePermissionLayoutQuery","useUpdateRolePermissionsMutation","useAdminUsers"],"mappings":"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"}
|