@itwin/core-react
Version:
A react component library of iTwin.js UI general purpose components
117 lines • 5.63 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Dialog
*/
import "./MessageBox.scss";
import classnames from "classnames";
import * as React from "react";
import { MessageSeverity } from "@itwin/appui-abstract";
import { SvgHelpCircular, SvgHelpCircularHollow, SvgInfoCircular, SvgInfoCircularHollow, SvgStatusError, SvgStatusErrorHollow, SvgStatusRejected, SvgStatusRejectedHollow, SvgStatusSuccess, SvgStatusSuccessHollow, SvgStatusWarning, } from "@itwin/itwinui-icons-react";
import { Icon } from "@itwin/itwinui-react";
import { Dialog } from "../dialog/Dialog.js";
/** Message Box React component.
* @public
* @deprecated in 4.15.0. Use {@link https://itwinui.bentley.com/docs/dialog iTwinUI Dialog} instead.
*/
export class MessageBox extends React.PureComponent {
static defaultProps = {
minWidth: 400,
minHeight: 400,
width: "512px",
modal: true,
};
render() {
return (React.createElement(Dialog, { title: this.props.title, buttonCluster: this.props.buttonCluster, opened: this.props.opened, onClose: this.props.onClose, onEscape: this.props.onEscape, modal: this.props.modal, className: this.props.className, style: this.props.style, width: this.props.width },
React.createElement(MessageContainer, { severity: this.props.severity, className: this.props.contentClassName, style: this.props.contentStyle }, this.props.children)));
}
}
/** Message Container React component.
* @public
* @deprecated in 4.15.0. Use {@link https://itwinui.bentley.com/docs/dialog iTwinUI Dialog} instead.
*/
export class MessageContainer extends React.PureComponent {
static getIconClassName(severity, _hollow) {
let iconClassName = "";
switch (severity) {
case MessageSeverity.None:
iconClassName = "";
break;
case MessageSeverity.Success:
iconClassName = "core-message-box-success";
break;
case MessageSeverity.Information:
iconClassName = "core-message-box-information";
break;
case MessageSeverity.Question:
iconClassName = "core-message-box-question";
break;
case MessageSeverity.Warning:
iconClassName = "core-message-box-warning";
break;
case MessageSeverity.Error:
iconClassName = "core-message-box-error";
break;
case MessageSeverity.Fatal:
iconClassName = "core-message-box-fatal";
break;
}
return iconClassName;
}
/** Returns the React icon corresponding to the MessageSeverity.
* @param severity MessageSeverity
* @param hollow set to true to return the hollow form of the icon.
* @returns IconSpec
*/
/* ignore for unit tests and replace with visual testing */
static getIcon(severity, hollow) {
const icon = getIcon(severity, hollow);
return icon ?? "";
}
render() {
const iconClassName = classnames("icon", "core-message-box-icon", MessageContainer.getIconClassName(this.props.severity));
const icon = getIcon(this.props.severity);
return (React.createElement("div", { className: "core-message-box-container" },
icon ? (React.createElement(Icon, { className: iconClassName, size: "large", fill: toFill(this.props.severity) }, icon)) : undefined,
React.createElement("div", { className: classnames("core-message-box-content", this.props.className), style: this.props.style }, this.props.children)));
}
}
function getIcon(severity, hollow) {
switch (severity) {
case MessageSeverity.None:
return undefined;
case MessageSeverity.Success:
return hollow ? React.createElement(SvgStatusSuccessHollow, null) : React.createElement(SvgStatusSuccess, null);
case MessageSeverity.Information:
return hollow ? React.createElement(SvgInfoCircularHollow, null) : React.createElement(SvgInfoCircular, null);
case MessageSeverity.Question:
return hollow ? React.createElement(SvgHelpCircularHollow, null) : React.createElement(SvgHelpCircular, null);
case MessageSeverity.Warning:
return React.createElement(SvgStatusWarning, null); // TODO - need icon-status-warning-hollow icon
case MessageSeverity.Error:
return hollow ? React.createElement(SvgStatusErrorHollow, null) : React.createElement(SvgStatusError, null);
break;
case MessageSeverity.Fatal:
return hollow ? React.createElement(SvgStatusRejectedHollow, null) : React.createElement(SvgStatusRejected, null);
}
}
function toFill(severity) {
switch (severity) {
case MessageSeverity.None:
return undefined;
case MessageSeverity.Success:
return "positive";
case MessageSeverity.Information:
case MessageSeverity.Question:
return "informational";
case MessageSeverity.Warning:
return "warning";
case MessageSeverity.Error:
case MessageSeverity.Fatal:
return "negative";
}
return undefined;
}
//# sourceMappingURL=MessageBox.js.map