From 5ec54e244531638632809fe6b93ffecf52b9a264 Mon Sep 17 00:00:00 2001 From: tasnim Date: Sun, 4 Aug 2024 15:27:31 +0300 Subject: [PATCH] Display UI in RTL languages correctly --- src/components/EditorCanvas/Table.jsx | 13 +++++++- src/components/EditorHeader/ControlPanel.jsx | 30 +++++++++++++++---- .../EditorHeader/LayoutDropdown.jsx | 11 ++++--- src/components/EditorHeader/Modal/Modal.jsx | 10 +++++-- src/components/EditorSidePanel/SidePanel.jsx | 5 +++- src/components/Workspace.jsx | 3 ++ src/i18n/utils/rtl.js | 2 ++ 7 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 src/i18n/utils/rtl.js diff --git a/src/components/EditorCanvas/Table.jsx b/src/components/EditorCanvas/Table.jsx index f356df5..517a455 100644 --- a/src/components/EditorCanvas/Table.jsx +++ b/src/components/EditorCanvas/Table.jsx @@ -18,6 +18,8 @@ import { useLayout, useSettings, useDiagram, useSelect } from "../../hooks"; import TableInfo from "../EditorSidePanel/TablesTab/TableInfo"; import { useTranslation } from "react-i18next"; import { dbToTypes } from "../../data/datatypes"; +import { isRtl } from "../../i18n/utils/rtl"; +import i18n from "../../i18n/i18n"; export default function Table(props) { const [hoveredField, setHoveredField] = useState(-1); @@ -84,6 +86,7 @@ export default function Table(props) { ? "border-solid border-blue-500" : "border-zinc-500" }`} + style={{ direction: "ltr" }} >
-
+

{e.name}

{e.type + @@ -235,6 +241,11 @@ export default function Table(props) { } position="right" showArrow + style={ + isRtl(i18n.language) + ? { direction: "rtl" } + : { direction: "ltr" } + } > {field(e, i)} diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index f1b09f0..f0acd78 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -2,6 +2,7 @@ import { useState } from "react"; import { IconCaretdown, IconChevronRight, + IconChevronLeft, IconChevronUp, IconChevronDown, IconSaveStroked, @@ -68,6 +69,7 @@ import { useTranslation } from "react-i18next"; import { exportSQL } from "../../utils/exportSQL"; import { databases } from "../../data/databases"; import { jsonToMermaid } from "../../utils/exportAs/mermaid"; +import { isRtl } from "../../i18n/utils/rtl"; export default function ControlPanel({ diagramId, @@ -109,7 +111,7 @@ export default function ControlPanel({ const { undoStack, redoStack, setUndoStack, setRedoStack } = useUndoRedo(); const { selectedElement, setSelectedElement } = useSelect(); const { transform, setTransform } = useTransform(); - const { t } = useTranslation(); + const { t, i18n } = useTranslation(); const navigate = useNavigate(); const invertLayout = (component) => @@ -1374,7 +1376,10 @@ export default function ControlPanel({ function toolbar() { return ( -

+
@@ -1382,7 +1387,9 @@ export default function ControlPanel({ style={{ width: "240px" }} position="bottomLeft" render={ - + +