BookStack/resources/js/wysiwyg/ui/defaults/form-definitions.ts

50 lines
1.4 KiB
TypeScript
Raw Normal View History

import {EditorFormDefinition, EditorSelectFormFieldDefinition} from "../framework/forms";
2024-05-30 23:50:55 +08:00
import {EditorUiContext} from "../framework/core";
import {$createLinkNode} from "@lexical/link";
import {$createTextNode, $getSelection} from "lexical";
2024-05-30 23:50:55 +08:00
export const link: EditorFormDefinition = {
submitText: 'Apply',
action(formData, context: EditorUiContext) {
context.editor.update(() => {
const selection = $getSelection();
const linkNode = $createLinkNode(formData.get('url')?.toString() || '', {
title: formData.get('title')?.toString() || '',
target: formData.get('target')?.toString() || '',
});
linkNode.append($createTextNode(formData.get('text')?.toString() || ''));
selection?.insertNodes([linkNode]);
});
2024-05-30 23:50:55 +08:00
return true;
},
fields: [
{
label: 'URL',
name: 'url',
type: 'text',
},
{
label: 'Text to display',
name: 'text',
type: 'text',
},
{
label: 'Title',
name: 'title',
type: 'text',
},
{
label: 'Open link in...',
name: 'target',
type: 'select',
valuesByLabel: {
'Current window': '',
'New window': '_blank',
}
} as EditorSelectFormFieldDefinition,
],
};