diff --git a/package.json b/package.json index 6ed991f38..eb74d9f47 100644 --- a/package.json +++ b/package.json @@ -102,12 +102,12 @@ "rimraf": "^2.6.1", "scratch-audio": "0.1.0-prerelease.20181023202904", "scratch-blocks": "0.1.0-prerelease.1542722191", - "scratch-l10n": "3.0.20181115134359", - "scratch-paint": "0.2.0-prerelease.20181120191526", - "scratch-render": "0.1.0-prerelease.20181126213837", + "scratch-l10n": "3.0.20181121224721", + "scratch-paint": "0.2.0-prerelease.20181128182047", + "scratch-render": "0.1.0-prerelease.20181127194508", "scratch-storage": "1.2.0", "scratch-svg-renderer": "0.2.0-prerelease.20181126212715", - "scratch-vm": "0.2.0-prerelease.20181121182825", + "scratch-vm": "0.2.0-prerelease.20181128224414", "selenium-webdriver": "3.6.0", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", diff --git a/src/components/action-menu/action-menu.jsx b/src/components/action-menu/action-menu.jsx index 01070b27f..36cf5d444 100644 --- a/src/components/action-menu/action-menu.jsx +++ b/src/components/action-menu/action-menu.jsx @@ -78,6 +78,9 @@ class ActionMenu extends React.Component { return event => { ReactTooltip.hide(); if (fn) fn(event); + // Blur the button so it does not keep focus after being clicked + // This prevents keyboard events from triggering the button + this.buttonRef.blur(); this.setState({forceHide: true, isOpen: false}, () => { setTimeout(() => this.setState({forceHide: false})); }); diff --git a/src/components/alerts/alert.css b/src/components/alerts/alert.css index 938d04b61..2f5b8bd6c 100644 --- a/src/components/alerts/alert.css +++ b/src/components/alerts/alert.css @@ -7,7 +7,7 @@ display: flex; flex-direction: row; overflow: hidden; - align-items: left; + justify-content: space-between; border-radius: $space; padding: $space; margin-bottom: 7px; @@ -37,13 +37,17 @@ font-weight: bold; font-size: .75rem; line-height: 14px; - width: 100%; display: flex; align-items: center; padding-left: .5rem; padding-right: .5rem; } +.alert-buttons { + display: flex; + flex-direction: row; +} + .alert-close-button { outline-style:none; } @@ -55,7 +59,7 @@ align-self: center; } -.connection-button { +.alert-connection-button { min-height: 2rem; padding: 0.55rem 0.9rem; border-radius: 0.35rem; @@ -68,6 +72,13 @@ display: flex; align-items: center; align-self: center; - margin-right: 13px; outline-style:none; } + +[dir="ltr"] .alert-connection-button { + margin-right: 13px; +} + +[dir="rtl"] .alert-connection-button { + margin-left: 13px; +} diff --git a/src/components/alerts/alert.jsx b/src/components/alerts/alert.jsx index e38816723..4b6bdf493 100644 --- a/src/components/alerts/alert.jsx +++ b/src/components/alerts/alert.jsx @@ -22,7 +22,11 @@ const AlertComponent = ({ iconSpinner, iconURL, level, + showDownload, + showSaveNow, onCloseAlert, + onDownload, + onSaveNow, onReconnect, showReconnect }) => ( @@ -42,7 +46,7 @@ const AlertComponent = ({
{extensionName ? ( ) : content}
- {showReconnect && ( - - )} - {closeButton && ( - - - - )} +
+ {showSaveNow && ( + + )} + {showDownload && ( + + )} + {showReconnect && ( + + )} + {closeButton && ( + + + + )} +
); @@ -88,8 +118,12 @@ AlertComponent.propTypes = { iconURL: PropTypes.string, level: PropTypes.string, onCloseAlert: PropTypes.func.isRequired, + onDownload: PropTypes.func, onReconnect: PropTypes.func, - showReconnect: PropTypes.bool + onSaveNow: PropTypes.func, + showDownload: PropTypes.func, + showReconnect: PropTypes.bool, + showSaveNow: PropTypes.bool }; AlertComponent.defaultProps = { diff --git a/src/components/alerts/alerts.jsx b/src/components/alerts/alerts.jsx index b2b14a638..21d6c01c4 100644 --- a/src/components/alerts/alerts.jsx +++ b/src/components/alerts/alerts.jsx @@ -25,7 +25,9 @@ const AlertsComponent = ({ key={index} level={a.level} message={a.message} + showDownload={a.showDownload} showReconnect={a.showReconnect} + showSaveNow={a.showSaveNow} onCloseAlert={onCloseAlert} /> ))} diff --git a/src/components/connection-modal/auto-scanning-step.jsx b/src/components/connection-modal/auto-scanning-step.jsx index a73c0b58d..b6f0dd813 100644 --- a/src/components/connection-modal/auto-scanning-step.jsx +++ b/src/components/connection-modal/auto-scanning-step.jsx @@ -63,7 +63,7 @@ const AutoScanningStep = props => ( - + {props.phase === PHASES.prescan && ( ( )} - {props.phase === PHASES.prescan && ( - - )} - {props.phase === PHASES.pressbutton && ( -
+ + {props.phase === PHASES.prescan && ( + )} + {props.phase === PHASES.pressbutton && ( +
+ + +
+ )} + {props.phase === PHASES.notfound && ( -
- )} - {props.phase === PHASES.notfound && ( - - )} + )} +
); diff --git a/src/components/connection-modal/connected-step.jsx b/src/components/connection-modal/connected-step.jsx index aa71c63c8..f71b3556e 100644 --- a/src/components/connection-modal/connected-step.jsx +++ b/src/components/connection-modal/connected-step.jsx @@ -25,7 +25,7 @@ const ConnectedStep = props => ( - + ( -
+