diff --git a/src/components/LayerUI.tsx b/src/components/LayerUI.tsx index d914779e..6052da69 100644 --- a/src/components/LayerUI.tsx +++ b/src/components/LayerUI.tsx @@ -401,7 +401,7 @@ const LayerUI = ({ }; const renderImageExportDialog = () => { - if (!UIOptions.canvasActions.export) { + if (!UIOptions.canvasActions.saveAsImage) { return null; } diff --git a/src/constants.ts b/src/constants.ts index 9ac619b1..b4429db0 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -135,6 +135,7 @@ export const DEFAULT_UI_OPTIONS: AppProps["UIOptions"] = { loadScene: true, saveToActiveFile: true, theme: true, + saveAsImage: true, }, }; diff --git a/src/packages/excalidraw/CHANGELOG.md b/src/packages/excalidraw/CHANGELOG.md index 9e3bc463..0d10a2e9 100644 --- a/src/packages/excalidraw/CHANGELOG.md +++ b/src/packages/excalidraw/CHANGELOG.md @@ -17,6 +17,8 @@ Please add the latest change on the top under the correct section. ### Features +- Added prop `UIOptions.canvasActions.saveAsImage` to show/hide the **Save as image** button in the canvas actions. Defauls to `true` hence the **Save as Image** button is rendered [#3662](https://github.com/excalidraw/excalidraw/pull/3662). + - Export dialog can be customised with [`UiOptions.canvasActions.export`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#exportOpts) [#3658](https://github.com/excalidraw/excalidraw/pull/3658). Also, [`UIOptions`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#UIOptions) is now memoized to avoid unnecessary rerenders. diff --git a/src/packages/excalidraw/README_NEXT.md b/src/packages/excalidraw/README_NEXT.md index ec7eadb2..8ebd9f60 100644 --- a/src/packages/excalidraw/README_NEXT.md +++ b/src/packages/excalidraw/README_NEXT.md @@ -570,6 +570,7 @@ This prop can be used to customise UI of Excalidraw. Currently we support custom | `loadScene` | boolean | true | Implies whether to show `Load button` | | `saveToActiveFile` | boolean | true | Implies whether to show `Save button` to save to current file | | `theme` | boolean | true | Implies whether to show `Theme toggle` | +| `saveAsImage` | boolean | true | Implies whether to show `Save as image button` | #### `exportOpts` diff --git a/src/tests/excalidrawPackage.test.tsx b/src/tests/excalidrawPackage.test.tsx index 628c27a4..03e2a629 100644 --- a/src/tests/excalidrawPackage.test.tsx +++ b/src/tests/excalidrawPackage.test.tsx @@ -167,6 +167,13 @@ describe("", () => { ); expect(queryByTestId(container, "json-export-button")).toBeNull(); + }); + + it("should hide 'Save as image' button when 'saveAsImage' is false", async () => { + const { container } = await render( + , + ); + expect(queryByTestId(container, "image-export-button")).toBeNull(); }); diff --git a/src/types.ts b/src/types.ts index 10f99dce..7863c0dd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -230,6 +230,7 @@ type CanvasActions = { loadScene?: boolean; saveToActiveFile?: boolean; theme?: boolean; + saveAsImage?: boolean; }; export type UIOptions = {