@@ -142,7 +143,7 @@ class ActionMenu extends React.Component {
fileAccept, fileChange, fileInput}, keyId) => {
const isComingSoon = !handleClick;
const hasFileInput = fileInput;
- const tooltipId = title;
+ const tooltipId = `${mainTooltipId}-${title}`;
return (
);
@@ -198,7 +199,8 @@ ActionMenu.propTypes = {
fileInput: PropTypes.func // Optional, only for file upload
})),
onClick: PropTypes.func.isRequired,
- title: PropTypes.node.isRequired
+ title: PropTypes.node.isRequired,
+ tooltipPlace: PropTypes.string
};
export default ActionMenu;
diff --git a/src/components/asset-panel/selector.css b/src/components/asset-panel/selector.css
index 132f7d71d..535c38b0b 100644
--- a/src/components/asset-panel/selector.css
+++ b/src/components/asset-panel/selector.css
@@ -32,6 +32,7 @@ $fade-out-distance: 100px;
position: absolute;
bottom: 0;
left: 0;
+ right:0;
background: linear-gradient(rgba(232,237,241, 0),rgba(232,237,241, 1));
height: $fade-out-distance;
width: 100%;
diff --git a/src/components/coming-soon/coming-soon.css b/src/components/coming-soon/coming-soon.css
index bdd7f87eb..091d2dd34 100644
--- a/src/components/coming-soon/coming-soon.css
+++ b/src/components/coming-soon/coming-soon.css
@@ -16,7 +16,7 @@
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
font-size: 1rem !important;
line-height: 1.25rem !important;
- z-index: $z-index-coming-soon !important;
+ z-index: $z-index-tooltip !important;
}
.coming-soon:after {
diff --git a/src/components/forms/label.css b/src/components/forms/label.css
index 759a731d3..14691f105 100644
--- a/src/components/forms/label.css
+++ b/src/components/forms/label.css
@@ -9,13 +9,20 @@
.input-label, .input-label-secondary {
font-size: 0.625rem;
- margin-right: .5rem;
user-select: none;
cursor: default;
white-space: nowrap;
}
+[dir="ltr"] .input-label, .input-label-secondary {
+ margin-right: .5rem;
+}
+
+[dir="rtl"] .input-label, .input-label-secondary {
+ margin-left: .5rem;
+}
+
.input-label {
font-weight: bold;
}
diff --git a/src/components/gui/gui.css b/src/components/gui/gui.css
index e40b02573..1924bd8c4 100644
--- a/src/components/gui/gui.css
+++ b/src/components/gui/gui.css
@@ -63,7 +63,6 @@
flex-grow: 1;
height: 80%;
margin-bottom: 0;
- margin-left: -0.5rem;
border-radius: 1rem 1rem 0 0;
border: 1px solid $ui-black-transparent;
@@ -82,9 +81,24 @@
white-space: nowrap;
}
+[dir="ltr"] .tab {
+ margin-left: -0.5rem;
+}
+
+[dir="rtl"] .tab {
+ margin-right: -0.5rem;
+}
+
+[dir="ltr"] .tab:nth-of-type(1) {
+ margin-left: 0;
+}
+
+[dir="rtl"] .tab:nth-of-type(1) {
+ margin-right: 0;
+}
+
/* Use z-indices to force left-on-top for tabs */
.tab:nth-of-type(1) {
- margin-left: 0;
z-index: 3;
}
.tab:nth-of-type(2) {
@@ -106,11 +120,19 @@
}
.tab img {
- margin-right: 0.125rem;
width: 1.375rem;
filter: grayscale(100%);
}
+[dir="ltr"] .tab img {
+ margin-right: 0.125rem;
+}
+
+[dir="rtl"] .tab img {
+ margin-left: 0.125rem;
+ transform: scaleX(-1);
+}
+
.tab.is-selected img {
filter: none;
}
@@ -191,7 +213,7 @@
padding-right: $space;
min-height: 0; /* this makes it work in Firefox */
-
+
/*
For making the sprite-selector a scrollable pane
@todo: Not working in Safari
@@ -206,6 +228,7 @@
position: absolute;
bottom: 0;
left: 0;
+ right: 0;
z-index: $z-index-extension-button;
background: $motion-primary;
@@ -240,6 +263,10 @@ $fade-out-distance: 15px;
height: 1.75rem;
}
+[dir="rtl"] .extension-button-icon {
+ transform: scaleX(-1);
+}
+
.extension-button > div {
margin-top: 0;
}
diff --git a/src/components/gui/gui.jsx b/src/components/gui/gui.jsx
index 8d251bd14..c3b7cff71 100644
--- a/src/components/gui/gui.jsx
+++ b/src/components/gui/gui.jsx
@@ -65,6 +65,7 @@ const GUIComponent = props => {
importInfoVisible,
intl,
isPlayerOnly,
+ isRtl,
loading,
onExtensionButtonClick,
onActivateCostumesTab,
@@ -110,6 +111,7 @@ const GUIComponent = props => {
) : (
{previewInfoVisible ? (
@@ -282,6 +284,7 @@ GUIComponent.propTypes = {
importInfoVisible: PropTypes.bool,
intl: intlShape.isRequired,
isPlayerOnly: PropTypes.bool,
+ isRtl: PropTypes.bool,
loading: PropTypes.bool,
onActivateCostumesTab: PropTypes.func,
onActivateSoundsTab: PropTypes.func,
diff --git a/src/components/sound-editor/sound-editor.css b/src/components/sound-editor/sound-editor.css
index 7703802e3..c6e620001 100644
--- a/src/components/sound-editor/sound-editor.css
+++ b/src/components/sound-editor/sound-editor.css
@@ -14,6 +14,10 @@
align-items: center;
}
+[dir="rtl"] .row-reverse {
+ flex-direction: row-reverse;
+}
+
.row + .row {
margin-top: calc(2 * $space);
}
@@ -23,15 +27,31 @@
flex-direction: row;
}
-.input-group + .input-group {
+[dir="ltr"] .input-group + .input-group {
margin-left: calc(2 * $space);
}
-.input-group {
+[dir="rtl"] .input-group + .input-group {
+ margin-right: calc(2 * $space);
+}
+
+[dir="ltr"] .input-group {
padding-right: calc(2 * $space);
border-right: 1px dashed $ui-black-transparent;
}
+[dir="rtl"] .input-group {
+ padding-left: calc(2 * $space);
+ border-left: 1px dashed $ui-black-transparent;
+}
+
+[dir="rtl"] .row-reverse > .input-group {
+ padding-left: 0;
+ padding-right: calc(2 * $space);
+ border-left: none;
+ border-right: 1px dashed $ui-black-transparent;
+}
+
.waveform-container {
display: flex;
justify-content: space-around;
@@ -87,26 +107,31 @@ $border-radius: 0.25rem;
/*min-width: 1.5rem;*/
}
+[dir="rtl"] .undo-icon, [dir="rtl"] .redo-icon {
+ transform: scaleX(-1);
+}
+
.trim-button {
display: flex;
align-items: center;
color: $text-primary;
font-size: 0.625rem;
- margin-left: 1rem;
user-select: none;
}
+[dir="ltr"] .trim-button {
+ margin-left: 1rem;
+}
+
+[dir="rtl"] .trim-button {
+ margin-right: 1rem;
+}
+
.trim-button > img {
width: 1.25rem;
margin-bottom: -0.375rem;
}
-.input-group-right {
- flex-grow: 1;
- display: flex;
- flex-direction: row-reverse;
-}
-
.effect-button {
flex-basis: 60px;
color: $text-primary;
@@ -124,26 +149,47 @@ $border-radius: 0.25rem;
margin-bottom: -0.375rem;
}
-.button-group {
+[dir="ltr"] .button-group {
margin-left: 1rem;
}
+[dir="rtl"] .button-group {
+ margin-right: 1rem;
+}
+
.button-group .button {
border-radius: 0;
- border-left: none;
}
-.button-group .button:last-of-type {
+[dir="ltr"] .button-group .button {
+ border-left: none;
+}
+[dir="rtl"] .button-group .button {
+ border-right: none;
+}
+
+[dir="ltr"] .button-group .button:last-of-type {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
-.button-group .button:first-of-type {
+[dir="ltr"] .button-group .button:first-of-type {
border-left: 1px solid $ui-black-transparent;
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
+[dir="rtl"] .button-group .button:last-of-type {
+ border-top-left-radius: $border-radius;
+ border-bottom-left-radius: $border-radius;
+}
+
+[dir="rtl"] .button-group .button:first-of-type {
+ border-right: 1px solid $ui-black-transparent;
+ border-top-right-radius: $border-radius;
+ border-bottom-right-radius: $border-radius;
+}
+
.button:disabled > img {
opacity: 0.25;
}
diff --git a/src/components/sound-editor/sound-editor.jsx b/src/components/sound-editor/sound-editor.jsx
index a4aafcd91..f97338e06 100644
--- a/src/components/sound-editor/sound-editor.jsx
+++ b/src/components/sound-editor/sound-editor.jsx
@@ -122,6 +122,7 @@ const SoundEditor = props => (
onClick={props.onUndo}
>
@@ -133,6 +134,7 @@ const SoundEditor = props => (
onClick={props.onRedo}
>
@@ -168,7 +170,7 @@ const SoundEditor = props => (
/>