Skip to content

🐛 IconButton に native の disabled prop を渡すと無効状態のスタイルが当たらない #305

Description

@touyou

事象

IconButtonnative の disabled prop を渡した場合、disabled 属性は付くが CVA の無効状態クラスが付かないため、通常状態の色のまま表示される。

src/components/ui/icon-button/index.tsx:

const isIconButtonDisabled = isLoading || isDisabled || disabled;   // ← disabled を含む
// ...
className={cn(
  iconButtonVariants({
    variant, size, theme,
    isLoading,
    isDisabled,          // ← ここには isDisabled しか渡っていない
    className,
  })
)}
disabled={isIconButtonDisabled}

無効状態のスタイル(disabled:bg-surface-*-disabled 等)は isDisabled: true の compoundVariant からしか出力されないため、isDisabled を使わず disabled だけを渡すとクラスそのものが生成されない

再現

<IconButton icon="edit" aria-label="編集" disabled />

disabled 属性は付きクリックも無効になるが、背景・アイコン色は enabled のまま。

修正案

   iconButtonVariants({
     variant, size, theme,
     isLoading,
-    isDisabled,
+    isDisabled: Boolean(isDisabled || disabled),
     className,
   })

native disabled prop でも無効状態スタイルが当たることを確認するテストも追加する。

補足

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions