Parcourir la source

feat: Add prop UIOptions.canvasActions.saveAsImage to show/hide save image button (#3662)

* feat: Add prop UIOptions.canvasActions.saveAsImage which implies whether the save as image dialog should be shown

* Add docs

* fix specs
Aakansha Doshi il y a 4 ans
Parent
commit
360310de31

+ 1 - 1
src/components/LayerUI.tsx

@@ -401,7 +401,7 @@ const LayerUI = ({
   };
 
   const renderImageExportDialog = () => {
-    if (!UIOptions.canvasActions.export) {
+    if (!UIOptions.canvasActions.saveAsImage) {
       return null;
     }
 

+ 1 - 0
src/constants.ts

@@ -135,6 +135,7 @@ export const DEFAULT_UI_OPTIONS: AppProps["UIOptions"] = {
     loadScene: true,
     saveToActiveFile: true,
     theme: true,
+    saveAsImage: true,
   },
 };
 

+ 2 - 0
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.

+ 1 - 0
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`
 

+ 7 - 0
src/tests/excalidrawPackage.test.tsx

@@ -167,6 +167,13 @@ describe("<Excalidraw/>", () => {
         );
 
         expect(queryByTestId(container, "json-export-button")).toBeNull();
+      });
+
+      it("should hide 'Save as image' button when 'saveAsImage' is false", async () => {
+        const { container } = await render(
+          <Excalidraw UIOptions={{ canvasActions: { saveAsImage: false } }} />,
+        );
+
         expect(queryByTestId(container, "image-export-button")).toBeNull();
       });
 

+ 1 - 0
src/types.ts

@@ -230,6 +230,7 @@ type CanvasActions = {
   loadScene?: boolean;
   saveToActiveFile?: boolean;
   theme?: boolean;
+  saveAsImage?: boolean;
 };
 
 export type UIOptions = {