Skip to content

PracticeFilterDropdown.jsx を素のJavaScriptに移行する #9137

@machida

Description

@machida

概要

脱React化の段階的移行として、PracticeFilterDropdown.jsx を素のJavaScriptに置き換えます。Reports.jsx
の他の部分には影響を与えず、プラクティス絞り込み機能を移行します。

対象ファイル

  • app/javascript/components/PracticeFilterDropdown.jsx (削除)
  • app/javascript/components/Reports.jsx (PracticeFilterDropdownの呼び出し部分のみ修正)
  • app/javascript/practice-filter-dropdown.js (新規作成)

注意点

  • データ受け渡し:data-practices、data-practice-id 属性でデータを渡す
  • コールバック関数:onPracticeChange でReactの状態更新関数を受け取り
  • Choices.js統合:既存のChoices.jsライブラリを継続使用
  • 初期選択値:practiceId による初期選択状態の再現
  • 検索機能:Choices.jsの検索機能を完全に維持
  • 日本語設定:検索プレースホルダーやメッセージの日本語設定を維持
  • 既存CSS完全維持:page-filter form、a-form-select などを完全再現
  • クリーンアップ:Choices.jsインスタンスの適切な破棄

参考資料

チェックリスト

事前調査

  • Choices.js の設定オプション確認
  • プラクティス一覧データの構造確認
  • 既存CSS(page-filter、a-form-select)の確認

実装

  • app/javascript/practice-filter-dropdown.js を作成
  • PracticeFilterDropdown クラスの実装
  • HTML生成ロジックの実装(既存構造完全再現)
  • Choices.js初期化の実装
  • 初期選択値設定の実装
  • change イベントハンドリングの実装
  • コールバック関数による状態更新の実装
  • Choices.js インスタンス破棄の実装
  • initPracticeFilterDropdown 関数の実装
  • Reports.jsx での import 文削除
  • Reports.jsx での JSX 部分を div + data属性に変更
  • Reports.jsx での useEffect + 動的import + コールバック追加

テスト・確認

  • 日報一覧でのプラクティス絞り込み表示確認
  • 「全ての日報を表示」選択時の動作確認
  • 特定プラクティス選択時の絞り込み動作確認
  • 検索機能の動作確認(Choices.js)
  • 初期選択値の設定確認
  • プラクティス変更時の日報一覧更新確認
  • レスポンシブ表示の確認
  • Choices.jsのUIスタイル確認

クリーンアップ

  • PracticeFilterDropdown.jsx ファイルを削除
  • 動作確認完了後、不要なimport文がないことを確認

Metadata

Metadata

Assignees

Type

No type

Projects

Status

完成

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions