chore: threads operation through the default edit view onSave handler
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user