: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
import React, {useEffect} from 'react';
import classnames from 'classnames';
export default function Modal(
focusAfterClose = 'container',
disableCloseButton = false,
focusAfterOpen ? focusAfterOpen : getTitleId(),
return () => SUI.closeModal();
const handleKeyDown = (event) => {
const isTargetInput = $(event.target).is('.sui-modal.sui-active input');
if (isTargetInput && event.keyCode === 13) {
if (!enterDisabled && onEnter) {
return id + '-modal-title';
function getHeaderActions() {
const closeButton = getCloseButton();
} else if (headerActions) {
return <div className="sui-actions-right">{closeButton}</div>
function getCloseButton() {
return <button id={id + '-close-button'}
onClick={() => onClose()}
disabled={disableCloseButton}
className={classnames("sui-button-icon", {
'sui-button-float--right': small
<span className="sui-icon-close sui-md" aria-hidden="true"/>
<span className="sui-screen-reader-text">
{__('Close this dialog window', 'wds')}
function getDialogClasses() {
return Object.assign({}, {
return <div className={classnames('sui-modal', getDialogClasses())}
onKeyDown={e => handleKeyDown(e)}>
className={classnames('sui-modal-content', id + '-modal')}
aria-labelledby={id + '-modal-title'}
aria-describedby={id + '-modal-description'}>
<div className="sui-box" role="document">
<div className={classnames('sui-box-header', {
'sui-flatten sui-content-center sui-spacing-top--40': small
className={classnames('sui-box-title', {
<div className={classnames('sui-box-body', {
'sui-content-center': small
<p className="sui-description"
id={id + '-modal-description'}>
{footer && <div className="sui-box-footer">