import { Plugin } from '@ckeditor/ckeditor5-core'; import { createDropdown } from '@ckeditor/ckeditor5-ui'; import WikiLinkFormView from './formview.js'; import { $gettext } from '../../lib/gettext'; const wikiIcon = ''; export default class WikiLinkUI extends Plugin { static get pluginName() { return 'WikiLinkUI'; } constructor(editor) { super(editor); this.formView = null; } init() { const editor = this.editor; editor.ui.componentFactory.add('studip-wiki', (locale) => { const dropdown = createDropdown(locale); const formView = (this.formView = new WikiLinkFormView(editor.locale)); dropdown.bind('isEnabled').to(editor.commands.get('insertStudipWikiLink')); dropdown.panelView.children.add(formView); dropdown.on( 'change:isOpen', (event, name, isOpen) => { if (isOpen) { formView.disableCssTransitions(); formView.reset(); formView._keywordInputView.fieldView.select(); formView.focus(); formView.enableCssTransitions(); } else { formView.reset(); formView.focus(); } }, { priority: 'low' } ); this._setupDropdownButton(dropdown); this._setupFormView(formView); this.on('close', () => (dropdown.isOpen = false)); return dropdown; }); } _setupDropdownButton(dropdown) { dropdown.buttonView.set({ icon: wikiIcon, label: $gettext('Link auf Wikiseite einfügen'), tooltip: true, }); } _setupFormView(formView) { formView.delegate('insert').to(this); } }