Files
pocketbase/ui/src/base/formattedDate.js
T
2026-04-18 16:50:39 +03:00

55 lines
1.6 KiB
JavaScript

window.app = window.app || {};
window.app.components = window.app.components || {};
const tzName = Intl.DateTimeFormat().resolvedOptions().timeZone;
window.app.components.formattedDate = function(propsArg = {}) {
const props = store({
rid: undefined,
id: undefined,
hidden: undefined,
value: "",
short: false,
});
const watchers = app.utils.extendStore(props, propsArg);
return t.div(
{
rid: props.rid,
id: () => props.id,
hidden: () => props.hidden,
ariaDescription: app.attrs.tooltip(() => {
if (props.short && !!props.value) {
return app.utils.toLocalDatetime(props.value) + "\n" + tzName;
}
return null;
}),
"html-class": "formatted-date",
className: () => `formatted-date ${props.short ? "short" : "full"}`,
onunmount: () => {
watchers.forEach((w) => w?.unwatch());
},
},
() => {
if (!props.value) {
return t.span({ className: "missing-value" });
}
if (props.short) {
const parts = props.value.split(" ");
return [
t.span({ className: "primary-date" }, parts[0]),
t.span({ className: "secondary-date" }, parts[1]),
];
}
return [
t.span({ className: "primary-date" }, app.utils.toLocalDatetime(props.value)),
t.span({ className: "secondary-date" }, props.value),
];
},
);
};