4141 <!-- author -->
4242 <template #name >
4343 <div class =" version__info" >
44- <div v-if =" versionLabel" class =" version__info__label" >{{ versionLabel }}</div >
44+ <div v-if =" versionLabel"
45+ class =" version__info__label"
46+ :title =" versionLabel" >
47+ {{ versionLabel }}
48+ </div >
4549 <div v-if =" versionAuthor" class =" version__info" >
46- <div v-if =" versionLabel" >•</div >
50+ <span v-if =" versionLabel" >•</span >
4751 <NcAvatar class =" avatar"
4852 :user =" version.author"
4953 :size =" 16"
5862 <!-- Version file size as subline -->
5963 <template #subname >
6064 <div class =" version__info version__info__subline" >
61- <span :title =" formattedDate" >{{ version.mtime | humanDateFromNow }}</span >
65+ <NcDateTime class =" version__info__date"
66+ relative-time =" short"
67+ :timestamp =" version.mtime" />
6268 <!-- Separate dot to improve alignement -->
6369 <span >•</span >
64- <span >{{ version.size | humanReadableSize }}</span >
70+ <span >{{ humanReadableSize }}</span >
6571 </div >
6672 </template >
6773
118124</template >
119125
120126<script lang="ts">
127+ import type { PropType } from ' vue'
121128import type { Version } from ' ../utils/versions'
122129
123130import BackupRestore from ' vue-material-design-icons/BackupRestore.vue'
@@ -130,17 +137,18 @@ import Pencil from 'vue-material-design-icons/Pencil.vue'
130137import NcActionButton from ' @nextcloud/vue/dist/Components/NcActionButton.js'
131138import NcActionLink from ' @nextcloud/vue/dist/Components/NcActionLink.js'
132139import NcAvatar from ' @nextcloud/vue/dist/Components/NcAvatar.js'
140+ import NcDateTime from ' @nextcloud/vue/dist/Components/NcDateTime.js'
133141import NcListItem from ' @nextcloud/vue/dist/Components/NcListItem.js'
134142import Tooltip from ' @nextcloud/vue/dist/Directives/Tooltip.js'
135143
136- import { defineComponent , type PropType } from ' vue'
137- import axios from ' @nextcloud/axios'
138144import { getRootUrl , generateOcsUrl } from ' @nextcloud/router'
139145import { joinPaths } from ' @nextcloud/paths'
140146import { loadState } from ' @nextcloud/initial-state'
141147import { Permission , formatFileSize } from ' @nextcloud/files'
142148import { translate as t } from ' @nextcloud/l10n'
143- import moment from ' @nextcloud/moment'
149+ import { defineComponent } from ' vue'
150+
151+ import axios from ' @nextcloud/axios'
144152
145153const hasPermission = (permissions : number , permission : number ): boolean => (permissions & permission ) !== 0
146154
@@ -151,6 +159,7 @@ export default defineComponent({
151159 NcActionLink ,
152160 NcActionButton ,
153161 NcAvatar ,
162+ NcDateTime ,
154163 NcListItem ,
155164 BackupRestore ,
156165 Download ,
@@ -164,20 +173,6 @@ export default defineComponent({
164173 tooltip: Tooltip ,
165174 },
166175
167- created() {
168- this .fetchDisplayName ()
169- },
170-
171- filters: {
172- humanReadableSize(bytes : number ): string {
173- return formatFileSize (bytes )
174- },
175-
176- humanDateFromNow(timestamp : number ): string {
177- return moment (timestamp ).fromNow ()
178- },
179- },
180-
181176 props: {
182177 version: {
183178 type: Object as PropType <Version >,
@@ -221,6 +216,10 @@ export default defineComponent({
221216 },
222217
223218 computed: {
219+ humanReadableSize() {
220+ return formatFileSize (this .version .size )
221+ },
222+
224223 versionLabel(): string {
225224 const label = this .version .label ?? ' '
226225
@@ -247,10 +246,6 @@ export default defineComponent({
247246 }
248247 },
249248
250- formattedDate(): string {
251- return moment (this .version .mtime ).format (' LLL' )
252- },
253-
254249 enableLabeling(): boolean {
255250 return this .capabilities .files .version_labeling === true
256251 },
@@ -286,6 +281,10 @@ export default defineComponent({
286281 },
287282 },
288283
284+ created() {
285+ this .fetchDisplayName ()
286+ },
287+
289288 methods: {
290289 labelUpdate() {
291290 this .$emit (' label-update-request' )
@@ -351,11 +350,20 @@ export default defineComponent({
351350
352351 & __label {
353352 font-weight : 700 ;
353+ // Fix overflow on narrow screens
354+ overflow : hidden ;
355+ text-overflow : ellipsis ;
356+ }
357+
358+ & __date {
359+ // Fix overflow on narrow screens
360+ overflow : hidden ;
361+ text-overflow : ellipsis ;
354362 }
355363
356364 & __subline {
357- color : var (--color-text-maxcontrast )
358- }
365+ color : var (--color-text-maxcontrast )
366+ }
359367 }
360368
361369 & __image {
0 commit comments