jQuery UI 1.14対応: 非推奨の`dialogClass`を`classes`に移行

activeadmin/activeadmin

jQuery UI 1.14でデフォルト無効化されたdialogClassオプションへの依存を解消するため、ダイアログへのカスタムクラス付与を非推奨でないclassesオプションに移行しました。これにより、バッチアクションの確認ダイアログに意図しないクローズボタンが表示される不具合が修正されます。

背景

jQuery UIのバージョンアップが、バッチアクション確認ダイアログのレイアウト崩れを引き起こしていました。

jQuery UI 1.14では $.uiBackCompat がデフォルトでfalseに変更されました。これにより後方互換レイヤーが無効化され、非推奨オプションである dialogClass が機能しなくなっています。ActiveAdminはこのdialogClassを使ってダイアログラッパーにactive_admin_dialogクラスを付与し、タイトルバーのクローズボタンを非表示にするCSSセレクタ(.active_admin_dialog .ui-dialog-titlebar-close)を機能させていました。

#8977として報告されたこの不具合では、dialogClassが無効化された結果、active_admin_dialogクラスが付与されなくなり、クローズボタンを隠すCSSが効かなくなっていました。本PRはその根本原因を解消するものです。

技術的な変更

dialogClassの使用箇所2ファイルを、jQuery UI公式が推奨する classes オプションに置き換えました。

classesオプションはウィジェットの各要素に対してキーと値のマッピングでクラスを指定するAPIです。ダイアログのラッパー要素に対応するキーは"ui-dialog"であり、そこに"active_admin_dialog"を割り当てることで従来と同じクラス付与を実現します。

変更前後の対比(app/assets/javascripts/active_admin/base.js):

変更前:

dialogClass: "active_admin_dialog",

変更後:

classes: {
  "ui-dialog": "active_admin_dialog"
},

変更前後の対比(app/javascript/active_admin/lib/modal-dialog.js):

変更前:

dialogClass: 'active_admin_dialog',

変更後:

classes: { 'ui-dialog': 'active_admin_dialog' },

変更はいずれもオプション定義の1行置換であり、ダイアログの動作ロジックには一切手を加えていません。

設計判断

CSSセレクタやダイアログの制御ロジックを変更せず、オプションのキー名の切り替えのみで修正を完結させる最小変更のアプローチが採られました。

classesオプションはdialogClassの後継にあたる正式APIであり、"ui-dialog"というキーはjQuery UIが内部的に管理するウィジェット要素名です。この指定によって生成されるDOMの構造は変わらず、active_admin_dialogクラスは従来と同じ要素に付与されます。そのため、既存のCSSセレクタはそのまま機能します。

最小限の変更でAPIの移行を完結させることで、既存の仕組みへの影響を抑えつつ、将来のjQuery UIのバージョンアップにも耐性を持たせる判断といえます。

まとめ

jQuery UI 1.14での後方互換レイヤーの無効化によって露見したdialogClassへの依存を、正式APIclassesへの1行置換で解消した修正です。最小限のコード変更でCSSセレクタを含む既存の仕組みをそのまま活かし、バッチアクション確認ダイアログの表示崩れを根本から修正しています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
4526b90e

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
3回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文、背景、技術的な変更、設計判断、まとめの各セクションが「総論→各論→結論」の構成を明確に満たしており、非常に分かりやすい記事構成です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```javascript:ファイルパス)とGitHubのIssueリンク記法([#8977](URL))が正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

jQuery UIやActiveAdminに関する知識を持つエンジニアを対象としており、専門用語の使い方も含めて技術レベルが適切です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフが「総論→各論」の構造で書かれ、トピックセンテンスが明確です。1段落1トピックの原則も守られており、可読性が高いです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内で引用されている2つのファイルのコードブロック(変更前・変更後)は、提供されたDiff情報と完全に一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「$.uiBackCompat」「dialogClass」「classes」「CSSセレクタ」など、関連する技術用語が正確かつ適切な文脈で使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

jQuery UI 1.14での変更が原因で`dialogClass`が機能しなくなる仕組みや、`classes`オプションによる代替方法の説明が技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内の主張はすべてPRのDescriptionやDiffの内容に基づいており、根拠のない推測や憶測(ハルシネーション)は見られません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#8978)、Issue番号(#8977)、バージョン番号(jQuery UI 1.14)など、すべての数値・固有名詞が正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトル「jQuery UI 1.14対応: 非推奨の`dialogClass`を`classes`に移行」は、PRのタイトルと内容を的確に要約しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事で言及されている「非推奨」「後継API」といった情報は、PR Description内の「deprecated」「non-deprecated」という記述に裏付けられており、不適切な外部知識の追加はありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現に関して、PR情報との齟齬や歪曲は見られません。