SplitView

一覧と本文、作業と補足を並べて表示します。

公開案内の原稿

新しい利用案内を公開します。本文、リンク先、添付資料を確認してください。

内容を確定した後、公開日時を設定します。

確認状況

確認中担当:田中 遥

添付資料:2件

一覧と本文(reader):左の一覧を読みながら右で開く

カテゴリ案をまとめました

5つのカテゴリに整理しました。実際の記事を入れて試してみませんか。一覧で選んだ連絡は、右の面で開きます。

幅を変えない:作業と、その値の一覧

公開案内の原稿

新しい利用案内を公開します。本文、リンク先、添付資料を確認してください。

内容を確定した後、公開日時を設定します。

公開状態
確認待ち
担当者
田中 遥
公開予定
9月30日
長い本文:面の高さは長い側にそろう

利用規約の改訂

予約の取り消しは前日までを無料とし、当日の変更は受付で相談できるようにします。会議室の利用時間は、予約した時間の5分前から鍵をお渡しします。

初めての方は入口右手の窓口で名前をお伝えください。長期利用の方は、月初めに利用票を提出してください。利用票は受付と、このページの添付資料から受け取れます。

改訂は10月1日から適用します。それまでに受け付けた予約は、改訂前の条件のまま扱います。

確認状況

確認中担当:田中 遥

添付資料:2件

狭い場所:上下に積み、境目の罫線は横になる

公開案内の原稿

新しい利用案内を公開します。本文、リンク先、添付資料を確認してください。

内容を確定した後、公開日時を設定します。

確認状況

確認中担当:田中 遥

添付資料:2件

右から左へ書く言語

المسودة

راجع النص والروابط والمرفقات قبل النشر.

الحالة

قيد المراجعة

使いどころ

  • 一覧と、その中で選んだ一件の本文を並べる時はlayout="reader"を使います。
  • 作業の本体と、その値や状態の補足を並べる時はlayout="inspector"を使います。
  • 作業面の左右に開閉できる補助パネルを付ける時はWing、同じ場所で中身を切り替える時はTabsを使います。

使い方

primary・secondaryを渡します。DOMの読み順は常にprimary、secondaryの順です。二つの領域は、枠を持たず四方へぼかしの影を落とす白いカードの中に並べ、境目に1pxの淡い灰色の罫線を一本引きます。各領域の内側の余白はCardと同じ上下左右16pxです。罫線はHighriseの本文の列と右の列の間の線と同じ1px #eeeeee です。

SplitView自身の幅が52rem以上で左右に並べます。inspectorはprimaryを広く(おおよそ2:1)、readerはprimaryを狭く(おおよそ3:5)取ります。52rem未満ではprimaryを上、secondaryを下に積み、境目の罫線は横になります。

resizableを指定し、SplitterControllerをsplitterとして登録すると、境目の罫線の中ほどに、控えめなボタンと同じ平らな白に1pxの灰色の枠と下の1pxの影を付けた、細いハンドルを出します。ハンドルにホバーするかフォーカスすると、境目の罫線を青緑にします。ハンドルのドラッグと矢印キーで、primaryの幅を全体の20〜80%の間で変えられます。初めの幅はinitialSizeで決めます。幅を変えられるのは左右に並べた時だけです。

利用者が幅を変えるとsplitter:beforechange、続けてsplitter:changeを発火します。ドラッグは離した時に一度だけ発火します。幅を覚えておく時は、splitter:changeのdetail.valueを利用側で保存し、次の描画でinitialSizeに渡します。

JavaScriptなしではハンドルを出さず、layoutの比率で並べます。

キーボード

SplitViewのキーボード操作
キー動作
← / →ハンドルで、primaryの幅を1%ずつ狭く・広くします。右から左へ書く言語では向きが逆になります。
Home / Endハンドルで、primaryを最小(20%)・最大(80%)の幅にします。
Enterハンドルで、primaryを最小の幅にします。もう一度押すと元の幅に戻します。

アクセシビリティ

  • ハンドルはrole="separator"・aria-orientation="vertical"で、「領域の幅を調整」という読み上げ名と、primaryの領域を指すaria-controlsを持ちます。今の幅はcontrollerがaria-valuenow・aria-valuemin・aria-valuemaxで伝えます。
  • controllerが使う幅の範囲入力(「主領域の幅」)を、見た目からは隠して置きます。

イベント

SplitViewが発火するイベント
イベント内容
splitter:beforechange利用者が幅を変える直前に発火します。detailはvalue(新しい幅の%)・previousValue・reason(pointerまたはkeyboard)です。取り消すと元の幅に戻します。
splitter:change幅を変えた後に発火します。detailはsplitter:beforechangeと同じです。

API

SplitView

inspectorは作業+補足、readerは一覧+本文。DOMの読み順は常にprimaryが先。

SplitViewのprops
名前型既定値説明
idstringルートのid。省略すると自動で作り、ハンドルとprimaryの領域、幅の入力の関連付けに使います。
primary必須Child先に読む領域。広い配置では先頭側、狭い配置では上に置く。
secondary必須Child後に読む領域。広い配置では末尾側、狭い配置では下に置く。
layout"inspector" | "reader""inspector"inspectorはprimaryを広く取る作業+補足、readerはprimaryを狭く取る一覧+本文。
resizablebooleanfalse境目にハンドルを置き、ドラッグと矢印キーで幅を変えられるようにする。 SplitterControllerをsplitterとして登録した時だけ働き、未接続ではlayoutの固定の比率で並べる。
initialSizenumberlayout === "reader" ? 38 : 68resizableの時のprimaryの幅の初期値。全体に対する百分率で、20〜80の範囲に収める。既定はreaderで38、inspectorで68。

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

登録するcontroller:splitter(SplitterController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/split-view.css、components/section.css

コード

HTML
Hono JSX