列表 Svelte 组件
列表视图是应用程序中常见且功能强大的用户界面组件。列表视图以可滚动的多行列表形式呈现数据,这些行可以分成多个部分/组。
列表视图有多种用途:
- 允许用户浏览分层结构的数据
- 显示项目索引列表
- 在视觉上不同的分组中显示详细信息和控制项
- 显示可选择的项目列表
列表 Svelte 组件代表 Framework7 的列表视图组件。
列表组件
包含以下组件:
List
- 主要列表视图元素ListGroup
- 列表组元素
列表属性
属性 | 类型 | 默认 | 描述 |
---|---|---|---|
<List> 属性 | |||
ul | 布尔值 | true | 用<ul> . 包裹子元素<ListGroup> |
推荐禁用,与嵌套 | 布尔值 | 使列表内嵌。insetIos 和insetMd 主题特定布局的属性 | |
xsmallInset | 布尔值 | 当应用宽度 >= 480px 时,使列表内嵌。xsmallInsetIos 和xsmallInsetMd 主题特定布局的属性 | |
smallInset | 布尔值 | 当应用宽度 >= 568px 时,使列表内嵌。smallInsetIos 和smallInsetMd 主题特定布局的属性 | |
mediumInset | 布尔值 | 当应用宽度 >= 768px 时,使列表内嵌。mediumInsetIos 和mediumInsetMd 主题特定布局的属性 | |
largeInset | 布尔值 | 当应用宽度 >= 1024px 时,使列表内嵌。largeInsetIos 和largeInsetMd 主题特定布局的属性 | |
xlargeInset | 布尔值 | 当应用宽度 >= 1200px 时,使列表内嵌。xlargeInsetIos 和xlargeInsetMd 主题特定布局的属性 | |
strong | 布尔值 | 为列表添加额外的高亮显示。strongIos 和strongMd 主题特定布局的属性 | |
outline | 布尔值 | 使列表轮廓(带边框)。outlineIos 和outlineMd 主题特定布局的属性 | |
dividers | 布尔值 | 在列表项之间添加分隔符(边框)。dividersIos 和dividersMd 主题特定布局的属性 | |
mediaList | 布尔值 | false | 启用媒体列表 |
linksList | 布尔值 | false | 启用简化的链接列表 |
simpleList | 布尔值 | false | 启用简化的简单列表 |
sortable | 布尔值 | false | 启用可排序列表 |
sortableOpposite | 布尔值 | false | 在相反的一侧(在 LTR 中为左侧)渲染可排序处理程序 |
sortableTapHold | 布尔值 | false | 使列表项在项点击并按住(长按)时可排序。在这种情况下,应用将依赖于自定义taphold event. To make it work correctly, make sure you have also enabled touch.tapHold: true app 参数 |
sortableEnabled | 布尔值 | false | 启用可排序列表的排序 |
sortableMoveElements | 布尔值 | 当传递时,它将覆盖相同的sortable.moveElements 全局 app 参数。 | |
menuList | 布尔值 | 启用菜单列表 | |
accordion | 布尔值 | false | 启用折叠列表 |
accordionOpposite | 布尔值 | false | 在相反的一侧(在 LTR 中为左侧)渲染折叠箭头图标 |
contactsList | 布尔值 | false | 启用联系人列表通过添加所需的附加类来设置样式 |
form | 布尔值 | false | 启用<form> 在列表块上而不是<div> |
formStoreData | 布尔值 | false | 启用form 存储为当前表单 |
noChevron | 布尔值 | false | 移除嵌套列表项链接的“chevron”图标 |
chevronCenter | 布尔值 | false | 将“chevron”图标设置在嵌套媒体列表项的中心(垂直方向) |
tab | 布尔值 | false | 当块用作 Tab 时,添加额外的“tab”类 |
tabActive | 布尔值 | false | 当块用作 Tab 并使其成为活动 Tab 时,添加额外的“tab-active”类 |
virtualList | 布尔值 | false | 启用虚拟列表 |
virtualListParams | 对象 | 带有虚拟列表参数 | |
<ListGroup> 属性 | |||
mediaList | 布尔值 | false | 启用媒体列表为此组 |
sortable | 布尔值 | false | 启用可排序列表为此组 |
sortableTapHold | 布尔值 | false | 使列表项在项点击并按住(长按)时可排序。在这种情况下,应用将依赖于自定义taphold event. To make it work correctly, make sure you have also enabled touch.tapHold: true app 参数 |
simpleList | 布尔值 | false | 启用简化的简单列表为此组 |
列表事件
事件 | 描述 |
---|---|
<List> 事件 | |
tabShow | 当列表块-Tab 变得可见/活动时,将触发事件 |
tabHide | 当列表块-Tab 变得不可见/非活动时,将触发事件 |
submit | 当列表用作表单(并启用form 属性一起使用) |
<List> 可排序特定事件 | |
sortableEnable | 当可排序模式启用时,将触发事件 |
sortableDisable | 当可排序模式禁用时,将触发事件 |
sortableSort | 当用户在新的位置释放当前排序元素后,将触发事件。event.detail 将包含具有排序列表项的起始/新索引号的属性的对象from 和to properties with start/new index numbers of sorted list item |
<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>