From 74f37926aead4ca402093b4a93988aee5689abac Mon Sep 17 00:00:00 2001 From: Lena Kotets Date: Fri, 30 Dec 2016 15:56:37 +0200 Subject: [PATCH] New modal toast component * added modal toast component * moved modal toast to Modal section and made fixes by eslint * fix syntax style * removed hard coded text (cherry picked from commit eef1e52) --- .../scripts/components/ModalExamples.js | 40 +++++++++++++++++++ src/scripts/Modal.js | 24 ++++++++++- src/scripts/ModalToast.js | 14 +++++++ src/scripts/index.js | 2 + 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/scripts/ModalToast.js diff --git a/examples/client/scripts/components/ModalExamples.js b/examples/client/scripts/components/ModalExamples.js index 1c1d895ab..0bf2743a2 100644 --- a/examples/client/scripts/components/ModalExamples.js +++ b/examples/client/scripts/components/ModalExamples.js @@ -21,6 +21,10 @@ const LOOKUP_DATA = [ { label: 'Opportunity', value: '3', icon: 'standard:opportunity' }, ]; +function onModalToastClose() { + alert('Close modal toast requested'); +} + export default class ModalExamples extends Component { constructor() { super(); @@ -28,6 +32,7 @@ export default class ModalExamples extends Component { modal1: { opened: false }, modal2: { opened: false }, modal3: { opened: false }, + modal4: { opened: false }, }; } @@ -49,6 +54,16 @@ export default class ModalExamples extends Component { const hideModal1 = this.hideModal.bind(this, 'modal1'); const hideModal2 = this.hideModal.bind(this, 'modal2'); const hideModal3 = this.hideModal.bind(this, 'modal3'); + const hideModal4 = this.hideModal.bind(this, 'modal4'); + + const modalToastConfig = { + modalToastClose: onModalToastClose, + modalToastLevel: 'error', + modalToastIcon: 'warning', + modalToastAlt: 'Close', + modalToastText: 'This is error alert with icon and close button.', + }; + return (

Modal

@@ -147,6 +162,31 @@ export default class ModalExamples extends Component {
+
+ + +
+ +
+

+ Sit nulla est ex deserunt exercitation anim occaecat. Nostrud ullamco deserunt aute id consequat veniam incididunt duis in sint irure nisi. Mollit officia cillum Lorem ullamco minim nostrud elit officia tempor esse quis. Cillum sunt ad dolore + quis aute consequat ipsum magna exercitation reprehenderit magna. Tempor cupidatat consequat elit dolor adipisicing. +

+

+ Dolor eiusmod sunt ex incididunt cillum quis nostrud velit duis sit officia. Lorem aliqua enim laboris do dolor eiusmod officia. Mollit incididunt nisi consectetur esse laborum eiusmod pariatur proident. Eiusmod et adipisicing culpa deserunt + nostrud ad veniam nulla aute est. Labore esse esse cupidatat amet velit id elit consequat minim ullamco mollit enim excepteur ea. +

+
+
+
+
+ +
); } diff --git a/src/scripts/Modal.js b/src/scripts/Modal.js index a471d63e7..53a8b467f 100644 --- a/src/scripts/Modal.js +++ b/src/scripts/Modal.js @@ -1,6 +1,7 @@ import React, { Component, PropTypes } from 'react'; import classnames from 'classnames'; import Button from './Button'; +import ModalToast from './ModalToast'; export class ModalHeader extends Component { constructor() { @@ -15,7 +16,16 @@ export class ModalHeader extends Component { } render() { - const { className, title, tagline, closeButton, ...props } = this.props; + const { className, title, tagline, closeButton, modalToast, ...props } = this.props; + + const { + modalToastClose, + modalToastLevel, + modalToastIcon, + modalToastAlt, + modalToastText, + } = modalToast || {}; + delete props.onClose; const hdClassNames = classnames(className, 'slds-modal__header'); return ( @@ -38,6 +48,17 @@ export class ModalHeader extends Component { /> : null } + { + modalToast ? + : + null + } ); } @@ -50,6 +71,7 @@ ModalHeader.propTypes = { onClose: PropTypes.func, className: PropTypes.string, closeButton: PropTypes.bool, + modalToast: PropTypes.shape(), }; class Modal extends Component { diff --git a/src/scripts/ModalToast.js b/src/scripts/ModalToast.js new file mode 100644 index 000000000..f4318fa87 --- /dev/null +++ b/src/scripts/ModalToast.js @@ -0,0 +1,14 @@ +import React, { PropTypes } from 'react'; + +import { Toast } from './Notification'; + +const ModalToast = ({ text, ...props }) => +
+ { text } +
; + +ModalToast.propTypes = { + text: PropTypes.string, +}; + +export default ModalToast; diff --git a/src/scripts/index.js b/src/scripts/index.js index d806ebb70..f3b1b240e 100644 --- a/src/scripts/index.js +++ b/src/scripts/index.js @@ -57,6 +57,7 @@ import Toggle from './Toggle'; import Pill from './Pill'; import FileSelector from './FileSelector'; import Card from './Card'; +import ModalToast from './ModalToast'; export { Notification, Alert, Toast, @@ -102,6 +103,7 @@ export { Pill, FileSelector, Card, + ModalToast, }; export { default as util } from './util';