;
+ initialScopes: {
+ organization: OrganizationAccessScope[];
+ project: ProjectAccessScope[];
+ target: TargetAccessScope[];
+ };
+ onSubmit: () => void;
+}) {
+ return (
+
+ );
+}
diff --git a/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx b/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx
index 505a7ab61..8cecc51d1 100644
--- a/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx
+++ b/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx
@@ -104,7 +104,14 @@ function CreateCDNAccessTokenModal(props: {
-
-
+ {
+ ev.preventDefault();
+ props.toggleModalOpen();
+ }}
+ >
Cancel
void;
- organization: FragmentType;
- member: FragmentType;
-}): ReactElement {
- const organization = useFragment(ChangePermissionsModal_OrganizationFragment, props.organization);
- const member = useFragment(ChangePermissionsModal_MemberFragment, props.member);
- const manager = usePermissionsManager({
- onSuccess: toggleModalOpen,
- organization,
- member,
- passMemberScopes: true,
- });
-
- const initialScopes = {
- organization: [...manager.organizationScopes],
- project: [...manager.projectScopes],
- target: [...manager.targetScopes],
- };
-
- return (
-
-
-
- );
-}
diff --git a/packages/web/app/src/components/v2/modals/index.ts b/packages/web/app/src/components/v2/modals/index.ts
index 6327c5d31..a1c4daba9 100644
--- a/packages/web/app/src/components/v2/modals/index.ts
+++ b/packages/web/app/src/components/v2/modals/index.ts
@@ -1,3 +1,2 @@
-export { ChangePermissionsModal } from './change-permissions';
export { ConnectSchemaModal } from './connect-schema';
export { TransferOrganizationOwnershipModal } from './transfer-organization-ownership';
diff --git a/packages/web/app/src/pages/organization-settings.tsx b/packages/web/app/src/pages/organization-settings.tsx
index 8bdf0373d..08a77cd54 100644
--- a/packages/web/app/src/pages/organization-settings.tsx
+++ b/packages/web/app/src/pages/organization-settings.tsx
@@ -692,7 +692,13 @@ export function DeleteOrganizationModalContent(props: {
-
+ {
+ ev.preventDefault();
+ props.toggleModalOpen();
+ }}
+ >
Cancel
diff --git a/packages/web/app/src/pages/project-settings.tsx b/packages/web/app/src/pages/project-settings.tsx
index 1c118d6c0..882842949 100644
--- a/packages/web/app/src/pages/project-settings.tsx
+++ b/packages/web/app/src/pages/project-settings.tsx
@@ -520,7 +520,13 @@ export function DeleteProjectModalContent(props: {
This action is irreversible!
-
+ {
+ ev.preventDefault();
+ props.toggleModalOpen();
+ }}
+ >
Cancel
diff --git a/packages/web/app/src/pages/target-settings.tsx b/packages/web/app/src/pages/target-settings.tsx
index 5b973d663..05fedb82a 100644
--- a/packages/web/app/src/pages/target-settings.tsx
+++ b/packages/web/app/src/pages/target-settings.tsx
@@ -1,4 +1,4 @@
-import React, { ReactElement, useCallback, useState } from 'react';
+import { ComponentProps, PropsWithoutRef, useCallback, useState } from 'react';
import clsx from 'clsx';
import { formatISO } from 'date-fns';
import { useFormik } from 'formik';
@@ -111,7 +111,7 @@ function RegistryAccessTokens(props: {
organizationId: string;
projectId: string;
targetId: string;
-}): ReactElement {
+}) {
const me = useFragment(RegistryAccessTokens_MeFragment, props.me);
const [{ fetching: deleting }, mutate] = useMutation(DeleteTokensDocument);
const [checked, setChecked] = useState([]);
@@ -242,7 +242,7 @@ const ExtendBaseSchema = (props: {
organizationId: string;
projectId: string;
targetId: string;
-}): ReactElement => {
+}) => {
const [mutation, mutate] = useMutation(Settings_UpdateBaseSchemaMutation);
const [baseSchema, setBaseSchema] = useState(props.baseSchema);
const { toast } = useToast();
@@ -342,14 +342,14 @@ const ClientExclusion_AvailableClientNamesQuery = graphql(`
`);
function ClientExclusion(
- props: React.PropsWithoutRef<
+ props: PropsWithoutRef<
{
organizationId: string;
projectId: string;
selectedTargets: string[];
clientsFromSettings: string[];
value: string[];
- } & Pick, 'name' | 'disabled' | 'onBlur' | 'onChange'>
+ } & Pick, 'name' | 'disabled' | 'onBlur' | 'onChange'>
>,
) {
const now = floorDate(new Date());
@@ -461,7 +461,7 @@ const ConditionalBreakingChanges = (props: {
organizationId: string;
projectId: string;
targetId: string;
-}): ReactElement => {
+}) => {
const [targetValidation, setValidation] = useMutation(SetTargetValidationMutation);
const [mutation, updateValidation] = useMutation(
TargetSettingsPage_UpdateTargetValidationSettingsMutation,
@@ -875,7 +875,7 @@ function GraphQLEndpointUrl(props: {
organizationId: string;
projectId: string;
targetId: string;
-}): ReactElement {
+}) {
const { toast } = useToast();
const [mutation, mutate] = useMutation(TargetSettingsPage_UpdateTargetGraphQLEndpointUrl);
const { handleSubmit, values, handleChange, handleBlur, isSubmitting, errors, touched } =
@@ -1364,7 +1364,13 @@ export function DeleteTargetModalContent(props: {
-
+ {
+ ev.preventDefault();
+ props.toggleModalOpen();
+ }}
+ >
Cancel
diff --git a/packages/web/app/src/stories/change-permissions.stories.tsx b/packages/web/app/src/stories/change-permissions.stories.tsx
new file mode 100644
index 000000000..29e8866ed
--- /dev/null
+++ b/packages/web/app/src/stories/change-permissions.stories.tsx
@@ -0,0 +1,57 @@
+import { useState } from 'react';
+import { ChangePermissionsModalContent } from '@/components/organization/members/list';
+import { usePermissionsManager } from '@/components/organization/Permissions';
+import { Button } from '@/components/ui/button';
+import { Meta, StoryObj } from '@storybook/react';
+
+const meta: Meta = {
+ title: 'Modals/Change Permissions Modal',
+ component: ChangePermissionsModalContent,
+};
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ render: () => {
+ const initialScopes = {
+ organization: [],
+ project: [],
+ target: [],
+ };
+
+ const manager = {
+ organizationScopes: [],
+ projectScopes: [],
+ targetScopes: [],
+ canAccessOrganization: () => true,
+ canAccessProject: () => true,
+ canAccessTarget: () => true,
+ noneSelected: true,
+ setOrganizationScopes: () => console.log('Set Organization Scopes'),
+ setProjectScopes: () => console.log('Set Project Scopes'),
+ setTargetScopes: () => console.log('Set Target Scopes'),
+ state: 'IDLE',
+ submit: () => console.log('Submit'),
+ } as ReturnType;
+
+ const [openModal, setOpenModal] = useState(false);
+ const toggleModalOpen = () => setOpenModal(!openModal);
+
+ return (
+ <>
+ Open Modal
+ {openModal && (
+ console.log('Submit')}
+ key="change-permissions-modal"
+ />
+ )}
+ >
+ );
+ },
+};