@zohodesk/dot
Version:
In this Library, we Provide Some Basic Components to Build Your Application
117 lines (109 loc) • 2.88 kB
JavaScript
import React from 'react';
import { defaultProps } from "./props/defaultProps";
import { propTypes, MessageUI_propTypes, MessageNew_propTypes } from "./props/propTypes";
import { Icon } from '@zohodesk/icons';
import AutoClose from "../actions/AutoClose";
import style from "./Message.module.css";
export default class Message extends React.Component {
constructor(props) {
super(props);
this.state = {
hideMessage: false
};
}
UNSAFE_componentWillReceiveProps(nextProps) {
let {
showMessage,
hideMessage
} = this.props;
if (showMessage !== nextProps.showMessage) {
if (nextProps.type != 'alert') {
setTimeout(() => {
hideMessage();
}, 3000);
}
}
}
componentDidMount() {
let {
type,
hideMessage
} = this.props;
if (type != 'alert') {
setTimeout(() => {
hideMessage();
}, 3000);
}
}
render() {
return /*#__PURE__*/React.createElement(MessageUI, { ...this.props
});
}
}
Message.propTypes = propTypes;
Message.defaultProps = defaultProps; // if (__DOCS__) {
// Message.docs = {
// componentGroup: 'Atom'
// };
// }
export function MessageUI(props) {
function onClose(e) {
let {
hideMessage,
onClose
} = props;
hideMessage && hideMessage(e);
onClose && onClose(e);
}
let {
type,
message,
onClick,
i18nKeys,
dataSelectorId
} = props;
let {
closeTitle = 'Close'
} = i18nKeys;
return /*#__PURE__*/React.createElement("div", {
className: style.message,
"data-id": `show_${type}_message`,
"data-test-id": `show_${type}_message`,
"data-selector-id": dataSelectorId
}, /*#__PURE__*/React.createElement("div", {
className: style.container
}, /*#__PURE__*/React.createElement("div", {
className: style[type]
}, /*#__PURE__*/React.createElement("span", {
className: style.tickIcn
}, /*#__PURE__*/React.createElement(Icon, {
name: type == 'alert' ? 'ZD-notifiExclamation' : type == 'info' ? 'ZD-info31' : 'ZD-check',
isBold: true,
size: "10"
}))), /*#__PURE__*/React.createElement("span", {
className: style.text,
onClick: onClick,
"data-id": "infoMessage",
"data-test-id": "infoMessage",
dangerouslySetInnerHTML: {
__html: message
}
}), /*#__PURE__*/React.createElement("span", {
className: style.close,
"data-title": closeTitle,
onClick: onClose,
"data-id": `close_${type}_message`,
"data-test-id": `close_${type}_message`
}, /*#__PURE__*/React.createElement(Icon, {
name: "ZD-closee",
isBold: true,
size: "10"
}))));
}
MessageUI.propTypes = MessageUI_propTypes;
export function MessageNew(props) {
return /*#__PURE__*/React.createElement(AutoClose, { ...props,
Element: MessageUI
});
}
MessageNew.propTypes = MessageNew_propTypes;