From dd23449cc058a32b4b7eb2bf4fe4e5138adfce8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Thu, 22 Jan 2026 12:51:08 +0400 Subject: [PATCH] Fix apps/console lint issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- .../core/NewDomainDialogMutation.graphql.ts | 22 +- apps/console/src/components/PageError.tsx | 13 +- .../console/src/components/SnapshotBanner.tsx | 8 +- .../src/components/assets/AssetsTable.tsx | 6 +- .../components/assets/ReadOnlyAssetsTable.tsx | 55 +- .../components/audits/LinkedAuditsCard.tsx | 2 +- .../components/audits/LinkedAuditsDialog.tsx | 12 +- .../controls/LinkedControlsCard.tsx | 5 +- .../controls/LinkedControlsDialog.tsx | 55 +- .../components/documents/BulkExportDialog.tsx | 38 +- .../documents/LinkedDocumentsCard.tsx | 2 +- .../documents/LinkedDocumentsDialog.tsx | 12 +- .../src/components/documents/PDFPreview.tsx | 11 +- .../documents/PdfDownloadDialog.tsx | 32 +- .../src/components/form/AuditSelectField.tsx | 15 +- .../src/components/form/ControlledField.tsx | 21 +- .../src/components/form/CountriesField.tsx | 22 +- .../form/DocumentClassificationOptions.tsx | 2 +- .../components/form/DocumentTypeOptions.tsx | 2 +- .../src/components/form/EmailsField.tsx | 4 +- .../components/form/MeasureSelectField.tsx | 21 +- .../form/PeopleMultiSelectField.tsx | 9 +- .../src/components/form/PeopleSelectField.tsx | 12 +- .../form/ProcessingActivityEnumOptions.tsx | 12 +- .../components/form/SnapshotTypeOptions.tsx | 2 +- .../StateOfApplicabilityControlsField.tsx | 681 --------- .../form/VendorsMultiSelectField.tsx | 8 +- .../measures/LinkedMeasuresCard.tsx | 2 +- .../measures/LinkedMeasuresDialog.tsx | 28 +- .../obligations/LinkedObligationsCard.tsx | 2 +- .../obligations/LinkedObligationsDialog.tsx | 14 +- .../DeleteOrganizationDialog.tsx | 17 +- .../organizations/SlackConnection.tsx | 60 +- .../src/components/risks/LinkedRisksCard.tsx | 2 +- .../components/risks/LinkedRisksDialog.tsx | 22 +- .../snapshots/LinkedSnapshotsCard.tsx | 2 +- .../snapshots/LinkedSnapshotsDialog.tsx | 12 +- .../LinkedStatesOfApplicabilityCard.tsx | 472 +++--- .../LinkedStatesOfApplicabilityDialog.tsx | 424 +++--- .../src/components/table/EditableTable.tsx | 30 +- .../src/components/table/GraphQLCell.tsx | 11 +- .../src/components/table/PeopleCell.tsx | 5 +- .../src/components/table/VendorsCell.tsx | 5 +- .../src/components/tasks/TaskFormDialog.tsx | 37 +- .../src/components/tasks/TasksCard.tsx | 110 +- .../DeleteTrustCenterReferenceDialog.tsx | 4 +- .../trustCenter/TrustCenterAuditsCard.tsx | 30 +- .../trustCenter/TrustCenterDocumentsCard.tsx | 34 +- .../trustCenter/TrustCenterFilesCard.tsx | 42 +- .../TrustCenterReferenceDialog.tsx | 39 +- .../TrustCenterReferencesSection.tsx | 18 +- .../trustCenter/TrustCenterVendorsCard.tsx | 11 +- apps/console/src/hooks/graph/AssetGraph.ts | 2 +- apps/console/src/hooks/graph/AuditGraph.ts | 2 +- .../hooks/graph/ContinualImprovementGraph.ts | 4 +- apps/console/src/hooks/graph/DatumGraph.ts | 2 +- .../console/src/hooks/graph/FrameworkGraph.ts | 4 +- .../src/hooks/graph/NonconformityGraph.ts | 4 +- apps/console/src/hooks/graph/PeopleGraph.ts | 6 +- .../hooks/graph/ProcessingActivityGraph.ts | 4 +- apps/console/src/hooks/graph/RiskGraph.ts | 2 +- .../hooks/graph/StateOfApplicabilityGraph.ts | 4 +- .../graph/TrustCenterAccessTokenGraph.ts | 2 +- .../src/hooks/graph/TrustCenterFileGraph.ts | 6 +- apps/console/src/hooks/graph/VendorGraph.ts | 4 +- apps/console/src/hooks/useFetchQuery.ts | 4 +- apps/console/src/hooks/useMutateField.tsx | 2 +- .../src/hooks/useMutationWithToasts.ts | 14 +- apps/console/src/hooks/useStateWithSchema.ts | 6 +- apps/console/src/hooks/useVendorSearch.ts | 4 +- .../src/layouts/PublicTrustCenterLayout.tsx | 22 +- apps/console/src/main.tsx | 2 +- .../src/pages/DocumentSigningRequestsPage.tsx | 356 ++--- .../pages/iam/apiKeys/APIKeysPageLoader.tsx | 4 +- .../_components/PersonalAPIKeyList.tsx | 54 +- .../apiKeys/_components/PersonalAPIKeyRow.tsx | 14 +- .../_components/PersonalAPIKeyTokenAction.tsx | 4 +- .../src/pages/iam/auth/ForgotPasswordPage.tsx | 153 +- .../src/pages/iam/auth/ResetPasswordPage.tsx | 11 +- .../src/pages/iam/auth/VerifyEmailPage.tsx | 74 +- .../iam/auth/sign-in/PasswordSignInPage.tsx | 14 +- .../pages/iam/auth/sign-in/SSOSignInPage.tsx | 11 +- .../src/pages/iam/auth/sign-in/SignInPage.tsx | 6 +- .../auth/sign-up/SignUpFromInvitationPage.tsx | 7 +- .../src/pages/iam/auth/sign-up/SignUpPage.tsx | 7 +- .../pages/iam/memberships/MembershipsPage.tsx | 20 +- .../iam/memberships/MembershipsPageLoader.tsx | 4 +- .../pages/iam/memberships/ViewerLayout.tsx | 4 +- .../iam/memberships/ViewerLayoutLoader.tsx | 4 +- .../iam/memberships/ViewerLayoutLoading.tsx | 4 +- .../_components/InvitationCard.tsx | 16 +- .../_components/MembershipCard.tsx | 32 +- .../_components/ViewerDropdown.tsx | 4 +- .../iam/organizations/NewOrganizationPage.tsx | 16 +- .../organizations/ViewerMembershipLayout.tsx | 12 +- .../_components/MembershipsDropdown.tsx | 12 +- .../MembershipsDropdownMenuItem.tsx | 18 +- .../iam/organizations/_components/Sidebar.tsx | 340 ++--- .../settings/GeneralSettingsPage.tsx | 11 +- .../settings/MembersPageLoader.tsx | 4 +- .../settings/SAMLSettingsPage.tsx | 32 +- .../settings/SCIMSettingsPageLoader.tsx | 2 +- .../settings/_components/EditMemberDialog.tsx | 6 +- .../_components/EditSAMLConfigurationForm.tsx | 12 +- .../settings/_components/InvitationList.tsx | 40 +- .../_components/InvitationListItem.tsx | 54 +- .../settings/_components/InviteUserDialog.tsx | 20 +- .../settings/_components/MemberList.tsx | 34 +- .../settings/_components/MemberListItem.tsx | 32 +- .../_components/NewSAMLConfigurationForm.tsx | 8 +- .../settings/_components/OrganizationForm.tsx | 34 +- .../_components/SAMLConfigurationForm.tsx | 7 +- .../_components/SAMLConfigurationList.tsx | 115 +- .../_components/SAMLDomainVerifyDialog.tsx | 3 +- .../_components/SCIMConfiguration.tsx | 17 +- .../settings/_components/SCIMEventList.tsx | 26 +- .../_components/SCIMEventListItem.tsx | 18 +- .../organizations/assets/AssetDetailsPage.tsx | 14 +- .../pages/organizations/assets/AssetsPage.tsx | 24 +- .../assets/dialogs/CreateAssetDialog.tsx | 10 +- .../organizations/audits/AuditDetailsPage.tsx | 151 +- .../pages/organizations/audits/AuditsPage.tsx | 22 +- .../audits/dialogs/CreateAuditDialog.tsx | 20 +- .../ContinualImprovementDetailsPage.tsx | 22 +- .../ContinualImprovementsPage.tsx | 126 +- .../CreateContinualImprovementDialog.tsx | 22 +- .../src/pages/organizations/data/DataPage.tsx | 63 +- .../organizations/data/DatumDetailsPage.tsx | 10 +- .../data/dialogs/CreateDatumDialog.tsx | 10 +- .../documents/DocumentDetailPage.tsx | 360 ++--- .../organizations/documents/DocumentsPage.tsx | 302 ++-- .../dialogs/CreateDocumentDialog.tsx | 21 +- .../dialogs/PublishDocumentsDialog.tsx | 14 +- .../dialogs/SignatureDocumentsDialog.tsx | 18 +- .../documents/dialogs/UpdateVersionDialog.tsx | 38 +- .../documents/tabs/DocumentControlsTab.tsx | 2 +- .../documents/tabs/DocumentSignaturesTab.tsx | 86 +- .../EmployeeDocumentSignaturePage.tsx | 39 +- .../EmployeeDocumentSignaturePageLoader.tsx | 4 +- .../employee/EmployeeDocumentsPage.tsx | 74 +- .../employee/_components/VersionRow.tsx | 24 +- .../frameworks/FrameworkControlPage.tsx | 631 ++++---- .../frameworks/FrameworkDetailPage.tsx | 374 ++--- .../frameworks/FrameworksPage.tsx | 12 +- .../dialogs/FrameworkControlDialog.tsx | 341 +++-- .../dialogs/FrameworkFormDialog.tsx | 27 +- .../measures/MeasureDetailPage.tsx | 12 +- .../organizations/measures/MeasuresPage.tsx | 24 +- .../measures/dialog/CreateEvidenceDialog.tsx | 28 +- .../dialog/EvidenceDownloadDialog.tsx | 11 +- .../measures/dialog/EvidencePreviewDialog.tsx | 38 +- .../measures/dialog/MeasureFormDialog.tsx | 27 +- .../measures/tabs/MeasureControlsTab.tsx | 2 +- .../measures/tabs/MeasureEvidencesTab.tsx | 14 +- .../measures/tabs/MeasureRisksTab.tsx | 2 +- .../meetings/MeetingDetailPage.tsx | 6 +- .../organizations/meetings/MeetingsPage.tsx | 264 ++-- .../meetings/dialogs/CreateMeetingDialog.tsx | 10 +- .../dialogs/UpdateMeetingMinutesDialog.tsx | 8 +- .../meetings/tabs/MeetingMinutesTab.tsx | 16 +- .../nonconformities/NonconformitiesPage.tsx | 154 +- .../NonconformityDetailsPage.tsx | 26 +- .../dialogs/CreateNonconformityDialog.tsx | 14 +- .../obligations/ObligationDetailsPage.tsx | 686 ++++----- .../obligations/ObligationsPage.tsx | 128 +- .../dialogs/CreateObligationDialog.tsx | 10 +- .../organizations/people/PeopleListPage.tsx | 6 +- .../people/dialogs/CreatePeopleDialog.tsx | 12 +- .../people/dialogs/SetEndOfContractDialog.tsx | 8 +- .../people/tabs/PeopleProfileTab.tsx | 12 +- .../people/tabs/PeopleRoleTab.tsx | 8 +- .../ProcessingActivitiesPage.tsx | 1266 +++++++++-------- .../ProcessingActivityDetailsPage.tsx | 622 ++++---- .../CreateProcessingActivityDialog.tsx | 30 +- .../RightsRequestDetailsPage.tsx | 572 ++++---- .../rightsRequests/RightsRequestsPage.tsx | 408 +++--- .../dialogs/CreateRightsRequestDialog.tsx | 22 +- .../organizations/risks/FormRiskDialog.tsx | 51 +- .../organizations/risks/RiskDetailPage.tsx | 22 +- .../pages/organizations/risks/RisksPage.tsx | 30 +- .../risks/tabs/RiskControlsTab.tsx | 7 +- .../risks/tabs/RiskDocumentsTab.tsx | 2 +- .../risks/tabs/RiskMeasuresTab.tsx | 2 +- .../risks/tabs/RiskObligationsTab.tsx | 2 +- .../settings/DomainSettingsPage.tsx | 48 +- .../_components/DeleteDomainDialog.tsx | 10 +- .../settings/_components/DomainDialog.tsx | 195 +-- .../settings/_components/NewDomainDialog.tsx | 17 +- .../snapshots/SnapshotDetailPage.tsx | 2 +- .../organizations/snapshots/SnapshotsPage.tsx | 70 +- .../snapshots/dialog/SnapshotFormDialog.tsx | 6 +- .../StateOfApplicabilityDetailPage.tsx | 677 ++++----- .../StatesOfApplicabilityPage.tsx | 368 ++--- .../CreateStateOfApplicabilityDialog.tsx | 192 +-- .../dialogs/EditControlDialog.tsx | 106 +- .../dialogs/LinkControlDialog.tsx | 128 +- .../tabs/StateOfApplicabilityControlsTab.tsx | 632 ++++---- .../tabs/StateOfApplicabilityOverviewTab.tsx | 86 +- .../TrustCenterAccessEditDialog.tsx | 34 +- .../TrustCenterAccessItem.tsx | 16 +- .../TrustCenterAccessTab.tsx | 183 ++- .../TrustCenterDocumentAccessList.tsx | 199 +-- .../trustCenter/TrustCenterAuditsTab.tsx | 2 +- .../trustCenter/TrustCenterDocumentsTab.tsx | 8 +- .../trustCenter/TrustCenterFilesTab.tsx | 25 +- .../trustCenter/TrustCenterOverviewTab.tsx | 153 +- .../trustCenter/TrustCenterVendorsTab.tsx | 6 +- .../vendors/VendorDetailPage.tsx | 10 +- .../organizations/vendors/VendorsPage.tsx | 14 +- .../vendors/dialogs/CreateContactDialog.tsx | 8 +- .../dialogs/CreateRiskAssessmentDialog.tsx | 22 +- .../vendors/dialogs/CreateServiceDialog.tsx | 12 +- .../vendors/dialogs/CreateVendorDialog.tsx | 19 +- ...DeleteBusinessAssociateAgreementDialog.tsx | 4 +- .../DeleteDataPrivacyAgreementDialog.tsx | 4 +- .../EditBusinessAssociateAgreementDialog.tsx | 6 +- .../vendors/dialogs/EditContactDialog.tsx | 8 +- .../EditDataPrivacyAgreementDialog.tsx | 6 +- .../vendors/dialogs/EditServiceDialog.tsx | 12 +- .../dialogs/ImportAssessmentDialog.tsx | 13 +- ...UploadBusinessAssociateAgreementDialog.tsx | 101 +- .../UploadDataPrivacyAgreementDialog.tsx | 101 +- .../vendors/tabs/VendorCertificationsTab.tsx | 67 +- .../vendors/tabs/VendorComplianceTab.tsx | 6 +- .../vendors/tabs/VendorContactsTab.tsx | 54 +- .../vendors/tabs/VendorOverviewTab.tsx | 234 +-- .../vendors/tabs/VendorRiskAssessmentTab.tsx | 18 +- .../vendors/tabs/VendorServicesTab.tsx | 10 +- apps/console/src/routes.tsx | 5 +- .../src/routes/continualImprovementRoutes.ts | 4 +- apps/console/src/routes/documentsRoutes.ts | 5 +- apps/console/src/routes/frameworkRoutes.ts | 6 +- apps/console/src/routes/measureRoutes.ts | 5 +- apps/console/src/routes/meetingsRoutes.ts | 1 + apps/console/src/routes/peopleRoutes.ts | 4 +- .../src/routes/processingActivityRoutes.ts | 8 +- .../console/src/routes/rightsRequestRoutes.ts | 2 +- apps/console/src/routes/riskRoutes.ts | 12 +- .../src/routes/statesOfApplicabilityRoutes.ts | 8 +- apps/console/src/routes/vendorRoutes.ts | 8 +- apps/console/src/types.ts | 8 +- packages/eslint-config/src/reactConfigs.ts | 13 +- .../eslint-config/src/stylisticConfigs.ts | 9 +- packages/ui/src/Molecules/Field/Field.tsx | 8 +- 244 files changed, 7685 insertions(+), 8029 deletions(-) delete mode 100644 apps/console/src/components/form/StateOfApplicabilityControlsField.tsx diff --git a/apps/console/src/__generated__/core/NewDomainDialogMutation.graphql.ts b/apps/console/src/__generated__/core/NewDomainDialogMutation.graphql.ts index 560c63bdb..6f12b98d8 100644 --- a/apps/console/src/__generated__/core/NewDomainDialogMutation.graphql.ts +++ b/apps/console/src/__generated__/core/NewDomainDialogMutation.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<098714fcfe212fae40bdad19b10f8a00>> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -20,6 +20,7 @@ export type NewDomainDialogMutation$variables = { export type NewDomainDialogMutation$data = { readonly createCustomDomain: { readonly customDomain: { + readonly canDelete: boolean; readonly createdAt: string; readonly dnsRecords: ReadonlyArray<{ readonly name: string; @@ -159,6 +160,19 @@ v1 = [ "kind": "ScalarField", "name": "sslExpiresAt", "storageKey": null + }, + { + "alias": "canDelete", + "args": [ + { + "kind": "Literal", + "name": "action", + "value": "core:custom-domain:delete" + } + ], + "kind": "ScalarField", + "name": "permission", + "storageKey": "permission(action:\"core:custom-domain:delete\")" } ], "storageKey": null @@ -185,16 +199,16 @@ return { "selections": (v1/*: any*/) }, "params": { - "cacheID": "b8aa27fe9ab3442dea9b96a70966524b", + "cacheID": "39d421d36a6418d0ee687d43b9d7a7ee", "id": null, "metadata": {}, "name": "NewDomainDialogMutation", "operationKind": "mutation", - "text": "mutation NewDomainDialogMutation(\n $input: CreateCustomDomainInput!\n) {\n createCustomDomain(input: $input) {\n customDomain {\n id\n domain\n sslStatus\n dnsRecords {\n type\n name\n value\n ttl\n purpose\n }\n createdAt\n updatedAt\n sslExpiresAt\n }\n }\n}\n" + "text": "mutation NewDomainDialogMutation(\n $input: CreateCustomDomainInput!\n) {\n createCustomDomain(input: $input) {\n customDomain {\n id\n domain\n sslStatus\n dnsRecords {\n type\n name\n value\n ttl\n purpose\n }\n createdAt\n updatedAt\n sslExpiresAt\n canDelete: permission(action: \"core:custom-domain:delete\")\n }\n }\n}\n" } }; })(); -(node as any).hash = "f49cd22c5d6656e662fad5afab6fc344"; +(node as any).hash = "37ef764ab4f78a6898f06d00374347ee"; export default node; diff --git a/apps/console/src/components/PageError.tsx b/apps/console/src/components/PageError.tsx index 4b64f1682..1c9ff2ac4 100644 --- a/apps/console/src/components/PageError.tsx +++ b/apps/console/src/components/PageError.tsx @@ -26,8 +26,8 @@ export function PageError({ resetErrorBoundary, error: propsError }: Props) { // Reset error boundary on page change useEffect(() => { if ( - location.pathname !== baseLocation.current.pathname && - resetErrorBoundary + location.pathname !== baseLocation.current.pathname + && resetErrorBoundary ) { resetErrorBoundary(); } @@ -54,7 +54,7 @@ export function PageError({ resetErrorBoundary, error: propsError }: Props) { ); } - if (!error || (error && error.toString().includes("PAGE_NOT_FOUND"))) { + if (!error || (error instanceof Error && error.message.includes("PAGE_NOT_FOUND"))) { return (

@@ -68,7 +68,7 @@ export function PageError({ resetErrorBoundary, error: propsError }: Props) { ); } - if (error && error.toString().includes("FORBIDDEN")) { + if (error instanceof Error && error.message.includes("FORBIDDEN")) { return (

@@ -82,7 +82,7 @@ export function PageError({ resetErrorBoundary, error: propsError }: Props) { ); } - if (error && error.toString().includes("UNAUTHORIZED")) { + if (error instanceof Error && error.message.includes("UNAUTHORIZED")) { return (

@@ -103,7 +103,8 @@ export function PageError({ resetErrorBoundary, error: propsError }: Props) { {__("Something went wrong")} -

{error.toString()}

+ {error instanceof Error + &&

{error.message}

}

); diff --git a/apps/console/src/components/SnapshotBanner.tsx b/apps/console/src/components/SnapshotBanner.tsx index b8cbe6698..6f8b2bbc3 100644 --- a/apps/console/src/components/SnapshotBanner.tsx +++ b/apps/console/src/components/SnapshotBanner.tsx @@ -46,8 +46,8 @@ export function SnapshotBanner({ snapshotId }: Props) { } if ( - snapshot.type && - !isSnapshotTypeValidForUrl(snapshot.type, location.pathname) + snapshot.type + && !isSnapshotTypeValidForUrl(snapshot.type, location.pathname) ) { throw new Error("PAGE_NOT_FOUND"); } @@ -58,7 +58,9 @@ export function SnapshotBanner({ snapshotId }: Props) {
- {__("Snapshot")} {snapshot.name} + {__("Snapshot")} + {" "} + {snapshot.name}

diff --git a/apps/console/src/components/assets/AssetsTable.tsx b/apps/console/src/components/assets/AssetsTable.tsx index 27b57db28..20b24b332 100644 --- a/apps/console/src/components/assets/AssetsTable.tsx +++ b/apps/console/src/components/assets/AssetsTable.tsx @@ -141,7 +141,7 @@ export function AssetsTable(props: Props) { edge.node) ?? []} + defaultValue={item?.vendors?.edges?.map(edge => edge.node) ?? []} /> )} @@ -163,7 +163,7 @@ const useDeleteAsset = (connectionId: string) => { promisifyMutation(mutate)({ variables: { input: { - assetId: asset.id!, + assetId: asset.id, }, connections: [connectionId], }, @@ -171,7 +171,7 @@ const useDeleteAsset = (connectionId: string) => { { message: sprintf( __( - 'This will permanently delete "%s". This action cannot be undone.', + "This will permanently delete \"%s\". This action cannot be undone.", ), asset.name, ), diff --git a/apps/console/src/components/assets/ReadOnlyAssetsTable.tsx b/apps/console/src/components/assets/ReadOnlyAssetsTable.tsx index ebae035d9..968aa1a4e 100644 --- a/apps/console/src/components/assets/ReadOnlyAssetsTable.tsx +++ b/apps/console/src/components/assets/ReadOnlyAssetsTable.tsx @@ -39,7 +39,7 @@ export function ReadOnlyAssetsTable(props: Props) { - {assets.map((entry) => ( + {assets.map(entry => ( ))} @@ -51,7 +51,7 @@ function AssetRow({ entry }: { entry: AssetEntry }) { const organizationId = useOrganizationId(); const { __ } = useTranslate(); const { snapshotId } = useParams<{ snapshotId?: string }>(); - const vendors = entry.vendors?.edges.map((edge) => edge.node) ?? []; + const vendors = entry.vendors?.edges.map(edge => edge.node) ?? []; return ( {entry.amount} {entry.owner?.fullName ?? __("Unassigned")} - {vendors.length > 0 ? ( -

- {vendors.slice(0, 3).map((vendor) => ( - - - {vendor.name} - - ))} - {vendors.length > 3 && ( - - +{vendors.length - 3} - + {vendors.length > 0 + ? ( +
+ {vendors.slice(0, 3).map(vendor => ( + + + {vendor.name} + + ))} + {vendors.length > 3 && ( + + + + {vendors.length - 3} + + )} +
+ ) + : ( + {__("None")} )} -
- ) : ( - {__("None")} - )} ); diff --git a/apps/console/src/components/audits/LinkedAuditsCard.tsx b/apps/console/src/components/audits/LinkedAuditsCard.tsx index 5621ac074..399f1bdb5 100644 --- a/apps/console/src/components/audits/LinkedAuditsCard.tsx +++ b/apps/console/src/components/audits/LinkedAuditsCard.tsx @@ -131,7 +131,7 @@ export function LinkedAuditsCard(props: Props) { )} - {audits.map((audit) => ( + {audits.map(audit => ( ) { const { __ } = useTranslate(); const [search, setSearch] = useState(""); const audits = useMemo( - () => data.audits?.edges?.map((edge) => edge.node) ?? [], + () => data.audits?.edges?.map(edge => edge.node) ?? [], [data.audits], ); const linkedIds = useMemo(() => { - return new Set(props.linkedAudits?.map((a) => a.id) ?? []); + return new Set(props.linkedAudits?.map(a => a.id) ?? []); }, [props.linkedAudits]); const filteredAudits = useMemo(() => { - return audits.filter((audit) => + return audits.filter(audit => (audit.name || "").toLowerCase().includes(search.toLowerCase()), ); }, [audits, search]); @@ -127,7 +127,7 @@ function LinkedAuditsDialogContent(props: Omit) { />
- {filteredAudits.map((audit) => ( + {filteredAudits.map(audit => ( - {isLinked ? __("Unlink") : __("Link")} + + {" "} + {isLinked ? __("Unlink") : __("Link")} diff --git a/apps/console/src/components/controls/LinkedControlsCard.tsx b/apps/console/src/components/controls/LinkedControlsCard.tsx index 9abe40266..167b82ef5 100644 --- a/apps/console/src/components/controls/LinkedControlsCard.tsx +++ b/apps/console/src/components/controls/LinkedControlsCard.tsx @@ -111,7 +111,7 @@ export function LinkedControlsCard(props: Props) { )} - {controls.map((control) => ( + {controls.map(control => ( - {control.framework.name}{" "} + {control.framework.name} + {" "} {control.sectionTitle} diff --git a/apps/console/src/components/controls/LinkedControlsDialog.tsx b/apps/console/src/components/controls/LinkedControlsDialog.tsx index 4eebf15e1..a240366a8 100644 --- a/apps/console/src/components/controls/LinkedControlsDialog.tsx +++ b/apps/console/src/components/controls/LinkedControlsDialog.tsx @@ -12,6 +12,7 @@ import { } from "@probo/ui"; import { Suspense, + useEffect, useMemo, useRef, useState, @@ -104,11 +105,11 @@ export function LinkedControlsDialog(props: Props) {
- } + )} > @@ -123,32 +124,37 @@ function LinkedControlsDialogContent(props: Props & { ref: SearchRef }) { const mainData = useLazyLoadQuery(query, { organizationId, }); - const { data, loadNext, hasNext, isLoadingNext, refetch } = - usePaginationFragment( - controlsFragment, - mainData.organization as LinkedControlsDialogFragment$key, - ); + const { data, loadNext, hasNext, isLoadingNext, refetch } = usePaginationFragment( + controlsFragment, + mainData.organization as LinkedControlsDialogFragment$key, + ); - const controls = data.controls?.edges?.map((edge) => edge.node) ?? []; + const controls = data.controls?.edges?.map(edge => edge.node) ?? []; const controlIds = useMemo(() => { - return new Set(props.linkedControls?.map((c) => c.id) ?? []); + return new Set(props.linkedControls?.map(c => c.id) ?? []); }, [props.linkedControls]); - props.ref.current = { - search: useDebounceCallback((v: string) => { - refetch({ - first: 20, - filter: { - query: v, - }, - }); - }, 500), - }; + const handleSearch = useDebounceCallback((v: string) => { + refetch({ + first: 20, + filter: { + query: v, + }, + }); + }, 500); + + useEffect(() => { + if (!props.ref.current) { + props.ref.current = { + search: handleSearch, + }; + } + }); return ( <>
- {controls.map((control) => ( + {controls.map(control => ( onClick(props.control.id)} > - {props.control.sectionTitle} : {props.control.name} + {props.control.sectionTitle} + {" "} + : + {props.control.name} {props.control.framework.name} diff --git a/apps/console/src/components/documents/BulkExportDialog.tsx b/apps/console/src/components/documents/BulkExportDialog.tsx index 061a92bec..ee1895e89 100644 --- a/apps/console/src/components/documents/BulkExportDialog.tsx +++ b/apps/console/src/components/documents/BulkExportDialog.tsx @@ -35,7 +35,7 @@ type BulkExportFormData = z.infer; type Props = { children: ReactNode; - onExport: (options: BulkExportFormData) => void; + onExport: (options: BulkExportFormData) => Promise; isLoading?: boolean; defaultEmail: string; selectedCount: number; @@ -59,7 +59,7 @@ export const BulkExportDialog = forwardRef( watermarkEmail: defaultEmail, withSignatures: true, }, - } + }, ); const watchWatermark = watch("withWatermark"); @@ -70,14 +70,14 @@ export const BulkExportDialog = forwardRef( close: () => dialogRef.current?.close(), })); - const onSubmit = handleSubmit((data) => { + const onSubmit = async (data: BulkExportFormData) => { const options = { ...data, watermarkEmail: data.withWatermark ? data.watermarkEmail : undefined, }; - onExport(options); + await onExport(options); dialogRef.current?.close(); - }); + }; return ( <> @@ -87,13 +87,13 @@ export const BulkExportDialog = forwardRef( ref={dialogRef} title={sprintf(__("Export %s Documents"), selectedCount)} > -
+ void handleSubmit(onSubmit)(e)}>
setValue("withSignatures", checked)} + onChange={checked => setValue("withSignatures", checked)} />