From 86c7aef9fdcc4a25117a4a5fedc36b3adda13b0a Mon Sep 17 00:00:00 2001 From: david0xd Date: Fri, 6 Dec 2024 16:55:58 +0100 Subject: [PATCH 1/4] Add loading variant for Snaps UI Button Update manifest shasum Add loading variant to old button --- .../examples/packages/browserify-plugin/snap.manifest.json | 2 +- packages/snaps-sdk/src/jsx/components/form/Button.ts | 2 +- packages/snaps-sdk/src/jsx/validation.test.tsx | 1 + packages/snaps-sdk/src/jsx/validation.ts | 4 +++- packages/snaps-sdk/src/ui/components/button.ts | 2 ++ packages/snaps-utils/src/ui.tsx | 6 +++++- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/examples/packages/browserify-plugin/snap.manifest.json b/packages/examples/packages/browserify-plugin/snap.manifest.json index 741d09c663..74fa283d77 100644 --- a/packages/examples/packages/browserify-plugin/snap.manifest.json +++ b/packages/examples/packages/browserify-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "d1js9Y4zJwk7n/e47V5fdMreo1FBtVKl4GtPhfckZrs=", + "shasum": "w8ZPchwG+LqlFzbmkqVQ5nDqt5GDFkZsU8dUm1b5NXo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snaps-sdk/src/jsx/components/form/Button.ts b/packages/snaps-sdk/src/jsx/components/form/Button.ts index e41c0e6d01..67a5dd2c72 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Button.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Button.ts @@ -22,7 +22,7 @@ export type ButtonProps = { children: SnapsChildren; name?: string | undefined; type?: 'button' | 'submit' | undefined; - variant?: 'primary' | 'destructive' | undefined; + variant?: 'primary' | 'destructive' | 'loading' | undefined; disabled?: boolean | undefined; form?: string | undefined; }; diff --git a/packages/snaps-sdk/src/jsx/validation.test.tsx b/packages/snaps-sdk/src/jsx/validation.test.tsx index a341804f72..46fc4fd39b 100644 --- a/packages/snaps-sdk/src/jsx/validation.test.tsx +++ b/packages/snaps-sdk/src/jsx/validation.test.tsx @@ -163,6 +163,7 @@ describe('ButtonStruct', () => { , , , + , , , + ); + + expect(result).toStrictEqual({ + type: 'Button', + props: { + children: 'foo', + type: 'button', + variant: 'primary', + loading: true, + }, + key: null, + }); + }); }); diff --git a/packages/snaps-sdk/src/jsx/components/form/Button.ts b/packages/snaps-sdk/src/jsx/components/form/Button.ts index 67a5dd2c72..ffb89801b8 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Button.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Button.ts @@ -16,14 +16,16 @@ import type { ImageElement } from '../Image'; * @property variant - The variant of the button, i.e., `'primary'` or * `'destructive'`. Defaults to `'primary'`. * @property disabled - Whether the button is disabled. Defaults to `false`. + * @property loading - Whether the button is in loading state. Defaults to `false`. * @property form - The name of the form component to associate the button with. */ export type ButtonProps = { children: SnapsChildren; name?: string | undefined; type?: 'button' | 'submit' | undefined; - variant?: 'primary' | 'destructive' | 'loading' | undefined; + variant?: 'primary' | 'destructive' | undefined; disabled?: boolean | undefined; + loading?: boolean | undefined; form?: string | undefined; }; diff --git a/packages/snaps-sdk/src/jsx/validation.test.tsx b/packages/snaps-sdk/src/jsx/validation.test.tsx index 46fc4fd39b..60466eadbf 100644 --- a/packages/snaps-sdk/src/jsx/validation.test.tsx +++ b/packages/snaps-sdk/src/jsx/validation.test.tsx @@ -163,8 +163,10 @@ describe('ButtonStruct', () => { , , , - , , + , ,