aboutsummaryrefslogtreecommitdiff
path: root/src/components/list/list.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/list/list.vue')
-rw-r--r--src/components/list/list.vue52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/components/list/list.vue b/src/components/list/list.vue
new file mode 100644
index 00000000..a6223cce
--- /dev/null
+++ b/src/components/list/list.vue
@@ -0,0 +1,52 @@
+<template>
+ <div class="list">
+ <div
+ v-for="item in items"
+ :key="getKey(item)"
+ class="list-item"
+ >
+ <slot
+ name="item"
+ :item="item"
+ />
+ </div>
+ <div
+ v-if="items.length === 0 && !!$slots.empty"
+ class="list-empty-content faint"
+ >
+ <slot name="empty" />
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: {
+ items: {
+ type: Array,
+ default: () => []
+ },
+ getKey: {
+ type: Function,
+ default: item => item.id
+ }
+ }
+}
+</script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.list {
+ &-item:not(:last-child) {
+ border-bottom: 1px solid;
+ border-bottom-color: $fallback--border;
+ border-bottom-color: var(--border, $fallback--border);
+ }
+
+ &-empty-content {
+ text-align: center;
+ padding: 10px;
+ }
+}
+</style>