feat: allow customizing the link fields (#2559)
This commit is contained in:
committed by
GitHub
parent
ddb34c3d83
commit
bf6522898d
@@ -63,16 +63,16 @@ export const LinkButton: React.FC<{
|
||||
const locale = useLocale();
|
||||
const [initialState, setInitialState] = useState<Fields>({});
|
||||
|
||||
const { t } = useTranslation(['upload', 'general']);
|
||||
const { t, i18n } = useTranslation(['upload', 'general']);
|
||||
const editor = useSlate();
|
||||
const config = useConfig();
|
||||
|
||||
const [fieldSchema] = useState(() => {
|
||||
const fields: Field[] = [
|
||||
...getBaseFields(config),
|
||||
];
|
||||
const baseFields: Field[] = getBaseFields(config);
|
||||
|
||||
if (customFieldSchema) {
|
||||
const fields = typeof customFieldSchema === 'function' ? customFieldSchema({ defaultFields: baseFields, config, i18n }) : baseFields;
|
||||
|
||||
if (Array.isArray(customFieldSchema)) {
|
||||
fields.push({
|
||||
name: 'fields',
|
||||
type: 'group',
|
||||
|
||||
@@ -79,11 +79,11 @@ export const LinkElement: React.FC<{
|
||||
const [renderPopup, setRenderPopup] = useState(false);
|
||||
const [initialState, setInitialState] = useState<Fields>({});
|
||||
const [fieldSchema] = useState(() => {
|
||||
const fields: Field[] = [
|
||||
...getBaseFields(config),
|
||||
];
|
||||
const baseFields: Field[] = getBaseFields(config);
|
||||
|
||||
if (customFieldSchema) {
|
||||
const fields = typeof customFieldSchema === 'function' ? customFieldSchema({ defaultFields: baseFields, config, i18n }) : baseFields;
|
||||
|
||||
if (Array.isArray(customFieldSchema)) {
|
||||
fields.push({
|
||||
name: 'fields',
|
||||
type: 'group',
|
||||
|
||||
@@ -413,7 +413,10 @@ export const richText = baseField.keys({
|
||||
})),
|
||||
}),
|
||||
link: joi.object({
|
||||
fields: joi.array().items(joi.link('#field')),
|
||||
fields: joi.alternatives(
|
||||
joi.array().items(joi.link('#field')),
|
||||
joi.func(),
|
||||
),
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
/* eslint-disable no-use-before-define */
|
||||
import { CSSProperties } from 'react';
|
||||
import { Editor } from 'slate';
|
||||
import type { TFunction } from 'i18next';
|
||||
import type { TFunction, i18n as Ii18n } from 'i18next';
|
||||
import type { EditorProps } from '@monaco-editor/react';
|
||||
import { Operation, Where } from '../../types';
|
||||
import { SanitizedConfig } from "../../config/types";
|
||||
import { TypeWithID } from '../../collections/config/types';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import { ConditionalDateProps } from '../../admin/components/elements/DatePicker/types';
|
||||
@@ -353,7 +354,7 @@ export type RichTextField = FieldBase & {
|
||||
}
|
||||
}
|
||||
link?: {
|
||||
fields?: Field[];
|
||||
fields?: Field[] | ((args: {defaultFields: Field[], config: SanitizedConfig, i18n: Ii18n}) => Field[]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user