Clipboard
fandhe-frontend-pre-styled-ui の clipboard 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/colorPalettevariant は提供しない(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-textAPI Reference
Arguments
| Name | Type | Default | Description |
|---|---|---|---|
value | &str | (必須) | コピー対象値。root の data-value としてそのまま出力される(既定エスケープ経由)。クライアント側はこの data-value を読み取って実際の書き込みを行う契約。 |
copied | bool | false | コピー済みかどうか。data-copied・indicator の可視性・input/control/trigger の data-copied へ反映される。 |
attrs | Vec<(&str, &str)> | vec![] | 各パーツへ渡す追加属性。styled root は呼び出し側 class を除去してから合成する。 |
children | Vec<Node> | vec![] | パーツ配下に描画する子ノード。 |
Data Attributes
| Part | Attribute | Observed Values |
|---|---|---|
indicator | data-state | hidden, visible |
indicator | data-variant | copied, idle |
input | data-readonly | (値なし) |
root | data-value | https://example.com/share/abc |
Examples
コピー済み状態
copied = true を渡すと data-copied が付与され、indicator の可視性が入れ替わります(コピー用 → コピー済み用)。
https://example.com/share/abc
Accessibility
Keyboard Interactions
| Key | Description |
|---|---|
| Tab / Space / Enter | trigger はネイティブ <button type="button"> であり、フォーカス・押下操作はブラウザ既定動作で成立する。 |