UNPKG

terra-abstract-modal

Version:

The abstract modal is a structural component that provides the ability to display portal'd content in a layer above the app.

79 lines (66 loc) 2.28 kB
import React, { useRef, useEffect } from 'react'; import AbstractModal from 'terra-abstract-modal'; import classNames from 'classnames/bind'; import styles from './ExampleAbstractSize.module.scss'; import generalStyles from './AbstractModalDocCommon.module.scss'; const cx = classNames.bind(generalStyles); /* eslint-disable-next-line react/prop-types */ const AlertDialogContent = ({ handleCloseModal }) => { const confirmBtn = useRef(null); useEffect(() => { confirmBtn.current.focus(); }, []); return ( <div id="alert-dialog-content" className={cx('content-wrapper')}> <h1>Alert Dialog Modal</h1> <br /> <p> The abstract modal can be used to create an alert dialog modal. You can use the role, {' '} <code>alertdialog</code> {' '} , to create a modal dialog that interrupts the users workflow to get a response, usually some sort of confirmation. </p> <button ref={confirmBtn} type="button" onClick={handleCloseModal}>Confirm action</button> <button type="button" onClick={handleCloseModal}>Close Modal</button> </div> ); }; /* VoiceOver will not read the content of the modal dialog if the role attribute is set to `alertdialog` and ariaLabel is defined */ const ariaLabel = ''; class AbstractModalAlertDialog extends React.Component { constructor() { super(); this.state = { isOpen: false, }; this.handleOpenModal = this.handleOpenModal.bind(this); this.handleCloseModal = this.handleCloseModal.bind(this); } handleOpenModal() { this.setState({ isOpen: true }); } handleCloseModal() { this.setState({ isOpen: false }); } render() { return ( <div> <AbstractModal ariaLabel={ariaLabel} aria-labelledby="alert-dialog-content" isOpen={this.state.isOpen} onRequestClose={this.handleCloseModal} closeOnOutsideClick={false} classNameModal={styles['fixed-size']} role="alertdialog" > <AlertDialogContent handleCloseModal={this.handleCloseModal} /> </AbstractModal> <button type="button" onClick={this.handleOpenModal}>Open Modal</button> </div> ); } } export default AbstractModalAlertDialog;