chore: threads operation through the default edit view onSave handler

This commit is contained in:
Jacob Fletcher
2023-05-22 17:13:35 -04:00
parent bb21f51f74
commit ae384306eb
4 changed files with 21 additions and 10 deletions

View File

@@ -1,14 +1,10 @@
import React, { HTMLAttributes } from 'react';
import { SanitizedCollectionConfig } from '../../../../collections/config/types';
import { Props as EditViewProps } from '../../views/collections/Edit/types';
export type DocumentDrawerProps = {
collectionSlug: string
id?: string
onSave?: (json: {
doc: Record<string, any>
message: string
collectionConfig: SanitizedCollectionConfig
}) => void
onSave?: EditViewProps['onSave']
customHeader?: React.ReactNode
drawerSlug?: string
}

View File

@@ -11,6 +11,7 @@ import { getTranslation } from '../../../../../../utilities/getTranslation';
import Tooltip from '../../../../elements/Tooltip';
import { useDocumentDrawer } from '../../../../elements/DocumentDrawer';
import { useConfig } from '../../../../utilities/Config';
import { Props as EditViewProps } from '../../../../views/collections/Edit/types';
import './index.scss';
@@ -36,7 +37,7 @@ export const AddNewRelation: React.FC<Props> = ({ path, hasMany, relationTo, val
collectionSlug: collectionConfig?.slug,
});
const onSave = useCallback((json) => {
const onSave: EditViewProps['onSave'] = useCallback((json) => {
const newValue = Array.isArray(relationTo) ? {
relationTo: collectionConfig.slug,
value: json.doc.id,

View File

@@ -1,4 +1,4 @@
import React from 'react';
import React, { useCallback } from 'react';
import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useConfig } from '../../../utilities/Config';
@@ -43,7 +43,7 @@ const DefaultEditView: React.FC<Props> = (props) => {
collection,
isEditing,
data,
onSave,
onSave: onSaveFromProps,
permissions,
isLoading,
internalState,
@@ -78,6 +78,15 @@ const DefaultEditView: React.FC<Props> = (props) => {
isEditing && `${baseClass}--is-editing`,
].filter(Boolean).join(' ');
const onSave = useCallback((json) => {
if (typeof onSaveFromProps === 'function') {
onSaveFromProps({
...json,
operation: id ? 'update' : 'create',
});
}
}, [id, onSaveFromProps]);
const operation = isEditing ? 'update' : 'create';
return (

View File

@@ -11,7 +11,12 @@ export type IndexProps = {
export type Props = IndexProps & {
data: Document
onSave?: () => void
onSave?: (json: Record<string, unknown> & {
doc: Record<string, any>
message: string
collectionConfig: SanitizedCollectionConfig
operation: 'create' | 'update',
}) => void
id?: string
permissions: CollectionPermission
isLoading: boolean