tldraw 3.16.0-next.34fddf633325 → 3.16.0-next.b88d494af370
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cjs/index.d.ts +102 -5
- package/dist-cjs/index.js +8 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
- package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
- package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -12
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
- package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
- package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -3
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
- package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
- package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +14 -0
- package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
- package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
- package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
- package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
- package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
- package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
- package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
- package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +14 -14
- package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
- package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
- package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
- package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
- package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
- package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
- package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
- package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
- package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
- package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +19 -4
- package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +153 -152
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
- package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +153 -20
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/context/events.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +3 -3
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-esm/index.d.mts +102 -5
- package/dist-esm/index.mjs +15 -1
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
- package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
- package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +13 -12
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
- package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
- package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -3
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
- package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +16 -2
- package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
- package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
- package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
- package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
- package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
- package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
- package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
- package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +14 -14
- package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
- package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
- package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
- package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
- package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
- package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +2 -2
- package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
- package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +19 -4
- package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +162 -154
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
- package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +161 -22
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/context/events.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +3 -3
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +12 -0
- package/src/lib/canvas/TldrawScribble.tsx +1 -1
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
- package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -14
- package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
- package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
- package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -3
- package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
- package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
- package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
- package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
- package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
- package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
- package/src/lib/ui/TldrawUi.tsx +17 -2
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
- package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
- package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
- package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
- package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
- package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
- package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
- package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
- package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +39 -43
- package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
- package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
- package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
- package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
- package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
- package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +2 -2
- package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
- package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
- package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +32 -9
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +186 -172
- package/src/lib/ui/components/primitives/layout.tsx +107 -0
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +220 -19
- package/src/lib/ui/context/events.tsx +1 -0
- package/src/lib/ui/hooks/useTools.tsx +140 -10
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +363 -305
- package/tldraw.css +656 -595
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
TldrawUiPopoverTrigger,
|
|
12
12
|
} from '../primitives/TldrawUiPopover'
|
|
13
13
|
import { TldrawUiToolbar, TldrawUiToolbarButton } from '../primitives/TldrawUiToolbar'
|
|
14
|
+
import { useTldrawUiOrientation } from '../primitives/layout'
|
|
14
15
|
import { TldrawUiMenuContextProvider } from '../primitives/menus/TldrawUiMenuContext'
|
|
15
16
|
import { DefaultActionsMenuContent } from './DefaultActionsMenuContent'
|
|
16
17
|
|
|
@@ -26,6 +27,7 @@ export const DefaultActionsMenu = memo(function DefaultActionsMenu({
|
|
|
26
27
|
const msg = useTranslation()
|
|
27
28
|
const breakpoint = useBreakpoint()
|
|
28
29
|
const isReadonlyMode = useReadonly()
|
|
30
|
+
const { orientation } = useTldrawUiOrientation()
|
|
29
31
|
|
|
30
32
|
const ref = useRef<HTMLDivElement>(null)
|
|
31
33
|
usePassThroughWheelEvents(ref)
|
|
@@ -52,18 +54,28 @@ export const DefaultActionsMenu = memo(function DefaultActionsMenu({
|
|
|
52
54
|
data-testid="actions-menu.button"
|
|
53
55
|
title={msg('actions-menu.title')}
|
|
54
56
|
>
|
|
55
|
-
<TldrawUiButtonIcon
|
|
57
|
+
<TldrawUiButtonIcon
|
|
58
|
+
icon={orientation === 'horizontal' ? 'dots-vertical' : 'dots-horizontal'}
|
|
59
|
+
small
|
|
60
|
+
/>
|
|
56
61
|
</TldrawUiToolbarButton>
|
|
57
62
|
</TldrawUiPopoverTrigger>
|
|
58
63
|
<TldrawUiPopoverContent
|
|
59
|
-
side={
|
|
64
|
+
side={
|
|
65
|
+
orientation === 'horizontal'
|
|
66
|
+
? breakpoint >= PORTRAIT_BREAKPOINT.TABLET
|
|
67
|
+
? 'bottom'
|
|
68
|
+
: 'top'
|
|
69
|
+
: 'right'
|
|
70
|
+
}
|
|
60
71
|
sideOffset={6}
|
|
61
72
|
>
|
|
62
73
|
<TldrawUiToolbar
|
|
63
74
|
ref={ref}
|
|
64
75
|
label={msg('actions-menu.title')}
|
|
65
|
-
className="tlui-actions-menu
|
|
76
|
+
className="tlui-actions-menu"
|
|
66
77
|
data-testid="actions-menu.content"
|
|
78
|
+
orientation="grid"
|
|
67
79
|
>
|
|
68
80
|
<TldrawUiMenuContextProvider type="icons" sourceId="actions-menu">
|
|
69
81
|
{content}
|
|
@@ -5,6 +5,7 @@ import { useBreakpoint } from '../context/breakpoints'
|
|
|
5
5
|
import { useTldrawUiComponents } from '../context/components'
|
|
6
6
|
import { useTranslation } from '../hooks/useTranslation/useTranslation'
|
|
7
7
|
import { TldrawUiToolbar } from './primitives/TldrawUiToolbar'
|
|
8
|
+
import { TldrawUiRow } from './primitives/layout'
|
|
8
9
|
|
|
9
10
|
/** @public @react */
|
|
10
11
|
export const DefaultMenuPanel = memo(function MenuPanel() {
|
|
@@ -32,16 +33,16 @@ export const DefaultMenuPanel = memo(function MenuPanel() {
|
|
|
32
33
|
|
|
33
34
|
return (
|
|
34
35
|
<nav ref={ref} className="tlui-menu-zone">
|
|
35
|
-
<
|
|
36
|
+
<TldrawUiRow>
|
|
36
37
|
{MainMenu && <MainMenu />}
|
|
37
38
|
{PageMenu && !isSinglePageMode && <PageMenu />}
|
|
38
39
|
{showQuickActions ? (
|
|
39
|
-
<TldrawUiToolbar
|
|
40
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('actions-menu.title')}>
|
|
40
41
|
{QuickActions && <QuickActions />}
|
|
41
42
|
{ActionsMenu && <ActionsMenu />}
|
|
42
43
|
</TldrawUiToolbar>
|
|
43
44
|
) : null}
|
|
44
|
-
</
|
|
45
|
+
</TldrawUiRow>
|
|
45
46
|
</nav>
|
|
46
47
|
)
|
|
47
48
|
})
|
|
@@ -46,10 +46,10 @@ export class MinimapManager {
|
|
|
46
46
|
const style = getComputedStyle(this.editor.getContainer())
|
|
47
47
|
|
|
48
48
|
return {
|
|
49
|
-
shapeFill: getRgba(style.getPropertyValue('--color-text-3').trim()),
|
|
50
|
-
selectFill: getRgba(style.getPropertyValue('--color-selected').trim()),
|
|
51
|
-
viewportFill: getRgba(style.getPropertyValue('--color-muted-1').trim()),
|
|
52
|
-
background: getRgba(style.getPropertyValue('--color-low').trim()),
|
|
49
|
+
shapeFill: getRgba(style.getPropertyValue('--tl-color-text-3').trim()),
|
|
50
|
+
selectFill: getRgba(style.getPropertyValue('--tl-color-selected').trim()),
|
|
51
|
+
viewportFill: getRgba(style.getPropertyValue('--tl-color-muted-1').trim()),
|
|
52
|
+
background: getRgba(style.getPropertyValue('--tl-color-low').trim()),
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DefaultColorStyle,
|
|
3
3
|
TLDefaultColorStyle,
|
|
4
|
+
getColorValue,
|
|
4
5
|
getDefaultColorTheme,
|
|
5
6
|
useEditor,
|
|
6
7
|
useValue,
|
|
@@ -16,18 +17,20 @@ import {
|
|
|
16
17
|
TldrawUiPopoverContent,
|
|
17
18
|
TldrawUiPopoverTrigger,
|
|
18
19
|
} from './primitives/TldrawUiPopover'
|
|
20
|
+
import { useTldrawUiOrientation } from './primitives/layout'
|
|
19
21
|
|
|
20
22
|
/** @public @react */
|
|
21
23
|
export function MobileStylePanel() {
|
|
22
24
|
const editor = useEditor()
|
|
23
25
|
const msg = useTranslation()
|
|
24
|
-
|
|
26
|
+
const { orientation } = useTldrawUiOrientation()
|
|
25
27
|
const relevantStyles = useRelevantStyles()
|
|
26
28
|
const color = relevantStyles?.get(DefaultColorStyle)
|
|
27
29
|
const theme = getDefaultColorTheme({ isDarkMode: editor.user.getIsDarkMode() })
|
|
28
|
-
const currentColor =
|
|
29
|
-
color?.type === 'shared'
|
|
30
|
-
|
|
30
|
+
const currentColor =
|
|
31
|
+
color?.type === 'shared'
|
|
32
|
+
? getColorValue(theme, color.value as TLDefaultColorStyle, 'solid')
|
|
33
|
+
: getColorValue(theme, 'black', 'solid')
|
|
31
34
|
|
|
32
35
|
const disableStylePanel = useValue(
|
|
33
36
|
'disable style panel',
|
|
@@ -54,7 +57,7 @@ export function MobileStylePanel() {
|
|
|
54
57
|
type="tool"
|
|
55
58
|
data-testid="mobile-styles.button"
|
|
56
59
|
style={{
|
|
57
|
-
color: disableStylePanel ? 'var(--color-muted-1)' : currentColor,
|
|
60
|
+
color: disableStylePanel ? 'var(--tl-color-muted-1)' : currentColor,
|
|
58
61
|
}}
|
|
59
62
|
title={msg('style-panel.title')}
|
|
60
63
|
disabled={disableStylePanel}
|
|
@@ -64,7 +67,7 @@ export function MobileStylePanel() {
|
|
|
64
67
|
/>
|
|
65
68
|
</TldrawUiButton>
|
|
66
69
|
</TldrawUiPopoverTrigger>
|
|
67
|
-
<TldrawUiPopoverContent side=
|
|
70
|
+
<TldrawUiPopoverContent side={orientation === 'horizontal' ? 'top' : 'right'} align="end">
|
|
68
71
|
{StylePanel && <StylePanel isMobile />}
|
|
69
72
|
</TldrawUiPopoverContent>
|
|
70
73
|
</TldrawUiPopover>
|
|
@@ -33,7 +33,7 @@ export const DefaultNavigationPanel = memo(function DefaultNavigationPanel() {
|
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
35
|
<div ref={ref} className="tlui-navigation-panel">
|
|
36
|
-
<TldrawUiToolbar
|
|
36
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('navigation-zone.title')}>
|
|
37
37
|
{ZoomMenu && breakpoint < PORTRAIT_BREAKPOINT.TABLET ? (
|
|
38
38
|
<ZoomMenu />
|
|
39
39
|
) : (
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
TldrawUiPopoverContent,
|
|
25
25
|
TldrawUiPopoverTrigger,
|
|
26
26
|
} from '../primitives/TldrawUiPopover'
|
|
27
|
+
import { TldrawUiRow } from '../primitives/layout'
|
|
27
28
|
import { PageItemInput } from './PageItemInput'
|
|
28
29
|
import { PageItemSubmenu } from './PageItemSubmenu'
|
|
29
30
|
import { onMovePage } from './edit-pages-shared'
|
|
@@ -329,7 +330,7 @@ export const DefaultPageMenu = memo(function DefaultPageMenu() {
|
|
|
329
330
|
<div className="tlui-page-menu__header">
|
|
330
331
|
<div className="tlui-page-menu__header__title">{msg('page-menu.title')}</div>
|
|
331
332
|
{!isReadonlyMode && (
|
|
332
|
-
<
|
|
333
|
+
<TldrawUiRow>
|
|
333
334
|
<TldrawUiButton
|
|
334
335
|
type="icon"
|
|
335
336
|
data-testid="page-menu.edit"
|
|
@@ -351,7 +352,7 @@ export const DefaultPageMenu = memo(function DefaultPageMenu() {
|
|
|
351
352
|
>
|
|
352
353
|
<TldrawUiButtonIcon icon="plus" />
|
|
353
354
|
</TldrawUiButton>
|
|
354
|
-
</
|
|
355
|
+
</TldrawUiRow>
|
|
355
356
|
)}
|
|
356
357
|
</div>
|
|
357
358
|
<div
|
|
@@ -5,6 +5,7 @@ import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
|
5
5
|
import { TldrawUiButton } from '../primitives/Button/TldrawUiButton'
|
|
6
6
|
import { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'
|
|
7
7
|
import { TldrawUiIcon } from '../primitives/TldrawUiIcon'
|
|
8
|
+
import { TldrawUiRow } from '../primitives/layout'
|
|
8
9
|
|
|
9
10
|
export const PeopleMenuItem = track(function PeopleMenuItem({ userId }: { userId: string }) {
|
|
10
11
|
const editor = useEditor()
|
|
@@ -29,8 +30,8 @@ export const PeopleMenuItem = track(function PeopleMenuItem({ userId }: { userId
|
|
|
29
30
|
if (!presence) return null
|
|
30
31
|
|
|
31
32
|
return (
|
|
32
|
-
<
|
|
33
|
-
className="tlui-people-menu__item
|
|
33
|
+
<TldrawUiRow
|
|
34
|
+
className="tlui-people-menu__item"
|
|
34
35
|
data-follow={youAreFollowingThem || theyAreFollowingYou}
|
|
35
36
|
>
|
|
36
37
|
<TldrawUiButton
|
|
@@ -61,6 +62,6 @@ export const PeopleMenuItem = track(function PeopleMenuItem({ userId }: { userId
|
|
|
61
62
|
icon={theyAreFollowingYou ? 'leading' : youAreFollowingThem ? 'following' : 'follow'}
|
|
62
63
|
/>
|
|
63
64
|
</TldrawUiButton>
|
|
64
|
-
</
|
|
65
|
+
</TldrawUiRow>
|
|
65
66
|
)
|
|
66
67
|
})
|
|
@@ -5,6 +5,7 @@ import { useUiEvents } from '../../context/events'
|
|
|
5
5
|
import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
6
6
|
import { TldrawUiButton } from '../primitives/Button/TldrawUiButton'
|
|
7
7
|
import { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'
|
|
8
|
+
import { TldrawUiGrid } from '../primitives/layout'
|
|
8
9
|
|
|
9
10
|
export const UserPresenceColorPicker = track(function UserPresenceColorPicker() {
|
|
10
11
|
const editor = useEditor()
|
|
@@ -100,7 +101,7 @@ export const UserPresenceColorPicker = track(function UserPresenceColorPicker()
|
|
|
100
101
|
side="left"
|
|
101
102
|
sideOffset={8}
|
|
102
103
|
>
|
|
103
|
-
<
|
|
104
|
+
<TldrawUiGrid>
|
|
104
105
|
{USER_COLORS.map((item: string) => (
|
|
105
106
|
<TldrawUiButton
|
|
106
107
|
type="icon"
|
|
@@ -110,7 +111,6 @@ export const UserPresenceColorPicker = track(function UserPresenceColorPicker()
|
|
|
110
111
|
aria-label={item}
|
|
111
112
|
isActive={value === item}
|
|
112
113
|
title={item}
|
|
113
|
-
className={'tlui-button-grid__button'}
|
|
114
114
|
style={{ color: item }}
|
|
115
115
|
onPointerEnter={handleButtonPointerEnter}
|
|
116
116
|
onPointerDown={handleButtonPointerDown}
|
|
@@ -120,7 +120,7 @@ export const UserPresenceColorPicker = track(function UserPresenceColorPicker()
|
|
|
120
120
|
<TldrawUiButtonIcon icon="color" />
|
|
121
121
|
</TldrawUiButton>
|
|
122
122
|
))}
|
|
123
|
-
</
|
|
123
|
+
</TldrawUiGrid>
|
|
124
124
|
</_Popover.Content>
|
|
125
125
|
</_Popover.Portal>
|
|
126
126
|
</_Popover.Root>
|
|
@@ -139,7 +139,7 @@ export function CommonStylePickerSet({ styles, theme }: ThemeStylePickerSetProps
|
|
|
139
139
|
{showUiLabels && (
|
|
140
140
|
<StylePanelSubheading>{msg('style-panel.color')}</StylePanelSubheading>
|
|
141
141
|
)}
|
|
142
|
-
<TldrawUiToolbar label={msg('style-panel.color')}>
|
|
142
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.color')}>
|
|
143
143
|
<TldrawUiButtonPicker
|
|
144
144
|
title={msg('style-panel.color')}
|
|
145
145
|
uiType="color"
|
|
@@ -162,7 +162,7 @@ export function CommonStylePickerSet({ styles, theme }: ThemeStylePickerSetProps
|
|
|
162
162
|
{showUiLabels && (
|
|
163
163
|
<StylePanelSubheading>{msg('style-panel.fill')}</StylePanelSubheading>
|
|
164
164
|
)}
|
|
165
|
-
<TldrawUiToolbar label={msg('style-panel.fill')}>
|
|
165
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.fill')}>
|
|
166
166
|
<TldrawUiButtonPicker
|
|
167
167
|
title={msg('style-panel.fill')}
|
|
168
168
|
uiType="fill"
|
|
@@ -181,7 +181,7 @@ export function CommonStylePickerSet({ styles, theme }: ThemeStylePickerSetProps
|
|
|
181
181
|
{showUiLabels && (
|
|
182
182
|
<StylePanelSubheading>{msg('style-panel.dash')}</StylePanelSubheading>
|
|
183
183
|
)}
|
|
184
|
-
<TldrawUiToolbar label={msg('style-panel.dash')}>
|
|
184
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.dash')}>
|
|
185
185
|
<TldrawUiButtonPicker
|
|
186
186
|
title={msg('style-panel.dash')}
|
|
187
187
|
uiType="dash"
|
|
@@ -200,7 +200,7 @@ export function CommonStylePickerSet({ styles, theme }: ThemeStylePickerSetProps
|
|
|
200
200
|
{showUiLabels && (
|
|
201
201
|
<StylePanelSubheading>{msg('style-panel.size')}</StylePanelSubheading>
|
|
202
202
|
)}
|
|
203
|
-
<TldrawUiToolbar label={msg('style-panel.size')}>
|
|
203
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.size')}>
|
|
204
204
|
<TldrawUiButtonPicker
|
|
205
205
|
title={msg('style-panel.size')}
|
|
206
206
|
uiType="size"
|
|
@@ -249,7 +249,7 @@ export function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps)
|
|
|
249
249
|
{font === undefined ? null : (
|
|
250
250
|
<>
|
|
251
251
|
{labelStr && <StylePanelSubheading>{labelStr}</StylePanelSubheading>}
|
|
252
|
-
<TldrawUiToolbar label={msg('style-panel.font')}>
|
|
252
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.font')}>
|
|
253
253
|
<TldrawUiButtonPicker
|
|
254
254
|
title={msg('style-panel.font')}
|
|
255
255
|
uiType="font"
|
|
@@ -267,7 +267,7 @@ export function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps)
|
|
|
267
267
|
{textAlign === undefined ? null : (
|
|
268
268
|
<>
|
|
269
269
|
{showUiLabels && <StylePanelSubheading>{msg('style-panel.align')}</StylePanelSubheading>}
|
|
270
|
-
<TldrawUiToolbar label={msg('style-panel.align')}
|
|
270
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.align')}>
|
|
271
271
|
<TldrawUiButtonPicker
|
|
272
272
|
title={msg('style-panel.align')}
|
|
273
273
|
uiType="align"
|
|
@@ -278,16 +278,14 @@ export function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps)
|
|
|
278
278
|
theme={theme}
|
|
279
279
|
onHistoryMark={onHistoryMark}
|
|
280
280
|
/>
|
|
281
|
-
<
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
</TldrawUiToolbarButton>
|
|
290
|
-
</div>
|
|
281
|
+
<TldrawUiToolbarButton
|
|
282
|
+
type="icon"
|
|
283
|
+
title={msg('style-panel.vertical-align')}
|
|
284
|
+
data-testid="vertical-align"
|
|
285
|
+
disabled
|
|
286
|
+
>
|
|
287
|
+
<TldrawUiButtonIcon icon="vertical-align-middle" />
|
|
288
|
+
</TldrawUiToolbarButton>
|
|
291
289
|
</TldrawUiToolbar>
|
|
292
290
|
</>
|
|
293
291
|
)}
|
|
@@ -297,7 +295,7 @@ export function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps)
|
|
|
297
295
|
{showUiLabels && (
|
|
298
296
|
<StylePanelSubheading>{msg('style-panel.label-align')}</StylePanelSubheading>
|
|
299
297
|
)}
|
|
300
|
-
<TldrawUiToolbar label={msg('style-panel.label-align')}
|
|
298
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.label-align')}>
|
|
301
299
|
<TldrawUiButtonPicker
|
|
302
300
|
title={msg('style-panel.label-align')}
|
|
303
301
|
uiType="align"
|
|
@@ -308,29 +306,27 @@ export function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps)
|
|
|
308
306
|
theme={theme}
|
|
309
307
|
onHistoryMark={onHistoryMark}
|
|
310
308
|
/>
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
)}
|
|
333
|
-
</div>
|
|
309
|
+
{verticalLabelAlign === undefined ? (
|
|
310
|
+
<TldrawUiToolbarButton
|
|
311
|
+
type="icon"
|
|
312
|
+
title={msg('style-panel.vertical-align')}
|
|
313
|
+
data-testid="vertical-align"
|
|
314
|
+
disabled
|
|
315
|
+
>
|
|
316
|
+
<TldrawUiButtonIcon icon="vertical-align-middle" />
|
|
317
|
+
</TldrawUiToolbarButton>
|
|
318
|
+
) : (
|
|
319
|
+
<DropdownPicker
|
|
320
|
+
type="icon"
|
|
321
|
+
id="geo-vertical-alignment"
|
|
322
|
+
uiType="verticalAlign"
|
|
323
|
+
stylePanelType="vertical-align"
|
|
324
|
+
style={DefaultVerticalAlignStyle}
|
|
325
|
+
items={STYLES.verticalAlign}
|
|
326
|
+
value={verticalLabelAlign}
|
|
327
|
+
onValueChange={handleValueChange}
|
|
328
|
+
/>
|
|
329
|
+
)}
|
|
334
330
|
</TldrawUiToolbar>
|
|
335
331
|
</>
|
|
336
332
|
)}
|
|
@@ -348,7 +344,7 @@ export function GeoStylePickerSet({ styles }: StylePickerSetProps) {
|
|
|
348
344
|
}
|
|
349
345
|
|
|
350
346
|
return (
|
|
351
|
-
<TldrawUiToolbar label={msg('style-panel.geo')}>
|
|
347
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.geo')}>
|
|
352
348
|
<DropdownPicker
|
|
353
349
|
id="geo"
|
|
354
350
|
type="menu"
|
|
@@ -374,7 +370,7 @@ export function SplineStylePickerSet({ styles }: StylePickerSetProps) {
|
|
|
374
370
|
}
|
|
375
371
|
|
|
376
372
|
return (
|
|
377
|
-
<TldrawUiToolbar label={msg('style-panel.spline')}>
|
|
373
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.spline')}>
|
|
378
374
|
<DropdownPicker
|
|
379
375
|
id="spline"
|
|
380
376
|
type="menu"
|
|
@@ -400,7 +396,7 @@ export function ArrowStylePickerSet({ styles }: StylePickerSetProps) {
|
|
|
400
396
|
}
|
|
401
397
|
|
|
402
398
|
return (
|
|
403
|
-
<TldrawUiToolbar label={msg('style-panel.arrow-kind')}>
|
|
399
|
+
<TldrawUiToolbar orientation="horizontal" label={msg('style-panel.arrow-kind')}>
|
|
404
400
|
<DropdownPicker
|
|
405
401
|
id="arrow-kind"
|
|
406
402
|
type="menu"
|
|
@@ -68,7 +68,7 @@ function DoubleDropdownPickerInner<T extends string>({
|
|
|
68
68
|
<div title={msg(label)} className="tlui-style-panel__double-select-picker-label">
|
|
69
69
|
{msg(label)}
|
|
70
70
|
</div>
|
|
71
|
-
<TldrawUiToolbar label={msg(label)}
|
|
71
|
+
<TldrawUiToolbar orientation="horizontal" label={msg(label)}>
|
|
72
72
|
<TldrawUiPopover id={idA} open={isOpenA} onOpenChange={setIsOpenA}>
|
|
73
73
|
<TldrawUiPopoverTrigger>
|
|
74
74
|
<TldrawUiToolbarButton
|
|
@@ -86,7 +86,7 @@ function DoubleDropdownPickerInner<T extends string>({
|
|
|
86
86
|
</TldrawUiToolbarButton>
|
|
87
87
|
</TldrawUiPopoverTrigger>
|
|
88
88
|
<TldrawUiPopoverContent side="left" align="center" sideOffset={80} alignOffset={0}>
|
|
89
|
-
<TldrawUiToolbar label={msg(labelA)}
|
|
89
|
+
<TldrawUiToolbar orientation="grid" label={msg(labelA)}>
|
|
90
90
|
<TldrawUiMenuContextProvider type="icons" sourceId="style-panel">
|
|
91
91
|
{itemsA.map((item) => {
|
|
92
92
|
return (
|
|
@@ -126,7 +126,7 @@ function DoubleDropdownPickerInner<T extends string>({
|
|
|
126
126
|
</TldrawUiToolbarButton>
|
|
127
127
|
</TldrawUiPopoverTrigger>
|
|
128
128
|
<TldrawUiPopoverContent side="left" align="center" sideOffset={116} alignOffset={0}>
|
|
129
|
-
<TldrawUiToolbar label={msg(labelB)}
|
|
129
|
+
<TldrawUiToolbar orientation="grid" label={msg(labelB)}>
|
|
130
130
|
<TldrawUiMenuContextProvider type="icons" sourceId="style-panel">
|
|
131
131
|
{itemsB.map((item) => {
|
|
132
132
|
return (
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SharedStyle, StyleProp, tlmenus, useEditor } from '@tldraw/editor'
|
|
2
|
-
import classNames from 'classnames'
|
|
3
2
|
import * as React from 'react'
|
|
4
3
|
import { StyleValuesForUi } from '../../../styles'
|
|
5
4
|
import { TLUiTranslationKey } from '../../hooks/useTranslation/TLUiTranslationKey'
|
|
@@ -57,7 +56,12 @@ function DropdownPickerInner<T extends string>({
|
|
|
57
56
|
|
|
58
57
|
const popoverId = `style panel ${id}`
|
|
59
58
|
return (
|
|
60
|
-
<TldrawUiPopover
|
|
59
|
+
<TldrawUiPopover
|
|
60
|
+
id={popoverId}
|
|
61
|
+
open={isOpen}
|
|
62
|
+
onOpenChange={setIsOpen}
|
|
63
|
+
className="tlui-style-panel__dropdown-picker"
|
|
64
|
+
>
|
|
61
65
|
<TldrawUiPopoverTrigger>
|
|
62
66
|
<TldrawUiToolbarButton
|
|
63
67
|
type={type}
|
|
@@ -70,10 +74,7 @@ function DropdownPickerInner<T extends string>({
|
|
|
70
74
|
</TldrawUiToolbarButton>
|
|
71
75
|
</TldrawUiPopoverTrigger>
|
|
72
76
|
<TldrawUiPopoverContent side="left" align="center">
|
|
73
|
-
<TldrawUiToolbar
|
|
74
|
-
label={labelStr}
|
|
75
|
-
className={classNames('tlui-buttons__grid', `tlui-buttons__${stylePanelType}`)}
|
|
76
|
-
>
|
|
77
|
+
<TldrawUiToolbar orientation="grid" label={labelStr}>
|
|
77
78
|
<TldrawUiMenuContextProvider type="icons" sourceId="style-panel">
|
|
78
79
|
{items.map((item) => {
|
|
79
80
|
return (
|
|
@@ -272,7 +272,7 @@ export const DefaultImageToolbarContent = track(function DefaultImageToolbarCont
|
|
|
272
272
|
type="icon"
|
|
273
273
|
onClick={onManipulatingEnd}
|
|
274
274
|
data-testid="tool.image-confirm"
|
|
275
|
-
style={{ borderLeft: '1px solid var(--color-divider)', marginLeft: '2px' }}
|
|
275
|
+
style={{ borderLeft: '1px solid var(--tl-color-divider)', marginLeft: '2px' }}
|
|
276
276
|
>
|
|
277
277
|
<TldrawUiButtonIcon small icon="check" />
|
|
278
278
|
</TldrawUiButton>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useEditor, usePassThroughWheelEvents, useValue } from '@tldraw/editor'
|
|
2
|
+
import classNames from 'classnames'
|
|
2
3
|
import { ReactNode, memo, useRef } from 'react'
|
|
3
4
|
import { PORTRAIT_BREAKPOINT } from '../../constants'
|
|
4
5
|
import { useBreakpoint } from '../../context/breakpoints'
|
|
@@ -6,6 +7,7 @@ import { useTldrawUiComponents } from '../../context/components'
|
|
|
6
7
|
import { useReadonly } from '../../hooks/useReadonly'
|
|
7
8
|
import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
8
9
|
import { MobileStylePanel } from '../MobileStylePanel'
|
|
10
|
+
import { TldrawUiOrientationProvider } from '../primitives/layout'
|
|
9
11
|
import { TldrawUiToolbar } from '../primitives/TldrawUiToolbar'
|
|
10
12
|
import { DefaultToolbarContent } from './DefaultToolbarContent'
|
|
11
13
|
import { OverflowingToolbar } from './OverflowingToolbar'
|
|
@@ -14,6 +16,11 @@ import { ToggleToolLockedButton } from './ToggleToolLockedButton'
|
|
|
14
16
|
/** @public */
|
|
15
17
|
export interface DefaultToolbarProps {
|
|
16
18
|
children?: ReactNode
|
|
19
|
+
orientation?: 'horizontal' | 'vertical'
|
|
20
|
+
minItems?: number
|
|
21
|
+
minSizePx?: number
|
|
22
|
+
maxItems?: number
|
|
23
|
+
maxSizePx?: number
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
/**
|
|
@@ -24,7 +31,14 @@ export interface DefaultToolbarProps {
|
|
|
24
31
|
* @public
|
|
25
32
|
* @react
|
|
26
33
|
*/
|
|
27
|
-
export const DefaultToolbar = memo(function DefaultToolbar({
|
|
34
|
+
export const DefaultToolbar = memo(function DefaultToolbar({
|
|
35
|
+
children,
|
|
36
|
+
orientation = 'horizontal',
|
|
37
|
+
minItems = 4,
|
|
38
|
+
minSizePx = 310,
|
|
39
|
+
maxItems = 8,
|
|
40
|
+
maxSizePx = 470,
|
|
41
|
+
}: DefaultToolbarProps) {
|
|
28
42
|
const editor = useEditor()
|
|
29
43
|
const msg = useTranslation()
|
|
30
44
|
const breakpoint = useBreakpoint()
|
|
@@ -44,31 +58,49 @@ export const DefaultToolbar = memo(function DefaultToolbar({ children }: Default
|
|
|
44
58
|
: breakpoint < PORTRAIT_BREAKPOINT.TABLET
|
|
45
59
|
|
|
46
60
|
return (
|
|
47
|
-
<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
<TldrawUiOrientationProvider
|
|
62
|
+
orientation={orientation}
|
|
63
|
+
tooltipSide={orientation === 'horizontal' ? 'top' : 'right'}
|
|
64
|
+
>
|
|
65
|
+
<div
|
|
66
|
+
ref={ref}
|
|
67
|
+
className={classNames('tlui-main-toolbar', `tlui-main-toolbar--${orientation}`)}
|
|
68
|
+
>
|
|
69
|
+
<div className="tlui-main-toolbar__inner">
|
|
70
|
+
<div className="tlui-main-toolbar__left">
|
|
71
|
+
{!isReadonlyMode && (
|
|
72
|
+
<div className="tlui-main-toolbar__extras">
|
|
73
|
+
{showQuickActions && (
|
|
74
|
+
<TldrawUiToolbar
|
|
75
|
+
orientation={orientation}
|
|
76
|
+
className="tlui-main-toolbar__extras__controls"
|
|
77
|
+
label={msg('actions-menu.title')}
|
|
78
|
+
>
|
|
79
|
+
{QuickActions && <QuickActions />}
|
|
80
|
+
{ActionsMenu && <ActionsMenu />}
|
|
81
|
+
</TldrawUiToolbar>
|
|
82
|
+
)}
|
|
83
|
+
<ToggleToolLockedButton activeToolId={activeToolId} />
|
|
84
|
+
</div>
|
|
85
|
+
)}
|
|
86
|
+
<OverflowingToolbar
|
|
87
|
+
orientation={orientation}
|
|
88
|
+
sizingParentClassName="tlui-main-toolbar"
|
|
89
|
+
minItems={minItems}
|
|
90
|
+
maxItems={maxItems}
|
|
91
|
+
minSizePx={minSizePx}
|
|
92
|
+
maxSizePx={maxSizePx}
|
|
93
|
+
>
|
|
94
|
+
{children ?? <DefaultToolbarContent />}
|
|
95
|
+
</OverflowingToolbar>
|
|
96
|
+
</div>
|
|
97
|
+
{breakpoint < PORTRAIT_BREAKPOINT.TABLET_SM && !isReadonlyMode && (
|
|
98
|
+
<div className="tlui-main-toolbar__tools tlui-main-toolbar__mobile-style-panel">
|
|
99
|
+
<MobileStylePanel />
|
|
62
100
|
</div>
|
|
63
101
|
)}
|
|
64
|
-
<OverflowingToolbar>{children ?? <DefaultToolbarContent />}</OverflowingToolbar>
|
|
65
102
|
</div>
|
|
66
|
-
{breakpoint < PORTRAIT_BREAKPOINT.TABLET_SM && !isReadonlyMode && (
|
|
67
|
-
<div className="tlui-toolbar__tools">
|
|
68
|
-
<MobileStylePanel />
|
|
69
|
-
</div>
|
|
70
|
-
)}
|
|
71
103
|
</div>
|
|
72
|
-
</
|
|
104
|
+
</TldrawUiOrientationProvider>
|
|
73
105
|
)
|
|
74
106
|
})
|