mirror of
https://github.com/hay-kot/homebox.git
synced 2024-12-24 07:46:30 +00:00
53 lines
1 KiB
Vue
53 lines
1 KiB
Vue
|
<template>
|
||
|
{{ value }}
|
||
|
</template>
|
||
|
|
||
|
<script setup lang="ts">
|
||
|
enum DateTimeFormat {
|
||
|
RELATIVE = "relative",
|
||
|
LONG = "long",
|
||
|
SHORT = "short",
|
||
|
}
|
||
|
|
||
|
const value = computed(() => {
|
||
|
if (!props.date) {
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
const dt = typeof props.date === "string" ? new Date(props.date) : props.date;
|
||
|
if (!dt) {
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
if (nullDate(dt)) {
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
switch (props.format) {
|
||
|
case DateTimeFormat.RELATIVE:
|
||
|
return useTimeAgo(dt).value + useDateFormat(dt, " (MM-DD-YYYY)").value;
|
||
|
case DateTimeFormat.LONG:
|
||
|
return useDateFormat(dt, "YYYY-MM-DD (dddd)").value;
|
||
|
case DateTimeFormat.SHORT:
|
||
|
return useDateFormat(dt, "YYYY-MM-DD").value;
|
||
|
default:
|
||
|
return "";
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function nullDate(dt: Date) {
|
||
|
return dt.getFullYear() === 1;
|
||
|
}
|
||
|
|
||
|
const props = defineProps({
|
||
|
date: {
|
||
|
type: [Date, String],
|
||
|
required: true,
|
||
|
},
|
||
|
format: {
|
||
|
type: String as () => DateTimeFormat,
|
||
|
default: "relative",
|
||
|
},
|
||
|
});
|
||
|
</script>
|