リスト Svelte コンポーネント
リストビューは、アプリでよく見られる汎用性の高い強力なユーザーインターフェースコンポーネントです。リストビューは、セクション/グループに分割される場合がある複数の行のスクロール可能なリストでデータを表示します。
リストビューには多くの用途があります
- ユーザーが階層構造のデータ内を移動できるようにするため
- アイテムのインデックス付きリストを表示するため
- 詳細情報とコントロールを視覚的に区別できるグループで表示するため
- 選択可能なオプションのリストを表示するため
リスト Svelte コンポーネントは、Framework7 の リストビューコンポーネントを表します。
リストコンポーネント
以下のコンポーネントが含まれています
List
- メインリストビュー要素ListGroup
- リストグループ要素
リストプロパティ
プロパティ | タイプ | デフォルト | 説明 |
---|---|---|---|
<List> プロパティ | |||
ul | boolean | true | 子を <ul> でラップします。ネストされた <ListGroup> で使用する場合には無効にすることをお勧めします |
inset | boolean | リストをインセットにします。テーマ固有のレイアウトには、insetIos および insetMd プロパティを使用できます | |
xsmallInset | boolean | アプリの幅が 480px 以上の場合にリストをインセットにします。テーマ固有のレイアウトには、xsmallInsetIos および xsmallInsetMd プロパティを使用できます | |
smallInset | boolean | アプリの幅が 568px 以上の場合にリストをインセットにします。テーマ固有のレイアウトには、smallInsetIos および smallInsetMd プロパティを使用できます | |
mediumInset | boolean | アプリの幅が 768px 以上の場合にリストをインセットにします。テーマ固有のレイアウトには、mediumInsetIos および mediumInsetMd プロパティを使用できます | |
largeInset | boolean | アプリの幅が 1024px 以上の場合にリストをインセットにします。テーマ固有のレイアウトには、largeInsetIos および largeInsetMd プロパティを使用できます | |
xlargeInset | boolean | アプリの幅が 1200px 以上の場合にリストをインセットにします。テーマ固有のレイアウトには、xlargeInsetIos および xlargeInsetMd プロパティを使用できます | |
strong | boolean | リストに特別なハイライトを追加します。テーマ固有のレイアウトには、strongIos および strongMd プロパティを使用できます | |
outline | boolean | リストをアウトライン(境界線付き)にします。テーマ固有のレイアウトには、outlineIos および outlineMd プロパティを使用できます | |
dividers | boolean | リストアイテムの間に仕切り線(境界線)を追加します。テーマ固有のレイアウトには、dividersIos および dividersMd プロパティを使用できます | |
mediaList | boolean | false | メディアリストを有効にします |
linksList | boolean | false | 簡略化されたリンクリストを有効にします |
simpleList | boolean | false | 簡略化されたシンプルリストを有効にします |
sortable | boolean | false | ソート可能なリストを有効にします |
sortableOpposite | boolean | false | 反対側(LTR では左側)にソート可能なハンドラーをレンダリングします |
sortableTapHold | boolean | false | アイテムをタップアンドホールド(長押し)すると、リストアイテムをソート可能にします。この場合、アプリはカスタムの `taphold` イベントに依存します。正しく動作させるには、アプリパラメータ `touch.tapHold: true` も有効にしていることを確認してください |
sortableEnabled | boolean | false | ソート可能なリストでソートを有効にします |
sortableMoveElements | boolean | 渡されると、同じグローバルアプリパラメータ `sortable.moveElements` が上書きされます。 | |
menuList | boolean | メニューリストを有効にします | |
accordion | boolean | false | アコーディオンリストを有効にします |
accordionOpposite | boolean | false | 反対側(LTR では左側)にアコーディオンシェブロンアイコンをレンダリングします |
contactsList | boolean | false | スタイリングに必要な追加クラスを追加することにより、連絡先リストを有効にします |
form | boolean | false | <div> の代わりにリストブロックで `<form>` タグを有効にします |
formStoreData | boolean | false | 現在のフォームのフォームストレージを有効にします |
noChevron | boolean | false | ネストされたリストアイテムリンクの「シェブロン」アイコンを削除します |
chevronCenter | boolean | false | ネストされたメディアリストアイテムの「シェブロン」アイコンを中央(垂直方向)に設定します |
tab | boolean | false | ブロックをタブとして使用する必要がある場合に追加の「tab」クラスを追加します |
tabActive | boolean | false | ブロックをタブとして使用し、アクティブなタブにする場合に追加の「tab-active」クラスを追加します |
virtualList | boolean | false | 仮想リストを有効にします |
virtualListParams | object | 仮想リストパラメータを含むオブジェクト | |
<ListGroup> プロパティ | |||
mediaList | boolean | false | このグループのメディアリストを有効にします |
sortable | boolean | false | このグループのソート可能なリストを有効にします |
sortableTapHold | boolean | false | アイテムをタップアンドホールド(長押し)すると、リストアイテムをソート可能にします。この場合、アプリはカスタムの `taphold` イベントに依存します。正しく動作させるには、アプリパラメータ `touch.tapHold: true` も有効にしていることを確認してください |
simpleList | boolean | false | このグループの簡略化されたシンプルリストを有効にします |
リストイベント
イベント | 説明 |
---|---|
<List> イベント | |
tabShow | リストブロックタブが表示/アクティブになったときにイベントがトリガーされます |
tabHide | リストブロックタブが非表示/非アクティブになったときにイベントがトリガーされます |
submit | リストをフォームとして使用する場合(`form` プロパティが有効な場合)、リストフォームの送信時にイベントがトリガーされます |
<List> ソート可能固有のイベント | |
sortableEnable | ソートモードが有効になったときにイベントがトリガーされます |
sortableDisable | ソートモードが無効になったときにイベントがトリガーされます |
sortableSort | ユーザーが現在ソートされている要素を新しい位置にリリースした後にイベントがトリガーされます。 `event.detail` には、ソートされたリストアイテムの開始/新しいインデックス番号を持つ `from` および `to` プロパティを持つオブジェクトが含まれます |
<List> 仮想リスト固有のイベント | |
virtualItemBeforeInsert | アイテムが仮想ドキュメントフラグメントに追加される前にイベントがトリガーされます |
virtualItemsBeforeInsert | 現在の DOM リストが削除された後、新しいドキュメントが挿入される前にイベントがトリガーされます |
virtualItemsAfterInsert | アイテムが挿入された新しいドキュメントフラグメントの後にイベントがトリガーされます |
virtualBeforeClear | 現在の DOM リストが削除され、新しいドキュメントフラグメントに置き換えられる前にイベントがトリガーされます |
リストスロット
リスト Svelte コンポーネント(`<List>`)には、カスタム要素用の追加スロットがあります
- `before-list` - 要素はリストビューの先頭、`<ul>` メインリストの直前に挿入されます
- `after-list` - 要素はリストビューの末尾、`<ul>` メインリストの直後に挿入されます
- `list` - 要素は `<ul>` メインリスト要素の内部に挿入されます
仮想リスト
仮想リストの使用方法と例については、仮想リスト Svelte コンポーネントのドキュメントを参照してください。
ソート可能なリスト
ソート可能なリストの使用方法と例については、ソート可能な Svelte コンポーネントのドキュメントを参照してください。
アコーディオンリスト
アコーディオンリストの使用方法と例については、アコーディオン Svelte コンポーネントのドキュメントを参照してください。
例
list.svelte
<script>
import {
Navbar,
Page,
BlockTitle,
Block,
List,
ListItem,
ListGroup,
Toggle,
} from 'framework7-svelte';
</script>
<!-- svelte-ignore a11y-missing-attribute -->
<!-- svelte-ignore a11y-invalid-attribute -->
<Page>
<Navbar title="List View" />
<Block>
<p>
Framework7 allows you to be flexible with list views (table views). You can make them as
navigation menus, you can use there icons, inputs, and any elements inside of the list, and
even make them nested:
</p>
</Block>
<BlockTitle>Simple List</BlockTitle>
<List dividersIos simpleList>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong List</BlockTitle>
<List dividersIos simpleList strong>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Outline List</BlockTitle>
<List dividersIos simpleList strong outline>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Inset List</BlockTitle>
<List dividersIos simpleList strong inset>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Outline Inset List</BlockTitle>
<List dividersIos simpleList strong outline inset>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Simple Links List</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem title="Link 1" link="#" />
<ListItem title="Link 2" link="#" />
<ListItem title="Link 3" link="#" />
</List>
<BlockTitle>Data list, with icons</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem title="Ivan Petrov" after="CEO"><i slot="media" class="icon icon-f7" /></ListItem>
<ListItem title="John Doe" badge="5"><i slot="media" class="icon icon-f7" /></ListItem>
<ListItem title="Jenna Smith"><i slot="media" class="icon icon-f7" /></ListItem>
</List>
<BlockTitle>Links</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="John Doe" after="Cleaner">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Jenna Smith"><i slot="media" class="icon icon-f7" /></ListItem>
</List>
<BlockTitle>Links, Header, Footer</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" header="Name" title="John Doe" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Phone" title="+7 90 111-22-3344" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Email" title="john@doe" footer="Home" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Email" title="john@framework7" footer="Work" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
</List>
<BlockTitle>Links, no icons</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" />
<ListItem link="#" title="John Doe" />
<ListItem groupTitle title="Group Title Here" />
<ListItem link="#" title="Ivan Petrov" />
<ListItem link="#" title="Jenna Smith" />
</List>
<BlockTitle>Grouped with sticky titles</BlockTitle>
<List dividersIos outlineIos strongIos ul={false}>
<ListGroup>
<ListItem title="A" groupTitle />
<ListItem title="Aaron " />
<ListItem title="Abbie" />
<ListItem title="Adam" />
</ListGroup>
<ListGroup>
<ListItem title="B" groupTitle />
<ListItem title="Bailey" />
<ListItem title="Barclay" />
<ListItem title="Bartolo" />
</ListGroup>
<ListGroup>
<ListItem title="C" groupTitle />
<ListItem title="Caiden" />
<ListItem title="Calvin" />
<ListItem title="Candy" />
</ListGroup>
</List>
<BlockTitle>Mixed and nested</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem title="No icons here" />
<li>
<ul>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem title="No icons here" />
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem title="With toggle">
<i slot="media" class="icon icon-f7" />
<span slot="after">
<Toggle />
</span>
</ListItem>
</ul>
</li>
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem title="With toggle">
<i slot="media" class="icon icon-f7" />
<span slot="after">
<Toggle />
</span>
</ListItem>
</List>
<BlockTitle>Tablet inset</BlockTitle>
<List dividersIos outlineIos strongIos mediumInset>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<div class="block-footer" slot="after-list">
<p>This list block will look like "inset" only on tablets (iPad)</p>
</div>
</List>
<BlockTitle>Media Lists</BlockTitle>
<Block>
<p>
Media Lists are almost the same as Data Lists, but with a more flexible layout for
visualization of more complex data, like products, services, users, etc.
</p>
</Block>
<BlockTitle>Songs</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem
link="#"
title="Yellow Submarine"
after="$15"
subtitle="Beatles"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-1.jpg"
width="80"
/>
</ListItem>
<ListItem
link="#"
title="Don't Stop Me Now"
after="$22"
subtitle="Queen"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-2.jpg"
width="80"
/>
</ListItem>
<ListItem
link="#"
title="Billie Jean"
after="$16"
subtitle="Michael Jackson"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-3.jpg"
width="80"
/>
</ListItem>
</List>
<BlockTitle>Mail App</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem
link="#"
title="Facebook"
after="17:14"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="John Doe (via Twitter)"
after="17:11"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="Facebook"
after="16:48"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="John Doe (via Twitter)"
after="15:32"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
</List>
<BlockTitle>Something more simple</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem title="Yellow Submarine" subtitle="Beatles">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-1.jpg"
width="44"
/>
</ListItem>
<ListItem link="#" title="Don't Stop Me Now" subtitle="Queen">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-2.jpg"
width="44"
/>
</ListItem>
<ListItem title="Billie Jean" subtitle="Michael Jackson">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-3.jpg"
width="44"
/>
</ListItem>
</List>
</Page>