Treeview Reactコンポーネント
Treeview Reactコンポーネントは、Framework7のTreeviewコンポーネントを表しています。
Treeviewコンポーネント
以下のコンポーネントが含まれています。
Treeview- メインのツリービューコンテナTreeviewItem- ツリービューのアイテム
ツリービューのプロパティ
| Prop | Type | Default | Description |
|---|---|---|---|
| <TreeviewItem> properties | |||
| toggle | boolean | ツリービューアイテムのトグルボタンを有効にします。デフォルトでは、子アイテムがある場合に有効です。 | |
| itemToggle | boolean | false | ツリービューアイテム全体をトグルとして有効にします。 |
| selectable | boolean | false | アイテムを選択可能にします。 |
| selected | boolean | アイテムを選択状態にする | |
| opened | boolean | false | アイテムをデフォルトで開くかどうかを定義します。 |
| label | string | アイテムラベルテキスト | |
| loadChildren | boolean | false | 開いたときに子アイテムを読み込む必要がある場合に有効にします。 |
| link | string boolean | 文字列で指定された場合、リンクとリンク先のURLを有効にします。href`属性と同じです。 | |
| <TreeviewItem> icon related properties | |||
| iconSize | string number | アイコンサイズ(px) | |
| iconColor | string | アイコンの色 デフォルトカラーのうちの1つです。 | |
| icon | string | カスタムアイコンのクラス | |
| iconF7 | string | F7アイコンのフォントアイコンの名前 | |
| iconMaterial | string | マテリアルアイコンのフォントアイコンの名称 | |
| iconIos | string | iOSテーマを使用している場合に使用されるアイコンです。アイコンファミリーとアイコン名をコロンで区切ったものです。 | |
| iconMd | string | MDテーマを使用する場合のアイコンです。アイコンファミリーとアイコン名をコロンで区切ったもの、例えば、material:homeなど。 | |
| iconAurora | string | Auroraテーマを使用する場合のアイコンです。アイコンファミリーとアイコンの名前をコロンで区切ったものです。 | |
| <TreeviewItem> navigation/router related properties | |||
| href | string boolean | # | ロードするページのURL。href="false"のブール値の場合は、hrefタグは追加されません。 |
| target | string | リンク・ターゲット属性の値、例えば、_blank、_selfなど。 | |
| view | string | ページを読み込むためのViewのCSSセレクタ。または、現在のビューで読み込むためのcurrent。 | |
| external | boolean | Framework7のリンク・クリック・ハンドラのバイパスを有効にする | |
| back | boolean | バックナビゲーションリンクを有効にする | |
| openIn | string | モーダルまたはパネルとしてのオープン・ページ・ルートを可能にする。popup、loginScreen、sheet、popoverまたはpanelとすることができる。 | |
| force | boolean | 履歴の中の前のページを無視してページを強制的にロードする (back propと一緒に使用する) | |
| reloadCurrent | boolean | 現在のアクティブなページの代わりに新しいページをリロードする | |
| reloadPrevious | boolean | 履歴の前のページをルートからの新しいページで置き換える | |
| reloadAll | boolean | 新しいページをロードし、履歴とDOMからすべての前のページを削除する | |
| reloadDetail | boolean | マスター詳細ビューで詳細ページを再読み込みする | |
| animate | boolean | ページのアニメーションを無効にする | |
| transition | string | カスタムページトランジションの名前 | |
| ignoreCache | boolean | キャッシングを無視する | |
| routeTabId | string | Routable Tab id | |
| routeProps | object | 対象となるルートコンポーネントに渡される追加のプロップを持つオブジェクト。 | |
| preventRouter | boolean | false | 設定されている場合は、Framework7のルーターでは処理されません。 |
| <TreeviewItem> action related properties | |||
| panelOpen | string boolean | クリック時に開くパネルのCSSセレクタ。または、DOM内に左または右のパネルしかない場合は、leftまたはrightになります。 | |
| panelClose | string boolean | クリックでパネルを閉じる | |
| panelToggle | string boolean | クリックされたときにパネルを閉じるかどうかのCSSセレクタ。また、DOMに左または右のパネルしかない場合には、leftまたはrightとすることができる。 | |
| actionsOpen | string boolean | クリックされたときに開くアクション・シートの CSS セレクタ | |
| actionsClose | string boolean | クリックされたときに閉じるアクション・シートのCSSセレクタを指定する。または、現在開いているアクションシートを閉じるためのブール値のプロパティ | |
| popupOpen | string boolean | クリック時に開くポップアップのCSSセレクタ | |
| popupClose | string boolean | クリックにより閉じるポップアップのCSSセレクタ。または、現在開かれているポップアップを閉じるためのboolean特性 | |
| popoverOpen | string boolean | クリックで開くポップオーバーのCSSセレクタ | |
| popoverClose | string boolean | クリックにより閉じるポップアップのCSSセレクタ。または、現在開かれているポップオーバーを閉じるためのboolean特性 | |
| sheetOpen | string boolean | クリックで開くシートモーダルのCSSセレクタ | |
| sheetClose | string boolean | クリックにより閉じるシート・モーダルのCSSセレクタ。または、現在開かれているシートモーダルを閉じるためのboolean特性 | |
| loginScreenOpen | string boolean | クリックしたときに開くログイン画面のCSSセレクタ | |
| loginScreenClose | string boolean | クリックされたときに閉じるログイン画面のCSSセレクタ あるいは、現在開かれているログイン画面を閉じるためのboolean特性 | |
| sortableEnable | string boolean | クリックした際に有効となるソート可能なリストのCSSセレクタ | |
| sortableDisable | string boolean | クリックした際に無効となるソート可能なリストのCSSセレクタ。あるいは、現在開かれているソート可能リストを閉じるためのboolean特性 | |
| sortableToggle | string boolean | クリックした際に切り替えられるソート可能リストのCSSセレクタ。あるいは、現在開かれている/閉じられているソート可能なリストをトグルするためのboolean特性 | |
| searchbarEnable | string boolean | クリックした際に有効となる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーを有効にするためのboolean特性 | |
| searchbarDisable | string boolean | クリックすると無効になる拡張可能な検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーを無効にするためのboolean特性 | |
| searchbarToggle | string boolean | クリックしたときに切り替えられる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーをトグルするためのboolean特性 | |
| searchbarClear | string boolean | クリックするとクリアされる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーをクリアするためのboolean特性 | |
| cardOpen | string boolean | クリックしたときに開く拡張カードのCSSセレクタ。あるいは、最初に見つかった拡張カードを開くためのブール値 | |
| cardClose | string boolean | クリックした際に閉じる拡張カードのCSSセレクタ。または、現在開かれている拡張カードを閉じるためのboolean型プロパティ | |
| cardPreventOpen | boolean | このプロパティを持つ要素をクリックしても、その親の拡張カードは開きません。 | |
| menuClose | boolean | クリックするとメニューのドロップダウンを閉じる | |
ツリービューのイベント
| Event | Description |
|---|---|
| <TreeviewItem> events | |
| click | ユーザーがツリービューのアイテムをクリックすると、イベントが発生します。 |
| treeviewOpen | アイテムが開いたときにイベントが発生します。 |
| treeviewClose | アイテムが閉じたときにイベントが発生します。 |
| treeviewLoadChildren | イベントは loadChildren プロパティーを持つツリービューアイテムが最初に開いた時に発生します。event.detail`には、ローディング用のプリローダーを隠すための関数が含まれています。 |
Treeviewのアイテムスロット
TreeviewのReactコンポーネント(<TreeviewItem>)には、カスタム要素用のスロットが追加されています。
root-start- 要素は、ツリービューアイテム要素の先頭に挿入されます。root/root-end- 要素は、treeview item 要素の最後に挿入されます。content-start- 要素が<div class="treeview-item-content">要素の先頭に挿入されます。content/content-end- 要素は<div class="treeview-item-content">要素の最後に挿入されます。children-start- 要素は<div class="treeview-item-children">要素の最初に挿入されます。default- 要素は<div class="treeview-item-children">要素の最後に挿入されます。media- 要素は、` 要素の前に挿入されます。label-start- 要素は、` 要素の先頭に挿入されます。label- 要素は<div class="treeview-item-label">要素の最後に挿入されます。<TreeviewItem label="Item 1"> <img src="path-to-my-image.jpg" slot="media"> <div slot="root-start">Root Start</div> <div slot="root">Root End</div> <div slot="content-start">Content Start</div> <div slot="content">Content End</div> <span slot="label-start">Before Label</span> <TreeviewItem label="Sub Item 1" /> ... </TreeviewItem> <!-- にレンダリングされます。 --> <div class="treeview-item"> <div class="treeview-item-root"> <div>Root Start</div> <div class="treeview-toggle"></div> <div class="treeview-item-content"> <div>Content Start</div> <img src="path-to-my-image.jpg"> <div class="treeview-item-label"> <span>Before Label</span> Item 1 </div> <div>Content End</div> </div> </div> <div class="treeview-item-children"> <div class="treeview-item"> <div class="treeview-item-root"> <div class="treeview-item-content"> <div class="treeview-item-label">Sub Item 1</div> </div> </div> </div> ... </div> <div>Root End</div> </div>Examples
import React, { useState } from 'react'; import { Page, Navbar, BlockTitle, Block, Treeview, TreeviewItem, Checkbox, f7, } from 'framework7-react'; export default () => { const [state, setState] = useState({ checkboxes: { images: { 'avatar.png': false, 'background.jpg': false, }, documents: { 'cv.docx': false, 'info.docx': false, }, '.gitignore': false, 'index.html': false, }, selectedItem: null, loadedChildren: [], }); const toggleSelectable = (e, item) => { if (f7.$(e.target).is('.treeview-toggle')) return; state.selectedItem = item; setState({ ...state }); }; const loadChildren = (done) => { setTimeout(() => { // call done() to hide preloader done(); state.loadedChildren = [ { name: 'John Doe', }, { name: 'Jane Doe', }, { name: 'Calvin Johnson', }, ]; setState({ ...state }); }, 2000); }; return ( <Page> <Navbar title="Treeview" /> <BlockTitle>Basic tree view</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem label="Item 1"> <TreeviewItem label="Sub Item 1"> <TreeviewItem label="Sub Sub Item 1" /> <TreeviewItem label="Sub Sub Item 2" /> </TreeviewItem> <TreeviewItem label="Sub Item 2"> <TreeviewItem label="Sub Sub Item 1" /> <TreeviewItem label="Sub Sub Item 2" /> </TreeviewItem> </TreeviewItem> <TreeviewItem label="Item 2"> <TreeviewItem label="Sub Item 1"> <TreeviewItem label="Sub Sub Item 1" /> <TreeviewItem label="Sub Sub Item 2" /> </TreeviewItem> <TreeviewItem label="Sub Item 2"> <TreeviewItem label="Sub Sub Item 1" /> <TreeviewItem label="Sub Sub Item 2" /> </TreeviewItem> </TreeviewItem> <TreeviewItem label="Item 3" /> </Treeview> </Block> <BlockTitle>With icons</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem label="images" iconF7="folder_fill"> <TreeviewItem label="avatar.png" iconF7="photo_fill" /> <TreeviewItem label="background.jpg" iconF7="photo_fill" /> </TreeviewItem> <TreeviewItem label="documents" iconF7="folder_fill"> <TreeviewItem label="cv.docx" iconF7="doc_text_fill" /> <TreeviewItem label="info.docx" iconF7="doc_text_fill" /> </TreeviewItem> <TreeviewItem label=".gitignore" iconF7="logo_github" /> <TreeviewItem label="index.html" iconF7="doc_text_fill" /> </Treeview> </Block> <BlockTitle>With checkboxes</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem label="images" iconF7="folder_fill"> <Checkbox slot="content-start" checked={Object.values(state.checkboxes.images).indexOf(false) < 0} indeterminate={ Object.values(state.checkboxes.images).indexOf(false) >= 0 && Object.values(state.checkboxes.images).indexOf(true) >= 0 } onChange={(e) => { Object.keys(state.checkboxes.images).forEach((k) => { state.checkboxes.images[k] = e.target.checked; }); setState({ ...state }); }} /> <TreeviewItem label="avatar.png" iconF7="photo_fill"> <Checkbox slot="content-start" checked={state.checkboxes.images['avatar.png']} onChange={(e) => { state.checkboxes.images['avatar.png'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> <TreeviewItem label="background.jpg" iconF7="photo_fill"> <Checkbox slot="content-start" checked={state.checkboxes.images['background.jpg']} onChange={(e) => { state.checkboxes.images['background.jpg'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> </TreeviewItem> <TreeviewItem label="documents" iconF7="folder_fill"> <Checkbox slot="content-start" checked={Object.values(state.checkboxes.documents).indexOf(false) < 0} indeterminate={ Object.values(state.checkboxes.documents).indexOf(false) >= 0 && Object.values(state.checkboxes.documents).indexOf(true) >= 0 } onChange={(e) => { Object.keys(state.checkboxes.documents).forEach((k) => { state.checkboxes.documents[k] = e.target.checked; }); setState({ ...state }); }} /> <TreeviewItem label="cv.docx" iconF7="doc_text_fill"> <Checkbox slot="content-start" checked={state.checkboxes.documents['cv.docx']} onChange={(e) => { state.checkboxes.documents['cv.docx'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> <TreeviewItem label="info.docx" iconF7="doc_text_fill"> <Checkbox slot="content-start" checked={state.checkboxes.documents['info.docx']} onChange={(e) => { state.checkboxes.documents['info.docx'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> </TreeviewItem> <TreeviewItem label=".gitignore" iconF7="logo_github"> <Checkbox slot="content-start" checked={state.checkboxes['.gitignore']} onChange={(e) => { state.checkboxes['.gitignore'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> <TreeviewItem label="index.html" iconF7="doc_text_fill"> <Checkbox slot="content-start" checked={state.checkboxes['index.html']} onChange={(e) => { state.checkboxes['index.html'] = e.target.checked; setState({ ...state }); }} /> </TreeviewItem> </Treeview> </Block> <BlockTitle>Whole item as toggle</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem itemToggle label="images" iconF7="folder_fill"> <TreeviewItem label="avatar.png" iconF7="photo_fill" /> <TreeviewItem label="background.jpg" iconF7="photo_fill" /> </TreeviewItem> <TreeviewItem itemToggle label="documents" iconF7="folder_fill"> <TreeviewItem label="cv.docx" iconF7="doc_text_fill" /> <TreeviewItem label="info.docx" iconF7="doc_text_fill" /> </TreeviewItem> <TreeviewItem label=".gitignore" iconF7="logo_github" /> <TreeviewItem label="index.html" iconF7="doc_text_fill" /> </Treeview> </Block> <BlockTitle>Selectable</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem selectable selected={state.selectedItem === 'images'} label="images" iconF7="folder_fill" onClick={(e) => toggleSelectable(e, 'images')} > <TreeviewItem selectable selected={state.selectedItem === 'avatar.png'} label="avatar.png" iconF7="photo_fill" onClick={(e) => toggleSelectable(e, 'avatar.png')} /> <TreeviewItem selectable selected={state.selectedItem === 'background.jpg'} label="background.jpg" iconF7="photo_fill" onClick={(e) => toggleSelectable(e, 'background.jpg')} /> </TreeviewItem> <TreeviewItem selectable selected={state.selectedItem === 'documents'} label="documents" iconF7="folder_fill" onClick={(e) => toggleSelectable(e, 'documents')} > <TreeviewItem selectable selected={state.selectedItem === 'cv.docx'} label="cv.docx" iconF7="doc_text_fill" onClick={(e) => toggleSelectable(e, 'cv.docx')} /> <TreeviewItem selectable selected={state.selectedItem === 'info.docx'} label="info.docx" iconF7="doc_text_fill" onClick={(e) => toggleSelectable(e, 'info.docx')} /> </TreeviewItem> <TreeviewItem selectable selected={state.selectedItem === '.gitignore'} label=".gitignore" iconF7="logo_github" onClick={(e) => toggleSelectable(e, '.gitignore')} /> <TreeviewItem selectable selected={state.selectedItem === 'index.html'} label="index.html" iconF7="doc_text_fill" onClick={(e) => toggleSelectable(e, 'index.html')} /> </Treeview> </Block> <BlockTitle>Preload children</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem toggle loadChildren iconF7="person_2_fill" label="Users" onTreeviewLoadChildren={(e, done) => loadChildren(done)} > {state.loadedChildren.map((item, index) => ( <TreeviewItem key={index} iconF7="person_fill" label={item.name} /> ))} </TreeviewItem> </Treeview> </Block> <BlockTitle>With links</BlockTitle> <Block strong className="no-padding-horizontal"> <Treeview> <TreeviewItem iconF7="square_grid_2x2_fill" itemToggle label="Modals"> <TreeviewItem link="/popup/" iconF7="link" label="Popup" /> <TreeviewItem link="/dialog/" iconF7="link" label="Dialog" /> <TreeviewItem link="/action-sheet/" iconF7="link" label="Action Sheet" /> </TreeviewItem> <TreeviewItem iconF7="square_grid_2x2_fill" itemToggle label="Navigation Bars"> <TreeviewItem link="/navbar/" iconF7="link" label="Navbar" /> <TreeviewItem link="/toolbar-tabbar/" iconF7="link" label="Toolbar & Tabbar" /> </TreeviewItem> </Treeview> </Block> </Page> ); };
