pleroma-fe/src/components/list/list.vue

91 lines
2 KiB
Vue
Raw Normal View History

<template>
<div
2026-06-08 04:13:17 +03:00
class="List"
:class="{ '-scrollable': scrollable }"
>
2019-07-05 10:17:44 +03:00
<div
2026-06-08 04:13:17 +03:00
v-if="selectable"
class="header"
2019-07-05 10:17:44 +03:00
>
2026-06-08 04:13:17 +03:00
<div class="checkbox-wrapper">
<Checkbox
:model-value="allSelected"
:indeterminate="someSelected"
@update:model-value="toggleAll"
>
{{ $t('selectable_list.select_all') }}
</Checkbox>
</div>
<div class="actions">
<slot
name="header"
:selected="selectedItems"
2026-06-08 04:13:17 +03:00
/>
</div>
</div>
2019-07-05 10:17:44 +03:00
<div
2026-06-08 04:13:17 +03:00
class="list"
role="list"
2019-07-05 10:17:44 +03:00
>
2026-06-08 04:13:17 +03:00
<div
v-for="item in finalItems"
2026-06-08 04:13:17 +03:00
:key="getKey(item)"
class="list-item"
:class="[getClass(item), nonInteractive ? '-non-interactive' : '']"
role="listitem"
>
<div
v-if="selectable"
class="checkbox-wrapper"
>
<Checkbox
:model-value="isSelected(item)"
@update:model-value="checked => toggle(checked, item)"
@click.stop
/>
</div>
<slot
name="item"
:item="item"
/>
</div>
<div
v-if="finalItems.length === 0 && !!$slots.empty"
2026-06-08 04:13:17 +03:00
class="list-empty-content faint"
>
<slot name="empty" />
<slot name="load" />
</div>
<div class="footer">
<button
v-if="error"
class="button-unstyled -link -fullwidth alert error"
@click="fetchEntries"
>
{{ $t('general.generic_error') }}
{{ error }}
</button>
<FAIcon
v-else-if="loading"
spin
icon="circle-notch"
/>
<a
v-else-if="!bottomedOut"
@click="fetchEntries"
role="button"
tabindex="0"
>
{{ $t('general.more') }}
</a>
<span v-else>
{{ $t('general.no_more') }}
</span>
</div>
</div>
</div>
</template>
2026-06-08 04:13:17 +03:00
<script src="./list.js"></script>
<style src="./list.css"></style>