Add document type field

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Jonathan
2025-06-02 20:40:38 +02:00
committed by Sacha Al Himdani
parent 7a65ec8672
commit 7d2d26aab5
20 changed files with 166 additions and 253 deletions

View File

@@ -3,6 +3,7 @@ import {
Dialog,
DialogContent,
DialogFooter,
DocumentTypeBadge,
IconMagnifyingGlass,
IconPlusLarge,
IconTrashCan,
@@ -13,8 +14,12 @@ import { useTranslate } from "@probo/i18n";
import { Suspense, useMemo, useState, type ReactNode } from "react";
import { graphql } from "relay-runtime";
import { useLazyLoadQuery } from "react-relay";
import type { DocumentLinkDialogQuery } from "./__generated__/DocumentLinkDialogQuery.graphql";
import type {
DocumentLinkDialogQuery,
DocumentLinkDialogQuery$data,
} from "./__generated__/DocumentLinkDialogQuery.graphql";
import { useOrganizationId } from "/hooks/useOrganizationId";
import type { NodeOf } from "/types";
const documentsQuery = graphql`
query DocumentLinkDialogQuery($organizationId: ID!) {
@@ -26,6 +31,7 @@ const documentsQuery = graphql`
node {
id
title
documentType
}
}
}
@@ -102,8 +108,12 @@ function DocumentLinkDialogContent(props: Omit<Props, "children">) {
);
}
type Document = NodeOf<
DocumentLinkDialogQuery$data["organization"]["documents"]
>;
type RowProps = {
document: { title: string; id: string };
document: Document;
linkedDocuments: Set<string>;
disabled?: boolean;
onLink: (documentId: string) => void;
@@ -123,6 +133,7 @@ function DocumentRow(props: RowProps) {
onClick={() => onClick(props.document.id)}
>
{props.document.title}
<DocumentTypeBadge type={props.document.documentType} />
<Button
disabled={props.disabled}
className="ml-auto"

View File

@@ -12,6 +12,7 @@ import {
IconChevronDown,
IconTrashCan,
DocumentVersionBadge,
DocumentTypeBadge,
} from "@probo/ui";
import { useTranslate } from "@probo/i18n";
import type { LinkedDocumentsCardFragment$key } from "./__generated__/LinkedDocumentsCardFragment.graphql";
@@ -26,6 +27,7 @@ const linkedDocumentFragment = graphql`
id
title
createdAt
documentType
versions(first: 1) {
edges {
node {
@@ -117,6 +119,7 @@ export function LinkedDocumentsCard<Params>(props: Props<Params>) {
<Thead>
<Tr>
<Th>{__("Name")}</Th>
<Th>{__("Type")}</Th>
<Th>{__("State")}</Th>
<Th></Th>
</Tr>
@@ -172,6 +175,9 @@ function DocumentRow(props: {
{document.title}
</div>
</Td>
<Td>
<DocumentTypeBadge type={document.documentType} />
</Td>
<Td>
<DocumentVersionBadge state={document.versions.edges[0].node.status} />
</Td>

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<dfc2f49ef0ca7d3a3e62809aef61dfe6>>
* @generated SignedSource<<ec5910871c59f229db361be238007976>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,6 +9,7 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type DocumentType = "ISMS" | "OTHER" | "POLICY";
export type DocumentLinkDialogQuery$variables = {
organizationId: string;
};
@@ -17,6 +18,7 @@ export type DocumentLinkDialogQuery$data = {
readonly documents?: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly documentType: DocumentType;
readonly id: string;
readonly title: string;
};
@@ -84,6 +86,13 @@ v4 = [
"name": "title",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "documentType",
"storageKey": null
},
(v3/*: any*/)
],
"storageKey": null
@@ -219,7 +228,7 @@ return {
]
},
"params": {
"cacheID": "fa671324c6ab818f40ccf9f83ca9af8a",
"cacheID": "0905fffe448540bf9c3d8abcbb5b7583",
"id": null,
"metadata": {
"connection": [
@@ -236,11 +245,11 @@ return {
},
"name": "DocumentLinkDialogQuery",
"operationKind": "query",
"text": "query DocumentLinkDialogQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n documents(first: 100) {\n edges {\n node {\n id\n title\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
"text": "query DocumentLinkDialogQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n documents(first: 100) {\n edges {\n node {\n id\n title\n documentType\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
}
};
})();
(node as any).hash = "70a09260215ae0f74ccf06a0c0872e75";
(node as any).hash = "6994e268de74f2102f48dc3e8156a797";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<da0435f63c82413be14bb2bb444aad49>>
* @generated SignedSource<<743c5a0c4d380bd05c0d8ccd7a664e58>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -10,9 +10,11 @@
import { ReaderFragment } from 'relay-runtime';
export type DocumentStatus = "DRAFT" | "PUBLISHED";
export type DocumentType = "ISMS" | "OTHER" | "POLICY";
import { FragmentRefs } from "relay-runtime";
export type LinkedDocumentsCardFragment$data = {
readonly createdAt: any;
readonly documentType: DocumentType;
readonly id: string;
readonly title: string;
readonly versions: {
@@ -59,6 +61,13 @@ return {
"name": "createdAt",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "documentType",
"storageKey": null
},
{
"alias": null,
"args": [
@@ -112,6 +121,6 @@ return {
};
})();
(node as any).hash = "907fbdc23df596e4f76e396a11878706";
(node as any).hash = "952e653849ce0b1b693de8d7e3086e3f";
export default node;