共有モーダルShareModalExperimental

公開リンクの有効化、URLコピー、共有状態の確認をまとめて扱うモーダルです。

プレビュー

状態とバリエーション

公開リンクあり

共有URL、コピー、アクセス数を確認できます。

非公開

共有が無効な時の見え方です。

アクセス数あり

利用状況を含めて共有状態を確認します。

プロパティ

表は横にスクロールできます
プロパティ初期値説明
isOpenboolean-共有モーダルの表示状態です。
itemShareableItem-共有状態を持つ対象アイテムです。
onUpdate(id, updates) => void-共有情報が変わった時に親 state を更新します。
onToggleShare(id, enable) => ShareData | Promise<ShareData>-共有の有効/無効をアプリ側で処理します。未指定時は apiEndpoint に POST します。
onCopyShareUrl(url) => void | Promise<void>-共有 URL のコピー処理を上位で差し替えます。トーストなどのフィードバックをここで出せます。
onOpenShareUrl(url) => void | Promise<void>-共有 URL を開く操作を上位で差し替えます。docs プレビューでは遷移せずトーストを出します。
portalContainerHTMLElement | null-docs preview やアプリ内フレームに overlay を閉じ込めるための任意コンテナです。

設計の判断

  • 公開リンクの入り切りだけを持つ。資料は権限の段階(閲覧者・編集者・コメント可)とメールでの招待を核に挙げています。GUNJO の ShareModal はそこまで持たず、「リンクを知っている人が見られるかどうか」の1つのスイッチと、そのURLのコピーと開くだけを扱います。誰に何を許すかはアプリの権限の設計そのもので、部品の側では決められないためです。
  • コピーできたことは2秒だけ形で見せる。資料は「コピー成功を2秒間表示する」を挙げています。GUNJO も2秒で戻す作りで、アイコンをチェックに替えると同時に、吹き出しの文言も copied のラベルに差し替えます。クリップボードが使えない環境向けの古い手順への切り替えも部品の中にあります。資料が求める aria-live での読み上げは、まだ入っていません。
  • フォーカスの囲い込みと Escape は入っていません。閉じる手段は背景のクリックと右上のボタンの2つで、rolearia-modalaria-labelledby は付けてあります。ただし資料が求める Tab の囲い込みと Escape キーはこの部品には無く、ここは記事に対して足りていない箇所です。囲い込みが要る使い方をするなら、いまは SheetDialog に載せ替えるのが確実です。

いつ・なぜ使うか(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。