From 38225e4c7396e999b3eb31f85fcdcaa654676326 Mon Sep 17 00:00:00 2001 From: Pedro Bonamin Date: Mon, 8 Jul 2024 18:23:08 +0200 Subject: [PATCH] fix(corel): add filter in documents table --- .../detail/documentTable/DocumentHeader.tsx | 6 +- .../tool/detail/documentTable/DocumentRow.tsx | 60 ++++++++++++------- .../detail/documentTable/DocumentTable.tsx | 12 +++- 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentHeader.tsx b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentHeader.tsx index 0ba930892d23..135687bbb2b1 100644 --- a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentHeader.tsx +++ b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentHeader.tsx @@ -8,8 +8,10 @@ import {type DocumentSort} from './types' export function DocumentHeader(props: { setSort: Dispatch> sort: DocumentSort + searchTerm: string + setSearchTerm: Dispatch> }) { - const {setSort, sort} = props + const {setSort, sort, searchTerm, setSearchTerm} = props const sortIcon = sort.order === 'asc' ? ArrowUpIcon : ArrowDownIcon @@ -23,6 +25,8 @@ export function DocumentHeader(props: { icon={SearchIcon} placeholder="Search documents" radius={3} + value={searchTerm} + onChange={(event) => setSearchTerm(event.currentTarget.value)} /> diff --git a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentRow.tsx b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentRow.tsx index ddb3266e45bd..367d536320ba 100644 --- a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentRow.tsx +++ b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentRow.tsx @@ -58,12 +58,23 @@ const DocumentStatus = ({status}: {status: keyof typeof DOCUMENT_STATUS}) => { ) } +const getDocumentStatus = (document: SanityDocument): keyof typeof DOCUMENT_STATUS => { + if (document._state === 'ready') { + return 'ready' + } + if (document._updatedAt === document._createdAt) { + return 'noChanges' + } + return 'edited' +} + export function DocumentRow(props: { + searchTerm: string document: SanityDocument release: BundleDocument setCollaborators: Dispatch> }) { - const {document, release, setCollaborators} = props + const {document, release, searchTerm, setCollaborators} = props const documentId = document._id const documentTypeName = document._type const schema = useSchema() @@ -72,13 +83,19 @@ export function DocumentRow(props: { throw new Error(`Schema type "${documentTypeName}" not found`) } - const perspective = release.name - const title = 'Document' + const perspective = `bundle.${release.name}` + const documentPreviewStore = useDocumentPreviewStore() const previewStateObservable = useMemo( () => - getPreviewStateObservable(documentPreviewStore, schemaType, documentId, title, perspective), + getPreviewStateObservable( + documentPreviewStore, + schemaType, + documentId, + 'Untitled', + perspective, + ), [documentId, documentPreviewStore, perspective, schemaType], ) @@ -88,6 +105,14 @@ export function DocumentRow(props: { published: null, }) + const previewValues = getPreviewValueWithFallback({ + value: document, + draft, + published, + version, + perspective, + }) + const history = useVersionHistory(documentId, document?._rev) useEffect(() => { @@ -99,7 +124,6 @@ export function DocumentRow(props: { // eslint-disable-next-line @typescript-eslint/no-shadow forwardRef(function LinkComponent(linkProps, ref: ForwardedRef) { return ( - // eslint-disable-next-line react/jsx-no-undef - + @@ -193,7 +207,7 @@ export function DocumentRow(props: { {/* Status */} - + {/* Actions is empty - don't render yet */} diff --git a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentTable.tsx b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentTable.tsx index 82dac811fd73..7399ab9c674f 100644 --- a/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentTable.tsx +++ b/packages/sanity/src/core/releases/tool/detail/documentTable/DocumentTable.tsx @@ -27,7 +27,8 @@ export function DocumentTable(props: { setCollaborators: Dispatch> }) { const {documents, release, setCollaborators} = props - + // Filter will happen at the DocumentRow level because we don't have access here to the preview values. + const [searchTerm, setSearchTerm] = useState('') const [sort, setSort] = useState({property: '_updatedAt', order: 'desc'}) const sortedDocuments = useMemo(() => { @@ -46,17 +47,22 @@ export function DocumentTable(props: { return bDate - aDate }) - return sorted }, [documents, sort]) return ( - + {sortedDocuments.map((d) => (