ソート可能な Svelte コンポーネント

ソート可能は独立したコンポーネントではなく、<List> と <ListItem> コンポーネントを使用する特定のケースです。<List> <ListItem>

ソート可能イベント

イベント説明
<List> イベント
sortable プロパティが有効になっている場合、以下のイベントは <List> で利用可能です。
sortableEnableソート可能モードが有効になったときにイベントがトリガーされます。
sortableDisableソート可能モードが無効になったときにイベントがトリガーされます。
sortableSortユーザーが現在ソート中の要素を新しい位置にリリースした後、イベントがトリガーされます。最初のハンドラー引数には、ソートされたリストアイテムの開始/新しいインデックス番号とソートされたリストアイテムの HTML 要素を持つ fromtoel プロパティを持つオブジェクトが含まれています。
sortableMoveソート中のリストアイテムの移動ごとにイベントがトリガーされます。

sortable.svelte
<script>
  import {
    Navbar,
    Page,
    Block,
    List,
    ListItem,
    NavRight,
    Link,
    BlockTitle,
  } from 'framework7-svelte';
</script>

<!-- svelte-ignore a11y-missing-attribute -->
<Page>
  <Navbar title="Sortable List">
    <NavRight>
      <Link sortableToggle=".sortable">Toggle</Link>
    </NavRight>
  </Navbar>

  <Block>
    <p>Just click "Toggle" button on navigation bar to enable/disable sorting</p>
  </Block>
  <List strongIos outlineIos dividersIos sortable>
    <ListItem title="1 Jenna Smith" after="CEO">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="2 John Doe" after="Director">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="3 John Doe" after="Developer">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="4 Aaron Darling" after="Manager">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="5 Calvin Johnson" after="Accounter">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="6 John Smith" after="SEO">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="7 Chloe" after="Manager">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
  </List>
  <List strongIos outlineIos dividersIos mediaList sortable>
    <ListItem
      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"
        src="https://cdn.framework7.io/placeholder/people-160x160-1.jpg"
        width="80"
      />
    </ListItem>
    <ListItem
      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"
        src="https://cdn.framework7.io/placeholder/people-160x160-2.jpg"
        width="80"
      />
    </ListItem>
    <ListItem
      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"
        src="https://cdn.framework7.io/placeholder/people-160x160-3.jpg"
        width="80"
      />
    </ListItem>
  </List>

  <BlockTitle>Opposite Side</BlockTitle>
  <List strongIos outlineIos dividersIos sortable sortableOpposite>
    <ListItem title="1 Jenna Smith" after="CEO">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="2 John Doe" after="Director">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="3 John Doe" after="Developer">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="4 Aaron Darling" after="Manager">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="5 Calvin Johnson" after="Accounter">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="6 John Smith" after="SEO">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
    <ListItem title="7 Chloe" after="Manager">
      <i class="icon icon-f7" slot="media" />
    </ListItem>
  </List>
</Page>