Skip to content

Description

The dialog plugin provides a modal dialog system for Handsontable. It allows you to display custom content in modal dialogs that overlay the table, providing a way to show notifications, error messages, loading indicators, or any other interactive content.

In order to enable the dialog mechanism, Options#dialog option must be set to true.

The plugin provides several configuration options to customize the dialog behavior and appearance:

  • template: The template to use for the dialog (default: null). The error will be thrown when the template is provided together with the content option.
    • type: The type of the template (‘confirm’)
    • title: The title of the dialog
    • description: The description of the dialog (default: ”)
    • buttons: The buttons to display in the dialog (default: [])
      • text: The text of the button
      • type: The type of the button (‘primary’ | ‘secondary’)
      • callback: The callback to trigger when the button is clicked
  • content: The string or HTMLElement content to display in the dialog (default: ”)
  • customClassName: Custom class name to apply to the dialog (default: ”)
  • background: Dialog background variant ‘solid’ | ‘semi-transparent’ (default: ‘solid’)
  • contentBackground: Whether to show content background (default: false)
  • animation: Whether to enable animations (default: true)
  • closable: Whether the dialog can be closed (default: false)
  • a11y: Object with accessibility options (default object below)
    • role: The role of the dialog (‘dialog’ | ‘alertdialog’) (default: ‘dialog’)
    • ariaLabel: The label of the dialog (default: ‘Dialog’)
    • ariaLabelledby: The ID of the element that labels the dialog (default: ”)
    • ariaDescribedby: The ID of the element that describes the dialog (default: ”),

Example

const MyComponent = () => {
const hotRef = useRef(null);
useEffect(() => {
const hot = hotRef.current.hotInstance;
const dialogPlugin = hot.getPlugin('dialog');
dialogPlugin.show({
content: <div>
<h2>React Dialog</h2>
<p>Dialog content rendered with React</p>
</div>,
closable: true
});
}, []);
return (
<HotTable
ref={hotRef}
settings={{
data: data,
dialog: {
customClassName: 'react-dialog',
closable: true
}
}}
/>
);
}

Options

dialog

Source code

dialog.dialog : boolean | object

The dialog option configures the Dialog plugin.

You can set the dialog option to one of the following:

SettingDescription
falseDisable the Dialog plugin
trueEnable the Dialog plugin with default options
dialog: Additional options
OptionPossible settingsDescription
templateObject with the template configuration (default: null).The template of the dialog allows to use prebuild templates
template.typeThe type of the template (‘confirm’)The type of the template
template.titleThe title of the templateThe title of the template
template.descriptionThe description of the templateThe description of the template
template.buttonsArray of objects with the buttons configuration (default: [])The buttons of the template
template.buttons.textThe text of the buttonThe text of the button
template.buttons.typeThe type of the button (‘primary''secondary’)
template.buttons.callbackThe callback function to trigger when the button is clickedThe callback function to trigger when the button is clicked
contentA string, HTMLElement or DocumentFragment (default: '')The content of the dialog
customClassNameA string (default: '')The custom class name of the dialog
backgroundOne of the options: 'solid' or 'semi-transparent' (default: 'solid')The background of the dialog
contentBackgroundBoolean (default: false)Whether to show the content background
animationBoolean (default: true)Whether to show the animation
closableBoolean (default: false)Whether to make the dialog closable
a11yObject with accessibility options (default: { role: 'dialog', ariaLabel: 'Dialog', ariaLabelledby: '', ariaDescribedby: '' })Accessibility options for the dialog
a11y.roleThe role of the dialog (‘dialog''alertdialog’)
a11y.ariaLabelThe label of the dialogThe label of the dialog
a11y.ariaLabelledbyThe ID of the element that labels the dialogThe ID of the element that labels the dialog
a11y.ariaDescribedbyThe ID of the element that describes the dialogThe ID of the element that describes the dialog

Read more:

Default: false
Since: 16.1.0
Example

// enable the Dialog plugin with default option
<HotTable
dialog={true}
/>
// enable the Dialog plugin with custom configuration
<HotTable
dialog={{
content: 'Dialog content',
customClassName: 'custom-dialog',
background: 'semi-transparent',
contentBackground: false,
animation: false,
closable: true,
a11y: {
role: 'dialog',
ariaLabel: 'Dialog',
ariaLabelledby: 'titleID',
ariaDescribedby: 'descriptionID',
}
}
}}
/>
// enable the Dialog plugin using a template
<HotTable
dialog={{
template: {
type: 'confirm',
title: 'Confirm',
description: 'Do you want change the value?',
}
}}
/>

Methods

destroy

Source code

dialog.destroy()

Destroy dialog and reset plugin state.

disablePlugin

Source code

dialog.disablePlugin()

Disable plugin for this Handsontable instance.

enablePlugin

Source code

dialog.enablePlugin()

Enable plugin for this Handsontable instance.

focus

Source code

dialog.focus()

Focus the dialog.

hide

Source code

dialog.hide()

Hide the currently open dialog. Closes the dialog and restores the focus to the table.

isEnabled

Source code

dialog.isEnabled() ⇒ boolean

Check if the plugin is enabled in the handsontable settings.

isVisible

Source code

dialog.isVisible() ⇒ boolean

Check if the dialog is currently visible.

Returns: boolean - True if the dialog is visible, false otherwise.

show

Source code

dialog.show(options)

Show dialog with given configuration. Displays the dialog with the specified content and options.

ParamTypeDescription
optionsobjectDialog configuration object containing content and display options.
options.templateobjectThe template to use for the dialog (default: null). The error will be thrown when the template is provided together with the content option.
options.template.type'confirm'The type of the template (‘confirm’).
options.template.titlestringThe title of the dialog.
options.template.descriptionstringThe description of the dialog. Default: ”.
options.template.buttonsArray<object>The buttons to display in the dialog. Default: [].
options.template.buttons.textstringThe text of the button.
options.template.buttons.type'primary'
'secondary'
The type of the button.
options.template.buttons.callbackfunctionThe callback to trigger when the button is clicked.
options.contentstring
HTMLElement
DocumentFragment
The content to display in the dialog. Can be a string, HTMLElement, or DocumentFragment. Default: ”
options.customClassNamestringCustom CSS class name to apply to the dialog container. Default: ”
options.background'solid'
'semi-transparent'
Dialog background variant. Default: ‘solid’.
options.contentBackgroundbooleanWhether to show content background. Default: false.
options.animationbooleanWhether to enable animations when showing/hiding the dialog. Default: true.
options.closablebooleanWhether the dialog can be closed by user interaction. Default: false.
options.a11yobjectObject with accessibility options.
options.a11y.rolestringThe role of the dialog. Default: ‘dialog’.
options.a11y.ariaLabelstringThe label of the dialog. Default: ‘Dialog’.
options.a11y.ariaLabelledbystringThe ID of the element that labels the dialog. Default: ”.
options.a11y.ariaDescribedbystringThe ID of the element that describes the dialog. Default: ”.

showAlert

Source code

dialog.showAlert(message, [callback])

Displays the alert dialog with the specified content.

ParamTypeDescription
messagestring
Object
The message to display in the dialog. Can be a string or an object with title and description properties.
[callback]functionoptional The callback to trigger when the button is clicked.

showConfirm

Source code

dialog.showConfirm(message, [onOk], [onCancel])

Displays the confirm dialog with the specified content and options.

ParamTypeDescription
messagestring
Object
The message to display in the dialog. Can be a string or an object with title and description properties.
[onOk]functionoptional The callback to trigger when the OK button is clicked.
[onCancel]functionoptional The callback to trigger when the Cancel button is clicked.

update

Source code

dialog.update(options)

Update the dialog configuration.

ParamTypeDescription
optionsobjectDialog configuration object containing content and display options.
options.templateobjectThe template to use for the dialog (default: null). The error will be thrown when the template is provided together with the content option.
options.template.type'confirm'The type of the template (‘confirm’).
options.template.titlestringThe title of the dialog.
options.template.descriptionstringThe description of the dialog. Default: ”.
options.template.buttonsArray<object>The buttons to display in the dialog. Default: [].
options.template.buttons.textstringThe text of the button.
options.template.buttons.type'primary'
'secondary'
The type of the button.
options.template.buttons.callbackfunctionThe callback to trigger when the button is clicked.
options.contentstring
HTMLElement
DocumentFragment
The content to display in the dialog. Can be a string, HTMLElement, or DocumentFragment. Default: ”
options.customClassNamestringCustom CSS class name to apply to the dialog container. Default: ”
options.background'solid'
'semi-transparent'
Dialog background variant. Default: ‘solid’.
options.contentBackgroundbooleanWhether to show content background. Default: false.
options.animationbooleanWhether to enable animations when showing/hiding the dialog. Default: true.
options.closablebooleanWhether the dialog can be closed by user interaction. Default: false.
options.a11yobjectObject with accessibility options.
options.a11y.rolestringThe role of the dialog. Default: ‘dialog’.
options.a11y.ariaLabelstringThe label of the dialog. Default: ‘Dialog’.
options.a11y.ariaLabelledbystringThe ID of the element that labels the dialog. Default: ”.
options.a11y.ariaDescribedbystringThe ID of the element that describes the dialog. Default: ”.

updatePlugin

Source code

dialog.updatePlugin()

Update plugin state after Handsontable settings update.