Bugfixes (#74)

* Fix demo post date format
* Fix test data
* Fix sorting
* Fix load more
* Fix markdown preview not updating
* Load relation options if value provided
* Update entry with default date
* Better change detection
* Fix sticky headers on tablet view (docs site)
This commit is contained in:
Daniel Lautzenheiser 2022-11-08 09:54:18 -05:00 committed by GitHub
parent 16339ce1bf
commit af8f18ce54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 388 additions and 322 deletions

View File

@ -2,6 +2,7 @@ backend:
name: test-repo
site_url: 'https://example.com'
media_folder: assets/uploads
locale: en
collections:
- name: posts
label: Posts
@ -48,7 +49,7 @@ collections:
widget: datetime
date_format: yyyy-MM-dd
time_format: 'HH:mm'
format: 'yyyy-MM-dd HH:mm'
format: "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
- label: Cover Image
name: image
widget: image

View File

@ -119,7 +119,7 @@
`\"\ndraft: ${i % 2 === 0}` +
'\ndate: ' +
dateString +
'T00:00:00.000Z\n---\n\n# The post is number ' +
'T00:00:00.000Z\n---\n# The post is number ' +
i +
'\n\nAnd this is yet another identical post body',
};
@ -140,7 +140,7 @@
i +
'"\ndate: ' +
dateString +
'T00:00:00.000Z\n---\n\n# Loren ipsum dolor sit amet',
'T00:00:00.000Z\n---\n# Loren ipsum dolor sit amet',
};
}
window.repoFiles._pages = {

View File

@ -655,12 +655,12 @@ const appendActions = {
function addAppendActionsToCursor(cursor: Cursor) {
return Cursor.create(cursor).updateStore(store => ({
...store,
actions: new Set(
actions: new Set([
...store.actions,
...(Object.entries(appendActions)
.filter(([_k, v]) => store.actions.has(v.action as string))
.map(([k, _v]) => k) as string[]),
),
]),
}));
}

View File

@ -65,13 +65,13 @@ const EntryListing = ({
handleCursorActions,
...otherProps
}: EntryListingProps) => {
const hasMore = useCallback(() => {
const hasMore = useMemo(() => {
const hasMore = cursor?.actions?.has('append_next');
return hasMore;
}, [cursor?.actions]);
const handleLoadMore = useCallback(() => {
if (hasMore()) {
if (hasMore) {
handleCursorActions('append_next');
}
}, [handleCursorActions, hasMore]);
@ -138,7 +138,7 @@ const EntryListing = ({
<div>
<CardsGrid $layout={viewStyle}>
{renderedCards}
{hasMore() && <Waypoint key={page} onEnter={handleLoadMore} />}
{hasMore && <Waypoint key={page} onEnter={handleLoadMore} />}
</CardsGrid>
</div>
);

View File

@ -31,7 +31,7 @@ function nextSortDirection(direction: SortDirection) {
case SORT_DIRECTION_DESCENDING:
return SORT_DIRECTION_NONE;
default:
return SORT_DIRECTION_NONE;
return SORT_DIRECTION_ASCENDING;
}
}

View File

@ -175,12 +175,12 @@ const Editor = ({
useEffect(() => {
if (!prevLocalBackup && localBackup) {
const updateLocalBackup = async () => {
const confirmLoadBackup = await confirm({
const confirmLoadBackupBody = await confirm({
title: 'editor.editor.confirmLoadBackupTitle',
body: 'editor.editor.confirmLoadBackupBody',
});
if (confirmLoadBackup) {
if (confirmLoadBackupBody) {
loadLocalBackup();
setVersion(version + 1);
} else {

View File

@ -237,7 +237,7 @@ const MediaLibrary = ({
if (
!(await confirm({
title: 'mediaLibrary.mediaLibrary.onDeleteTitle',
body: 'mediaLibrary.mediaLibrary.onDeleteBody',
body: 'mediaLibrary.mediaLibrary.onDelete',
color: 'error',
}))
) {

View File

@ -51,5 +51,8 @@ export function addExtensions() {
CodeWidget(),
ColorStringWidget(),
]);
registerLocale('en', locales.en);
Object.keys(locales).forEach(locale => {
registerLocale(locale, locales[locale]);
});
}

View File

@ -41,7 +41,7 @@ function createCursorStore(...args: unknown[]) {
return {
// actions are a Set, rather than a List, to ensure an efficient .has
actions: new Set(...actions),
actions: new Set([...actions]),
// data and meta are Maps
data,
meta: filterUnknownMetaKeys(meta),
@ -97,13 +97,13 @@ export default class Cursor {
addAction(action: string) {
return this.updateStore(store => ({
...store,
actions: new Set(...store.actions, action),
actions: new Set([...store.actions, action]),
}));
}
removeAction(action: string) {
return this.updateStore(store => {
const newActions = new Set(...store.actions);
const newActions = new Set([...store.actions]);
newActions.delete(action);
return {
@ -123,7 +123,7 @@ export default class Cursor {
mergeActions(actions: Set<string>) {
return this.updateStore(store => ({
...store,
actions: new Set({ ...store.actions, ...actions }),
actions: new Set([...store.actions, ...actions]),
}));
}

View File

@ -97,16 +97,16 @@ const bg: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Наистина ли искате да напуснете тази страница?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Имате незапазени промени, моля, запазете преди актуализиране на състоянието.',
onPublishingNotReady: 'Моля, актуализирайте състоянието на „Готово“, преди да публикувате',
onPublishingWithUnsavedChanges: 'Имате незапазени промени, моля, запазете преди публикуване.',
onPublishing: 'Наистина ли искате да публикувате този запис?',
onDeleteWithUnsavedChanges:
onPublishingNotReadyBody: 'Моля, актуализирайте състоянието на „Готово“, преди да публикувате',
onPublishingWithUnsavedChangesBody: 'Имате незапазени промени, моля, запазете преди публикуване.',
onPublishingBody: 'Наистина ли искате да публикувате този запис?',
onDeleteWithUnsavedChangesBody:
'Наистина ли искате да изтриете този публикуван запис, както и незаписаните промени от текущата сесия?',
onDeletePublishedEntry: 'Наистина ли искате да изтриете този публикуван запис?',
onDeletePublishedEntryBody: 'Наистина ли искате да изтриете този публикуван запис?',
loadingEntry: 'Зареждане на запис...',
confirmLoadBackup:
confirmLoadBackupBody:
'За този запис беше възстановен локален архив, бихте ли искали да го използвате?',
},
editorInterface: {
@ -198,8 +198,8 @@ const bg: LocalePhrasesRoot = {
copied: 'Копирано',
},
mediaLibrary: {
onDelete: 'Наистина ли искате да изтриете избрания медиен файл?',
fileTooLarge:
onDeleteBody: 'Наистина ли искате да изтриете избрания медиен файл?',
fileTooLargeBody:
'Файлът е твърде голям.\nНастройките не позволяват запазване на файлове по-големи от %{size} kB.',
},
mediaLibraryModal: {

View File

@ -97,17 +97,17 @@ const ca: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Estàs segur que vols deixar aquesta pàgina?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
"Tens canvis no guardats, si us plau, guarda'ls abans d'actualitzar l'estat.",
onPublishingNotReady: 'Si us plau, actualitza l\'estat a "Llest" abans de publicar.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Si us plau, actualitza l\'estat a "Llest" abans de publicar.',
onPublishingWithUnsavedChangesBody:
"Tens canvis no guardats, si us plau, guarda'ls abans de publicar-los.",
onPublishing: 'Estàs segur que vols publicar aquesta entrada?',
onDeleteWithUnsavedChanges:
onPublishingBody: 'Estàs segur que vols publicar aquesta entrada?',
onDeleteWithUnsavedChangesBody:
'Està segur que vol eliminar aquesta entrada publicada, així com els canvis no guardats de la sessió actual?',
onDeletePublishedEntry: 'Està segur que vol eliminar aquesta entrada publicada?',
onDeletePublishedEntryBody: 'Està segur que vol eliminar aquesta entrada publicada?',
loadingEntry: 'Carregant entrada...',
confirmLoadBackup:
confirmLoadBackupBody:
"S'ha recuperat una copia de seguretat local per aquesta entrada. La vol utilitzar?",
},
editorInterface: {
@ -197,8 +197,8 @@ const ca: LocalePhrasesRoot = {
copied: 'Copiat',
},
mediaLibrary: {
onDelete: 'Està segur de que vol eliminar el mitjà seleccionat?',
fileTooLarge:
onDeleteBody: 'Està segur de que vol eliminar el mitjà seleccionat?',
fileTooLargeBody:
'El fitxer és massa gran.\nLa configuració no permet fitxers més grans de %{size} kB.',
},
mediaLibraryModal: {

View File

@ -98,15 +98,15 @@ const cs: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Chcete opravdu opustit tuto stránku?',
onUpdatingWithUnsavedChanges: 'Máte neuložené změny. Uložte je prosím před změnou statusu.',
onPublishingNotReady: 'Změňte stav na „Připraveno“ před publikováním.',
onPublishingWithUnsavedChanges: 'Máte neuložené změny, prosím uložte je před publikováním.',
onPublishing: 'Chcete opravdu publikovat tento záznam?',
onDeleteWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody: 'Máte neuložené změny. Uložte je prosím před změnou statusu.',
onPublishingNotReadyBody: 'Změňte stav na „Připraveno“ před publikováním.',
onPublishingWithUnsavedChangesBody: 'Máte neuložené změny, prosím uložte je před publikováním.',
onPublishingBody: 'Chcete opravdu publikovat tento záznam?',
onDeleteWithUnsavedChangesBody:
'Chcete opravdu vymazat tento publikovaný záznam a všechny neuložené změny z této relace?',
onDeletePublishedEntry: 'Chcete opravdu smazat tento publikovaný záznam?',
onDeletePublishedEntryBody: 'Chcete opravdu smazat tento publikovaný záznam?',
loadingEntry: 'Načítání záznamu…',
confirmLoadBackup: 'Lokální kopie tohoto záznamu byla nalezena, chcete ji použít?',
confirmLoadBackupBody: 'Lokální kopie tohoto záznamu byla nalezena, chcete ji použít?',
},
editorInterface: {
toggleI18n: 'Přepnout lokalizaci',
@ -197,8 +197,8 @@ const cs: LocalePhrasesRoot = {
copied: 'Zkopírováno',
},
mediaLibrary: {
onDelete: 'Chcete skutečně vymazat označená média?',
fileTooLarge: 'Soubor je příliš velký.\nSoubor musí být menší než %{size} kB.',
onDeleteBody: 'Chcete skutečně vymazat označená média?',
fileTooLargeBody: 'Soubor je příliš velký.\nSoubor musí být menší než %{size} kB.',
},
mediaLibraryModal: {
loading: 'Načítání…',

View File

@ -97,17 +97,17 @@ const da: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Er du sikker på at du vil forlade siden?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Du har ændringer der ikke er gemt, gem disse før status ændres.',
onPublishingNotReady: 'Skift status til "Klar" inden publicering.',
onPublishingWithUnsavedChanges: 'Du har ændringer der ikke er gemt, gem inden publicing.',
onPublishing: 'Er du sikker på at du vil publicere dette dokument?',
onDeleteWithUnsavedChanges:
onPublishingNotReadyBody: 'Skift status til "Klar" inden publicering.',
onPublishingWithUnsavedChangesBody: 'Du har ændringer der ikke er gemt, gem inden publicing.',
onPublishingBody: 'Er du sikker på at du vil publicere dette dokument?',
onDeleteWithUnsavedChangesBody:
'Er du sikker på at du vil slette dette tidliere publiceret dokument, samt dine nuværende ugemte ændringer fra denne session?',
onDeletePublishedEntry:
onDeletePublishedEntryBody:
'Er du sikker på at du vil slette dette tidliere publiceret dokument?',
loadingEntry: 'Indlæser dokument...',
confirmLoadBackup:
confirmLoadBackupBody:
'En lokal sikkerhedskopi blev gendannet for dette dokument, vil du anvende denne?',
},
editorToolbar: {
@ -183,8 +183,8 @@ const da: LocalePhrasesRoot = {
draft: 'Kladde',
},
mediaLibrary: {
onDelete: 'Er du sikker på at du vil slette det valgte medie?',
fileTooLarge: 'Filen er for stor.\nOpsætningen tillader ikke filer større end %{size} kB.',
onDeleteBody: 'Er du sikker på at du vil slette det valgte medie?',
fileTooLargeBody: 'Filen er for stor.\nOpsætningen tillader ikke filer større end %{size} kB.',
},
mediaLibraryModal: {
loading: 'Indlæser...',

View File

@ -94,24 +94,24 @@ const de: LocalePhrasesRoot = {
i18n: {
writingInLocale: 'Aktuelle Sprache: %{locale}',
copyFromLocale: 'Aus anderer Sprache übernehmen',
copyFromLocaleConfirm:
copyFromLocaleConfirmBody:
'Wollen Sie wirklich die Daten aus der Sprache %{locale} übernehmen?\nAlle bishergen Inhalte werden überschrieben.',
},
},
editor: {
onLeavePage: 'Möchten Sie diese Seite wirklich verlassen?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Es sind noch ungespeicherte Änderungen vorhanden. Bitte speichern Sie diese, bevor Sie den Status aktualisieren.',
onPublishingNotReady:
onPublishingNotReadyBody:
'Bitte setzten die den Status vor dem Veröffentlichen auf "Abgeschlossen".',
onPublishingWithUnsavedChanges:
onPublishingWithUnsavedChangesBody:
'Es sind noch ungespeicherte Änderungen vorhanden. Bitte speicheren Sie vor dem Veröffentlichen.',
onPublishing: 'Soll dieser Beitrag wirklich veröffentlicht werden?',
onDeleteWithUnsavedChanges:
onPublishingBody: 'Soll dieser Beitrag wirklich veröffentlicht werden?',
onDeleteWithUnsavedChangesBody:
'Möchten Sie diesen veröffentlichten Beitrag, sowie Ihre nicht gespeicherten Änderungen löschen?',
onDeletePublishedEntry: 'Soll dieser veröffentlichte Beitrag wirklich gelöscht werden?',
onDeletePublishedEntryBody: 'Soll dieser veröffentlichte Beitrag wirklich gelöscht werden?',
loadingEntry: 'Beitrag laden...',
confirmLoadBackup:
confirmLoadBackupBody:
'Für diesen Beitrag ist ein lokales Backup vorhanden. Möchten Sie dieses benutzen?',
},
editorInterface: {
@ -211,8 +211,8 @@ const de: LocalePhrasesRoot = {
copied: 'Kopiert',
},
mediaLibrary: {
onDelete: 'Soll das ausgewählte Medium wirklich gelöscht werden?',
fileTooLarge: 'Datei zu groß.\nErlaubt sind nur Dateien bis %{size} kB.',
onDeleteBody: 'Soll das ausgewählte Medium wirklich gelöscht werden?',
fileTooLargeBody: 'Datei zu groß.\nErlaubt sind nur Dateien bis %{size} kB.',
},
mediaLibraryModal: {
loading: 'Laden...',

View File

@ -82,18 +82,18 @@ const es: LocalePhrasesRoot = {
},
editor: {
onLeavePage: '¿Estás seguro de que quieres dejar esta página?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Tiene cambios no guardados, por favor, guárdelos antes de actualizar el estado.',
onPublishingNotReady: 'Por favor, actualice el estado a "Ready" antes de publicar.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Por favor, actualice el estado a "Ready" antes de publicar.',
onPublishingWithUnsavedChangesBody:
'Tiene cambios no guardados, por favor guárdelos antes de publicarlos.',
onPublishing: '¿Estás seguro de que quieres publicar esta entrada?',
onPublishingBody: '¿Estás seguro de que quieres publicar esta entrada?',
onUnpublishing: '¿Estás seguro de que quieres retirar esta entrada?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'¿Está seguro de que desea eliminar esta entrada publicada, así como los cambios no guardados de la sesión actual?',
onDeletePublishedEntry: '¿Estás seguro de que quieres borrar esta entrada publicada?',
onDeletePublishedEntryBody: '¿Estás seguro de que quieres borrar esta entrada publicada?',
loadingEntry: 'Cargando entrada...',
confirmLoadBackup:
confirmLoadBackupBody:
'Se recuperó una copia de seguridad local para esta entrada, ¿le gustaría utilizarla?',
},
editorToolbar: {
@ -161,8 +161,8 @@ const es: LocalePhrasesRoot = {
draft: 'Borrador',
},
mediaLibrary: {
onDelete: '¿Está seguro de que desea eliminar el archivo seleccionado?',
fileTooLarge:
onDeleteBody: '¿Está seguro de que desea eliminar el archivo seleccionado?',
fileTooLargeBody:
'Archivo muy pesado.\nConfigurado para no permitir archivos más pesados que %{size} kB.',
},
mediaLibraryModal: {

View File

@ -98,17 +98,17 @@ const fr: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Voulez-vous vraiment quitter cette page ?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Veuillez enregistrer vos modifications avant de mettre à jour le statut.',
onPublishingNotReady: 'Veuillez mettre à jour le statut à "Prêt" avant de publier.',
onPublishingWithUnsavedChanges: 'Veuillez enregistrer vos modifications avant de publier.',
onPublishing: 'Voulez-vous vraiment publier cette entrée ?',
onPublishingNotReadyBody: 'Veuillez mettre à jour le statut à "Prêt" avant de publier.',
onPublishingWithUnsavedChangesBody: 'Veuillez enregistrer vos modifications avant de publier.',
onPublishingBody: 'Voulez-vous vraiment publier cette entrée ?',
onUnpublishing: 'Voulez-vous vraiment dépublier cette entrée ?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Voulez-vous vraiment supprimer cette entrée publiée ainsi que vos modifications non enregistrées de cette session ?',
onDeletePublishedEntry: 'Voulez-vous vraiment supprimer cette entrée publiée ?',
onDeletePublishedEntryBody: 'Voulez-vous vraiment supprimer cette entrée publiée ?',
loadingEntry: "Chargement de l'entrée...",
confirmLoadBackup:
confirmLoadBackupBody:
"Une sauvegarde locale a été trouvée pour cette entrée. Voulez-vous l'utiliser ?",
},
editorInterface: {
@ -206,8 +206,8 @@ const fr: LocalePhrasesRoot = {
copied: 'Copié',
},
mediaLibrary: {
onDelete: 'Voulez-vous vraiment supprimer la ressource sélectionné ?',
fileTooLarge:
onDeleteBody: 'Voulez-vous vraiment supprimer la ressource sélectionné ?',
fileTooLargeBody:
"Le fichier est trop volumineux.\nL'instance est configurée pour bloquer les envois de plus de %{size} kB.",
},
mediaLibraryModal: {

View File

@ -66,20 +66,20 @@ const gr: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Είστε βέβαιοι ότι θέλετε να αφήσετε αυτήν τη σελίδα;',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Έχετε μη αποθηκευμένες αλλαγές, αποθηκεύστε πριν να ενημερώσετε την κατάσταση.',
onPublishingNotReady: 'Ενημερώστε την κατάσταση σε "έτοιμο" πριν από τη δημοσίευση.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Ενημερώστε την κατάσταση σε "έτοιμο" πριν από τη δημοσίευση.',
onPublishingWithUnsavedChangesBody:
'Έχετε μη αποθηκευμένες αλλαγές, αποθηκεύστε πριν από τη δημοσίευση.',
onPublishing: 'Είστε βέβαιοι ότι θέλετε να δημοσιεύσετε αυτήν την καταχώρηση;',
onPublishingBody: 'Είστε βέβαιοι ότι θέλετε να δημοσιεύσετε αυτήν την καταχώρηση;',
onUnpublishing:
'Είστε βέβαιοι ότι θέλετε να καταργήσετε τη δημοσίευση αυτής της καταχώρησης;',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δημοσιευμένη καταχώρηση, καθώς και τις αλλαγές που δεν αποθηκεύσατε από την τρέχουσα περίοδο λειτουργίας;',
onDeletePublishedEntry:
onDeletePublishedEntryBody:
'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δημοσιευμένη καταχώρηση;',
loadingEntry: 'Φόρτωση εισόδου...',
confirmLoadBackup:
confirmLoadBackupBody:
'Ανακτήθηκε ένα τοπικό αντίγραφο ασφαλείας για αυτήν την καταχώρηση, θέλετε να το χρησιμοποιήσετε;',
},
editorToolbar: {
@ -140,8 +140,8 @@ const gr: LocalePhrasesRoot = {
draft: 'Προσχέδιο',
},
mediaLibrary: {
onDelete: 'Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα πολυμέσα;',
fileTooLarge:
onDeleteBody: 'Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα πολυμέσα;',
fileTooLargeBody:
'Το αρχείο είναι πολύ μεγάλο.\nΔεν επιτρέπονται αρχεία μεγαλύτερα από %{size} kB.',
},
mediaLibraryModal: {

View File

@ -97,16 +97,16 @@ const he: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'האם ברצונך לעבור לעמוד אחר ללא שמירה?',
onUpdatingWithUnsavedChanges: 'בוצעו שינויים שלא נשמרו. יש לבצע שמירה לפני עדכון מצב האייטם.',
onPublishingNotReady: 'נא לשנות את מצב האייטם ל״מוכן לפרסום״ לפני הפרסום.',
onPublishingWithUnsavedChanges: 'בוצעו שינויים שלא נשמרו. יש לבצע שמירה לפני הפרסום.',
onPublishing: 'האם ברצונך לפרסם את האייטם?',
onUpdatingWithUnsavedChangesBody: 'בוצעו שינויים שלא נשמרו. יש לבצע שמירה לפני עדכון מצב האייטם.',
onPublishingNotReadyBody: 'נא לשנות את מצב האייטם ל״מוכן לפרסום״ לפני הפרסום.',
onPublishingWithUnsavedChangesBody: 'בוצעו שינויים שלא נשמרו. יש לבצע שמירה לפני הפרסום.',
onPublishingBody: 'האם ברצונך לפרסם את האייטם?',
onUnpublishing: 'האם ברצונך לבטל את פרסום האייטם?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'האם ברצונך למחוק את האייטם הזה לפני פרסומו, וכן את השינויים שבוצעו כעת וטרם נשמרו?',
onDeletePublishedEntry: 'האם ברצונך למחוק את האייטם הזה לאחר פרסומו?',
onDeletePublishedEntryBody: 'האם ברצונך למחוק את האייטם הזה לאחר פרסומו?',
loadingEntry: 'טעינת אייטם...',
confirmLoadBackup: 'קיים עותק מקומי שמור של האייטם. האם ברצונך לטעון אותו?',
confirmLoadBackupBody: 'קיים עותק מקומי שמור של האייטם. האם ברצונך לטעון אותו?',
},
editorInterface: {
toggleI18n: 'החלפת שפות',
@ -207,8 +207,8 @@ const he: LocalePhrasesRoot = {
copied: 'העתקה הושלמה',
},
mediaLibrary: {
onDelete: 'האם ברצונך למחוק את פריט המדיה הזה?',
fileTooLarge: 'הקובץ גדול מדי.\nמוגדר לא לאפשר העלאת קבצים גדולים מ-%{size} קילובייט.',
onDeleteBody: 'האם ברצונך למחוק את פריט המדיה הזה?',
fileTooLargeBody: 'הקובץ גדול מדי.\nמוגדר לא לאפשר העלאת קבצים גדולים מ-%{size} קילובייט.',
},
mediaLibraryModal: {
loading: 'טעינה...',

View File

@ -97,18 +97,18 @@ const hr: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Jeste li sigurni da želite napustiti stranicu?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Imate nespremljene promjene, molimo spremite prije ažuriranja statusa.',
onPublishingNotReady: 'Molimo ažurirajte status na "Spremno" prije objavljivanja.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Molimo ažurirajte status na "Spremno" prije objavljivanja.',
onPublishingWithUnsavedChangesBody:
'Imate nespremljene promjene, molimo spremite prije objavljivanja.',
onPublishing: 'Jeste li sigurni da želite objaviti ovaj unos?',
onPublishingBody: 'Jeste li sigurni da želite objaviti ovaj unos?',
onUnpublishing: 'Jeste li sigurni da želite maknuti objavu za ovaj unos?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Jeste li sigurni da želite obrisati objavljeni unos, te nespremljene promjene u trenutnoj sesiji?',
onDeletePublishedEntry: 'Jeste li sigurni da želite obrisati ovaj objavljeni unos?',
onDeletePublishedEntryBody: 'Jeste li sigurni da želite obrisati ovaj objavljeni unos?',
loadingEntry: 'Učitavanje unosa...',
confirmLoadBackup: 'Lokalna kopija je dohvaćena za ovaj unos, želite li ju koristiti?',
confirmLoadBackupBody: 'Lokalna kopija je dohvaćena za ovaj unos, želite li ju koristiti?',
},
editorToolbar: {
publishing: 'Objavljivanje...',
@ -185,8 +185,8 @@ const hr: LocalePhrasesRoot = {
draft: 'Skica',
},
mediaLibrary: {
onDelete: 'Jeste li sigurni da želite obrisati odabrane medijske datoteke?',
fileTooLarge:
onDeleteBody: 'Jeste li sigurni da želite obrisati odabrane medijske datoteke?',
fileTooLargeBody:
'Datoteka prevelika.\nKonfigurirano da ne podržava datoteke veće od %{size} kB.',
},
mediaLibraryModal: {

View File

@ -52,18 +52,18 @@ const hu: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Biztos hogy el akarod hagyni az oldalt?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Mentettlen változtatások vannak, kérjük, mentse az állapot frissítése előtt.',
onPublishingNotReady: 'Változtasd az állapotot "Kész"-re publikálás előtt.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Változtasd az állapotot "Kész"-re publikálás előtt.',
onPublishingWithUnsavedChangesBody:
'Mentetlen változtatások vannak, kérjük, mentsen a publikálás előtt.',
onPublishing: 'Publikálod ezt a bejegyzést?',
onPublishingBody: 'Publikálod ezt a bejegyzést?',
onUnpublishing: 'Publikálás visszavonása erre a bejegyzésre?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Töröljük ezt a publikált bejegyzést, a többi mentetlen modositással együtt?',
onDeletePublishedEntry: 'Töröljük ezt a publikált bejegyzést?',
onDeletePublishedEntryBody: 'Töröljük ezt a publikált bejegyzést?',
loadingEntry: 'Bejegyzés betöltése...',
confirmLoadBackup:
confirmLoadBackupBody:
'Helyi biztonsági másolat került helyre ehhez a bejegyzéshez, szeretné használni?',
},
editorToolbar: {
@ -128,7 +128,7 @@ const hu: LocalePhrasesRoot = {
draft: 'Piszkozat',
},
mediaLibrary: {
onDelete: 'Biztos törli a kiválasztott média tartalmat?',
onDeleteBody: 'Biztos törli a kiválasztott média tartalmat?',
},
mediaLibraryModal: {
loading: 'Betöltés...',

View File

@ -66,18 +66,18 @@ const it: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Sei sicuro di voler lasciare questa pagina?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Hai delle modifiche non salvate, salvale prima di aggiornare lo status.',
onPublishingNotReady: 'Aggiorna lo status a "Pronto" prima di pubblicare.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Aggiorna lo status a "Pronto" prima di pubblicare.',
onPublishingWithUnsavedChangesBody:
'Hai delle modifiche non salvate, salvale prima di pubblicare.',
onPublishing: 'Sei sicuro di voler pubblicare questa voce?',
onPublishingBody: 'Sei sicuro di voler pubblicare questa voce?',
onUnpublishing: 'Sei sicuro di voler nascondere questa voce?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Sei sicuro di voler cancellare questa voce pubblicata e tutte le modifiche non salvate della tua sessione corrente?',
onDeletePublishedEntry: 'Sei sicuro di voler cancellare questa voce pubblicata?',
onDeletePublishedEntryBody: 'Sei sicuro di voler cancellare questa voce pubblicata?',
loadingEntry: 'Caricando la voce...',
confirmLoadBackup: 'Un backup locale è stato recuperato per questa voce, vuoi utilizzarlo?',
confirmLoadBackupBody: 'Un backup locale è stato recuperato per questa voce, vuoi utilizzarlo?',
},
editorToolbar: {
publishing: 'Pubblicando...',
@ -137,8 +137,8 @@ const it: LocalePhrasesRoot = {
draft: 'Bozza',
},
mediaLibrary: {
onDelete: 'Sei sicuro di voler cancellare il media selezionato?',
fileTooLarge:
onDeleteBody: 'Sei sicuro di voler cancellare il media selezionato?',
fileTooLargeBody:
'File troppo grande.\nConfigurato per non accettare file piú grandi di %{size} kB.',
},
mediaLibraryModal: {

View File

@ -97,17 +97,17 @@ const ja: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'このページから遷移しますか?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'変更した項目があります。ステータスを更新する前に保存してください。',
onPublishingNotReady: '公開する前に、ステータスを「準備完了」に更新してください。',
onPublishingWithUnsavedChanges: '変更した項目があります。公開する前に保存してください。',
onPublishing: 'このエントリを公開しますか?',
onPublishingNotReadyBody: '公開する前に、ステータスを「準備完了」に更新してください。',
onPublishingWithUnsavedChangesBody: '変更した項目があります。公開する前に保存してください。',
onPublishingBody: 'このエントリを公開しますか?',
onUnpublishing: 'このエントリを未公開にしますか?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'保存されていない変更も削除されますが、この公開エントリを削除しますか?',
onDeletePublishedEntry: 'この公開エントリを削除しますか?',
onDeletePublishedEntryBody: 'この公開エントリを削除しますか?',
loadingEntry: 'エントリの読込中...',
confirmLoadBackup: 'ローカルのバックアップが復旧できました。利用しますか?',
confirmLoadBackupBody: 'ローカルのバックアップが復旧できました。利用しますか?',
},
editorInterface: {
toggleI18n: '言語を切り替える',
@ -204,8 +204,8 @@ const ja: LocalePhrasesRoot = {
copied: 'コピーしました',
},
mediaLibrary: {
onDelete: '選択しているデータを削除しますか?',
fileTooLarge: 'ファイルサイズが大きすぎます。\n%{size} kB 以下にしてください。',
onDeleteBody: '選択しているデータを削除しますか?',
fileTooLargeBody: 'ファイルサイズが大きすぎます。\n%{size} kB 以下にしてください。',
},
mediaLibraryModal: {
loading: '読込中...',

View File

@ -89,18 +89,18 @@ const ko: LocalePhrasesRoot = {
},
editor: {
onLeavePage: '이 페이지를 떠나시겠습니까?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'저장하지 않은 변경사항이 있습니다. 상태 업데이트 전 먼저 저장하세요.',
onPublishingNotReady: '게시 하기 앞서 상태를 "준비됨" 으로 업데이트 하세요.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: '게시 하기 앞서 상태를 "준비됨" 으로 업데이트 하세요.',
onPublishingWithUnsavedChangesBody:
'저장하지 않은 변경사항이 있습니다, 게시하기 전 먼저 저장하세요.',
onPublishing: '이 항목을 게시하시곘습니까?',
onPublishingBody: '이 항목을 게시하시곘습니까?',
onUnpublishing: '이 항목을 게시 철회 하시겠습니까?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'현재 세션에서의 저장되지 않은 변경사항과 이 게시된 항목을 삭제하시겠습니까?',
onDeletePublishedEntry: '이 게시된 항목을 삭제하시겠습니까?',
onDeletePublishedEntryBody: '이 게시된 항목을 삭제하시겠습니까?',
loadingEntry: '항목 불러오는 중...',
confirmLoadBackup:
confirmLoadBackupBody:
'이 항목에 대한 로컬 백업이 복구되었습니다, 복구된 것으로 사용하시겠습니까?',
},
editorToolbar: {
@ -168,8 +168,8 @@ const ko: LocalePhrasesRoot = {
draft: '초안',
},
mediaLibrary: {
onDelete: '선택하신 미디어를 삭제하시겠습니까?',
fileTooLarge:
onDeleteBody: '선택하신 미디어를 삭제하시겠습니까?',
fileTooLargeBody:
'파일이 너무 큽니다.\n%{size} kB 보다 큰 파일을 허용하지 않도록 구성되어 있습니다.',
},
mediaLibraryModal: {

View File

@ -98,18 +98,18 @@ const lt: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Ar tikrai norite uždaryti šį puslapį?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Turite neišsaugotų pakeitimų! Prašome išsaugoti prieš pakeičiant statusą.',
onPublishingNotReady: 'Prieš publikuojant, privalote pakeisti statusą į „Paruošta“.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Prieš publikuojant, privalote pakeisti statusą į „Paruošta“.',
onPublishingWithUnsavedChangesBody:
'Yra neišsaugotų pakeitimų, prašome išsaugoti juos prieš publikuojant.',
onPublishing: 'Ae tikrai norite publikuoti šį įrašą?',
onPublishingBody: 'Ae tikrai norite publikuoti šį įrašą?',
onUnpublishing: 'Tikrai norite panaikinti publikavimo statusą?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Tikrai norite panaikinti publikuotą įrašą ir Jūsų pakeiitmus iš dabartinės sesijos?',
onDeletePublishedEntry: 'Tikrai norite ištrinti šį publikuotą įrašą?',
onDeletePublishedEntryBody: 'Tikrai norite ištrinti šį publikuotą įrašą?',
loadingEntry: 'Kraunamas įrašas...',
confirmLoadBackup:
confirmLoadBackupBody:
'Radome Jūsų įrenginyje išsaugota juodraštį šiam įrašui, ar norite jį atgaivinti ir naudoti?',
},
editorToolbar: {
@ -187,8 +187,8 @@ const lt: LocalePhrasesRoot = {
draft: 'Juodraštis',
},
mediaLibrary: {
onDelete: 'Ar jūs tikrai norite ištrinti pasirinktą mediją?',
fileTooLarge:
onDeleteBody: 'Ar jūs tikrai norite ištrinti pasirinktą mediją?',
fileTooLargeBody:
'Failas per didelis.\nNustatymuose (konfigūracijoje) nurodyta, kad failai negali viršyti %{size} kB.',
},
mediaLibraryModal: {

View File

@ -82,16 +82,16 @@ const nb_no: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Er du sikker på du vil navigere bort fra denne siden?',
onUpdatingWithUnsavedChanges: 'Du må lagre endringene dine før du oppdaterer status.',
onPublishingNotReady: 'Du må endre status til "Klar" før du publiserer.',
onPublishingWithUnsavedChanges: 'Du må lagre endringene dine før du kan publisere.',
onPublishing: 'Er du sikker på at du vil publisere?',
onUpdatingWithUnsavedChangesBody: 'Du må lagre endringene dine før du oppdaterer status.',
onPublishingNotReadyBody: 'Du må endre status til "Klar" før du publiserer.',
onPublishingWithUnsavedChangesBody: 'Du må lagre endringene dine før du kan publisere.',
onPublishingBody: 'Er du sikker på at du vil publisere?',
onUnpublishing: 'Er du sikker på at du vil avpublisere innlegget?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Er du sikker på at du vil slette et publisert innlegg med tilhørende ulagrede endringer?',
onDeletePublishedEntry: 'Er du sikker på at du vil slette dette publiserte innlegget?',
onDeletePublishedEntryBody: 'Er du sikker på at du vil slette dette publiserte innlegget?',
loadingEntry: 'Laster innlegg...',
confirmLoadBackup: 'Vil du gjenopprette tidligere endringer som ikke har blitt lagret?',
confirmLoadBackupBody: 'Vil du gjenopprette tidligere endringer som ikke har blitt lagret?',
},
editorToolbar: {
publishing: 'Publiserer...',
@ -158,8 +158,8 @@ const nb_no: LocalePhrasesRoot = {
draft: 'Kladd',
},
mediaLibrary: {
onDelete: 'Er du sikker på at du vil slette markert element?',
fileTooLarge: 'Filen er for stor.\nMaksimal konfiguert filstørrelse er %{size} kB.',
onDeleteBody: 'Er du sikker på at du vil slette markert element?',
fileTooLargeBody: 'Filen er for stor.\nMaksimal konfiguert filstørrelse er %{size} kB.',
},
mediaLibraryModal: {
loading: 'Laster...',

View File

@ -95,18 +95,18 @@ const nl: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Weet je zeker dat je deze pagina wilt verlaten?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Er zijn nog niet-opgeslagen wijzigingen. Bewaar ze voordat u de status bijwerkt.',
onPublishingNotReady: 'Stel de status in op "Voltooid" voordat u publiceert.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Stel de status in op "Voltooid" voordat u publiceert.',
onPublishingWithUnsavedChangesBody:
'Er zijn nog niet-opgeslagen wijzigingen. Bewaar deze voordat u publiceert.',
onPublishing: 'Weet u zeker dat u dit item wil publiceren?',
onPublishingBody: 'Weet u zeker dat u dit item wil publiceren?',
onUnpublishing: 'Weet u zeker dat u de publicatie voor dit item ongedaan wilt maken?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Weet u zeker dat u dit gepubliceerde item en uw niet-opgeslagen wijzigingen uit de huidige sessie wilt verwijderen?',
onDeletePublishedEntry: 'Weet u zeker dat u dit gepubliceerde item wilt verwijderen?',
onDeletePublishedEntryBody: 'Weet u zeker dat u dit gepubliceerde item wilt verwijderen?',
loadingEntry: 'Item laden...',
confirmLoadBackup: 'Voor dit item is een lokale back-up hersteld, wilt u deze gebruiken?',
confirmLoadBackupBody: 'Voor dit item is een lokale back-up hersteld, wilt u deze gebruiken?',
},
editorInterface: {
toggleI18n: 'Wissel i18n',
@ -202,8 +202,8 @@ const nl: LocalePhrasesRoot = {
copied: 'Gekopieerd',
},
mediaLibrary: {
onDelete: 'Weet u zeker dat u de geselecteerde media wilt verwijderen?',
fileTooLarge:
onDeleteBody: 'Weet u zeker dat u de geselecteerde media wilt verwijderen?',
fileTooLargeBody:
'Het bestand is te groot.\n De instellingen staan geen bestanden toe groter dan %{size} kB.',
},
mediaLibraryModal: {

View File

@ -82,16 +82,16 @@ const nn_no: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Er du sikker på at du vil navigere bort frå denne sida?',
onUpdatingWithUnsavedChanges: 'Du må lagra endringane dine før du endrar status',
onPublishingNotReady: 'Du må endre status til "Klar" før du publiserer',
onPublishingWithUnsavedChanges: 'Du må laga endringane dine før du kan publisere.',
onPublishing: 'Er du sikker på at vil publisere?',
onUpdatingWithUnsavedChangesBody: 'Du må lagra endringane dine før du endrar status',
onPublishingNotReadyBody: 'Du må endre status til "Klar" før du publiserer',
onPublishingWithUnsavedChangesBody: 'Du må laga endringane dine før du kan publisere.',
onPublishingBody: 'Er du sikker på at vil publisere?',
onUnpublishing: 'Er du sikker på at du vil avpublisere innlegget?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Er du sikkert på at du vil slette eit publisert innlegg med tilhøyrande ulagra endringar?',
onDeletePublishedEntry: 'Er du sikker på at du vil slette dette publiserte innlegget?',
onDeletePublishedEntryBody: 'Er du sikker på at du vil slette dette publiserte innlegget?',
loadingEntry: 'Lastar innlegg...',
confirmLoadBackup:
confirmLoadBackupBody:
'Ynskjer du å gjennopprette tidlegare endringar som ikkje har verta lagra?',
},
editorToolbar: {
@ -159,8 +159,8 @@ const nn_no: LocalePhrasesRoot = {
draft: 'Kladd',
},
mediaLibrary: {
onDelete: 'Er du sikker på at du vil slette markert element?',
fileTooLarge: 'Fila er for stor.\nMaksimal konfiguert filstorleik er %{size} kB.',
onDeleteBody: 'Er du sikker på at du vil slette markert element?',
fileTooLargeBody: 'Fila er for stor.\nMaksimal konfiguert filstorleik er %{size} kB.',
},
mediaLibraryModal: {
loading: 'Lastar...',

View File

@ -97,17 +97,17 @@ const pl: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Czy na pewno chcesz opuścić tę stronę?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Masz niezapisane zmiany, proszę zapisz je przed aktualizacją statusu.',
onPublishingNotReady: 'Proszę zaktualizować status do "Gotowe" przed publikacją.',
onPublishingWithUnsavedChanges: 'Masz niezapisane zmiany, proszę zapisz je przed publikacją.',
onPublishing: 'Czy na pewno chcesz opublikować tę pozycję?',
onPublishingNotReadyBody: 'Proszę zaktualizować status do "Gotowe" przed publikacją.',
onPublishingWithUnsavedChangesBody: 'Masz niezapisane zmiany, proszę zapisz je przed publikacją.',
onPublishingBody: 'Czy na pewno chcesz opublikować tę pozycję?',
onUnpublishing: 'Czy na pewno chcesz cofnąć publikację tej pozycji?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Czy na pewno chcesz usunąć tę opublikowaną pozycję, a także niezapisane zmiany z bieżącej sesji?',
onDeletePublishedEntry: 'Czy na pewno chcesz usunąć tę opublikowaną pozycję?',
onDeletePublishedEntryBody: 'Czy na pewno chcesz usunąć tę opublikowaną pozycję?',
loadingEntry: 'Ładowanie pozycji...',
confirmLoadBackup: 'Odzyskano lokalną kopię zapasową tej pozycji, czy chcesz jej użyć?',
confirmLoadBackupBody: 'Odzyskano lokalną kopię zapasową tej pozycji, czy chcesz jej użyć?',
},
editorInterface: {
toggleI18n: 'Przełącz i18n',
@ -208,8 +208,8 @@ const pl: LocalePhrasesRoot = {
copied: 'Skopiowano',
},
mediaLibrary: {
onDelete: 'Czy na pewno chcesz usunąć zaznaczone multimedia?',
fileTooLarge: 'Plik jest za duży.\nUstawiony maksymalny rozmiar pliku: %{size} kB.',
onDeleteBody: 'Czy na pewno chcesz usunąć zaznaczone multimedia?',
fileTooLargeBody: 'Plik jest za duży.\nUstawiony maksymalny rozmiar pliku: %{size} kB.',
},
mediaLibraryModal: {
loading: 'Ładowanie...',

View File

@ -97,18 +97,18 @@ const pt: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Tem certeza que deseja sair desta página?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Há mudanças não salvas. Por favor, salve-as antes de atualizar o status.',
onPublishingNotReady: 'Por favor, altere o status para "Pronto" antes de publicar.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Por favor, altere o status para "Pronto" antes de publicar.',
onPublishingWithUnsavedChangesBody:
'Há mudanças não salvas. Por favor, salve-as antes de publicar.',
onPublishing: 'Tem certeza que deseja publicar essa entrada?',
onPublishingBody: 'Tem certeza que deseja publicar essa entrada?',
onUnpublishing: 'Tem certeza que deseja cancelar a publicação dessa entrada?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Tem certeza de que deseja excluir esta entrada publicada, bem como as alterações não salvas da sessão atual?',
onDeletePublishedEntry: 'Tem certeza de que deseja excluir esta entrada publicada?',
onDeletePublishedEntryBody: 'Tem certeza de que deseja excluir esta entrada publicada?',
loadingEntry: 'Carregando entrada...',
confirmLoadBackup: 'Um backup local foi recuperado para esta entrada. Deseja usá-lo?',
confirmLoadBackupBody: 'Um backup local foi recuperado para esta entrada. Deseja usá-lo?',
},
editorInterface: {
toggleI18n: 'Mudar i18n',
@ -209,8 +209,8 @@ const pt: LocalePhrasesRoot = {
copied: 'Copiado',
},
mediaLibrary: {
onDelete: 'Tem certeza de que deseja excluir a mídia selecionada?',
fileTooLarge:
onDeleteBody: 'Tem certeza de que deseja excluir a mídia selecionada?',
fileTooLargeBody:
'Arquivo muito grande.\nConfigurado para não permitir arquivos maiores que %{size} kB.',
},
mediaLibraryModal: {

View File

@ -97,18 +97,18 @@ const ro: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Ești sigur/ă că dorești să părăsești pagina?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Există modificări nesalvate! Te rugăm salvează înainte de a actualiza statusul.',
onPublishingNotReady: 'Actualizează statusul la „Gata” înainte de publicare.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Actualizează statusul la „Gata” înainte de publicare.',
onPublishingWithUnsavedChangesBody:
'Există modificări nesalvate, salvează-le înainte de publicare.',
onPublishing: 'Ești sigur/ă că dorești să publici acest articol?',
onPublishingBody: 'Ești sigur/ă că dorești să publici acest articol?',
onUnpublishing: 'Ești sigur/ă că dorești să anulezi publicarea acestui articol?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Ești sigur/ă că dorești să ștergi această publicare, dar și modificările nesalvate din sesiunea curentă?',
onDeletePublishedEntry: 'Ești sigur/ă că dorești să ștergi această publicare?',
onDeletePublishedEntryBody: 'Ești sigur/ă că dorești să ștergi această publicare?',
loadingEntry: 'Se încarcă...',
confirmLoadBackup:
confirmLoadBackupBody:
'Un backup local a fost recuperat pentru această intrare, dorești să îl folosești?',
},
editorInterface: {
@ -202,8 +202,8 @@ const ro: LocalePhrasesRoot = {
copied: 'Copiat',
},
mediaLibrary: {
onDelete: 'Ești sigur/ă că dorești să ștergi fișierul selectat?',
fileTooLarge: 'Fișier prea mare.\nConfigurarea nu permite fișiere mai mari de %{size} KB.',
onDeleteBody: 'Ești sigur/ă că dorești să ștergi fișierul selectat?',
fileTooLargeBody: 'Fișier prea mare.\nConfigurarea nu permite fișiere mai mari de %{size} KB.',
},
mediaLibraryModal: {
loading: 'Se încarcă...',

View File

@ -97,18 +97,18 @@ const ru: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Вы уверены, что хотите покинуть эту страницу?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'У вас есть несохраненные изменения, сохраните их перед обновлением статуса.',
onPublishingNotReady: 'Пожалуйста, измените статус на «Готов» перед публикацией.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Пожалуйста, измените статус на «Готов» перед публикацией.',
onPublishingWithUnsavedChangesBody:
'У вас есть несохраненные изменения, сохраните их перед публикацией.',
onPublishing: 'Вы уверены, что хотите опубликовать эту запись?',
onPublishingBody: 'Вы уверены, что хотите опубликовать эту запись?',
onUnpublishing: 'Вы уверены, что хотите отменить публикацию этой записи?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Вы уверены, что хотите удалить эту опубликованную запись, а также несохраненные изменения из текущего сеанса?',
onDeletePublishedEntry: 'Вы уверены, что хотите удалить эту опубликованную запись?',
onDeletePublishedEntryBody: 'Вы уверены, что хотите удалить эту опубликованную запись?',
loadingEntry: 'Загрузка записи…',
confirmLoadBackup:
confirmLoadBackupBody:
'Для этой записи была восстановлена локальная резервная копия, хотите ли вы ее использовать?',
},
editorToolbar: {
@ -197,8 +197,8 @@ const ru: LocalePhrasesRoot = {
copied: 'Скопировано',
},
mediaLibrary: {
onDelete: 'Вы уверены, что хотите удалить выбранный медиафайл?',
fileTooLarge:
onDeleteBody: 'Вы уверены, что хотите удалить выбранный медиафайл?',
fileTooLargeBody:
'Файл слишком большой.\nНастройки не позволяют сохранять файлы более %{size} kB.',
},
mediaLibraryModal: {

View File

@ -97,18 +97,18 @@ const sv: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Är du säker på att du vill lämna sidan?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Du har osparade ändringar, vänligen spara dem innan du uppdaterar status.',
onPublishingNotReady: 'Vänligen uppdatera status till "Redo" innan du publicerar.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Vänligen uppdatera status till "Redo" innan du publicerar.',
onPublishingWithUnsavedChangesBody:
'Du har osparade ändringar, vänligen spara innan du publicerar.',
onPublishing: 'Är du säker på att du vill publicera det här inlägget?',
onPublishingBody: 'Är du säker på att du vill publicera det här inlägget?',
onUnpublishing: 'Är du säker på att du vill avpublicera det här inlägget?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Är du säker på att du vill radera det här publicerade inlägget, inklusive dina osparade ändringar från nuvarande session?',
onDeletePublishedEntry: 'Är du säker på att du vill radera det här publicerade inlägget?',
onDeletePublishedEntryBody: 'Är du säker på att du vill radera det här publicerade inlägget?',
loadingEntry: 'Hämtar inlägg...',
confirmLoadBackup: 'En lokal kopia hittades för det här inlägget, vill du använda den?',
confirmLoadBackupBody: 'En lokal kopia hittades för det här inlägget, vill du använda den?',
},
editorInterface: {
toggleI18n: 'Slå på/av i18n',
@ -201,8 +201,8 @@ const sv: LocalePhrasesRoot = {
copied: 'Kopierad',
},
mediaLibrary: {
onDelete: 'Är du säker på att du vill radera valt mediaobjekt?',
fileTooLarge:
onDeleteBody: 'Är du säker på att du vill radera valt mediaobjekt?',
fileTooLargeBody:
'Maximal filstorlek överskriden.\nKonfigurerad att inte tillåta filer större än %{size} kB.',
},
mediaLibraryModal: {

View File

@ -92,18 +92,18 @@ const th: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'คุณแน่ใจหรือว่าจะออกจากหน้านี้?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก โปรดบันทึกก่อนอัปเดตสถานะ',
onPublishingNotReady: 'โปรดอัปเดตสถานะเป็น "พร้อม" ก่อนจะเผยแพร่',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'โปรดอัปเดตสถานะเป็น "พร้อม" ก่อนจะเผยแพร่',
onPublishingWithUnsavedChangesBody:
'คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก โปรดบันทึกก่อนจะเผยแพร่',
onPublishing: 'คุณแน่ใจหรือว่าจะเผยแพร่เนื้อหานี้?',
onPublishingBody: 'คุณแน่ใจหรือว่าจะเผยแพร่เนื้อหานี้?',
onUnpublishing: 'คุณแน่ใจหรือว่าจะไม่ต้องการเผยแพร่เนื้อหานี้?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'คุณแน่ใจหรือว่าจะต้องการลบการเผยแพร่เนื้อหานี้ รวมถึงการเปลี่ยนแปลงที่ยังไม่ได้บันทึก?',
onDeletePublishedEntry: 'คุณแน่ใจหรือว่าจะต้องการลบการเผยแพร่เนื้อหานี้?',
onDeletePublishedEntryBody: 'คุณแน่ใจหรือว่าจะต้องการลบการเผยแพร่เนื้อหานี้?',
loadingEntry: 'กำลังโหลดเนื้อหา...',
confirmLoadBackup: 'ข้อมูลสำรองได้ถูกกู้คืนสำหรับเนื้อหานี้ คุณต้องการใช้มันไหม?',
confirmLoadBackupBody: 'ข้อมูลสำรองได้ถูกกู้คืนสำหรับเนื้อหานี้ คุณต้องการใช้มันไหม?',
},
editorToolbar: {
publishing: 'กำลังเผยแพร่...',
@ -170,8 +170,8 @@ const th: LocalePhrasesRoot = {
draft: 'ร่าง',
},
mediaLibrary: {
onDelete: 'คุณแน่ใจหรือว่าจะลบมีเดียที่ถูกเลือก?',
fileTooLarge: 'ไฟล์ใหญ่เกินไป\n ค่าที่ตั้งไว้ไม่ยอมรับไฟล์ที่ใหญ่กว่า %{size} kB.',
onDeleteBody: 'คุณแน่ใจหรือว่าจะลบมีเดียที่ถูกเลือก?',
fileTooLargeBody: 'ไฟล์ใหญ่เกินไป\n ค่าที่ตั้งไว้ไม่ยอมรับไฟล์ที่ใหญ่กว่า %{size} kB.',
},
mediaLibraryModal: {
loading: 'กำลังโหลด...',

View File

@ -95,24 +95,24 @@ const tr: LocalePhrasesRoot = {
i18n: {
writingInLocale: '%{locale} için yazılıyor',
copyFromLocale: 'Başka bir dilden doldurun',
copyFromLocaleConfirm:
copyFromLocaleConfirmBody:
'Verileri %{locale} dilinden mi doldurmak istiyorsun?\nVarolan bütün verilerin üzerine yazılacak.',
},
},
editor: {
onLeavePage: 'Bu sayfadan ayrılmak istediğinize emin misiniz?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Kaydedilmemiş değişiklikleriniz var, lütfen içeriği güncellemeden önce kaydedin.',
onPublishingNotReady: 'Lütfen yayınlamadan önce içeriği "Hazır" olarak güncelleyin.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Lütfen yayınlamadan önce içeriği "Hazır" olarak güncelleyin.',
onPublishingWithUnsavedChangesBody:
'Kaydedilmemiş değişiklikleriniz var, lütfen yayınlamadan önce kaydedin.',
onPublishing: 'Bu girdiyi yayınlamak istediğinize emin misiniz?',
onPublishingBody: 'Bu girdiyi yayınlamak istediğinize emin misiniz?',
onUnpublishing: 'Bu girdiyi yayından kaldırmak istediğinizden emin misiniz?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Bu oturumda kaydedilmiş değişikliklerin yanı sıra geçerli oturumdaki kaydedilmemiş değişikliklerinizi silmek istediğinize emin misiniz?',
onDeletePublishedEntry: 'Bu yayınlanmış girdiyi silmek istediğinize emin misiniz?',
onDeletePublishedEntryBody: 'Bu yayınlanmış girdiyi silmek istediğinize emin misiniz?',
loadingEntry: 'Girdiler yükleniyor...',
confirmLoadBackup: 'Bu girdi için yerel bir yedekleme kurtarıldı, kullanmak ister misiniz?',
confirmLoadBackupBody: 'Bu girdi için yerel bir yedekleme kurtarıldı, kullanmak ister misiniz?',
},
editorInterface: {
toggleI18n: 'i18n değiştir',
@ -213,8 +213,8 @@ const tr: LocalePhrasesRoot = {
copied: 'Kopyalandı',
},
mediaLibrary: {
onDelete: 'Seçilen medyayı silmek istediğinize emin misiniz?',
fileTooLarge:
onDeleteBody: 'Seçilen medyayı silmek istediğinize emin misiniz?',
fileTooLargeBody:
'Dosya çok büyük.\n%{size} kilobaytdan daha büyük dosyaların yüklenmemesi için ayarlanmış.',
},
mediaLibraryModal: {

View File

@ -52,17 +52,17 @@ const uk: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Ви дійсно бажаєте залишити сторінку?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Присутні незбережені зміни, будь ласка збережіть перед зміною статусу.',
onPublishingNotReady: 'Будь ласка, встановіть статус "Готово" перед публікацією.',
onPublishingWithUnsavedChanges:
onPublishingNotReadyBody: 'Будь ласка, встановіть статус "Готово" перед публікацією.',
onPublishingWithUnsavedChangesBody:
'Присутні незбережені зміни, будь ласка збережіть їх перед публікацією.',
onPublishing: 'Ви дійсно бажаєте опублікувати запис?',
onDeleteWithUnsavedChanges:
onPublishingBody: 'Ви дійсно бажаєте опублікувати запис?',
onDeleteWithUnsavedChangesBody:
'Ви дійсно бажаєте видалити опублікований запис, як і всі незбережені зміни під час поточної сесії?',
onDeletePublishedEntry: 'Ви дійсно бажаєте видалити опублікований запис?',
onDeletePublishedEntryBody: 'Ви дійсно бажаєте видалити опублікований запис?',
loadingEntry: 'Завантаження...',
confirmLoadBackup: 'Відновлено резервну копію, бажаєте її використати?',
confirmLoadBackupBody: 'Відновлено резервну копію, бажаєте її використати?',
},
editorToolbar: {
publishing: 'Публікація...',
@ -118,7 +118,7 @@ const uk: LocalePhrasesRoot = {
draft: 'В роботі',
},
mediaLibrary: {
onDelete: 'Ви дійсно бажаєте видалити обрані матеріали?',
onDeleteBody: 'Ви дійсно бажаєте видалити обрані матеріали?',
},
mediaLibraryModal: {
loading: 'Завантаження...',

View File

@ -89,17 +89,17 @@ const vi: LocalePhrasesRoot = {
},
editor: {
onLeavePage: 'Bạn có chắc rằng bạn muốn rời khỏi trang này?',
onUpdatingWithUnsavedChanges:
onUpdatingWithUnsavedChangesBody:
'Bạn chưa lưu những thay đổi, hãy lưu trước khi thay đổi trạng thái.',
onPublishingNotReady: 'Hãy thay đổi trạng thái thành "Sẵn sàng" trước khi công bố.',
onPublishingWithUnsavedChanges: 'Bạn có thay đổi chưa lưu, hãy lưu trước khi công bố.',
onPublishing: 'Bạn có chắc rằng bạn muốn công bố mục này?',
onPublishingNotReadyBody: 'Hãy thay đổi trạng thái thành "Sẵn sàng" trước khi công bố.',
onPublishingWithUnsavedChangesBody: 'Bạn có thay đổi chưa lưu, hãy lưu trước khi công bố.',
onPublishingBody: 'Bạn có chắc rằng bạn muốn công bố mục này?',
onUnpublishing: 'Bạn có chắc rằng bạn muốn ngừng công bố mục này?',
onDeleteWithUnsavedChanges:
onDeleteWithUnsavedChangesBody:
'Bạn có chắc rằng bạn muốn xoá mục đã được công bố này, cũng như là những thay đổi chưa lưu của bạn trong phiên làm việc này?',
onDeletePublishedEntry: 'Bạn có chắc rằng bạn muốn xoá mục đã được công bố này?',
onDeletePublishedEntryBody: 'Bạn có chắc rằng bạn muốn xoá mục đã được công bố này?',
loadingEntry: 'Đang tải...',
confirmLoadBackup:
confirmLoadBackupBody:
'Một bản sao lưu trên máy đã được phục hồi cho mục này, bạn có muốn tải lên không?',
},
editorToolbar: {
@ -167,8 +167,8 @@ const vi: LocalePhrasesRoot = {
draft: 'Bản nháp',
},
mediaLibrary: {
onDelete: 'Bạn có chắc rằng bạn muốn xoá tập tin này?',
fileTooLarge: 'Tập tin quá lớn.\nCấu hình không cho phép những tập tin lớn hơn %{size} kB.',
onDeleteBody: 'Bạn có chắc rằng bạn muốn xoá tập tin này?',
fileTooLargeBody: 'Tập tin quá lớn.\nCấu hình không cho phép những tập tin lớn hơn %{size} kB.',
},
mediaLibraryModal: {
loading: 'Đang tải...',

View File

@ -97,15 +97,15 @@ const zh_Hans: LocalePhrasesRoot = {
},
editor: {
onLeavePage: '你确定要离开此页面吗?',
onUpdatingWithUnsavedChanges: '你有尚未保存的修改,请在更新状态前进行保存',
onPublishingNotReady: '请在发布之前将状态更新为“就绪”',
onPublishingWithUnsavedChanges: '你有尚未保存的修改,请在发布前进行保存',
onPublishing: '你确定要发布此内容吗?',
onUpdatingWithUnsavedChangesBody: '你有尚未保存的修改,请在更新状态前进行保存',
onPublishingNotReadyBody: '请在发布之前将状态更新为“就绪”',
onPublishingWithUnsavedChangesBody: '你有尚未保存的修改,请在发布前进行保存',
onPublishingBody: '你确定要发布此内容吗?',
onUnpublishing: '你确定要撤销发布此内容吗?',
onDeleteWithUnsavedChanges: '你确定要删除这个已经发布的内容,以及当前尚未保存的修改吗?',
onDeletePublishedEntry: '你确定要删除这个已经发布的内容吗?',
onDeleteWithUnsavedChangesBody: '你确定要删除这个已经发布的内容,以及当前尚未保存的修改吗?',
onDeletePublishedEntryBody: '你确定要删除这个已经发布的内容吗?',
loadingEntry: '正在加载内容...',
confirmLoadBackup: '发现了一个对应此内容的本地备份,你要加载它吗?',
confirmLoadBackupBody: '发现了一个对应此内容的本地备份,你要加载它吗?',
},
editorInterface: {
toggleI18n: '打开/关闭国际化',
@ -198,8 +198,8 @@ const zh_Hans: LocalePhrasesRoot = {
copied: '已复制',
},
mediaLibrary: {
onDelete: '你确定要删除此媒体项目吗?',
fileTooLarge: '文件体积过大\n目前的配置中不允许文件体积超过 %{size} kB',
onDeleteBody: '你确定要删除此媒体项目吗?',
fileTooLargeBody: '文件体积过大\n目前的配置中不允许文件体积超过 %{size} kB',
},
mediaLibraryModal: {
loading: '正在加载...',

View File

@ -92,15 +92,15 @@ const zh_Hant: LocalePhrasesRoot = {
},
editor: {
onLeavePage: '您確定要離開這頁嗎?',
onUpdatingWithUnsavedChanges: '您有未儲存的變更,在更新狀態前請先進行儲存。',
onPublishingNotReady: '在發布前,請先將狀態設定為:預備發布。',
onPublishingWithUnsavedChanges: '您有未儲存的變更,在發布前請先進行儲存。',
onPublishing: '你確定要發表此內容嗎?',
onUpdatingWithUnsavedChangesBody: '您有未儲存的變更,在更新狀態前請先進行儲存。',
onPublishingNotReadyBody: '在發布前,請先將狀態設定為:預備發布。',
onPublishingWithUnsavedChangesBody: '您有未儲存的變更,在發布前請先進行儲存。',
onPublishingBody: '你確定要發表此內容嗎?',
onUnpublishing: '你確定要取消發表此內容嗎?',
onDeleteWithUnsavedChanges: '你確定要刪除這篇已發布的內容以及你尚未儲存的變更?',
onDeletePublishedEntry: '你確定要刪除這篇已發布的內容?',
onDeleteWithUnsavedChangesBody: '你確定要刪除這篇已發布的內容以及你尚未儲存的變更?',
onDeletePublishedEntryBody: '你確定要刪除這篇已發布的內容?',
loadingEntry: '載入內容中...',
confirmLoadBackup: '此內容的本地備份已經還原,你想要使用嗎?',
confirmLoadBackupBody: '此內容的本地備份已經還原,你想要使用嗎?',
},
editorToolbar: {
publishing: '發布中...',
@ -177,8 +177,8 @@ const zh_Hant: LocalePhrasesRoot = {
draft: '草稿',
},
mediaLibrary: {
onDelete: '你確定要刪除已選擇的媒體嗎?',
fileTooLarge: '檔案太大。\n已設定不允許大於 %{size} kB 的檔案。',
onDeleteBody: '你確定要刪除已選擇的媒體嗎?',
fileTooLargeBody: '檔案太大。\n已設定不允許大於 %{size} kB 的檔案。',
},
mediaLibraryModal: {
loading: '載入中...',

View File

@ -21,7 +21,7 @@ import {
GROUP_ENTRIES_SUCCESS,
SORT_ENTRIES_FAILURE,
SORT_ENTRIES_REQUEST,
SORT_ENTRIES_SUCCESS
SORT_ENTRIES_SUCCESS,
} from '../actions/entries';
import { SEARCH_ENTRIES_SUCCESS } from '../actions/search';
import { SORT_DIRECTION_ASCENDING, SORT_DIRECTION_NONE } from '../constants';
@ -44,7 +44,7 @@ import type {
Pages,
Sort,
SortMap,
SortObject
SortObject,
} from '../interface';
import type { EntryDraftState } from './entryDraft';
@ -204,7 +204,7 @@ function entries(
pages[payload.collection] = {
page: page ?? undefined,
ids: loadedEntries.map(entry => entry.slug),
ids: [...(pages[payload.collection]?.ids ?? []), ...loadedEntries.map(entry => entry.slug)],
isFetching: false,
};

View File

@ -26,6 +26,7 @@ import type { EntriesAction } from '../actions/entries';
import type { Entry, FieldsErrors } from '../interface';
export interface EntryDraftState {
original?: Entry;
entry?: Entry;
fieldsErrors: FieldsErrors;
hasChanged: boolean;
@ -49,13 +50,16 @@ function entryDraftReducer(
case DRAFT_CREATE_FROM_ENTRY: {
const newState = { ...state };
const entry: Entry = {
...action.payload.entry,
newRecord: false,
};
// Existing Entry
return {
...newState,
entry: {
...action.payload.entry,
newRecord: false,
},
entry,
original: entry,
fieldsErrors: {},
hasChanged: false,
key: uuid(),
@ -65,13 +69,16 @@ function entryDraftReducer(
const newState = { ...state };
delete newState.localBackup;
const entry: Entry = {
...action.payload,
newRecord: true,
};
// New Entry
return {
...newState,
entry: {
...action.payload,
newRecord: true,
},
entry,
original: entry,
fieldsErrors: {},
hasChanged: false,
key: uuid(),
@ -88,13 +95,16 @@ function entryDraftReducer(
const newState = { ...state };
delete newState.localBackup;
const entry: Entry = {
...backupEntry,
newRecord: !backupEntry?.path,
};
// Local Backup
return {
...state,
entry: {
...backupEntry,
newRecord: !backupEntry?.path,
},
entry,
original: entry,
fieldsErrors: {},
hasChanged: true,
key: uuid(),
@ -105,13 +115,16 @@ function entryDraftReducer(
const newState = { ...state };
delete newState.localBackup;
const entry: Entry = {
...action.payload,
newRecord: true,
};
// Duplicate Entry
return {
...newState,
entry: {
...action.payload,
newRecord: true,
},
entry,
original: entry,
fieldsErrors: {},
hasChanged: true,
};
@ -157,7 +170,7 @@ function entryDraftReducer(
return {
...newState,
hasChanged: !entry || !isEqual(newData, get(entry, dataPath)),
hasChanged: !entry || !isEqual(newData, get(newState.original, dataPath)),
};
}
@ -211,14 +224,17 @@ function entryDraftReducer(
const newState = { ...state };
delete newState.localBackup;
const entry: Entry = {
...state.entry,
slug: action.payload.slug,
isPersisting: false,
};
return {
...newState,
hasChanged: false,
entry: {
...state.entry,
slug: action.payload.slug,
isPersisting: false,
},
entry,
original: entry,
};
}
@ -230,13 +246,16 @@ function entryDraftReducer(
const newState = { ...state };
delete newState.localBackup;
const entry: Entry = {
...state.entry,
isPersisting: false,
};
return {
...newState,
hasChanged: false,
entry: {
...state.entry,
isPersisting: false,
},
entry,
original: entry
};
}

View File

@ -11,8 +11,9 @@ import formatDate from 'date-fns/format';
import formatISO from 'date-fns/formatISO';
import parse from 'date-fns/parse';
import parseISO from 'date-fns/parseISO';
import React, { useCallback, useMemo, useState } from 'react';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import alert from '../../components/UI/Alert';
import { isNotEmpty } from '../../lib/util/string.util';
import type { MouseEvent } from 'react';
@ -113,13 +114,16 @@ const DateTimeControl = ({
: field.default;
}, [field.default, field.picker_utc, format, inputFormat, localToUTC]);
const [internalValue, setInternalValue] = useState(value ?? defaultValue);
const [internalValue, setInternalValue] = useState(value);
const dateValue = useMemo(
() =>
format ? parse(internalValue, format, new Date()) ?? defaultValue : parseISO(internalValue),
[defaultValue, format, internalValue],
);
const dateValue: Date = useMemo(() => {
let valueToParse = internalValue;
if (!valueToParse) {
valueToParse = defaultValue;
}
return format ? parse(valueToParse, format, new Date()) : parseISO(valueToParse);
}, [defaultValue, format, internalValue]);
const utcDate = useMemo(() => {
const dateTime = new Date(dateValue);
@ -149,14 +153,40 @@ const DateTimeControl = ({
[defaultValue, field.picker_utc, format, localToUTC, onChange],
);
useEffect(() => {
if (isNotEmpty(internalValue)) {
return;
}
setInternalValue(defaultValue);
setTimeout(() => {
onChange(defaultValue);
});
}, [defaultValue, internalValue, onChange]);
const dateTimePicker = useMemo(() => {
if (!internalValue) {
return null;
}
let formattedValue = defaultValue;
try {
formattedValue = formatDate(field.picker_utc ? utcDate : dateValue, inputFormat);
} catch (e) {
alert({
title: 'editor.editorWidgets.datetime.invalidDateTitle',
body: 'editor.editorWidgets.datetime.invalidDateBody',
});
console.error(e);
}
if (dateFormat && !timeFormat) {
return (
<MobileDatePicker
key="mobile-date-picker"
inputFormat={inputFormat}
label={label}
value={formatDate(field.picker_utc ? utcDate : dateValue, inputFormat)}
value={formattedValue}
onChange={handleChange}
renderInput={params => (
<TextField
@ -186,7 +216,7 @@ const DateTimeControl = ({
key="time-picker"
label={label}
inputFormat={inputFormat}
value={formatDate(field.picker_utc ? utcDate : dateValue, inputFormat)}
value={formattedValue}
onChange={handleChange}
renderInput={params => (
<TextField
@ -215,7 +245,7 @@ const DateTimeControl = ({
key="mobile-date-time-picker"
inputFormat={inputFormat}
label={label}
value={formatDate(field.picker_utc ? utcDate : dateValue, inputFormat)}
value={formattedValue}
onChange={handleChange}
renderInput={params => (
<TextField
@ -240,6 +270,7 @@ const DateTimeControl = ({
}, [
dateFormat,
dateValue,
defaultValue,
field.picker_utc,
handleChange,
hasErrors,

View File

@ -21,6 +21,11 @@ const MarkdownPreview = ({
const viewer = useRef<Viewer | null>(null);
useEffect(() => {
viewer.current?.getInstance().setMarkdown(value ?? '');
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [value]);
useEffect(() => {
mediaHolder.setBulkMedia(media);
viewer.current?.getInstance().setMarkdown(value ?? '');

View File

@ -7,6 +7,7 @@ import uniqBy from 'lodash/uniqBy';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { QUERY_SUCCESS } from '../../actions/search';
import { isNotEmpty } from '../../lib/util/string.util';
import {
addFileTemplateFields,
compileStringTemplate,
@ -113,7 +114,7 @@ const RelationControl = ({
query,
locale,
label,
hasErrors
hasErrors,
}: WidgetControlProps<string | string[], RelationField>) => {
const [internalValue, setInternalValue] = useState(value);
const [initialOptions, setInitialOptions] = useState<HitOption[]>([]);
@ -184,7 +185,14 @@ const RelationControl = ({
const [options, setOptions] = useState<HitOption[]>([]);
const [open, setOpen] = React.useState(false);
const loading = useMemo(() => open && options.length === 0, [open, options.length]);
const valueNotEmpty = useMemo(
() => (Array.isArray(internalValue) ? internalValue.length > 0 : isNotEmpty(internalValue)),
[internalValue],
);
const loading = useMemo(
() => (open || valueNotEmpty) && options.length === 0,
[open, valueNotEmpty, options.length],
);
useEffect(() => {
let alive = true;

View File

@ -111,7 +111,7 @@ const useIntersectionObserver = (setActiveId: (activeId: string) => void) => {
const StyledNav = styled('nav')(
({ theme }) => `
width: 100%;
padding: 0 16px 16px 0;
padding: 0 20px 16px 0;
align-self: flex-start;
position: sticky;
top: 0;
@ -120,7 +120,7 @@ const StyledNav = styled('nav')(
top: 16px;
${theme.breakpoints.between('md', 'lg')} {
top: 0;
top: 24px;
}
${theme.breakpoints.down('md')} {

View File

@ -39,7 +39,6 @@ const StyledDocsView = styled('div')(
${theme.breakpoints.down('lg')} {
margin-left: 0;
padding-top: 24px;
overflow-x: hidden;
width: 100vw;
}