Skip to content
fandhe-frontend
GitHub

Clipboard

fandhe-frontend-pre-styled-uiclipboard mod が提供するスタイル済み Clipboard 部品です。

関連 API: fandhe-frontend-pre-styled-ui API / fandhe-frontend-headless-ui API

Demo

共有 URL 等のコピー対象値を表示し、ボタン押下でコピー状態を切り替える部品。コピー実処理・自動リセットはクライアント配線層(wasm-full)の責務です。

https://example.com/share/abc

Features

  • headless-ui の Root/Label/Control/Input/Trigger/Indicator/ValueText 7 anatomy パーツを styled 薄ラッパーとして再エクスポートし、styled `root` のみ `class` 属性を除去して再定義する。
  • `size`/`colorPalette` variant は提供しない(hover-card / toggle-tip と同じ判断。variant 展開は別途一括検討する)。
  • コピー状態は値語彙ではなく `data-copied`(存在属性)で表現し、`indicator` は copied 用/idle 用の 2 変種を SSR で両方描画したうえで、現在状態と不一致の側へ `hidden` を付与する(子孫セレクタを使わない表示切り替え)。
  • `input` パーツはコピー元テキストの表示専用(`readonly`)であり `name` を持たず、フォーム送信を目的としない。
  • 実際の `navigator.clipboard.writeText` 書き込み・コピー完了後の自動リセットはクライアント配線層の責務であり、本コンポーネントは状態遷移の表現のみを提供する(`docs/policy/intentional-non-adoption.md` §3.25)。コピー対象値(`value`)はパスワード等の機微情報を含みうるため、CSS・ログのいずれにも出力しない。

Anatomy

root
  label
  control
    input
    trigger
      indicator
  value-text

API Reference

Arguments

NameTypeDefaultDescription
value&str(必須)コピー対象値。`root` の `data-value` としてそのまま出力される(既定エスケープ経由)。クライアント側はこの `data-value` を読み取って実際の書き込みを行う契約。
copiedboolfalseコピー済みかどうか。`data-copied`・`indicator` の可視性・`input`/`control`/`trigger` の `data-copied` へ反映される。
attrsVec<(&str, &str)>vec![]各パーツへ渡す追加属性。styled `root` は呼び出し側 `class` を除去してから合成する。
childrenVec<Node>vec![]パーツ配下に描画する子ノード。

Data Attributes

PartAttributeObserved Values
indicatordata-statehidden, visible
indicatordata-variantcopied, idle
rootdata-valuehttps://example.com/share/abc

Examples

コピー済み状態

`copied = true` を渡すと `data-copied` が付与され、`indicator` の可視性が入れ替わります(コピー用 → コピー済み用)。

https://example.com/share/abc

Accessibility

Keyboard Interactions

KeyDescription
Tab / Space / Enter`trigger` はネイティブ `<button type="button">` であり、フォーカス・押下操作はブラウザ既定動作で成立する。