From 88a2e0078bb20bbe7bb478ea3a5bad57c49a388d Mon Sep 17 00:00:00 2001 From: nklhrstv Date: Sat, 1 Feb 2020 00:37:35 +0200 Subject: [PATCH] Toast redesigned --- src/common/Toasts/Toast/Toast.js | 52 +++++++++++++++++++---------- src/common/Toasts/Toast/index.js | 2 +- src/common/Toasts/Toast/styles.less | 35 ++++++++++--------- 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/src/common/Toasts/Toast/Toast.js b/src/common/Toasts/Toast/Toast.js index b667a6d55..8b4470c02 100644 --- a/src/common/Toasts/Toast/Toast.js +++ b/src/common/Toasts/Toast/Toast.js @@ -5,9 +5,30 @@ const Icon = require('stremio-icons/dom'); const Button = require('stremio/common/Button'); const styles = require('./styles'); -const Toast = ({ type, title, text, icon, closeButton, onClick, onClose }) => { +const Toast = ({ type, title, message, icon, dataset, onSelect, onClose }) => { + const toastOnClick = React.useCallback((event) => { + if (!event.nativeEvent.selectPrevented && typeof onSelect === 'function') { + onSelect({ + type: 'select', + dataset: dataset, + reactEvent: event, + nativeEvent: event.nativeEvent + }); + } + }, [dataset, onSelect]); + const closeButtonOnClick = React.useCallback((event) => { + event.nativeEvent.selectPrevented = true; + if (typeof onClose === 'function') { + onClose({ + type: 'close', + dataset: dataset, + reactEvent: event, + nativeEvent: event.nativeEvent + }); + } + }, [dataset, onClose]); return ( -
+ - : - null - } -
+ + ); }; Toast.propTypes = { - type: PropTypes.string, + type: PropTypes.oneOf(['success', 'alert', 'error']), title: PropTypes.string, - text: PropTypes.string, + message: PropTypes.string, icon: PropTypes.string, - closeButton: PropTypes.bool, - onClick: PropTypes.func, + dataset: PropTypes.objectOf(PropTypes.string), + onSelect: PropTypes.func, onClose: PropTypes.func }; diff --git a/src/common/Toasts/Toast/index.js b/src/common/Toasts/Toast/index.js index efe31724b..37050e200 100644 --- a/src/common/Toasts/Toast/index.js +++ b/src/common/Toasts/Toast/index.js @@ -1,3 +1,3 @@ const Toast = require('./Toast'); -module.exports = Toast; \ No newline at end of file +module.exports = Toast; diff --git a/src/common/Toasts/Toast/styles.less b/src/common/Toasts/Toast/styles.less index 6bb5c6399..41ff0ca39 100644 --- a/src/common/Toasts/Toast/styles.less +++ b/src/common/Toasts/Toast/styles.less @@ -2,13 +2,14 @@ display: flex; flex-direction: row; min-height: 6rem; + max-width: 25rem; margin-bottom: 1rem; border: thin solid; - color: var(--color-backgrounddarker); - fill: var(--color-backgrounddarker); background-color: var(--color-surfacelighter); overflow: visible; - pointer-events: all; + box-shadow: 0 0.3rem 0.5rem var(--color-backgrounddarker40), + 0 0.6rem 1rem var(--color-backgrounddarker20); + pointer-events: auto; &.success { color: var(--color-signal5); @@ -26,10 +27,10 @@ } .icon-container { - width: 5rem; - padding: 1rem; - padding-right: 0; - overflow: visible; + flex: none; + align-self: stretch; + width: 4.5rem; + padding: 1.2rem 0 1.2rem 1.2rem; .icon { display: block; @@ -38,33 +39,35 @@ } } - .message-container { + .info-container { flex: 1; + align-self: stretch; padding: 1rem; - &.clickable { - cursor: pointer; + .title-container { + font-size: 1.2rem; } - .message-caption { - font-weight: bold; + .message-container { + font-size: 1.1rem; } } .close-button-container { flex: none; + align-self: flex-start; width: 3rem; height: 3rem; padding: 1rem; + &:hover { + background-color: var(--color-surfacelight); + } + .icon { display: block; width: 100%; height: 100%; } - - &:hover { - background-color: var(--color-surfacelight); - } } } \ No newline at end of file