EmojiPicker

絵文字を検索して選ぶパネルです。

よく使う

顔

手

物と記号

Popoverで開く(リアクションを追加する時の形)
種類を絞った絵文字パネル

状態

狭い場所:列が減る

よく使う

顔

手

物と記号

右から左に読む場合

شائع

使いどころ

  • リアクションや状態のアイコンとして、絵文字を一つ探して選ぶ時に使います。
  • メッセージなどへリアクションを付ける時は、この絵文字パネルを中に持つ Reactions を使います。決まった少数の絵文字から選ぶだけなら、groups を絞って渡します。

使い方

id を渡して置きます。上に検索欄、下に種類ごとの見出しと絵文字の格子を並べます。見出しは灰色の太字(12px)で、絵文字は枠も影も無い平らなセル(最小32px)に置き、ホバーすると候補の一覧の選んでいる項目と同じ角の無い淡い青(#ddeefe)の面を出し、押すと内側へへこませます。groups を渡さなければ、リアクションによく使う40個(defaultEmojiGroups)を並べます。全ての絵文字を並べたい時や、絵文字を絞りたい時は groups で渡します。

検索欄に打った言葉で、絵文字の name と keywords を絞り込みます。大文字と小文字は区別しません。当てはまる絵文字の無い種類は見出しごと隠し、一つも無い時は emptyLabel を出します。

絵文字を押すか、Enter・Spaceで選ぶと emoji-picker:pick を出します。絵文字パネルは選んだ後も開いたままで、選択の状態も持ちません。閉じる・付けるなどの続きは利用側がこのイベントを受けて行います。

絵文字パネル自体は開閉を持たないので、Popover の中に置くか、ページにそのまま置きます。Popover の中に置く時は autofocus を渡すと、開いた時に検索欄へ移り、すぐ打ち始められます。

JavaScriptが無い時は、格子と検索欄を表示するだけで、絞り込みと、選択時のイベントの発火は行いません。

キーボード

EmojiPickerのキーボード操作
キー動作
Tab格子へは一か所だけで入ります。初めは先頭の絵文字、絞り込んだ後は残った先頭の絵文字です。
←・→前後の絵文字へ移ります。右から左に読む時は逆です。
↑・↓上・下の行の同じ列の絵文字へ移ります。行は表示中の位置から数え、種類をまたぐ時も列をそろえます。移り先の行が短い時はその行の最後へ移り、最初・最後の行では動きません。
Home・End表示中の最初・最後の絵文字へ移ります。
Enter・Spaceフォーカスのある絵文字を選びます。

アクセシビリティ

  • 絵文字パネルは role="group" で、label を名前にします。検索欄は placeholder を名前にします。
  • 種類ごとのまとまりは見出しを名前にします。見出しは h3 で固定です。
  • 絵文字のボタンは name を名前にし、ホバーすると同じ名前を出します。絵文字そのものではなく名前を読み上げます。

イベント

EmojiPickerが発火するイベント
イベント内容
emoji-picker:pick絵文字を選んだ時に出します。detailは { emoji, name } で、選んだ絵文字とその名前です。

API

EmojiPicker

絵文字を検索して選ぶ絵文字パネル。上に検索欄、下に種類ごとの絵文字のグリッドを並べる。選ぶとemoji-picker:pickイベントを発火し、絵文字と名前を渡す。Popoverの中に置いてリアクションを追加する時などに使う。グリッドの中は矢印キーで移動し、Enterかクリックで選ぶ。Tabでグリッドへ入る位置は一か所だけにする。

EmojiPickerのprops
名前型既定値説明
id必須string検索欄と種類の見出しのIDの接頭辞。ページ内で一意にする。
labelstring"絵文字を選ぶ"絵文字パネル全体(role="group")の読み上げ名。
groupsreadonly EmojiGroup[]defaultEmojiGroups種類ごとの絵文字。渡さなければリアクションによく使う40個(defaultEmojiGroups)を並べる。
placeholderstring"絵文字を探す…"検索欄のプレースホルダー。欄の読み上げ名にも使う。
emptyLabelstring"当てはまる絵文字はありません"検索した言葉に当てはまる絵文字が無い時に出す文。
autofocusbooleanfalsePopoverの中に置く時。開いた時に検索欄へフォーカスを移す。

ほかに、<div>へ標準のHTML属性を渡せます。

登録するcontroller:emoji-picker(EmojiPickerController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/button.css、components/icon.css、components/input-group.css、components/emoji-picker.css

EmojiGroup

EmojiGroup
名前型既定値説明
label必須string種類の見出し。グリッドのまとまりの読み上げ名にもなる。
emojis必須readonly Emoji[]この種類に並べる絵文字。並べた順にグリッドへ置く。

Emoji

Emoji
名前型既定値説明
emoji必須stringグリッドに表示し、選んだ時にemoji-picker:pickイベントで渡す絵文字。
name必須string読み上げとホバー時の名前。
keywordsreadonly string[]検索に使う別名。

コード

HTML
Hono JSX