@@ -358,7 +378,7 @@ type SidebarShareProps = {
id: string
isPhoto: boolean
loading: boolean
- shares?: sidbarGetPhotoShares_media_shares[]
+ shares?: sidebarGetPhotoShares_media_shares[]
shareItem(item: { variables: { id: string } }): void
}
diff --git a/ui/src/components/sidebar/SidebarDownloadMedia.tsx b/ui/src/components/sidebar/SidebarDownloadMedia.tsx
index 261027b..01d4f5e 100644
--- a/ui/src/components/sidebar/SidebarDownloadMedia.tsx
+++ b/ui/src/components/sidebar/SidebarDownloadMedia.tsx
@@ -4,7 +4,7 @@ import { useLazyQuery, gql } from '@apollo/client'
import { authToken } from '../../helpers/authentication'
import { useTranslation } from 'react-i18next'
import { TranslationFn } from '../../localization'
-import { MediaSidebarMedia } from './MediaSidebar'
+import { MediaSidebarMedia } from './MediaSidebar/MediaSidebar'
import {
sidebarDownloadQuery,
sidebarDownloadQueryVariables,
diff --git a/ui/src/components/sidebar/__generated__/setAlbumCoverID.ts b/ui/src/components/sidebar/__generated__/setAlbumCoverID.ts
deleted file mode 100644
index f623c12..0000000
--- a/ui/src/components/sidebar/__generated__/setAlbumCoverID.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-// @generated
-// This file was automatically generated and should not be edited.
-
-// ====================================================
-// GraphQL mutation operation: setAlbumCoverID
-// ====================================================
-
-export interface setAlbumCoverID_setAlbumCoverID {
- __typename: 'Album'
- id: string
- coverID: string
-}
-
-export interface setAlbumCoverID {
- /**
- * Assign a cover image to an album, set coverID to -1 to remove the current one
- */
- setAlbumCoverID: setAlbumCoverID_setAlbumCoverID
-}
-
-export interface setAlbumCoverIDVariables {
- albumID: string
- coverID: string
-}
diff --git a/ui/src/components/sidebar/__generated__/sidbarGetAlbumShares.ts b/ui/src/components/sidebar/__generated__/sidbarGetAlbumShares.ts
deleted file mode 100644
index 7e7fa27..0000000
--- a/ui/src/components/sidebar/__generated__/sidbarGetAlbumShares.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-// @generated
-// This file was automatically generated and should not be edited.
-
-// ====================================================
-// GraphQL query operation: sidbarGetAlbumShares
-// ====================================================
-
-export interface sidbarGetAlbumShares_album_shares {
- __typename: "ShareToken";
- id: string;
- token: string;
- /**
- * Whether or not a password is needed to access the share
- */
- hasPassword: boolean;
-}
-
-export interface sidbarGetAlbumShares_album {
- __typename: "Album";
- id: string;
- shares: (sidbarGetAlbumShares_album_shares | null)[] | null;
-}
-
-export interface sidbarGetAlbumShares {
- /**
- * Get album by id, user must own the album or be admin
- * If valid tokenCredentials are provided, the album may be retrived without further authentication
- */
- album: sidbarGetAlbumShares_album;
-}
-
-export interface sidbarGetAlbumSharesVariables {
- id: string;
-}
diff --git a/ui/src/components/sidebar/__generated__/sidbarGetPhotoShares.ts b/ui/src/components/sidebar/__generated__/sidbarGetPhotoShares.ts
deleted file mode 100644
index 400e27d..0000000
--- a/ui/src/components/sidebar/__generated__/sidbarGetPhotoShares.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-// @generated
-// This file was automatically generated and should not be edited.
-
-// ====================================================
-// GraphQL query operation: sidbarGetPhotoShares
-// ====================================================
-
-export interface sidbarGetPhotoShares_media_shares {
- __typename: "ShareToken";
- id: string;
- token: string;
- /**
- * Whether or not a password is needed to access the share
- */
- hasPassword: boolean;
-}
-
-export interface sidbarGetPhotoShares_media {
- __typename: "Media";
- id: string;
- shares: sidbarGetPhotoShares_media_shares[];
-}
-
-export interface sidbarGetPhotoShares {
- /**
- * Get media by id, user must own the media or be admin.
- * If valid tokenCredentials are provided, the media may be retrived without further authentication
- */
- media: sidbarGetPhotoShares_media;
-}
-
-export interface sidbarGetPhotoSharesVariables {
- id: string;
-}
diff --git a/ui/src/components/sidebar/__generated__/sidebarPhoto.ts b/ui/src/components/sidebar/__generated__/sidebarPhoto.ts
deleted file mode 100644
index 0dbad68..0000000
--- a/ui/src/components/sidebar/__generated__/sidebarPhoto.ts
+++ /dev/null
@@ -1,167 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-// @generated
-// This file was automatically generated and should not be edited.
-
-import { MediaType } from "./../../../__generated__/globalTypes";
-
-// ====================================================
-// GraphQL query operation: sidebarPhoto
-// ====================================================
-
-export interface sidebarPhoto_media_highRes {
- __typename: "MediaURL";
- /**
- * URL for previewing the image
- */
- url: string;
- /**
- * Width of the image in pixels
- */
- width: number;
- /**
- * Height of the image in pixels
- */
- height: number;
-}
-
-export interface sidebarPhoto_media_thumbnail {
- __typename: "MediaURL";
- /**
- * URL for previewing the image
- */
- url: string;
- /**
- * Width of the image in pixels
- */
- width: number;
- /**
- * Height of the image in pixels
- */
- height: number;
-}
-
-export interface sidebarPhoto_media_videoWeb {
- __typename: "MediaURL";
- /**
- * URL for previewing the image
- */
- url: string;
- /**
- * Width of the image in pixels
- */
- width: number;
- /**
- * Height of the image in pixels
- */
- height: number;
-}
-
-export interface sidebarPhoto_media_videoMetadata {
- __typename: "VideoMetadata";
- id: string;
- width: number;
- height: number;
- duration: number;
- codec: string | null;
- framerate: number | null;
- bitrate: string | null;
- colorProfile: string | null;
- audio: string | null;
-}
-
-export interface sidebarPhoto_media_exif {
- __typename: "MediaEXIF";
- id: string;
- /**
- * The model name of the camera
- */
- camera: string | null;
- /**
- * The maker of the camera
- */
- maker: string | null;
- /**
- * The name of the lens
- */
- lens: string | null;
- dateShot: any | null;
- /**
- * The exposure time of the image
- */
- exposure: number | null;
- /**
- * The aperature stops of the image
- */
- aperture: number | null;
- /**
- * The ISO setting of the image
- */
- iso: number | null;
- /**
- * The focal length of the lens, when the image was taken
- */
- focalLength: number | null;
- /**
- * A formatted description of the flash settings, when the image was taken
- */
- flash: number | null;
- /**
- * An index describing the mode for adjusting the exposure of the image
- */
- exposureProgram: number | null;
-}
-
-export interface sidebarPhoto_media_faces_rectangle {
- __typename: "FaceRectangle";
- minX: number;
- maxX: number;
- minY: number;
- maxY: number;
-}
-
-export interface sidebarPhoto_media_faces_faceGroup {
- __typename: "FaceGroup";
- id: string;
-}
-
-export interface sidebarPhoto_media_faces {
- __typename: "ImageFace";
- id: string;
- rectangle: sidebarPhoto_media_faces_rectangle;
- faceGroup: sidebarPhoto_media_faces_faceGroup;
-}
-
-export interface sidebarPhoto_media {
- __typename: "Media";
- id: string;
- title: string;
- type: MediaType;
- /**
- * URL to display the photo in full resolution, will be null for videos
- */
- highRes: sidebarPhoto_media_highRes | null;
- /**
- * URL to display the media in a smaller resolution
- */
- thumbnail: sidebarPhoto_media_thumbnail | null;
- /**
- * URL to get the video in a web format that can be played in the browser, will be null for photos
- */
- videoWeb: sidebarPhoto_media_videoWeb | null;
- videoMetadata: sidebarPhoto_media_videoMetadata | null;
- exif: sidebarPhoto_media_exif | null;
- faces: sidebarPhoto_media_faces[];
-}
-
-export interface sidebarPhoto {
- /**
- * Get media by id, user must own the media or be admin.
- * If valid tokenCredentials are provided, the media may be retrived without further authentication
- */
- media: sidebarPhoto_media;
-}
-
-export interface sidebarPhotoVariables {
- id: string;
-}
diff --git a/ui/src/components/timelineGallery/TimelineFilters.tsx b/ui/src/components/timelineGallery/TimelineFilters.tsx
index 0884a27..1702550 100644
--- a/ui/src/components/timelineGallery/TimelineFilters.tsx
+++ b/ui/src/components/timelineGallery/TimelineFilters.tsx
@@ -53,7 +53,9 @@ const DateSelector = ({ filterDate, setFilterDate }: DateSelectorProps) => {
const yearItems = years.map(x => ({
value: `${x}`,
- label: `${x} and earlier`,
+ label: t('timeline_filter.date.dropdown_year', '{{year}} and earlier', {
+ year: x,
+ }),
}))
items = [...items, ...yearItems]
}
diff --git a/ui/src/components/timelineGallery/TimelineGroupAlbum.tsx b/ui/src/components/timelineGallery/TimelineGroupAlbum.tsx
index c8b3743..7310e37 100644
--- a/ui/src/components/timelineGallery/TimelineGroupAlbum.tsx
+++ b/ui/src/components/timelineGallery/TimelineGroupAlbum.tsx
@@ -6,7 +6,7 @@ import {
toggleFavoriteAction,
useMarkFavoriteMutation,
} from '../photoGallery/photoGalleryMutations'
-import MediaSidebar from '../sidebar/MediaSidebar'
+import MediaSidebar from '../sidebar/MediaSidebar/MediaSidebar'
import { SidebarContext } from '../sidebar/Sidebar'
import {
getActiveTimelineImage,
diff --git a/ui/src/extractedTranslations/da/translation.json b/ui/src/extractedTranslations/da/translation.json
index fe49443..61a3949 100644
--- a/ui/src/extractedTranslations/da/translation.json
+++ b/ui/src/extractedTranslations/da/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "Ændre navn",
- "detach_face": "Løsriv billeder",
- "merge_face": "Sammenflet personer",
+ "detach_images": "Løsriv billeder",
+ "merge_people": "Sammenflet personer",
"move_faces": "Flyt ansigter"
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Download"
},
+ "location": {
+ "title": "Lokation"
+ },
"media": {
+ "album_path": "Album sti",
"exif": {
"exposure_program": {
"action_program": "Actionprogram",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Blænde",
"camera": "Kamera",
+ "coordinates": "Koordinater",
"date_shot": "Dato",
"exposure": "Lukketid",
"exposure_program": "Lukketid program",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "Løsriv billede",
+ "merge_face": "Sammenflet person",
+ "move_face": "Flyt person"
+ },
+ "confirm_image_detach": "Er du sikker på at du vil løsrive dette billede?",
+ "title": "Personer"
+ },
"sharing": {
"add_share": "Tilføj deling",
"copy_link": "Kopier link",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "Fra i dag",
+ "dropdown_year": "{{year}} og tidligere",
"label": "Dato"
}
},
diff --git a/ui/src/extractedTranslations/da/translation_old.json b/ui/src/extractedTranslations/da/translation_old.json
index a888751..ec51c67 100644
--- a/ui/src/extractedTranslations/da/translation_old.json
+++ b/ui/src/extractedTranslations/da/translation_old.json
@@ -42,6 +42,15 @@
"merge_face": null,
"detach_face": null,
"move_faces": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "Alle billeder fra denne gruppe vil blive flettet sammen med den valgte gruppe",
+ "destination_table": {
+ "title": "Vælg destinationsgruppe"
+ },
+ "title": "Vælg gruppe at flette med"
+ }
}
},
"settings": {
@@ -71,6 +80,9 @@
"mega_byte_plural": null,
"tera_byte_plural": null
}
+ },
+ "media": {
+ "album": "Album"
}
},
"timeline_filter": {
diff --git a/ui/src/extractedTranslations/de/translation.json b/ui/src/extractedTranslations/de/translation.json
index ee94dd1..a5157e5 100644
--- a/ui/src/extractedTranslations/de/translation.json
+++ b/ui/src/extractedTranslations/de/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Download"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Action (kurze Verschlusszeit)",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Blende",
"camera": "Kamera",
+ "coordinates": "",
"date_shot": "Aufnahmedatum",
"exposure": "Belichtung",
"exposure_program": "Programm",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Freigabe hinzufügen",
"copy_link": "Link kopieren",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/de/translation_old.json b/ui/src/extractedTranslations/de/translation_old.json
index aa43241..d21d24f 100644
--- a/ui/src/extractedTranslations/de/translation_old.json
+++ b/ui/src/extractedTranslations/de/translation_old.json
@@ -61,6 +61,13 @@
"title": null
},
"title": null
+ },
+ "merge_people_groups": {
+ "description": "",
+ "destination_table": {
+ "title": ""
+ },
+ "title": ""
}
},
"table": {
@@ -115,6 +122,9 @@
"mega_byte_plural": null,
"tera_byte_plural": null
}
+ },
+ "media": {
+ "album": ""
}
},
"album_filter": {
diff --git a/ui/src/extractedTranslations/en/translation.json b/ui/src/extractedTranslations/en/translation.json
index c64f063..791c7d2 100644
--- a/ui/src/extractedTranslations/en/translation.json
+++ b/ui/src/extractedTranslations/en/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "Change label",
- "detach_face": "Detach face",
- "merge_face": "Merge face",
+ "detach_images": "Detach face",
+ "merge_people": "Merge face",
"move_faces": "Move faces"
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Download"
},
+ "location": {
+ "title": "Location"
+ },
"media": {
+ "album_path": "Album path",
"exif": {
"exposure_program": {
"action_program": "Action program",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Aperture",
"camera": "Camera",
+ "coordinates": "Coordinates",
"date_shot": "Date shot",
"exposure": "Exposure",
"exposure_program": "Program",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "Detach image",
+ "merge_face": "Merge face",
+ "move_face": "Move face"
+ },
+ "confirm_image_detach": "Are you sure you want to detach this image?",
+ "title": "People"
+ },
"sharing": {
"add_share": "Add shares",
"copy_link": "Copy Link",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "From today",
+ "dropdown_year": "{{year}} and earlier",
"label": "Date"
}
},
diff --git a/ui/src/extractedTranslations/en/translation_old.json b/ui/src/extractedTranslations/en/translation_old.json
index fecc4be..1a50360 100644
--- a/ui/src/extractedTranslations/en/translation_old.json
+++ b/ui/src/extractedTranslations/en/translation_old.json
@@ -36,6 +36,15 @@
"select_image_faces": {
"search_images_placeholder": "Search images..."
}
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "All images within this face group will be merged into the selected face group.",
+ "destination_table": {
+ "title": "Select the destination face"
+ },
+ "title": "Merge Face Groups"
+ }
}
},
"settings": {
@@ -54,6 +63,9 @@
},
"sharing": {
"table_header": "Public shares"
+ },
+ "media": {
+ "album": "Album"
}
}
}
diff --git a/ui/src/extractedTranslations/es/translation.json b/ui/src/extractedTranslations/es/translation.json
index 7d1d0b7..8003028 100644
--- a/ui/src/extractedTranslations/es/translation.json
+++ b/ui/src/extractedTranslations/es/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Descargar"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Programa de acción",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Abertura",
"camera": "Cámara",
+ "coordinates": "",
"date_shot": "Fecha de captura",
"exposure": "Exposición",
"exposure_program": "Programa",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Añadir compartido",
"copy_link": "Copiar enlace",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/es/translation_old.json b/ui/src/extractedTranslations/es/translation_old.json
index 94a8bb3..eee880e 100644
--- a/ui/src/extractedTranslations/es/translation_old.json
+++ b/ui/src/extractedTranslations/es/translation_old.json
@@ -61,6 +61,13 @@
"title": null
},
"title": null
+ },
+ "merge_people_groups": {
+ "description": "",
+ "destination_table": {
+ "title": ""
+ },
+ "title": ""
}
},
"table": {
@@ -120,6 +127,9 @@
"mega_byte_plural": null,
"tera_byte_plural": null
}
+ },
+ "media": {
+ "album": ""
}
},
"title": {
diff --git a/ui/src/extractedTranslations/fr/translation.json b/ui/src/extractedTranslations/fr/translation.json
index 64eb30c..51ca9cd 100644
--- a/ui/src/extractedTranslations/fr/translation.json
+++ b/ui/src/extractedTranslations/fr/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "Changer le label",
- "detach_face": "Détacher le visage",
- "merge_face": "Fusionner le visage",
+ "detach_images": "Détacher le visage",
+ "merge_people": "Fusionner le visage",
"move_faces": "Déplacer les visages"
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Télécharger"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Programme d'action",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Ouverture",
"camera": "Modèle",
+ "coordinates": "",
"date_shot": "Prise de vue",
"exposure": "Vitesse",
"exposure_program": "Programme",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Ajouter un partage",
"copy_link": "Copier le lien",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "Depuis aujourd'hui",
+ "dropdown_year": "",
"label": "Date"
}
},
diff --git a/ui/src/extractedTranslations/fr/translation_old.json b/ui/src/extractedTranslations/fr/translation_old.json
index 61e3c86..58420ff 100644
--- a/ui/src/extractedTranslations/fr/translation_old.json
+++ b/ui/src/extractedTranslations/fr/translation_old.json
@@ -60,6 +60,13 @@
"title": null
},
"title": null
+ },
+ "merge_people_groups": {
+ "description": "Toutes les images de ce groupe de visages seront fusionnées dans le groupe de visages sélectionné.",
+ "destination_table": {
+ "title": "Sélectionner le visage de destination"
+ },
+ "title": "Fusionner des groupes de visages"
}
},
"table": {
@@ -95,6 +102,9 @@
},
"sharing": {
"table_header": "Partages publics"
+ },
+ "media": {
+ "album": ""
}
},
"title": {
diff --git a/ui/src/extractedTranslations/it/translation.json b/ui/src/extractedTranslations/it/translation.json
index b64f070..528d835 100644
--- a/ui/src/extractedTranslations/it/translation.json
+++ b/ui/src/extractedTranslations/it/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Download"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Programma sport",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Apertura",
"camera": "Fotocamera",
+ "coordinates": "",
"date_shot": "Data di scatto",
"exposure": "Esposizione",
"exposure_program": "Programma",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Aggiungi condivisione",
"copy_link": "Copia il link",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/it/translation_old.json b/ui/src/extractedTranslations/it/translation_old.json
index b09cdcc..3cd12dd 100644
--- a/ui/src/extractedTranslations/it/translation_old.json
+++ b/ui/src/extractedTranslations/it/translation_old.json
@@ -49,6 +49,15 @@
},
"tableselect_image_faces": {
"search_images_placeholder": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "Tutte le immagini di questo volto saranno unite alle immagini del volto selezionato",
+ "destination_table": {
+ "title": "Seleziona il volto di destinazione"
+ },
+ "title": "Unisci immagini volto"
+ }
}
},
"settings": {
@@ -82,6 +91,9 @@
"mega_byte_plural": null,
"tera_byte_plural": null
}
+ },
+ "media": {
+ "album": ""
}
},
"album_filter": {
diff --git a/ui/src/extractedTranslations/pl/translation.json b/ui/src/extractedTranslations/pl/translation.json
index 962ab26..8e7186f 100644
--- a/ui/src/extractedTranslations/pl/translation.json
+++ b/ui/src/extractedTranslations/pl/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -264,7 +264,11 @@
},
"title": "Pobierz"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Program działania",
@@ -293,6 +297,7 @@
"name": {
"aperture": "Przysłona",
"camera": "Aparat ",
+ "coordinates": "",
"date_shot": "Data wykonania",
"exposure": "Ekspozycja",
"exposure_program": "Program",
@@ -304,6 +309,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Dodaj udział",
"copy_link": "Skopiuj link",
@@ -324,6 +338,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/pl/translation_old.json b/ui/src/extractedTranslations/pl/translation_old.json
index 19305fd..fab4374 100644
--- a/ui/src/extractedTranslations/pl/translation_old.json
+++ b/ui/src/extractedTranslations/pl/translation_old.json
@@ -61,6 +61,13 @@
"title": null
},
"title": null
+ },
+ "merge_people_groups": {
+ "description": "",
+ "destination_table": {
+ "title": ""
+ },
+ "title": ""
}
},
"table": {
@@ -137,6 +144,9 @@
"table_header": "Publiczne udostępnienia",
"delete": null,
"more": null
+ },
+ "media": {
+ "album": ""
}
},
"title": {
diff --git a/ui/src/extractedTranslations/pt/translation.json b/ui/src/extractedTranslations/pt/translation.json
index 358d159..7e90e82 100644
--- a/ui/src/extractedTranslations/pt/translation.json
+++ b/ui/src/extractedTranslations/pt/translation.json
@@ -61,17 +61,17 @@
"description": "Galeria de fotos simples e fácil de usar para servidores pessoais"
},
"people_page": {
+ "action_label": {
+ "change_label": "",
+ "detach_images": "",
+ "merge_people": "",
+ "move_faces": ""
+ },
"face_group": {
"label_placeholder": "Etiqueta",
"unlabeled": "Sem etiqueta",
"unlabeled_person": "Pessoa sem etiqueta"
},
- "action_label": {
- "change_label": null,
- "merge_face": null,
- "detach_face": null,
- "move_faces": null
- },
"modal": {
"action": {
"merge": "Juntar"
@@ -215,6 +215,27 @@
},
"sidebar": {
"album": {
+ "album_cover": "",
+ "download": {
+ "high-resolutions": {
+ "description": "",
+ "title": ""
+ },
+ "originals": {
+ "description": "",
+ "title": ""
+ },
+ "thumbnails": {
+ "description": "",
+ "title": ""
+ },
+ "web-videos": {
+ "description": "",
+ "title": ""
+ }
+ },
+ "reset_cover": "",
+ "set_cover": "",
"title_placeholder": "Título do Álbum"
},
"download": {
@@ -238,7 +259,11 @@
},
"title": "Descarregar"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Programa de ação",
@@ -267,6 +292,7 @@
"name": {
"aperture": "Abertura",
"camera": "Câmera",
+ "coordinates": "",
"date_shot": "Data da foto",
"exposure": "Exposição",
"exposure_program": "Programa",
@@ -278,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Adicionar partilha",
"copy_link": "Copiar link",
@@ -295,6 +330,13 @@
"places": "Locais",
"settings": "Configurações"
},
+ "timeline_filter": {
+ "date": {
+ "dropdown_all": "",
+ "dropdown_year": "",
+ "label": ""
+ }
+ },
"title": {
"loading_album": "Carregar Álbum",
"login": "Login",
diff --git a/ui/src/extractedTranslations/pt/translation_old.json b/ui/src/extractedTranslations/pt/translation_old.json
new file mode 100644
index 0000000..8f73fa0
--- /dev/null
+++ b/ui/src/extractedTranslations/pt/translation_old.json
@@ -0,0 +1,19 @@
+{
+ "people_page": {
+ "action_label": {
+ "change_label": null,
+ "merge_people": null,
+ "detach_images": null,
+ "move_faces": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "Todas as imagens neste grupo de caras serão juntas no grupo selecionado.",
+ "destination_table": {
+ "title": "Selecione a cara de destino"
+ },
+ "title": "Juntar grupos de cara"
+ }
+ }
+ }
+}
diff --git a/ui/src/extractedTranslations/ru/translation.json b/ui/src/extractedTranslations/ru/translation.json
index d6b1530..2665ec8 100644
--- a/ui/src/extractedTranslations/ru/translation.json
+++ b/ui/src/extractedTranslations/ru/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -264,7 +264,11 @@
},
"title": "Скачать"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Действие программа",
@@ -293,6 +297,7 @@
"name": {
"aperture": "Диафрагма",
"camera": "Камера",
+ "coordinates": "",
"date_shot": "Дата снимка",
"exposure": "Экспозиция",
"exposure_program": "Программа",
@@ -304,6 +309,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Поделится",
"copy_link": "Скопировать ссылку",
@@ -324,6 +338,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/ru/translation_old.json b/ui/src/extractedTranslations/ru/translation_old.json
index 9ade823..ae7cdd0 100644
--- a/ui/src/extractedTranslations/ru/translation_old.json
+++ b/ui/src/extractedTranslations/ru/translation_old.json
@@ -49,6 +49,15 @@
},
"tableselect_image_faces": {
"search_images_placeholder": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "Все фотографии в этой группе лиц будут обьеденены с выбранной группой.",
+ "destination_table": {
+ "title": "Выберете конечное лицо"
+ },
+ "title": "Обьединить группы лиц"
+ }
}
},
"settings": {
@@ -99,6 +108,9 @@
"table_header": "Общий доступ",
"delete": null,
"more": null
+ },
+ "media": {
+ "album": ""
}
},
"album_filter": {
diff --git a/ui/src/extractedTranslations/sv/translation.json b/ui/src/extractedTranslations/sv/translation.json
index 19c1aae..2fcfeaa 100644
--- a/ui/src/extractedTranslations/sv/translation.json
+++ b/ui/src/extractedTranslations/sv/translation.json
@@ -63,8 +63,8 @@
"people_page": {
"action_label": {
"change_label": "",
- "detach_face": "",
- "merge_face": "",
+ "detach_images": "",
+ "merge_people": "",
"move_faces": ""
},
"face_group": {
@@ -259,7 +259,11 @@
},
"title": "Ladda ner"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "Actionprogram",
@@ -288,6 +292,7 @@
"name": {
"aperture": "Bländare",
"camera": "Kamera",
+ "coordinates": "",
"date_shot": "Datum tagen",
"exposure": "Exponering",
"exposure_program": "Program",
@@ -299,6 +304,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "Dela",
"copy_link": "Kopiera länk",
@@ -319,6 +333,7 @@
"timeline_filter": {
"date": {
"dropdown_all": "",
+ "dropdown_year": "",
"label": ""
}
},
diff --git a/ui/src/extractedTranslations/sv/translation_old.json b/ui/src/extractedTranslations/sv/translation_old.json
index fb0943d..061609f 100644
--- a/ui/src/extractedTranslations/sv/translation_old.json
+++ b/ui/src/extractedTranslations/sv/translation_old.json
@@ -61,6 +61,13 @@
"title": null
},
"title": null
+ },
+ "merge_people_groups": {
+ "description": "",
+ "destination_table": {
+ "title": ""
+ },
+ "title": ""
}
},
"table": {
@@ -123,6 +130,9 @@
"mega_byte_plural": null,
"tera_byte_plural": null
}
+ },
+ "media": {
+ "album": ""
}
},
"title": {
diff --git a/ui/src/extractedTranslations/zh-CN/translation.json b/ui/src/extractedTranslations/zh-CN/translation.json
index c60569f..d17e811 100644
--- a/ui/src/extractedTranslations/zh-CN/translation.json
+++ b/ui/src/extractedTranslations/zh-CN/translation.json
@@ -61,17 +61,17 @@
"description": "简单及易用的照片库给个人服务器"
},
"people_page": {
+ "action_label": {
+ "change_label": "",
+ "detach_images": "",
+ "merge_people": "",
+ "move_faces": ""
+ },
"face_group": {
"label_placeholder": "名称",
"unlabeled": "未命名",
"unlabeled_person": "未命名人物"
},
- "action_label": {
- "change_label": null,
- "merge_face": null,
- "detach_face": null,
- "move_faces": null
- },
"modal": {
"action": {
"merge": "合并"
@@ -215,30 +215,36 @@
},
"sidebar": {
"album": {
+ "album_cover": "",
+ "download": {
+ "high-resolutions": {
+ "description": "",
+ "title": ""
+ },
+ "originals": {
+ "description": "",
+ "title": ""
+ },
+ "thumbnails": {
+ "description": "",
+ "title": ""
+ },
+ "web-videos": {
+ "description": "",
+ "title": ""
+ }
+ },
+ "reset_cover": "",
+ "set_cover": "",
"title_placeholder": "相册名称"
},
"download": {
"filesize": {
- "byte": null,
- "giga_byte": null,
- "kilo_byte": null,
- "mega_byte": null,
- "tera_byte": null,
- "byte_0": null,
- "byte_1": null,
- "byte_2": null,
- "giga_byte_0": null,
- "giga_byte_1": null,
- "giga_byte_2": null,
- "kilo_byte_0": null,
- "kilo_byte_1": null,
- "kilo_byte_2": null,
- "mega_byte_0": null,
- "mega_byte_1": null,
- "mega_byte_2": null,
- "tera_byte_0": null,
- "tera_byte_1": null,
- "tera_byte_2": null
+ "byte": "",
+ "giga_byte": "",
+ "kilo_byte": "",
+ "mega_byte": "",
+ "tera_byte": ""
},
"table_columns": {
"dimensions": "尺寸",
@@ -248,7 +254,11 @@
},
"title": "下载"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "动态模式",
@@ -264,19 +274,20 @@
},
"flash": {
"auto": "自动",
- "did_not_fire": null,
- "fired": null,
- "no_flash": null,
- "no_flash_function": null,
+ "did_not_fire": "",
+ "fired": "",
+ "no_flash": "",
+ "no_flash_function": "",
"off": "关闭",
"on": "使用",
"red_eye_reduction": "减轻红眼",
- "return_detected": null,
- "return_not_detected": null
+ "return_detected": "",
+ "return_not_detected": ""
},
"name": {
"aperture": "光圈",
"camera": "相机",
+ "coordinates": "",
"date_shot": "拍摄日期",
"exposure": "曝光",
"exposure_program": "模式",
@@ -288,6 +299,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "新增分享",
"copy_link": "复制链接",
@@ -305,6 +325,13 @@
"places": "地点",
"settings": "设置"
},
+ "timeline_filter": {
+ "date": {
+ "dropdown_all": "",
+ "dropdown_year": "",
+ "label": ""
+ }
+ },
"title": {
"loading_album": "载入相册",
"login": "登入",
diff --git a/ui/src/extractedTranslations/zh-CN/translation_old.json b/ui/src/extractedTranslations/zh-CN/translation_old.json
new file mode 100644
index 0000000..1f14223
--- /dev/null
+++ b/ui/src/extractedTranslations/zh-CN/translation_old.json
@@ -0,0 +1,42 @@
+{
+ "people_page": {
+ "action_label": {
+ "change_label": null,
+ "merge_people": null,
+ "detach_images": null,
+ "move_faces": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "所有在此的脸孔群组将会合并到已选择的脸孔群组",
+ "destination_table": {
+ "title": "选择目标脸孔群组"
+ },
+ "title": "合并脸孔群组"
+ }
+ }
+ },
+ "sidebar": {
+ "download": {
+ "filesize": {
+ "byte": null,
+ "giga_byte": null,
+ "kilo_byte": null,
+ "mega_byte": null,
+ "tera_byte": null
+ }
+ },
+ "media": {
+ "exif": {
+ "flash": {
+ "did_not_fire": null,
+ "fired": null,
+ "no_flash": null,
+ "no_flash_function": null,
+ "return_detected": null,
+ "return_not_detected": null
+ }
+ }
+ }
+ }
+}
diff --git a/ui/src/extractedTranslations/zh-HK/translation.json b/ui/src/extractedTranslations/zh-HK/translation.json
index aa8fc83..479cc16 100644
--- a/ui/src/extractedTranslations/zh-HK/translation.json
+++ b/ui/src/extractedTranslations/zh-HK/translation.json
@@ -61,17 +61,17 @@
"description": "簡單及易用的照片庫給個人伺服器"
},
"people_page": {
+ "action_label": {
+ "change_label": "",
+ "detach_images": "",
+ "merge_people": "",
+ "move_faces": ""
+ },
"face_group": {
"label_placeholder": "名稱",
"unlabeled": "未命名",
"unlabeled_person": "未命名人物"
},
- "action_label": {
- "change_label": null,
- "merge_face": null,
- "detach_face": null,
- "move_faces": null
- },
"modal": {
"action": {
"merge": "合併"
@@ -215,30 +215,36 @@
},
"sidebar": {
"album": {
+ "album_cover": "",
+ "download": {
+ "high-resolutions": {
+ "description": "",
+ "title": ""
+ },
+ "originals": {
+ "description": "",
+ "title": ""
+ },
+ "thumbnails": {
+ "description": "",
+ "title": ""
+ },
+ "web-videos": {
+ "description": "",
+ "title": ""
+ }
+ },
+ "reset_cover": "",
+ "set_cover": "",
"title_placeholder": "相簿名稱"
},
"download": {
"filesize": {
- "byte": null,
- "giga_byte": null,
- "kilo_byte": null,
- "mega_byte": null,
- "tera_byte": null,
- "byte_0": null,
- "byte_1": null,
- "byte_2": null,
- "giga_byte_0": null,
- "giga_byte_1": null,
- "giga_byte_2": null,
- "kilo_byte_0": null,
- "kilo_byte_1": null,
- "kilo_byte_2": null,
- "mega_byte_0": null,
- "mega_byte_1": null,
- "mega_byte_2": null,
- "tera_byte_0": null,
- "tera_byte_1": null,
- "tera_byte_2": null
+ "byte": "",
+ "giga_byte": "",
+ "kilo_byte": "",
+ "mega_byte": "",
+ "tera_byte": ""
},
"table_columns": {
"dimensions": "尺寸",
@@ -248,7 +254,11 @@
},
"title": "下載"
},
+ "location": {
+ "title": ""
+ },
"media": {
+ "album_path": "",
"exif": {
"exposure_program": {
"action_program": "動態模式",
@@ -264,19 +274,20 @@
},
"flash": {
"auto": "自動",
- "did_not_fire": null,
- "fired": null,
- "no_flash": null,
- "no_flash_function": null,
+ "did_not_fire": "",
+ "fired": "",
+ "no_flash": "",
+ "no_flash_function": "",
"off": "關閉",
"on": "使用",
"red_eye_reduction": "減輕紅眼",
- "return_detected": null,
- "return_not_detected": null
+ "return_detected": "",
+ "return_not_detected": ""
},
"name": {
"aperture": "光圈",
"camera": "相機",
+ "coordinates": "",
"date_shot": "拍攝日期",
"exposure": "曝光",
"exposure_program": "模式",
@@ -288,6 +299,15 @@
}
}
},
+ "people": {
+ "action_label": {
+ "detach_image": "",
+ "merge_face": "",
+ "move_face": ""
+ },
+ "confirm_image_detach": "",
+ "title": ""
+ },
"sharing": {
"add_share": "新增分享",
"copy_link": "複製連結",
@@ -305,6 +325,13 @@
"places": "地點",
"settings": "設定"
},
+ "timeline_filter": {
+ "date": {
+ "dropdown_all": "",
+ "dropdown_year": "",
+ "label": ""
+ }
+ },
"title": {
"loading_album": "載入相簿",
"login": "登入",
diff --git a/ui/src/extractedTranslations/zh-HK/translation_old.json b/ui/src/extractedTranslations/zh-HK/translation_old.json
new file mode 100644
index 0000000..c45a0a1
--- /dev/null
+++ b/ui/src/extractedTranslations/zh-HK/translation_old.json
@@ -0,0 +1,42 @@
+{
+ "people_page": {
+ "action_label": {
+ "change_label": null,
+ "merge_people": null,
+ "detach_images": null,
+ "move_faces": null
+ },
+ "modal": {
+ "merge_people_groups": {
+ "description": "所有在此的臉孔群組將會合併到已選擇的臉孔群組",
+ "destination_table": {
+ "title": "選擇目標臉孔群組"
+ },
+ "title": "合併臉孔群組"
+ }
+ }
+ },
+ "sidebar": {
+ "download": {
+ "filesize": {
+ "byte": null,
+ "giga_byte": null,
+ "kilo_byte": null,
+ "mega_byte": null,
+ "tera_byte": null
+ }
+ },
+ "media": {
+ "exif": {
+ "flash": {
+ "did_not_fire": null,
+ "fired": null,
+ "no_flash": null,
+ "no_flash_function": null,
+ "return_detected": null,
+ "return_not_detected": null
+ }
+ }
+ }
+ }
+}
diff --git a/ui/src/helpers/utils.ts b/ui/src/helpers/utils.ts
index 8879ea3..8bf66d7 100644
--- a/ui/src/helpers/utils.ts
+++ b/ui/src/helpers/utils.ts
@@ -1,3 +1,5 @@
+import classNames, { Argument as ClassNamesArg } from 'classnames'
+// import { overrideTailwindClasses } from 'tailwind-override'
/* eslint-disable @typescript-eslint/no-explicit-any */
export interface DebouncedFn any> {
@@ -41,3 +43,8 @@ export function isNil(value: any): value is undefined | null {
export function exhaustiveCheck(value: never) {
throw new Error(`Exhaustive check failed with value: ${value}`)
}
+
+export function tailwindClassNames(...args: ClassNamesArg[]) {
+ // return overrideTailwindClasses(classNames(args))
+ return classNames(args)
+}
diff --git a/ui/src/primitives/form/Input.tsx b/ui/src/primitives/form/Input.tsx
index bf9dcd2..2fa6056 100644
--- a/ui/src/primitives/form/Input.tsx
+++ b/ui/src/primitives/form/Input.tsx
@@ -3,6 +3,7 @@ import classNames, { Argument as ClassNamesArg } from 'classnames'
import { ReactComponent as ActionArrowIcon } from './icons/textboxActionArrow.svg'
import { ReactComponent as LoadingSpinnerIcon } from './icons/textboxLoadingSpinner.svg'
import styled from 'styled-components'
+import { tailwindClassNames } from '../../helpers/utils'
type TextFieldProps = {
label?: string
@@ -164,7 +165,10 @@ export const Submit = ({
...props
}: SubmitProps & React.ButtonHTMLAttributes) => (
) => (