diff --git a/.travis.yml b/.travis.yml
index 991c69bba..59e1d15ba 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,11 +3,8 @@ sudo: required
dist: trusty
addons:
chrome: stable
-before_script:
- - "export DISPLAY=:99.0"
- - "sh -e /etc/init.d/xvfb start"
node_js:
-- 6
+- 8
cache:
directories:
- node_modules
diff --git a/package.json b/package.json
index b8649d8c1..e9f49338f 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"react-dom": "^16.0.0"
},
"devDependencies": {
- "autoprefixer": "^7.1.3",
+ "autoprefixer": "^8.1.0",
"babel-core": "^6.23.1",
"babel-eslint": "^8.0.1",
"babel-loader": "^7.1.0",
@@ -37,7 +37,7 @@
"babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.22.0",
"buffer-loader": "0.0.1",
- "chromedriver": "2.35.0",
+ "chromedriver": "2.37.0",
"classnames": "2.2.5",
"copy-webpack-plugin": "^4.3.0",
"css-loader": "^0.28.7",
@@ -48,11 +48,11 @@
"eslint-config-scratch": "^5.0.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-react": "^7.5.1",
- "file-loader": "1.1.9",
+ "file-loader": "1.1.11",
"get-float-time-domain-data": "0.1.0",
"get-user-media-promise": "1.1.1",
"gh-pages": "github:rschamp/gh-pages#publish-branch-to-subfolder",
- "html-webpack-plugin": "^2.30.0",
+ "html-webpack-plugin": "^3.0.5",
"immutable": "3.8.2",
"jest": "^21.0.0",
"lodash.bindall": "4.4.0",
@@ -77,10 +77,10 @@
"react-ga": "2.4.1",
"react-intl": "2.4.0",
"react-intl-redux": "0.7.0",
- "react-modal": "3.3.1",
+ "react-modal": "3.3.2",
"react-redux": "5.0.7",
- "react-responsive": "4.0.3",
- "react-style-proptype": "3.2.0",
+ "react-responsive": "4.1.0",
+ "react-style-proptype": "3.2.1",
"react-tabs": "2.2.1",
"react-test-renderer": "16.2.0",
"react-tooltip": "3.4.0",
@@ -89,12 +89,12 @@
"redux-throttle": "0.1.1",
"rimraf": "^2.6.1",
"scratch-audio": "0.1.0-prerelease.1516198804",
- "scratch-blocks": "0.1.0-prerelease.1519256473",
+ "scratch-blocks": "0.1.0-prerelease.1522264400",
"scratch-l10n": "2.0.20180108132626",
- "scratch-paint": "0.2.0-prerelease.20180302160120",
- "scratch-render": "0.1.0-prerelease.1516837442",
+ "scratch-paint": "0.2.0-prerelease.20180403143543",
+ "scratch-render": "0.1.0-prerelease.1522346711",
"scratch-storage": "0.4.0",
- "scratch-vm": "0.1.0-prerelease.1519681201-prerelease.1519681262",
+ "scratch-vm": "0.1.0-prerelease.1522355889-prerelease.1522355906",
"selenium-webdriver": "3.6.0",
"startaudiocontext": "1.2.1",
"style-loader": "^0.20.0",
diff --git a/src/components/asset-panel/selector.jsx b/src/components/asset-panel/selector.jsx
index f2ab58cae..ff818415a 100644
--- a/src/components/asset-panel/selector.jsx
+++ b/src/components/asset-panel/selector.jsx
@@ -45,6 +45,7 @@ const Selector = props => {
id={index}
key={`asset-${index}`}
name={item.name}
+ number={index + 1 /* 1-indexed */}
selected={index === selectedItemIndex}
onClick={onItemClick}
onDeleteButtonClick={onDeleteClick}
@@ -59,9 +60,9 @@ const Selector = props => {
Selector.propTypes = {
buttons: PropTypes.arrayOf(PropTypes.shape({
- message: PropTypes.string.isRequired,
+ title: PropTypes.string.isRequired,
img: PropTypes.string.isRequired,
- onClick: PropTypes.func.isRequired
+ onClick: PropTypes.func
})),
items: PropTypes.arrayOf(PropTypes.shape({
url: PropTypes.string,
diff --git a/src/components/browser-modal/browser-modal.jsx b/src/components/browser-modal/browser-modal.jsx
index c410f7f62..9052d5f57 100644
--- a/src/components/browser-modal/browser-modal.jsx
+++ b/src/components/browser-modal/browser-modal.jsx
@@ -9,7 +9,7 @@ import styles from './browser-modal.css';
const messages = defineMessages({
label: {
id: 'gui.unsupportedBrowser.label',
- defaultMessage: 'Internet Explorer is not supported',
+ defaultMessage: 'Browser is not supported',
description: ''
}
});
@@ -31,7 +31,7 @@ const BrowserModal = ({intl, ...props}) => (
{ /* eslint-disable max-len */ }
diff --git a/src/components/button/button.css b/src/components/button/button.css
index 44243650f..5e69aabd4 100644
--- a/src/components/button/button.css
+++ b/src/components/button/button.css
@@ -1,3 +1,19 @@
-.button {
+.outlined-button {
cursor: pointer;
+ border-radius: .25rem;
+ font-weight: bold;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ padding-left: .75rem;
+ padding-right: .75rem;
+}
+
+.icon {
+ margin-right: .5rem;
+ height: 1.5rem;
+}
+
+.content {
+ white-space: nowrap;
}
diff --git a/src/components/button/button.jsx b/src/components/button/button.jsx
index 59b39668f..1d348ba24 100644
--- a/src/components/button/button.jsx
+++ b/src/components/button/button.jsx
@@ -6,25 +6,38 @@ import styles from './button.css';
const ButtonComponent = ({
className,
+ disabled,
+ iconClassName,
+ iconSrc,
onClick,
children,
...props
}) => {
- if (props.disabled === true) {
+
+ if (disabled) {
onClick = function () {};
}
+ const icon = iconSrc && (
+
+ );
+
return (
- {children}
+ {icon}
+ {children}
);
};
@@ -33,6 +46,8 @@ ButtonComponent.propTypes = {
children: PropTypes.node,
className: PropTypes.string,
disabled: PropTypes.bool,
+ iconClassName: PropTypes.string,
+ iconSrc: PropTypes.string,
onClick: PropTypes.func.isRequired
};
diff --git a/src/components/filter/filter.jsx b/src/components/filter/filter.jsx
index 5363ef081..6ccf4fdd4 100644
--- a/src/components/filter/filter.jsx
+++ b/src/components/filter/filter.jsx
@@ -25,7 +25,6 @@ const FilterComponent = props => {
src={filterIcon}
/>
{
const {
activeTabIndex,
@@ -69,7 +73,9 @@ const GUIComponent = props => {
tabSelected: classNames(tabStyles.reactTabsTabSelected, styles.isSelected)
};
- const isRendererSupported = Renderer.isSupported();
+ if (isRendererSupported === null) {
+ isRendererSupported = Renderer.isSupported();
+ }
return (
+
\ No newline at end of file
diff --git a/src/components/language-selector/language-icon.svg b/src/components/language-selector/language-icon.svg
index 42bd409ab..e3a712ffb 100644
--- a/src/components/language-selector/language-icon.svg
+++ b/src/components/language-selector/language-icon.svg
@@ -1,12 +1,12 @@
-
+