Treeview Svelte(ツリービュー・Svelte)コンポーネント

    Treeview Svelteコンポーネントは、Framework7のTreeviewコンポーネントを表しています。

    Treeviewコンポーネント

    以下のコンポーネントが含まれています。

    • Treeview - メインのツリービューコンテナ
    • TreeviewItem - ツリービューのアイテム

    ツリービューのプロパティ

    PropTypeDefaultDescription
    <TreeviewItem> properties
    togglebooleanツリービューアイテムのトグルボタンを有効にします。デフォルトでは、子アイテムがある場合に有効です。
    itemTogglebooleanfalseツリービューアイテム全体をトグルとして有効にします。
    selectablebooleanfalseアイテムを選択可能にします。
    selectedbooleanアイテムを選択状態にする
    openedbooleanfalseアイテムをデフォルトで開くかどうかを定義します。
    labelstringアイテムラベルテキスト
    loadChildrenbooleanfalse開いたときに子アイテムを読み込む必要がある場合に有効にします。
    linkstring
    boolean
    文字列で指定された場合、リンクとリンク先のURLを有効にします。href`属性と同じです。
    <TreeviewItem> icon related properties
    iconSizestring
    number
    アイコンサイズ(px)
    iconColorstringアイコンの色 デフォルトカラーのうちの1つです。
    iconstringカスタムアイコンのクラス
    iconF7stringF7アイコンのフォントアイコンの名前
    iconMaterialstringマテリアルアイコンのフォントアイコンの名称
    iconIosstringiOSテーマを使用している場合に使用されるアイコンです。アイコンファミリーとアイコン名をコロンで区切ったものです。
    iconMdstringMDテーマを使用する場合のアイコンです。アイコンファミリーとアイコン名をコロンで区切ったもの、例えば、material:homeなど。
    iconAurorastringAuroraテーマを使用する場合のアイコンです。アイコンファミリーとアイコンの名前をコロンで区切ったものです。
    <TreeviewItem> navigation/router related properties
    hrefstring
    boolean
    #ロードするページのURL。href="false"のブール値の場合は、hrefタグは追加されません。
    targetstringリンク・ターゲット属性の値、例えば、_blank_selfなど。
    viewstringページを読み込むためのViewのCSSセレクタ。または、現在のビューで読み込むためのcurrent
    externalbooleanFramework7のリンク・クリック・ハンドラのバイパスを有効にする
    backbooleanバックナビゲーションリンクを有効にする
    openInstringモーダルまたはパネルとしてのオープン・ページ・ルートを可能にする。popuploginScreensheetpopoverまたはpanelとすることができる。
    forceboolean履歴の中の前のページを無視してページを強制的にロードする (back propと一緒に使用する)
    reloadCurrentboolean現在のアクティブなページの代わりに新しいページをリロードする
    reloadPreviousboolean履歴の前のページをルートからの新しいページで置き換える
    reloadAllboolean新しいページをロードし、履歴とDOMからすべての前のページを削除する
    reloadDetailbooleanマスター詳細ビューで詳細ページを再読み込みする
    animatebooleanページのアニメーションを無効にする
    transitionstringカスタムページトランジションの名前
    ignoreCachebooleanキャッシングを無視する
    routeTabIdstringRoutable Tab id
    routePropsobject対象となるルートコンポーネントに渡される追加のプロップを持つオブジェクト。
    preventRouterbooleanfalse設定されている場合は、Framework7のルーターでは処理されません。
    <TreeviewItem> action related properties
    panelOpenstring
    boolean
    クリック時に開くパネルのCSSセレクタ。または、DOM内に左または右のパネルしかない場合は、leftまたはrightになります。
    panelClosestring
    boolean
    クリックでパネルを閉じる
    panelTogglestring
    boolean
    クリックされたときにパネルを閉じるかどうかのCSSセレクタ。また、DOMに左または右のパネルしかない場合には、leftまたはrightとすることができる。
    actionsOpenstring
    boolean
    クリックされたときに開くアクション・シートの CSS セレクタ
    actionsClosestring
    boolean
    クリックされたときに閉じるアクション・シートのCSSセレクタを指定する。または、現在開いているアクションシートを閉じるためのブール値のプロパティ
    popupOpenstring
    boolean
    クリック時に開くポップアップのCSSセレクタ
    popupClosestring
    boolean
    クリックにより閉じるポップアップのCSSセレクタ。または、現在開かれているポップアップを閉じるためのboolean特性
    popoverOpenstring
    boolean
    クリックで開くポップオーバーのCSSセレクタ
    popoverClosestring
    boolean
    クリックにより閉じるポップアップのCSSセレクタ。または、現在開かれているポップオーバーを閉じるためのboolean特性
    sheetOpenstring
    boolean
    クリックで開くシートモーダルのCSSセレクタ
    sheetClosestring
    boolean
    クリックにより閉じるシート・モーダルのCSSセレクタ。または、現在開かれているシートモーダルを閉じるためのboolean特性
    loginScreenOpenstring
    boolean
    クリックしたときに開くログイン画面のCSSセレクタ
    loginScreenClosestring
    boolean
    クリックされたときに閉じるログイン画面のCSSセレクタ あるいは、現在開かれているログイン画面を閉じるためのboolean特性
    sortableEnablestring
    boolean
    クリックした際に有効となるソート可能なリストのCSSセレクタ
    sortableDisablestring
    boolean
    クリックした際に無効となるソート可能なリストのCSSセレクタ。あるいは、現在開かれているソート可能リストを閉じるためのboolean特性
    sortableTogglestring
    boolean
    クリックした際に切り替えられるソート可能リストのCSSセレクタ。あるいは、現在開かれている/閉じられているソート可能なリストをトグルするためのboolean特性
    searchbarEnablestring
    boolean
    クリックした際に有効となる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーを有効にするためのboolean特性
    searchbarDisablestring
    boolean
    クリックすると無効になる拡張可能な検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーを無効にするためのboolean特性
    searchbarTogglestring
    boolean
    クリックしたときに切り替えられる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーをトグルするためのboolean特性
    searchbarClearstring
    boolean
    クリックするとクリアされる拡張検索バーのCSSセレクタ。あるいは、最初に見つかった検索バーをクリアするためのboolean特性
    cardOpenstring
    boolean
    クリックしたときに開く拡張カードのCSSセレクタ。あるいは、最初に見つかった拡張カードを開くためのブール値
    cardClosestring
    boolean
    クリックした際に閉じる拡張カードのCSSセレクタ。または、現在開かれている拡張カードを閉じるためのboolean型プロパティ
    cardPreventOpenbooleanこのプロパティを持つ要素をクリックしても、その親の拡張カードは開きません。
    menuClosebooleanクリックするとメニューのドロップダウンを閉じる

    ツリービューのイベント

    EventDescription
    <TreeviewItem> events
    clickユーザーがツリービューのアイテムをクリックすると、イベントが発生します。
    treeviewOpenアイテムが開いたときにイベントが発生します。
    treeviewCloseアイテムが閉じたときにイベントが発生します。
    treeviewLoadChildrenイベントは loadChildren プロパティーを持つツリービューアイテムが最初に開いた時に発生します。event.detail`には、ローディング用のプリローダーを隠すための関数が含まれています。

    ツリービューのアイテムスロット

    Treeview Svelte コンポーネント (<TreeviewItem>) には、カスタムエレメント用のスロットが追加されています。

    • root-start - 要素は、ツリービューアイテム要素の先頭に挿入されます。
    • root / root-end - 要素は、ツリービューアイテム要素の最後に挿入されます。
    • 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 - 要素は <div class="treeview-item-label"> 要素の前に挿入されます。
    • 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

    <Page>
      <Navbar title="Treeview" />
    
      <BlockTitle>Basic tree view</BlockTitle>
      <Block strong class="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 class="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 class="no-padding-horizontal">
        <Treeview>
          <TreeviewItem label="images" iconF7="folder_fill">
            <span slot="content-start">
              <Checkbox
                checked={Object.values(checkboxes.images).indexOf(false) < 0}
                indeterminate={Object.values(checkboxes.images).indexOf(false) >= 0 && Object.values(checkboxes.images).indexOf(true) >= 0}
                onChange={(e) => {
                  Object.keys(checkboxes.images).forEach(k => checkboxes.images[k] = e.target.checked);
                  checkboxes = checkboxes;
                }}
              />
            </span>
            <TreeviewItem label="avatar.png" iconF7="photo_fill" toggle={false}>
              <span slot="content-start">
                <Checkbox
                  checked={checkboxes.images['avatar.png']}
                  onChange={(e) => {
                    checkboxes.images['avatar.png'] = e.target.checked;
                    checkboxes = checkboxes;
                  }}
                />
              </span>
            </TreeviewItem>
            <TreeviewItem label="background.jpg" iconF7="photo_fill" toggle={false}>
              <span slot="content-start">
                <Checkbox
                  checked={checkboxes.images['background.jpg']}
                  onChange={(e) => {
                    checkboxes.images['background.jpg'] = e.target.checked;
                    checkboxes = checkboxes;
                  }}
                />
              </span>
            </TreeviewItem>
          </TreeviewItem>
          <TreeviewItem label="documents" iconF7="folder_fill">
            <span slot="content-start">
              <Checkbox
                checked={Object.values(checkboxes.documents).indexOf(false) < 0}
                indeterminate={Object.values(checkboxes.documents).indexOf(false) >= 0 && Object.values(checkboxes.documents).indexOf(true) >= 0}
                onChange={(e) => {
                  Object.keys(checkboxes.documents).forEach(k => checkboxes.documents[k] = e.target.checked);
                  checkboxes = checkboxes;
                }}
              />
            </span>
            <TreeviewItem label="cv.docx" iconF7="doc_text_fill" toggle={false}>
              <span slot="content-start">
                <Checkbox
                  checked={checkboxes.documents['cv.docx']}
                  onChange={(e) => {
                    checkboxes.documents['cv.docx'] = e.target.checked;
                    checkboxes = checkboxes;
                  }}
                />
              </span>
            </TreeviewItem>
            <TreeviewItem label="info.docx" iconF7="doc_text_fill" toggle={false}>
              <span slot="content-start">
                <Checkbox
                  checked={checkboxes.documents['info.docx']}
                  onChange={(e) => {
                    checkboxes.documents['info.docx'] = e.target.checked;
                    checkboxes = checkboxes;
                  }}
                />
              </span>
            </TreeviewItem>
          </TreeviewItem>
          <TreeviewItem label=".gitignore" iconF7="logo_github" toggle={false}>
            <span slot="content-start">
              <Checkbox  checked={checkboxes['.gitignore']} onChange={(e) => {
                checkboxes['.gitignore'] = e.target.checked;
                checkboxes = checkboxes;
              }}/>
            </span>
          </TreeviewItem>
          <TreeviewItem label="index.html" iconF7="doc_text_fill" toggle={false}>
            <span slot="content-start">
              <Checkbox  checked={checkboxes['index.html']} onChange={(e) => {
                checkboxes['index.html'] = e.target.checked;
                checkboxes = checkboxes;
              }}/>
            </span>
          </TreeviewItem>
        </Treeview>
      </Block>
    
      <BlockTitle>Whole item as toggle</BlockTitle>
      <Block strong class="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 class="no-padding-horizontal">
        <Treeview>
          <TreeviewItem
            selectable
            selected={selectedItem === 'images'}
            label="images"
            iconF7="folder_fill"
            onClick={(e) => toggleSelectable(e, 'images')}
          >
            <TreeviewItem
              selectable
              selected={selectedItem === 'avatar.png'}
              label="avatar.png"
              iconF7="photo_fill"
              onClick={(e) => toggleSelectable(e, 'avatar.png')}
            />
            <TreeviewItem
              selectable
              selected={selectedItem === 'background.jpg'}
              label="background.jpg"
              iconF7="photo_fill"
              onClick={(e) => toggleSelectable(e, 'background.jpg')}
            />
          </TreeviewItem>
          <TreeviewItem
            selectable
            selected={selectedItem === 'documents'}
            label="documents"
            iconF7="folder_fill"
            onClick={(e) => toggleSelectable(e, 'documents')}
          >
            <TreeviewItem
              selectable
              selected={selectedItem === 'cv.docx'}
              label="cv.docx"
              iconF7="doc_text_fill"
              onClick={(e) => toggleSelectable(e, 'cv.docx')}
            />
            <TreeviewItem
              selectable
              selected={selectedItem === 'info.docx'}
              label="info.docx"
              iconF7="doc_text_fill"
              onClick={(e) => toggleSelectable(e, 'info.docx')}
            />
          </TreeviewItem>
          <TreeviewItem
            selectable
            selected={selectedItem === '.gitignore'}
            label=".gitignore"
            iconF7="logo_github"
            onClick={(e) => toggleSelectable(e, '.gitignore')}
          />
          <TreeviewItem
            selectable
            selected={selectedItem === 'index.html'}
            label="index.html"
            iconF7="doc_text_fill"
            onClick={(e) => toggleSelectable(e, 'index.html')}
          />
        </Treeview>
      </Block>
    
      <BlockTitle>Preload children</BlockTitle>
      <Block strong class="no-padding-horizontal">
        <Treeview>
          <TreeviewItem
            toggle
            loadChildren
            iconF7="person_2_fill"
            label="Users"
            onTreeviewLoadChildren={(el, done) => loadChildren(done)}
          >
            {#each loadedChildren as item, index (index)}
              <TreeviewItem
                iconF7="person_fill"
                label={item.name}
              />
            {/each}
          </TreeviewItem>
        </Treeview>
      </Block>
    
      <BlockTitle>With links</BlockTitle>
      <Block strong class="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>
      
    
    <script>
      import { f7, Page, Navbar, BlockTitle, Block, Treeview, TreeviewItem, Checkbox } from 'framework7-svelte';
    
      let checkboxes = {
        images: {
          'avatar.png': false,
          'background.jpg': false,
        },
        documents: {
          'cv.docx': false,
          'info.docx': false,
        },
        '.gitignore': false,
        'index.html': false,
      };
      let selectedItem = null;
      let loadedChildren = [];
    
      function toggleSelectable(e, item) {
        var $ = f7.$;
        if ($(e.target).is('.treeview-toggle')) return;
        selectedItem = item;
      }
    
      function loadChildren(done) {
        setTimeout(function () {
          // call done() to hide preloader
          done();
          loadedChildren = [
            {
              name: 'John Doe',
            },
            {
              name: 'Jane Doe',
            },
            {
              name: 'Calvin Johnson',
            },
          ];
        }, 2000);
      }
    
    </script>