django_airavata/static/common/js/components/SidebarFeedItem.vue (43 lines of code) (raw):
<template>
<li class="feed__list-item">
<span v-if="feedItem.type" class="feed__label text-secondary">{{
feedItem.type
}}</span>
<h2 class="feed__title mb-2">
<a v-if="feedItem.url" :href="feedItem.url">{{ feedItem.title }}</a>
<span v-else>{{ feedItem.title }}</span>
</h2>
<slot v-bind:feedItem="feedItem">
<div v-if="feedItem.description">{{ feedItem.description }}</div>
</slot>
<div v-if="timestamp" class="feed__item-meta text-secondary mt-1">
<span>Updated </span> <time>{{ timestamp }}</time>
</div>
</li>
</template>
<script>
import moment from "moment";
export default {
name: "sidebar-feed-item",
props: {
/**
* feedItem properties are
* - type (String, Optional) the type of feed item (e.g. for Experiments this is the application name)
* - url (String, Optional) url to link to the full item details
* - title (String, Required) title of the feed item
* - timestamp (Date, Optional) timestamp of when feed item was created/updated
* - description (String, Optional) description of feed item. Displayed when no slot is provided.
*/
feedItem: Object,
},
computed: {
timestamp() {
if (this.feedItem.timestamp) {
return moment(this.feedItem.timestamp).fromNow();
} else {
return null;
}
},
},
};
</script>