diff --git a/.changeset/ninety-llamas-search.md b/.changeset/ninety-llamas-search.md new file mode 100644 index 0000000000..85a3bdfec3 --- /dev/null +++ b/.changeset/ninety-llamas-search.md @@ -0,0 +1,5 @@ +--- +"@effect-app/vue-components": major +--- + +Adds A11y support to CommandButton diff --git a/packages/infra/src/Store/Cosmos.ts b/packages/infra/src/Store/Cosmos.ts index 08171db0d8..45c6ac9df3 100644 --- a/packages/infra/src/Store/Cosmos.ts +++ b/packages/infra/src/Store/Cosmos.ts @@ -258,7 +258,7 @@ function makeCosmosStore({ prefix }: StorageConfig) { attributes: { "repository.container_id": containerId, "repository.model_name": name } }) ), - batchRemove: (ids, partitionKey?: string | undefined) => + batchRemove: (ids, partitionKey?: string) => Effect.promise(() => execBatch( mutable(ids.map((id) => diff --git a/packages/infra/src/Store/service.ts b/packages/infra/src/Store/service.ts index 3679b067cd..e162675396 100644 --- a/packages/infra/src/Store/service.ts +++ b/packages/infra/src/Store/service.ts @@ -85,7 +85,7 @@ export interface Store< bulkSet: ( items: NonEmptyReadonlyArray ) => Effect.Effect, OptimisticConcurrencyException> - batchRemove: (ids: NonEmptyReadonlyArray, partitionKey?: string | undefined) => Effect.Effect + batchRemove: (ids: NonEmptyReadonlyArray, partitionKey?: string) => Effect.Effect queryRaw: (query: RawQuery) => Effect.Effect } diff --git a/packages/vue-components/src/components/CommandButton.vue b/packages/vue-components/src/components/CommandButton.vue index d4166a1961..200291d963 100644 --- a/packages/vue-components/src/components/CommandButton.vue +++ b/packages/vue-components/src/components/CommandButton.vue @@ -4,6 +4,7 @@ generic="I = never" > import type { CommandBase } from "@effect-app/vue" +import { computed } from "vue" import type { VBtn } from "vuetify/components" export type VBtnProps = VBtn["$props"] @@ -28,6 +29,20 @@ const props = defineProps< } & ButtonProps >() + +const isDisabled = computed(() => props.command.blocked || props.disabled) + +const handleClick = () => { + // Block execution if button is disabled + if (isDisabled.value) { + return + } + + const input = ("input" in props && props.input + ? props.input + : undefined) as unknown as I + ;(props.command.handle as any)(input) +}