2019-08-09 12:38:23 +01:00
|
|
|
// Copyright (C) 2019 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<div class="item-component">
|
|
|
|
<component
|
|
|
|
v-for="item in dataSet"
|
|
|
|
class="item-component__item"
|
|
|
|
:is="itemComponent"
|
|
|
|
:itemData="item"
|
|
|
|
@click.native="onItemClick(item)"
|
2019-08-19 12:20:38 +01:00
|
|
|
:class="{ selected: item.isSelected }"/>
|
2019-08-09 12:38:23 +01:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
import { Component, Prop, Vue } from 'vue-property-decorator';
|
|
|
|
|
|
|
|
declare type listItemClickCallback = (item: any) => Promise<void>;
|
|
|
|
|
|
|
|
@Component
|
|
|
|
export default class List extends Vue {
|
|
|
|
@Prop({default: ''})
|
|
|
|
private readonly itemComponent: string;
|
2019-08-21 15:07:49 +01:00
|
|
|
@Prop({default: () => new Promise(() => false)})
|
2019-08-09 12:38:23 +01:00
|
|
|
private readonly onItemClick: listItemClickCallback;
|
|
|
|
@Prop({default: Array()})
|
|
|
|
private readonly dataSet: any[];
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.item-component {
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
&__item {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|