このページでは <Datatable src="..." /> コンポーネントを使って、MDX から直接データテーブルを埋め込む方法を示します。
基本的な使い方
2 つのファイルを用意するだけです。
| ファイル | 役割 |
|---|---|
src/data/books.json | データ配列 |
src/data/books-table.json | 列・フィルター・変換定義 |
あとは MDX に 1 行書くだけでテーブルが展開されます。
<Datatable src="books" />
src はファイル名(拡張子なし)を指定します。src/data/books.json と src/data/books-table.json が読み込まれます。デモ
全 8 件
| タイトル | 著者 | 出版年 | ジャンル | 評価 | タグ |
|---|---|---|---|---|---|
| 達人プログラマー | David Thomas, Andrew Hunt | 2020 | 技術書 | ★★★★★ | プログラミングキャリア |
| Clean Code | Robert C. Martin | 2009 | 技術書 | ★★★★★ | プログラミング設計 |
| イシューからはじめよ | 安宅和人 | 2010 | ビジネス | ★★★★★ | 思考法問題解決 |
| FACTFULNESS | Hans Rosling | 2018 | ノンフィクション | ★★★★★ | データ思考法 |
| Designing Data-Intensive Applications | Martin Kleppmann | 2017 | 技術書 | ★★★★★ | 分散システムデータベース |
| エッセンシャル思考 | Greg McKeown | 2014 | ビジネス | ★★★★☆ | 生産性思考法 |
| Design Patterns | GoF | 1994 | 技術書 | ★★★★☆ | プログラミング設計 |
| ゼロ・トゥ・ワン | Peter Thiel | 2014 | ビジネス | ★★★☆☆ | スタートアップビジネス |
同じページに複数のテーブルを置く
同じページに複数置くときは id を指定して区別します。
<Datatable src="books" id="books-second" />
テーブル定義ファイル(-table.json)の構造
{
"columns": [
{ "key": "title", "label": "タイトル", "align": "left", "html": true },
{ "key": "rating", "label": "評価", "align": "center", "html": true }
],
"filters": [
{ "key": "genre", "label": "ジャンル" },
{ "key": "tags", "label": "タグ", "split": "," }
],
"defaultSort": "rating",
"defaultAsc": false,
"transform": {
"rating": { "type": "stars", "max": 5 },
"genre": { "type": "badge", "colors": { "技術書": { "bg": "#dbeafe", "color": "#1d4ed8" } } },
"tags": { "type": "tags" },
"title": { "type": "link", "hrefField": "id", "basePath": "/books/" }
}
}
transform で使えるセル変換
| 種別 | 説明 |
|---|---|
stars | 数値を ★☆ で表示。max で最大値を指定 |
badge | colors マップでキー別の背景色・文字色を指定 |
tags | 配列またはカンマ区切り文字列をタグチップで表示 |
link | hrefField のフィールドを URL に、basePath をプレフィックスに使いリンク化 |
データを増やしたい場合は
src/data/books.json に項目を追加するだけです。テーブル定義を変えずにデータだけ増やせます。関連ページ
- サンプル:基本機能 — 基本的なMarkdown機能
- サンプル:ショートコードリファレンス — 全ショートコード一覧