​​React​CSS,Playwright,Suspense,TypeScript,use,アクセシビリティ

Thumbnail of post image 107

React の Suspense の fallback に、読み込み後と同じ形のスケルトンを渡す方法です。帯の高さを文字の行に合わせて下の段落を動かさない作り、文章の行数の決め方、読み上げと動きを減らす設定への配慮を、Chromium ...

​​React​CSS Grid,Playwright,TypeScript

Thumbnail of post image 109

1日を1列にした CSS Grid に、開始日と終了日から求めた grid-column で予定の横棒を置きました。日付は Date.UTC で日数に直し、表示期間からはみ出す棒は切り落とします。作業名の列を sticky で残す方法 ...

​​React​Playwright,Pointer Events,TypeScript,アクセシビリティ,キーボード操作

Thumbnail of post image 121

項目からさらにメニューが開く、入れ子のドロップダウンメニューを React で作りました。開いている枝を id の配列1つで持ち、同じ描画関数を再帰で呼びます。斜めにポインターを動かしたときの誤作動の防ぎ方と、矢印キーでの操作も確かめ ...

​​React​Playwright,React Router,TypeScript,アクセシビリティ

Thumbnail of post image 146

React Routerのデータモードで、ルートのhandleに項目名を書き、useMatchesで集めてパンくずリストを作りました。loaderのデータを項目名に使う方法、indexルートとの関係、移動中とエラーのときの表示、区切り ...

​​React​HTML,Playwright,TypeScript,フォーム

Thumbnail of post image 068

時刻を選ぶ入力欄を、input type=”time” と React の state で作りました。15分単位にする step、日付をまたぐ min と max、表示と value の形の違い、ピッカーに s ...

​​React​dialog,Playwright,TypeScript,アクセシビリティ,キーボード操作

Thumbnail of post image 149

Ctrl+K で開き、言葉を打って絞り込み、↑↓と Enter で実行するコマンドパレットを、React と dialog 要素で作りました。ひらがなとカタカナを区別しない絞り込みと、実行と閉じる順番によるフォーカスの違いを確かめてい ...

​​React​CSS,Intl.Segmenter,Playwright,TypeScript,アクセシビリティ

Thumbnail of post image 026

文字を1文字ずつ表示するタイプライター風の表示を、React のフックとコンポーネントで作りました。絵文字を途中で割らない分け方、句読点の後の間、下の内容を押し下げない場所の取り方、文章が変わったときのやり直し、読み上げへの配慮を確か ...

​​React​Intl.NumberFormat,Playwright,requestAnimationFrame,TypeScript,アクセシビリティ

Thumbnail of post image 013

0 から目標の値まで、数字を数え上げて表示するコンポーネントを作りました。経過時間から表示する値を計算するフック、数字の幅をそろえて横揺れを防ぐ CSS、画面に入ってから数え始める作り、途中で値が変わったときの動き、読み上げへの配慮を ...

​​React​CSS,Playwright,TypeScript,アクセシビリティ,スクロール駆動アニメーション

Thumbnail of post image 061

セクションの背景だけを、スクロールの半分の速さで動かすパララックスを作りました。背景をはみ出させる量の決め方、ずらす量を state に入れない理由、動きを減らす設定への対応、CSS だけで書く方法を確かめています。

​​React​Playwright,ResizeObserver,SVG,TypeScript

Thumbnail of post image 127

HTML で置いた2つの箱を、上に重ねた SVG の曲線と矢印でつなぎました。箱の位置を SVG の左上からの座標に直して描き、箱が動いたときと大きさが変わったときに測り直します。矢印の id を useId で作る理由も確かめました ...