Files
Trilium/packages/ckeditor5/src/plugins/insert_date_time.ts

49 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-06-16 20:42:55 +03:00
import { ButtonView, Command, Plugin } from 'ckeditor5';
import dateTimeIcon from '../icons/date-time.svg?raw';
2025-06-16 20:48:01 +03:00
export const COMMAND_NAME = 'insertDateTimeToText';
2025-06-16 20:42:55 +03:00
export default class InsertDateTimePlugin extends Plugin {
init() {
const editor = this.editor;
2025-06-16 20:42:55 +03:00
editor.commands.add(COMMAND_NAME, new InsertDateTimeCommand(editor));
editor.ui.componentFactory.add('dateTime', locale => {
const view = new ButtonView( locale );
view.set( {
label: 'Date time',
icon: dateTimeIcon,
tooltip: true
} );
// enable only if the editor is not read only
2025-06-16 20:42:55 +03:00
const command = editor.commands.get(COMMAND_NAME)!;
view.bind('isEnabled').to(command, 'isEnabled');
view.on('execute', () => {
2025-06-16 20:42:55 +03:00
editor.execute(COMMAND_NAME);
editor.editing.view.focus();
2025-06-16 20:42:55 +03:00
});
return view;
});
}
2025-06-16 20:42:55 +03:00
}
class InsertDateTimeCommand extends Command {
refresh() {
this.isEnabled = !this.editor.isReadOnly;
}
execute() {
const editor = this.editor;
const editorEl = editor.editing.view.getDomRoot();
const component = glob.getComponentByEl(editorEl);
component.triggerCommand('insertDateTimeToText');
editor.editing.view.focus();
}
}