mirror of
https://code.castopod.org/adaures/castopod
synced 2025-05-12 09:15:47 +00:00

- merge publication date fields into one field instanciated with flatpickr datetime picker - get user timezone to convert user publication_date input to UTC - remove setPublishedAt() method from episode entity - add publication pill component to display the episode publication date info - clear cache after episode insert - use CI is_really_writable() helper in install instead of is_writable() - fix latest episodes layout - update tsconfig to only include ts folders - update DEPENDENCIES.md to include flatpickr - add format_duration helper to format episode enclosure duration instead of translating it (causes translation bug) - add Time.ts module to convert UTC time to user localized time for episode publication dates - fix some layout issues - update php and js dependencies to latest versions closes #47
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import flatpickr from "flatpickr";
|
|
import "flatpickr/dist/flatpickr.min.css";
|
|
|
|
/*
|
|
* Detects navigator locale 24h time preference
|
|
* It works by checking whether hour output contains AM ('1 AM' or '01 h')
|
|
*/
|
|
const isBrowserLocale24h = () =>
|
|
!new Intl.DateTimeFormat(navigator.language, { hour: "numeric" })
|
|
.format(0)
|
|
.match(/AM/);
|
|
|
|
const DateTimePicker = (): void => {
|
|
const dateTimeContainers: NodeListOf<HTMLInputElement> = document.querySelectorAll(
|
|
"input[data-picker='datetime']"
|
|
);
|
|
|
|
for (let i = 0; i < dateTimeContainers.length; i++) {
|
|
const dateTimeContainer = dateTimeContainers[i];
|
|
|
|
const flatpickrInstance = flatpickr(dateTimeContainer, {
|
|
enableTime: true,
|
|
time_24hr: isBrowserLocale24h(),
|
|
});
|
|
|
|
// convert container UTC date value to user timezone
|
|
const dateTime = new Date(dateTimeContainer.value);
|
|
const dateUTC = Date.UTC(
|
|
dateTime.getFullYear(),
|
|
dateTime.getMonth(),
|
|
dateTime.getDate(),
|
|
dateTime.getHours(),
|
|
dateTime.getMinutes()
|
|
);
|
|
|
|
// set converted date as field value
|
|
flatpickrInstance.setDate(new Date(dateUTC));
|
|
}
|
|
};
|
|
|
|
export default DateTimePicker;
|