/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* License GNU General Public License version 2 or later;
* Copyright 2013-2019 Valeriy Chupurnov https://xdsoft.net
*/
import { Dialog } from './dialog';
import { ToolbarIcon } from '../toolbar/icon';
/**
* Show `promt` dialog. Work without Jodit object
*
* @method Promt
* @param {string} msg Message
* @param {string|function} [title] Title or callback
* @param {function} [callback] callback. The first argument is the value entered
* @param {string} [placeholder] Placeholder for input
* @example
* ```javascript
* Jodit.Promt("Enter your name", "Promt Dialog", function (name) {
* if (name.length < 3) {
* Jodit.Alert("The name must be at least 3 letters");
* return false;
* }
* // do something
* });
* ```
*/
export const Promt = (
msg: string,
title: string | (() => false | void) | undefined,
callback: (value: string) => false | void,
placeholder?: string
): Dialog => {
const dialog: Dialog = new Dialog(),
$cancel: HTMLAnchorElement = dialog.create.fromHTML(
'' +
ToolbarIcon.getIcon('cancel') +
'' +
Jodit.prototype.i18n('Cancel') +
''
) as HTMLAnchorElement,
$ok: HTMLAnchorElement = dialog.create.fromHTML(
'' +
ToolbarIcon.getIcon('check') +
'' +
Jodit.prototype.i18n('Ok') +
''
) as HTMLAnchorElement,
$div: HTMLFormElement = dialog.create.element('form', {
class: 'jodit_promt',
}),
$input: HTMLInputElement = dialog.create.element('input', {
autofocus: true,
}),
$label: HTMLLabelElement = dialog.create.element(
'label'
) as HTMLLabelElement;
if (typeof title === 'function') {
callback = title;
title = undefined;
}
if (placeholder) {
$input.setAttribute('placeholder', placeholder);
}
$label.appendChild(dialog.create.text(msg));
$div.appendChild($label);
$div.appendChild($input);
$cancel.addEventListener('click', dialog.close, false);
const onclick = () => {
if (
!callback ||
typeof callback !== 'function' ||
callback($input.value) !== false
) {
dialog.close();
}
};
$ok.addEventListener('click', onclick);
$div.addEventListener('submit', () => {
onclick();
return false;
});
dialog.setFooter([$ok, $cancel]);
dialog.open($div, (title as string) || ' ', true, true);
$input.focus();
return dialog;
};
import { Jodit } from '../../Jodit';